[
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "# Wt4ElegantRL\nWt4ElegantRL = [WonderTrader](https://github.com/wondertrader/wtpy) + [ElegantRL](https://github.com/AI4Finance-Foundation/ElegantRL)\n\n# Document by panyunan\nhttps://gitee.com/panyunan/wt4elegantrl-doc\n\n## INSTALL\nclone\n```\ngit clone https://github.com/drlgistics/Wt4ElegantRL.git\ncd Wt4ElegantRL\n```\n\nwith cuda\n```\nconda env create -n wt4elegantrl --file ./requirements/full_with_cuda.yaml\n```\n\nor without cuda\n```\nconda env create -n wt4elegantrl --file ./requirements/full_without_cuda.yaml\n```\n\nactivate\n```\nconda activate wt4elegantrl\n```\n\n## RLLIB\ndemo\n```\npython ./compare_rllib.py test -p ./trained/rllib/TD3_2021-10-29_11-21-37/TD3_SimpleCTAEnv_536e7_00000_0_2021-10-29_11-21-37/checkpoint_000023/checkpoint-23\n```\n\ntrain\n```\npython ./compare_rllib.py train\n```\n\n## SB3\ndemo\n```\npython ./compare_sb3.py test -p ./trained/sb3/td3/best_model\n```\n\ntrain\n```\npython ./compare_sb3.py train\n```\n\n## ELEGANTRL\ntrain\n```\npython ./compare_elegantrl.py train\n```\n"
  },
  {
    "path": "analysts.py",
    "content": "from ntpath import realpath\nfrom wtpy.apps import WtBtAnalyst\nfrom glob import glob\nfrom tqdm.auto import tqdm\nfrom os.path import dirname, basename\nfrom click import command, option\n\n# for i in tqdm(glob('./outputs_bt/*/funds.csv')):\n#     folder = dirname(i)\n#     name = folder[13:]\n#     analyst = WtBtAnalyst()\n#     folder = \"./outputs_bt/%s/\" % name\n#     analyst.add_strategy(\n#         name, folder=folder, init_capital=500000, rf=0.04, annual_trading_days=240)\n#     try:\n#         analyst.run_new('%s/%s_PnLAnalyzing.xlsx' % (folder, name))\n#         # analyst.run('%s/%s_PnLAnalyzing.xlsx' % (folder, name))\n#     except:\n#         analyst.run('%s/%s_PnLAnalyzing.xlsx' % (folder, name))\n\n@command()\n@option('--path', '-p', 'path', default='./outputs_bt/*/')\ndef run(path):\n    for i in tqdm(glob('%s/funds.csv'%path)):\n        folder = dirname(i)\n        name = basename(folder)\n        analyst = WtBtAnalyst()\n        analyst.add_strategy(\n            name, folder='%s/'%folder, init_capital=500000, rf=0.04, annual_trading_days=240)\n        try:\n            analyst.run_new('%s/%s_PnLAnalyzing.xlsx' % (folder, name))\n            # analyst.run('%s/%s_PnLAnalyzing.xlsx' % (folder, name))\n        except:\n            analyst.run('%s/%s_PnLAnalyzing.xlsx' % (folder, name))\n\nif __name__ == '__main__':\n    run()"
  },
  {
    "path": "assessments.py",
    "content": "from abc import abstractmethod\nimport numpy as np\nfrom wtpy.StrategyDefs import CtaContext, HftContext\n\n\nclass Assessment():\n    def __init__(self, init_assets=1000000):\n        self._init_assets_ = init_assets\n        self.reset()\n\n    @abstractmethod\n    def reset(self):\n        raise NotImplementedError\n\n    @abstractmethod\n    def calculate(self, context: CtaContext):\n        raise NotImplementedError\n\n    @abstractmethod\n    def finish(self):\n        raise NotImplementedError\n\n    @property\n    @abstractmethod\n    def reward(self) -> float:\n        raise NotImplementedError\n\n    @property\n    @abstractmethod\n    def done(self) -> float:\n        raise NotImplementedError\n\n    @property\n    @abstractmethod\n    def curr_assets(self) -> float:\n        raise NotImplementedError\n\n    @property\n    def init_assets(self) -> float:\n        return self._init_assets_\n\n\nclass SimpleAssessment(Assessment):  # 借鉴了neofinrl\n    gamma = 0.99\n\n    def reset(self):\n        self.__assets__: list = [self._init_assets_]\n        self.__reward__: list = [0]\n        self.__done__: bool = False\n        self.__successive__: int = 1\n        # self.__gamma__ = 1-self.gamma\n\n    def calculate(self, context: CtaContext):\n        if self.__done__:\n            return\n\n        # 动态权益\n        dynbalance = context.stra_get_fund_data(0)\n        # 总平仓盈亏\n        # closeprofit = context.stra_get_fund_data(1)\n        # 总浮动盈亏\n        # positionprofit = context.stra_get_fund_data(2)\n        # 总手续费\n        # fee = context.stra_get_fund_data(3)\n\n        self.__assets__.append(self._init_assets_+dynbalance)  # 账户实时的动态权益\n        \n        \n        if len(self.__reward__) > 1:\n            reward = (self.__assets__[-1]-self.__assets__[-2]) \\\n                / self._init_assets_ * 12 #* 0.382\n\n            # if (reward < 0 and self.__reward__[-1] < 0) or \\\n            #         (reward > 0 and self.__reward__[-1] > 0):\n            #     self.__successive__ += 1\n            # else:\n            #     self.__successive__ = 1\n                \n            # reward *= self.__successive__\n\n            # if self.__assets__[-1] > self.__assets__[-2]: #\n            #     reward += 0.0001*self.__successive__\n            # else:\n            #     reward -= 0.0001*self.__successive__\n\n            # reward += (self.__assets__[-1]-max(self.__assets__[:-1])) \\\n            #     / self._init_assets_ * 0.1\n            # reward += (self.__assets__[-1]-min(self.__assets__[:-1])) \\\n            #     / self._init_assets_ * 0.1\n\n            # reward = 0\n\n            # returns = np.diff(np.array(self.__assets__))\n            # reward = (np.where(returns < 0, 0, returns).sum()-1e-5) \\\n            #     / abs(np.where(returns > 0, 0, returns).sum()+1e-5) \\\n            #     - 1\n            # reward *= 0.1\n\n            # print(np.where(returns < 0, 0, returns).sum(), np.where(returns > 0, 0, returns).sum(), dynbalance, reward)\n\n            # 情绪奖励\n            # if (reward < 0 and self.__reward__[-1] < 0) or \\\n            #         (reward > 0 and self.__reward__[-1] > 0):\n            #     self.__successive__ += 1\n            # else:\n            #     self.__successive__ = 1\n\n            # #资金成本\n            # if self.__assets__[-1] > self.__assets__[-2]: #\n            #     reward += 0.0001*self.__successive__\n            # else:\n            #     reward -= 0.0001*self.__successive__\n\n            # reward *= 0.01\n\n            # #近期奖励\n            # if self.__assets__[-1] > max(self.__assets__[:-1]):\n            #     reward += 0.02\n            # if self.__assets__[-1] < min(self.__assets__[:-1]):\n            #     reward -= 0.01\n\n            # 长期奖励\n            # reward += (self.__assets__[-1]-max(self.__assets__[:-1])) \\\n            #     / self._init_assets_ * self.__successive__ * 0.382\n            # reward += (self.__assets__[-1]-min(self.__assets__[:-1])) \\\n            #     / self._init_assets_ * self.__successive__ * 0.382\n\n            # if (reward < 0 and self.__reward__[-1] < 0) or \\\n            #         (reward > 0 and self.__reward__[-1] > 0):\n            #     reward *= self.__successive__\n            #     self.__successive__ += 1\n            # else:\n            #     self.__successive__ = 1\n            # reward += (self.__assets__[-1]-max(self.__assets__[:-1])) \\\n            #     / self._init_assets_ * 0.382\n            # reward += (self.__assets__[-1]-min(self.__assets__[:-1])) \\\n            #     / self._init_assets_ * 0.382\n\n            '''\n            2021/11/01\n\n            if self.__assets__[-1] > self.__assets__[-2]:\n                self.__successive__ += 1\n            else:\n                self.__successive__ = 1\n                \n            reward = -0.00001\n            reward += (self.__assets__[-1] /\n                    self.__assets__[-2] - 1) * 0.382 * self.__successive__\n            max_assets = (self.__assets__[-1]/max(self.__assets__[:-1])-1) * 0.382\n            reward += max_assets * (5 if max_assets > 0 else 1)\n            min_assets = (self.__assets__[-1]/min(self.__assets__[:-1])-1) * 0.382\n            reward += min_assets * (5 if min_assets < 0 else 1)\n            '''\n        else:\n            reward = -0.01\n\n        self.__reward__.append(reward)  # 以动态权益差分设计reward\n        self.__done__ = False  # 此处可以根据控制任务结束状态\n\n    def finish(self):\n        if self.__done__:\n            return\n\n        # returns = np.add(1, self.__reward__).cumprod()\n        # np.subtract(returns, 1, out=returns)\n\n        # gamma = 0\n        # for reward in np.diff(np.log(self.__assets__)):\n        #     gamma *= self.gamma\n        #     gamma += reward\n\n        gamma = 0\n        for reward in self.__reward__:\n            gamma *= self.gamma\n            gamma += reward\n\n        # gamma = np.diff(np.array(self.__assets__))\n        # gamma = (np.where(gamma < 0, 0, gamma).sum()-1e-5) \\\n        #     / abs(np.where(gamma > 0, 0, gamma).sum()+1e-5) \\\n        #     - 1\n\n        # gamma = np.round(np.nanprod(np.array(self.__reward__)+1, axis=0)-1, 5)\n        # gamma = self.__assets__[-1]/max(self.__assets__)-1\n        # gamma = self.__assets__[-1]/self.init_assets-1\n        self.__reward__.append(gamma)  # 在结束的时候把过程奖励做处理，作为整个训练的奖励\n        self.__done__ = True\n\n    @property\n    def reward(self) -> float:\n        # return self.__reward__[-1]\n        return float(self.__reward__[-1])\n\n    @property\n    def rewards(self) -> float:\n        return self.__reward__\n\n    @property\n    def done(self) -> float:\n        return self.__done__\n\n    @property\n    def curr_assets(self) -> float:\n        return self.__assets__[-1]\n"
  },
  {
    "path": "compare_elegantrl.py",
    "content": "from click import command, group, option\nfrom elegantrl.agent import AgentPPO as Agent\n# from elegantrl.agent import AgentSAC as Agent\n# from elegantrl.agent import AgentModSAC as Agent\n# from elegantrl.agent import AgentTD3 as Agent\n\n\n# from elegantrl.agent import AgentDoubleDQN as Agent\n# from elegantrl.agent import AgentDQN as Agent\n\n\nfrom elegantrl.run import Arguments, train_and_evaluate\nfrom envs_simple_cta import SimpleCTASubProcessEnv\nfrom gym import make, register\nfrom numpy import inf\nfrom os import getpid\n\n\nclass Wt4RLSimpleTrainer(SimpleCTASubProcessEnv):\n    env_num = 1\n    max_step = 1500\n    if_discrete = False\n\n    @property\n    def state_dim(self):\n        return self.observation_space.shape[0]\n\n    @property\n    def action_dim(self):\n        # if len(self.action_space.shape) > 0 else 10\n        return self.action_space.shape[0]\n\n    def __init__(self):\n        super().__init__(**{\n            # 'time_start': 202108301600,\n            # 'time_end': 202108311600,\n            'time_range': (\n                # (201901011600, 202101011600),\n\n                # (201901011600, 201906301600),\n                # (201906301600, 202001011600),\n                # (202001011600, 202006301600),\n                # (202006301600, 202101011600),\n\n                (201812311600, 201901311600),\n                (201901311600, 201902311600),\n                (201902311600, 201903311600),\n                (201903311600, 201904311600),\n                (201904311600, 201905311600),\n                (201905311600, 201906311600),\n                (201906311600, 201907311600),\n                (201907311600, 201908311600),\n                (201908311600, 201909311600),\n                (201909311600, 201910311600),\n                (201910311600, 201911311600),\n                (201911311600, 201912311600),\n\n                (201912311600, 202001311600),\n                (202001311600, 202002311600),\n                (202002311600, 202003311600),\n                (202003311600, 202004311600),\n                (202004311600, 202005311600),\n                (202005311600, 202006311600),\n                (202006311600, 202007311600),\n                (202007311600, 202008311600),\n                (202008311600, 202009311600),\n                (202009311600, 202010311600),\n                (202010311600, 202011311600),\n                (202011311600, 202012311600),\n            ),\n            'slippage': 0,\n            'mode': 1\n        })\n\n\nclass Wt4RLSimpleEvaluator(SimpleCTASubProcessEnv):\n    env_num = 1\n    max_step = 1500\n    if_discrete = False\n\n    @property\n    def state_dim(self):\n        return self.observation_space.shape[0]\n\n    @property\n    def action_dim(self):\n        # if len(self.action_space.shape) > 0 else 10\n        return self.action_space.shape[0]\n\n    def __init__(self):  # mode=3可以打开详细调试模式\n        super().__init__(**{\n            'time_range': (\n                # (202101011600, 202106301600),\n                # (201701011600, 201706301600),\n                # (201706301600, 201801011600),\n                # (201801011600, 201806301600),\n                # (201806301600, 201901011600),\n\n\n                (202012311600, 202101311600),\n                (202101311600, 202102311600),\n                (202102311600, 202103311600),\n                (202103311600, 202104311600),\n                (202104311600, 202105311600),\n                (202105311600, 202106311600),\n\n                (201612311600, 201701311600),\n                (201701311600, 201702311600),\n                (201702311600, 201703311600),\n                (201703311600, 201704311600),\n                (201704311600, 201705311600),\n                (201705311600, 201706311600),\n                (201706311600, 201707311600),\n                (201707311600, 201708311600),\n                (201708311600, 201709311600),\n                (201709311600, 201710311600),\n                (201710311600, 201711311600),\n                (201711311600, 201712311600),\n\n                (201712311600, 201801311600),\n                (201801311600, 201802311600),\n                (201802311600, 201803311600),\n                (201803311600, 201804311600),\n                (201804311600, 201805311600),\n                (201805311600, 201806311600),\n                (201806311600, 201807311600),\n                (201807311600, 201808311600),\n                (201808311600, 201809311600),\n                (201809311600, 201810311600),\n                (201810311600, 201811311600),\n                (201811311600, 201812311600),\n            ),\n            'slippage': 0,\n            'mode': 1\n        })\n\n\nregister('wt4rl-simplecta-trainer-v0', entry_point=Wt4RLSimpleTrainer)\nregister('wt4rl-simplecta-evaluator-v0', entry_point=Wt4RLSimpleEvaluator)\n\n\nif __name__ == '__main__':\n    @group()\n    def run():\n        pass\n\n    @command()\n    @option('--count', default=24)\n    def debug(count):\n        env: SimpleCTASubProcessEnv = make('wt4rl-simplecta-trainer-v0')\n        print('状态空间', env.observation_space.shape)\n        print('动作空间', env.action_space.shape)\n        a = 0\n        for i in range(1, int(count)+1):  # 模拟训练10次\n            obs = env.reset()\n            done = False\n            n = 0\n            while not done:\n                action = env.action_space.sample()  # 模拟智能体产生动作\n                obs, reward, done, info = env.step(action)\n                n += 1\n                a += 1\n                # print('action:', action, 'obs:', obs, 'reward:', reward, 'done:', done)\n            print('第%s次训练完成，执行%s步, 奖励%s, 盈亏%s。' % (i, n, reward, env.assets))\n        env.close()\n        print(a)\n\n    @command()\n    def train():\n        args = Arguments(\n            env='wt4rl-simplecta-trainer-v0',\n            # env='wt4rl-simplecta-evaluator-v0',\n            agent=Agent()\n        )\n\n        # args必须设置的参数\n        args.eval_env = 'wt4rl-simplecta-evaluator-v0'\n        args.max_step = 3000\n        args.state_dim = 126\n        args.action_dim = 3\n        args.if_discrete = False\n        args.target_return = 5  # inf\n        args.if_overwrite = False\n        args.eval_times1 = 15  # 待查明：为啥td3的评估器结果完全一致\n        args.eval_times2 = 30  # 待查明：为啥td3的评估器结果完全一致\n\n        args.worker_num = 1  # 内存小的注意别爆内存\n        args.break_step = inf\n        args.if_allow_break = True\n\n        #\n        args.gamma = 0.96  # 8小时会跨过一次隔夜风险，既96个bar\n        args.learning_rate = 1e-5\n        # args.gamma = 0.1 ** (1/12/8) # 8小时会跨过一次隔夜风险，既96个bar\n        # args.learning_rate = 1e-3  # N15:294  Y14:292\n        args.eval_gap = 2 ** 8\n        args.net_dim = 2 ** 6\n        args.batch_size = args.net_dim * 2\n        args.max_memo = 2 ** 20\n        args.target_step = args.max_step * 2\n        args.if_per_or_gae = True\n        # args.agent.if_use_cri_target = True\n        # args.agent.if_use_dueling = True\n\n        args.env_num = 1\n        args.learner_gpus = (0,)\n        args.workers_gpus = args.learner_gpus\n        args.eval_gpu_id = 0\n        args.cwd = './outputs_bt/elegantrl/%s_%s_%s' % (\n            args.agent.__class__.__name__, args.gamma, args.learning_rate)\n        # args.repeat_times = 0.01\n\n        #args.net_dim = 2**9\n        # args.net_dim = 2 ** 8\n        #args.max_memo = 2 ** 22\n        # args.break_step = args.max_step*1000\n        # args.batch_size = 2 ** 11  # args.net_dim * 2\n        # args.repeat_times = 1.5\n\n        # args.eval_gap = 2 ** 9\n        # args.eval_times1 = 2 ** 2\n        # args.eval_times2 = 2 ** 5\n\n        # args.worker_num = 4\n        # args.target_step = args.env.max_step * 1\n        # train_and_evaluate(args)\n\n        train_and_evaluate(args)\n\n    @command()\n    def test():\n        env = Wt4RLSimpleEvaluator(mode=3)\n        agent = Agent()\n\n        agent.init(net_dim=2 ** 8, state_dim=380, action_dim=10,\n                   learning_rate=0.1 ** (1/12/8), if_per_or_gae=True, env_num=1, gpu_id=0)\n        agent.save_or_load_agent(\n            cwd='./outputs_bt/elegantrl/AgentTD3_6.103515625e-05_8', if_save=False)\n\n        # for i in range(10):  # 模拟训练10次\n        #     obs = env.reset()\n        #     done = False\n        #     n = 0\n        #     while not done:\n        #         action = agent.select_action(obs)  # 模拟智能体产生动作\n        #         obs, reward, done, info = env.step(action)\n        #         n += 1\n        #         # print('action:', action, 'obs:', obs,\n        #         #     'reward:', reward, 'done:', done)\n        #     print('第%s次训练完成，执行%s步, 盈亏%s。' % (i+1, n, env.assets))\n        # env.close()\n\n    run.add_command(debug)\n    run.add_command(train)\n    run.add_command(test)\n    # run.add_command(eval)\n\n    run()\n"
  },
  {
    "path": "compare_rllib.py",
    "content": "from ray import tune, init\n# from ray.rllib.agents.sac import SACTrainer as Trainer\n# from ray.rllib.agents.ddpg import TD3Trainer as Trainer\n# from ray.rllib.agents.ddpg import ApexDDPGTrainer as Trainer\n\n\n# from ray.rllib.agents.a3c import A3CTrainer as Trainer\nfrom ray.rllib.agents.ppo import PPOTrainer as Trainer\n# from ray.rllib.agents.ppo import APPOTrainer as Trainer\n# from ray.rllib.agents.marwil import MARWILTrainer as Trainer\n# from ray.rllib.agents.impala import ImpalaTrainer as Trainer\n\n# from ray.rllib.agents.mbmpo import MBMPOTrainer as Trainer\n# from ray.rllib.agents.dreamer import DREAMERTrainer as Trainer\n# from ray.rllib.agents.pg import PGTrainer as Trainer\n\n\n# from ray.rllib.agents.pg import PGTrainer as Trainer\n# from ray.rllib.agents.dqn import R2D2Trainer as Trainer\n# from ray.rllib.agents.dqn import ApexTrainer as Trainer\n\n\n# from ray.tune.schedulers.pb2 import PB2\nfrom envs_simple_cta import SimpleCTAEnv\nimport click\n\ntune.register_env('SimpleCTAEnv',\n                  lambda env_config: SimpleCTAEnv(**env_config))\n\n\nif __name__ == '__main__':\n    @click.group()\n    def run():\n        pass\n\n    @run.command()\n    def train():\n        # pb2 = PB2(\n        #     time_attr=\"training_iteration\",\n        #     metric=\"episode_reward_mean\",\n        #     mode=\"max\",\n        #     perturbation_interval=50000,\n        #     quantile_fraction=0.25,  # copy bottom % with top %\n        #     # Specifies the hyperparam search space\n        #     hyperparam_bounds={\n        #         \"lr\": [1e-3, 1e-5],\n        #         \"gamma\": [0.96, 0.99],\n        #     })\n\n        nums_subproc = 5\n        nums_gpu = 0.92/(nums_subproc+2)\n        config = {\n            'env': 'SimpleCTAEnv',\n            'env_config': {\n                # 'time_start': 202108301600,\n                # 'time_end': 202108311600,\n                'time_range': (\n                    # (201901011600, 202101011600),\n\n                    # (201901011600, 201906301600),\n                    # (201906301600, 202001011600),\n                    # (202001011600, 202006301600),\n                    # (202006301600, 202101011600),\n\n                    (201812311600, 201901311600),\n                    (201901311600, 201902311600),\n                    (201902311600, 201903311600),\n                    (201903311600, 201904311600),\n                    (201904311600, 201905311600),\n                    (201905311600, 201906311600),\n                    (201906311600, 201907311600),\n                    (201907311600, 201908311600),\n                    (201908311600, 201909311600),\n                    (201909311600, 201910311600),\n                    (201910311600, 201911311600),\n                    (201911311600, 201912311600),\n\n                    (201912311600, 202001311600),\n                    (202001311600, 202002311600),\n                    (202002311600, 202003311600),\n                    (202003311600, 202004311600),\n                    (202004311600, 202005311600),\n                    (202005311600, 202006311600),\n                    (202006311600, 202007311600),\n                    (202007311600, 202008311600),\n                    (202008311600, 202009311600),\n                    (202009311600, 202010311600),\n                    (202010311600, 202011311600),\n                    (202011311600, 202012311600),\n                ),\n                'slippage': 0,\n                'mode': 1\n            },\n            # 'rollout_fragment_length': 10156,\n            'framework': 'torch',\n            'num_workers': nums_subproc,\n            'num_gpus': nums_gpu,\n            'num_gpus_per_worker': nums_gpu,\n            'gamma': 0.99,\n            'lr': 1e-5,\n            'train_batch_size': 30465,\n            # \"actor_lr\": 1e-5,\n            # \"critic_lr\": 1e-5,\n            # \"l2_reg\": 1e-6,\n            # 'model': {\n            #     'use_lstm': True,\n            #     # 'fcnet_hiddens': [64],\n            #     # 'fcnet_activation': 'linear',\n            #     # 'lstm_cell_size': 64,\n            #     # 'max_seq_len': 2,\n            # },\n            'evaluation_interval': 24,\n            \"evaluation_num_episodes\": 30,\n            'evaluation_parallel_to_training': False,\n            'evaluation_num_workers': 1,\n\n            \"evaluation_config\": {\n                \"env_config\": {\n                    'time_range': (\n                        # (202101011600, 202106301600),\n                        # (201701011600, 201706301600),\n                        # (201706301600, 201801011600),\n                        # (201801011600, 201806301600),\n                        # (201806301600, 201901011600),\n\n\n                        (202012311600, 202101311600),\n                        (202101311600, 202102311600),\n                        (202102311600, 202103311600),\n                        (202103311600, 202104311600),\n                        (202104311600, 202105311600),\n                        (202105311600, 202106311600),\n\n                        (201612311600, 201701311600),\n                        (201701311600, 201702311600),\n                        (201702311600, 201703311600),\n                        (201703311600, 201704311600),\n                        (201704311600, 201705311600),\n                        (201705311600, 201706311600),\n                        (201706311600, 201707311600),\n                        (201707311600, 201708311600),\n                        (201708311600, 201709311600),\n                        (201709311600, 201710311600),\n                        (201710311600, 201711311600),\n                        (201711311600, 201712311600),\n\n                        (201712311600, 201801311600),\n                        (201801311600, 201802311600),\n                        (201802311600, 201803311600),\n                        (201803311600, 201804311600),\n                        (201804311600, 201805311600),\n                        (201805311600, 201806311600),\n                        (201806311600, 201807311600),\n                        (201807311600, 201808311600),\n                        (201808311600, 201809311600),\n                        (201809311600, 201810311600),\n                        (201810311600, 201811311600),\n                        (201811311600, 201812311600),\n                    ),\n                    'slippage': 0,\n                    'mode': 1\n                },\n            },\n            # 'train_batch_size': 10156,\n            \"batch_mode\": \"complete_episodes\",\n        }\n\n        # training and saving\n        analysis = tune.run(\n            Trainer,\n            stop={\n                \"timesteps_total\": 1e10,\n                'episode_reward_mean': 0.48,\n                # 'episode_reward_min': 50,\n            },\n            # scheduler=pb2,\n            # num_samples=nums_subproc,\n            config=config,\n            keep_checkpoints_num=10,\n            checkpoint_freq=24,\n            checkpoint_score_attr='episode_reward_mean',\n            checkpoint_at_end=True,\n            local_dir=\"./outputs_bt/rllib\",\n        )\n        # retrieve the checkpoint path\n        analysis.default_metric = \"episode_reward_mean\"\n        analysis.default_mode = \"max\"\n        checkpoint_path = analysis.get_best_checkpoint(\n            trial=analysis.get_best_trial())\n        print(f\"Trained model saved at {checkpoint_path}\")\n\n    @run.command()\n    @click.option('--path', '-p', 'path')\n    def test(path):\n\n        config = {\n            'env': 'SimpleCTAEnv',\n            'env_config': {\n                'time_range': (\n                    (202106311600, 202107311600),\n                    (202107311600, 202108311600),\n                    (202108311600, 202109311600),\n                    (202109311600, 202110311600),\n                    (202110311600, 202111311600),\n                    (202106311600, 202111311600),\n                ),\n                'slippage': 0,\n                'mode': 2\n            },\n            'framework': 'torch',\n            'num_workers': 1,\n            'num_gpus': 1,\n            'num_gpus_per_worker': 1,\n        }\n        agent = Trainer(config=config)\n        agent.restore(path)\n        print(f\"Agent loaded from saved model at {path}\")\n\n        env = SimpleCTAEnv(**config['env_config'])\n\n        for i in range(len(config['env_config']['time_range'])*10):  # 模拟训练10次\n            obs = env.reset()\n            done = False\n            n = 0\n            while not done:\n                # action = env.action_space.sample()  # 模拟智能体产生动作\n                action = agent.compute_single_action(obs)\n                obs, reward, done, info = env.step(action)\n                n += 1\n                # print(\n                #     # 'action:', action,\n                #     # 'obs:', obs,\n                #     'reward:', reward,\n                #     # 'done:', done\n                #     )\n            #     break\n            # break\n            print('第%s次测试完成，执行%s步, 市值%s。' % (i+1, n, env.assets))\n        env.close()\n        del env\n\n    run()\n"
  },
  {
    "path": "compare_sb3.py",
    "content": "# from stable_baselines3 import SAC as Trainer\nfrom stable_baselines3 import TD3 as Trainer\n\n# from stable_baselines3 import PPO as Trainer\n# from stable_baselines3 import A2C as Trainer\n\nfrom envs_simple_cta import SimpleCTASubProcessEnv, SimpleCTAEnv\nfrom stable_baselines3.common.callbacks import EvalCallback, StopTrainingOnRewardThreshold\nfrom stable_baselines3.common.monitor import Monitor\nimport click\n\n\n@click.group()\ndef run():\n    pass\n\n\n@run.command()\ndef debug():\n    learner = SimpleCTASubProcessEnv(**{\n        'time_range': (\n            # (201901011600, 202101011600),\n\n            # (201901011600, 201906301600),\n            # (201906301600, 202001011600),\n            # (202001011600, 202006301600),\n            # (202006301600, 202101011600),\n\n            (201812311600, 201901311600),\n            (201901311600, 201902311600),\n            (201902311600, 201903311600),\n            (201903311600, 201904311600),\n            (201904311600, 201905311600),\n            (201905311600, 201906311600),\n            (201906311600, 201907311600),\n            (201907311600, 201908311600),\n            (201908311600, 201909311600),\n            (201909311600, 201910311600),\n            (201910311600, 201911311600),\n            (201911311600, 201912311600),\n\n            (201912311600, 202001311600),\n            (202001311600, 202002311600),\n            (202002311600, 202003311600),\n            (202003311600, 202004311600),\n            (202004311600, 202005311600),\n            (202005311600, 202006311600),\n            (202006311600, 202007311600),\n            (202007311600, 202008311600),\n            (202008311600, 202009311600),\n            (202009311600, 202010311600),\n            (202010311600, 202011311600),\n            (202011311600, 202012311600),\n        ),\n        'slippage': 0,\n        'mode': 1\n    })\n\n    evaluator = SimpleCTASubProcessEnv(**{\n        'time_range': (\n            # (202101011600, 202106301600),\n            # (201701011600, 201706301600),\n            # (201706301600, 201801011600),\n            # (201801011600, 201806301600),\n            # (201806301600, 201901011600),\n\n\n            (202012311600, 202101311600),\n            (202101311600, 202102311600),\n            (202102311600, 202103311600),\n            (202103311600, 202104311600),\n            (202104311600, 202105311600),\n            (202105311600, 202106311600),\n\n            (201612311600, 201701311600),\n            (201701311600, 201702311600),\n            (201702311600, 201703311600),\n            (201703311600, 201704311600),\n            (201704311600, 201705311600),\n            (201705311600, 201706311600),\n            (201706311600, 201707311600),\n            (201707311600, 201708311600),\n            (201708311600, 201709311600),\n            (201709311600, 201710311600),\n            (201710311600, 201711311600),\n            (201711311600, 201712311600),\n\n            (201712311600, 201801311600),\n            (201801311600, 201802311600),\n            (201802311600, 201803311600),\n            (201803311600, 201804311600),\n            (201804311600, 201805311600),\n            (201805311600, 201806311600),\n            (201806311600, 201807311600),\n            (201807311600, 201808311600),\n            (201808311600, 201809311600),\n            (201809311600, 201810311600),\n            (201810311600, 201811311600),\n            (201811311600, 201812311600),\n        ),\n        'slippage': 0,\n        'mode': 1\n    })\n\n    env = learner\n\n    for i in range(1):  # 模拟训练10次\n        obs = env.reset()\n        done = False\n        n = 0\n        while not done:\n            action = env.action_space.sample()  # 模拟智能体产生动作\n            obs, reward, done, info = env.step(action)\n            n += 1\n            # print('action:', action, 'obs:', obs,\n            #         'reward:', reward, 'done:', done)\n        print('第%s次训练完成，执行%s步, 市值%s。' % (i+1, n, env.assets))\n    learner.close()\n\n\n@run.command()\ndef train():\n    learner = SimpleCTASubProcessEnv(**{\n        'time_range': (\n            # (201901011600, 202101011600),\n\n            # (201901011600, 201906301600),\n            # (201906301600, 202001011600),\n            # (202001011600, 202006301600),\n            # (202006301600, 202101011600),\n\n            (201812311600, 201901311600),\n            (201901311600, 201902311600),\n            (201902311600, 201903311600),\n            (201903311600, 201904311600),\n            (201904311600, 201905311600),\n            (201905311600, 201906311600),\n            (201906311600, 201907311600),\n            (201907311600, 201908311600),\n            (201908311600, 201909311600),\n            (201909311600, 201910311600),\n            (201910311600, 201911311600),\n            (201911311600, 201912311600),\n\n            (201912311600, 202001311600),\n            (202001311600, 202002311600),\n            (202002311600, 202003311600),\n            (202003311600, 202004311600),\n            (202004311600, 202005311600),\n            (202005311600, 202006311600),\n            (202006311600, 202007311600),\n            (202007311600, 202008311600),\n            (202008311600, 202009311600),\n            (202009311600, 202010311600),\n            (202010311600, 202011311600),\n            (202011311600, 202012311600),\n        ),\n        'slippage': 0,\n        'mode': 1\n    })\n\n    evaluator = SimpleCTASubProcessEnv(**{\n        'time_range': (\n            # (202101011600, 202106301600),\n            # (201701011600, 201706301600),\n            # (201706301600, 201801011600),\n            # (201801011600, 201806301600),\n            # (201806301600, 201901011600),\n\n\n            (202012311600, 202101311600),\n            (202101311600, 202102311600),\n            (202102311600, 202103311600),\n            (202103311600, 202104311600),\n            (202104311600, 202105311600),\n            (202105311600, 202106311600),\n\n            (201612311600, 201701311600),\n            (201701311600, 201702311600),\n            (201702311600, 201703311600),\n            (201703311600, 201704311600),\n            (201704311600, 201705311600),\n            (201705311600, 201706311600),\n            (201706311600, 201707311600),\n            (201707311600, 201708311600),\n            (201708311600, 201709311600),\n            (201709311600, 201710311600),\n            (201710311600, 201711311600),\n            (201711311600, 201712311600),\n\n            (201712311600, 201801311600),\n            (201801311600, 201802311600),\n            (201802311600, 201803311600),\n            (201803311600, 201804311600),\n            (201804311600, 201805311600),\n            (201805311600, 201806311600),\n            (201806311600, 201807311600),\n            (201807311600, 201808311600),\n            (201808311600, 201809311600),\n            (201809311600, 201810311600),\n            (201810311600, 201811311600),\n            (201811311600, 201812311600),\n        ),\n        'slippage': 0,\n        'mode': 2\n    })\n\n    n = 1500\n\n    eval_callback = EvalCallback(\n        eval_env=Monitor(evaluator),\n        callback_on_new_best=StopTrainingOnRewardThreshold(\n            reward_threshold=5, verbose=1),\n        n_eval_episodes=30,\n        eval_freq=24,\n        log_path='./outputs_bt/sb3/%s'%Trainer.__name__,\n        best_model_save_path='./outputs_bt/sb3/%s'%Trainer.__name__,\n        verbose=1)\n\n    model: Trainer = Trainer('MlpPolicy', learner,\n                             #  gamma=0.1 ** (1/12/8),\n                             gamma=0.96,\n                             #  learning_rate=2 ** -14,  # 15: 167, 14:\n                             learning_rate=1e-5,\n                             # learning_starts=100,\n                             # batch_size=128,\n                            #  ent_coef='auto_0.1',\n                             # policy_kwargs=dict(net_arch=[128, 128, 128]),\n                             tensorboard_log='./outputs_bt/sb3/%s'%Trainer.__name__,\n                             verbose=1,\n                             #  device='cpu',\n                             )\n    model.learn(\n        total_timesteps=10000,\n        callback=eval_callback,\n        log_interval=1\n    )\n    model.save('SimpleTrainer')\n\n\n@run.command()\n@click.option('--path', '-p', 'path')\ndef test(path):\n    env = SimpleCTAEnv(**{\n        # 'time_start': 201701011600,\n        # 'time_end': 201901011600,\n        # 'time_start': 202001011600,\n        # 'time_end': 202108311600,\n        'time_start': 202108311600,\n        'time_end': 202110131600,\n        # 'time_end': 202110281600,\n        'slippage': 0,\n        'mode': 2,\n        'id': 2,\n    })\n    model = Trainer.load(path)\n\n    for i in range(1):  # 模拟训练10次\n        obs = env.reset()\n        done = False\n        n = 0\n        while not done:\n            action = model.predict(obs)[0]\n            obs, reward, done, info = env.step(action)\n            n += 1\n            # print(\n            #     # 'action:', action,\n            #     # 'obs:', obs,\n            #     'reward:', reward,\n            #     # 'done:', done\n            #     )\n        #     break\n        # break\n        print('第%s次测试完成，执行%s步, 市值%s。' % (i+1, n, env.assets))\n    env.close()\n\n\nif __name__ == '__main__':\n    run()\n"
  },
  {
    "path": "config/01commom/actpolicy.json",
    "content": "{\n    \"default\":{\n        \"order\":[\n            {\n                \"action\":\"close\",\n                \"limit\":0\n            },\n            {\n                \"action\":\"open\",\n                \"limit\":0\n            }\n        ]\n    },\n    \"stockindex\":{\n        \"order\":[\n            {\n                \"action\":\"closeyestoday\",\n                \"limit\":0\n            },\n            {\n                \"action\":\"open\",\n                \"limit\":500\n            },\n            {\n                \"action\":\"closetoday\",\n                \"limit\":0\n            }\n        ],\n        \"filters\":[\"CFFEX.IF\",\"CFFEX.IC\",\"CFFEX.IH\"]\n    },\n    \"lowinnerdayfee\":{\n        \"order\":[\n            {\n                \"action\":\"closetoday\",\n                \"limit\":0\n            },\n            {\n                \"action\":\"closeyestoday\",\n                \"limit\":0\n            },\n            {\n                \"action\":\"open\",\n                \"limit\":0\n            }\n        ],\n        \"filters\":[\"DCE.a\",\"DCE.cs\",\"DCE.i\",\"DCE.j\",\"DCE.l\",\"DCE.m\",\"DCE.p\",\"DCE.pp\",\"SHFE.au\",\"SHFE.hc\",\"CZCE.ZC\",\"CZCE.CF\",\"CZCE.MA\",\"CZCE.SR\",\"CZCE.AP\"]\n    }\n}"
  },
  {
    "path": "config/01commom/commodities.json",
    "content": "{\n    \"CFFEX\": {\n        \"IC\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.2,\n            \"volscale\": 200,\n            \"name\": \"֤\",\n            \"exchg\": \"CFFEX\",\n            \"session\": \"SD0930\",\n            \"holiday\": \"CHINA\"\n        },\n        \"IF\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.2,\n            \"volscale\": 300,\n            \"name\": \"\",\n            \"exchg\": \"CFFEX\",\n            \"session\": \"SD0930\",\n            \"holiday\": \"CHINA\"\n        },\n        \"IH\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.2,\n            \"volscale\": 300,\n            \"name\": \"֤\",\n            \"exchg\": \"CFFEX\",\n            \"session\": \"SD0930\",\n            \"holiday\": \"CHINA\"\n        },\n        \"T\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 3,\n            \"pricetick\": 0.005,\n            \"volscale\": 10000,\n            \"name\": \"10ծ\",\n            \"exchg\": \"CFFEX\",\n            \"session\": \"FD0915\",\n            \"holiday\": \"CHINA\"\n        },\n        \"TF\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 3,\n            \"pricetick\": 0.005,\n            \"volscale\": 10000,\n            \"name\": \"5ծ\",\n            \"exchg\": \"CFFEX\",\n            \"session\": \"FD0915\",\n            \"holiday\": \"CHINA\"\n        },\n        \"TS\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 3,\n            \"pricetick\": 0.005,\n            \"volscale\": 20000,\n            \"name\": \"2ծ\",\n            \"exchg\": \"CFFEX\",\n            \"session\": \"FD0915\",\n            \"holiday\": \"CHINA\"\n        }\n    },\n    \"CZCE\": {\n        \"AP\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"ƻ\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"CF\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"֣\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"CJ\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"CY\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"ɴ\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"FG\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"JR\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"LR\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"̵\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"MA\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"֣\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"OI\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"PF\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"PK\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"\",\n            \"holiday\": \"CHINA\"\n        },\n        \"PM\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 50,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"RI\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"̵\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"RM\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"RS\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"SA\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"SF\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"SM\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 5,\n            \"name\": \"̹\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"SR\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"TA\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 5,\n            \"name\": \"PTA\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"UR\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"WH\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"֣\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"ZC\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.2,\n            \"volscale\": 100,\n            \"name\": \"֣ú\",\n            \"exchg\": \"CZCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        }\n    },\n    \"DCE\": {\n        \"a\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"һ\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"b\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"bb\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 2,\n            \"pricetick\": 0.05,\n            \"volscale\": 500,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"c\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"cs\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"eb\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 5,\n            \"name\": \"ϩ\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"eg\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"Ҷ\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"fb\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.5,\n            \"volscale\": 10,\n            \"name\": \"˰\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"i\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.5,\n            \"volscale\": 100,\n            \"name\": \"ʯ\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"j\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.5,\n            \"volscale\": 100,\n            \"name\": \"̿\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"jd\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"jm\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.5,\n            \"volscale\": 60,\n            \"name\": \"ú\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"l\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"lh\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 16,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"m\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"p\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"pg\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 20,\n            \"name\": \"Һ\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"pp\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 5,\n            \"name\": \"۱ϩ\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"rr\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"v\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"PVC\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"y\": {\n            \"covermode\": 0,\n            \"pricemode\": 0,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"DCE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        }\n    },\n    \"INE\": {\n        \"bc\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 10.0,\n            \"volscale\": 5,\n            \"name\": \"ͭ\",\n            \"exchg\": \"INE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"lu\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"INE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"nr\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 10,\n            \"name\": \"20\",\n            \"exchg\": \"INE\",\n            \"session\": \"FN0230\",\n            \"holiday\": \"CHINA\"\n        },\n        \"sc\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 1,\n            \"pricetick\": 0.1,\n            \"volscale\": 1000,\n            \"name\": \"ԭ\",\n            \"exchg\": \"INE\",\n            \"session\": \"FN0230\",\n            \"holiday\": \"CHINA\"\n        }\n    },\n    \"SHFE\": {\n        \"ag\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 15,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0230\",\n            \"holiday\": \"CHINA\"\n        },\n        \"al\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"au\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 2,\n            \"pricetick\": 0.02,\n            \"volscale\": 1000,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0230\",\n            \"holiday\": \"CHINA\"\n        },\n        \"bu\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"cu\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 10.0,\n            \"volscale\": 5,\n            \"name\": \"ͭ\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"fu\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"ȼ\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"hc\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"Ⱦ\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"ni\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 10.0,\n            \"volscale\": 1,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"pb\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"Ǧ\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"rb\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"ru\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 10,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"sn\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 10.0,\n            \"volscale\": 1,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"sp\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 2.0,\n            \"volscale\": 10,\n            \"name\": \"ֽ\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN2300\",\n            \"holiday\": \"CHINA\"\n        },\n        \"ss\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        },\n        \"wr\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 1.0,\n            \"volscale\": 10,\n            \"name\": \"߲\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FD0900\",\n            \"holiday\": \"CHINA\"\n        },\n        \"zn\": {\n            \"covermode\": 1,\n            \"pricemode\": 1,\n            \"category\": 1,\n            \"precision\": 0,\n            \"pricetick\": 5.0,\n            \"volscale\": 5,\n            \"name\": \"п\",\n            \"exchg\": \"SHFE\",\n            \"session\": \"FN0100\",\n            \"holiday\": \"CHINA\"\n        }\n    }\n}"
  },
  {
    "path": "config/01commom/contracts.json",
    "content": "{\n    \"CFFEX\": {\n        \"IC2110\": {\n            \"name\": \"֤2110\",\n            \"code\": \"IC2110\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IC\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 10\n        },\n        \"IC2111\": {\n            \"name\": \"֤2111\",\n            \"code\": \"IC2111\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IC\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 10\n        },\n        \"IC2112\": {\n            \"name\": \"֤2112\",\n            \"code\": \"IC2112\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IC\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 0\n        },\n        \"IC2203\": {\n            \"name\": \"֤2203\",\n            \"code\": \"IC2203\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IC\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 0\n        },\n        \"IF2110\": {\n            \"name\": \"2110\",\n            \"code\": \"IF2110\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IF\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 10\n        },\n        \"IF2111\": {\n            \"name\": \"2111\",\n            \"code\": \"IF2111\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IF\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 10\n        },\n        \"IF2112\": {\n            \"name\": \"2112\",\n            \"code\": \"IF2112\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IF\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 0\n        },\n        \"IF2203\": {\n            \"name\": \"2203\",\n            \"code\": \"IF2203\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IF\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 0\n        },\n        \"IH2110\": {\n            \"name\": \"֤2110\",\n            \"code\": \"IH2110\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IH\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 10\n        },\n        \"IH2111\": {\n            \"name\": \"֤2111\",\n            \"code\": \"IH2111\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IH\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 10\n        },\n        \"IH2112\": {\n            \"name\": \"֤2112\",\n            \"code\": \"IH2112\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IH\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 0\n        },\n        \"IH2203\": {\n            \"name\": \"֤2203\",\n            \"code\": \"IH2203\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"IH\",\n            \"maxlimitqty\": 20,\n            \"maxmarketqty\": 0\n        },\n        \"T2112\": {\n            \"name\": \"10ծ2112\",\n            \"code\": \"T2112\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"T\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"T2203\": {\n            \"name\": \"10ծ2203\",\n            \"code\": \"T2203\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"T\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"T2206\": {\n            \"name\": \"10ծ2206\",\n            \"code\": \"T2206\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"T\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"TF2112\": {\n            \"name\": \"5ծ2112\",\n            \"code\": \"TF2112\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"TF\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"TF2203\": {\n            \"name\": \"5ծ2203\",\n            \"code\": \"TF2203\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"TF\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"TF2206\": {\n            \"name\": \"5ծ2206\",\n            \"code\": \"TF2206\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"TF\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"TS2112\": {\n            \"name\": \"2ծ2112\",\n            \"code\": \"TS2112\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"TS\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"TS2203\": {\n            \"name\": \"2ծ2203\",\n            \"code\": \"TS2203\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"TS\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        },\n        \"TS2206\": {\n            \"name\": \"2ծ2206\",\n            \"code\": \"TS2206\",\n            \"exchg\": \"CFFEX\",\n            \"product\": \"TS\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 0\n        }\n    },\n    \"CZCE\": {\n        \"AP110\": {\n            \"name\": \"ƻ110\",\n            \"code\": \"AP110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"AP111\": {\n            \"name\": \"ƻ111\",\n            \"code\": \"AP111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"AP112\": {\n            \"name\": \"ƻ112\",\n            \"code\": \"AP112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"AP201\": {\n            \"name\": \"ƻ201\",\n            \"code\": \"AP201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"AP203\": {\n            \"name\": \"ƻ203\",\n            \"code\": \"AP203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"AP204\": {\n            \"name\": \"ƻ204\",\n            \"code\": \"AP204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"AP205\": {\n            \"name\": \"ƻ205\",\n            \"code\": \"AP205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"AP\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CF111\": {\n            \"name\": \"֣111\",\n            \"code\": \"CF111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"CF201\": {\n            \"name\": \"֣201\",\n            \"code\": \"CF201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CF203\": {\n            \"name\": \"֣203\",\n            \"code\": \"CF203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CF205\": {\n            \"name\": \"֣205\",\n            \"code\": \"CF205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CF207\": {\n            \"name\": \"֣207\",\n            \"code\": \"CF207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CF209\": {\n            \"name\": \"֣209\",\n            \"code\": \"CF209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CJ112\": {\n            \"name\": \"112\",\n            \"code\": \"CJ112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CJ\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"CJ201\": {\n            \"name\": \"201\",\n            \"code\": \"CJ201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CJ\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CJ203\": {\n            \"name\": \"203\",\n            \"code\": \"CJ203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CJ\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CJ205\": {\n            \"name\": \"205\",\n            \"code\": \"CJ205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CJ\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CJ207\": {\n            \"name\": \"207\",\n            \"code\": \"CJ207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CJ\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CJ209\": {\n            \"name\": \"209\",\n            \"code\": \"CJ209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CJ\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY110\": {\n            \"name\": \"ɴ110\",\n            \"code\": \"CY110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"CY111\": {\n            \"name\": \"ɴ111\",\n            \"code\": \"CY111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"CY112\": {\n            \"name\": \"ɴ112\",\n            \"code\": \"CY112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"CY201\": {\n            \"name\": \"ɴ201\",\n            \"code\": \"CY201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY202\": {\n            \"name\": \"ɴ202\",\n            \"code\": \"CY202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY203\": {\n            \"name\": \"ɴ203\",\n            \"code\": \"CY203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY204\": {\n            \"name\": \"ɴ204\",\n            \"code\": \"CY204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY205\": {\n            \"name\": \"ɴ205\",\n            \"code\": \"CY205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY206\": {\n            \"name\": \"ɴ206\",\n            \"code\": \"CY206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY207\": {\n            \"name\": \"ɴ207\",\n            \"code\": \"CY207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY208\": {\n            \"name\": \"ɴ208\",\n            \"code\": \"CY208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"CY209\": {\n            \"name\": \"ɴ209\",\n            \"code\": \"CY209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"CY\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"FG110\": {\n            \"name\": \"110\",\n            \"code\": \"FG110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"FG111\": {\n            \"name\": \"111\",\n            \"code\": \"FG111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"FG112\": {\n            \"name\": \"112\",\n            \"code\": \"FG112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"FG201\": {\n            \"name\": \"201\",\n            \"code\": \"FG201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG202\": {\n            \"name\": \"202\",\n            \"code\": \"FG202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG203\": {\n            \"name\": \"203\",\n            \"code\": \"FG203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG204\": {\n            \"name\": \"204\",\n            \"code\": \"FG204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG205\": {\n            \"name\": \"205\",\n            \"code\": \"FG205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG206\": {\n            \"name\": \"206\",\n            \"code\": \"FG206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG207\": {\n            \"name\": \"207\",\n            \"code\": \"FG207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG208\": {\n            \"name\": \"208\",\n            \"code\": \"FG208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"FG209\": {\n            \"name\": \"209\",\n            \"code\": \"FG209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"FG\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"JR111\": {\n            \"name\": \"111\",\n            \"code\": \"JR111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"JR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"JR201\": {\n            \"name\": \"201\",\n            \"code\": \"JR201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"JR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"JR203\": {\n            \"name\": \"203\",\n            \"code\": \"JR203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"JR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"JR205\": {\n            \"name\": \"205\",\n            \"code\": \"JR205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"JR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"JR207\": {\n            \"name\": \"207\",\n            \"code\": \"JR207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"JR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"JR209\": {\n            \"name\": \"209\",\n            \"code\": \"JR209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"JR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"LR111\": {\n            \"name\": \"̵111\",\n            \"code\": \"LR111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"LR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"LR201\": {\n            \"name\": \"̵201\",\n            \"code\": \"LR201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"LR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"LR203\": {\n            \"name\": \"̵203\",\n            \"code\": \"LR203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"LR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"LR205\": {\n            \"name\": \"̵205\",\n            \"code\": \"LR205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"LR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"LR207\": {\n            \"name\": \"̵207\",\n            \"code\": \"LR207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"LR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"LR209\": {\n            \"name\": \"̵209\",\n            \"code\": \"LR209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"LR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"MA110\": {\n            \"name\": \"֣110\",\n            \"code\": \"MA110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"MA111\": {\n            \"name\": \"֣111\",\n            \"code\": \"MA111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"MA112\": {\n            \"name\": \"֣112\",\n            \"code\": \"MA112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"MA201\": {\n            \"name\": \"֣201\",\n            \"code\": \"MA201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA202\": {\n            \"name\": \"֣202\",\n            \"code\": \"MA202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA203\": {\n            \"name\": \"֣203\",\n            \"code\": \"MA203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA204\": {\n            \"name\": \"֣204\",\n            \"code\": \"MA204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA205\": {\n            \"name\": \"֣205\",\n            \"code\": \"MA205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA206\": {\n            \"name\": \"֣206\",\n            \"code\": \"MA206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA207\": {\n            \"name\": \"֣207\",\n            \"code\": \"MA207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA208\": {\n            \"name\": \"֣208\",\n            \"code\": \"MA208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"MA209\": {\n            \"name\": \"֣209\",\n            \"code\": \"MA209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"MA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"OI111\": {\n            \"name\": \"111\",\n            \"code\": \"OI111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"OI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"OI201\": {\n            \"name\": \"201\",\n            \"code\": \"OI201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"OI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"OI203\": {\n            \"name\": \"203\",\n            \"code\": \"OI203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"OI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"OI205\": {\n            \"name\": \"205\",\n            \"code\": \"OI205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"OI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"OI207\": {\n            \"name\": \"207\",\n            \"code\": \"OI207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"OI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"OI209\": {\n            \"name\": \"209\",\n            \"code\": \"OI209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"OI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"PF110\": {\n            \"name\": \"110\",\n            \"code\": \"PF110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"PF111\": {\n            \"name\": \"111\",\n            \"code\": \"PF111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"PF112\": {\n            \"name\": \"112\",\n            \"code\": \"PF112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"PF201\": {\n            \"name\": \"201\",\n            \"code\": \"PF201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF202\": {\n            \"name\": \"202\",\n            \"code\": \"PF202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF203\": {\n            \"name\": \"203\",\n            \"code\": \"PF203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF204\": {\n            \"name\": \"204\",\n            \"code\": \"PF204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF205\": {\n            \"name\": \"205\",\n            \"code\": \"PF205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF206\": {\n            \"name\": \"206\",\n            \"code\": \"PF206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF207\": {\n            \"name\": \"207\",\n            \"code\": \"PF207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF208\": {\n            \"name\": \"208\",\n            \"code\": \"PF208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PF209\": {\n            \"name\": \"209\",\n            \"code\": \"PF209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PK110\": {\n            \"name\": \"110\",\n            \"code\": \"PK110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PK\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PK111\": {\n            \"name\": \"111\",\n            \"code\": \"PK111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PK\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PK112\": {\n            \"name\": \"112\",\n            \"code\": \"PK112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PK\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PK201\": {\n            \"name\": \"201\",\n            \"code\": \"PK201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PK\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PK203\": {\n            \"name\": \"203\",\n            \"code\": \"PK203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PK\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PK204\": {\n            \"name\": \"204\",\n            \"code\": \"PK204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PK\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PM111\": {\n            \"name\": \"111\",\n            \"code\": \"PM111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"PM201\": {\n            \"name\": \"201\",\n            \"code\": \"PM201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PM203\": {\n            \"name\": \"203\",\n            \"code\": \"PM203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PM205\": {\n            \"name\": \"205\",\n            \"code\": \"PM205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PM207\": {\n            \"name\": \"207\",\n            \"code\": \"PM207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"PM209\": {\n            \"name\": \"209\",\n            \"code\": \"PM209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"PM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"RI111\": {\n            \"name\": \"̵111\",\n            \"code\": \"RI111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RI201\": {\n            \"name\": \"̵201\",\n            \"code\": \"RI201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"RI203\": {\n            \"name\": \"̵203\",\n            \"code\": \"RI203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"RI205\": {\n            \"name\": \"̵205\",\n            \"code\": \"RI205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"RI207\": {\n            \"name\": \"̵207\",\n            \"code\": \"RI207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"RI209\": {\n            \"name\": \"̵209\",\n            \"code\": \"RI209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RI\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 500\n        },\n        \"RM111\": {\n            \"name\": \"111\",\n            \"code\": \"RM111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RM201\": {\n            \"name\": \"201\",\n            \"code\": \"RM201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RM203\": {\n            \"name\": \"203\",\n            \"code\": \"RM203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RM205\": {\n            \"name\": \"205\",\n            \"code\": \"RM205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RM207\": {\n            \"name\": \"207\",\n            \"code\": \"RM207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RM208\": {\n            \"name\": \"208\",\n            \"code\": \"RM208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RM209\": {\n            \"name\": \"209\",\n            \"code\": \"RM209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RS111\": {\n            \"name\": \"111\",\n            \"code\": \"RS111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RS\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RS207\": {\n            \"name\": \"207\",\n            \"code\": \"RS207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RS\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RS208\": {\n            \"name\": \"208\",\n            \"code\": \"RS208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RS\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"RS209\": {\n            \"name\": \"209\",\n            \"code\": \"RS209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"RS\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SA110\": {\n            \"name\": \"110\",\n            \"code\": \"SA110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SA111\": {\n            \"name\": \"111\",\n            \"code\": \"SA111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SA112\": {\n            \"name\": \"112\",\n            \"code\": \"SA112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SA201\": {\n            \"name\": \"201\",\n            \"code\": \"SA201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA202\": {\n            \"name\": \"202\",\n            \"code\": \"SA202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA203\": {\n            \"name\": \"203\",\n            \"code\": \"SA203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA204\": {\n            \"name\": \"204\",\n            \"code\": \"SA204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA205\": {\n            \"name\": \"205\",\n            \"code\": \"SA205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA206\": {\n            \"name\": \"206\",\n            \"code\": \"SA206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA207\": {\n            \"name\": \"207\",\n            \"code\": \"SA207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA208\": {\n            \"name\": \"208\",\n            \"code\": \"SA208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SA209\": {\n            \"name\": \"209\",\n            \"code\": \"SA209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF110\": {\n            \"name\": \"110\",\n            \"code\": \"SF110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SF111\": {\n            \"name\": \"111\",\n            \"code\": \"SF111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SF112\": {\n            \"name\": \"112\",\n            \"code\": \"SF112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SF201\": {\n            \"name\": \"201\",\n            \"code\": \"SF201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF202\": {\n            \"name\": \"202\",\n            \"code\": \"SF202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF203\": {\n            \"name\": \"203\",\n            \"code\": \"SF203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF204\": {\n            \"name\": \"204\",\n            \"code\": \"SF204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF205\": {\n            \"name\": \"205\",\n            \"code\": \"SF205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF206\": {\n            \"name\": \"206\",\n            \"code\": \"SF206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF207\": {\n            \"name\": \"207\",\n            \"code\": \"SF207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF208\": {\n            \"name\": \"208\",\n            \"code\": \"SF208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SF209\": {\n            \"name\": \"209\",\n            \"code\": \"SF209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SF\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM110\": {\n            \"name\": \"̹110\",\n            \"code\": \"SM110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SM111\": {\n            \"name\": \"̹111\",\n            \"code\": \"SM111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SM112\": {\n            \"name\": \"̹112\",\n            \"code\": \"SM112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SM201\": {\n            \"name\": \"̹201\",\n            \"code\": \"SM201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM202\": {\n            \"name\": \"̹202\",\n            \"code\": \"SM202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM203\": {\n            \"name\": \"̹203\",\n            \"code\": \"SM203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM204\": {\n            \"name\": \"̹204\",\n            \"code\": \"SM204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM205\": {\n            \"name\": \"̹205\",\n            \"code\": \"SM205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM206\": {\n            \"name\": \"̹206\",\n            \"code\": \"SM206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM207\": {\n            \"name\": \"̹207\",\n            \"code\": \"SM207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM208\": {\n            \"name\": \"̹208\",\n            \"code\": \"SM208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SM209\": {\n            \"name\": \"̹209\",\n            \"code\": \"SM209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SM\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SR111\": {\n            \"name\": \"111\",\n            \"code\": \"SR111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"SR201\": {\n            \"name\": \"201\",\n            \"code\": \"SR201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SR203\": {\n            \"name\": \"203\",\n            \"code\": \"SR203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SR205\": {\n            \"name\": \"205\",\n            \"code\": \"SR205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SR207\": {\n            \"name\": \"207\",\n            \"code\": \"SR207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"SR209\": {\n            \"name\": \"209\",\n            \"code\": \"SR209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"SR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA110\": {\n            \"name\": \"PTA110\",\n            \"code\": \"TA110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"TA111\": {\n            \"name\": \"PTA111\",\n            \"code\": \"TA111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"TA112\": {\n            \"name\": \"PTA112\",\n            \"code\": \"TA112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"TA201\": {\n            \"name\": \"PTA201\",\n            \"code\": \"TA201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA202\": {\n            \"name\": \"PTA202\",\n            \"code\": \"TA202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA203\": {\n            \"name\": \"PTA203\",\n            \"code\": \"TA203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA204\": {\n            \"name\": \"PTA204\",\n            \"code\": \"TA204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA205\": {\n            \"name\": \"PTA205\",\n            \"code\": \"TA205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA206\": {\n            \"name\": \"PTA206\",\n            \"code\": \"TA206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA207\": {\n            \"name\": \"PTA207\",\n            \"code\": \"TA207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA208\": {\n            \"name\": \"PTA208\",\n            \"code\": \"TA208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"TA209\": {\n            \"name\": \"PTA209\",\n            \"code\": \"TA209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"TA\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR110\": {\n            \"name\": \"110\",\n            \"code\": \"UR110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"UR111\": {\n            \"name\": \"111\",\n            \"code\": \"UR111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"UR112\": {\n            \"name\": \"112\",\n            \"code\": \"UR112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"UR201\": {\n            \"name\": \"201\",\n            \"code\": \"UR201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR202\": {\n            \"name\": \"202\",\n            \"code\": \"UR202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR203\": {\n            \"name\": \"203\",\n            \"code\": \"UR203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR204\": {\n            \"name\": \"204\",\n            \"code\": \"UR204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR205\": {\n            \"name\": \"205\",\n            \"code\": \"UR205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR206\": {\n            \"name\": \"206\",\n            \"code\": \"UR206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR207\": {\n            \"name\": \"207\",\n            \"code\": \"UR207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR208\": {\n            \"name\": \"208\",\n            \"code\": \"UR208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"UR209\": {\n            \"name\": \"209\",\n            \"code\": \"UR209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"UR\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"WH111\": {\n            \"name\": \"֣111\",\n            \"code\": \"WH111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"WH\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"WH201\": {\n            \"name\": \"֣201\",\n            \"code\": \"WH201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"WH\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"WH203\": {\n            \"name\": \"֣203\",\n            \"code\": \"WH203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"WH\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"WH205\": {\n            \"name\": \"֣205\",\n            \"code\": \"WH205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"WH\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"WH207\": {\n            \"name\": \"֣207\",\n            \"code\": \"WH207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"WH\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"WH209\": {\n            \"name\": \"֣209\",\n            \"code\": \"WH209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"WH\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC110\": {\n            \"name\": \"֣ú110\",\n            \"code\": \"ZC110\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"ZC111\": {\n            \"name\": \"֣ú111\",\n            \"code\": \"ZC111\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"ZC112\": {\n            \"name\": \"֣ú112\",\n            \"code\": \"ZC112\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"ZC201\": {\n            \"name\": \"֣ú201\",\n            \"code\": \"ZC201\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC202\": {\n            \"name\": \"֣ú202\",\n            \"code\": \"ZC202\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC203\": {\n            \"name\": \"֣ú203\",\n            \"code\": \"ZC203\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC204\": {\n            \"name\": \"֣ú204\",\n            \"code\": \"ZC204\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC205\": {\n            \"name\": \"֣ú205\",\n            \"code\": \"ZC205\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC206\": {\n            \"name\": \"֣ú206\",\n            \"code\": \"ZC206\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC207\": {\n            \"name\": \"֣ú207\",\n            \"code\": \"ZC207\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC208\": {\n            \"name\": \"֣ú208\",\n            \"code\": \"ZC208\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        },\n        \"ZC209\": {\n            \"name\": \"֣ú209\",\n            \"code\": \"ZC209\",\n            \"exchg\": \"CZCE\",\n            \"product\": \"ZC\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 200\n        }\n    },\n    \"DCE\": {\n        \"a2111\": {\n            \"name\": \"һ2111\",\n            \"code\": \"a2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"a\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"a2201\": {\n            \"name\": \"һ2201\",\n            \"code\": \"a2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"a\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"a2203\": {\n            \"name\": \"һ2203\",\n            \"code\": \"a2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"a\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"a2205\": {\n            \"name\": \"һ2205\",\n            \"code\": \"a2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"a\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"a2207\": {\n            \"name\": \"һ2207\",\n            \"code\": \"a2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"a\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"a2209\": {\n            \"name\": \"һ2209\",\n            \"code\": \"a2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"a\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2110\": {\n            \"name\": \"2110\",\n            \"code\": \"b2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2111\": {\n            \"name\": \"2111\",\n            \"code\": \"b2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2112\": {\n            \"name\": \"2112\",\n            \"code\": \"b2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2201\": {\n            \"name\": \"2201\",\n            \"code\": \"b2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2202\": {\n            \"name\": \"2202\",\n            \"code\": \"b2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2203\": {\n            \"name\": \"2203\",\n            \"code\": \"b2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2204\": {\n            \"name\": \"2204\",\n            \"code\": \"b2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2205\": {\n            \"name\": \"2205\",\n            \"code\": \"b2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2206\": {\n            \"name\": \"2206\",\n            \"code\": \"b2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2207\": {\n            \"name\": \"2207\",\n            \"code\": \"b2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2208\": {\n            \"name\": \"2208\",\n            \"code\": \"b2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"b2209\": {\n            \"name\": \"2209\",\n            \"code\": \"b2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"b\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2110\": {\n            \"name\": \"2110\",\n            \"code\": \"bb2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2111\": {\n            \"name\": \"2111\",\n            \"code\": \"bb2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2112\": {\n            \"name\": \"2112\",\n            \"code\": \"bb2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2201\": {\n            \"name\": \"2201\",\n            \"code\": \"bb2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2202\": {\n            \"name\": \"2202\",\n            \"code\": \"bb2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2203\": {\n            \"name\": \"2203\",\n            \"code\": \"bb2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2204\": {\n            \"name\": \"2204\",\n            \"code\": \"bb2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2205\": {\n            \"name\": \"2205\",\n            \"code\": \"bb2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2206\": {\n            \"name\": \"2206\",\n            \"code\": \"bb2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2207\": {\n            \"name\": \"2207\",\n            \"code\": \"bb2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2208\": {\n            \"name\": \"2208\",\n            \"code\": \"bb2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"bb2209\": {\n            \"name\": \"2209\",\n            \"code\": \"bb2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"bb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"c2111\": {\n            \"name\": \"2111\",\n            \"code\": \"c2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"c\",\n            \"maxlimitqty\": 2000,\n            \"maxmarketqty\": 2000\n        },\n        \"c2201\": {\n            \"name\": \"2201\",\n            \"code\": \"c2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"c\",\n            \"maxlimitqty\": 2000,\n            \"maxmarketqty\": 2000\n        },\n        \"c2203\": {\n            \"name\": \"2203\",\n            \"code\": \"c2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"c\",\n            \"maxlimitqty\": 2000,\n            \"maxmarketqty\": 2000\n        },\n        \"c2205\": {\n            \"name\": \"2205\",\n            \"code\": \"c2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"c\",\n            \"maxlimitqty\": 2000,\n            \"maxmarketqty\": 2000\n        },\n        \"c2207\": {\n            \"name\": \"2207\",\n            \"code\": \"c2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"c\",\n            \"maxlimitqty\": 2000,\n            \"maxmarketqty\": 2000\n        },\n        \"c2209\": {\n            \"name\": \"2209\",\n            \"code\": \"c2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"c\",\n            \"maxlimitqty\": 2000,\n            \"maxmarketqty\": 2000\n        },\n        \"cs2111\": {\n            \"name\": \"2111\",\n            \"code\": \"cs2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"cs\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"cs2201\": {\n            \"name\": \"2201\",\n            \"code\": \"cs2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"cs\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"cs2203\": {\n            \"name\": \"2203\",\n            \"code\": \"cs2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"cs\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"cs2205\": {\n            \"name\": \"2205\",\n            \"code\": \"cs2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"cs\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"cs2207\": {\n            \"name\": \"2207\",\n            \"code\": \"cs2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"cs\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"cs2209\": {\n            \"name\": \"2209\",\n            \"code\": \"cs2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"cs\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2110\": {\n            \"name\": \"ϩ2110\",\n            \"code\": \"eb2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2111\": {\n            \"name\": \"ϩ2111\",\n            \"code\": \"eb2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2112\": {\n            \"name\": \"ϩ2112\",\n            \"code\": \"eb2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2201\": {\n            \"name\": \"ϩ2201\",\n            \"code\": \"eb2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2202\": {\n            \"name\": \"ϩ2202\",\n            \"code\": \"eb2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2203\": {\n            \"name\": \"ϩ2203\",\n            \"code\": \"eb2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2204\": {\n            \"name\": \"ϩ2204\",\n            \"code\": \"eb2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2205\": {\n            \"name\": \"ϩ2205\",\n            \"code\": \"eb2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2206\": {\n            \"name\": \"ϩ2206\",\n            \"code\": \"eb2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2207\": {\n            \"name\": \"ϩ2207\",\n            \"code\": \"eb2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2208\": {\n            \"name\": \"ϩ2208\",\n            \"code\": \"eb2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eb2209\": {\n            \"name\": \"ϩ2209\",\n            \"code\": \"eb2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2110\": {\n            \"name\": \"Ҷ2110\",\n            \"code\": \"eg2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2111\": {\n            \"name\": \"Ҷ2111\",\n            \"code\": \"eg2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2112\": {\n            \"name\": \"Ҷ2112\",\n            \"code\": \"eg2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2201\": {\n            \"name\": \"Ҷ2201\",\n            \"code\": \"eg2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2202\": {\n            \"name\": \"Ҷ2202\",\n            \"code\": \"eg2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2203\": {\n            \"name\": \"Ҷ2203\",\n            \"code\": \"eg2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2204\": {\n            \"name\": \"Ҷ2204\",\n            \"code\": \"eg2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2205\": {\n            \"name\": \"Ҷ2205\",\n            \"code\": \"eg2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2206\": {\n            \"name\": \"Ҷ2206\",\n            \"code\": \"eg2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2207\": {\n            \"name\": \"Ҷ2207\",\n            \"code\": \"eg2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2208\": {\n            \"name\": \"Ҷ2208\",\n            \"code\": \"eg2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"eg2209\": {\n            \"name\": \"Ҷ2209\",\n            \"code\": \"eg2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"eg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2110\": {\n            \"name\": \"˰2110\",\n            \"code\": \"fb2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2111\": {\n            \"name\": \"˰2111\",\n            \"code\": \"fb2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2112\": {\n            \"name\": \"˰2112\",\n            \"code\": \"fb2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2201\": {\n            \"name\": \"˰2201\",\n            \"code\": \"fb2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2202\": {\n            \"name\": \"˰2202\",\n            \"code\": \"fb2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2203\": {\n            \"name\": \"˰2203\",\n            \"code\": \"fb2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2204\": {\n            \"name\": \"˰2204\",\n            \"code\": \"fb2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2205\": {\n            \"name\": \"˰2205\",\n            \"code\": \"fb2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2206\": {\n            \"name\": \"˰2206\",\n            \"code\": \"fb2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2207\": {\n            \"name\": \"˰2207\",\n            \"code\": \"fb2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2208\": {\n            \"name\": \"˰2208\",\n            \"code\": \"fb2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"fb2209\": {\n            \"name\": \"˰2209\",\n            \"code\": \"fb2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"fb\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2110\": {\n            \"name\": \"ʯ2110\",\n            \"code\": \"i2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2111\": {\n            \"name\": \"ʯ2111\",\n            \"code\": \"i2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2112\": {\n            \"name\": \"ʯ2112\",\n            \"code\": \"i2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2201\": {\n            \"name\": \"ʯ2201\",\n            \"code\": \"i2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2202\": {\n            \"name\": \"ʯ2202\",\n            \"code\": \"i2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2203\": {\n            \"name\": \"ʯ2203\",\n            \"code\": \"i2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2204\": {\n            \"name\": \"ʯ2204\",\n            \"code\": \"i2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2205\": {\n            \"name\": \"ʯ2205\",\n            \"code\": \"i2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2206\": {\n            \"name\": \"ʯ2206\",\n            \"code\": \"i2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2207\": {\n            \"name\": \"ʯ2207\",\n            \"code\": \"i2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2208\": {\n            \"name\": \"ʯ2208\",\n            \"code\": \"i2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"i2209\": {\n            \"name\": \"ʯ2209\",\n            \"code\": \"i2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"i\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"j2110\": {\n            \"name\": \"̿2110\",\n            \"code\": \"j2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2111\": {\n            \"name\": \"̿2111\",\n            \"code\": \"j2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2112\": {\n            \"name\": \"̿2112\",\n            \"code\": \"j2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2201\": {\n            \"name\": \"̿2201\",\n            \"code\": \"j2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2202\": {\n            \"name\": \"̿2202\",\n            \"code\": \"j2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2203\": {\n            \"name\": \"̿2203\",\n            \"code\": \"j2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2204\": {\n            \"name\": \"̿2204\",\n            \"code\": \"j2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2205\": {\n            \"name\": \"̿2205\",\n            \"code\": \"j2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2206\": {\n            \"name\": \"̿2206\",\n            \"code\": \"j2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2207\": {\n            \"name\": \"̿2207\",\n            \"code\": \"j2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2208\": {\n            \"name\": \"̿2208\",\n            \"code\": \"j2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"j2209\": {\n            \"name\": \"̿2209\",\n            \"code\": \"j2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"j\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 500\n        },\n        \"jd2110\": {\n            \"name\": \"2110\",\n            \"code\": \"jd2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2111\": {\n            \"name\": \"2111\",\n            \"code\": \"jd2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2112\": {\n            \"name\": \"2112\",\n            \"code\": \"jd2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2201\": {\n            \"name\": \"2201\",\n            \"code\": \"jd2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2202\": {\n            \"name\": \"2202\",\n            \"code\": \"jd2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2203\": {\n            \"name\": \"2203\",\n            \"code\": \"jd2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2204\": {\n            \"name\": \"2204\",\n            \"code\": \"jd2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2205\": {\n            \"name\": \"2205\",\n            \"code\": \"jd2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2206\": {\n            \"name\": \"2206\",\n            \"code\": \"jd2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2207\": {\n            \"name\": \"2207\",\n            \"code\": \"jd2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2208\": {\n            \"name\": \"2208\",\n            \"code\": \"jd2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jd2209\": {\n            \"name\": \"2209\",\n            \"code\": \"jd2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jd\",\n            \"maxlimitqty\": 300,\n            \"maxmarketqty\": 300\n        },\n        \"jm2110\": {\n            \"name\": \"ú2110\",\n            \"code\": \"jm2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2111\": {\n            \"name\": \"ú2111\",\n            \"code\": \"jm2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2112\": {\n            \"name\": \"ú2112\",\n            \"code\": \"jm2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2201\": {\n            \"name\": \"ú2201\",\n            \"code\": \"jm2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2202\": {\n            \"name\": \"ú2202\",\n            \"code\": \"jm2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2203\": {\n            \"name\": \"ú2203\",\n            \"code\": \"jm2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2204\": {\n            \"name\": \"ú2204\",\n            \"code\": \"jm2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2205\": {\n            \"name\": \"ú2205\",\n            \"code\": \"jm2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2206\": {\n            \"name\": \"ú2206\",\n            \"code\": \"jm2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2207\": {\n            \"name\": \"ú2207\",\n            \"code\": \"jm2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2208\": {\n            \"name\": \"ú2208\",\n            \"code\": \"jm2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"jm2209\": {\n            \"name\": \"ú2209\",\n            \"code\": \"jm2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"jm\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2110\": {\n            \"name\": \"2110\",\n            \"code\": \"l2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2111\": {\n            \"name\": \"2111\",\n            \"code\": \"l2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2112\": {\n            \"name\": \"2112\",\n            \"code\": \"l2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2201\": {\n            \"name\": \"2201\",\n            \"code\": \"l2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2202\": {\n            \"name\": \"2202\",\n            \"code\": \"l2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2203\": {\n            \"name\": \"2203\",\n            \"code\": \"l2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2204\": {\n            \"name\": \"2204\",\n            \"code\": \"l2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2205\": {\n            \"name\": \"2205\",\n            \"code\": \"l2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2206\": {\n            \"name\": \"2206\",\n            \"code\": \"l2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2207\": {\n            \"name\": \"2207\",\n            \"code\": \"l2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2208\": {\n            \"name\": \"2208\",\n            \"code\": \"l2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"l2209\": {\n            \"name\": \"2209\",\n            \"code\": \"l2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"l\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"lh2111\": {\n            \"name\": \"2111\",\n            \"code\": \"lh2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"lh\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 50\n        },\n        \"lh2201\": {\n            \"name\": \"2201\",\n            \"code\": \"lh2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"lh\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 50\n        },\n        \"lh2203\": {\n            \"name\": \"2203\",\n            \"code\": \"lh2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"lh\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 50\n        },\n        \"lh2205\": {\n            \"name\": \"2205\",\n            \"code\": \"lh2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"lh\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 50\n        },\n        \"lh2207\": {\n            \"name\": \"2207\",\n            \"code\": \"lh2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"lh\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 50\n        },\n        \"lh2209\": {\n            \"name\": \"2209\",\n            \"code\": \"lh2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"lh\",\n            \"maxlimitqty\": 50,\n            \"maxmarketqty\": 50\n        },\n        \"m2111\": {\n            \"name\": \"2111\",\n            \"code\": \"m2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2112\": {\n            \"name\": \"2112\",\n            \"code\": \"m2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2201\": {\n            \"name\": \"2201\",\n            \"code\": \"m2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2203\": {\n            \"name\": \"2203\",\n            \"code\": \"m2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2205\": {\n            \"name\": \"2205\",\n            \"code\": \"m2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2207\": {\n            \"name\": \"2207\",\n            \"code\": \"m2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2208\": {\n            \"name\": \"2208\",\n            \"code\": \"m2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"m2209\": {\n            \"name\": \"2209\",\n            \"code\": \"m2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"m\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2110\": {\n            \"name\": \"2110\",\n            \"code\": \"p2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2111\": {\n            \"name\": \"2111\",\n            \"code\": \"p2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2112\": {\n            \"name\": \"2112\",\n            \"code\": \"p2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2201\": {\n            \"name\": \"2201\",\n            \"code\": \"p2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2202\": {\n            \"name\": \"2202\",\n            \"code\": \"p2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2203\": {\n            \"name\": \"2203\",\n            \"code\": \"p2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2204\": {\n            \"name\": \"2204\",\n            \"code\": \"p2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2205\": {\n            \"name\": \"2205\",\n            \"code\": \"p2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2206\": {\n            \"name\": \"2206\",\n            \"code\": \"p2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2207\": {\n            \"name\": \"2207\",\n            \"code\": \"p2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2208\": {\n            \"name\": \"2208\",\n            \"code\": \"p2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"p2209\": {\n            \"name\": \"2209\",\n            \"code\": \"p2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"p\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2110\": {\n            \"name\": \"Һ2110\",\n            \"code\": \"pg2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2111\": {\n            \"name\": \"Һ2111\",\n            \"code\": \"pg2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2112\": {\n            \"name\": \"Һ2112\",\n            \"code\": \"pg2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2201\": {\n            \"name\": \"Һ2201\",\n            \"code\": \"pg2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2202\": {\n            \"name\": \"Һ2202\",\n            \"code\": \"pg2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2203\": {\n            \"name\": \"Һ2203\",\n            \"code\": \"pg2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2204\": {\n            \"name\": \"Һ2204\",\n            \"code\": \"pg2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2205\": {\n            \"name\": \"Һ2205\",\n            \"code\": \"pg2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2206\": {\n            \"name\": \"Һ2206\",\n            \"code\": \"pg2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2207\": {\n            \"name\": \"Һ2207\",\n            \"code\": \"pg2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2208\": {\n            \"name\": \"Һ2208\",\n            \"code\": \"pg2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pg2209\": {\n            \"name\": \"Һ2209\",\n            \"code\": \"pg2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pg\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2110\": {\n            \"name\": \"۱ϩ2110\",\n            \"code\": \"pp2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2111\": {\n            \"name\": \"۱ϩ2111\",\n            \"code\": \"pp2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2112\": {\n            \"name\": \"۱ϩ2112\",\n            \"code\": \"pp2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2201\": {\n            \"name\": \"۱ϩ2201\",\n            \"code\": \"pp2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2202\": {\n            \"name\": \"۱ϩ2202\",\n            \"code\": \"pp2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2203\": {\n            \"name\": \"۱ϩ2203\",\n            \"code\": \"pp2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2204\": {\n            \"name\": \"۱ϩ2204\",\n            \"code\": \"pp2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2205\": {\n            \"name\": \"۱ϩ2205\",\n            \"code\": \"pp2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2206\": {\n            \"name\": \"۱ϩ2206\",\n            \"code\": \"pp2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2207\": {\n            \"name\": \"۱ϩ2207\",\n            \"code\": \"pp2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2208\": {\n            \"name\": \"۱ϩ2208\",\n            \"code\": \"pp2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"pp2209\": {\n            \"name\": \"۱ϩ2209\",\n            \"code\": \"pp2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"pp\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2110\": {\n            \"name\": \"2110\",\n            \"code\": \"rr2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2111\": {\n            \"name\": \"2111\",\n            \"code\": \"rr2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2112\": {\n            \"name\": \"2112\",\n            \"code\": \"rr2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2201\": {\n            \"name\": \"2201\",\n            \"code\": \"rr2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2202\": {\n            \"name\": \"2202\",\n            \"code\": \"rr2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2203\": {\n            \"name\": \"2203\",\n            \"code\": \"rr2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2204\": {\n            \"name\": \"2204\",\n            \"code\": \"rr2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2205\": {\n            \"name\": \"2205\",\n            \"code\": \"rr2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2206\": {\n            \"name\": \"2206\",\n            \"code\": \"rr2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2207\": {\n            \"name\": \"2207\",\n            \"code\": \"rr2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2208\": {\n            \"name\": \"2208\",\n            \"code\": \"rr2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"rr2209\": {\n            \"name\": \"2209\",\n            \"code\": \"rr2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"rr\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2110\": {\n            \"name\": \"PVC2110\",\n            \"code\": \"v2110\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2111\": {\n            \"name\": \"PVC2111\",\n            \"code\": \"v2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2112\": {\n            \"name\": \"PVC2112\",\n            \"code\": \"v2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2201\": {\n            \"name\": \"PVC2201\",\n            \"code\": \"v2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2202\": {\n            \"name\": \"PVC2202\",\n            \"code\": \"v2202\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2203\": {\n            \"name\": \"PVC2203\",\n            \"code\": \"v2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2204\": {\n            \"name\": \"PVC2204\",\n            \"code\": \"v2204\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2205\": {\n            \"name\": \"PVC2205\",\n            \"code\": \"v2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2206\": {\n            \"name\": \"PVC2206\",\n            \"code\": \"v2206\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2207\": {\n            \"name\": \"PVC2207\",\n            \"code\": \"v2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2208\": {\n            \"name\": \"PVC2208\",\n            \"code\": \"v2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"v2209\": {\n            \"name\": \"PVC2209\",\n            \"code\": \"v2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"v\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2111\": {\n            \"name\": \"2111\",\n            \"code\": \"y2111\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2112\": {\n            \"name\": \"2112\",\n            \"code\": \"y2112\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2201\": {\n            \"name\": \"2201\",\n            \"code\": \"y2201\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2203\": {\n            \"name\": \"2203\",\n            \"code\": \"y2203\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2205\": {\n            \"name\": \"2205\",\n            \"code\": \"y2205\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2207\": {\n            \"name\": \"2207\",\n            \"code\": \"y2207\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2208\": {\n            \"name\": \"2208\",\n            \"code\": \"y2208\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        },\n        \"y2209\": {\n            \"name\": \"2209\",\n            \"code\": \"y2209\",\n            \"exchg\": \"DCE\",\n            \"product\": \"y\",\n            \"maxlimitqty\": 1000,\n            \"maxmarketqty\": 1000\n        }\n    },\n    \"INE\": {\n        \"bc2110\": {\n            \"name\": \"ͭ2110\",\n            \"code\": \"bc2110\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2111\": {\n            \"name\": \"ͭ2111\",\n            \"code\": \"bc2111\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2112\": {\n            \"name\": \"ͭ2112\",\n            \"code\": \"bc2112\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2201\": {\n            \"name\": \"ͭ2201\",\n            \"code\": \"bc2201\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2202\": {\n            \"name\": \"ͭ2202\",\n            \"code\": \"bc2202\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2203\": {\n            \"name\": \"ͭ2203\",\n            \"code\": \"bc2203\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2204\": {\n            \"name\": \"ͭ2204\",\n            \"code\": \"bc2204\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2205\": {\n            \"name\": \"ͭ2205\",\n            \"code\": \"bc2205\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2206\": {\n            \"name\": \"ͭ2206\",\n            \"code\": \"bc2206\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2207\": {\n            \"name\": \"ͭ2207\",\n            \"code\": \"bc2207\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2208\": {\n            \"name\": \"ͭ2208\",\n            \"code\": \"bc2208\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bc2209\": {\n            \"name\": \"ͭ2209\",\n            \"code\": \"bc2209\",\n            \"exchg\": \"INE\",\n            \"product\": \"bc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2111\": {\n            \"name\": \"2111\",\n            \"code\": \"lu2111\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2112\": {\n            \"name\": \"2112\",\n            \"code\": \"lu2112\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2201\": {\n            \"name\": \"2201\",\n            \"code\": \"lu2201\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2202\": {\n            \"name\": \"2202\",\n            \"code\": \"lu2202\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2203\": {\n            \"name\": \"2203\",\n            \"code\": \"lu2203\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2204\": {\n            \"name\": \"2204\",\n            \"code\": \"lu2204\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2205\": {\n            \"name\": \"2205\",\n            \"code\": \"lu2205\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2206\": {\n            \"name\": \"2206\",\n            \"code\": \"lu2206\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2207\": {\n            \"name\": \"2207\",\n            \"code\": \"lu2207\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2208\": {\n            \"name\": \"2208\",\n            \"code\": \"lu2208\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2209\": {\n            \"name\": \"2209\",\n            \"code\": \"lu2209\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"lu2210\": {\n            \"name\": \"2210\",\n            \"code\": \"lu2210\",\n            \"exchg\": \"INE\",\n            \"product\": \"lu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2110\": {\n            \"name\": \"202110\",\n            \"code\": \"nr2110\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2111\": {\n            \"name\": \"202111\",\n            \"code\": \"nr2111\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2112\": {\n            \"name\": \"202112\",\n            \"code\": \"nr2112\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2201\": {\n            \"name\": \"202201\",\n            \"code\": \"nr2201\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2202\": {\n            \"name\": \"202202\",\n            \"code\": \"nr2202\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2203\": {\n            \"name\": \"202203\",\n            \"code\": \"nr2203\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2204\": {\n            \"name\": \"202204\",\n            \"code\": \"nr2204\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2205\": {\n            \"name\": \"202205\",\n            \"code\": \"nr2205\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2206\": {\n            \"name\": \"202206\",\n            \"code\": \"nr2206\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2207\": {\n            \"name\": \"202207\",\n            \"code\": \"nr2207\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2208\": {\n            \"name\": \"202208\",\n            \"code\": \"nr2208\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"nr2209\": {\n            \"name\": \"202209\",\n            \"code\": \"nr2209\",\n            \"exchg\": \"INE\",\n            \"product\": \"nr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2111\": {\n            \"name\": \"ԭ2111\",\n            \"code\": \"sc2111\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2112\": {\n            \"name\": \"ԭ2112\",\n            \"code\": \"sc2112\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2201\": {\n            \"name\": \"ԭ2201\",\n            \"code\": \"sc2201\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2202\": {\n            \"name\": \"ԭ2202\",\n            \"code\": \"sc2202\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2203\": {\n            \"name\": \"ԭ2203\",\n            \"code\": \"sc2203\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2204\": {\n            \"name\": \"ԭ2204\",\n            \"code\": \"sc2204\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2205\": {\n            \"name\": \"ԭ2205\",\n            \"code\": \"sc2205\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2206\": {\n            \"name\": \"ԭ2206\",\n            \"code\": \"sc2206\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2207\": {\n            \"name\": \"ԭ2207\",\n            \"code\": \"sc2207\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2208\": {\n            \"name\": \"ԭ2208\",\n            \"code\": \"sc2208\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2209\": {\n            \"name\": \"ԭ2209\",\n            \"code\": \"sc2209\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2210\": {\n            \"name\": \"ԭ2210\",\n            \"code\": \"sc2210\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2212\": {\n            \"name\": \"ԭ2212\",\n            \"code\": \"sc2212\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2303\": {\n            \"name\": \"ԭ2303\",\n            \"code\": \"sc2303\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2306\": {\n            \"name\": \"ԭ2306\",\n            \"code\": \"sc2306\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2309\": {\n            \"name\": \"ԭ2309\",\n            \"code\": \"sc2309\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2312\": {\n            \"name\": \"ԭ2312\",\n            \"code\": \"sc2312\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2403\": {\n            \"name\": \"ԭ2403\",\n            \"code\": \"sc2403\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2406\": {\n            \"name\": \"ԭ2406\",\n            \"code\": \"sc2406\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sc2409\": {\n            \"name\": \"ԭ2409\",\n            \"code\": \"sc2409\",\n            \"exchg\": \"INE\",\n            \"product\": \"sc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        }\n    },\n    \"SHFE\": {\n        \"ag2110\": {\n            \"name\": \"2110\",\n            \"code\": \"ag2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2111\": {\n            \"name\": \"2111\",\n            \"code\": \"ag2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2112\": {\n            \"name\": \"2112\",\n            \"code\": \"ag2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2201\": {\n            \"name\": \"2201\",\n            \"code\": \"ag2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2202\": {\n            \"name\": \"2202\",\n            \"code\": \"ag2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2203\": {\n            \"name\": \"2203\",\n            \"code\": \"ag2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2204\": {\n            \"name\": \"2204\",\n            \"code\": \"ag2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2205\": {\n            \"name\": \"2205\",\n            \"code\": \"ag2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2206\": {\n            \"name\": \"2206\",\n            \"code\": \"ag2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2207\": {\n            \"name\": \"2207\",\n            \"code\": \"ag2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2208\": {\n            \"name\": \"2208\",\n            \"code\": \"ag2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ag2209\": {\n            \"name\": \"2209\",\n            \"code\": \"ag2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ag\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2110\": {\n            \"name\": \"2110\",\n            \"code\": \"al2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2111\": {\n            \"name\": \"2111\",\n            \"code\": \"al2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2112\": {\n            \"name\": \"2112\",\n            \"code\": \"al2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2201\": {\n            \"name\": \"2201\",\n            \"code\": \"al2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2202\": {\n            \"name\": \"2202\",\n            \"code\": \"al2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2203\": {\n            \"name\": \"2203\",\n            \"code\": \"al2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2204\": {\n            \"name\": \"2204\",\n            \"code\": \"al2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2205\": {\n            \"name\": \"2205\",\n            \"code\": \"al2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2206\": {\n            \"name\": \"2206\",\n            \"code\": \"al2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2207\": {\n            \"name\": \"2207\",\n            \"code\": \"al2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2208\": {\n            \"name\": \"2208\",\n            \"code\": \"al2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"al2209\": {\n            \"name\": \"2209\",\n            \"code\": \"al2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"al\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2110\": {\n            \"name\": \"2110\",\n            \"code\": \"au2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2111\": {\n            \"name\": \"2111\",\n            \"code\": \"au2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2112\": {\n            \"name\": \"2112\",\n            \"code\": \"au2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2202\": {\n            \"name\": \"2202\",\n            \"code\": \"au2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2204\": {\n            \"name\": \"2204\",\n            \"code\": \"au2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2206\": {\n            \"name\": \"2206\",\n            \"code\": \"au2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2208\": {\n            \"name\": \"2208\",\n            \"code\": \"au2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"au2210\": {\n            \"name\": \"2210\",\n            \"code\": \"au2210\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"au\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2110\": {\n            \"name\": \"2110\",\n            \"code\": \"bu2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2111\": {\n            \"name\": \"2111\",\n            \"code\": \"bu2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2112\": {\n            \"name\": \"2112\",\n            \"code\": \"bu2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2201\": {\n            \"name\": \"2201\",\n            \"code\": \"bu2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2202\": {\n            \"name\": \"2202\",\n            \"code\": \"bu2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2203\": {\n            \"name\": \"2203\",\n            \"code\": \"bu2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2206\": {\n            \"name\": \"2206\",\n            \"code\": \"bu2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2209\": {\n            \"name\": \"2209\",\n            \"code\": \"bu2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2212\": {\n            \"name\": \"2212\",\n            \"code\": \"bu2212\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2303\": {\n            \"name\": \"2303\",\n            \"code\": \"bu2303\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2306\": {\n            \"name\": \"2306\",\n            \"code\": \"bu2306\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"bu2309\": {\n            \"name\": \"2309\",\n            \"code\": \"bu2309\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"bu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2110\": {\n            \"name\": \"ͭ2110\",\n            \"code\": \"cu2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2111\": {\n            \"name\": \"ͭ2111\",\n            \"code\": \"cu2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2112\": {\n            \"name\": \"ͭ2112\",\n            \"code\": \"cu2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2201\": {\n            \"name\": \"ͭ2201\",\n            \"code\": \"cu2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2202\": {\n            \"name\": \"ͭ2202\",\n            \"code\": \"cu2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2203\": {\n            \"name\": \"ͭ2203\",\n            \"code\": \"cu2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2204\": {\n            \"name\": \"ͭ2204\",\n            \"code\": \"cu2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2205\": {\n            \"name\": \"ͭ2205\",\n            \"code\": \"cu2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2206\": {\n            \"name\": \"ͭ2206\",\n            \"code\": \"cu2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2207\": {\n            \"name\": \"ͭ2207\",\n            \"code\": \"cu2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2208\": {\n            \"name\": \"ͭ2208\",\n            \"code\": \"cu2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"cu2209\": {\n            \"name\": \"ͭ2209\",\n            \"code\": \"cu2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"cu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2111\": {\n            \"name\": \"ȼ2111\",\n            \"code\": \"fu2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2112\": {\n            \"name\": \"ȼ2112\",\n            \"code\": \"fu2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2201\": {\n            \"name\": \"ȼ2201\",\n            \"code\": \"fu2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2202\": {\n            \"name\": \"ȼ2202\",\n            \"code\": \"fu2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2203\": {\n            \"name\": \"ȼ2203\",\n            \"code\": \"fu2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2204\": {\n            \"name\": \"ȼ2204\",\n            \"code\": \"fu2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2205\": {\n            \"name\": \"ȼ2205\",\n            \"code\": \"fu2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2206\": {\n            \"name\": \"ȼ2206\",\n            \"code\": \"fu2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2207\": {\n            \"name\": \"ȼ2207\",\n            \"code\": \"fu2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2208\": {\n            \"name\": \"ȼ2208\",\n            \"code\": \"fu2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2209\": {\n            \"name\": \"ȼ2209\",\n            \"code\": \"fu2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"fu2210\": {\n            \"name\": \"ȼ2210\",\n            \"code\": \"fu2210\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"fu\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2110\": {\n            \"name\": \"Ⱦ2110\",\n            \"code\": \"hc2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2111\": {\n            \"name\": \"Ⱦ2111\",\n            \"code\": \"hc2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2112\": {\n            \"name\": \"Ⱦ2112\",\n            \"code\": \"hc2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2201\": {\n            \"name\": \"Ⱦ2201\",\n            \"code\": \"hc2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2202\": {\n            \"name\": \"Ⱦ2202\",\n            \"code\": \"hc2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2203\": {\n            \"name\": \"Ⱦ2203\",\n            \"code\": \"hc2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2204\": {\n            \"name\": \"Ⱦ2204\",\n            \"code\": \"hc2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2205\": {\n            \"name\": \"Ⱦ2205\",\n            \"code\": \"hc2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2206\": {\n            \"name\": \"Ⱦ2206\",\n            \"code\": \"hc2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2207\": {\n            \"name\": \"Ⱦ2207\",\n            \"code\": \"hc2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2208\": {\n            \"name\": \"Ⱦ2208\",\n            \"code\": \"hc2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"hc2209\": {\n            \"name\": \"Ⱦ2209\",\n            \"code\": \"hc2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"hc\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2110\": {\n            \"name\": \"2110\",\n            \"code\": \"ni2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2111\": {\n            \"name\": \"2111\",\n            \"code\": \"ni2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2112\": {\n            \"name\": \"2112\",\n            \"code\": \"ni2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2201\": {\n            \"name\": \"2201\",\n            \"code\": \"ni2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2202\": {\n            \"name\": \"2202\",\n            \"code\": \"ni2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2203\": {\n            \"name\": \"2203\",\n            \"code\": \"ni2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2204\": {\n            \"name\": \"2204\",\n            \"code\": \"ni2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2205\": {\n            \"name\": \"2205\",\n            \"code\": \"ni2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2206\": {\n            \"name\": \"2206\",\n            \"code\": \"ni2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2207\": {\n            \"name\": \"2207\",\n            \"code\": \"ni2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2208\": {\n            \"name\": \"2208\",\n            \"code\": \"ni2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ni2209\": {\n            \"name\": \"2209\",\n            \"code\": \"ni2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ni\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2110\": {\n            \"name\": \"Ǧ2110\",\n            \"code\": \"pb2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2111\": {\n            \"name\": \"Ǧ2111\",\n            \"code\": \"pb2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2112\": {\n            \"name\": \"Ǧ2112\",\n            \"code\": \"pb2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2201\": {\n            \"name\": \"Ǧ2201\",\n            \"code\": \"pb2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2202\": {\n            \"name\": \"Ǧ2202\",\n            \"code\": \"pb2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2203\": {\n            \"name\": \"Ǧ2203\",\n            \"code\": \"pb2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2204\": {\n            \"name\": \"Ǧ2204\",\n            \"code\": \"pb2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2205\": {\n            \"name\": \"Ǧ2205\",\n            \"code\": \"pb2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2206\": {\n            \"name\": \"Ǧ2206\",\n            \"code\": \"pb2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2207\": {\n            \"name\": \"Ǧ2207\",\n            \"code\": \"pb2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2208\": {\n            \"name\": \"Ǧ2208\",\n            \"code\": \"pb2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"pb2209\": {\n            \"name\": \"Ǧ2209\",\n            \"code\": \"pb2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"pb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2110\": {\n            \"name\": \"2110\",\n            \"code\": \"rb2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2111\": {\n            \"name\": \"2111\",\n            \"code\": \"rb2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2112\": {\n            \"name\": \"2112\",\n            \"code\": \"rb2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2201\": {\n            \"name\": \"2201\",\n            \"code\": \"rb2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2202\": {\n            \"name\": \"2202\",\n            \"code\": \"rb2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2203\": {\n            \"name\": \"2203\",\n            \"code\": \"rb2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2204\": {\n            \"name\": \"2204\",\n            \"code\": \"rb2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2205\": {\n            \"name\": \"2205\",\n            \"code\": \"rb2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2206\": {\n            \"name\": \"2206\",\n            \"code\": \"rb2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2207\": {\n            \"name\": \"2207\",\n            \"code\": \"rb2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2208\": {\n            \"name\": \"2208\",\n            \"code\": \"rb2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"rb2209\": {\n            \"name\": \"2209\",\n            \"code\": \"rb2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"rb\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2110\": {\n            \"name\": \"2110\",\n            \"code\": \"ru2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2111\": {\n            \"name\": \"2111\",\n            \"code\": \"ru2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2201\": {\n            \"name\": \"2201\",\n            \"code\": \"ru2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2203\": {\n            \"name\": \"2203\",\n            \"code\": \"ru2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2204\": {\n            \"name\": \"2204\",\n            \"code\": \"ru2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2205\": {\n            \"name\": \"2205\",\n            \"code\": \"ru2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2206\": {\n            \"name\": \"2206\",\n            \"code\": \"ru2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2207\": {\n            \"name\": \"2207\",\n            \"code\": \"ru2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2208\": {\n            \"name\": \"2208\",\n            \"code\": \"ru2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ru2209\": {\n            \"name\": \"2209\",\n            \"code\": \"ru2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ru\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2110\": {\n            \"name\": \"2110\",\n            \"code\": \"sn2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2111\": {\n            \"name\": \"2111\",\n            \"code\": \"sn2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2112\": {\n            \"name\": \"2112\",\n            \"code\": \"sn2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2201\": {\n            \"name\": \"2201\",\n            \"code\": \"sn2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2202\": {\n            \"name\": \"2202\",\n            \"code\": \"sn2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2203\": {\n            \"name\": \"2203\",\n            \"code\": \"sn2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2204\": {\n            \"name\": \"2204\",\n            \"code\": \"sn2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2205\": {\n            \"name\": \"2205\",\n            \"code\": \"sn2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2206\": {\n            \"name\": \"2206\",\n            \"code\": \"sn2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2207\": {\n            \"name\": \"2207\",\n            \"code\": \"sn2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2208\": {\n            \"name\": \"2208\",\n            \"code\": \"sn2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sn2209\": {\n            \"name\": \"2209\",\n            \"code\": \"sn2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2110\": {\n            \"name\": \"ֽ2110\",\n            \"code\": \"sp2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2111\": {\n            \"name\": \"ֽ2111\",\n            \"code\": \"sp2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2112\": {\n            \"name\": \"ֽ2112\",\n            \"code\": \"sp2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2201\": {\n            \"name\": \"ֽ2201\",\n            \"code\": \"sp2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2202\": {\n            \"name\": \"ֽ2202\",\n            \"code\": \"sp2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2203\": {\n            \"name\": \"ֽ2203\",\n            \"code\": \"sp2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2204\": {\n            \"name\": \"ֽ2204\",\n            \"code\": \"sp2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2205\": {\n            \"name\": \"ֽ2205\",\n            \"code\": \"sp2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2206\": {\n            \"name\": \"ֽ2206\",\n            \"code\": \"sp2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2207\": {\n            \"name\": \"ֽ2207\",\n            \"code\": \"sp2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2208\": {\n            \"name\": \"ֽ2208\",\n            \"code\": \"sp2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"sp2209\": {\n            \"name\": \"ֽ2209\",\n            \"code\": \"sp2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"sp\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2110\": {\n            \"name\": \"2110\",\n            \"code\": \"ss2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2111\": {\n            \"name\": \"2111\",\n            \"code\": \"ss2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2112\": {\n            \"name\": \"2112\",\n            \"code\": \"ss2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2201\": {\n            \"name\": \"2201\",\n            \"code\": \"ss2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2202\": {\n            \"name\": \"2202\",\n            \"code\": \"ss2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2203\": {\n            \"name\": \"2203\",\n            \"code\": \"ss2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2204\": {\n            \"name\": \"2204\",\n            \"code\": \"ss2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2205\": {\n            \"name\": \"2205\",\n            \"code\": \"ss2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2206\": {\n            \"name\": \"2206\",\n            \"code\": \"ss2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2207\": {\n            \"name\": \"2207\",\n            \"code\": \"ss2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2208\": {\n            \"name\": \"2208\",\n            \"code\": \"ss2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"ss2209\": {\n            \"name\": \"2209\",\n            \"code\": \"ss2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"ss\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2110\": {\n            \"name\": \"߲2110\",\n            \"code\": \"wr2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2111\": {\n            \"name\": \"߲2111\",\n            \"code\": \"wr2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2112\": {\n            \"name\": \"߲2112\",\n            \"code\": \"wr2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2201\": {\n            \"name\": \"߲2201\",\n            \"code\": \"wr2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2202\": {\n            \"name\": \"߲2202\",\n            \"code\": \"wr2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2203\": {\n            \"name\": \"߲2203\",\n            \"code\": \"wr2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2204\": {\n            \"name\": \"߲2204\",\n            \"code\": \"wr2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2205\": {\n            \"name\": \"߲2205\",\n            \"code\": \"wr2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2206\": {\n            \"name\": \"߲2206\",\n            \"code\": \"wr2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2207\": {\n            \"name\": \"߲2207\",\n            \"code\": \"wr2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2208\": {\n            \"name\": \"߲2208\",\n            \"code\": \"wr2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"wr2209\": {\n            \"name\": \"߲2209\",\n            \"code\": \"wr2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"wr\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2110\": {\n            \"name\": \"п2110\",\n            \"code\": \"zn2110\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2111\": {\n            \"name\": \"п2111\",\n            \"code\": \"zn2111\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2112\": {\n            \"name\": \"п2112\",\n            \"code\": \"zn2112\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2201\": {\n            \"name\": \"п2201\",\n            \"code\": \"zn2201\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2202\": {\n            \"name\": \"п2202\",\n            \"code\": \"zn2202\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2203\": {\n            \"name\": \"п2203\",\n            \"code\": \"zn2203\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2204\": {\n            \"name\": \"п2204\",\n            \"code\": \"zn2204\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2205\": {\n            \"name\": \"п2205\",\n            \"code\": \"zn2205\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2206\": {\n            \"name\": \"п2206\",\n            \"code\": \"zn2206\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2207\": {\n            \"name\": \"п2207\",\n            \"code\": \"zn2207\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2208\": {\n            \"name\": \"п2208\",\n            \"code\": \"zn2208\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        },\n        \"zn2209\": {\n            \"name\": \"п2209\",\n            \"code\": \"zn2209\",\n            \"exchg\": \"SHFE\",\n            \"product\": \"zn\",\n            \"maxlimitqty\": 500,\n            \"maxmarketqty\": 30\n        }\n    }\n}"
  },
  {
    "path": "config/01commom/fees.json",
    "content": "{\n    \"CFFEX.T\":\n    {\n        \"open\":3.0,\n        \"close\":3.0,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n    \"CFFEX.TF\":\n    {\n        \"open\":3.0,\n        \"close\":3.0,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n    \"CFFEX.IF\":\n    {\n        \"open\":0.000023,\n        \"close\":0.000023,\n        \"closetoday\":0.00023,\n        \"byvolume\":false\n    },\n\t\"DCE.a\":\n    {\n        \"open\":2.01,\n        \"close\":2.01,\n        \"closetoday\":2.01,\n        \"byvolume\":true\n    },\n\t\"DCE.b\":\n    {\n        \"open\":1.01,\n        \"close\":1.01,\n        \"closetoday\":1.01,\n        \"byvolume\":true\n    },\n\t\"DCE.c\":\n    {\n        \"open\":1.21,\n        \"close\":1.21,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"DCE.cs\":\n    {\n        \"open\":1.51,\n        \"close\":1.51,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"DCE.i\":\n    {\n        \"open\":0.00006,\n        \"close\":0.00006,\n        \"closetoday\":0.00003,\n        \"byvolume\":false\n    },\n\t\"DCE.j\":\n    {\n        \"open\":0.00006,\n        \"close\":0.00006,\n        \"closetoday\":0.00003,\n        \"byvolume\":false\n    },\n\t\"DCE.jd\":\n    {\n        \"open\":0.00015,\n        \"close\":0.00015,\n        \"closetoday\":0.00015,\n        \"byvolume\":false\n    },\n\t\"DCE.l\":\n    {\n        \"open\":2.0,\n        \"close\":2.0,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"DCE.y\":\n    {\n        \"open\":2.51,\n        \"close\":2.51,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"DCE.m\":\n    {\n        \"open\":1.51,\n        \"close\":1.51,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"DCE.p\":\n    {\n        \"open\":2.5,\n        \"close\":2.5,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"DCE.pp\":\n    {\n        \"open\":0.00005,\n        \"close\":0.00005,\n        \"closetoday\":0.000025,\n        \"byvolume\":false\n    },\n\t\"INE.nr\":\n    {\n        \"open\":0.000021,\n        \"close\":0.000021,\n        \"closetoday\":0,\n        \"byvolume\":false\n    },\n\t\"SHFE.ag\":\n    {\n        \"open\":0.00005,\n        \"close\":0.00005,\n        \"closetoday\":0.00005,\n        \"byvolume\":false\n    },\n\t\"SHFE.au\":\n    {\n        \"open\":10.0,\n        \"close\":10.0,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"SHFE.bu\":\n    {\n        \"open\":0.0001,\n        \"close\":0.0001,\n        \"closetoday\":0.0001,\n        \"byvolume\":false\n    },\n\t\"SHFE.cu\":\n    {\n        \"open\":0.0001,\n        \"close\":0.0001,\n        \"closetoday\":0.0001,\n        \"byvolume\":false\n    },\n\t\"SHFE.hc\":\n    {\n        \"open\":0.00005,\n        \"close\":0.00005,\n        \"closetoday\":0.0,\n        \"byvolume\":false\n    },\n\t\"SHFE.ni\":\n    {\n        \"open\":6.0,\n        \"close\":6.0,\n        \"closetoday\":6.0,\n        \"byvolume\":true\n    },\n\t\"SHFE.rb\":\n    {\n        \"open\":0.0001,\n        \"close\":0.0001,\n        \"closetoday\":0.0001,\n        \"byvolume\":false\n    },\n\t\"SHFE.ru\":\n    {\n        \"open\":3.01,\n        \"close\":3.01,\n        \"closetoday\":0,\n        \"byvolume\":true\n    },\n\t\"SHFE.sp\":\n    {\n        \"open\":0.000051,\n        \"close\":0.000051,\n        \"closetoday\":0,\n        \"byvolume\":false\n    },\n\t\"CZCE.AP\":\n    {\n        \"open\":0.5,\n        \"close\":0.5,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"CZCE.CF\":\n    {\n        \"open\":4.31,\n        \"close\":4.31,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"CZCE.MA\":\n    {\n        \"open\":1.4,\n        \"close\":1.4,\n        \"closetoday\":0,\n        \"byvolume\":true\n    },\n\t\"CZCE.TA\":\n    {\n        \"open\":3.01,\n        \"close\":3.01,\n        \"closetoday\":0,\n        \"byvolume\":true\n    },\n\t\"CZCE.SR\":\n    {\n        \"open\":3.0,\n        \"close\":3.0,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"CZCE.ZC\":\n    {\n        \"open\":4.0,\n        \"close\":4.0,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    },\n\t\"CZCE.RM\":\n    {\n        \"open\":1.51,\n        \"close\":1.51,\n        \"closetoday\":0.0,\n        \"byvolume\":true\n    }\n}"
  },
  {
    "path": "config/01commom/holidays.json",
    "content": "{\n    \"CHINA\" : [\n        20180101,20180215,20181005,20181231,\n        20190101,20190913,20191001,20191002,20191003,20191004,20191007,\n        20200101,20200124,20200127,20200128,20200129,20200130,20200131,20200406,20200501,20200504,20200505,20200625,20200626,20201001,20201002,20201005,20201006,20201007,20201008,\n        20210101,20210211,20210212,20210215,20210216,20210217,20210405,20210503,20210504,20210505,20210614,20210920,20210921,20211001,20211004,20211005,20211006,20211007]\n}"
  },
  {
    "path": "config/01commom/hots.json",
    "content": "{\n    \"CFFEX\": {\n        \"IC\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"IC1601\",\n                \"newClose\": 6881.2001953125,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160115,\n                \"from\": \"IC1601\",\n                \"to\": \"IC1602\",\n                \"newClose\": 5570.0,\n                \"oldClose\": 5942.7998046875\n            },\n            {\n                \"date\": 20160218,\n                \"from\": \"IC1602\",\n                \"to\": \"IC1603\",\n                \"newClose\": 5746.0,\n                \"oldClose\": 5950.2001953125\n            },\n            {\n                \"date\": 20160318,\n                \"from\": \"IC1603\",\n                \"to\": \"IC1604\",\n                \"newClose\": 5799.60009765625,\n                \"oldClose\": 5944.60009765625\n            },\n            {\n                \"date\": 20160415,\n                \"from\": \"IC1604\",\n                \"to\": \"IC1605\",\n                \"newClose\": 6214.60009765625,\n                \"oldClose\": 6376.60009765625\n            },\n            {\n                \"date\": 20160518,\n                \"from\": \"IC1605\",\n                \"to\": \"IC1606\",\n                \"newClose\": 5460.2001953125,\n                \"oldClose\": 5632.7998046875\n            },\n            {\n                \"date\": 20160617,\n                \"from\": \"IC1606\",\n                \"to\": \"IC1607\",\n                \"newClose\": 5810.60009765625,\n                \"oldClose\": 5962.39990234375\n            },\n            {\n                \"date\": 20160715,\n                \"from\": \"IC1607\",\n                \"to\": \"IC1608\",\n                \"newClose\": 6319.0,\n                \"oldClose\": 6439.7998046875\n            },\n            {\n                \"date\": 20160817,\n                \"from\": \"IC1608\",\n                \"to\": \"IC1609\",\n                \"newClose\": 6379.2001953125,\n                \"oldClose\": 6470.7998046875\n            },\n            {\n                \"date\": 20160914,\n                \"from\": \"IC1609\",\n                \"to\": \"IC1610\",\n                \"newClose\": 6157.39990234375,\n                \"oldClose\": 6270.0\n            },\n            {\n                \"date\": 20161020,\n                \"from\": \"IC1610\",\n                \"to\": \"IC1611\",\n                \"newClose\": 6418.0,\n                \"oldClose\": 6499.0\n            },\n            {\n                \"date\": 20161115,\n                \"from\": \"IC1611\",\n                \"to\": \"IC1612\",\n                \"newClose\": 6519.2001953125,\n                \"oldClose\": 6601.7998046875\n            },\n            {\n                \"date\": 20161215,\n                \"from\": \"IC1612\",\n                \"to\": \"IC1701\",\n                \"newClose\": 6150.2001953125,\n                \"oldClose\": 6262.7998046875\n            },\n            {\n                \"date\": 20170119,\n                \"from\": \"IC1701\",\n                \"to\": \"IC1702\",\n                \"newClose\": 5995.0,\n                \"oldClose\": 6047.0\n            },\n            {\n                \"date\": 20170214,\n                \"from\": \"IC1702\",\n                \"to\": \"IC1703\",\n                \"newClose\": 6253.0,\n                \"oldClose\": 6332.0\n            },\n            {\n                \"date\": 20170316,\n                \"from\": \"IC1703\",\n                \"to\": \"IC1704\",\n                \"newClose\": 6469.39990234375,\n                \"oldClose\": 6539.0\n            },\n            {\n                \"date\": 20170420,\n                \"from\": \"IC1704\",\n                \"to\": \"IC1705\",\n                \"newClose\": 6312.2001953125,\n                \"oldClose\": 6347.7998046875\n            },\n            {\n                \"date\": 20170516,\n                \"from\": \"IC1705\",\n                \"to\": \"IC1706\",\n                \"newClose\": 5973.60009765625,\n                \"oldClose\": 6009.7998046875\n            },\n            {\n                \"date\": 20170615,\n                \"from\": \"IC1706\",\n                \"to\": \"IC1707\",\n                \"newClose\": 5964.2001953125,\n                \"oldClose\": 6008.39990234375\n            },\n            {\n                \"date\": 20170721,\n                \"from\": \"IC1707\",\n                \"to\": \"IC1708\",\n                \"newClose\": 6041.2001953125,\n                \"oldClose\": 6123.0\n            },\n            {\n                \"date\": 20170816,\n                \"from\": \"IC1708\",\n                \"to\": \"IC1709\",\n                \"newClose\": 6259.7998046875,\n                \"oldClose\": 6309.60009765625\n            },\n            {\n                \"date\": 20170915,\n                \"from\": \"IC1709\",\n                \"to\": \"IC1710\",\n                \"newClose\": 6588.0,\n                \"oldClose\": 6629.2001953125\n            },\n            {\n                \"date\": 20171020,\n                \"from\": \"IC1710\",\n                \"to\": \"IC1711\",\n                \"newClose\": 6530.0,\n                \"oldClose\": 6548.0\n            },\n            {\n                \"date\": 20171115,\n                \"from\": \"IC1711\",\n                \"to\": \"IC1712\",\n                \"newClose\": 6481.7998046875,\n                \"oldClose\": 6527.0\n            },\n            {\n                \"date\": 20171214,\n                \"from\": \"IC1712\",\n                \"to\": \"IC1801\",\n                \"newClose\": 6251.7998046875,\n                \"oldClose\": 6284.0\n            },\n            {\n                \"date\": 20180119,\n                \"from\": \"IC1801\",\n                \"to\": \"IC1802\",\n                \"newClose\": 6232.0,\n                \"oldClose\": 6281.0\n            },\n            {\n                \"date\": 20180209,\n                \"from\": \"IC1802\",\n                \"to\": \"IC1803\",\n                \"newClose\": 5486.2001953125,\n                \"oldClose\": 5504.0\n            },\n            {\n                \"date\": 20180316,\n                \"from\": \"IC1803\",\n                \"to\": \"IC1804\",\n                \"newClose\": 6084.60009765625,\n                \"oldClose\": 6174.2001953125\n            },\n            {\n                \"date\": 20180420,\n                \"from\": \"IC1804\",\n                \"to\": \"IC1805\",\n                \"newClose\": 5837.0,\n                \"oldClose\": 5908.0\n            },\n            {\n                \"date\": 20180517,\n                \"from\": \"IC1805\",\n                \"to\": \"IC1806\",\n                \"newClose\": 5925.0,\n                \"oldClose\": 5975.0\n            },\n            {\n                \"date\": 20180615,\n                \"from\": \"IC1806\",\n                \"to\": \"IC1807\",\n                \"newClose\": 5436.60009765625,\n                \"oldClose\": 5482.60009765625\n            },\n            {\n                \"date\": 20180719,\n                \"from\": \"IC1807\",\n                \"to\": \"IC1808\",\n                \"newClose\": 5067.60009765625,\n                \"oldClose\": 5119.39990234375\n            },\n            {\n                \"date\": 20180816,\n                \"from\": \"IC1808\",\n                \"to\": \"IC1809\",\n                \"newClose\": 4820.39990234375,\n                \"oldClose\": 4871.0\n            },\n            {\n                \"date\": 20180921,\n                \"from\": \"IC1809\",\n                \"to\": \"IC1810\",\n                \"newClose\": 4827.7998046875,\n                \"oldClose\": 4788.0\n            },\n            {\n                \"date\": 20181019,\n                \"from\": \"IC1810\",\n                \"to\": \"IC1811\",\n                \"newClose\": 4080.39990234375,\n                \"oldClose\": 4091.39990234375\n            },\n            {\n                \"date\": 20181115,\n                \"from\": \"IC1811\",\n                \"to\": \"IC1812\",\n                \"newClose\": 4619.0,\n                \"oldClose\": 4620.0\n            },\n            {\n                \"date\": 20181220,\n                \"from\": \"IC1812\",\n                \"to\": \"IC1901\",\n                \"newClose\": 4232.60009765625,\n                \"oldClose\": 4264.0\n            },\n            {\n                \"date\": 20190118,\n                \"from\": \"IC1901\",\n                \"to\": \"IC1902\",\n                \"newClose\": 4341.0,\n                \"oldClose\": 4330.0\n            },\n            {\n                \"date\": 20190214,\n                \"from\": \"IC1902\",\n                \"to\": \"IC1903\",\n                \"newClose\": 4537.0,\n                \"oldClose\": 4533.7998046875\n            },\n            {\n                \"date\": 20190315,\n                \"from\": \"IC1903\",\n                \"to\": \"IC1904\",\n                \"newClose\": 5330.60009765625,\n                \"oldClose\": 5351.2001953125\n            },\n            {\n                \"date\": 20190419,\n                \"from\": \"IC1904\",\n                \"to\": \"IC1905\",\n                \"newClose\": 5775.7998046875,\n                \"oldClose\": 5781.2001953125\n            },\n            {\n                \"date\": 20190516,\n                \"from\": \"IC1905\",\n                \"to\": \"IC1906\",\n                \"newClose\": 4993.0,\n                \"oldClose\": 5091.39990234375\n            },\n            {\n                \"date\": 20190620,\n                \"from\": \"IC1906\",\n                \"to\": \"IC1907\",\n                \"newClose\": 4901.7998046875,\n                \"oldClose\": 4954.2001953125\n            },\n            {\n                \"date\": 20190719,\n                \"from\": \"IC1907\",\n                \"to\": \"IC1908\",\n                \"newClose\": 4823.39990234375,\n                \"oldClose\": 4881.39990234375\n            },\n            {\n                \"date\": 20190815,\n                \"from\": \"IC1908\",\n                \"to\": \"IC1909\",\n                \"newClose\": 4652.60009765625,\n                \"oldClose\": 4701.7998046875\n            },\n            {\n                \"date\": 20190919,\n                \"from\": \"IC1909\",\n                \"to\": \"IC1910\",\n                \"newClose\": 5150.60009765625,\n                \"oldClose\": 5185.60009765625\n            },\n            {\n                \"date\": 20191018,\n                \"from\": \"IC1910\",\n                \"to\": \"IC1911\",\n                \"newClose\": 4893.2001953125,\n                \"oldClose\": 4976.2001953125\n            },\n            {\n                \"date\": 20191114,\n                \"from\": \"IC1911\",\n                \"to\": \"IC1912\",\n                \"newClose\": 4839.2001953125,\n                \"oldClose\": 4903.0\n            },\n            {\n                \"date\": 20191219,\n                \"from\": \"IC1912\",\n                \"to\": \"IC2001\",\n                \"newClose\": 5251.0,\n                \"oldClose\": 5250.60009765625\n            },\n            {\n                \"date\": 20200117,\n                \"from\": \"IC2001\",\n                \"to\": \"IC2002\",\n                \"newClose\": 5501.2001953125,\n                \"oldClose\": 5515.0\n            },\n            {\n                \"date\": 20200220,\n                \"from\": \"IC2002\",\n                \"to\": \"IC2003\",\n                \"newClose\": 5667.7998046875,\n                \"oldClose\": 5704.7998046875\n            },\n            {\n                \"date\": 20200319,\n                \"from\": \"IC2003\",\n                \"to\": \"IC2004\",\n                \"newClose\": 5099.60009765625,\n                \"oldClose\": 5147.39990234375\n            },\n            {\n                \"date\": 20200416,\n                \"from\": \"IC2004\",\n                \"to\": \"IC2005\",\n                \"newClose\": 5247.0,\n                \"oldClose\": 5308.39990234375\n            },\n            {\n                \"date\": 20200514,\n                \"from\": \"IC2005\",\n                \"to\": \"IC2006\",\n                \"newClose\": 5408.60009765625,\n                \"oldClose\": 5490.39990234375\n            },\n            {\n                \"date\": 20200618,\n                \"from\": \"IC2006\",\n                \"to\": \"IC2007\",\n                \"newClose\": 5659.60009765625,\n                \"oldClose\": 5743.2001953125\n            },\n            {\n                \"date\": 20200716,\n                \"from\": \"IC2007\",\n                \"to\": \"IC2008\",\n                \"newClose\": 6265.7998046875,\n                \"oldClose\": 6309.2001953125\n            },\n            {\n                \"date\": 20200820,\n                \"from\": \"IC2008\",\n                \"to\": \"IC2009\",\n                \"newClose\": 6495.7998046875,\n                \"oldClose\": 6587.2001953125\n            },\n            {\n                \"date\": 20200917,\n                \"from\": \"IC2009\",\n                \"to\": \"IC2010\",\n                \"newClose\": 6291.7998046875,\n                \"oldClose\": 6374.0\n            },\n            {\n                \"date\": 20201016,\n                \"from\": \"IC2010\",\n                \"to\": \"IC2011\",\n                \"newClose\": 6356.0,\n                \"oldClose\": 6419.60009765625\n            },\n            {\n                \"date\": 20201119,\n                \"from\": \"IC2011\",\n                \"to\": \"IC2012\",\n                \"newClose\": 6320.60009765625,\n                \"oldClose\": 6373.0\n            },\n            {\n                \"date\": 20201217,\n                \"from\": \"IC2012\",\n                \"to\": \"IC2101\",\n                \"newClose\": 6277.7998046875,\n                \"oldClose\": 6313.7998046875\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"IC2101\",\n                \"to\": \"IC2102\",\n                \"newClose\": 6351.0,\n                \"oldClose\": 6390.2001953125\n            },\n            {\n                \"date\": 20210218,\n                \"from\": \"IC2102\",\n                \"to\": \"IC2103\",\n                \"newClose\": 6505.0,\n                \"oldClose\": 6579.60009765625\n            },\n            {\n                \"date\": 20210319,\n                \"from\": \"IC2103\",\n                \"to\": \"IC2104\",\n                \"newClose\": 6169.0,\n                \"oldClose\": 6196.7998046875\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"IC2104\",\n                \"to\": \"IC2105\",\n                \"newClose\": 6325.39990234375,\n                \"oldClose\": 6332.60009765625\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"IC2105\",\n                \"to\": \"IC2106\",\n                \"newClose\": 6524.0,\n                \"oldClose\": 6556.39990234375\n            },\n            {\n                \"date\": 20210618,\n                \"from\": \"IC2106\",\n                \"to\": \"IC2107\",\n                \"newClose\": 6614.2001953125,\n                \"oldClose\": 6648.60009765625\n            },\n            {\n                \"date\": 20210715,\n                \"from\": \"IC2107\",\n                \"to\": \"IC2108\",\n                \"newClose\": 6873.7998046875,\n                \"oldClose\": 6920.0\n            },\n            {\n                \"date\": 20210819,\n                \"from\": \"IC2108\",\n                \"to\": \"IC2109\",\n                \"newClose\": 6885.0,\n                \"oldClose\": 6952.39990234375\n            },\n            {\n                \"date\": 20210916,\n                \"from\": \"IC2109\",\n                \"to\": \"IC2110\",\n                \"newClose\": 7363.39990234375,\n                \"oldClose\": 7442.39990234375\n            }\n        ],\n        \"IF\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"IF1601\",\n                \"newClose\": 3425.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160115,\n                \"from\": \"IF1601\",\n                \"to\": \"IF1602\",\n                \"newClose\": 3027.800048828125,\n                \"oldClose\": 3132.800048828125\n            },\n            {\n                \"date\": 20160217,\n                \"from\": \"IF1602\",\n                \"to\": \"IF1603\",\n                \"newClose\": 2987.800048828125,\n                \"oldClose\": 3045.60009765625\n            },\n            {\n                \"date\": 20160318,\n                \"from\": \"IF1603\",\n                \"to\": \"IF1604\",\n                \"newClose\": 3125.0,\n                \"oldClose\": 3176.800048828125\n            },\n            {\n                \"date\": 20160415,\n                \"from\": \"IF1604\",\n                \"to\": \"IF1605\",\n                \"newClose\": 3237.60009765625,\n                \"oldClose\": 3270.199951171875\n            },\n            {\n                \"date\": 20160518,\n                \"from\": \"IF1605\",\n                \"to\": \"IF1606\",\n                \"newClose\": 3019.0,\n                \"oldClose\": 3058.60009765625\n            },\n            {\n                \"date\": 20160616,\n                \"from\": \"IF1606\",\n                \"to\": \"IF1607\",\n                \"newClose\": 3028.800048828125,\n                \"oldClose\": 3088.0\n            },\n            {\n                \"date\": 20160714,\n                \"from\": \"IF1607\",\n                \"to\": \"IF1608\",\n                \"newClose\": 3241.0,\n                \"oldClose\": 3270.800048828125\n            },\n            {\n                \"date\": 20160817,\n                \"from\": \"IF1608\",\n                \"to\": \"IF1609\",\n                \"newClose\": 3341.800048828125,\n                \"oldClose\": 3365.800048828125\n            },\n            {\n                \"date\": 20160914,\n                \"from\": \"IF1609\",\n                \"to\": \"IF1610\",\n                \"newClose\": 3187.800048828125,\n                \"oldClose\": 3235.0\n            },\n            {\n                \"date\": 20161020,\n                \"from\": \"IF1610\",\n                \"to\": \"IF1611\",\n                \"newClose\": 3289.60009765625,\n                \"oldClose\": 3317.39990234375\n            },\n            {\n                \"date\": 20161116,\n                \"from\": \"IF1611\",\n                \"to\": \"IF1612\",\n                \"newClose\": 3398.199951171875,\n                \"oldClose\": 3423.60009765625\n            },\n            {\n                \"date\": 20161215,\n                \"from\": \"IF1612\",\n                \"to\": \"IF1701\",\n                \"newClose\": 3299.60009765625,\n                \"oldClose\": 3328.0\n            },\n            {\n                \"date\": 20170119,\n                \"from\": \"IF1701\",\n                \"to\": \"IF1702\",\n                \"newClose\": 3322.199951171875,\n                \"oldClose\": 3326.0\n            },\n            {\n                \"date\": 20170214,\n                \"from\": \"IF1702\",\n                \"to\": \"IF1703\",\n                \"newClose\": 3402.60009765625,\n                \"oldClose\": 3419.39990234375\n            },\n            {\n                \"date\": 20170316,\n                \"from\": \"IF1703\",\n                \"to\": \"IF1704\",\n                \"newClose\": 3456.800048828125,\n                \"oldClose\": 3481.39990234375\n            },\n            {\n                \"date\": 20170420,\n                \"from\": \"IF1704\",\n                \"to\": \"IF1705\",\n                \"newClose\": 3441.60009765625,\n                \"oldClose\": 3458.60009765625\n            },\n            {\n                \"date\": 20170517,\n                \"from\": \"IF1705\",\n                \"to\": \"IF1706\",\n                \"newClose\": 3391.0,\n                \"oldClose\": 3411.0\n            },\n            {\n                \"date\": 20170615,\n                \"from\": \"IF1706\",\n                \"to\": \"IF1707\",\n                \"newClose\": 3504.800048828125,\n                \"oldClose\": 3524.0\n            },\n            {\n                \"date\": 20170721,\n                \"from\": \"IF1707\",\n                \"to\": \"IF1708\",\n                \"newClose\": 3716.0,\n                \"oldClose\": 3738.0\n            },\n            {\n                \"date\": 20170815,\n                \"from\": \"IF1708\",\n                \"to\": \"IF1709\",\n                \"newClose\": 3680.60009765625,\n                \"oldClose\": 3694.39990234375\n            },\n            {\n                \"date\": 20170915,\n                \"from\": \"IF1709\",\n                \"to\": \"IF1710\",\n                \"newClose\": 3823.0,\n                \"oldClose\": 3834.199951171875\n            },\n            {\n                \"date\": 20171020,\n                \"from\": \"IF1710\",\n                \"to\": \"IF1711\",\n                \"newClose\": 3911.800048828125,\n                \"oldClose\": 3924.39990234375\n            },\n            {\n                \"date\": 20171114,\n                \"from\": \"IF1711\",\n                \"to\": \"IF1712\",\n                \"newClose\": 4098.7998046875,\n                \"oldClose\": 4101.0\n            },\n            {\n                \"date\": 20171214,\n                \"from\": \"IF1712\",\n                \"to\": \"IF1801\",\n                \"newClose\": 4027.199951171875,\n                \"oldClose\": 4030.0\n            },\n            {\n                \"date\": 20180119,\n                \"from\": \"IF1801\",\n                \"to\": \"IF1802\",\n                \"newClose\": 4303.60009765625,\n                \"oldClose\": 4290.7998046875\n            },\n            {\n                \"date\": 20180208,\n                \"from\": \"IF1802\",\n                \"to\": \"IF1803\",\n                \"newClose\": 4000.60009765625,\n                \"oldClose\": 3996.800048828125\n            },\n            {\n                \"date\": 20180316,\n                \"from\": \"IF1803\",\n                \"to\": \"IF1804\",\n                \"newClose\": 4027.199951171875,\n                \"oldClose\": 4082.0\n            },\n            {\n                \"date\": 20180420,\n                \"from\": \"IF1804\",\n                \"to\": \"IF1805\",\n                \"newClose\": 3732.60009765625,\n                \"oldClose\": 3760.199951171875\n            },\n            {\n                \"date\": 20180517,\n                \"from\": \"IF1805\",\n                \"to\": \"IF1806\",\n                \"newClose\": 3840.800048828125,\n                \"oldClose\": 3861.39990234375\n            },\n            {\n                \"date\": 20180615,\n                \"from\": \"IF1806\",\n                \"to\": \"IF1807\",\n                \"newClose\": 3722.0,\n                \"oldClose\": 3752.800048828125\n            },\n            {\n                \"date\": 20180720,\n                \"from\": \"IF1807\",\n                \"to\": \"IF1808\",\n                \"newClose\": 3482.39990234375,\n                \"oldClose\": 3473.39990234375\n            },\n            {\n                \"date\": 20180816,\n                \"from\": \"IF1808\",\n                \"to\": \"IF1809\",\n                \"newClose\": 3249.0,\n                \"oldClose\": 3271.39990234375\n            },\n            {\n                \"date\": 20180920,\n                \"from\": \"IF1809\",\n                \"to\": \"IF1810\",\n                \"newClose\": 3312.0,\n                \"oldClose\": 3315.0\n            },\n            {\n                \"date\": 20181019,\n                \"from\": \"IF1810\",\n                \"to\": \"IF1811\",\n                \"newClose\": 3128.60009765625,\n                \"oldClose\": 3108.199951171875\n            },\n            {\n                \"date\": 20181115,\n                \"from\": \"IF1811\",\n                \"to\": \"IF1812\",\n                \"newClose\": 3247.39990234375,\n                \"oldClose\": 3241.199951171875\n            },\n            {\n                \"date\": 20181220,\n                \"from\": \"IF1812\",\n                \"to\": \"IF1901\",\n                \"newClose\": 3075.800048828125,\n                \"oldClose\": 3073.199951171875\n            },\n            {\n                \"date\": 20190118,\n                \"from\": \"IF1901\",\n                \"to\": \"IF1902\",\n                \"newClose\": 3170.0,\n                \"oldClose\": 3158.199951171875\n            },\n            {\n                \"date\": 20190214,\n                \"from\": \"IF1902\",\n                \"to\": \"IF1903\",\n                \"newClose\": 3411.800048828125,\n                \"oldClose\": 3402.39990234375\n            },\n            {\n                \"date\": 20190315,\n                \"from\": \"IF1903\",\n                \"to\": \"IF1904\",\n                \"newClose\": 3751.60009765625,\n                \"oldClose\": 3741.199951171875\n            },\n            {\n                \"date\": 20190418,\n                \"from\": \"IF1904\",\n                \"to\": \"IF1905\",\n                \"newClose\": 4075.0,\n                \"oldClose\": 4070.60009765625\n            },\n            {\n                \"date\": 20190516,\n                \"from\": \"IF1905\",\n                \"to\": \"IF1906\",\n                \"newClose\": 3703.0,\n                \"oldClose\": 3732.800048828125\n            },\n            {\n                \"date\": 20190620,\n                \"from\": \"IF1906\",\n                \"to\": \"IF1907\",\n                \"newClose\": 3805.60009765625,\n                \"oldClose\": 3821.60009765625\n            },\n            {\n                \"date\": 20190719,\n                \"from\": \"IF1907\",\n                \"to\": \"IF1908\",\n                \"newClose\": 3799.39990234375,\n                \"oldClose\": 3805.800048828125\n            },\n            {\n                \"date\": 20190815,\n                \"from\": \"IF1908\",\n                \"to\": \"IF1909\",\n                \"newClose\": 3674.60009765625,\n                \"oldClose\": 3688.39990234375\n            },\n            {\n                \"date\": 20190920,\n                \"from\": \"IF1909\",\n                \"to\": \"IF1910\",\n                \"newClose\": 3926.0,\n                \"oldClose\": 3932.0\n            },\n            {\n                \"date\": 20191018,\n                \"from\": \"IF1910\",\n                \"to\": \"IF1911\",\n                \"newClose\": 3854.199951171875,\n                \"oldClose\": 3880.60009765625\n            },\n            {\n                \"date\": 20191114,\n                \"from\": \"IF1911\",\n                \"to\": \"IF1912\",\n                \"newClose\": 3895.39990234375,\n                \"oldClose\": 3900.0\n            },\n            {\n                \"date\": 20191219,\n                \"from\": \"IF1912\",\n                \"to\": \"IF2001\",\n                \"newClose\": 4045.199951171875,\n                \"oldClose\": 4028.800048828125\n            },\n            {\n                \"date\": 20200117,\n                \"from\": \"IF2001\",\n                \"to\": \"IF2002\",\n                \"newClose\": 4172.60009765625,\n                \"oldClose\": 4151.60009765625\n            },\n            {\n                \"date\": 20200219,\n                \"from\": \"IF2002\",\n                \"to\": \"IF2003\",\n                \"newClose\": 4052.60009765625,\n                \"oldClose\": 4049.199951171875\n            },\n            {\n                \"date\": 20200319,\n                \"from\": \"IF2003\",\n                \"to\": \"IF2004\",\n                \"newClose\": 3561.800048828125,\n                \"oldClose\": 3584.0\n            },\n            {\n                \"date\": 20200417,\n                \"from\": \"IF2004\",\n                \"to\": \"IF2005\",\n                \"newClose\": 3796.60009765625,\n                \"oldClose\": 3850.39990234375\n            },\n            {\n                \"date\": 20200514,\n                \"from\": \"IF2005\",\n                \"to\": \"IF2006\",\n                \"newClose\": 3882.39990234375,\n                \"oldClose\": 3928.0\n            },\n            {\n                \"date\": 20200618,\n                \"from\": \"IF2006\",\n                \"to\": \"IF2007\",\n                \"newClose\": 3992.39990234375,\n                \"oldClose\": 4042.0\n            },\n            {\n                \"date\": 20200716,\n                \"from\": \"IF2007\",\n                \"to\": \"IF2008\",\n                \"newClose\": 4495.0,\n                \"oldClose\": 4496.0\n            },\n            {\n                \"date\": 20200820,\n                \"from\": \"IF2008\",\n                \"to\": \"IF2009\",\n                \"newClose\": 4659.60009765625,\n                \"oldClose\": 4682.7998046875\n            },\n            {\n                \"date\": 20200917,\n                \"from\": \"IF2009\",\n                \"to\": \"IF2010\",\n                \"newClose\": 4593.39990234375,\n                \"oldClose\": 4625.60009765625\n            },\n            {\n                \"date\": 20201016,\n                \"from\": \"IF2010\",\n                \"to\": \"IF2011\",\n                \"newClose\": 4767.39990234375,\n                \"oldClose\": 4787.60009765625\n            },\n            {\n                \"date\": 20201119,\n                \"from\": \"IF2011\",\n                \"to\": \"IF2012\",\n                \"newClose\": 4925.7998046875,\n                \"oldClose\": 4933.60009765625\n            },\n            {\n                \"date\": 20201217,\n                \"from\": \"IF2012\",\n                \"to\": \"IF2101\",\n                \"newClose\": 5025.60009765625,\n                \"oldClose\": 5029.7998046875\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"IF2101\",\n                \"to\": \"IF2102\",\n                \"newClose\": 5448.0,\n                \"oldClose\": 5438.60009765625\n            },\n            {\n                \"date\": 20210218,\n                \"from\": \"IF2102\",\n                \"to\": \"IF2103\",\n                \"newClose\": 5735.7998046875,\n                \"oldClose\": 5747.2001953125\n            },\n            {\n                \"date\": 20210319,\n                \"from\": \"IF2103\",\n                \"to\": \"IF2104\",\n                \"newClose\": 4941.0,\n                \"oldClose\": 5006.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"IF2104\",\n                \"to\": \"IF2105\",\n                \"newClose\": 4938.39990234375,\n                \"oldClose\": 4963.7998046875\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"IF2105\",\n                \"to\": \"IF2106\",\n                \"newClose\": 5172.2001953125,\n                \"oldClose\": 5183.7998046875\n            },\n            {\n                \"date\": 20210618,\n                \"from\": \"IF2106\",\n                \"to\": \"IF2107\",\n                \"newClose\": 5062.7998046875,\n                \"oldClose\": 5094.60009765625\n            },\n            {\n                \"date\": 20210715,\n                \"from\": \"IF2107\",\n                \"to\": \"IF2108\",\n                \"newClose\": 5129.0,\n                \"oldClose\": 5145.7998046875\n            },\n            {\n                \"date\": 20210819,\n                \"from\": \"IF2108\",\n                \"to\": \"IF2109\",\n                \"newClose\": 4814.2001953125,\n                \"oldClose\": 4853.0\n            },\n            {\n                \"date\": 20210916,\n                \"from\": \"IF2109\",\n                \"to\": \"IF2110\",\n                \"newClose\": 4799.39990234375,\n                \"oldClose\": 4812.60009765625\n            }\n        ],\n        \"TF\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"TF1603\",\n                \"newClose\": 100.59500122070312,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160205,\n                \"from\": \"TF1603\",\n                \"to\": \"TF1606\",\n                \"newClose\": 100.40499877929688,\n                \"oldClose\": 100.7750015258789\n            },\n            {\n                \"date\": 20160428,\n                \"from\": \"TF1606\",\n                \"to\": \"TF1609\",\n                \"newClose\": 99.83499908447266,\n                \"oldClose\": 100.66999816894531\n            },\n            {\n                \"date\": 20160811,\n                \"from\": \"TF1609\",\n                \"to\": \"TF1612\",\n                \"newClose\": 101.58499908447266,\n                \"oldClose\": 101.875\n            },\n            {\n                \"date\": 20161110,\n                \"from\": \"TF1612\",\n                \"to\": \"TF1703\",\n                \"newClose\": 101.04499816894531,\n                \"oldClose\": 101.58499908447266\n            },\n            {\n                \"date\": 20170124,\n                \"from\": \"TF1703\",\n                \"to\": \"TF1706\",\n                \"newClose\": 98.08999633789062,\n                \"oldClose\": 99.09500122070312\n            },\n            {\n                \"date\": 20170511,\n                \"from\": \"TF1706\",\n                \"to\": \"TF1709\",\n                \"newClose\": 97.41000366210938,\n                \"oldClose\": 97.19999694824219\n            },\n            {\n                \"date\": 20170810,\n                \"from\": \"TF1709\",\n                \"to\": \"TF1712\",\n                \"newClose\": 97.30500030517578,\n                \"oldClose\": 97.16000366210938\n            },\n            {\n                \"date\": 20171110,\n                \"from\": \"TF1712\",\n                \"to\": \"TF1803\",\n                \"newClose\": 96.2750015258789,\n                \"oldClose\": 95.98999786376953\n            },\n            {\n                \"date\": 20180212,\n                \"from\": \"TF1803\",\n                \"to\": \"TF1806\",\n                \"newClose\": 96.0999984741211,\n                \"oldClose\": 96.18499755859375\n            },\n            {\n                \"date\": 20180516,\n                \"from\": \"TF1806\",\n                \"to\": \"TF1809\",\n                \"newClose\": 97.59500122070312,\n                \"oldClose\": 97.69000244140625\n            },\n            {\n                \"date\": 20180814,\n                \"from\": \"TF1809\",\n                \"to\": \"TF1812\",\n                \"newClose\": 98.05500030517578,\n                \"oldClose\": 97.95999908447266\n            },\n            {\n                \"date\": 20181119,\n                \"from\": \"TF1812\",\n                \"to\": \"TF1903\",\n                \"newClose\": 98.83499908447266,\n                \"oldClose\": 98.83499908447266\n            },\n            {\n                \"date\": 20190221,\n                \"from\": \"TF1903\",\n                \"to\": \"TF1906\",\n                \"newClose\": 99.69000244140625,\n                \"oldClose\": 99.8949966430664\n            },\n            {\n                \"date\": 20190522,\n                \"from\": \"TF1906\",\n                \"to\": \"TF1909\",\n                \"newClose\": 98.79499816894531,\n                \"oldClose\": 99.1500015258789\n            },\n            {\n                \"date\": 20190815,\n                \"from\": \"TF1909\",\n                \"to\": \"TF1912\",\n                \"newClose\": 100.05999755859375,\n                \"oldClose\": 100.20500183105469\n            },\n            {\n                \"date\": 20191121,\n                \"from\": \"TF1912\",\n                \"to\": \"TF2003\",\n                \"newClose\": 99.74500274658203,\n                \"oldClose\": 100.07499694824219\n            },\n            {\n                \"date\": 20200220,\n                \"from\": \"TF2003\",\n                \"to\": \"TF2006\",\n                \"newClose\": 100.83000183105469,\n                \"oldClose\": 101.30000305175781\n            },\n            {\n                \"date\": 20200514,\n                \"from\": \"TF2006\",\n                \"to\": \"TF2009\",\n                \"newClose\": 103.38999938964844,\n                \"oldClose\": 104.17500305175781\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"TF2009\",\n                \"to\": \"TF2012\",\n                \"newClose\": 100.1050033569336,\n                \"oldClose\": 100.52999877929688\n            },\n            {\n                \"date\": 20201119,\n                \"from\": \"TF2012\",\n                \"to\": \"TF2103\",\n                \"newClose\": 98.94000244140625,\n                \"oldClose\": 99.01000213623047\n            },\n            {\n                \"date\": 20210219,\n                \"from\": \"TF2103\",\n                \"to\": \"TF2106\",\n                \"newClose\": 99.08999633789062,\n                \"oldClose\": 99.41999816894531\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"TF2106\",\n                \"to\": \"TF2109\",\n                \"newClose\": 100.05999755859375,\n                \"oldClose\": 100.41500091552734\n            },\n            {\n                \"date\": 20210818,\n                \"from\": \"TF2109\",\n                \"to\": \"TF2112\",\n                \"newClose\": 101.01000213623047,\n                \"oldClose\": 101.29000091552734\n            }\n        ],\n        \"IH\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"IH1601\",\n                \"newClose\": 2254.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160115,\n                \"from\": \"IH1601\",\n                \"to\": \"IH1602\",\n                \"newClose\": 2031.0,\n                \"oldClose\": 2079.0\n            },\n            {\n                \"date\": 20160217,\n                \"from\": \"IH1602\",\n                \"to\": \"IH1603\",\n                \"newClose\": 1974.5999755859375,\n                \"oldClose\": 2000.800048828125\n            },\n            {\n                \"date\": 20160318,\n                \"from\": \"IH1603\",\n                \"to\": \"IH1604\",\n                \"newClose\": 2120.0,\n                \"oldClose\": 2146.60009765625\n            },\n            {\n                \"date\": 20160415,\n                \"from\": \"IH1604\",\n                \"to\": \"IH1605\",\n                \"newClose\": 2173.0,\n                \"oldClose\": 2181.800048828125\n            },\n            {\n                \"date\": 20160518,\n                \"from\": \"IH1605\",\n                \"to\": \"IH1606\",\n                \"newClose\": 2049.0,\n                \"oldClose\": 2068.800048828125\n            },\n            {\n                \"date\": 20160616,\n                \"from\": \"IH1606\",\n                \"to\": \"IH1607\",\n                \"newClose\": 2053.60009765625,\n                \"oldClose\": 2092.60009765625\n            },\n            {\n                \"date\": 20160714,\n                \"from\": \"IH1607\",\n                \"to\": \"IH1608\",\n                \"newClose\": 2186.800048828125,\n                \"oldClose\": 2192.39990234375\n            },\n            {\n                \"date\": 20160816,\n                \"from\": \"IH1608\",\n                \"to\": \"IH1609\",\n                \"newClose\": 2257.60009765625,\n                \"oldClose\": 2258.60009765625\n            },\n            {\n                \"date\": 20160914,\n                \"from\": \"IH1609\",\n                \"to\": \"IH1610\",\n                \"newClose\": 2154.0,\n                \"oldClose\": 2175.0\n            },\n            {\n                \"date\": 20161020,\n                \"from\": \"IH1610\",\n                \"to\": \"IH1611\",\n                \"newClose\": 2212.199951171875,\n                \"oldClose\": 2221.199951171875\n            },\n            {\n                \"date\": 20161115,\n                \"from\": \"IH1611\",\n                \"to\": \"IH1612\",\n                \"newClose\": 2300.39990234375,\n                \"oldClose\": 2309.0\n            },\n            {\n                \"date\": 20161215,\n                \"from\": \"IH1612\",\n                \"to\": \"IH1701\",\n                \"newClose\": 2302.60009765625,\n                \"oldClose\": 2304.0\n            },\n            {\n                \"date\": 20170119,\n                \"from\": \"IH1701\",\n                \"to\": \"IH1702\",\n                \"newClose\": 2330.199951171875,\n                \"oldClose\": 2334.0\n            },\n            {\n                \"date\": 20170214,\n                \"from\": \"IH1702\",\n                \"to\": \"IH1703\",\n                \"newClose\": 2365.0,\n                \"oldClose\": 2368.0\n            },\n            {\n                \"date\": 20170316,\n                \"from\": \"IH1703\",\n                \"to\": \"IH1704\",\n                \"newClose\": 2364.0,\n                \"oldClose\": 2368.800048828125\n            },\n            {\n                \"date\": 20170420,\n                \"from\": \"IH1704\",\n                \"to\": \"IH1705\",\n                \"newClose\": 2325.199951171875,\n                \"oldClose\": 2332.60009765625\n            },\n            {\n                \"date\": 20170517,\n                \"from\": \"IH1705\",\n                \"to\": \"IH1706\",\n                \"newClose\": 2351.0,\n                \"oldClose\": 2362.800048828125\n            },\n            {\n                \"date\": 20170615,\n                \"from\": \"IH1706\",\n                \"to\": \"IH1707\",\n                \"newClose\": 2439.0,\n                \"oldClose\": 2458.0\n            },\n            {\n                \"date\": 20170721,\n                \"from\": \"IH1707\",\n                \"to\": \"IH1708\",\n                \"newClose\": 2640.199951171875,\n                \"oldClose\": 2648.199951171875\n            },\n            {\n                \"date\": 20170816,\n                \"from\": \"IH1708\",\n                \"to\": \"IH1709\",\n                \"newClose\": 2593.0,\n                \"oldClose\": 2591.199951171875\n            },\n            {\n                \"date\": 20170915,\n                \"from\": \"IH1709\",\n                \"to\": \"IH1710\",\n                \"newClose\": 2681.0,\n                \"oldClose\": 2669.0\n            },\n            {\n                \"date\": 20171020,\n                \"from\": \"IH1710\",\n                \"to\": \"IH1711\",\n                \"newClose\": 2740.800048828125,\n                \"oldClose\": 2740.39990234375\n            },\n            {\n                \"date\": 20171115,\n                \"from\": \"IH1711\",\n                \"to\": \"IH1712\",\n                \"newClose\": 2858.199951171875,\n                \"oldClose\": 2848.0\n            },\n            {\n                \"date\": 20171215,\n                \"from\": \"IH1712\",\n                \"to\": \"IH1801\",\n                \"newClose\": 2825.60009765625,\n                \"oldClose\": 2829.199951171875\n            },\n            {\n                \"date\": 20180119,\n                \"from\": \"IH1801\",\n                \"to\": \"IH1802\",\n                \"newClose\": 3133.800048828125,\n                \"oldClose\": 3123.60009765625\n            },\n            {\n                \"date\": 20180213,\n                \"from\": \"IH1802\",\n                \"to\": \"IH1803\",\n                \"newClose\": 2837.199951171875,\n                \"oldClose\": 2844.0\n            },\n            {\n                \"date\": 20180316,\n                \"from\": \"IH1803\",\n                \"to\": \"IH1804\",\n                \"newClose\": 2864.60009765625,\n                \"oldClose\": 2889.0\n            },\n            {\n                \"date\": 20180420,\n                \"from\": \"IH1804\",\n                \"to\": \"IH1805\",\n                \"newClose\": 2636.199951171875,\n                \"oldClose\": 2641.800048828125\n            },\n            {\n                \"date\": 20180517,\n                \"from\": \"IH1805\",\n                \"to\": \"IH1806\",\n                \"newClose\": 2687.199951171875,\n                \"oldClose\": 2697.39990234375\n            },\n            {\n                \"date\": 20180615,\n                \"from\": \"IH1806\",\n                \"to\": \"IH1807\",\n                \"newClose\": 2640.0,\n                \"oldClose\": 2666.60009765625\n            },\n            {\n                \"date\": 20180720,\n                \"from\": \"IH1807\",\n                \"to\": \"IH1808\",\n                \"newClose\": 2499.199951171875,\n                \"oldClose\": 2473.800048828125\n            },\n            {\n                \"date\": 20180816,\n                \"from\": \"IH1808\",\n                \"to\": \"IH1809\",\n                \"newClose\": 2405.0,\n                \"oldClose\": 2411.0\n            },\n            {\n                \"date\": 20180920,\n                \"from\": \"IH1809\",\n                \"to\": \"IH1810\",\n                \"newClose\": 2496.800048828125,\n                \"oldClose\": 2491.0\n            },\n            {\n                \"date\": 20181019,\n                \"from\": \"IH1810\",\n                \"to\": \"IH1811\",\n                \"newClose\": 2439.199951171875,\n                \"oldClose\": 2425.0\n            },\n            {\n                \"date\": 20181115,\n                \"from\": \"IH1811\",\n                \"to\": \"IH1812\",\n                \"newClose\": 2464.199951171875,\n                \"oldClose\": 2459.60009765625\n            },\n            {\n                \"date\": 20181220,\n                \"from\": \"IH1812\",\n                \"to\": \"IH1901\",\n                \"newClose\": 2342.0,\n                \"oldClose\": 2336.199951171875\n            },\n            {\n                \"date\": 20190118,\n                \"from\": \"IH1901\",\n                \"to\": \"IH1902\",\n                \"newClose\": 2415.199951171875,\n                \"oldClose\": 2412.0\n            },\n            {\n                \"date\": 20190214,\n                \"from\": \"IH1902\",\n                \"to\": \"IH1903\",\n                \"newClose\": 2585.60009765625,\n                \"oldClose\": 2578.800048828125\n            },\n            {\n                \"date\": 20190315,\n                \"from\": \"IH1903\",\n                \"to\": \"IH1904\",\n                \"newClose\": 2768.0,\n                \"oldClose\": 2753.199951171875\n            },\n            {\n                \"date\": 20190419,\n                \"from\": \"IH1904\",\n                \"to\": \"IH1905\",\n                \"newClose\": 3050.60009765625,\n                \"oldClose\": 3024.0\n            },\n            {\n                \"date\": 20190516,\n                \"from\": \"IH1905\",\n                \"to\": \"IH1906\",\n                \"newClose\": 2769.39990234375,\n                \"oldClose\": 2785.60009765625\n            },\n            {\n                \"date\": 20190620,\n                \"from\": \"IH1906\",\n                \"to\": \"IH1907\",\n                \"newClose\": 2918.60009765625,\n                \"oldClose\": 2939.60009765625\n            },\n            {\n                \"date\": 20190719,\n                \"from\": \"IH1907\",\n                \"to\": \"IH1908\",\n                \"newClose\": 2898.0,\n                \"oldClose\": 2892.199951171875\n            },\n            {\n                \"date\": 20190815,\n                \"from\": \"IH1908\",\n                \"to\": \"IH1909\",\n                \"newClose\": 2794.800048828125,\n                \"oldClose\": 2810.800048828125\n            },\n            {\n                \"date\": 20190920,\n                \"from\": \"IH1909\",\n                \"to\": \"IH1910\",\n                \"newClose\": 2961.39990234375,\n                \"oldClose\": 2964.0\n            },\n            {\n                \"date\": 20191018,\n                \"from\": \"IH1910\",\n                \"to\": \"IH1911\",\n                \"newClose\": 2956.800048828125,\n                \"oldClose\": 2974.199951171875\n            },\n            {\n                \"date\": 20191114,\n                \"from\": \"IH1911\",\n                \"to\": \"IH1912\",\n                \"newClose\": 2965.199951171875,\n                \"oldClose\": 2965.60009765625\n            },\n            {\n                \"date\": 20191220,\n                \"from\": \"IH1912\",\n                \"to\": \"IH2001\",\n                \"newClose\": 3024.60009765625,\n                \"oldClose\": 3018.39990234375\n            },\n            {\n                \"date\": 20200117,\n                \"from\": \"IH2001\",\n                \"to\": \"IH2002\",\n                \"newClose\": 3063.0,\n                \"oldClose\": 3048.60009765625\n            },\n            {\n                \"date\": 20200220,\n                \"from\": \"IH2002\",\n                \"to\": \"IH2003\",\n                \"newClose\": 2973.60009765625,\n                \"oldClose\": 2971.60009765625\n            },\n            {\n                \"date\": 20200320,\n                \"from\": \"IH2003\",\n                \"to\": \"IH2004\",\n                \"newClose\": 2606.60009765625,\n                \"oldClose\": 2608.0\n            },\n            {\n                \"date\": 20200417,\n                \"from\": \"IH2004\",\n                \"to\": \"IH2005\",\n                \"newClose\": 2771.800048828125,\n                \"oldClose\": 2814.60009765625\n            },\n            {\n                \"date\": 20200514,\n                \"from\": \"IH2005\",\n                \"to\": \"IH2006\",\n                \"newClose\": 2796.0,\n                \"oldClose\": 2833.199951171875\n            },\n            {\n                \"date\": 20200618,\n                \"from\": \"IH2006\",\n                \"to\": \"IH2007\",\n                \"newClose\": 2844.199951171875,\n                \"oldClose\": 2886.39990234375\n            },\n            {\n                \"date\": 20200717,\n                \"from\": \"IH2007\",\n                \"to\": \"IH2008\",\n                \"newClose\": 3182.39990234375,\n                \"oldClose\": 3174.39990234375\n            },\n            {\n                \"date\": 20200820,\n                \"from\": \"IH2008\",\n                \"to\": \"IH2009\",\n                \"newClose\": 3258.39990234375,\n                \"oldClose\": 3263.39990234375\n            },\n            {\n                \"date\": 20200918,\n                \"from\": \"IH2009\",\n                \"to\": \"IH2010\",\n                \"newClose\": 3347.800048828125,\n                \"oldClose\": 3326.0\n            },\n            {\n                \"date\": 20201016,\n                \"from\": \"IH2010\",\n                \"to\": \"IH2011\",\n                \"newClose\": 3368.0,\n                \"oldClose\": 3380.0\n            },\n            {\n                \"date\": 20201119,\n                \"from\": \"IH2011\",\n                \"to\": \"IH2012\",\n                \"newClose\": 3411.199951171875,\n                \"oldClose\": 3415.39990234375\n            },\n            {\n                \"date\": 20201218,\n                \"from\": \"IH2012\",\n                \"to\": \"IH2101\",\n                \"newClose\": 3516.0,\n                \"oldClose\": 3505.199951171875\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"IH2101\",\n                \"to\": \"IH2102\",\n                \"newClose\": 3817.0,\n                \"oldClose\": 3815.800048828125\n            },\n            {\n                \"date\": 20210218,\n                \"from\": \"IH2102\",\n                \"to\": \"IH2103\",\n                \"newClose\": 3997.0,\n                \"oldClose\": 4005.0\n            },\n            {\n                \"date\": 20210319,\n                \"from\": \"IH2103\",\n                \"to\": \"IH2104\",\n                \"newClose\": 3472.60009765625,\n                \"oldClose\": 3512.199951171875\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"IH2104\",\n                \"to\": \"IH2105\",\n                \"newClose\": 3436.39990234375,\n                \"oldClose\": 3444.800048828125\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"IH2105\",\n                \"to\": \"IH2106\",\n                \"newClose\": 3507.39990234375,\n                \"oldClose\": 3520.199951171875\n            },\n            {\n                \"date\": 20210618,\n                \"from\": \"IH2106\",\n                \"to\": \"IH2107\",\n                \"newClose\": 3423.39990234375,\n                \"oldClose\": 3446.800048828125\n            },\n            {\n                \"date\": 20210716,\n                \"from\": \"IH2107\",\n                \"to\": \"IH2108\",\n                \"newClose\": 3364.39990234375,\n                \"oldClose\": 3378.199951171875\n            },\n            {\n                \"date\": 20210819,\n                \"from\": \"IH2108\",\n                \"to\": \"IH2109\",\n                \"newClose\": 3126.39990234375,\n                \"oldClose\": 3139.199951171875\n            },\n            {\n                \"date\": 20210916,\n                \"from\": \"IH2109\",\n                \"to\": \"IH2110\",\n                \"newClose\": 3132.800048828125,\n                \"oldClose\": 3128.199951171875\n            }\n        ],\n        \"T\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"T1603\",\n                \"newClose\": 99.86499786376953,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160204,\n                \"from\": \"T1603\",\n                \"to\": \"T1606\",\n                \"newClose\": 99.53500366210938,\n                \"oldClose\": 100.25\n            },\n            {\n                \"date\": 20160505,\n                \"from\": \"T1606\",\n                \"to\": \"T1609\",\n                \"newClose\": 98.40499877929688,\n                \"oldClose\": 99.8499984741211\n            },\n            {\n                \"date\": 20160809,\n                \"from\": \"T1609\",\n                \"to\": \"T1612\",\n                \"newClose\": 101.19999694824219,\n                \"oldClose\": 101.58999633789062\n            },\n            {\n                \"date\": 20161109,\n                \"from\": \"T1612\",\n                \"to\": \"T1703\",\n                \"newClose\": 100.41500091552734,\n                \"oldClose\": 101.26000213623047\n            },\n            {\n                \"date\": 20170118,\n                \"from\": \"T1703\",\n                \"to\": \"T1706\",\n                \"newClose\": 95.23999786376953,\n                \"oldClose\": 96.6500015258789\n            },\n            {\n                \"date\": 20170509,\n                \"from\": \"T1706\",\n                \"to\": \"T1709\",\n                \"newClose\": 94.01499938964844,\n                \"oldClose\": 94.69999694824219\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"T1709\",\n                \"to\": \"T1712\",\n                \"newClose\": 94.3550033569336,\n                \"oldClose\": 94.45500183105469\n            },\n            {\n                \"date\": 20171109,\n                \"from\": \"T1712\",\n                \"to\": \"T1803\",\n                \"newClose\": 92.80500030517578,\n                \"oldClose\": 92.73500061035156\n            },\n            {\n                \"date\": 20180207,\n                \"from\": \"T1803\",\n                \"to\": \"T1806\",\n                \"newClose\": 92.1449966430664,\n                \"oldClose\": 92.08999633789062\n            },\n            {\n                \"date\": 20180517,\n                \"from\": \"T1806\",\n                \"to\": \"T1809\",\n                \"newClose\": 93.8949966430664,\n                \"oldClose\": 93.91500091552734\n            },\n            {\n                \"date\": 20180814,\n                \"from\": \"T1809\",\n                \"to\": \"T1812\",\n                \"newClose\": 95.30500030517578,\n                \"oldClose\": 95.32499694824219\n            },\n            {\n                \"date\": 20181114,\n                \"from\": \"T1812\",\n                \"to\": \"T1903\",\n                \"newClose\": 96.44000244140625,\n                \"oldClose\": 96.4800033569336\n            },\n            {\n                \"date\": 20190220,\n                \"from\": \"T1903\",\n                \"to\": \"T1906\",\n                \"newClose\": 97.6500015258789,\n                \"oldClose\": 98.08999633789062\n            },\n            {\n                \"date\": 20190521,\n                \"from\": \"T1906\",\n                \"to\": \"T1909\",\n                \"newClose\": 96.63999938964844,\n                \"oldClose\": 97.20999908447266\n            },\n            {\n                \"date\": 20190814,\n                \"from\": \"T1909\",\n                \"to\": \"T1912\",\n                \"newClose\": 99.0199966430664,\n                \"oldClose\": 99.30500030517578\n            },\n            {\n                \"date\": 20191119,\n                \"from\": \"T1912\",\n                \"to\": \"T2003\",\n                \"newClose\": 98.16500091552734,\n                \"oldClose\": 98.50499725341797\n            },\n            {\n                \"date\": 20200218,\n                \"from\": \"T2003\",\n                \"to\": \"T2006\",\n                \"newClose\": 100.11000061035156,\n                \"oldClose\": 100.6449966430664\n            },\n            {\n                \"date\": 20200514,\n                \"from\": \"T2006\",\n                \"to\": \"T2009\",\n                \"newClose\": 100.98500061035156,\n                \"oldClose\": 101.69499969482422\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"T2009\",\n                \"to\": \"T2012\",\n                \"newClose\": 98.42500305175781,\n                \"oldClose\": 99.05500030517578\n            },\n            {\n                \"date\": 20201119,\n                \"from\": \"T2012\",\n                \"to\": \"T2103\",\n                \"newClose\": 96.95999908447266,\n                \"oldClose\": 97.1449966430664\n            },\n            {\n                \"date\": 20210218,\n                \"from\": \"T2103\",\n                \"to\": \"T2106\",\n                \"newClose\": 96.44499969482422,\n                \"oldClose\": 96.76499938964844\n            },\n            {\n                \"date\": 20210519,\n                \"from\": \"T2106\",\n                \"to\": \"T2109\",\n                \"newClose\": 98.12000274658203,\n                \"oldClose\": 98.51000213623047\n            },\n            {\n                \"date\": 20210818,\n                \"from\": \"T2109\",\n                \"to\": \"T2112\",\n                \"newClose\": 100.04499816894531,\n                \"oldClose\": 100.30500030517578\n            }\n        ],\n        \"TS\": [\n            {\n                \"date\": 20180817,\n                \"from\": \"\",\n                \"to\": \"TS1812\",\n                \"newClose\": 99.16000366210938,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20181116,\n                \"from\": \"TS1812\",\n                \"to\": \"TS1903\",\n                \"newClose\": 100.05999755859375,\n                \"oldClose\": 100.07499694824219\n            },\n            {\n                \"date\": 20190222,\n                \"from\": \"TS1903\",\n                \"to\": \"TS1906\",\n                \"newClose\": 100.51000213623047,\n                \"oldClose\": 100.5199966430664\n            },\n            {\n                \"date\": 20190521,\n                \"from\": \"TS1906\",\n                \"to\": \"TS1912\",\n                \"newClose\": 99.75499725341797,\n                \"oldClose\": 100.05999755859375\n            },\n            {\n                \"date\": 20190627,\n                \"from\": \"TS1912\",\n                \"to\": \"TS2003\",\n                \"newClose\": 99.7249984741211,\n                \"oldClose\": 99.88999938964844\n            },\n            {\n                \"date\": 20190926,\n                \"from\": \"TS2003\",\n                \"to\": \"TS2006\",\n                \"newClose\": 99.98999786376953,\n                \"oldClose\": 100.12000274658203\n            },\n            {\n                \"date\": 20200515,\n                \"from\": \"TS2006\",\n                \"to\": \"TS2009\",\n                \"newClose\": 102.13999938964844,\n                \"oldClose\": 102.44499969482422\n            },\n            {\n                \"date\": 20200821,\n                \"from\": \"TS2009\",\n                \"to\": \"TS2012\",\n                \"newClose\": 100.36000061035156,\n                \"oldClose\": 100.54499816894531\n            },\n            {\n                \"date\": 20201123,\n                \"from\": \"TS2012\",\n                \"to\": \"TS2103\",\n                \"newClose\": 100.01000213623047,\n                \"oldClose\": 99.8550033569336\n            },\n            {\n                \"date\": 20210223,\n                \"from\": \"TS2103\",\n                \"to\": \"TS2106\",\n                \"newClose\": 100.03500366210938,\n                \"oldClose\": 100.3949966430664\n            },\n            {\n                \"date\": 20210519,\n                \"from\": \"TS2106\",\n                \"to\": \"TS2109\",\n                \"newClose\": 100.30000305175781,\n                \"oldClose\": 100.54499816894531\n            },\n            {\n                \"date\": 20210819,\n                \"from\": \"TS2109\",\n                \"to\": \"TS2112\",\n                \"newClose\": 100.76000213623047,\n                \"oldClose\": 100.87000274658203\n            }\n        ]\n    },\n    \"DCE\": {\n        \"cs\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"cs1605\",\n                \"newClose\": 2050.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160321,\n                \"from\": \"cs1605\",\n                \"to\": \"cs1609\",\n                \"newClose\": 2001.0,\n                \"oldClose\": 2085.0\n            },\n            {\n                \"date\": 20160628,\n                \"from\": \"cs1609\",\n                \"to\": \"cs1701\",\n                \"newClose\": 1989.0,\n                \"oldClose\": 2217.0\n            },\n            {\n                \"date\": 20161122,\n                \"from\": \"cs1701\",\n                \"to\": \"cs1705\",\n                \"newClose\": 1891.0,\n                \"oldClose\": 1938.0\n            },\n            {\n                \"date\": 20170322,\n                \"from\": \"cs1705\",\n                \"to\": \"cs1709\",\n                \"newClose\": 2120.0,\n                \"oldClose\": 1911.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"cs1709\",\n                \"to\": \"cs1801\",\n                \"newClose\": 1952.0,\n                \"oldClose\": 1971.0\n            },\n            {\n                \"date\": 20171204,\n                \"from\": \"cs1801\",\n                \"to\": \"cs1805\",\n                \"newClose\": 2106.0,\n                \"oldClose\": 2071.0\n            },\n            {\n                \"date\": 20180402,\n                \"from\": \"cs1805\",\n                \"to\": \"cs1809\",\n                \"newClose\": 2137.0,\n                \"oldClose\": 2138.0\n            },\n            {\n                \"date\": 20180809,\n                \"from\": \"cs1809\",\n                \"to\": \"cs1901\",\n                \"newClose\": 2367.0,\n                \"oldClose\": 2318.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"cs1901\",\n                \"to\": \"cs1905\",\n                \"newClose\": 2335.0,\n                \"oldClose\": 2351.0\n            },\n            {\n                \"date\": 20190415,\n                \"from\": \"cs1905\",\n                \"to\": \"cs1909\",\n                \"newClose\": 2365.0,\n                \"oldClose\": 2305.0\n            },\n            {\n                \"date\": 20190823,\n                \"from\": \"cs1909\",\n                \"to\": \"cs2001\",\n                \"newClose\": 2331.0,\n                \"oldClose\": 2324.0\n            },\n            {\n                \"date\": 20191218,\n                \"from\": \"cs2001\",\n                \"to\": \"cs2005\",\n                \"newClose\": 2257.0,\n                \"oldClose\": 2194.0\n            },\n            {\n                \"date\": 20200414,\n                \"from\": \"cs2005\",\n                \"to\": \"cs2009\",\n                \"newClose\": 2390.0,\n                \"oldClose\": 2282.0\n            },\n            {\n                \"date\": 20200824,\n                \"from\": \"cs2009\",\n                \"to\": \"cs2101\",\n                \"newClose\": 2571.0,\n                \"oldClose\": 2508.0\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"cs2101\",\n                \"to\": \"cs2105\",\n                \"newClose\": 2917.0,\n                \"oldClose\": 2844.0\n            },\n            {\n                \"date\": 20210420,\n                \"from\": \"cs2105\",\n                \"to\": \"cs2107\",\n                \"newClose\": 3295.0,\n                \"oldClose\": 3255.0\n            },\n            {\n                \"date\": 20210622,\n                \"from\": \"cs2107\",\n                \"to\": \"cs2109\",\n                \"newClose\": 2981.0,\n                \"oldClose\": 3048.0\n            },\n            {\n                \"date\": 20210825,\n                \"from\": \"cs2109\",\n                \"to\": \"cs2111\",\n                \"newClose\": 2913.0,\n                \"oldClose\": 2918.0\n            }\n        ],\n        \"fb\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"fb1601\",\n                \"newClose\": 49.349998474121094,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160118,\n                \"from\": \"fb1601\",\n                \"to\": \"fb1604\",\n                \"newClose\": 61.599998474121094,\n                \"oldClose\": 45.900001525878906\n            },\n            {\n                \"date\": 20160408,\n                \"from\": \"fb1604\",\n                \"to\": \"fb1701\",\n                \"newClose\": 39.5,\n                \"oldClose\": 82.5\n            },\n            {\n                \"date\": 20170110,\n                \"from\": \"fb1705\",\n                \"to\": \"fb1709\",\n                \"newClose\": 85.05000305175781,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20170711,\n                \"from\": \"fb1709\",\n                \"to\": \"fb1801\",\n                \"newClose\": 75.55000305175781,\n                \"oldClose\": 76.80000305175781\n            },\n            {\n                \"date\": 20180103,\n                \"from\": \"fb1801\",\n                \"to\": \"fb1808\",\n                \"newClose\": 73.5999984741211,\n                \"oldClose\": 109.80000305175781\n            },\n            {\n                \"date\": 20180508,\n                \"from\": \"fb1808\",\n                \"to\": \"fb1901\",\n                \"newClose\": 88.80000305175781,\n                \"oldClose\": 73.5999984741211\n            },\n            {\n                \"date\": 20190102,\n                \"from\": \"fb1901\",\n                \"to\": \"fb1903\",\n                \"newClose\": 76.6500015258789,\n                \"oldClose\": 106.55000305175781\n            },\n            {\n                \"date\": 20190301,\n                \"from\": \"fb1903\",\n                \"to\": \"fb1904\",\n                \"newClose\": 61.29999923706055,\n                \"oldClose\": 50.75\n            },\n            {\n                \"date\": 20190328,\n                \"from\": \"fb1904\",\n                \"to\": \"fb1905\",\n                \"newClose\": 65.9000015258789,\n                \"oldClose\": 68.4000015258789\n            },\n            {\n                \"date\": 20190506,\n                \"from\": \"fb1905\",\n                \"to\": \"fb1906\",\n                \"newClose\": 60.599998474121094,\n                \"oldClose\": 58.5\n            },\n            {\n                \"date\": 20190603,\n                \"from\": \"fb1906\",\n                \"to\": \"fb1907\",\n                \"newClose\": 55.900001525878906,\n                \"oldClose\": 53.54999923706055\n            },\n            {\n                \"date\": 20190701,\n                \"from\": \"fb1907\",\n                \"to\": \"fb1908\",\n                \"newClose\": 61.900001525878906,\n                \"oldClose\": 47.29999923706055\n            },\n            {\n                \"date\": 20190801,\n                \"from\": \"fb1908\",\n                \"to\": \"fb1909\",\n                \"newClose\": 64.0,\n                \"oldClose\": 63.70000076293945\n            },\n            {\n                \"date\": 20190902,\n                \"from\": \"fb1909\",\n                \"to\": \"fb1910\",\n                \"newClose\": 58.79999923706055,\n                \"oldClose\": 57.0\n            },\n            {\n                \"date\": 20191008,\n                \"from\": \"fb1910\",\n                \"to\": \"fb1911\",\n                \"newClose\": 66.6500015258789,\n                \"oldClose\": 76.8499984741211\n            },\n            {\n                \"date\": 20191202,\n                \"from\": \"fb1911\",\n                \"to\": \"fb2005\",\n                \"newClose\": 1478.5,\n                \"oldClose\": 85.0\n            },\n            {\n                \"date\": 20200506,\n                \"from\": \"fb2005\",\n                \"to\": \"fb2009\",\n                \"newClose\": 1353.0,\n                \"oldClose\": 1175.0\n            },\n            {\n                \"date\": 20200902,\n                \"from\": \"fb2009\",\n                \"to\": \"fb2010\",\n                \"newClose\": 1313.5,\n                \"oldClose\": 1110.0\n            },\n            {\n                \"date\": 20201009,\n                \"from\": \"fb2010\",\n                \"to\": \"fb2011\",\n                \"newClose\": 1228.5,\n                \"oldClose\": 1199.0\n            },\n            {\n                \"date\": 20201102,\n                \"from\": \"fb2011\",\n                \"to\": \"fb2101\",\n                \"newClose\": 1294.0,\n                \"oldClose\": 1265.5\n            },\n            {\n                \"date\": 20210104,\n                \"from\": \"fb2101\",\n                \"to\": \"fb2102\",\n                \"newClose\": 1320.5,\n                \"oldClose\": 1335.0\n            },\n            {\n                \"date\": 20210201,\n                \"from\": \"fb2102\",\n                \"to\": \"fb2103\",\n                \"newClose\": 1282.0,\n                \"oldClose\": 1240.0\n            },\n            {\n                \"date\": 20210301,\n                \"from\": \"fb2103\",\n                \"to\": \"fb2105\",\n                \"newClose\": 1325.0,\n                \"oldClose\": 1156.0\n            },\n            {\n                \"date\": 20210506,\n                \"from\": \"fb2105\",\n                \"to\": \"fb2106\",\n                \"newClose\": 1348.0,\n                \"oldClose\": 1309.0\n            },\n            {\n                \"date\": 20210601,\n                \"from\": \"fb2106\",\n                \"to\": \"fb2109\",\n                \"newClose\": 1417.0,\n                \"oldClose\": 1334.5\n            },\n            {\n                \"date\": 20210901,\n                \"from\": \"fb2109\",\n                \"to\": \"fb2110\",\n                \"newClose\": 1355.0,\n                \"oldClose\": 1262.0\n            },\n            {\n                \"date\": 20211008,\n                \"from\": \"fb2110\",\n                \"to\": \"fb2201\",\n                \"newClose\": 1438.5,\n                \"oldClose\": 1440.0\n            }\n        ],\n        \"i\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"i1605\",\n                \"newClose\": 321.5,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160321,\n                \"from\": \"i1605\",\n                \"to\": \"i1609\",\n                \"newClose\": 422.5,\n                \"oldClose\": 456.0\n            },\n            {\n                \"date\": 20160811,\n                \"from\": \"i1609\",\n                \"to\": \"i1701\",\n                \"newClose\": 431.0,\n                \"oldClose\": 487.0\n            },\n            {\n                \"date\": 20161125,\n                \"from\": \"i1701\",\n                \"to\": \"i1705\",\n                \"newClose\": 613.0,\n                \"oldClose\": 653.5\n            },\n            {\n                \"date\": 20170322,\n                \"from\": \"i1705\",\n                \"to\": \"i1709\",\n                \"newClose\": 577.0,\n                \"oldClose\": 665.5\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"i1709\",\n                \"to\": \"i1801\",\n                \"newClose\": 549.0,\n                \"oldClose\": 585.0\n            },\n            {\n                \"date\": 20171123,\n                \"from\": \"i1801\",\n                \"to\": \"i1805\",\n                \"newClose\": 507.5,\n                \"oldClose\": 491.5\n            },\n            {\n                \"date\": 20180404,\n                \"from\": \"i1805\",\n                \"to\": \"i1809\",\n                \"newClose\": 438.5,\n                \"oldClose\": 431.0\n            },\n            {\n                \"date\": 20180807,\n                \"from\": \"i1809\",\n                \"to\": \"i1901\",\n                \"newClose\": 515.0,\n                \"oldClose\": 503.5\n            },\n            {\n                \"date\": 20181203,\n                \"from\": \"i1901\",\n                \"to\": \"i1905\",\n                \"newClose\": 463.0,\n                \"oldClose\": 495.5\n            },\n            {\n                \"date\": 20190408,\n                \"from\": \"i1905\",\n                \"to\": \"i1909\",\n                \"newClose\": 653.5,\n                \"oldClose\": 712.0\n            },\n            {\n                \"date\": 20190725,\n                \"from\": \"i1909\",\n                \"to\": \"i2001\",\n                \"newClose\": 739.0,\n                \"oldClose\": 871.5\n            },\n            {\n                \"date\": 20191204,\n                \"from\": \"i2001\",\n                \"to\": \"i2005\",\n                \"newClose\": 619.5,\n                \"oldClose\": 662.0\n            },\n            {\n                \"date\": 20200331,\n                \"from\": \"i2005\",\n                \"to\": \"i2009\",\n                \"newClose\": 574.5,\n                \"oldClose\": 650.5\n            },\n            {\n                \"date\": 20200810,\n                \"from\": \"i2009\",\n                \"to\": \"i2101\",\n                \"newClose\": 822.5,\n                \"oldClose\": 894.0\n            },\n            {\n                \"date\": 20201207,\n                \"from\": \"i2101\",\n                \"to\": \"i2105\",\n                \"newClose\": 913.5,\n                \"oldClose\": 967.5\n            },\n            {\n                \"date\": 20210401,\n                \"from\": \"i2105\",\n                \"to\": \"i2109\",\n                \"newClose\": 975.5,\n                \"oldClose\": 1104.0\n            },\n            {\n                \"date\": 20210804,\n                \"from\": \"i2109\",\n                \"to\": \"i2201\",\n                \"newClose\": 941.0,\n                \"oldClose\": 1067.0\n            }\n        ],\n        \"j\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"j1605\",\n                \"newClose\": 636.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160325,\n                \"from\": \"j1605\",\n                \"to\": \"j1609\",\n                \"newClose\": 764.0,\n                \"oldClose\": 767.0\n            },\n            {\n                \"date\": 20160816,\n                \"from\": \"j1609\",\n                \"to\": \"j1701\",\n                \"newClose\": 1226.5,\n                \"oldClose\": 1261.0\n            },\n            {\n                \"date\": 20161202,\n                \"from\": \"j1701\",\n                \"to\": \"j1705\",\n                \"newClose\": 1728.0,\n                \"oldClose\": 2064.0\n            },\n            {\n                \"date\": 20170331,\n                \"from\": \"j1705\",\n                \"to\": \"j1709\",\n                \"newClose\": 1777.0,\n                \"oldClose\": 1900.5\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"j1709\",\n                \"to\": \"j1801\",\n                \"newClose\": 2081.0,\n                \"oldClose\": 2050.5\n            },\n            {\n                \"date\": 20171129,\n                \"from\": \"j1801\",\n                \"to\": \"j1805\",\n                \"newClose\": 2079.5,\n                \"oldClose\": 1997.0\n            },\n            {\n                \"date\": 20180411,\n                \"from\": \"j1805\",\n                \"to\": \"j1809\",\n                \"newClose\": 1745.5,\n                \"oldClose\": 1814.0\n            },\n            {\n                \"date\": 20180809,\n                \"from\": \"j1809\",\n                \"to\": \"j1901\",\n                \"newClose\": 2450.0,\n                \"oldClose\": 2469.0\n            },\n            {\n                \"date\": 20181205,\n                \"from\": \"j1901\",\n                \"to\": \"j1905\",\n                \"newClose\": 1986.0,\n                \"oldClose\": 2337.0\n            },\n            {\n                \"date\": 20190404,\n                \"from\": \"j1905\",\n                \"to\": \"j1909\",\n                \"newClose\": 2036.0,\n                \"oldClose\": 2026.5\n            },\n            {\n                \"date\": 20190806,\n                \"from\": \"j1909\",\n                \"to\": \"j2001\",\n                \"newClose\": 2003.0,\n                \"oldClose\": 2036.5\n            },\n            {\n                \"date\": 20191211,\n                \"from\": \"j2001\",\n                \"to\": \"j2005\",\n                \"newClose\": 1863.0,\n                \"oldClose\": 1918.0\n            },\n            {\n                \"date\": 20200331,\n                \"from\": \"j2005\",\n                \"to\": \"j2009\",\n                \"newClose\": 1655.5,\n                \"oldClose\": 1763.5\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"j2009\",\n                \"to\": \"j2101\",\n                \"newClose\": 2010.5,\n                \"oldClose\": 2008.5\n            },\n            {\n                \"date\": 20201119,\n                \"from\": \"j2101\",\n                \"to\": \"j2102\",\n                \"newClose\": 2335.0,\n                \"oldClose\": 2417.5\n            },\n            {\n                \"date\": 20201207,\n                \"from\": \"j2102\",\n                \"to\": \"j2105\",\n                \"newClose\": 2443.5,\n                \"oldClose\": 2532.5\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"j2105\",\n                \"to\": \"j2109\",\n                \"newClose\": 2540.0,\n                \"oldClose\": 2472.5\n            },\n            {\n                \"date\": 20210812,\n                \"from\": \"j2109\",\n                \"to\": \"j2201\",\n                \"newClose\": 2869.0,\n                \"oldClose\": 3103.5\n            }\n        ],\n        \"jd\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"jd1605\",\n                \"newClose\": 3188.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160324,\n                \"from\": \"jd1605\",\n                \"to\": \"jd1609\",\n                \"newClose\": 3787.0,\n                \"oldClose\": 3226.0\n            },\n            {\n                \"date\": 20160801,\n                \"from\": \"jd1609\",\n                \"to\": \"jd1701\",\n                \"newClose\": 3433.0,\n                \"oldClose\": 3820.0\n            },\n            {\n                \"date\": 20161129,\n                \"from\": \"jd1701\",\n                \"to\": \"jd1705\",\n                \"newClose\": 3521.0,\n                \"oldClose\": 3586.0\n            },\n            {\n                \"date\": 20170412,\n                \"from\": \"jd1705\",\n                \"to\": \"jd1709\",\n                \"newClose\": 3926.0,\n                \"oldClose\": 2878.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"jd1709\",\n                \"to\": \"jd1801\",\n                \"newClose\": 4345.0,\n                \"oldClose\": 4059.0\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"jd1801\",\n                \"to\": \"jd1805\",\n                \"newClose\": 3987.0,\n                \"oldClose\": 4497.0\n            },\n            {\n                \"date\": 20180409,\n                \"from\": \"jd1805\",\n                \"to\": \"jd1809\",\n                \"newClose\": 4044.0,\n                \"oldClose\": 3489.0\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"jd1809\",\n                \"to\": \"jd1901\",\n                \"newClose\": 3868.0,\n                \"oldClose\": 4230.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"jd1901\",\n                \"to\": \"jd1905\",\n                \"newClose\": 3511.0,\n                \"oldClose\": 4140.0\n            },\n            {\n                \"date\": 20190404,\n                \"from\": \"jd1905\",\n                \"to\": \"jd1909\",\n                \"newClose\": 4209.0,\n                \"oldClose\": 3499.0\n            },\n            {\n                \"date\": 20190807,\n                \"from\": \"jd1909\",\n                \"to\": \"jd2001\",\n                \"newClose\": 4271.0,\n                \"oldClose\": 4413.0\n            },\n            {\n                \"date\": 20191203,\n                \"from\": \"jd2001\",\n                \"to\": \"jd2005\",\n                \"newClose\": 4148.0,\n                \"oldClose\": 4415.0\n            },\n            {\n                \"date\": 20200203,\n                \"from\": \"jd2005\",\n                \"to\": \"jd2009\",\n                \"newClose\": 3832.0,\n                \"oldClose\": 3203.0\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"jd2009\",\n                \"to\": \"jd2010\",\n                \"newClose\": 3698.0,\n                \"oldClose\": 3739.0\n            },\n            {\n                \"date\": 20200916,\n                \"from\": \"jd2010\",\n                \"to\": \"jd2011\",\n                \"newClose\": 3509.0,\n                \"oldClose\": 3404.0\n            },\n            {\n                \"date\": 20201022,\n                \"from\": \"jd2011\",\n                \"to\": \"jd2101\",\n                \"newClose\": 3998.0,\n                \"oldClose\": 3520.0\n            },\n            {\n                \"date\": 20201209,\n                \"from\": \"jd2101\",\n                \"to\": \"jd2105\",\n                \"newClose\": 3674.0,\n                \"oldClose\": 3800.0\n            },\n            {\n                \"date\": 20210414,\n                \"from\": \"jd2105\",\n                \"to\": \"jd2109\",\n                \"newClose\": 4774.0,\n                \"oldClose\": 4295.0\n            },\n            {\n                \"date\": 20210818,\n                \"from\": \"jd2109\",\n                \"to\": \"jd2201\",\n                \"newClose\": 4324.0,\n                \"oldClose\": 4396.0\n            }\n        ],\n        \"jm\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"jm1605\",\n                \"newClose\": 555.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160331,\n                \"from\": \"jm1605\",\n                \"to\": \"jm1609\",\n                \"newClose\": 642.5,\n                \"oldClose\": 616.5\n            },\n            {\n                \"date\": 20160815,\n                \"from\": \"jm1609\",\n                \"to\": \"jm1701\",\n                \"newClose\": 865.0,\n                \"oldClose\": 766.5\n            },\n            {\n                \"date\": 20161130,\n                \"from\": \"jm1701\",\n                \"to\": \"jm1705\",\n                \"newClose\": 1294.5,\n                \"oldClose\": 1510.5\n            },\n            {\n                \"date\": 20170331,\n                \"from\": \"jm1705\",\n                \"to\": \"jm1709\",\n                \"newClose\": 1235.0,\n                \"oldClose\": 1271.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"jm1709\",\n                \"to\": \"jm1801\",\n                \"newClose\": 1281.5,\n                \"oldClose\": 1252.5\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"jm1801\",\n                \"to\": \"jm1805\",\n                \"newClose\": 1403.0,\n                \"oldClose\": 1363.0\n            },\n            {\n                \"date\": 20180411,\n                \"from\": \"jm1805\",\n                \"to\": \"jm1809\",\n                \"newClose\": 1149.5,\n                \"oldClose\": 1264.5\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"jm1809\",\n                \"to\": \"jm1901\",\n                \"newClose\": 1273.5,\n                \"oldClose\": 1208.5\n            },\n            {\n                \"date\": 20181212,\n                \"from\": \"jm1901\",\n                \"to\": \"jm1905\",\n                \"newClose\": 1204.0,\n                \"oldClose\": 1433.5\n            },\n            {\n                \"date\": 20190408,\n                \"from\": \"jm1905\",\n                \"to\": \"jm1909\",\n                \"newClose\": 1360.0,\n                \"oldClose\": 1258.5\n            },\n            {\n                \"date\": 20190820,\n                \"from\": \"jm1909\",\n                \"to\": \"jm2001\",\n                \"newClose\": 1338.0,\n                \"oldClose\": 1405.0\n            },\n            {\n                \"date\": 20191219,\n                \"from\": \"jm2001\",\n                \"to\": \"jm2005\",\n                \"newClose\": 1184.5,\n                \"oldClose\": 1236.0\n            },\n            {\n                \"date\": 20200403,\n                \"from\": \"jm2005\",\n                \"to\": \"jm2009\",\n                \"newClose\": 1075.0,\n                \"oldClose\": 1210.0\n            },\n            {\n                \"date\": 20200821,\n                \"from\": \"jm2009\",\n                \"to\": \"jm2101\",\n                \"newClose\": 1198.5,\n                \"oldClose\": 1217.5\n            },\n            {\n                \"date\": 20201029,\n                \"from\": \"jm2101\",\n                \"to\": \"jm2102\",\n                \"newClose\": 1322.5,\n                \"oldClose\": 1357.5\n            },\n            {\n                \"date\": 20201209,\n                \"from\": \"jm2102\",\n                \"to\": \"jm2105\",\n                \"newClose\": 1529.5,\n                \"oldClose\": 1596.5\n            },\n            {\n                \"date\": 20210420,\n                \"from\": \"jm2105\",\n                \"to\": \"jm2109\",\n                \"newClose\": 1739.5,\n                \"oldClose\": 1643.5\n            },\n            {\n                \"date\": 20210810,\n                \"from\": \"jm2109\",\n                \"to\": \"jm2201\",\n                \"newClose\": 2198.0,\n                \"oldClose\": 2344.0\n            }\n        ],\n        \"l\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"l1605\",\n                \"newClose\": 8030.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160325,\n                \"from\": \"l1605\",\n                \"to\": \"l1609\",\n                \"newClose\": 8725.0,\n                \"oldClose\": 9430.0\n            },\n            {\n                \"date\": 20160725,\n                \"from\": \"l1609\",\n                \"to\": \"l1701\",\n                \"newClose\": 8575.0,\n                \"oldClose\": 8865.0\n            },\n            {\n                \"date\": 20161128,\n                \"from\": \"l1701\",\n                \"to\": \"l1705\",\n                \"newClose\": 9655.0,\n                \"oldClose\": 9565.0\n            },\n            {\n                \"date\": 20170407,\n                \"from\": \"l1705\",\n                \"to\": \"l1709\",\n                \"newClose\": 9370.0,\n                \"oldClose\": 9485.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"l1709\",\n                \"to\": \"l1801\",\n                \"newClose\": 9780.0,\n                \"oldClose\": 9575.0\n            },\n            {\n                \"date\": 20171128,\n                \"from\": \"l1801\",\n                \"to\": \"l1805\",\n                \"newClose\": 9375.0,\n                \"oldClose\": 9510.0\n            },\n            {\n                \"date\": 20180404,\n                \"from\": \"l1805\",\n                \"to\": \"l1809\",\n                \"newClose\": 9145.0,\n                \"oldClose\": 9195.0\n            },\n            {\n                \"date\": 20180806,\n                \"from\": \"l1809\",\n                \"to\": \"l1901\",\n                \"newClose\": 9630.0,\n                \"oldClose\": 9630.0\n            },\n            {\n                \"date\": 20181129,\n                \"from\": \"l1901\",\n                \"to\": \"l1905\",\n                \"newClose\": 8270.0,\n                \"oldClose\": 8685.0\n            },\n            {\n                \"date\": 20190403,\n                \"from\": \"l1905\",\n                \"to\": \"l1909\",\n                \"newClose\": 8375.0,\n                \"oldClose\": 8505.0\n            },\n            {\n                \"date\": 20190809,\n                \"from\": \"l1909\",\n                \"to\": \"l2001\",\n                \"newClose\": 7560.0,\n                \"oldClose\": 7535.0\n            },\n            {\n                \"date\": 20191206,\n                \"from\": \"l2001\",\n                \"to\": \"l2005\",\n                \"newClose\": 7270.0,\n                \"oldClose\": 7255.0\n            },\n            {\n                \"date\": 20200331,\n                \"from\": \"l2005\",\n                \"to\": \"l2009\",\n                \"newClose\": 5505.0,\n                \"oldClose\": 5565.0\n            },\n            {\n                \"date\": 20200818,\n                \"from\": \"l2009\",\n                \"to\": \"l2101\",\n                \"newClose\": 7165.0,\n                \"oldClose\": 7175.0\n            },\n            {\n                \"date\": 20201215,\n                \"from\": \"l2101\",\n                \"to\": \"l2105\",\n                \"newClose\": 7815.0,\n                \"oldClose\": 7800.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"l2105\",\n                \"to\": \"l2109\",\n                \"newClose\": 8345.0,\n                \"oldClose\": 8355.0\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"l2109\",\n                \"to\": \"l2201\",\n                \"newClose\": 8415.0,\n                \"oldClose\": 8430.0\n            }\n        ],\n        \"m\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"m1605\",\n                \"newClose\": 2326.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160303,\n                \"from\": \"m1605\",\n                \"to\": \"m1609\",\n                \"newClose\": 2304.0,\n                \"oldClose\": 2328.0\n            },\n            {\n                \"date\": 20160715,\n                \"from\": \"m1609\",\n                \"to\": \"m1701\",\n                \"newClose\": 3155.0,\n                \"oldClose\": 3200.0\n            },\n            {\n                \"date\": 20161114,\n                \"from\": \"m1701\",\n                \"to\": \"m1705\",\n                \"newClose\": 2753.0,\n                \"oldClose\": 2868.0\n            },\n            {\n                \"date\": 20170316,\n                \"from\": \"m1705\",\n                \"to\": \"m1709\",\n                \"newClose\": 2889.0,\n                \"oldClose\": 2864.0\n            },\n            {\n                \"date\": 20170726,\n                \"from\": \"m1709\",\n                \"to\": \"m1801\",\n                \"newClose\": 2824.0,\n                \"oldClose\": 2808.0\n            },\n            {\n                \"date\": 20171122,\n                \"from\": \"m1801\",\n                \"to\": \"m1805\",\n                \"newClose\": 2826.0,\n                \"oldClose\": 2902.0\n            },\n            {\n                \"date\": 20180315,\n                \"from\": \"m1805\",\n                \"to\": \"m1809\",\n                \"newClose\": 2995.0,\n                \"oldClose\": 3036.0\n            },\n            {\n                \"date\": 20180723,\n                \"from\": \"m1809\",\n                \"to\": \"m1901\",\n                \"newClose\": 3154.0,\n                \"oldClose\": 3124.0\n            },\n            {\n                \"date\": 20181207,\n                \"from\": \"m1901\",\n                \"to\": \"m1905\",\n                \"newClose\": 2711.0,\n                \"oldClose\": 2911.0\n            },\n            {\n                \"date\": 20190402,\n                \"from\": \"m1905\",\n                \"to\": \"m1909\",\n                \"newClose\": 2634.0,\n                \"oldClose\": 2541.0\n            },\n            {\n                \"date\": 20190808,\n                \"from\": \"m1909\",\n                \"to\": \"m2001\",\n                \"newClose\": 2873.0,\n                \"oldClose\": 2883.0\n            },\n            {\n                \"date\": 20191126,\n                \"from\": \"m2001\",\n                \"to\": \"m2005\",\n                \"newClose\": 2761.0,\n                \"oldClose\": 2880.0\n            },\n            {\n                \"date\": 20200311,\n                \"from\": \"m2005\",\n                \"to\": \"m2009\",\n                \"newClose\": 2733.0,\n                \"oldClose\": 2681.0\n            },\n            {\n                \"date\": 20200804,\n                \"from\": \"m2009\",\n                \"to\": \"m2101\",\n                \"newClose\": 2927.0,\n                \"oldClose\": 2907.0\n            },\n            {\n                \"date\": 20201112,\n                \"from\": \"m2101\",\n                \"to\": \"m2105\",\n                \"newClose\": 3185.0,\n                \"oldClose\": 3204.0\n            },\n            {\n                \"date\": 20210331,\n                \"from\": \"m2105\",\n                \"to\": \"m2109\",\n                \"newClose\": 3383.0,\n                \"oldClose\": 3279.0\n            },\n            {\n                \"date\": 20210810,\n                \"from\": \"m2109\",\n                \"to\": \"m2201\",\n                \"newClose\": 3591.0,\n                \"oldClose\": 3628.0\n            }\n        ],\n        \"p\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"p1605\",\n                \"newClose\": 4804.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160315,\n                \"from\": \"p1605\",\n                \"to\": \"p1609\",\n                \"newClose\": 5178.0,\n                \"oldClose\": 5116.0\n            },\n            {\n                \"date\": 20160706,\n                \"from\": \"p1609\",\n                \"to\": \"p1701\",\n                \"newClose\": 5032.0,\n                \"oldClose\": 5080.0\n            },\n            {\n                \"date\": 20161123,\n                \"from\": \"p1701\",\n                \"to\": \"p1705\",\n                \"newClose\": 6092.0,\n                \"oldClose\": 6204.0\n            },\n            {\n                \"date\": 20170309,\n                \"from\": \"p1705\",\n                \"to\": \"p1709\",\n                \"newClose\": 5664.0,\n                \"oldClose\": 5882.0\n            },\n            {\n                \"date\": 20170705,\n                \"from\": \"p1709\",\n                \"to\": \"p1801\",\n                \"newClose\": 5144.0,\n                \"oldClose\": 5338.0\n            },\n            {\n                \"date\": 20171120,\n                \"from\": \"p1801\",\n                \"to\": \"p1805\",\n                \"newClose\": 5526.0,\n                \"oldClose\": 5434.0\n            },\n            {\n                \"date\": 20180321,\n                \"from\": \"p1805\",\n                \"to\": \"p1809\",\n                \"newClose\": 5090.0,\n                \"oldClose\": 5114.0\n            },\n            {\n                \"date\": 20180726,\n                \"from\": \"p1809\",\n                \"to\": \"p1901\",\n                \"newClose\": 4802.0,\n                \"oldClose\": 4692.0\n            },\n            {\n                \"date\": 20181204,\n                \"from\": \"p1901\",\n                \"to\": \"p1905\",\n                \"newClose\": 4514.0,\n                \"oldClose\": 4224.0\n            },\n            {\n                \"date\": 20190410,\n                \"from\": \"p1905\",\n                \"to\": \"p1909\",\n                \"newClose\": 4692.0,\n                \"oldClose\": 4466.0\n            },\n            {\n                \"date\": 20190807,\n                \"from\": \"p1909\",\n                \"to\": \"p2001\",\n                \"newClose\": 4630.0,\n                \"oldClose\": 4456.0\n            },\n            {\n                \"date\": 20191203,\n                \"from\": \"p2001\",\n                \"to\": \"p2005\",\n                \"newClose\": 5718.0,\n                \"oldClose\": 5594.0\n            },\n            {\n                \"date\": 20200407,\n                \"from\": \"p2005\",\n                \"to\": \"p2009\",\n                \"newClose\": 4738.0,\n                \"oldClose\": 4910.0\n            },\n            {\n                \"date\": 20200813,\n                \"from\": \"p2009\",\n                \"to\": \"p2101\",\n                \"newClose\": 5694.0,\n                \"oldClose\": 5876.0\n            },\n            {\n                \"date\": 20201209,\n                \"from\": \"p2101\",\n                \"to\": \"p2102\",\n                \"newClose\": 6808.0,\n                \"oldClose\": 6738.0\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"p2102\",\n                \"to\": \"p2105\",\n                \"newClose\": 6568.0,\n                \"oldClose\": 7022.0\n            },\n            {\n                \"date\": 20210412,\n                \"from\": \"p2105\",\n                \"to\": \"p2109\",\n                \"newClose\": 6716.0,\n                \"oldClose\": 7434.0\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"p2109\",\n                \"to\": \"p2201\",\n                \"newClose\": 8418.0,\n                \"oldClose\": 8948.0\n            }\n        ],\n        \"pp\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"pp1605\",\n                \"newClose\": 5792.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160328,\n                \"from\": \"pp1605\",\n                \"to\": \"pp1609\",\n                \"newClose\": 6836.0,\n                \"oldClose\": 7355.0\n            },\n            {\n                \"date\": 20160811,\n                \"from\": \"pp1609\",\n                \"to\": \"pp1701\",\n                \"newClose\": 7365.0,\n                \"oldClose\": 8212.0\n            },\n            {\n                \"date\": 20161201,\n                \"from\": \"pp1701\",\n                \"to\": \"pp1705\",\n                \"newClose\": 8330.0,\n                \"oldClose\": 8370.0\n            },\n            {\n                \"date\": 20170411,\n                \"from\": \"pp1705\",\n                \"to\": \"pp1709\",\n                \"newClose\": 7996.0,\n                \"oldClose\": 8100.0\n            },\n            {\n                \"date\": 20170809,\n                \"from\": \"pp1709\",\n                \"to\": \"pp1801\",\n                \"newClose\": 8779.0,\n                \"oldClose\": 8540.0\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"pp1801\",\n                \"to\": \"pp1805\",\n                \"newClose\": 8903.0,\n                \"oldClose\": 9030.0\n            },\n            {\n                \"date\": 20180409,\n                \"from\": \"pp1805\",\n                \"to\": \"pp1809\",\n                \"newClose\": 9062.0,\n                \"oldClose\": 8948.0\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"pp1809\",\n                \"to\": \"pp1901\",\n                \"newClose\": 10121.0,\n                \"oldClose\": 10037.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"pp1901\",\n                \"to\": \"pp1905\",\n                \"newClose\": 8287.0,\n                \"oldClose\": 8870.0\n            },\n            {\n                \"date\": 20190408,\n                \"from\": \"pp1905\",\n                \"to\": \"pp1909\",\n                \"newClose\": 8810.0,\n                \"oldClose\": 9002.0\n            },\n            {\n                \"date\": 20190808,\n                \"from\": \"pp1909\",\n                \"to\": \"pp2001\",\n                \"newClose\": 8055.0,\n                \"oldClose\": 8472.0\n            },\n            {\n                \"date\": 20191211,\n                \"from\": \"pp2001\",\n                \"to\": \"pp2005\",\n                \"newClose\": 7549.0,\n                \"oldClose\": 7844.0\n            },\n            {\n                \"date\": 20200402,\n                \"from\": \"pp2005\",\n                \"to\": \"pp2009\",\n                \"newClose\": 6151.0,\n                \"oldClose\": 6265.0\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"pp2009\",\n                \"to\": \"pp2101\",\n                \"newClose\": 7601.0,\n                \"oldClose\": 7692.0\n            },\n            {\n                \"date\": 20201215,\n                \"from\": \"pp2101\",\n                \"to\": \"pp2105\",\n                \"newClose\": 8284.0,\n                \"oldClose\": 8319.0\n            },\n            {\n                \"date\": 20210421,\n                \"from\": \"pp2105\",\n                \"to\": \"pp2109\",\n                \"newClose\": 8309.0,\n                \"oldClose\": 8514.0\n            },\n            {\n                \"date\": 20210819,\n                \"from\": \"pp2109\",\n                \"to\": \"pp2201\",\n                \"newClose\": 8271.0,\n                \"oldClose\": 8420.0\n            }\n        ],\n        \"v\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"v1605\",\n                \"newClose\": 4820.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160325,\n                \"from\": \"v1605\",\n                \"to\": \"v1609\",\n                \"newClose\": 5190.0,\n                \"oldClose\": 5290.0\n            },\n            {\n                \"date\": 20160818,\n                \"from\": \"v1609\",\n                \"to\": \"v1701\",\n                \"newClose\": 5655.0,\n                \"oldClose\": 5845.0\n            },\n            {\n                \"date\": 20161202,\n                \"from\": \"v1701\",\n                \"to\": \"v1705\",\n                \"newClose\": 6750.0,\n                \"oldClose\": 6950.0\n            },\n            {\n                \"date\": 20170407,\n                \"from\": \"v1705\",\n                \"to\": \"v1709\",\n                \"newClose\": 6035.0,\n                \"oldClose\": 6030.0\n            },\n            {\n                \"date\": 20170809,\n                \"from\": \"v1709\",\n                \"to\": \"v1801\",\n                \"newClose\": 7400.0,\n                \"oldClose\": 7540.0\n            },\n            {\n                \"date\": 20171129,\n                \"from\": \"v1801\",\n                \"to\": \"v1805\",\n                \"newClose\": 6260.0,\n                \"oldClose\": 6155.0\n            },\n            {\n                \"date\": 20180409,\n                \"from\": \"v1805\",\n                \"to\": \"v1809\",\n                \"newClose\": 6680.0,\n                \"oldClose\": 6635.0\n            },\n            {\n                \"date\": 20180809,\n                \"from\": \"v1809\",\n                \"to\": \"v1901\",\n                \"newClose\": 7370.0,\n                \"oldClose\": 7340.0\n            },\n            {\n                \"date\": 20181210,\n                \"from\": \"v1901\",\n                \"to\": \"v1905\",\n                \"newClose\": 6265.0,\n                \"oldClose\": 6535.0\n            },\n            {\n                \"date\": 20190403,\n                \"from\": \"v1905\",\n                \"to\": \"v1909\",\n                \"newClose\": 6700.0,\n                \"oldClose\": 6670.0\n            },\n            {\n                \"date\": 20190813,\n                \"from\": \"v1909\",\n                \"to\": \"v2001\",\n                \"newClose\": 6610.0,\n                \"oldClose\": 6790.0\n            },\n            {\n                \"date\": 20191211,\n                \"from\": \"v2001\",\n                \"to\": \"v2005\",\n                \"newClose\": 6630.0,\n                \"oldClose\": 6745.0\n            },\n            {\n                \"date\": 20200331,\n                \"from\": \"v2005\",\n                \"to\": \"v2009\",\n                \"newClose\": 5040.0,\n                \"oldClose\": 5015.0\n            },\n            {\n                \"date\": 20200817,\n                \"from\": \"v2009\",\n                \"to\": \"v2101\",\n                \"newClose\": 6580.0,\n                \"oldClose\": 6665.0\n            },\n            {\n                \"date\": 20201015,\n                \"from\": \"v2101\",\n                \"to\": \"v2102\",\n                \"newClose\": 6750.0,\n                \"oldClose\": 6860.0\n            },\n            {\n                \"date\": 20201104,\n                \"from\": \"v2102\",\n                \"to\": \"v2105\",\n                \"newClose\": 6740.0,\n                \"oldClose\": 6965.0\n            },\n            {\n                \"date\": 20210414,\n                \"from\": \"v2105\",\n                \"to\": \"v2109\",\n                \"newClose\": 8640.0,\n                \"oldClose\": 8715.0\n            },\n            {\n                \"date\": 20210819,\n                \"from\": \"v2109\",\n                \"to\": \"v2201\",\n                \"newClose\": 9140.0,\n                \"oldClose\": 9375.0\n            }\n        ],\n        \"y\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"y1605\",\n                \"newClose\": 5658.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160308,\n                \"from\": \"y1605\",\n                \"to\": \"y1609\",\n                \"newClose\": 5776.0,\n                \"oldClose\": 5708.0\n            },\n            {\n                \"date\": 20160706,\n                \"from\": \"y1609\",\n                \"to\": \"y1701\",\n                \"newClose\": 6246.0,\n                \"oldClose\": 6098.0\n            },\n            {\n                \"date\": 20161123,\n                \"from\": \"y1701\",\n                \"to\": \"y1705\",\n                \"newClose\": 6824.0,\n                \"oldClose\": 6730.0\n            },\n            {\n                \"date\": 20170321,\n                \"from\": \"y1705\",\n                \"to\": \"y1709\",\n                \"newClose\": 6498.0,\n                \"oldClose\": 6380.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"y1709\",\n                \"to\": \"y1801\",\n                \"newClose\": 6272.0,\n                \"oldClose\": 6136.0\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"y1801\",\n                \"to\": \"y1805\",\n                \"newClose\": 6046.0,\n                \"oldClose\": 5868.0\n            },\n            {\n                \"date\": 20180326,\n                \"from\": \"y1805\",\n                \"to\": \"y1809\",\n                \"newClose\": 5856.0,\n                \"oldClose\": 5680.0\n            },\n            {\n                \"date\": 20180726,\n                \"from\": \"y1809\",\n                \"to\": \"y1901\",\n                \"newClose\": 5754.0,\n                \"oldClose\": 5568.0\n            },\n            {\n                \"date\": 20181204,\n                \"from\": \"y1901\",\n                \"to\": \"y1905\",\n                \"newClose\": 5534.0,\n                \"oldClose\": 5400.0\n            },\n            {\n                \"date\": 20190403,\n                \"from\": \"y1905\",\n                \"to\": \"y1909\",\n                \"newClose\": 5598.0,\n                \"oldClose\": 5440.0\n            },\n            {\n                \"date\": 20190802,\n                \"from\": \"y1909\",\n                \"to\": \"y2001\",\n                \"newClose\": 5718.0,\n                \"oldClose\": 5558.0\n            },\n            {\n                \"date\": 20191128,\n                \"from\": \"y2001\",\n                \"to\": \"y2005\",\n                \"newClose\": 6214.0,\n                \"oldClose\": 6228.0\n            },\n            {\n                \"date\": 20200325,\n                \"from\": \"y2005\",\n                \"to\": \"y2009\",\n                \"newClose\": 5670.0,\n                \"oldClose\": 5602.0\n            },\n            {\n                \"date\": 20200805,\n                \"from\": \"y2009\",\n                \"to\": \"y2101\",\n                \"newClose\": 6282.0,\n                \"oldClose\": 6332.0\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"y2101\",\n                \"to\": \"y2105\",\n                \"newClose\": 7422.0,\n                \"oldClose\": 7954.0\n            },\n            {\n                \"date\": 20210409,\n                \"from\": \"y2105\",\n                \"to\": \"y2109\",\n                \"newClose\": 8054.0,\n                \"oldClose\": 8612.0\n            },\n            {\n                \"date\": 20210816,\n                \"from\": \"y2109\",\n                \"to\": \"y2201\",\n                \"newClose\": 9076.0,\n                \"oldClose\": 9320.0\n            }\n        ],\n        \"c\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"c1605\",\n                \"newClose\": 1893.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160222,\n                \"from\": \"c1605\",\n                \"to\": \"c1609\",\n                \"newClose\": 1643.0,\n                \"oldClose\": 1906.0\n            },\n            {\n                \"date\": 20160321,\n                \"from\": \"c1609\",\n                \"to\": \"c1701\",\n                \"newClose\": 1518.0,\n                \"oldClose\": 1631.0\n            },\n            {\n                \"date\": 20161114,\n                \"from\": \"c1701\",\n                \"to\": \"c1705\",\n                \"newClose\": 1567.0,\n                \"oldClose\": 1648.0\n            },\n            {\n                \"date\": 20170309,\n                \"from\": \"c1705\",\n                \"to\": \"c1709\",\n                \"newClose\": 1688.0,\n                \"oldClose\": 1609.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"c1709\",\n                \"to\": \"c1801\",\n                \"newClose\": 1680.0,\n                \"oldClose\": 1667.0\n            },\n            {\n                \"date\": 20171205,\n                \"from\": \"c1801\",\n                \"to\": \"c1805\",\n                \"newClose\": 1777.0,\n                \"oldClose\": 1722.0\n            },\n            {\n                \"date\": 20180315,\n                \"from\": \"c1805\",\n                \"to\": \"c1809\",\n                \"newClose\": 1764.0,\n                \"oldClose\": 1806.0\n            },\n            {\n                \"date\": 20180606,\n                \"from\": \"c1809\",\n                \"to\": \"c1811\",\n                \"newClose\": 1795.0,\n                \"oldClose\": 1763.0\n            },\n            {\n                \"date\": 20180608,\n                \"from\": \"c1811\",\n                \"to\": \"c1901\",\n                \"newClose\": 1809.0,\n                \"oldClose\": 1791.0\n            },\n            {\n                \"date\": 20181119,\n                \"from\": \"c1901\",\n                \"to\": \"c1905\",\n                \"newClose\": 1982.0,\n                \"oldClose\": 1898.0\n            },\n            {\n                \"date\": 20190326,\n                \"from\": \"c1905\",\n                \"to\": \"c1909\",\n                \"newClose\": 1847.0,\n                \"oldClose\": 1822.0\n            },\n            {\n                \"date\": 20190805,\n                \"from\": \"c1909\",\n                \"to\": \"c2001\",\n                \"newClose\": 1979.0,\n                \"oldClose\": 1922.0\n            },\n            {\n                \"date\": 20191202,\n                \"from\": \"c2001\",\n                \"to\": \"c2005\",\n                \"newClose\": 1892.0,\n                \"oldClose\": 1823.0\n            },\n            {\n                \"date\": 20200310,\n                \"from\": \"c2005\",\n                \"to\": \"c2009\",\n                \"newClose\": 2001.0,\n                \"oldClose\": 1947.0\n            },\n            {\n                \"date\": 20200806,\n                \"from\": \"c2009\",\n                \"to\": \"c2101\",\n                \"newClose\": 2252.0,\n                \"oldClose\": 2284.0\n            },\n            {\n                \"date\": 20201130,\n                \"from\": \"c2101\",\n                \"to\": \"c2105\",\n                \"newClose\": 2681.0,\n                \"oldClose\": 2601.0\n            },\n            {\n                \"date\": 20210412,\n                \"from\": \"c2105\",\n                \"to\": \"c2109\",\n                \"newClose\": 2617.0,\n                \"oldClose\": 2674.0\n            },\n            {\n                \"date\": 20210813,\n                \"from\": \"c2109\",\n                \"to\": \"c2201\",\n                \"newClose\": 2600.0,\n                \"oldClose\": 2631.0\n            }\n        ],\n        \"bb\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"bb1601\",\n                \"newClose\": 83.4000015258789,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160118,\n                \"from\": \"bb1601\",\n                \"to\": \"bb1609\",\n                \"newClose\": 81.25,\n                \"oldClose\": 72.1500015258789\n            },\n            {\n                \"date\": 20160405,\n                \"from\": \"bb1609\",\n                \"to\": \"bb1701\",\n                \"newClose\": 76.30000305175781,\n                \"oldClose\": 81.0999984741211\n            },\n            {\n                \"date\": 20161118,\n                \"from\": \"bb1705\",\n                \"to\": \"bb1711\",\n                \"newClose\": 107.80000305175781,\n                \"oldClose\": 94.6500015258789\n            },\n            {\n                \"date\": 20170206,\n                \"from\": \"bb1711\",\n                \"to\": \"bb1712\",\n                \"newClose\": 105.44999694824219,\n                \"oldClose\": 96.0\n            },\n            {\n                \"date\": 20170516,\n                \"from\": \"bb1712\",\n                \"to\": \"bb1804\",\n                \"newClose\": 99.05000305175781,\n                \"oldClose\": 106.8499984741211\n            },\n            {\n                \"date\": 20180115,\n                \"from\": \"bb1804\",\n                \"to\": \"bb1805\",\n                \"newClose\": 107.55000305175781,\n                \"oldClose\": 131.5\n            },\n            {\n                \"date\": 20180514,\n                \"from\": \"bb1805\",\n                \"to\": \"bb1809\",\n                \"newClose\": 130.8000030517578,\n                \"oldClose\": 148.0\n            },\n            {\n                \"date\": 20180726,\n                \"from\": \"bb1809\",\n                \"to\": \"bb1901\",\n                \"newClose\": 136.35000610351562,\n                \"oldClose\": 147.0\n            },\n            {\n                \"date\": 20180912,\n                \"from\": \"bb1901\",\n                \"to\": \"bb1903\",\n                \"newClose\": 142.89999389648438,\n                \"oldClose\": 136.35000610351562\n            },\n            {\n                \"date\": 20181128,\n                \"from\": \"bb1903\",\n                \"to\": \"bb1906\",\n                \"newClose\": 121.19999694824219,\n                \"oldClose\": 130.0\n            },\n            {\n                \"date\": 20190312,\n                \"from\": \"bb1906\",\n                \"to\": \"bb1910\",\n                \"newClose\": 170.10000610351562,\n                \"oldClose\": 139.35000610351562\n            },\n            {\n                \"date\": 20190909,\n                \"from\": \"bb1910\",\n                \"to\": \"bb2001\",\n                \"newClose\": 161.35000610351562,\n                \"oldClose\": 156.64999389648438\n            },\n            {\n                \"date\": 20191024,\n                \"from\": \"bb2001\",\n                \"to\": \"bb2003\",\n                \"newClose\": 157.0,\n                \"oldClose\": 153.85000610351562\n            },\n            {\n                \"date\": 20200305,\n                \"from\": \"bb2003\",\n                \"to\": \"bb2004\",\n                \"newClose\": 167.75,\n                \"oldClose\": 247.3000030517578\n            },\n            {\n                \"date\": 20200407,\n                \"from\": \"bb2004\",\n                \"to\": \"bb2005\",\n                \"newClose\": 167.9499969482422,\n                \"oldClose\": 230.5\n            },\n            {\n                \"date\": 20200506,\n                \"from\": \"bb2005\",\n                \"to\": \"bb2006\",\n                \"newClose\": 185.89999389648438,\n                \"oldClose\": 226.5\n            },\n            {\n                \"date\": 20200511,\n                \"from\": \"bb2006\",\n                \"to\": \"bb2009\",\n                \"newClose\": 178.8000030517578,\n                \"oldClose\": 185.0500030517578\n            },\n            {\n                \"date\": 20200907,\n                \"from\": \"bb2009\",\n                \"to\": \"bb2012\",\n                \"newClose\": 337.95001220703125,\n                \"oldClose\": 224.39999389648438\n            },\n            {\n                \"date\": 20201125,\n                \"from\": \"bb2012\",\n                \"to\": \"bb2101\",\n                \"newClose\": 249.0,\n                \"oldClose\": 300.0\n            },\n            {\n                \"date\": 20210507,\n                \"from\": \"bb2105\",\n                \"to\": \"bb2106\",\n                \"newClose\": 210.60000610351562,\n                \"oldClose\": 348.29998779296875\n            },\n            {\n                \"date\": 20210604,\n                \"from\": \"bb2106\",\n                \"to\": \"bb2109\",\n                \"newClose\": 228.25,\n                \"oldClose\": 210.60000610351562\n            },\n            {\n                \"date\": 20210909,\n                \"from\": \"bb2109\",\n                \"to\": \"bb2110\",\n                \"newClose\": 230.64999389648438,\n                \"oldClose\": 228.25\n            }\n        ],\n        \"b\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"b1605\",\n                \"newClose\": 3275.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160107,\n                \"from\": \"b1605\",\n                \"to\": \"b1611\",\n                \"newClose\": 3235.0,\n                \"oldClose\": 3178.0\n            },\n            {\n                \"date\": 20160126,\n                \"from\": \"b1611\",\n                \"to\": \"b1701\",\n                \"newClose\": 3324.0,\n                \"oldClose\": 3240.0\n            },\n            {\n                \"date\": 20160411,\n                \"from\": \"b1701\",\n                \"to\": \"b1703\",\n                \"newClose\": 3296.0,\n                \"oldClose\": 3241.0\n            },\n            {\n                \"date\": 20160713,\n                \"from\": \"b1703\",\n                \"to\": \"b1705\",\n                \"newClose\": 3815.0,\n                \"oldClose\": 3960.0\n            },\n            {\n                \"date\": 20161031,\n                \"from\": \"b1705\",\n                \"to\": \"b1709\",\n                \"newClose\": 3801.0,\n                \"oldClose\": 3821.0\n            },\n            {\n                \"date\": 20170317,\n                \"from\": \"b1709\",\n                \"to\": \"b1711\",\n                \"newClose\": 4000.0,\n                \"oldClose\": 3950.0\n            },\n            {\n                \"date\": 20170327,\n                \"from\": \"b1711\",\n                \"to\": \"b1801\",\n                \"newClose\": 3970.0,\n                \"oldClose\": 4000.0\n            },\n            {\n                \"date\": 20170512,\n                \"from\": \"b1801\",\n                \"to\": \"b1803\",\n                \"newClose\": 3851.0,\n                \"oldClose\": 3825.0\n            },\n            {\n                \"date\": 20170601,\n                \"from\": \"b1803\",\n                \"to\": \"b1805\",\n                \"newClose\": 3180.0,\n                \"oldClose\": 3851.0\n            },\n            {\n                \"date\": 20180208,\n                \"from\": \"b1805\",\n                \"to\": \"b1809\",\n                \"newClose\": 3364.0,\n                \"oldClose\": 3371.0\n            },\n            {\n                \"date\": 20180504,\n                \"from\": \"b1809\",\n                \"to\": \"b1901\",\n                \"newClose\": 3643.0,\n                \"oldClose\": 3554.0\n            },\n            {\n                \"date\": 20180718,\n                \"from\": \"b1901\",\n                \"to\": \"b1905\",\n                \"newClose\": 3316.0,\n                \"oldClose\": 3494.0\n            },\n            {\n                \"date\": 20181210,\n                \"from\": \"b1905\",\n                \"to\": \"b1909\",\n                \"newClose\": 3125.0,\n                \"oldClose\": 3047.0\n            },\n            {\n                \"date\": 20190801,\n                \"from\": \"b1909\",\n                \"to\": \"b1910\",\n                \"newClose\": 3030.0,\n                \"oldClose\": 3021.0\n            },\n            {\n                \"date\": 20190902,\n                \"from\": \"b1910\",\n                \"to\": \"b1911\",\n                \"newClose\": 3420.0,\n                \"oldClose\": 3410.0\n            },\n            {\n                \"date\": 20191008,\n                \"from\": \"b1911\",\n                \"to\": \"b1912\",\n                \"newClose\": 3218.0,\n                \"oldClose\": 3221.0\n            },\n            {\n                \"date\": 20191101,\n                \"from\": \"b1912\",\n                \"to\": \"b2001\",\n                \"newClose\": 3343.0,\n                \"oldClose\": 3373.0\n            },\n            {\n                \"date\": 20191202,\n                \"from\": \"b2001\",\n                \"to\": \"b2002\",\n                \"newClose\": 3142.0,\n                \"oldClose\": 3149.0\n            },\n            {\n                \"date\": 20200102,\n                \"from\": \"b2002\",\n                \"to\": \"b2003\",\n                \"newClose\": 3292.0,\n                \"oldClose\": 3298.0\n            },\n            {\n                \"date\": 20200206,\n                \"from\": \"b2003\",\n                \"to\": \"b2005\",\n                \"newClose\": 3083.0,\n                \"oldClose\": 3093.0\n            },\n            {\n                \"date\": 20200415,\n                \"from\": \"b2005\",\n                \"to\": \"b2006\",\n                \"newClose\": 3059.0,\n                \"oldClose\": 3081.0\n            },\n            {\n                \"date\": 20200522,\n                \"from\": \"b2006\",\n                \"to\": \"b2007\",\n                \"newClose\": 2912.0,\n                \"oldClose\": 2903.0\n            },\n            {\n                \"date\": 20200619,\n                \"from\": \"b2007\",\n                \"to\": \"b2008\",\n                \"newClose\": 3065.0,\n                \"oldClose\": 2974.0\n            },\n            {\n                \"date\": 20200707,\n                \"from\": \"b2008\",\n                \"to\": \"b2009\",\n                \"newClose\": 3206.0,\n                \"oldClose\": 3157.0\n            },\n            {\n                \"date\": 20200810,\n                \"from\": \"b2009\",\n                \"to\": \"b2010\",\n                \"newClose\": 3261.0,\n                \"oldClose\": 3247.0\n            },\n            {\n                \"date\": 20200908,\n                \"from\": \"b2010\",\n                \"to\": \"b2011\",\n                \"newClose\": 3555.0,\n                \"oldClose\": 3520.0\n            },\n            {\n                \"date\": 20201016,\n                \"from\": \"b2011\",\n                \"to\": \"b2012\",\n                \"newClose\": 3753.0,\n                \"oldClose\": 3749.0\n            },\n            {\n                \"date\": 20201113,\n                \"from\": \"b2012\",\n                \"to\": \"b2102\",\n                \"newClose\": 3816.0,\n                \"oldClose\": 3789.0\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"b2102\",\n                \"to\": \"b2103\",\n                \"newClose\": 4326.0,\n                \"oldClose\": 4340.0\n            },\n            {\n                \"date\": 20210223,\n                \"from\": \"b2103\",\n                \"to\": \"b2104\",\n                \"newClose\": 4452.0,\n                \"oldClose\": 4423.0\n            },\n            {\n                \"date\": 20210308,\n                \"from\": \"b2104\",\n                \"to\": \"b2105\",\n                \"newClose\": 4359.0,\n                \"oldClose\": 4518.0\n            },\n            {\n                \"date\": 20210414,\n                \"from\": \"b2105\",\n                \"to\": \"b2106\",\n                \"newClose\": 4046.0,\n                \"oldClose\": 4008.0\n            },\n            {\n                \"date\": 20210517,\n                \"from\": \"b2106\",\n                \"to\": \"b2107\",\n                \"newClose\": 4326.0,\n                \"oldClose\": 4266.0\n            },\n            {\n                \"date\": 20210617,\n                \"from\": \"b2107\",\n                \"to\": \"b2108\",\n                \"newClose\": 4040.0,\n                \"oldClose\": 3986.0\n            },\n            {\n                \"date\": 20210713,\n                \"from\": \"b2108\",\n                \"to\": \"b2109\",\n                \"newClose\": 4393.0,\n                \"oldClose\": 4330.0\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"b2109\",\n                \"to\": \"b2110\",\n                \"newClose\": 4559.0,\n                \"oldClose\": 4525.0\n            },\n            {\n                \"date\": 20210917,\n                \"from\": \"b2110\",\n                \"to\": \"b2111\",\n                \"newClose\": 4624.0,\n                \"oldClose\": 4544.0\n            }\n        ],\n        \"a\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"a1605\",\n                \"newClose\": 3603.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160309,\n                \"from\": \"a1605\",\n                \"to\": \"a1609\",\n                \"newClose\": 3471.0,\n                \"oldClose\": 3580.0\n            },\n            {\n                \"date\": 20160714,\n                \"from\": \"a1609\",\n                \"to\": \"a1701\",\n                \"newClose\": 3912.0,\n                \"oldClose\": 3871.0\n            },\n            {\n                \"date\": 20161129,\n                \"from\": \"a1701\",\n                \"to\": \"a1705\",\n                \"newClose\": 4089.0,\n                \"oldClose\": 3960.0\n            },\n            {\n                \"date\": 20170323,\n                \"from\": \"a1705\",\n                \"to\": \"a1709\",\n                \"newClose\": 3871.0,\n                \"oldClose\": 3842.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"a1709\",\n                \"to\": \"a1801\",\n                \"newClose\": 3951.0,\n                \"oldClose\": 3863.0\n            },\n            {\n                \"date\": 20171211,\n                \"from\": \"a1801\",\n                \"to\": \"a1805\",\n                \"newClose\": 3621.0,\n                \"oldClose\": 3457.0\n            },\n            {\n                \"date\": 20180409,\n                \"from\": \"a1805\",\n                \"to\": \"a1809\",\n                \"newClose\": 4031.0,\n                \"oldClose\": 3913.0\n            },\n            {\n                \"date\": 20180801,\n                \"from\": \"a1809\",\n                \"to\": \"a1901\",\n                \"newClose\": 3628.0,\n                \"oldClose\": 3514.0\n            },\n            {\n                \"date\": 20181221,\n                \"from\": \"a1901\",\n                \"to\": \"a1905\",\n                \"newClose\": 3400.0,\n                \"oldClose\": 3144.0\n            },\n            {\n                \"date\": 20190422,\n                \"from\": \"a1905\",\n                \"to\": \"a1909\",\n                \"newClose\": 3412.0,\n                \"oldClose\": 3309.0\n            },\n            {\n                \"date\": 20190815,\n                \"from\": \"a1909\",\n                \"to\": \"a2001\",\n                \"newClose\": 3424.0,\n                \"oldClose\": 3383.0\n            },\n            {\n                \"date\": 20191204,\n                \"from\": \"a2001\",\n                \"to\": \"a2005\",\n                \"newClose\": 3848.0,\n                \"oldClose\": 3478.0\n            },\n            {\n                \"date\": 20200408,\n                \"from\": \"a2005\",\n                \"to\": \"a2009\",\n                \"newClose\": 4519.0,\n                \"oldClose\": 4836.0\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"a2009\",\n                \"to\": \"a2101\",\n                \"newClose\": 4482.0,\n                \"oldClose\": 4640.0\n            },\n            {\n                \"date\": 20201217,\n                \"from\": \"a2101\",\n                \"to\": \"a2105\",\n                \"newClose\": 5289.0,\n                \"oldClose\": 5272.0\n            },\n            {\n                \"date\": 20210421,\n                \"from\": \"a2105\",\n                \"to\": \"a2109\",\n                \"newClose\": 5771.0,\n                \"oldClose\": 5712.0\n            },\n            {\n                \"date\": 20210816,\n                \"from\": \"a2109\",\n                \"to\": \"a2111\",\n                \"newClose\": 5839.0,\n                \"oldClose\": 5879.0\n            }\n        ],\n        \"eg\": [\n            {\n                \"date\": 20181211,\n                \"from\": \"\",\n                \"to\": \"eg1906\",\n                \"newClose\": 5541.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20190507,\n                \"from\": \"eg1906\",\n                \"to\": \"eg1909\",\n                \"newClose\": 4712.0,\n                \"oldClose\": 4578.0\n            },\n            {\n                \"date\": 20190808,\n                \"from\": \"eg1909\",\n                \"to\": \"eg2001\",\n                \"newClose\": 4373.0,\n                \"oldClose\": 4396.0\n            },\n            {\n                \"date\": 20191210,\n                \"from\": \"eg2001\",\n                \"to\": \"eg2005\",\n                \"newClose\": 4645.0,\n                \"oldClose\": 4849.0\n            },\n            {\n                \"date\": 20200413,\n                \"from\": \"eg2005\",\n                \"to\": \"eg2009\",\n                \"newClose\": 3504.0,\n                \"oldClose\": 3339.0\n            },\n            {\n                \"date\": 20200817,\n                \"from\": \"eg2009\",\n                \"to\": \"eg2101\",\n                \"newClose\": 3986.0,\n                \"oldClose\": 3805.0\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"eg2101\",\n                \"to\": \"eg2105\",\n                \"newClose\": 4038.0,\n                \"oldClose\": 3907.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"eg2105\",\n                \"to\": \"eg2109\",\n                \"newClose\": 4842.0,\n                \"oldClose\": 5077.0\n            },\n            {\n                \"date\": 20210824,\n                \"from\": \"eg2109\",\n                \"to\": \"eg2201\",\n                \"newClose\": 4941.0,\n                \"oldClose\": 5030.0\n            }\n        ],\n        \"rr\": [\n            {\n                \"date\": 20190816,\n                \"from\": \"\",\n                \"to\": \"rr2001\",\n                \"newClose\": 3685.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20191212,\n                \"from\": \"rr2001\",\n                \"to\": \"rr2005\",\n                \"newClose\": 3459.0,\n                \"oldClose\": 3396.0\n            },\n            {\n                \"date\": 20200325,\n                \"from\": \"rr2005\",\n                \"to\": \"rr2009\",\n                \"newClose\": 3454.0,\n                \"oldClose\": 3404.0\n            },\n            {\n                \"date\": 20200702,\n                \"from\": \"rr2009\",\n                \"to\": \"rr2010\",\n                \"newClose\": 3429.0,\n                \"oldClose\": 3422.0\n            },\n            {\n                \"date\": 20200706,\n                \"from\": \"rr2010\",\n                \"to\": \"rr2012\",\n                \"newClose\": 3455.0,\n                \"oldClose\": 3434.0\n            },\n            {\n                \"date\": 20200901,\n                \"from\": \"rr2012\",\n                \"to\": \"rr2102\",\n                \"newClose\": 3519.0,\n                \"oldClose\": 3487.0\n            },\n            {\n                \"date\": 20201105,\n                \"from\": \"rr2102\",\n                \"to\": \"rr2103\",\n                \"newClose\": 3655.0,\n                \"oldClose\": 3630.0\n            },\n            {\n                \"date\": 20201201,\n                \"from\": \"rr2103\",\n                \"to\": \"rr2104\",\n                \"newClose\": 3647.0,\n                \"oldClose\": 3609.0\n            },\n            {\n                \"date\": 20210301,\n                \"from\": \"rr2104\",\n                \"to\": \"rr2105\",\n                \"newClose\": 3650.0,\n                \"oldClose\": 3618.0\n            },\n            {\n                \"date\": 20210401,\n                \"from\": \"rr2105\",\n                \"to\": \"rr2108\",\n                \"newClose\": 3615.0,\n                \"oldClose\": 3540.0\n            },\n            {\n                \"date\": 20210506,\n                \"from\": \"rr2108\",\n                \"to\": \"rr2110\",\n                \"newClose\": 3659.0,\n                \"oldClose\": 3645.0\n            },\n            {\n                \"date\": 20210705,\n                \"from\": \"rr2110\",\n                \"to\": \"rr2111\",\n                \"newClose\": 3565.0,\n                \"oldClose\": 3548.0\n            },\n            {\n                \"date\": 20210802,\n                \"from\": \"rr2111\",\n                \"to\": \"rr2112\",\n                \"newClose\": 3550.0,\n                \"oldClose\": 3538.0\n            },\n            {\n                \"date\": 20210902,\n                \"from\": \"rr2112\",\n                \"to\": \"rr2201\",\n                \"newClose\": 3558.0,\n                \"oldClose\": 3534.0\n            },\n            {\n                \"date\": 20211011,\n                \"from\": \"rr2201\",\n                \"to\": \"rr2202\",\n                \"newClose\": 3466.0,\n                \"oldClose\": 3459.0\n            }\n        ],\n        \"eb\": [\n            {\n                \"date\": 20190926,\n                \"from\": \"\",\n                \"to\": \"eb2005\",\n                \"newClose\": 8056.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20200414,\n                \"from\": \"eb2005\",\n                \"to\": \"eb2009\",\n                \"newClose\": 5400.0,\n                \"oldClose\": 5220.0\n            },\n            {\n                \"date\": 20200821,\n                \"from\": \"eb2009\",\n                \"to\": \"eb2101\",\n                \"newClose\": 5650.0,\n                \"oldClose\": 5299.0\n            },\n            {\n                \"date\": 20201221,\n                \"from\": \"eb2101\",\n                \"to\": \"eb2102\",\n                \"newClose\": 6698.0,\n                \"oldClose\": 6674.0\n            },\n            {\n                \"date\": 20210125,\n                \"from\": \"eb2102\",\n                \"to\": \"eb2103\",\n                \"newClose\": 6916.0,\n                \"oldClose\": 6884.0\n            },\n            {\n                \"date\": 20210226,\n                \"from\": \"eb2103\",\n                \"to\": \"eb2105\",\n                \"newClose\": 9760.0,\n                \"oldClose\": 9900.0\n            },\n            {\n                \"date\": 20210426,\n                \"from\": \"eb2105\",\n                \"to\": \"eb2106\",\n                \"newClose\": 9048.0,\n                \"oldClose\": 9240.0\n            },\n            {\n                \"date\": 20210526,\n                \"from\": \"eb2106\",\n                \"to\": \"eb2107\",\n                \"newClose\": 8976.0,\n                \"oldClose\": 9179.0\n            },\n            {\n                \"date\": 20210622,\n                \"from\": \"eb2107\",\n                \"to\": \"eb2108\",\n                \"newClose\": 8535.0,\n                \"oldClose\": 8625.0\n            },\n            {\n                \"date\": 20210721,\n                \"from\": \"eb2108\",\n                \"to\": \"eb2109\",\n                \"newClose\": 8910.0,\n                \"oldClose\": 8995.0\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"eb2109\",\n                \"to\": \"eb2110\",\n                \"newClose\": 8529.0,\n                \"oldClose\": 8570.0\n            },\n            {\n                \"date\": 20210927,\n                \"from\": \"eb2110\",\n                \"to\": \"eb2111\",\n                \"newClose\": 8985.0,\n                \"oldClose\": 9000.0\n            }\n        ],\n        \"pg\": [\n            {\n                \"date\": 20200330,\n                \"from\": \"\",\n                \"to\": \"pg2011\",\n                \"newClose\": 2366.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20201023,\n                \"from\": \"pg2011\",\n                \"to\": \"pg2012\",\n                \"newClose\": 3774.0,\n                \"oldClose\": 3724.0\n            },\n            {\n                \"date\": 20201123,\n                \"from\": \"pg2012\",\n                \"to\": \"pg2101\",\n                \"newClose\": 3556.0,\n                \"oldClose\": 3544.0\n            },\n            {\n                \"date\": 20201218,\n                \"from\": \"pg2101\",\n                \"to\": \"pg2102\",\n                \"newClose\": 3993.0,\n                \"oldClose\": 3951.0\n            },\n            {\n                \"date\": 20210122,\n                \"from\": \"pg2102\",\n                \"to\": \"pg2103\",\n                \"newClose\": 3490.0,\n                \"oldClose\": 3658.0\n            },\n            {\n                \"date\": 20210223,\n                \"from\": \"pg2103\",\n                \"to\": \"pg2104\",\n                \"newClose\": 3927.0,\n                \"oldClose\": 3506.0\n            },\n            {\n                \"date\": 20210323,\n                \"from\": \"pg2104\",\n                \"to\": \"pg2105\",\n                \"newClose\": 3920.0,\n                \"oldClose\": 4019.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"pg2105\",\n                \"to\": \"pg2106\",\n                \"newClose\": 3810.0,\n                \"oldClose\": 3909.0\n            },\n            {\n                \"date\": 20210521,\n                \"from\": \"pg2106\",\n                \"to\": \"pg2107\",\n                \"newClose\": 4090.0,\n                \"oldClose\": 4078.0\n            },\n            {\n                \"date\": 20210610,\n                \"from\": \"pg2107\",\n                \"to\": \"pg2108\",\n                \"newClose\": 4394.0,\n                \"oldClose\": 4392.0\n            },\n            {\n                \"date\": 20210715,\n                \"from\": \"pg2108\",\n                \"to\": \"pg2109\",\n                \"newClose\": 4819.0,\n                \"oldClose\": 4825.0\n            },\n            {\n                \"date\": 20210816,\n                \"from\": \"pg2109\",\n                \"to\": \"pg2110\",\n                \"newClose\": 5158.0,\n                \"oldClose\": 5161.0\n            },\n            {\n                \"date\": 20210915,\n                \"from\": \"pg2110\",\n                \"to\": \"pg2111\",\n                \"newClose\": 5564.0,\n                \"oldClose\": 5550.0\n            }\n        ]\n    },\n    \"SHFE\": {\n        \"ag\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"ag1606\",\n                \"newClose\": 3305.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160509,\n                \"from\": \"ag1606\",\n                \"to\": \"ag1612\",\n                \"newClose\": 3828.0,\n                \"oldClose\": 3723.0\n            },\n            {\n                \"date\": 20161111,\n                \"from\": \"ag1612\",\n                \"to\": \"ag1706\",\n                \"newClose\": 4452.0,\n                \"oldClose\": 4313.0\n            },\n            {\n                \"date\": 20170510,\n                \"from\": \"ag1706\",\n                \"to\": \"ag1712\",\n                \"newClose\": 4002.0,\n                \"oldClose\": 3899.0\n            },\n            {\n                \"date\": 20171121,\n                \"from\": \"ag1712\",\n                \"to\": \"ag1806\",\n                \"newClose\": 3988.0,\n                \"oldClose\": 3873.0\n            },\n            {\n                \"date\": 20180507,\n                \"from\": \"ag1806\",\n                \"to\": \"ag1812\",\n                \"newClose\": 3754.0,\n                \"oldClose\": 3656.0\n            },\n            {\n                \"date\": 20181107,\n                \"from\": \"ag1812\",\n                \"to\": \"ag1906\",\n                \"newClose\": 3575.0,\n                \"oldClose\": 3545.0\n            },\n            {\n                \"date\": 20190508,\n                \"from\": \"ag1906\",\n                \"to\": \"ag1912\",\n                \"newClose\": 3607.0,\n                \"oldClose\": 3549.0\n            },\n            {\n                \"date\": 20191113,\n                \"from\": \"ag1912\",\n                \"to\": \"ag2002\",\n                \"newClose\": 4150.0,\n                \"oldClose\": 4123.0\n            },\n            {\n                \"date\": 20200103,\n                \"from\": \"ag2002\",\n                \"to\": \"ag2006\",\n                \"newClose\": 4452.0,\n                \"oldClose\": 4395.0\n            },\n            {\n                \"date\": 20200518,\n                \"from\": \"ag2006\",\n                \"to\": \"ag2012\",\n                \"newClose\": 4248.0,\n                \"oldClose\": 4201.0\n            },\n            {\n                \"date\": 20201126,\n                \"from\": \"ag2012\",\n                \"to\": \"ag2102\",\n                \"newClose\": 4938.0,\n                \"oldClose\": 4895.0\n            },\n            {\n                \"date\": 20210126,\n                \"from\": \"ag2102\",\n                \"to\": \"ag2106\",\n                \"newClose\": 5293.0,\n                \"oldClose\": 5222.0\n            },\n            {\n                \"date\": 20210526,\n                \"from\": \"ag2106\",\n                \"to\": \"ag2112\",\n                \"newClose\": 5861.0,\n                \"oldClose\": 5754.0\n            }\n        ],\n        \"al\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"al1603\",\n                \"newClose\": 10630.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160128,\n                \"from\": \"al1603\",\n                \"to\": \"al1604\",\n                \"newClose\": 10760.0,\n                \"oldClose\": 10745.0\n            },\n            {\n                \"date\": 20160229,\n                \"from\": \"al1604\",\n                \"to\": \"al1605\",\n                \"newClose\": 11300.0,\n                \"oldClose\": 11265.0\n            },\n            {\n                \"date\": 20160331,\n                \"from\": \"al1605\",\n                \"to\": \"al1606\",\n                \"newClose\": 11750.0,\n                \"oldClose\": 11775.0\n            },\n            {\n                \"date\": 20160428,\n                \"from\": \"al1606\",\n                \"to\": \"al1607\",\n                \"newClose\": 12480.0,\n                \"oldClose\": 12485.0\n            },\n            {\n                \"date\": 20160602,\n                \"from\": \"al1607\",\n                \"to\": \"al1608\",\n                \"newClose\": 12145.0,\n                \"oldClose\": 12305.0\n            },\n            {\n                \"date\": 20160704,\n                \"from\": \"al1608\",\n                \"to\": \"al1609\",\n                \"newClose\": 12535.0,\n                \"oldClose\": 12685.0\n            },\n            {\n                \"date\": 20160802,\n                \"from\": \"al1609\",\n                \"to\": \"al1610\",\n                \"newClose\": 12205.0,\n                \"oldClose\": 12315.0\n            },\n            {\n                \"date\": 20160902,\n                \"from\": \"al1610\",\n                \"to\": \"al1611\",\n                \"newClose\": 12205.0,\n                \"oldClose\": 12345.0\n            },\n            {\n                \"date\": 20160929,\n                \"from\": \"al1611\",\n                \"to\": \"al1612\",\n                \"newClose\": 12350.0,\n                \"oldClose\": 12590.0\n            },\n            {\n                \"date\": 20161103,\n                \"from\": \"al1612\",\n                \"to\": \"al1701\",\n                \"newClose\": 13410.0,\n                \"oldClose\": 13665.0\n            },\n            {\n                \"date\": 20161123,\n                \"from\": \"al1701\",\n                \"to\": \"al1702\",\n                \"newClose\": 13860.0,\n                \"oldClose\": 14100.0\n            },\n            {\n                \"date\": 20170103,\n                \"from\": \"al1702\",\n                \"to\": \"al1703\",\n                \"newClose\": 12630.0,\n                \"oldClose\": 12590.0\n            },\n            {\n                \"date\": 20170208,\n                \"from\": \"al1703\",\n                \"to\": \"al1704\",\n                \"newClose\": 13775.0,\n                \"oldClose\": 13695.0\n            },\n            {\n                \"date\": 20170306,\n                \"from\": \"al1704\",\n                \"to\": \"al1705\",\n                \"newClose\": 13830.0,\n                \"oldClose\": 13730.0\n            },\n            {\n                \"date\": 20170412,\n                \"from\": \"al1705\",\n                \"to\": \"al1706\",\n                \"newClose\": 13970.0,\n                \"oldClose\": 13865.0\n            },\n            {\n                \"date\": 20170509,\n                \"from\": \"al1706\",\n                \"to\": \"al1707\",\n                \"newClose\": 13855.0,\n                \"oldClose\": 13790.0\n            },\n            {\n                \"date\": 20170608,\n                \"from\": \"al1707\",\n                \"to\": \"al1708\",\n                \"newClose\": 13825.0,\n                \"oldClose\": 13785.0\n            },\n            {\n                \"date\": 20170706,\n                \"from\": \"al1708\",\n                \"to\": \"al1709\",\n                \"newClose\": 14210.0,\n                \"oldClose\": 14125.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"al1709\",\n                \"to\": \"al1710\",\n                \"newClose\": 15435.0,\n                \"oldClose\": 15335.0\n            },\n            {\n                \"date\": 20170825,\n                \"from\": \"al1710\",\n                \"to\": \"al1711\",\n                \"newClose\": 16705.0,\n                \"oldClose\": 16620.0\n            },\n            {\n                \"date\": 20170927,\n                \"from\": \"al1711\",\n                \"to\": \"al1712\",\n                \"newClose\": 16600.0,\n                \"oldClose\": 16490.0\n            },\n            {\n                \"date\": 20171030,\n                \"from\": \"al1712\",\n                \"to\": \"al1801\",\n                \"newClose\": 16380.0,\n                \"oldClose\": 16275.0\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"al1801\",\n                \"to\": \"al1802\",\n                \"newClose\": 14705.0,\n                \"oldClose\": 14600.0\n            },\n            {\n                \"date\": 20180102,\n                \"from\": \"al1802\",\n                \"to\": \"al1803\",\n                \"newClose\": 15175.0,\n                \"oldClose\": 15075.0\n            },\n            {\n                \"date\": 20180206,\n                \"from\": \"al1803\",\n                \"to\": \"al1804\",\n                \"newClose\": 14225.0,\n                \"oldClose\": 14140.0\n            },\n            {\n                \"date\": 20180301,\n                \"from\": \"al1804\",\n                \"to\": \"al1805\",\n                \"newClose\": 14460.0,\n                \"oldClose\": 14390.0\n            },\n            {\n                \"date\": 20180409,\n                \"from\": \"al1805\",\n                \"to\": \"al1806\",\n                \"newClose\": 14270.0,\n                \"oldClose\": 14200.0\n            },\n            {\n                \"date\": 20180508,\n                \"from\": \"al1806\",\n                \"to\": \"al1807\",\n                \"newClose\": 14755.0,\n                \"oldClose\": 14690.0\n            },\n            {\n                \"date\": 20180608,\n                \"from\": \"al1807\",\n                \"to\": \"al1808\",\n                \"newClose\": 14910.0,\n                \"oldClose\": 14835.0\n            },\n            {\n                \"date\": 20180706,\n                \"from\": \"al1808\",\n                \"to\": \"al1809\",\n                \"newClose\": 14080.0,\n                \"oldClose\": 14010.0\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"al1809\",\n                \"to\": \"al1810\",\n                \"newClose\": 14495.0,\n                \"oldClose\": 14420.0\n            },\n            {\n                \"date\": 20180905,\n                \"from\": \"al1810\",\n                \"to\": \"al1811\",\n                \"newClose\": 14670.0,\n                \"oldClose\": 14610.0\n            },\n            {\n                \"date\": 20181016,\n                \"from\": \"al1811\",\n                \"to\": \"al1812\",\n                \"newClose\": 14245.0,\n                \"oldClose\": 14250.0\n            },\n            {\n                \"date\": 20181106,\n                \"from\": \"al1812\",\n                \"to\": \"al1901\",\n                \"newClose\": 13915.0,\n                \"oldClose\": 13945.0\n            },\n            {\n                \"date\": 20181212,\n                \"from\": \"al1901\",\n                \"to\": \"al1902\",\n                \"newClose\": 13615.0,\n                \"oldClose\": 13575.0\n            },\n            {\n                \"date\": 20190108,\n                \"from\": \"al1902\",\n                \"to\": \"al1903\",\n                \"newClose\": 13390.0,\n                \"oldClose\": 13350.0\n            },\n            {\n                \"date\": 20190220,\n                \"from\": \"al1903\",\n                \"to\": \"al1904\",\n                \"newClose\": 13520.0,\n                \"oldClose\": 13480.0\n            },\n            {\n                \"date\": 20190226,\n                \"from\": \"al1904\",\n                \"to\": \"al1905\",\n                \"newClose\": 13690.0,\n                \"oldClose\": 13700.0\n            },\n            {\n                \"date\": 20190418,\n                \"from\": \"al1905\",\n                \"to\": \"al1906\",\n                \"newClose\": 14055.0,\n                \"oldClose\": 14025.0\n            },\n            {\n                \"date\": 20190515,\n                \"from\": \"al1906\",\n                \"to\": \"al1907\",\n                \"newClose\": 14340.0,\n                \"oldClose\": 14335.0\n            },\n            {\n                \"date\": 20190617,\n                \"from\": \"al1907\",\n                \"to\": \"al1908\",\n                \"newClose\": 13810.0,\n                \"oldClose\": 13855.0\n            },\n            {\n                \"date\": 20190717,\n                \"from\": \"al1908\",\n                \"to\": \"al1909\",\n                \"newClose\": 13885.0,\n                \"oldClose\": 13865.0\n            },\n            {\n                \"date\": 20190809,\n                \"from\": \"al1909\",\n                \"to\": \"al1910\",\n                \"newClose\": 13915.0,\n                \"oldClose\": 13910.0\n            },\n            {\n                \"date\": 20190909,\n                \"from\": \"al1910\",\n                \"to\": \"al1911\",\n                \"newClose\": 14385.0,\n                \"oldClose\": 14420.0\n            },\n            {\n                \"date\": 20191015,\n                \"from\": \"al1911\",\n                \"to\": \"al1912\",\n                \"newClose\": 13765.0,\n                \"oldClose\": 13790.0\n            },\n            {\n                \"date\": 20191115,\n                \"from\": \"al1912\",\n                \"to\": \"al2001\",\n                \"newClose\": 13670.0,\n                \"oldClose\": 13825.0\n            },\n            {\n                \"date\": 20191212,\n                \"from\": \"al2001\",\n                \"to\": \"al2002\",\n                \"newClose\": 13880.0,\n                \"oldClose\": 13955.0\n            },\n            {\n                \"date\": 20200110,\n                \"from\": \"al2002\",\n                \"to\": \"al2003\",\n                \"newClose\": 14110.0,\n                \"oldClose\": 14165.0\n            },\n            {\n                \"date\": 20200207,\n                \"from\": \"al2003\",\n                \"to\": \"al2004\",\n                \"newClose\": 13745.0,\n                \"oldClose\": 13725.0\n            },\n            {\n                \"date\": 20200304,\n                \"from\": \"al2004\",\n                \"to\": \"al2005\",\n                \"newClose\": 13250.0,\n                \"oldClose\": 13205.0\n            },\n            {\n                \"date\": 20200330,\n                \"from\": \"al2005\",\n                \"to\": \"al2006\",\n                \"newClose\": 11540.0,\n                \"oldClose\": 11515.0\n            },\n            {\n                \"date\": 20200508,\n                \"from\": \"al2006\",\n                \"to\": \"al2007\",\n                \"newClose\": 12430.0,\n                \"oldClose\": 12620.0\n            },\n            {\n                \"date\": 20200622,\n                \"from\": \"al2007\",\n                \"to\": \"al2008\",\n                \"newClose\": 13695.0,\n                \"oldClose\": 13865.0\n            },\n            {\n                \"date\": 20200727,\n                \"from\": \"al2008\",\n                \"to\": \"al2009\",\n                \"newClose\": 14220.0,\n                \"oldClose\": 14440.0\n            },\n            {\n                \"date\": 20200826,\n                \"from\": \"al2009\",\n                \"to\": \"al2010\",\n                \"newClose\": 14665.0,\n                \"oldClose\": 14765.0\n            },\n            {\n                \"date\": 20200925,\n                \"from\": \"al2010\",\n                \"to\": \"al2011\",\n                \"newClose\": 13945.0,\n                \"oldClose\": 14090.0\n            },\n            {\n                \"date\": 20201028,\n                \"from\": \"al2011\",\n                \"to\": \"al2012\",\n                \"newClose\": 14400.0,\n                \"oldClose\": 14585.0\n            },\n            {\n                \"date\": 20201126,\n                \"from\": \"al2012\",\n                \"to\": \"al2101\",\n                \"newClose\": 15870.0,\n                \"oldClose\": 16005.0\n            },\n            {\n                \"date\": 20201223,\n                \"from\": \"al2101\",\n                \"to\": \"al2102\",\n                \"newClose\": 15705.0,\n                \"oldClose\": 15890.0\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"al2102\",\n                \"to\": \"al2103\",\n                \"newClose\": 14875.0,\n                \"oldClose\": 14865.0\n            },\n            {\n                \"date\": 20210219,\n                \"from\": \"al2103\",\n                \"to\": \"al2104\",\n                \"newClose\": 16490.0,\n                \"oldClose\": 16485.0\n            },\n            {\n                \"date\": 20210315,\n                \"from\": \"al2104\",\n                \"to\": \"al2105\",\n                \"newClose\": 17605.0,\n                \"oldClose\": 17650.0\n            },\n            {\n                \"date\": 20210421,\n                \"from\": \"al2105\",\n                \"to\": \"al2106\",\n                \"newClose\": 18000.0,\n                \"oldClose\": 18010.0\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"al2106\",\n                \"to\": \"al2107\",\n                \"newClose\": 19140.0,\n                \"oldClose\": 19125.0\n            },\n            {\n                \"date\": 20210623,\n                \"from\": \"al2107\",\n                \"to\": \"al2108\",\n                \"newClose\": 18705.0,\n                \"oldClose\": 18725.0\n            },\n            {\n                \"date\": 20210721,\n                \"from\": \"al2108\",\n                \"to\": \"al2109\",\n                \"newClose\": 18885.0,\n                \"oldClose\": 18875.0\n            },\n            {\n                \"date\": 20210820,\n                \"from\": \"al2109\",\n                \"to\": \"al2110\",\n                \"newClose\": 20110.0,\n                \"oldClose\": 20115.0\n            },\n            {\n                \"date\": 20210922,\n                \"from\": \"al2110\",\n                \"to\": \"al2111\",\n                \"newClose\": 23080.0,\n                \"oldClose\": 23080.0\n            }\n        ],\n        \"au\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"au1606\",\n                \"newClose\": 228.1999969482422,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160504,\n                \"from\": \"au1606\",\n                \"to\": \"au1612\",\n                \"newClose\": 270.6499938964844,\n                \"oldClose\": 268.3999938964844\n            },\n            {\n                \"date\": 20161109,\n                \"from\": \"au1612\",\n                \"to\": \"au1706\",\n                \"newClose\": 291.6499938964844,\n                \"oldClose\": 288.70001220703125\n            },\n            {\n                \"date\": 20170502,\n                \"from\": \"au1706\",\n                \"to\": \"au1712\",\n                \"newClose\": 283.8999938964844,\n                \"oldClose\": 280.75\n            },\n            {\n                \"date\": 20171110,\n                \"from\": \"au1712\",\n                \"to\": \"au1806\",\n                \"newClose\": 280.8500061035156,\n                \"oldClose\": 276.5\n            },\n            {\n                \"date\": 20180507,\n                \"from\": \"au1806\",\n                \"to\": \"au1812\",\n                \"newClose\": 275.1499938964844,\n                \"oldClose\": 271.3500061035156\n            },\n            {\n                \"date\": 20181112,\n                \"from\": \"au1812\",\n                \"to\": \"au1906\",\n                \"newClose\": 276.54998779296875,\n                \"oldClose\": 272.20001220703125\n            },\n            {\n                \"date\": 20190510,\n                \"from\": \"au1906\",\n                \"to\": \"au1912\",\n                \"newClose\": 287.25,\n                \"oldClose\": 284.45001220703125\n            },\n            {\n                \"date\": 20191119,\n                \"from\": \"au1912\",\n                \"to\": \"au2002\",\n                \"newClose\": 335.3999938964844,\n                \"oldClose\": 334.04998779296875\n            },\n            {\n                \"date\": 20191226,\n                \"from\": \"au2002\",\n                \"to\": \"au2006\",\n                \"newClose\": 344.1199951171875,\n                \"oldClose\": 340.9200134277344\n            },\n            {\n                \"date\": 20200515,\n                \"from\": \"au2006\",\n                \"to\": \"au2012\",\n                \"newClose\": 391.8999938964844,\n                \"oldClose\": 390.1600036621094\n            },\n            {\n                \"date\": 20201126,\n                \"from\": \"au2012\",\n                \"to\": \"au2102\",\n                \"newClose\": 381.2200012207031,\n                \"oldClose\": 380.2200012207031\n            },\n            {\n                \"date\": 20210114,\n                \"from\": \"au2102\",\n                \"to\": \"au2106\",\n                \"newClose\": 386.5,\n                \"oldClose\": 385.29998779296875\n            },\n            {\n                \"date\": 20210527,\n                \"from\": \"au2106\",\n                \"to\": \"au2112\",\n                \"newClose\": 394.2799987792969,\n                \"oldClose\": 390.9599914550781\n            }\n        ],\n        \"bu\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"bu1606\",\n                \"newClose\": 1810.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160411,\n                \"from\": \"bu1606\",\n                \"to\": \"bu1609\",\n                \"newClose\": 1882.0,\n                \"oldClose\": 1776.0\n            },\n            {\n                \"date\": 20160802,\n                \"from\": \"bu1609\",\n                \"to\": \"bu1612\",\n                \"newClose\": 1966.0,\n                \"oldClose\": 1886.0\n            },\n            {\n                \"date\": 20161111,\n                \"from\": \"bu1612\",\n                \"to\": \"bu1706\",\n                \"newClose\": 2248.0,\n                \"oldClose\": 1912.0\n            },\n            {\n                \"date\": 20170425,\n                \"from\": \"bu1706\",\n                \"to\": \"bu1709\",\n                \"newClose\": 2568.0,\n                \"oldClose\": 2508.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"bu1709\",\n                \"to\": \"bu1712\",\n                \"newClose\": 2678.0,\n                \"oldClose\": 2558.0\n            },\n            {\n                \"date\": 20171121,\n                \"from\": \"bu1712\",\n                \"to\": \"bu1806\",\n                \"newClose\": 2696.0,\n                \"oldClose\": 2538.0\n            },\n            {\n                \"date\": 20180504,\n                \"from\": \"bu1806\",\n                \"to\": \"bu1812\",\n                \"newClose\": 3004.0,\n                \"oldClose\": 2850.0\n            },\n            {\n                \"date\": 20181123,\n                \"from\": \"bu1812\",\n                \"to\": \"bu1906\",\n                \"newClose\": 2780.0,\n                \"oldClose\": 3002.0\n            },\n            {\n                \"date\": 20190506,\n                \"from\": \"bu1906\",\n                \"to\": \"bu1912\",\n                \"newClose\": 3540.0,\n                \"oldClose\": 3540.0\n            },\n            {\n                \"date\": 20191129,\n                \"from\": \"bu1912\",\n                \"to\": \"bu2006\",\n                \"newClose\": 2968.0,\n                \"oldClose\": 3060.0\n            },\n            {\n                \"date\": 20200513,\n                \"from\": \"bu2006\",\n                \"to\": \"bu2012\",\n                \"newClose\": 2358.0,\n                \"oldClose\": 2084.0\n            },\n            {\n                \"date\": 20201130,\n                \"from\": \"bu2012\",\n                \"to\": \"bu2106\",\n                \"newClose\": 2612.0,\n                \"oldClose\": 2410.0\n            },\n            {\n                \"date\": 20210526,\n                \"from\": \"bu2106\",\n                \"to\": \"bu2109\",\n                \"newClose\": 3272.0,\n                \"oldClose\": 3186.0\n            },\n            {\n                \"date\": 20210816,\n                \"from\": \"bu2109\",\n                \"to\": \"bu2112\",\n                \"newClose\": 3170.0,\n                \"oldClose\": 3136.0\n            }\n        ],\n        \"cu\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"cu1603\",\n                \"newClose\": 35970.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160201,\n                \"from\": \"cu1603\",\n                \"to\": \"cu1604\",\n                \"newClose\": 35540.0,\n                \"oldClose\": 35450.0\n            },\n            {\n                \"date\": 20160229,\n                \"from\": \"cu1604\",\n                \"to\": \"cu1605\",\n                \"newClose\": 35880.0,\n                \"oldClose\": 35840.0\n            },\n            {\n                \"date\": 20160329,\n                \"from\": \"cu1605\",\n                \"to\": \"cu1606\",\n                \"newClose\": 37590.0,\n                \"oldClose\": 37570.0\n            },\n            {\n                \"date\": 20160426,\n                \"from\": \"cu1606\",\n                \"to\": \"cu1607\",\n                \"newClose\": 37710.0,\n                \"oldClose\": 37700.0\n            },\n            {\n                \"date\": 20160527,\n                \"from\": \"cu1607\",\n                \"to\": \"cu1608\",\n                \"newClose\": 35840.0,\n                \"oldClose\": 35910.0\n            },\n            {\n                \"date\": 20160628,\n                \"from\": \"cu1608\",\n                \"to\": \"cu1609\",\n                \"newClose\": 37200.0,\n                \"oldClose\": 37190.0\n            },\n            {\n                \"date\": 20160801,\n                \"from\": \"cu1609\",\n                \"to\": \"cu1610\",\n                \"newClose\": 38280.0,\n                \"oldClose\": 38170.0\n            },\n            {\n                \"date\": 20160902,\n                \"from\": \"cu1610\",\n                \"to\": \"cu1611\",\n                \"newClose\": 36670.0,\n                \"oldClose\": 36640.0\n            },\n            {\n                \"date\": 20160928,\n                \"from\": \"cu1611\",\n                \"to\": \"cu1612\",\n                \"newClose\": 37520.0,\n                \"oldClose\": 37500.0\n            },\n            {\n                \"date\": 20161101,\n                \"from\": \"cu1612\",\n                \"to\": \"cu1701\",\n                \"newClose\": 38740.0,\n                \"oldClose\": 38720.0\n            },\n            {\n                \"date\": 20161128,\n                \"from\": \"cu1701\",\n                \"to\": \"cu1702\",\n                \"newClose\": 49580.0,\n                \"oldClose\": 49380.0\n            },\n            {\n                \"date\": 20161228,\n                \"from\": \"cu1702\",\n                \"to\": \"cu1703\",\n                \"newClose\": 45620.0,\n                \"oldClose\": 45540.0\n            },\n            {\n                \"date\": 20170209,\n                \"from\": \"cu1703\",\n                \"to\": \"cu1704\",\n                \"newClose\": 47590.0,\n                \"oldClose\": 47410.0\n            },\n            {\n                \"date\": 20170308,\n                \"from\": \"cu1704\",\n                \"to\": \"cu1705\",\n                \"newClose\": 47300.0,\n                \"oldClose\": 47140.0\n            },\n            {\n                \"date\": 20170412,\n                \"from\": \"cu1705\",\n                \"to\": \"cu1706\",\n                \"newClose\": 46230.0,\n                \"oldClose\": 46150.0\n            },\n            {\n                \"date\": 20170509,\n                \"from\": \"cu1706\",\n                \"to\": \"cu1707\",\n                \"newClose\": 44730.0,\n                \"oldClose\": 44730.0\n            },\n            {\n                \"date\": 20170601,\n                \"from\": \"cu1707\",\n                \"to\": \"cu1708\",\n                \"newClose\": 45350.0,\n                \"oldClose\": 45340.0\n            },\n            {\n                \"date\": 20170703,\n                \"from\": \"cu1708\",\n                \"to\": \"cu1709\",\n                \"newClose\": 47600.0,\n                \"oldClose\": 47500.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"cu1709\",\n                \"to\": \"cu1710\",\n                \"newClose\": 50450.0,\n                \"oldClose\": 50280.0\n            },\n            {\n                \"date\": 20170906,\n                \"from\": \"cu1710\",\n                \"to\": \"cu1711\",\n                \"newClose\": 53290.0,\n                \"oldClose\": 53160.0\n            },\n            {\n                \"date\": 20170929,\n                \"from\": \"cu1711\",\n                \"to\": \"cu1712\",\n                \"newClose\": 51880.0,\n                \"oldClose\": 51840.0\n            },\n            {\n                \"date\": 20171107,\n                \"from\": \"cu1712\",\n                \"to\": \"cu1801\",\n                \"newClose\": 54600.0,\n                \"oldClose\": 54500.0\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"cu1801\",\n                \"to\": \"cu1802\",\n                \"newClose\": 52950.0,\n                \"oldClose\": 52900.0\n            },\n            {\n                \"date\": 20171228,\n                \"from\": \"cu1802\",\n                \"to\": \"cu1803\",\n                \"newClose\": 55920.0,\n                \"oldClose\": 55770.0\n            },\n            {\n                \"date\": 20180202,\n                \"from\": \"cu1803\",\n                \"to\": \"cu1804\",\n                \"newClose\": 53670.0,\n                \"oldClose\": 53520.0\n            },\n            {\n                \"date\": 20180301,\n                \"from\": \"cu1804\",\n                \"to\": \"cu1805\",\n                \"newClose\": 52470.0,\n                \"oldClose\": 52290.0\n            },\n            {\n                \"date\": 20180413,\n                \"from\": \"cu1805\",\n                \"to\": \"cu1806\",\n                \"newClose\": 50520.0,\n                \"oldClose\": 50410.0\n            },\n            {\n                \"date\": 20180508,\n                \"from\": \"cu1806\",\n                \"to\": \"cu1807\",\n                \"newClose\": 51370.0,\n                \"oldClose\": 51170.0\n            },\n            {\n                \"date\": 20180607,\n                \"from\": \"cu1807\",\n                \"to\": \"cu1808\",\n                \"newClose\": 54160.0,\n                \"oldClose\": 53930.0\n            },\n            {\n                \"date\": 20180706,\n                \"from\": \"cu1808\",\n                \"to\": \"cu1809\",\n                \"newClose\": 49160.0,\n                \"oldClose\": 49080.0\n            },\n            {\n                \"date\": 20180807,\n                \"from\": \"cu1809\",\n                \"to\": \"cu1810\",\n                \"newClose\": 49550.0,\n                \"oldClose\": 49480.0\n            },\n            {\n                \"date\": 20180907,\n                \"from\": \"cu1810\",\n                \"to\": \"cu1811\",\n                \"newClose\": 47560.0,\n                \"oldClose\": 47680.0\n            },\n            {\n                \"date\": 20181017,\n                \"from\": \"cu1811\",\n                \"to\": \"cu1812\",\n                \"newClose\": 50160.0,\n                \"oldClose\": 50290.0\n            },\n            {\n                \"date\": 20181106,\n                \"from\": \"cu1812\",\n                \"to\": \"cu1901\",\n                \"newClose\": 49660.0,\n                \"oldClose\": 49740.0\n            },\n            {\n                \"date\": 20181204,\n                \"from\": \"cu1901\",\n                \"to\": \"cu1902\",\n                \"newClose\": 49660.0,\n                \"oldClose\": 49660.0\n            },\n            {\n                \"date\": 20190103,\n                \"from\": \"cu1902\",\n                \"to\": \"cu1903\",\n                \"newClose\": 47310.0,\n                \"oldClose\": 47330.0\n            },\n            {\n                \"date\": 20190213,\n                \"from\": \"cu1903\",\n                \"to\": \"cu1904\",\n                \"newClose\": 48280.0,\n                \"oldClose\": 48120.0\n            },\n            {\n                \"date\": 20190305,\n                \"from\": \"cu1904\",\n                \"to\": \"cu1905\",\n                \"newClose\": 49500.0,\n                \"oldClose\": 49880.0\n            },\n            {\n                \"date\": 20190408,\n                \"from\": \"cu1905\",\n                \"to\": \"cu1906\",\n                \"newClose\": 49310.0,\n                \"oldClose\": 49260.0\n            },\n            {\n                \"date\": 20190506,\n                \"from\": \"cu1906\",\n                \"to\": \"cu1907\",\n                \"newClose\": 47990.0,\n                \"oldClose\": 48010.0\n            },\n            {\n                \"date\": 20190605,\n                \"from\": \"cu1907\",\n                \"to\": \"cu1908\",\n                \"newClose\": 46550.0,\n                \"oldClose\": 46490.0\n            },\n            {\n                \"date\": 20190708,\n                \"from\": \"cu1908\",\n                \"to\": \"cu1909\",\n                \"newClose\": 46390.0,\n                \"oldClose\": 46320.0\n            },\n            {\n                \"date\": 20190806,\n                \"from\": \"cu1909\",\n                \"to\": \"cu1910\",\n                \"newClose\": 46190.0,\n                \"oldClose\": 46150.0\n            },\n            {\n                \"date\": 20190906,\n                \"from\": \"cu1910\",\n                \"to\": \"cu1911\",\n                \"newClose\": 47450.0,\n                \"oldClose\": 47430.0\n            },\n            {\n                \"date\": 20191010,\n                \"from\": \"cu1911\",\n                \"to\": \"cu1912\",\n                \"newClose\": 46700.0,\n                \"oldClose\": 46690.0\n            },\n            {\n                \"date\": 20191107,\n                \"from\": \"cu1912\",\n                \"to\": \"cu2001\",\n                \"newClose\": 47250.0,\n                \"oldClose\": 47150.0\n            },\n            {\n                \"date\": 20191209,\n                \"from\": \"cu2001\",\n                \"to\": \"cu2002\",\n                \"newClose\": 48440.0,\n                \"oldClose\": 48340.0\n            },\n            {\n                \"date\": 20200103,\n                \"from\": \"cu2002\",\n                \"to\": \"cu2003\",\n                \"newClose\": 48900.0,\n                \"oldClose\": 48780.0\n            },\n            {\n                \"date\": 20200205,\n                \"from\": \"cu2003\",\n                \"to\": \"cu2004\",\n                \"newClose\": 45690.0,\n                \"oldClose\": 45550.0\n            },\n            {\n                \"date\": 20200304,\n                \"from\": \"cu2004\",\n                \"to\": \"cu2005\",\n                \"newClose\": 45420.0,\n                \"oldClose\": 45280.0\n            },\n            {\n                \"date\": 20200410,\n                \"from\": \"cu2005\",\n                \"to\": \"cu2006\",\n                \"newClose\": 41720.0,\n                \"oldClose\": 41790.0\n            },\n            {\n                \"date\": 20200515,\n                \"from\": \"cu2006\",\n                \"to\": \"cu2007\",\n                \"newClose\": 42940.0,\n                \"oldClose\": 43130.0\n            },\n            {\n                \"date\": 20200619,\n                \"from\": \"cu2007\",\n                \"to\": \"cu2008\",\n                \"newClose\": 47680.0,\n                \"oldClose\": 47780.0\n            },\n            {\n                \"date\": 20200721,\n                \"from\": \"cu2008\",\n                \"to\": \"cu2009\",\n                \"newClose\": 51870.0,\n                \"oldClose\": 51900.0\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"cu2009\",\n                \"to\": \"cu2010\",\n                \"newClose\": 52260.0,\n                \"oldClose\": 52150.0\n            },\n            {\n                \"date\": 20200922,\n                \"from\": \"cu2010\",\n                \"to\": \"cu2011\",\n                \"newClose\": 51810.0,\n                \"oldClose\": 51780.0\n            },\n            {\n                \"date\": 20201022,\n                \"from\": \"cu2011\",\n                \"to\": \"cu2012\",\n                \"newClose\": 52340.0,\n                \"oldClose\": 52280.0\n            },\n            {\n                \"date\": 20201118,\n                \"from\": \"cu2012\",\n                \"to\": \"cu2101\",\n                \"newClose\": 53000.0,\n                \"oldClose\": 52950.0\n            },\n            {\n                \"date\": 20201217,\n                \"from\": \"cu2101\",\n                \"to\": \"cu2102\",\n                \"newClose\": 58730.0,\n                \"oldClose\": 58620.0\n            },\n            {\n                \"date\": 20210111,\n                \"from\": \"cu2102\",\n                \"to\": \"cu2103\",\n                \"newClose\": 58670.0,\n                \"oldClose\": 58580.0\n            },\n            {\n                \"date\": 20210218,\n                \"from\": \"cu2103\",\n                \"to\": \"cu2104\",\n                \"newClose\": 63340.0,\n                \"oldClose\": 63210.0\n            },\n            {\n                \"date\": 20210309,\n                \"from\": \"cu2104\",\n                \"to\": \"cu2105\",\n                \"newClose\": 66120.0,\n                \"oldClose\": 66000.0\n            },\n            {\n                \"date\": 20210414,\n                \"from\": \"cu2105\",\n                \"to\": \"cu2106\",\n                \"newClose\": 66330.0,\n                \"oldClose\": 66190.0\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"cu2106\",\n                \"to\": \"cu2107\",\n                \"newClose\": 73690.0,\n                \"oldClose\": 73450.0\n            },\n            {\n                \"date\": 20210623,\n                \"from\": \"cu2107\",\n                \"to\": \"cu2108\",\n                \"newClose\": 68590.0,\n                \"oldClose\": 68480.0\n            },\n            {\n                \"date\": 20210723,\n                \"from\": \"cu2108\",\n                \"to\": \"cu2109\",\n                \"newClose\": 69760.0,\n                \"oldClose\": 69670.0\n            },\n            {\n                \"date\": 20210820,\n                \"from\": \"cu2109\",\n                \"to\": \"cu2110\",\n                \"newClose\": 67050.0,\n                \"oldClose\": 67200.0\n            },\n            {\n                \"date\": 20210927,\n                \"from\": \"cu2110\",\n                \"to\": \"cu2111\",\n                \"newClose\": 69270.0,\n                \"oldClose\": 69340.0\n            }\n        ],\n        \"fu\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"fu1612\",\n                \"newClose\": 2438.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160229,\n                \"from\": \"fu1612\",\n                \"to\": \"fu1702\",\n                \"newClose\": 2456.0,\n                \"oldClose\": 2438.0\n            },\n            {\n                \"date\": 20160606,\n                \"from\": \"fu1703\",\n                \"to\": \"fu1704\",\n                \"newClose\": 2664.0,\n                \"oldClose\": 2341.0\n            },\n            {\n                \"date\": 20170331,\n                \"from\": \"fu1704\",\n                \"to\": \"fu1711\",\n                \"newClose\": 3658.0,\n                \"oldClose\": 3915.0\n            },\n            {\n                \"date\": 20170531,\n                \"from\": \"fu1711\",\n                \"to\": \"fu1804\",\n                \"newClose\": 4188.0,\n                \"oldClose\": 3874.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"fu1804\",\n                \"to\": \"fu1805\",\n                \"newClose\": 3473.0,\n                \"oldClose\": 3790.0\n            },\n            {\n                \"date\": 20180717,\n                \"from\": \"fu1807\",\n                \"to\": \"fu1901\",\n                \"newClose\": 2869.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20181210,\n                \"from\": \"fu1901\",\n                \"to\": \"fu1905\",\n                \"newClose\": 2760.0,\n                \"oldClose\": 2776.0\n            },\n            {\n                \"date\": 20190415,\n                \"from\": \"fu1905\",\n                \"to\": \"fu1909\",\n                \"newClose\": 2851.0,\n                \"oldClose\": 2834.0\n            },\n            {\n                \"date\": 20190805,\n                \"from\": \"fu1909\",\n                \"to\": \"fu2001\",\n                \"newClose\": 2399.0,\n                \"oldClose\": 2981.0\n            },\n            {\n                \"date\": 20191128,\n                \"from\": \"fu2001\",\n                \"to\": \"fu2005\",\n                \"newClose\": 1932.0,\n                \"oldClose\": 1825.0\n            },\n            {\n                \"date\": 20200407,\n                \"from\": \"fu2005\",\n                \"to\": \"fu2009\",\n                \"newClose\": 1741.0,\n                \"oldClose\": 1579.0\n            },\n            {\n                \"date\": 20200810,\n                \"from\": \"fu2009\",\n                \"to\": \"fu2101\",\n                \"newClose\": 1897.0,\n                \"oldClose\": 1659.0\n            },\n            {\n                \"date\": 20201207,\n                \"from\": \"fu2101\",\n                \"to\": \"fu2105\",\n                \"newClose\": 2116.0,\n                \"oldClose\": 1896.0\n            },\n            {\n                \"date\": 20210413,\n                \"from\": \"fu2105\",\n                \"to\": \"fu2109\",\n                \"newClose\": 2344.0,\n                \"oldClose\": 2333.0\n            },\n            {\n                \"date\": 20210812,\n                \"from\": \"fu2109\",\n                \"to\": \"fu2201\",\n                \"newClose\": 2520.0,\n                \"oldClose\": 2535.0\n            }\n        ],\n        \"wr\": [\n            {\n                \"date\": 20161226,\n                \"from\": \"wr1705\",\n                \"to\": \"wr1712\",\n                \"newClose\": 2516.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20180319,\n                \"from\": \"wr1804\",\n                \"to\": \"wr1805\",\n                \"newClose\": 3131.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20180423,\n                \"from\": \"wr1805\",\n                \"to\": \"wr1812\",\n                \"newClose\": 3234.0,\n                \"oldClose\": 3401.0\n            },\n            {\n                \"date\": 20181017,\n                \"from\": \"wr1812\",\n                \"to\": \"wr1905\",\n                \"newClose\": 4087.0,\n                \"oldClose\": 3327.0\n            },\n            {\n                \"date\": 20190513,\n                \"from\": \"wr1905\",\n                \"to\": \"wr1907\",\n                \"newClose\": 4051.0,\n                \"oldClose\": 4843.0\n            },\n            {\n                \"date\": 20190702,\n                \"from\": \"wr1907\",\n                \"to\": \"wr1910\",\n                \"newClose\": 4240.0,\n                \"oldClose\": 4814.0\n            },\n            {\n                \"date\": 20190830,\n                \"from\": \"wr1910\",\n                \"to\": \"wr1912\",\n                \"newClose\": 3999.0,\n                \"oldClose\": 3894.0\n            },\n            {\n                \"date\": 20190906,\n                \"from\": \"wr1912\",\n                \"to\": \"wr2003\",\n                \"newClose\": 3630.0,\n                \"oldClose\": 3999.0\n            },\n            {\n                \"date\": 20190916,\n                \"from\": \"wr2003\",\n                \"to\": \"wr2005\",\n                \"newClose\": 3938.0,\n                \"oldClose\": 3630.0\n            },\n            {\n                \"date\": 20191009,\n                \"from\": \"wr2005\",\n                \"to\": \"wr2009\",\n                \"newClose\": 3847.0,\n                \"oldClose\": 3938.0\n            },\n            {\n                \"date\": 20191211,\n                \"from\": \"wr2009\",\n                \"to\": \"wr2010\",\n                \"newClose\": 3932.0,\n                \"oldClose\": 4050.0\n            },\n            {\n                \"date\": 20200108,\n                \"from\": \"wr2010\",\n                \"to\": \"wr2011\",\n                \"newClose\": 3860.0,\n                \"oldClose\": 3849.0\n            },\n            {\n                \"date\": 20200409,\n                \"from\": \"wr2011\",\n                \"to\": \"wr2103\",\n                \"newClose\": 3810.0,\n                \"oldClose\": 3860.0\n            },\n            {\n                \"date\": 20200417,\n                \"from\": \"wr2103\",\n                \"to\": \"wr2104\",\n                \"newClose\": 4050.0,\n                \"oldClose\": 3851.0\n            },\n            {\n                \"date\": 20200518,\n                \"from\": \"wr2104\",\n                \"to\": \"wr2105\",\n                \"newClose\": 3751.0,\n                \"oldClose\": 4050.0\n            },\n            {\n                \"date\": 20200730,\n                \"from\": \"wr2106\",\n                \"to\": \"wr2107\",\n                \"newClose\": 3869.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20200820,\n                \"from\": \"wr2107\",\n                \"to\": \"wr2108\",\n                \"newClose\": 3990.0,\n                \"oldClose\": 3911.0\n            },\n            {\n                \"date\": 20201228,\n                \"from\": \"wr2108\",\n                \"to\": \"wr2110\",\n                \"newClose\": 4560.0,\n                \"oldClose\": 3888.0\n            },\n            {\n                \"date\": 20210108,\n                \"from\": \"wr2110\",\n                \"to\": \"wr2111\",\n                \"newClose\": 4366.0,\n                \"oldClose\": 4529.0\n            },\n            {\n                \"date\": 20210514,\n                \"from\": \"wr2111\",\n                \"to\": \"wr2201\",\n                \"newClose\": 5615.0,\n                \"oldClose\": 5916.0\n            },\n            {\n                \"date\": 20210521,\n                \"from\": \"wr2201\",\n                \"to\": \"wr2205\",\n                \"newClose\": 5799.0,\n                \"oldClose\": 5790.0\n            },\n            {\n                \"date\": 20210823,\n                \"from\": \"wr2205\",\n                \"to\": \"wr2207\",\n                \"newClose\": 5249.0,\n                \"oldClose\": 5277.0\n            }\n        ],\n        \"ru\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"ru1605\",\n                \"newClose\": 10160.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160317,\n                \"from\": \"ru1605\",\n                \"to\": \"ru1609\",\n                \"newClose\": 11775.0,\n                \"oldClose\": 11460.0\n            },\n            {\n                \"date\": 20160803,\n                \"from\": \"ru1609\",\n                \"to\": \"ru1701\",\n                \"newClose\": 12665.0,\n                \"oldClose\": 10870.0\n            },\n            {\n                \"date\": 20161121,\n                \"from\": \"ru1701\",\n                \"to\": \"ru1705\",\n                \"newClose\": 17645.0,\n                \"oldClose\": 17130.0\n            },\n            {\n                \"date\": 20170324,\n                \"from\": \"ru1705\",\n                \"to\": \"ru1709\",\n                \"newClose\": 16865.0,\n                \"oldClose\": 16435.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"ru1709\",\n                \"to\": \"ru1801\",\n                \"newClose\": 16070.0,\n                \"oldClose\": 12815.0\n            },\n            {\n                \"date\": 20171128,\n                \"from\": \"ru1801\",\n                \"to\": \"ru1805\",\n                \"newClose\": 13980.0,\n                \"oldClose\": 13545.0\n            },\n            {\n                \"date\": 20180329,\n                \"from\": \"ru1805\",\n                \"to\": \"ru1809\",\n                \"newClose\": 11475.0,\n                \"oldClose\": 11100.0\n            },\n            {\n                \"date\": 20180806,\n                \"from\": \"ru1809\",\n                \"to\": \"ru1901\",\n                \"newClose\": 12150.0,\n                \"oldClose\": 10325.0\n            },\n            {\n                \"date\": 20181204,\n                \"from\": \"ru1901\",\n                \"to\": \"ru1905\",\n                \"newClose\": 11160.0,\n                \"oldClose\": 10915.0\n            },\n            {\n                \"date\": 20190401,\n                \"from\": \"ru1905\",\n                \"to\": \"ru1909\",\n                \"newClose\": 11715.0,\n                \"oldClose\": 11365.0\n            },\n            {\n                \"date\": 20190806,\n                \"from\": \"ru1909\",\n                \"to\": \"ru2001\",\n                \"newClose\": 11555.0,\n                \"oldClose\": 10565.0\n            },\n            {\n                \"date\": 20191202,\n                \"from\": \"ru2001\",\n                \"to\": \"ru2005\",\n                \"newClose\": 12640.0,\n                \"oldClose\": 12400.0\n            },\n            {\n                \"date\": 20200323,\n                \"from\": \"ru2005\",\n                \"to\": \"ru2009\",\n                \"newClose\": 9630.0,\n                \"oldClose\": 9370.0\n            },\n            {\n                \"date\": 20200804,\n                \"from\": \"ru2009\",\n                \"to\": \"ru2101\",\n                \"newClose\": 12140.0,\n                \"oldClose\": 10825.0\n            },\n            {\n                \"date\": 20201201,\n                \"from\": \"ru2101\",\n                \"to\": \"ru2105\",\n                \"newClose\": 15385.0,\n                \"oldClose\": 15180.0\n            },\n            {\n                \"date\": 20210402,\n                \"from\": \"ru2105\",\n                \"to\": \"ru2109\",\n                \"newClose\": 14405.0,\n                \"oldClose\": 14150.0\n            },\n            {\n                \"date\": 20210809,\n                \"from\": \"ru2109\",\n                \"to\": \"ru2201\",\n                \"newClose\": 14835.0,\n                \"oldClose\": 13620.0\n            }\n        ],\n        \"hc\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"hc1605\",\n                \"newClose\": 1929.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160413,\n                \"from\": \"hc1605\",\n                \"to\": \"hc1610\",\n                \"newClose\": 2558.0,\n                \"oldClose\": 2662.0\n            },\n            {\n                \"date\": 20160901,\n                \"from\": \"hc1610\",\n                \"to\": \"hc1701\",\n                \"newClose\": 2633.0,\n                \"oldClose\": 2741.0\n            },\n            {\n                \"date\": 20161130,\n                \"from\": \"hc1701\",\n                \"to\": \"hc1705\",\n                \"newClose\": 3247.0,\n                \"oldClose\": 3295.0\n            },\n            {\n                \"date\": 20170328,\n                \"from\": \"hc1705\",\n                \"to\": \"hc1710\",\n                \"newClose\": 3086.0,\n                \"oldClose\": 3217.0\n            },\n            {\n                \"date\": 20170810,\n                \"from\": \"hc1710\",\n                \"to\": \"hc1801\",\n                \"newClose\": 4028.0,\n                \"oldClose\": 4073.0\n            },\n            {\n                \"date\": 20171127,\n                \"from\": \"hc1801\",\n                \"to\": \"hc1805\",\n                \"newClose\": 3840.0,\n                \"oldClose\": 4002.0\n            },\n            {\n                \"date\": 20180409,\n                \"from\": \"hc1805\",\n                \"to\": \"hc1810\",\n                \"newClose\": 3516.0,\n                \"oldClose\": 3782.0\n            },\n            {\n                \"date\": 20180817,\n                \"from\": \"hc1810\",\n                \"to\": \"hc1901\",\n                \"newClose\": 4162.0,\n                \"oldClose\": 4261.0\n            },\n            {\n                \"date\": 20181203,\n                \"from\": \"hc1901\",\n                \"to\": \"hc1905\",\n                \"newClose\": 3235.0,\n                \"oldClose\": 3537.0\n            },\n            {\n                \"date\": 20190404,\n                \"from\": \"hc1905\",\n                \"to\": \"hc1910\",\n                \"newClose\": 3567.0,\n                \"oldClose\": 3846.0\n            },\n            {\n                \"date\": 20190829,\n                \"from\": \"hc1910\",\n                \"to\": \"hc2001\",\n                \"newClose\": 3345.0,\n                \"oldClose\": 3563.0\n            },\n            {\n                \"date\": 20191216,\n                \"from\": \"hc2001\",\n                \"to\": \"hc2005\",\n                \"newClose\": 3523.0,\n                \"oldClose\": 3708.0\n            },\n            {\n                \"date\": 20200327,\n                \"from\": \"hc2005\",\n                \"to\": \"hc2010\",\n                \"newClose\": 3171.0,\n                \"oldClose\": 3306.0\n            },\n            {\n                \"date\": 20200902,\n                \"from\": \"hc2010\",\n                \"to\": \"hc2101\",\n                \"newClose\": 3934.0,\n                \"oldClose\": 4033.0\n            },\n            {\n                \"date\": 20201208,\n                \"from\": \"hc2101\",\n                \"to\": \"hc2105\",\n                \"newClose\": 4193.0,\n                \"oldClose\": 4313.0\n            },\n            {\n                \"date\": 20210409,\n                \"from\": \"hc2105\",\n                \"to\": \"hc2110\",\n                \"newClose\": 5355.0,\n                \"oldClose\": 5460.0\n            },\n            {\n                \"date\": 20210816,\n                \"from\": \"hc2110\",\n                \"to\": \"hc2201\",\n                \"newClose\": 5629.0,\n                \"oldClose\": 5703.0\n            }\n        ],\n        \"zn\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"zn1603\",\n                \"newClose\": 13165.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160202,\n                \"from\": \"zn1603\",\n                \"to\": \"zn1604\",\n                \"newClose\": 13340.0,\n                \"oldClose\": 13295.0\n            },\n            {\n                \"date\": 20160302,\n                \"from\": \"zn1604\",\n                \"to\": \"zn1605\",\n                \"newClose\": 14370.0,\n                \"oldClose\": 14310.0\n            },\n            {\n                \"date\": 20160329,\n                \"from\": \"zn1605\",\n                \"to\": \"zn1606\",\n                \"newClose\": 14180.0,\n                \"oldClose\": 14135.0\n            },\n            {\n                \"date\": 20160503,\n                \"from\": \"zn1606\",\n                \"to\": \"zn1607\",\n                \"newClose\": 15345.0,\n                \"oldClose\": 15295.0\n            },\n            {\n                \"date\": 20160601,\n                \"from\": \"zn1607\",\n                \"to\": \"zn1608\",\n                \"newClose\": 14970.0,\n                \"oldClose\": 14940.0\n            },\n            {\n                \"date\": 20160630,\n                \"from\": \"zn1608\",\n                \"to\": \"zn1609\",\n                \"newClose\": 16450.0,\n                \"oldClose\": 16410.0\n            },\n            {\n                \"date\": 20160729,\n                \"from\": \"zn1609\",\n                \"to\": \"zn1610\",\n                \"newClose\": 16930.0,\n                \"oldClose\": 16870.0\n            },\n            {\n                \"date\": 20160831,\n                \"from\": \"zn1610\",\n                \"to\": \"zn1611\",\n                \"newClose\": 17955.0,\n                \"oldClose\": 17990.0\n            },\n            {\n                \"date\": 20161010,\n                \"from\": \"zn1611\",\n                \"to\": \"zn1612\",\n                \"newClose\": 18390.0,\n                \"oldClose\": 18360.0\n            },\n            {\n                \"date\": 20161031,\n                \"from\": \"zn1612\",\n                \"to\": \"zn1701\",\n                \"newClose\": 19320.0,\n                \"oldClose\": 19330.0\n            },\n            {\n                \"date\": 20161130,\n                \"from\": \"zn1701\",\n                \"to\": \"zn1702\",\n                \"newClose\": 22590.0,\n                \"oldClose\": 22545.0\n            },\n            {\n                \"date\": 20161228,\n                \"from\": \"zn1702\",\n                \"to\": \"zn1703\",\n                \"newClose\": 20650.0,\n                \"oldClose\": 20600.0\n            },\n            {\n                \"date\": 20170213,\n                \"from\": \"zn1703\",\n                \"to\": \"zn1704\",\n                \"newClose\": 24000.0,\n                \"oldClose\": 23955.0\n            },\n            {\n                \"date\": 20170306,\n                \"from\": \"zn1704\",\n                \"to\": \"zn1705\",\n                \"newClose\": 22295.0,\n                \"oldClose\": 22295.0\n            },\n            {\n                \"date\": 20170407,\n                \"from\": \"zn1705\",\n                \"to\": \"zn1706\",\n                \"newClose\": 22150.0,\n                \"oldClose\": 22195.0\n            },\n            {\n                \"date\": 20170508,\n                \"from\": \"zn1706\",\n                \"to\": \"zn1707\",\n                \"newClose\": 21230.0,\n                \"oldClose\": 21470.0\n            },\n            {\n                \"date\": 20170607,\n                \"from\": \"zn1707\",\n                \"to\": \"zn1708\",\n                \"newClose\": 20540.0,\n                \"oldClose\": 21115.0\n            },\n            {\n                \"date\": 20170705,\n                \"from\": \"zn1708\",\n                \"to\": \"zn1709\",\n                \"newClose\": 22780.0,\n                \"oldClose\": 22915.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"zn1709\",\n                \"to\": \"zn1710\",\n                \"newClose\": 23845.0,\n                \"oldClose\": 23860.0\n            },\n            {\n                \"date\": 20170905,\n                \"from\": \"zn1710\",\n                \"to\": \"zn1711\",\n                \"newClose\": 26070.0,\n                \"oldClose\": 26160.0\n            },\n            {\n                \"date\": 20171011,\n                \"from\": \"zn1711\",\n                \"to\": \"zn1712\",\n                \"newClose\": 26135.0,\n                \"oldClose\": 26450.0\n            },\n            {\n                \"date\": 20171102,\n                \"from\": \"zn1712\",\n                \"to\": \"zn1801\",\n                \"newClose\": 25845.0,\n                \"oldClose\": 26000.0\n            },\n            {\n                \"date\": 20171205,\n                \"from\": \"zn1801\",\n                \"to\": \"zn1802\",\n                \"newClose\": 25100.0,\n                \"oldClose\": 25200.0\n            },\n            {\n                \"date\": 20180104,\n                \"from\": \"zn1802\",\n                \"to\": \"zn1803\",\n                \"newClose\": 25990.0,\n                \"oldClose\": 25980.0\n            },\n            {\n                \"date\": 20180206,\n                \"from\": \"zn1803\",\n                \"to\": \"zn1804\",\n                \"newClose\": 26535.0,\n                \"oldClose\": 26555.0\n            },\n            {\n                \"date\": 20180305,\n                \"from\": \"zn1804\",\n                \"to\": \"zn1805\",\n                \"newClose\": 25650.0,\n                \"oldClose\": 25660.0\n            },\n            {\n                \"date\": 20180403,\n                \"from\": \"zn1805\",\n                \"to\": \"zn1806\",\n                \"newClose\": 24710.0,\n                \"oldClose\": 24765.0\n            },\n            {\n                \"date\": 20180508,\n                \"from\": \"zn1806\",\n                \"to\": \"zn1807\",\n                \"newClose\": 23815.0,\n                \"oldClose\": 23885.0\n            },\n            {\n                \"date\": 20180611,\n                \"from\": \"zn1807\",\n                \"to\": \"zn1808\",\n                \"newClose\": 24445.0,\n                \"oldClose\": 24580.0\n            },\n            {\n                \"date\": 20180711,\n                \"from\": \"zn1808\",\n                \"to\": \"zn1809\",\n                \"newClose\": 20545.0,\n                \"oldClose\": 20695.0\n            },\n            {\n                \"date\": 20180731,\n                \"from\": \"zn1809\",\n                \"to\": \"zn1810\",\n                \"newClose\": 21210.0,\n                \"oldClose\": 21405.0\n            },\n            {\n                \"date\": 20180912,\n                \"from\": \"zn1810\",\n                \"to\": \"zn1811\",\n                \"newClose\": 20425.0,\n                \"oldClose\": 20920.0\n            },\n            {\n                \"date\": 20181022,\n                \"from\": \"zn1811\",\n                \"to\": \"zn1812\",\n                \"newClose\": 22035.0,\n                \"oldClose\": 22455.0\n            },\n            {\n                \"date\": 20181108,\n                \"from\": \"zn1812\",\n                \"to\": \"zn1901\",\n                \"newClose\": 20780.0,\n                \"oldClose\": 21360.0\n            },\n            {\n                \"date\": 20181207,\n                \"from\": \"zn1901\",\n                \"to\": \"zn1902\",\n                \"newClose\": 21440.0,\n                \"oldClose\": 21695.0\n            },\n            {\n                \"date\": 20190110,\n                \"from\": \"zn1902\",\n                \"to\": \"zn1903\",\n                \"newClose\": 20415.0,\n                \"oldClose\": 20670.0\n            },\n            {\n                \"date\": 20190218,\n                \"from\": \"zn1903\",\n                \"to\": \"zn1904\",\n                \"newClose\": 21425.0,\n                \"oldClose\": 21575.0\n            },\n            {\n                \"date\": 20190308,\n                \"from\": \"zn1904\",\n                \"to\": \"zn1905\",\n                \"newClose\": 21190.0,\n                \"oldClose\": 21590.0\n            },\n            {\n                \"date\": 20190411,\n                \"from\": \"zn1905\",\n                \"to\": \"zn1906\",\n                \"newClose\": 22395.0,\n                \"oldClose\": 22620.0\n            },\n            {\n                \"date\": 20190515,\n                \"from\": \"zn1906\",\n                \"to\": \"zn1907\",\n                \"newClose\": 20965.0,\n                \"oldClose\": 21270.0\n            },\n            {\n                \"date\": 20190613,\n                \"from\": \"zn1907\",\n                \"to\": \"zn1908\",\n                \"newClose\": 20285.0,\n                \"oldClose\": 20675.0\n            },\n            {\n                \"date\": 20190710,\n                \"from\": \"zn1908\",\n                \"to\": \"zn1909\",\n                \"newClose\": 19180.0,\n                \"oldClose\": 19190.0\n            },\n            {\n                \"date\": 20190807,\n                \"from\": \"zn1909\",\n                \"to\": \"zn1910\",\n                \"newClose\": 18765.0,\n                \"oldClose\": 18850.0\n            },\n            {\n                \"date\": 20190909,\n                \"from\": \"zn1910\",\n                \"to\": \"zn1911\",\n                \"newClose\": 19100.0,\n                \"oldClose\": 19115.0\n            },\n            {\n                \"date\": 20191015,\n                \"from\": \"zn1911\",\n                \"to\": \"zn1912\",\n                \"newClose\": 19070.0,\n                \"oldClose\": 19055.0\n            },\n            {\n                \"date\": 20191112,\n                \"from\": \"zn1912\",\n                \"to\": \"zn2001\",\n                \"newClose\": 18805.0,\n                \"oldClose\": 18810.0\n            },\n            {\n                \"date\": 20191209,\n                \"from\": \"zn2001\",\n                \"to\": \"zn2002\",\n                \"newClose\": 17900.0,\n                \"oldClose\": 18065.0\n            },\n            {\n                \"date\": 20200107,\n                \"from\": \"zn2002\",\n                \"to\": \"zn2003\",\n                \"newClose\": 18175.0,\n                \"oldClose\": 18190.0\n            },\n            {\n                \"date\": 20200210,\n                \"from\": \"zn2003\",\n                \"to\": \"zn2004\",\n                \"newClose\": 17155.0,\n                \"oldClose\": 17140.0\n            },\n            {\n                \"date\": 20200306,\n                \"from\": \"zn2004\",\n                \"to\": \"zn2005\",\n                \"newClose\": 16055.0,\n                \"oldClose\": 16020.0\n            },\n            {\n                \"date\": 20200408,\n                \"from\": \"zn2005\",\n                \"to\": \"zn2006\",\n                \"newClose\": 15650.0,\n                \"oldClose\": 15675.0\n            },\n            {\n                \"date\": 20200508,\n                \"from\": \"zn2006\",\n                \"to\": \"zn2007\",\n                \"newClose\": 16940.0,\n                \"oldClose\": 16985.0\n            },\n            {\n                \"date\": 20200619,\n                \"from\": \"zn2007\",\n                \"to\": \"zn2008\",\n                \"newClose\": 16935.0,\n                \"oldClose\": 16985.0\n            },\n            {\n                \"date\": 20200721,\n                \"from\": \"zn2008\",\n                \"to\": \"zn2009\",\n                \"newClose\": 17840.0,\n                \"oldClose\": 17870.0\n            },\n            {\n                \"date\": 20200821,\n                \"from\": \"zn2009\",\n                \"to\": \"zn2010\",\n                \"newClose\": 20005.0,\n                \"oldClose\": 20060.0\n            },\n            {\n                \"date\": 20200923,\n                \"from\": \"zn2010\",\n                \"to\": \"zn2011\",\n                \"newClose\": 19250.0,\n                \"oldClose\": 19520.0\n            },\n            {\n                \"date\": 20201027,\n                \"from\": \"zn2011\",\n                \"to\": \"zn2012\",\n                \"newClose\": 19610.0,\n                \"oldClose\": 19680.0\n            },\n            {\n                \"date\": 20201124,\n                \"from\": \"zn2012\",\n                \"to\": \"zn2101\",\n                \"newClose\": 20930.0,\n                \"oldClose\": 20960.0\n            },\n            {\n                \"date\": 20201221,\n                \"from\": \"zn2101\",\n                \"to\": \"zn2102\",\n                \"newClose\": 22180.0,\n                \"oldClose\": 22200.0\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"zn2102\",\n                \"to\": \"zn2103\",\n                \"newClose\": 20290.0,\n                \"oldClose\": 20310.0\n            },\n            {\n                \"date\": 20210223,\n                \"from\": \"zn2103\",\n                \"to\": \"zn2104\",\n                \"newClose\": 21840.0,\n                \"oldClose\": 21850.0\n            },\n            {\n                \"date\": 20210319,\n                \"from\": \"zn2104\",\n                \"to\": \"zn2105\",\n                \"newClose\": 21420.0,\n                \"oldClose\": 21460.0\n            },\n            {\n                \"date\": 20210420,\n                \"from\": \"zn2105\",\n                \"to\": \"zn2106\",\n                \"newClose\": 21745.0,\n                \"oldClose\": 21750.0\n            },\n            {\n                \"date\": 20210521,\n                \"from\": \"zn2106\",\n                \"to\": \"zn2107\",\n                \"newClose\": 22435.0,\n                \"oldClose\": 22425.0\n            },\n            {\n                \"date\": 20210624,\n                \"from\": \"zn2107\",\n                \"to\": \"zn2108\",\n                \"newClose\": 21700.0,\n                \"oldClose\": 21690.0\n            },\n            {\n                \"date\": 20210726,\n                \"from\": \"zn2108\",\n                \"to\": \"zn2109\",\n                \"newClose\": 22380.0,\n                \"oldClose\": 22375.0\n            },\n            {\n                \"date\": 20210823,\n                \"from\": \"zn2109\",\n                \"to\": \"zn2110\",\n                \"newClose\": 22230.0,\n                \"oldClose\": 22240.0\n            },\n            {\n                \"date\": 20210924,\n                \"from\": \"zn2110\",\n                \"to\": \"zn2111\",\n                \"newClose\": 22980.0,\n                \"oldClose\": 22985.0\n            }\n        ],\n        \"sn\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"sn1605\",\n                \"newClose\": 91710.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160504,\n                \"from\": \"sn1605\",\n                \"to\": \"sn1609\",\n                \"newClose\": 112040.0,\n                \"oldClose\": 110240.0\n            },\n            {\n                \"date\": 20160831,\n                \"from\": \"sn1609\",\n                \"to\": \"sn1701\",\n                \"newClose\": 123750.0,\n                \"oldClose\": 123200.0\n            },\n            {\n                \"date\": 20161230,\n                \"from\": \"sn1701\",\n                \"to\": \"sn1705\",\n                \"newClose\": 146820.0,\n                \"oldClose\": 146080.0\n            },\n            {\n                \"date\": 20170426,\n                \"from\": \"sn1705\",\n                \"to\": \"sn1709\",\n                \"newClose\": 138290.0,\n                \"oldClose\": 137610.0\n            },\n            {\n                \"date\": 20170830,\n                \"from\": \"sn1709\",\n                \"to\": \"sn1801\",\n                \"newClose\": 146270.0,\n                \"oldClose\": 143540.0\n            },\n            {\n                \"date\": 20171225,\n                \"from\": \"sn1801\",\n                \"to\": \"sn1805\",\n                \"newClose\": 141300.0,\n                \"oldClose\": 138200.0\n            },\n            {\n                \"date\": 20180418,\n                \"from\": \"sn1805\",\n                \"to\": \"sn1809\",\n                \"newClose\": 148230.0,\n                \"oldClose\": 145690.0\n            },\n            {\n                \"date\": 20180821,\n                \"from\": \"sn1809\",\n                \"to\": \"sn1901\",\n                \"newClose\": 144940.0,\n                \"oldClose\": 142870.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"sn1901\",\n                \"to\": \"sn1905\",\n                \"newClose\": 146070.0,\n                \"oldClose\": 144500.0\n            },\n            {\n                \"date\": 20190416,\n                \"from\": \"sn1905\",\n                \"to\": \"sn1909\",\n                \"newClose\": 148690.0,\n                \"oldClose\": 146870.0\n            },\n            {\n                \"date\": 20190819,\n                \"from\": \"sn1909\",\n                \"to\": \"sn2001\",\n                \"newClose\": 130520.0,\n                \"oldClose\": 130210.0\n            },\n            {\n                \"date\": 20191217,\n                \"from\": \"sn2001\",\n                \"to\": \"sn2005\",\n                \"newClose\": 138850.0,\n                \"oldClose\": 140580.0\n            },\n            {\n                \"date\": 20191227,\n                \"from\": \"sn2005\",\n                \"to\": \"sn2006\",\n                \"newClose\": 137530.0,\n                \"oldClose\": 137840.0\n            },\n            {\n                \"date\": 20200428,\n                \"from\": \"sn2006\",\n                \"to\": \"sn2007\",\n                \"newClose\": 128090.0,\n                \"oldClose\": 129850.0\n            },\n            {\n                \"date\": 20200528,\n                \"from\": \"sn2007\",\n                \"to\": \"sn2008\",\n                \"newClose\": 133670.0,\n                \"oldClose\": 134520.0\n            },\n            {\n                \"date\": 20200701,\n                \"from\": \"sn2008\",\n                \"to\": \"sn2009\",\n                \"newClose\": 138430.0,\n                \"oldClose\": 138610.0\n            },\n            {\n                \"date\": 20200727,\n                \"from\": \"sn2009\",\n                \"to\": \"sn2010\",\n                \"newClose\": 146790.0,\n                \"oldClose\": 146510.0\n            },\n            {\n                \"date\": 20200826,\n                \"from\": \"sn2010\",\n                \"to\": \"sn2011\",\n                \"newClose\": 141580.0,\n                \"oldClose\": 141420.0\n            },\n            {\n                \"date\": 20200929,\n                \"from\": \"sn2011\",\n                \"to\": \"sn2012\",\n                \"newClose\": 143300.0,\n                \"oldClose\": 143400.0\n            },\n            {\n                \"date\": 20201027,\n                \"from\": \"sn2012\",\n                \"to\": \"sn2101\",\n                \"newClose\": 144110.0,\n                \"oldClose\": 143830.0\n            },\n            {\n                \"date\": 20201201,\n                \"from\": \"sn2101\",\n                \"to\": \"sn2102\",\n                \"newClose\": 146000.0,\n                \"oldClose\": 145570.0\n            },\n            {\n                \"date\": 20201228,\n                \"from\": \"sn2102\",\n                \"to\": \"sn2103\",\n                \"newClose\": 153490.0,\n                \"oldClose\": 153320.0\n            },\n            {\n                \"date\": 20210205,\n                \"from\": \"sn2103\",\n                \"to\": \"sn2104\",\n                \"newClose\": 163660.0,\n                \"oldClose\": 163550.0\n            },\n            {\n                \"date\": 20210308,\n                \"from\": \"sn2104\",\n                \"to\": \"sn2105\",\n                \"newClose\": 170850.0,\n                \"oldClose\": 170460.0\n            },\n            {\n                \"date\": 20210401,\n                \"from\": \"sn2105\",\n                \"to\": \"sn2106\",\n                \"newClose\": 176550.0,\n                \"oldClose\": 176330.0\n            },\n            {\n                \"date\": 20210507,\n                \"from\": \"sn2106\",\n                \"to\": \"sn2107\",\n                \"newClose\": 198160.0,\n                \"oldClose\": 197800.0\n            },\n            {\n                \"date\": 20210617,\n                \"from\": \"sn2107\",\n                \"to\": \"sn2108\",\n                \"newClose\": 205630.0,\n                \"oldClose\": 206150.0\n            },\n            {\n                \"date\": 20210723,\n                \"from\": \"sn2108\",\n                \"to\": \"sn2109\",\n                \"newClose\": 233530.0,\n                \"oldClose\": 235400.0\n            },\n            {\n                \"date\": 20210827,\n                \"from\": \"sn2109\",\n                \"to\": \"sn2110\",\n                \"newClose\": 240810.0,\n                \"oldClose\": 243520.0\n            },\n            {\n                \"date\": 20210927,\n                \"from\": \"sn2110\",\n                \"to\": \"sn2111\",\n                \"newClose\": 268810.0,\n                \"oldClose\": 270340.0\n            }\n        ],\n        \"rb\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"rb1605\",\n                \"newClose\": 1777.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160314,\n                \"from\": \"rb1605\",\n                \"to\": \"rb1610\",\n                \"newClose\": 1986.0,\n                \"oldClose\": 2041.0\n            },\n            {\n                \"date\": 20160818,\n                \"from\": \"rb1610\",\n                \"to\": \"rb1701\",\n                \"newClose\": 2549.0,\n                \"oldClose\": 2575.0\n            },\n            {\n                \"date\": 20161128,\n                \"from\": \"rb1701\",\n                \"to\": \"rb1705\",\n                \"newClose\": 3332.0,\n                \"oldClose\": 3188.0\n            },\n            {\n                \"date\": 20170323,\n                \"from\": \"rb1705\",\n                \"to\": \"rb1710\",\n                \"newClose\": 3127.0,\n                \"oldClose\": 3417.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"rb1710\",\n                \"to\": \"rb1801\",\n                \"newClose\": 3884.0,\n                \"oldClose\": 4046.0\n            },\n            {\n                \"date\": 20171109,\n                \"from\": \"rb1801\",\n                \"to\": \"rb1805\",\n                \"newClose\": 3760.0,\n                \"oldClose\": 3760.0\n            },\n            {\n                \"date\": 20180328,\n                \"from\": \"rb1805\",\n                \"to\": \"rb1810\",\n                \"newClose\": 3212.0,\n                \"oldClose\": 3424.0\n            },\n            {\n                \"date\": 20180815,\n                \"from\": \"rb1810\",\n                \"to\": \"rb1901\",\n                \"newClose\": 4163.0,\n                \"oldClose\": 4345.0\n            },\n            {\n                \"date\": 20181130,\n                \"from\": \"rb1901\",\n                \"to\": \"rb1905\",\n                \"newClose\": 3256.0,\n                \"oldClose\": 3587.0\n            },\n            {\n                \"date\": 20190402,\n                \"from\": \"rb1905\",\n                \"to\": \"rb1910\",\n                \"newClose\": 3560.0,\n                \"oldClose\": 3838.0\n            },\n            {\n                \"date\": 20190823,\n                \"from\": \"rb1910\",\n                \"to\": \"rb2001\",\n                \"newClose\": 3446.0,\n                \"oldClose\": 3715.0\n            },\n            {\n                \"date\": 20191205,\n                \"from\": \"rb2001\",\n                \"to\": \"rb2005\",\n                \"newClose\": 3404.0,\n                \"oldClose\": 3585.0\n            },\n            {\n                \"date\": 20200325,\n                \"from\": \"rb2005\",\n                \"to\": \"rb2010\",\n                \"newClose\": 3365.0,\n                \"oldClose\": 3463.0\n            },\n            {\n                \"date\": 20200825,\n                \"from\": \"rb2010\",\n                \"to\": \"rb2101\",\n                \"newClose\": 3704.0,\n                \"oldClose\": 3773.0\n            },\n            {\n                \"date\": 20201207,\n                \"from\": \"rb2101\",\n                \"to\": \"rb2105\",\n                \"newClose\": 3912.0,\n                \"oldClose\": 3980.0\n            },\n            {\n                \"date\": 20210406,\n                \"from\": \"rb2105\",\n                \"to\": \"rb2110\",\n                \"newClose\": 5147.0,\n                \"oldClose\": 5180.0\n            },\n            {\n                \"date\": 20210810,\n                \"from\": \"rb2110\",\n                \"to\": \"rb2201\",\n                \"newClose\": 5497.0,\n                \"oldClose\": 5437.0\n            }\n        ],\n        \"pb\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"pb1602\",\n                \"newClose\": 13145.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160112,\n                \"from\": \"pb1602\",\n                \"to\": \"pb1603\",\n                \"newClose\": 12555.0,\n                \"oldClose\": 12615.0\n            },\n            {\n                \"date\": 20160217,\n                \"from\": \"pb1603\",\n                \"to\": \"pb1604\",\n                \"newClose\": 13510.0,\n                \"oldClose\": 13610.0\n            },\n            {\n                \"date\": 20160308,\n                \"from\": \"pb1604\",\n                \"to\": \"pb1605\",\n                \"newClose\": 13755.0,\n                \"oldClose\": 13730.0\n            },\n            {\n                \"date\": 20160414,\n                \"from\": \"pb1605\",\n                \"to\": \"pb1606\",\n                \"newClose\": 13350.0,\n                \"oldClose\": 13395.0\n            },\n            {\n                \"date\": 20160509,\n                \"from\": \"pb1606\",\n                \"to\": \"pb1607\",\n                \"newClose\": 12970.0,\n                \"oldClose\": 12955.0\n            },\n            {\n                \"date\": 20160614,\n                \"from\": \"pb1607\",\n                \"to\": \"pb1608\",\n                \"newClose\": 12755.0,\n                \"oldClose\": 12730.0\n            },\n            {\n                \"date\": 20160707,\n                \"from\": \"pb1608\",\n                \"to\": \"pb1609\",\n                \"newClose\": 13015.0,\n                \"oldClose\": 12920.0\n            },\n            {\n                \"date\": 20160822,\n                \"from\": \"pb1609\",\n                \"to\": \"pb1610\",\n                \"newClose\": 13900.0,\n                \"oldClose\": 13890.0\n            },\n            {\n                \"date\": 20160920,\n                \"from\": \"pb1610\",\n                \"to\": \"pb1611\",\n                \"newClose\": 14475.0,\n                \"oldClose\": 14420.0\n            },\n            {\n                \"date\": 20161020,\n                \"from\": \"pb1611\",\n                \"to\": \"pb1612\",\n                \"newClose\": 15410.0,\n                \"oldClose\": 15450.0\n            },\n            {\n                \"date\": 20161108,\n                \"from\": \"pb1612\",\n                \"to\": \"pb1701\",\n                \"newClose\": 16690.0,\n                \"oldClose\": 16650.0\n            },\n            {\n                \"date\": 20161208,\n                \"from\": \"pb1701\",\n                \"to\": \"pb1702\",\n                \"newClose\": 20775.0,\n                \"oldClose\": 20965.0\n            },\n            {\n                \"date\": 20170116,\n                \"from\": \"pb1702\",\n                \"to\": \"pb1703\",\n                \"newClose\": 18900.0,\n                \"oldClose\": 18845.0\n            },\n            {\n                \"date\": 20170221,\n                \"from\": \"pb1703\",\n                \"to\": \"pb1704\",\n                \"newClose\": 19150.0,\n                \"oldClose\": 19075.0\n            },\n            {\n                \"date\": 20170316,\n                \"from\": \"pb1704\",\n                \"to\": \"pb1705\",\n                \"newClose\": 18540.0,\n                \"oldClose\": 18430.0\n            },\n            {\n                \"date\": 20170417,\n                \"from\": \"pb1705\",\n                \"to\": \"pb1706\",\n                \"newClose\": 16510.0,\n                \"oldClose\": 16445.0\n            },\n            {\n                \"date\": 20170523,\n                \"from\": \"pb1706\",\n                \"to\": \"pb1707\",\n                \"newClose\": 15865.0,\n                \"oldClose\": 15795.0\n            },\n            {\n                \"date\": 20170622,\n                \"from\": \"pb1707\",\n                \"to\": \"pb1708\",\n                \"newClose\": 17535.0,\n                \"oldClose\": 17660.0\n            },\n            {\n                \"date\": 20170721,\n                \"from\": \"pb1708\",\n                \"to\": \"pb1709\",\n                \"newClose\": 17430.0,\n                \"oldClose\": 17460.0\n            },\n            {\n                \"date\": 20170816,\n                \"from\": \"pb1709\",\n                \"to\": \"pb1710\",\n                \"newClose\": 19440.0,\n                \"oldClose\": 19430.0\n            },\n            {\n                \"date\": 20170918,\n                \"from\": \"pb1710\",\n                \"to\": \"pb1711\",\n                \"newClose\": 19830.0,\n                \"oldClose\": 20350.0\n            },\n            {\n                \"date\": 20171020,\n                \"from\": \"pb1711\",\n                \"to\": \"pb1712\",\n                \"newClose\": 19270.0,\n                \"oldClose\": 19580.0\n            },\n            {\n                \"date\": 20171116,\n                \"from\": \"pb1712\",\n                \"to\": \"pb1801\",\n                \"newClose\": 18495.0,\n                \"oldClose\": 18515.0\n            },\n            {\n                \"date\": 20171220,\n                \"from\": \"pb1801\",\n                \"to\": \"pb1802\",\n                \"newClose\": 19335.0,\n                \"oldClose\": 19330.0\n            },\n            {\n                \"date\": 20180117,\n                \"from\": \"pb1802\",\n                \"to\": \"pb1803\",\n                \"newClose\": 19195.0,\n                \"oldClose\": 19135.0\n            },\n            {\n                \"date\": 20180214,\n                \"from\": \"pb1803\",\n                \"to\": \"pb1804\",\n                \"newClose\": 19315.0,\n                \"oldClose\": 19320.0\n            },\n            {\n                \"date\": 20180314,\n                \"from\": \"pb1804\",\n                \"to\": \"pb1805\",\n                \"newClose\": 18385.0,\n                \"oldClose\": 18540.0\n            },\n            {\n                \"date\": 20180417,\n                \"from\": \"pb1805\",\n                \"to\": \"pb1806\",\n                \"newClose\": 18155.0,\n                \"oldClose\": 18395.0\n            },\n            {\n                \"date\": 20180523,\n                \"from\": \"pb1806\",\n                \"to\": \"pb1807\",\n                \"newClose\": 19750.0,\n                \"oldClose\": 20200.0\n            },\n            {\n                \"date\": 20180625,\n                \"from\": \"pb1807\",\n                \"to\": \"pb1808\",\n                \"newClose\": 19550.0,\n                \"oldClose\": 19980.0\n            },\n            {\n                \"date\": 20180724,\n                \"from\": \"pb1808\",\n                \"to\": \"pb1809\",\n                \"newClose\": 18575.0,\n                \"oldClose\": 18940.0\n            },\n            {\n                \"date\": 20180816,\n                \"from\": \"pb1809\",\n                \"to\": \"pb1810\",\n                \"newClose\": 17505.0,\n                \"oldClose\": 17760.0\n            },\n            {\n                \"date\": 20180919,\n                \"from\": \"pb1810\",\n                \"to\": \"pb1811\",\n                \"newClose\": 18480.0,\n                \"oldClose\": 18885.0\n            },\n            {\n                \"date\": 20181023,\n                \"from\": \"pb1811\",\n                \"to\": \"pb1812\",\n                \"newClose\": 18125.0,\n                \"oldClose\": 18305.0\n            },\n            {\n                \"date\": 20181115,\n                \"from\": \"pb1812\",\n                \"to\": \"pb1901\",\n                \"newClose\": 18250.0,\n                \"oldClose\": 18575.0\n            },\n            {\n                \"date\": 20181220,\n                \"from\": \"pb1901\",\n                \"to\": \"pb1902\",\n                \"newClose\": 18045.0,\n                \"oldClose\": 18405.0\n            },\n            {\n                \"date\": 20190123,\n                \"from\": \"pb1902\",\n                \"to\": \"pb1903\",\n                \"newClose\": 17555.0,\n                \"oldClose\": 17675.0\n            },\n            {\n                \"date\": 20190221,\n                \"from\": \"pb1903\",\n                \"to\": \"pb1904\",\n                \"newClose\": 16765.0,\n                \"oldClose\": 16770.0\n            },\n            {\n                \"date\": 20190320,\n                \"from\": \"pb1904\",\n                \"to\": \"pb1905\",\n                \"newClose\": 16875.0,\n                \"oldClose\": 16880.0\n            },\n            {\n                \"date\": 20190415,\n                \"from\": \"pb1905\",\n                \"to\": \"pb1906\",\n                \"newClose\": 16420.0,\n                \"oldClose\": 16440.0\n            },\n            {\n                \"date\": 20190520,\n                \"from\": \"pb1906\",\n                \"to\": \"pb1907\",\n                \"newClose\": 16065.0,\n                \"oldClose\": 16080.0\n            },\n            {\n                \"date\": 20190621,\n                \"from\": \"pb1907\",\n                \"to\": \"pb1908\",\n                \"newClose\": 15965.0,\n                \"oldClose\": 16010.0\n            },\n            {\n                \"date\": 20190716,\n                \"from\": \"pb1908\",\n                \"to\": \"pb1909\",\n                \"newClose\": 16275.0,\n                \"oldClose\": 16285.0\n            },\n            {\n                \"date\": 20190820,\n                \"from\": \"pb1909\",\n                \"to\": \"pb1910\",\n                \"newClose\": 16975.0,\n                \"oldClose\": 16950.0\n            },\n            {\n                \"date\": 20190918,\n                \"from\": \"pb1910\",\n                \"to\": \"pb1911\",\n                \"newClose\": 16870.0,\n                \"oldClose\": 16925.0\n            },\n            {\n                \"date\": 20191022,\n                \"from\": \"pb1911\",\n                \"to\": \"pb1912\",\n                \"newClose\": 16840.0,\n                \"oldClose\": 16945.0\n            },\n            {\n                \"date\": 20191112,\n                \"from\": \"pb1912\",\n                \"to\": \"pb2001\",\n                \"newClose\": 16000.0,\n                \"oldClose\": 16025.0\n            },\n            {\n                \"date\": 20191216,\n                \"from\": \"pb2001\",\n                \"to\": \"pb2002\",\n                \"newClose\": 14975.0,\n                \"oldClose\": 15070.0\n            },\n            {\n                \"date\": 20200110,\n                \"from\": \"pb2002\",\n                \"to\": \"pb2003\",\n                \"newClose\": 14975.0,\n                \"oldClose\": 14975.0\n            },\n            {\n                \"date\": 20200212,\n                \"from\": \"pb2003\",\n                \"to\": \"pb2004\",\n                \"newClose\": 14200.0,\n                \"oldClose\": 14170.0\n            },\n            {\n                \"date\": 20200311,\n                \"from\": \"pb2004\",\n                \"to\": \"pb2005\",\n                \"newClose\": 14315.0,\n                \"oldClose\": 14365.0\n            },\n            {\n                \"date\": 20200416,\n                \"from\": \"pb2005\",\n                \"to\": \"pb2006\",\n                \"newClose\": 13680.0,\n                \"oldClose\": 13810.0\n            },\n            {\n                \"date\": 20200520,\n                \"from\": \"pb2006\",\n                \"to\": \"pb2007\",\n                \"newClose\": 14090.0,\n                \"oldClose\": 14200.0\n            },\n            {\n                \"date\": 20200622,\n                \"from\": \"pb2007\",\n                \"to\": \"pb2008\",\n                \"newClose\": 14560.0,\n                \"oldClose\": 14645.0\n            },\n            {\n                \"date\": 20200723,\n                \"from\": \"pb2008\",\n                \"to\": \"pb2009\",\n                \"newClose\": 14850.0,\n                \"oldClose\": 14865.0\n            },\n            {\n                \"date\": 20200820,\n                \"from\": \"pb2009\",\n                \"to\": \"pb2010\",\n                \"newClose\": 16015.0,\n                \"oldClose\": 16025.0\n            },\n            {\n                \"date\": 20200924,\n                \"from\": \"pb2010\",\n                \"to\": \"pb2011\",\n                \"newClose\": 15100.0,\n                \"oldClose\": 15415.0\n            },\n            {\n                \"date\": 20201026,\n                \"from\": \"pb2011\",\n                \"to\": \"pb2012\",\n                \"newClose\": 14105.0,\n                \"oldClose\": 14160.0\n            },\n            {\n                \"date\": 20201120,\n                \"from\": \"pb2012\",\n                \"to\": \"pb2101\",\n                \"newClose\": 15320.0,\n                \"oldClose\": 15280.0\n            },\n            {\n                \"date\": 20201223,\n                \"from\": \"pb2101\",\n                \"to\": \"pb2102\",\n                \"newClose\": 14520.0,\n                \"oldClose\": 14500.0\n            },\n            {\n                \"date\": 20210115,\n                \"from\": \"pb2102\",\n                \"to\": \"pb2103\",\n                \"newClose\": 14905.0,\n                \"oldClose\": 14905.0\n            },\n            {\n                \"date\": 20210222,\n                \"from\": \"pb2103\",\n                \"to\": \"pb2104\",\n                \"newClose\": 15840.0,\n                \"oldClose\": 15810.0\n            },\n            {\n                \"date\": 20210319,\n                \"from\": \"pb2104\",\n                \"to\": \"pb2105\",\n                \"newClose\": 14830.0,\n                \"oldClose\": 14820.0\n            },\n            {\n                \"date\": 20210423,\n                \"from\": \"pb2105\",\n                \"to\": \"pb2106\",\n                \"newClose\": 15320.0,\n                \"oldClose\": 15300.0\n            },\n            {\n                \"date\": 20210525,\n                \"from\": \"pb2106\",\n                \"to\": \"pb2107\",\n                \"newClose\": 15255.0,\n                \"oldClose\": 15260.0\n            },\n            {\n                \"date\": 20210624,\n                \"from\": \"pb2107\",\n                \"to\": \"pb2108\",\n                \"newClose\": 15465.0,\n                \"oldClose\": 15390.0\n            },\n            {\n                \"date\": 20210722,\n                \"from\": \"pb2108\",\n                \"to\": \"pb2109\",\n                \"newClose\": 16005.0,\n                \"oldClose\": 15960.0\n            },\n            {\n                \"date\": 20210825,\n                \"from\": \"pb2109\",\n                \"to\": \"pb2110\",\n                \"newClose\": 15470.0,\n                \"oldClose\": 15415.0\n            },\n            {\n                \"date\": 20210928,\n                \"from\": \"pb2110\",\n                \"to\": \"pb2111\",\n                \"newClose\": 14515.0,\n                \"oldClose\": 14470.0\n            }\n        ],\n        \"ni\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"ni1605\",\n                \"newClose\": 68930.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160408,\n                \"from\": \"ni1605\",\n                \"to\": \"ni1609\",\n                \"newClose\": 67430.0,\n                \"oldClose\": 66520.0\n            },\n            {\n                \"date\": 20160801,\n                \"from\": \"ni1609\",\n                \"to\": \"ni1701\",\n                \"newClose\": 83930.0,\n                \"oldClose\": 82430.0\n            },\n            {\n                \"date\": 20161125,\n                \"from\": \"ni1701\",\n                \"to\": \"ni1705\",\n                \"newClose\": 96700.0,\n                \"oldClose\": 95200.0\n            },\n            {\n                \"date\": 20170405,\n                \"from\": \"ni1705\",\n                \"to\": \"ni1709\",\n                \"newClose\": 86000.0,\n                \"oldClose\": 84230.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"ni1709\",\n                \"to\": \"ni1801\",\n                \"newClose\": 84300.0,\n                \"oldClose\": 82730.0\n            },\n            {\n                \"date\": 20171113,\n                \"from\": \"ni1801\",\n                \"to\": \"ni1805\",\n                \"newClose\": 100610.0,\n                \"oldClose\": 99650.0\n            },\n            {\n                \"date\": 20180329,\n                \"from\": \"ni1805\",\n                \"to\": \"ni1807\",\n                \"newClose\": 98810.0,\n                \"oldClose\": 98360.0\n            },\n            {\n                \"date\": 20180606,\n                \"from\": \"ni1807\",\n                \"to\": \"ni1809\",\n                \"newClose\": 118470.0,\n                \"oldClose\": 118760.0\n            },\n            {\n                \"date\": 20180801,\n                \"from\": \"ni1809\",\n                \"to\": \"ni1811\",\n                \"newClose\": 113050.0,\n                \"oldClose\": 113290.0\n            },\n            {\n                \"date\": 20181015,\n                \"from\": \"ni1811\",\n                \"to\": \"ni1901\",\n                \"newClose\": 104200.0,\n                \"oldClose\": 104590.0\n            },\n            {\n                \"date\": 20181210,\n                \"from\": \"ni1901\",\n                \"to\": \"ni1905\",\n                \"newClose\": 89310.0,\n                \"oldClose\": 89770.0\n            },\n            {\n                \"date\": 20190408,\n                \"from\": \"ni1905\",\n                \"to\": \"ni1906\",\n                \"newClose\": 102800.0,\n                \"oldClose\": 103100.0\n            },\n            {\n                \"date\": 20190515,\n                \"from\": \"ni1906\",\n                \"to\": \"ni1907\",\n                \"newClose\": 97230.0,\n                \"oldClose\": 97220.0\n            },\n            {\n                \"date\": 20190619,\n                \"from\": \"ni1907\",\n                \"to\": \"ni1908\",\n                \"newClose\": 99060.0,\n                \"oldClose\": 99790.0\n            },\n            {\n                \"date\": 20190722,\n                \"from\": \"ni1908\",\n                \"to\": \"ni1910\",\n                \"newClose\": 113490.0,\n                \"oldClose\": 113170.0\n            },\n            {\n                \"date\": 20190828,\n                \"from\": \"ni1910\",\n                \"to\": \"ni1911\",\n                \"newClose\": 125870.0,\n                \"oldClose\": 125740.0\n            },\n            {\n                \"date\": 20191014,\n                \"from\": \"ni1911\",\n                \"to\": \"ni1912\",\n                \"newClose\": 135770.0,\n                \"oldClose\": 136970.0\n            },\n            {\n                \"date\": 20191111,\n                \"from\": \"ni1912\",\n                \"to\": \"ni2002\",\n                \"newClose\": 124470.0,\n                \"oldClose\": 130400.0\n            },\n            {\n                \"date\": 20191220,\n                \"from\": \"ni2002\",\n                \"to\": \"ni2003\",\n                \"newClose\": 111710.0,\n                \"oldClose\": 111740.0\n            },\n            {\n                \"date\": 20200121,\n                \"from\": \"ni2003\",\n                \"to\": \"ni2004\",\n                \"newClose\": 107410.0,\n                \"oldClose\": 107480.0\n            },\n            {\n                \"date\": 20200225,\n                \"from\": \"ni2004\",\n                \"to\": \"ni2006\",\n                \"newClose\": 102970.0,\n                \"oldClose\": 102670.0\n            },\n            {\n                \"date\": 20200422,\n                \"from\": \"ni2006\",\n                \"to\": \"ni2007\",\n                \"newClose\": 98130.0,\n                \"oldClose\": 98050.0\n            },\n            {\n                \"date\": 20200525,\n                \"from\": \"ni2007\",\n                \"to\": \"ni2008\",\n                \"newClose\": 100770.0,\n                \"oldClose\": 100650.0\n            },\n            {\n                \"date\": 20200624,\n                \"from\": \"ni2008\",\n                \"to\": \"ni2010\",\n                \"newClose\": 102040.0,\n                \"oldClose\": 101640.0\n            },\n            {\n                \"date\": 20200818,\n                \"from\": \"ni2010\",\n                \"to\": \"ni2011\",\n                \"newClose\": 116290.0,\n                \"oldClose\": 116150.0\n            },\n            {\n                \"date\": 20200917,\n                \"from\": \"ni2011\",\n                \"to\": \"ni2012\",\n                \"newClose\": 115680.0,\n                \"oldClose\": 115560.0\n            },\n            {\n                \"date\": 20201102,\n                \"from\": \"ni2012\",\n                \"to\": \"ni2102\",\n                \"newClose\": 115690.0,\n                \"oldClose\": 115510.0\n            },\n            {\n                \"date\": 20201218,\n                \"from\": \"ni2102\",\n                \"to\": \"ni2103\",\n                \"newClose\": 131800.0,\n                \"oldClose\": 131530.0\n            },\n            {\n                \"date\": 20210126,\n                \"from\": \"ni2103\",\n                \"to\": \"ni2104\",\n                \"newClose\": 133820.0,\n                \"oldClose\": 134000.0\n            },\n            {\n                \"date\": 20210302,\n                \"from\": \"ni2104\",\n                \"to\": \"ni2106\",\n                \"newClose\": 138200.0,\n                \"oldClose\": 138080.0\n            },\n            {\n                \"date\": 20210524,\n                \"from\": \"ni2106\",\n                \"to\": \"ni2107\",\n                \"newClose\": 123880.0,\n                \"oldClose\": 123970.0\n            },\n            {\n                \"date\": 20210629,\n                \"from\": \"ni2107\",\n                \"to\": \"ni2108\",\n                \"newClose\": 135560.0,\n                \"oldClose\": 135560.0\n            },\n            {\n                \"date\": 20210727,\n                \"from\": \"ni2108\",\n                \"to\": \"ni2109\",\n                \"newClose\": 144760.0,\n                \"oldClose\": 144840.0\n            },\n            {\n                \"date\": 20210827,\n                \"from\": \"ni2109\",\n                \"to\": \"ni2110\",\n                \"newClose\": 141840.0,\n                \"oldClose\": 143480.0\n            },\n            {\n                \"date\": 20210929,\n                \"from\": \"ni2110\",\n                \"to\": \"ni2111\",\n                \"newClose\": 139430.0,\n                \"oldClose\": 141960.0\n            }\n        ],\n        \"sp\": [\n            {\n                \"date\": 20190102,\n                \"from\": \"\",\n                \"to\": \"sp1906\",\n                \"newClose\": 5082.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20190510,\n                \"from\": \"sp1906\",\n                \"to\": \"sp1909\",\n                \"newClose\": 5080.0,\n                \"oldClose\": 5134.0\n            },\n            {\n                \"date\": 20190809,\n                \"from\": \"sp1909\",\n                \"to\": \"sp2001\",\n                \"newClose\": 4664.0,\n                \"oldClose\": 4550.0\n            },\n            {\n                \"date\": 20191217,\n                \"from\": \"sp2001\",\n                \"to\": \"sp2005\",\n                \"newClose\": 4560.0,\n                \"oldClose\": 4434.0\n            },\n            {\n                \"date\": 20200402,\n                \"from\": \"sp2005\",\n                \"to\": \"sp2009\",\n                \"newClose\": 4624.0,\n                \"oldClose\": 4500.0\n            },\n            {\n                \"date\": 20200811,\n                \"from\": \"sp2009\",\n                \"to\": \"sp2012\",\n                \"newClose\": 4570.0,\n                \"oldClose\": 4466.0\n            },\n            {\n                \"date\": 20201111,\n                \"from\": \"sp2012\",\n                \"to\": \"sp2101\",\n                \"newClose\": 4730.0,\n                \"oldClose\": 4664.0\n            },\n            {\n                \"date\": 20201207,\n                \"from\": \"sp2101\",\n                \"to\": \"sp2103\",\n                \"newClose\": 5100.0,\n                \"oldClose\": 5026.0\n            },\n            {\n                \"date\": 20210208,\n                \"from\": \"sp2103\",\n                \"to\": \"sp2105\",\n                \"newClose\": 6626.0,\n                \"oldClose\": 6702.0\n            },\n            {\n                \"date\": 20210414,\n                \"from\": \"sp2105\",\n                \"to\": \"sp2106\",\n                \"newClose\": 7234.0,\n                \"oldClose\": 7328.0\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"sp2106\",\n                \"to\": \"sp2107\",\n                \"newClose\": 6850.0,\n                \"oldClose\": 6954.0\n            },\n            {\n                \"date\": 20210615,\n                \"from\": \"sp2107\",\n                \"to\": \"sp2109\",\n                \"newClose\": 5872.0,\n                \"oldClose\": 6050.0\n            },\n            {\n                \"date\": 20210820,\n                \"from\": \"sp2109\",\n                \"to\": \"sp2110\",\n                \"newClose\": 6192.0,\n                \"oldClose\": 6282.0\n            },\n            {\n                \"date\": 20210924,\n                \"from\": \"sp2110\",\n                \"to\": \"sp2111\",\n                \"newClose\": 5786.0,\n                \"oldClose\": 6194.0\n            }\n        ],\n        \"ss\": [\n            {\n                \"date\": 20190925,\n                \"from\": \"\",\n                \"to\": \"ss2002\",\n                \"newClose\": 15575.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20191230,\n                \"from\": \"ss2002\",\n                \"to\": \"ss2006\",\n                \"newClose\": 14160.0,\n                \"oldClose\": 14345.0\n            },\n            {\n                \"date\": 20200429,\n                \"from\": \"ss2006\",\n                \"to\": \"ss2007\",\n                \"newClose\": 12760.0,\n                \"oldClose\": 12820.0\n            },\n            {\n                \"date\": 20200528,\n                \"from\": \"ss2007\",\n                \"to\": \"ss2008\",\n                \"newClose\": 12980.0,\n                \"oldClose\": 13060.0\n            },\n            {\n                \"date\": 20200702,\n                \"from\": \"ss2008\",\n                \"to\": \"ss2009\",\n                \"newClose\": 13210.0,\n                \"oldClose\": 13355.0\n            },\n            {\n                \"date\": 20200803,\n                \"from\": \"ss2009\",\n                \"to\": \"ss2010\",\n                \"newClose\": 13895.0,\n                \"oldClose\": 13995.0\n            },\n            {\n                \"date\": 20200827,\n                \"from\": \"ss2010\",\n                \"to\": \"ss2011\",\n                \"newClose\": 15110.0,\n                \"oldClose\": 15090.0\n            },\n            {\n                \"date\": 20201009,\n                \"from\": \"ss2011\",\n                \"to\": \"ss2012\",\n                \"newClose\": 14540.0,\n                \"oldClose\": 14690.0\n            },\n            {\n                \"date\": 20201027,\n                \"from\": \"ss2012\",\n                \"to\": \"ss2101\",\n                \"newClose\": 14290.0,\n                \"oldClose\": 14210.0\n            },\n            {\n                \"date\": 20201127,\n                \"from\": \"ss2101\",\n                \"to\": \"ss2102\",\n                \"newClose\": 13370.0,\n                \"oldClose\": 13355.0\n            },\n            {\n                \"date\": 20201229,\n                \"from\": \"ss2102\",\n                \"to\": \"ss2103\",\n                \"newClose\": 13320.0,\n                \"oldClose\": 13295.0\n            },\n            {\n                \"date\": 20210203,\n                \"from\": \"ss2103\",\n                \"to\": \"ss2104\",\n                \"newClose\": 14225.0,\n                \"oldClose\": 14185.0\n            },\n            {\n                \"date\": 20210301,\n                \"from\": \"ss2104\",\n                \"to\": \"ss2105\",\n                \"newClose\": 15105.0,\n                \"oldClose\": 15060.0\n            },\n            {\n                \"date\": 20210401,\n                \"from\": \"ss2105\",\n                \"to\": \"ss2106\",\n                \"newClose\": 14250.0,\n                \"oldClose\": 14285.0\n            },\n            {\n                \"date\": 20210507,\n                \"from\": \"ss2106\",\n                \"to\": \"ss2107\",\n                \"newClose\": 14900.0,\n                \"oldClose\": 14980.0\n            },\n            {\n                \"date\": 20210622,\n                \"from\": \"ss2107\",\n                \"to\": \"ss2108\",\n                \"newClose\": 16230.0,\n                \"oldClose\": 16435.0\n            },\n            {\n                \"date\": 20210727,\n                \"from\": \"ss2108\",\n                \"to\": \"ss2109\",\n                \"newClose\": 19045.0,\n                \"oldClose\": 19190.0\n            },\n            {\n                \"date\": 20210825,\n                \"from\": \"ss2109\",\n                \"to\": \"ss2110\",\n                \"newClose\": 17725.0,\n                \"oldClose\": 18000.0\n            },\n            {\n                \"date\": 20210928,\n                \"from\": \"ss2110\",\n                \"to\": \"ss2111\",\n                \"newClose\": 20040.0,\n                \"oldClose\": 20520.0\n            }\n        ]\n    },\n    \"CZCE\": {\n        \"CF\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"CF605\",\n                \"newClose\": 11280.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160203,\n                \"from\": \"CF605\",\n                \"to\": \"CF609\",\n                \"newClose\": 10715.0,\n                \"oldClose\": 11460.0\n            },\n            {\n                \"date\": 20160621,\n                \"from\": \"CF609\",\n                \"to\": \"CF701\",\n                \"newClose\": 13155.0,\n                \"oldClose\": 13030.0\n            },\n            {\n                \"date\": 20161122,\n                \"from\": \"CF701\",\n                \"to\": \"CF705\",\n                \"newClose\": 16320.0,\n                \"oldClose\": 16265.0\n            },\n            {\n                \"date\": 20170331,\n                \"from\": \"CF705\",\n                \"to\": \"CF709\",\n                \"newClose\": 15350.0,\n                \"oldClose\": 14840.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"CF709\",\n                \"to\": \"CF801\",\n                \"newClose\": 15330.0,\n                \"oldClose\": 15150.0\n            },\n            {\n                \"date\": 20171128,\n                \"from\": \"CF801\",\n                \"to\": \"CF805\",\n                \"newClose\": 15195.0,\n                \"oldClose\": 15050.0\n            },\n            {\n                \"date\": 20180326,\n                \"from\": \"CF805\",\n                \"to\": \"CF809\",\n                \"newClose\": 15495.0,\n                \"oldClose\": 14995.0\n            },\n            {\n                \"date\": 20180522,\n                \"from\": \"CF809\",\n                \"to\": \"CF901\",\n                \"newClose\": 17865.0,\n                \"oldClose\": 17085.0\n            },\n            {\n                \"date\": 20181126,\n                \"from\": \"CF901\",\n                \"to\": \"CF905\",\n                \"newClose\": 14970.0,\n                \"oldClose\": 14440.0\n            },\n            {\n                \"date\": 20190404,\n                \"from\": \"CF905\",\n                \"to\": \"CF909\",\n                \"newClose\": 15630.0,\n                \"oldClose\": 15160.0\n            },\n            {\n                \"date\": 20190809,\n                \"from\": \"CF909\",\n                \"to\": \"CF001\",\n                \"newClose\": 12720.0,\n                \"oldClose\": 12175.0\n            },\n            {\n                \"date\": 20191202,\n                \"from\": \"CF001\",\n                \"to\": \"CF005\",\n                \"newClose\": 13085.0,\n                \"oldClose\": 12615.0\n            },\n            {\n                \"date\": 20200331,\n                \"from\": \"CF005\",\n                \"to\": \"CF009\",\n                \"newClose\": 10940.0,\n                \"oldClose\": 10540.0\n            },\n            {\n                \"date\": 20200810,\n                \"from\": \"CF009\",\n                \"to\": \"CF101\",\n                \"newClose\": 12735.0,\n                \"oldClose\": 12140.0\n            },\n            {\n                \"date\": 20201208,\n                \"from\": \"CF101\",\n                \"to\": \"CF105\",\n                \"newClose\": 14570.0,\n                \"oldClose\": 14485.0\n            },\n            {\n                \"date\": 20210408,\n                \"from\": \"CF105\",\n                \"to\": \"CF109\",\n                \"newClose\": 15120.0,\n                \"oldClose\": 14880.0\n            },\n            {\n                \"date\": 20210806,\n                \"from\": \"CF109\",\n                \"to\": \"CF201\",\n                \"newClose\": 17705.0,\n                \"oldClose\": 17410.0\n            }\n        ],\n        \"FG\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"FG605\",\n                \"newClose\": 823.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160407,\n                \"from\": \"FG605\",\n                \"to\": \"FG609\",\n                \"newClose\": 970.0,\n                \"oldClose\": 919.0\n            },\n            {\n                \"date\": 20160812,\n                \"from\": \"FG609\",\n                \"to\": \"FG701\",\n                \"newClose\": 1182.0,\n                \"oldClose\": 1155.0\n            },\n            {\n                \"date\": 20161205,\n                \"from\": \"FG701\",\n                \"to\": \"FG705\",\n                \"newClose\": 1219.0,\n                \"oldClose\": 1245.0\n            },\n            {\n                \"date\": 20170411,\n                \"from\": \"FG705\",\n                \"to\": \"FG709\",\n                \"newClose\": 1232.0,\n                \"oldClose\": 1256.0\n            },\n            {\n                \"date\": 20170810,\n                \"from\": \"FG709\",\n                \"to\": \"FG801\",\n                \"newClose\": 1424.0,\n                \"oldClose\": 1409.0\n            },\n            {\n                \"date\": 20171129,\n                \"from\": \"FG801\",\n                \"to\": \"FG805\",\n                \"newClose\": 1463.0,\n                \"oldClose\": 1475.0\n            },\n            {\n                \"date\": 20180410,\n                \"from\": \"FG805\",\n                \"to\": \"FG809\",\n                \"newClose\": 1343.0,\n                \"oldClose\": 1386.0\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"FG809\",\n                \"to\": \"FG901\",\n                \"newClose\": 1420.0,\n                \"oldClose\": 1469.0\n            },\n            {\n                \"date\": 20181214,\n                \"from\": \"FG901\",\n                \"to\": \"FG905\",\n                \"newClose\": 1297.0,\n                \"oldClose\": 1298.0\n            },\n            {\n                \"date\": 20190416,\n                \"from\": \"FG905\",\n                \"to\": \"FG909\",\n                \"newClose\": 1341.0,\n                \"oldClose\": 1286.0\n            },\n            {\n                \"date\": 20190808,\n                \"from\": \"FG909\",\n                \"to\": \"FG001\",\n                \"newClose\": 1377.0,\n                \"oldClose\": 1483.0\n            },\n            {\n                \"date\": 20191209,\n                \"from\": \"FG001\",\n                \"to\": \"FG005\",\n                \"newClose\": 1451.0,\n                \"oldClose\": 1472.0\n            },\n            {\n                \"date\": 20200401,\n                \"from\": \"FG005\",\n                \"to\": \"FG009\",\n                \"newClose\": 1274.0,\n                \"oldClose\": 1269.0\n            },\n            {\n                \"date\": 20200811,\n                \"from\": \"FG009\",\n                \"to\": \"FG101\",\n                \"newClose\": 1851.0,\n                \"oldClose\": 1950.0\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"FG101\",\n                \"to\": \"FG105\",\n                \"newClose\": 1910.0,\n                \"oldClose\": 1988.0\n            },\n            {\n                \"date\": 20210407,\n                \"from\": \"FG105\",\n                \"to\": \"FG109\",\n                \"newClose\": 2142.0,\n                \"oldClose\": 2123.0\n            },\n            {\n                \"date\": 20210722,\n                \"from\": \"FG109\",\n                \"to\": \"FG201\",\n                \"newClose\": 2998.0,\n                \"oldClose\": 3057.0\n            }\n        ],\n        \"JR\": [\n            {\n                \"date\": 20161207,\n                \"from\": \"JR705\",\n                \"to\": \"JR711\",\n                \"newClose\": 3189.0,\n                \"oldClose\": 3375.0\n            },\n            {\n                \"date\": 20170214,\n                \"from\": \"JR711\",\n                \"to\": \"JR801\",\n                \"newClose\": 3028.0,\n                \"oldClose\": 3202.0\n            },\n            {\n                \"date\": 20170921,\n                \"from\": \"JR801\",\n                \"to\": \"JR805\",\n                \"newClose\": 3211.0,\n                \"oldClose\": 3278.0\n            },\n            {\n                \"date\": 20171016,\n                \"from\": \"JR805\",\n                \"to\": \"JR807\",\n                \"newClose\": 3228.0,\n                \"oldClose\": 3287.0\n            },\n            {\n                \"date\": 20180713,\n                \"from\": \"JR807\",\n                \"to\": \"JR809\",\n                \"newClose\": 3240.0,\n                \"oldClose\": 3166.0\n            },\n            {\n                \"date\": 20180718,\n                \"from\": \"JR809\",\n                \"to\": \"JR907\",\n                \"newClose\": 3240.0,\n                \"oldClose\": 3240.0\n            },\n            {\n                \"date\": 20190307,\n                \"from\": \"JR907\",\n                \"to\": \"JR911\",\n                \"newClose\": 3068.0,\n                \"oldClose\": 2858.0\n            },\n            {\n                \"date\": 20190315,\n                \"from\": \"JR911\",\n                \"to\": \"JR001\",\n                \"newClose\": 2711.0,\n                \"oldClose\": 3040.0\n            },\n            {\n                \"date\": 20190820,\n                \"from\": \"JR001\",\n                \"to\": \"JR007\",\n                \"newClose\": 3001.0,\n                \"oldClose\": 2963.0\n            },\n            {\n                \"date\": 20200210,\n                \"from\": \"JR007\",\n                \"to\": \"JR009\",\n                \"newClose\": 3206.0,\n                \"oldClose\": 2970.0\n            },\n            {\n                \"date\": 20200211,\n                \"from\": \"JR009\",\n                \"to\": \"JR011\",\n                \"newClose\": 3061.0,\n                \"oldClose\": 3206.0\n            },\n            {\n                \"date\": 20200304,\n                \"from\": \"JR011\",\n                \"to\": \"JR101\",\n                \"newClose\": 3029.0,\n                \"oldClose\": 2981.0\n            },\n            {\n                \"date\": 20200611,\n                \"from\": \"JR101\",\n                \"to\": \"JR105\",\n                \"newClose\": 3032.0,\n                \"oldClose\": 2991.0\n            },\n            {\n                \"date\": 20210128,\n                \"from\": \"JR105\",\n                \"to\": \"JR109\",\n                \"newClose\": 2860.0,\n                \"oldClose\": 2894.0\n            },\n            {\n                \"date\": 20210907,\n                \"from\": \"JR109\",\n                \"to\": \"JR111\",\n                \"newClose\": 2779.0,\n                \"oldClose\": 2389.0\n            },\n            {\n                \"date\": 20210928,\n                \"from\": \"JR111\",\n                \"to\": \"JR203\",\n                \"newClose\": 2800.0,\n                \"oldClose\": 2819.0\n            }\n        ],\n        \"LR\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"LR609\",\n                \"newClose\": 2548.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20161025,\n                \"from\": \"LR705\",\n                \"to\": \"LR709\",\n                \"newClose\": 2544.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20161223,\n                \"from\": \"LR709\",\n                \"to\": \"LR711\",\n                \"newClose\": 2775.0,\n                \"oldClose\": 2544.0\n            },\n            {\n                \"date\": 20170714,\n                \"from\": \"LR711\",\n                \"to\": \"LR805\",\n                \"newClose\": 2901.0,\n                \"oldClose\": 2789.0\n            },\n            {\n                \"date\": 20180330,\n                \"from\": \"LR805\",\n                \"to\": \"LR809\",\n                \"newClose\": 3229.0,\n                \"oldClose\": 3089.0\n            },\n            {\n                \"date\": 20180503,\n                \"from\": \"LR809\",\n                \"to\": \"LR903\",\n                \"newClose\": 3200.0,\n                \"oldClose\": 3229.0\n            },\n            {\n                \"date\": 20190301,\n                \"from\": \"LR903\",\n                \"to\": \"LR905\",\n                \"newClose\": 2586.0,\n                \"oldClose\": 2660.0\n            },\n            {\n                \"date\": 20190305,\n                \"from\": \"LR905\",\n                \"to\": \"LR907\",\n                \"newClose\": 2643.0,\n                \"oldClose\": 2577.0\n            },\n            {\n                \"date\": 20190311,\n                \"from\": \"LR907\",\n                \"to\": \"LR911\",\n                \"newClose\": 2630.0,\n                \"oldClose\": 2643.0\n            },\n            {\n                \"date\": 20190531,\n                \"from\": \"LR911\",\n                \"to\": \"LR005\",\n                \"newClose\": 2749.0,\n                \"oldClose\": 2537.0\n            },\n            {\n                \"date\": 20190828,\n                \"from\": \"LR005\",\n                \"to\": \"LR007\",\n                \"newClose\": 2810.0,\n                \"oldClose\": 2702.0\n            },\n            {\n                \"date\": 20200715,\n                \"from\": \"LR007\",\n                \"to\": \"LR011\",\n                \"newClose\": 2819.0,\n                \"oldClose\": 2650.0\n            },\n            {\n                \"date\": 20210520,\n                \"from\": \"LR105\",\n                \"to\": \"LR107\",\n                \"newClose\": 2858.0,\n                \"oldClose\": 0\n            }\n        ],\n        \"MA\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"MA605\",\n                \"newClose\": 1720.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160408,\n                \"from\": \"MA605\",\n                \"to\": \"MA609\",\n                \"newClose\": 1898.0,\n                \"oldClose\": 1839.0\n            },\n            {\n                \"date\": 20160809,\n                \"from\": \"MA609\",\n                \"to\": \"MA701\",\n                \"newClose\": 2046.0,\n                \"oldClose\": 1918.0\n            },\n            {\n                \"date\": 20161202,\n                \"from\": \"MA701\",\n                \"to\": \"MA705\",\n                \"newClose\": 2580.0,\n                \"oldClose\": 2582.0\n            },\n            {\n                \"date\": 20170407,\n                \"from\": \"MA705\",\n                \"to\": \"MA709\",\n                \"newClose\": 2596.0,\n                \"oldClose\": 2684.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"MA709\",\n                \"to\": \"MA801\",\n                \"newClose\": 2670.0,\n                \"oldClose\": 2519.0\n            },\n            {\n                \"date\": 20171211,\n                \"from\": \"MA801\",\n                \"to\": \"MA805\",\n                \"newClose\": 2877.0,\n                \"oldClose\": 3140.0\n            },\n            {\n                \"date\": 20180412,\n                \"from\": \"MA805\",\n                \"to\": \"MA809\",\n                \"newClose\": 2637.0,\n                \"oldClose\": 2750.0\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"MA809\",\n                \"to\": \"MA901\",\n                \"newClose\": 3320.0,\n                \"oldClose\": 3193.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"MA901\",\n                \"to\": \"MA905\",\n                \"newClose\": 2428.0,\n                \"oldClose\": 2397.0\n            },\n            {\n                \"date\": 20190412,\n                \"from\": \"MA905\",\n                \"to\": \"MA909\",\n                \"newClose\": 2530.0,\n                \"oldClose\": 2469.0\n            },\n            {\n                \"date\": 20190816,\n                \"from\": \"MA909\",\n                \"to\": \"MA001\",\n                \"newClose\": 2194.0,\n                \"oldClose\": 2078.0\n            },\n            {\n                \"date\": 20191213,\n                \"from\": \"MA001\",\n                \"to\": \"MA005\",\n                \"newClose\": 2117.0,\n                \"oldClose\": 2014.0\n            },\n            {\n                \"date\": 20200413,\n                \"from\": \"MA005\",\n                \"to\": \"MA009\",\n                \"newClose\": 1837.0,\n                \"oldClose\": 1753.0\n            },\n            {\n                \"date\": 20200817,\n                \"from\": \"MA009\",\n                \"to\": \"MA101\",\n                \"newClose\": 1904.0,\n                \"oldClose\": 1744.0\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"MA101\",\n                \"to\": \"MA105\",\n                \"newClose\": 2475.0,\n                \"oldClose\": 2435.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"MA105\",\n                \"to\": \"MA109\",\n                \"newClose\": 2457.0,\n                \"oldClose\": 2480.0\n            },\n            {\n                \"date\": 20210813,\n                \"from\": \"MA109\",\n                \"to\": \"MA201\",\n                \"newClose\": 2841.0,\n                \"oldClose\": 2687.0\n            }\n        ],\n        \"OI\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"OI605\",\n                \"newClose\": 5656.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160308,\n                \"from\": \"OI605\",\n                \"to\": \"OI609\",\n                \"newClose\": 5644.0,\n                \"oldClose\": 5540.0\n            },\n            {\n                \"date\": 20160704,\n                \"from\": \"OI609\",\n                \"to\": \"OI701\",\n                \"newClose\": 6676.0,\n                \"oldClose\": 6522.0\n            },\n            {\n                \"date\": 20161122,\n                \"from\": \"OI701\",\n                \"to\": \"OI705\",\n                \"newClose\": 7086.0,\n                \"oldClose\": 6910.0\n            },\n            {\n                \"date\": 20170315,\n                \"from\": \"OI705\",\n                \"to\": \"OI709\",\n                \"newClose\": 6812.0,\n                \"oldClose\": 6514.0\n            },\n            {\n                \"date\": 20170705,\n                \"from\": \"OI709\",\n                \"to\": \"OI801\",\n                \"newClose\": 6532.0,\n                \"oldClose\": 6372.0\n            },\n            {\n                \"date\": 20171117,\n                \"from\": \"OI801\",\n                \"to\": \"OI805\",\n                \"newClose\": 6870.0,\n                \"oldClose\": 6680.0\n            },\n            {\n                \"date\": 20180321,\n                \"from\": \"OI805\",\n                \"to\": \"OI809\",\n                \"newClose\": 6514.0,\n                \"oldClose\": 6326.0\n            },\n            {\n                \"date\": 20180730,\n                \"from\": \"OI809\",\n                \"to\": \"OI901\",\n                \"newClose\": 6527.0,\n                \"oldClose\": 6319.0\n            },\n            {\n                \"date\": 20181204,\n                \"from\": \"OI901\",\n                \"to\": \"OI905\",\n                \"newClose\": 6585.0,\n                \"oldClose\": 6407.0\n            },\n            {\n                \"date\": 20190410,\n                \"from\": \"OI905\",\n                \"to\": \"OI909\",\n                \"newClose\": 7095.0,\n                \"oldClose\": 7049.0\n            },\n            {\n                \"date\": 20190805,\n                \"from\": \"OI909\",\n                \"to\": \"OI001\",\n                \"newClose\": 7061.0,\n                \"oldClose\": 7006.0\n            },\n            {\n                \"date\": 20191210,\n                \"from\": \"OI001\",\n                \"to\": \"OI005\",\n                \"newClose\": 7363.0,\n                \"oldClose\": 7525.0\n            },\n            {\n                \"date\": 20200402,\n                \"from\": \"OI005\",\n                \"to\": \"OI007\",\n                \"newClose\": 6681.0,\n                \"oldClose\": 6749.0\n            },\n            {\n                \"date\": 20200429,\n                \"from\": \"OI007\",\n                \"to\": \"OI009\",\n                \"newClose\": 6655.0,\n                \"oldClose\": 6865.0\n            },\n            {\n                \"date\": 20200818,\n                \"from\": \"OI009\",\n                \"to\": \"OI101\",\n                \"newClose\": 8634.0,\n                \"oldClose\": 8991.0\n            },\n            {\n                \"date\": 20201215,\n                \"from\": \"OI101\",\n                \"to\": \"OI105\",\n                \"newClose\": 9245.0,\n                \"oldClose\": 9612.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"OI105\",\n                \"to\": \"OI109\",\n                \"newClose\": 10431.0,\n                \"oldClose\": 10712.0\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"OI109\",\n                \"to\": \"OI201\",\n                \"newClose\": 10815.0,\n                \"oldClose\": 10831.0\n            }\n        ],\n        \"PM\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"PM601\",\n                \"newClose\": 2350.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160118,\n                \"from\": \"PM601\",\n                \"to\": \"PM605\",\n                \"newClose\": 2768.0,\n                \"oldClose\": 2350.0\n            },\n            {\n                \"date\": 20160426,\n                \"from\": \"PM605\",\n                \"to\": \"PM607\",\n                \"newClose\": 2699.0,\n                \"oldClose\": 2133.0\n            },\n            {\n                \"date\": 20160427,\n                \"from\": \"PM607\",\n                \"to\": \"PM611\",\n                \"newClose\": 2516.0,\n                \"oldClose\": 2512.0\n            },\n            {\n                \"date\": 20160906,\n                \"from\": \"PM611\",\n                \"to\": \"PM701\",\n                \"newClose\": 2486.0,\n                \"oldClose\": 2356.0\n            },\n            {\n                \"date\": 20161216,\n                \"from\": \"PM701\",\n                \"to\": \"PM705\",\n                \"newClose\": 2273.0,\n                \"oldClose\": 2460.0\n            },\n            {\n                \"date\": 20170405,\n                \"from\": \"PM705\",\n                \"to\": \"PM709\",\n                \"newClose\": 2487.0,\n                \"oldClose\": 2431.0\n            },\n            {\n                \"date\": 20170503,\n                \"from\": \"PM709\",\n                \"to\": \"PM801\",\n                \"newClose\": 2515.0,\n                \"oldClose\": 2451.0\n            },\n            {\n                \"date\": 20171226,\n                \"from\": \"PM801\",\n                \"to\": \"PM805\",\n                \"newClose\": 2640.0,\n                \"oldClose\": 2410.0\n            },\n            {\n                \"date\": 20180702,\n                \"from\": \"PM807\",\n                \"to\": \"PM809\",\n                \"newClose\": 2480.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20180709,\n                \"from\": \"PM809\",\n                \"to\": \"PM905\",\n                \"newClose\": 2458.0,\n                \"oldClose\": 2445.0\n            },\n            {\n                \"date\": 20181119,\n                \"from\": \"PM905\",\n                \"to\": \"PM907\",\n                \"newClose\": 2300.0,\n                \"oldClose\": 2388.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"PM907\",\n                \"to\": \"PM911\",\n                \"newClose\": 2485.0,\n                \"oldClose\": 2304.0\n            },\n            {\n                \"date\": 20190520,\n                \"from\": \"PM911\",\n                \"to\": \"PM003\",\n                \"newClose\": 2280.0,\n                \"oldClose\": 2388.0\n            },\n            {\n                \"date\": 20190826,\n                \"from\": \"PM003\",\n                \"to\": \"PM007\",\n                \"newClose\": 2398.0,\n                \"oldClose\": 2280.0\n            },\n            {\n                \"date\": 20200324,\n                \"from\": \"PM007\",\n                \"to\": \"PM101\",\n                \"newClose\": 2250.0,\n                \"oldClose\": 2255.0\n            },\n            {\n                \"date\": 20200325,\n                \"from\": \"PM101\",\n                \"to\": \"PM103\",\n                \"newClose\": 2283.0,\n                \"oldClose\": 2250.0\n            },\n            {\n                \"date\": 20200609,\n                \"from\": \"PM103\",\n                \"to\": \"PM105\",\n                \"newClose\": 2335.0,\n                \"oldClose\": 2235.0\n            },\n            {\n                \"date\": 20200728,\n                \"from\": \"PM105\",\n                \"to\": \"PM107\",\n                \"newClose\": 2377.0,\n                \"oldClose\": 2343.0\n            },\n            {\n                \"date\": 20210225,\n                \"from\": \"PM107\",\n                \"to\": \"PM111\",\n                \"newClose\": 2489.0,\n                \"oldClose\": 2520.0\n            },\n            {\n                \"date\": 20210706,\n                \"from\": \"PM111\",\n                \"to\": \"PM201\",\n                \"newClose\": 2716.0,\n                \"oldClose\": 2525.0\n            },\n            {\n                \"date\": 20210913,\n                \"from\": \"PM201\",\n                \"to\": \"PM207\",\n                \"newClose\": 2486.0,\n                \"oldClose\": 2500.0\n            }\n        ],\n        \"RI\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"RI605\",\n                \"newClose\": 2568.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160121,\n                \"from\": \"RI605\",\n                \"to\": \"RI609\",\n                \"newClose\": 2531.0,\n                \"oldClose\": 2568.0\n            },\n            {\n                \"date\": 20160518,\n                \"from\": \"RI609\",\n                \"to\": \"RI703\",\n                \"newClose\": 2790.0,\n                \"oldClose\": 2679.0\n            },\n            {\n                \"date\": 20160705,\n                \"from\": \"RI703\",\n                \"to\": \"RI705\",\n                \"newClose\": 2853.0,\n                \"oldClose\": 2638.0\n            },\n            {\n                \"date\": 20160920,\n                \"from\": \"RI705\",\n                \"to\": \"RI709\",\n                \"newClose\": 2461.0,\n                \"oldClose\": 2640.0\n            },\n            {\n                \"date\": 20170905,\n                \"from\": \"RI709\",\n                \"to\": \"RI801\",\n                \"newClose\": 2745.0,\n                \"oldClose\": 2897.0\n            },\n            {\n                \"date\": 20171031,\n                \"from\": \"RI801\",\n                \"to\": \"RI807\",\n                \"newClose\": 2759.0,\n                \"oldClose\": 2741.0\n            },\n            {\n                \"date\": 20180227,\n                \"from\": \"RI807\",\n                \"to\": \"RI901\",\n                \"newClose\": 2854.0,\n                \"oldClose\": 2806.0\n            },\n            {\n                \"date\": 20181010,\n                \"from\": \"RI901\",\n                \"to\": \"RI903\",\n                \"newClose\": 2450.0,\n                \"oldClose\": 2350.0\n            },\n            {\n                \"date\": 20181023,\n                \"from\": \"RI903\",\n                \"to\": \"RI909\",\n                \"newClose\": 2516.0,\n                \"oldClose\": 2450.0\n            },\n            {\n                \"date\": 20190227,\n                \"from\": \"RI909\",\n                \"to\": \"RI911\",\n                \"newClose\": 2400.0,\n                \"oldClose\": 2411.0\n            },\n            {\n                \"date\": 20191009,\n                \"from\": \"RI911\",\n                \"to\": \"RI005\",\n                \"newClose\": 2662.0,\n                \"oldClose\": 2523.0\n            },\n            {\n                \"date\": 20200318,\n                \"from\": \"RI005\",\n                \"to\": \"RI009\",\n                \"newClose\": 2582.0,\n                \"oldClose\": 2629.0\n            },\n            {\n                \"date\": 20200721,\n                \"from\": \"RI009\",\n                \"to\": \"RI101\",\n                \"newClose\": 2701.0,\n                \"oldClose\": 2604.0\n            },\n            {\n                \"date\": 20210108,\n                \"from\": \"RI101\",\n                \"to\": \"RI111\",\n                \"newClose\": 2809.0,\n                \"oldClose\": 2788.0\n            },\n            {\n                \"date\": 20210806,\n                \"from\": \"RI111\",\n                \"to\": \"RI201\",\n                \"newClose\": 2635.0,\n                \"oldClose\": 2699.0\n            }\n        ],\n        \"RS\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"RS607\",\n                \"newClose\": 3914.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160715,\n                \"from\": \"RS607\",\n                \"to\": \"RS609\",\n                \"newClose\": 4175.0,\n                \"oldClose\": 4070.0\n            },\n            {\n                \"date\": 20160919,\n                \"from\": \"RS609\",\n                \"to\": \"RS611\",\n                \"newClose\": 4203.0,\n                \"oldClose\": 4265.0\n            },\n            {\n                \"date\": 20161115,\n                \"from\": \"RS611\",\n                \"to\": \"RS707\",\n                \"newClose\": 4208.0,\n                \"oldClose\": 4203.0\n            },\n            {\n                \"date\": 20170703,\n                \"from\": \"RS707\",\n                \"to\": \"RS709\",\n                \"newClose\": 5220.0,\n                \"oldClose\": 5530.0\n            },\n            {\n                \"date\": 20170915,\n                \"from\": \"RS709\",\n                \"to\": \"RS711\",\n                \"newClose\": 4990.0,\n                \"oldClose\": 5444.0\n            },\n            {\n                \"date\": 20171009,\n                \"from\": \"RS711\",\n                \"to\": \"RS807\",\n                \"newClose\": 5307.0,\n                \"oldClose\": 5400.0\n            },\n            {\n                \"date\": 20180130,\n                \"from\": \"RS807\",\n                \"to\": \"RS809\",\n                \"newClose\": 5318.0,\n                \"oldClose\": 5287.0\n            },\n            {\n                \"date\": 20180815,\n                \"from\": \"RS809\",\n                \"to\": \"RS907\",\n                \"newClose\": 4850.0,\n                \"oldClose\": 5458.0\n            },\n            {\n                \"date\": 20180829,\n                \"from\": \"RS907\",\n                \"to\": \"RS908\",\n                \"newClose\": 5270.0,\n                \"oldClose\": 4850.0\n            },\n            {\n                \"date\": 20180918,\n                \"from\": \"RS908\",\n                \"to\": \"RS909\",\n                \"newClose\": 5463.0,\n                \"oldClose\": 5465.0\n            },\n            {\n                \"date\": 20181214,\n                \"from\": \"RS909\",\n                \"to\": \"RS911\",\n                \"newClose\": 5420.0,\n                \"oldClose\": 5473.0\n            },\n            {\n                \"date\": 20191104,\n                \"from\": \"RS911\",\n                \"to\": \"RS007\",\n                \"newClose\": 4426.0,\n                \"oldClose\": 3685.0\n            },\n            {\n                \"date\": 20191112,\n                \"from\": \"RS007\",\n                \"to\": \"RS008\",\n                \"newClose\": 4135.0,\n                \"oldClose\": 4436.0\n            },\n            {\n                \"date\": 20200103,\n                \"from\": \"RS008\",\n                \"to\": \"RS009\",\n                \"newClose\": 4205.0,\n                \"oldClose\": 4135.0\n            },\n            {\n                \"date\": 20200831,\n                \"from\": \"RS009\",\n                \"to\": \"RS011\",\n                \"newClose\": 5574.0,\n                \"oldClose\": 5689.0\n            },\n            {\n                \"date\": 20201116,\n                \"from\": \"RS011\",\n                \"to\": \"RS107\",\n                \"newClose\": 5447.0,\n                \"oldClose\": 5999.0\n            },\n            {\n                \"date\": 20210203,\n                \"from\": \"RS107\",\n                \"to\": \"RS109\",\n                \"newClose\": 5745.0,\n                \"oldClose\": 5978.0\n            },\n            {\n                \"date\": 20210906,\n                \"from\": \"RS109\",\n                \"to\": \"RS111\",\n                \"newClose\": 6100.0,\n                \"oldClose\": 6200.0\n            }\n        ],\n        \"SF\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"SF605\",\n                \"newClose\": 3704.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160503,\n                \"from\": \"SF605\",\n                \"to\": \"SF609\",\n                \"newClose\": 4352.0,\n                \"oldClose\": 4130.0\n            },\n            {\n                \"date\": 20160711,\n                \"from\": \"SF609\",\n                \"to\": \"SF706\",\n                \"newClose\": 4160.0,\n                \"oldClose\": 4222.0\n            },\n            {\n                \"date\": 20161108,\n                \"from\": \"SF706\",\n                \"to\": \"SF709\",\n                \"newClose\": 5576.0,\n                \"oldClose\": 5200.0\n            },\n            {\n                \"date\": 20170221,\n                \"from\": \"SF709\",\n                \"to\": \"SF801\",\n                \"newClose\": 5248.0,\n                \"oldClose\": 5192.0\n            },\n            {\n                \"date\": 20170314,\n                \"from\": \"SF801\",\n                \"to\": \"SF802\",\n                \"newClose\": 5028.0,\n                \"oldClose\": 5590.0\n            },\n            {\n                \"date\": 20170822,\n                \"from\": \"SF802\",\n                \"to\": \"SF801\",\n                \"newClose\": 7800.0,\n                \"oldClose\": 7496.0\n            },\n            {\n                \"date\": 20170914,\n                \"from\": \"SF801\",\n                \"to\": \"SF805\",\n                \"newClose\": 6248.0,\n                \"oldClose\": 6390.0\n            },\n            {\n                \"date\": 20170919,\n                \"from\": \"SF805\",\n                \"to\": \"SF801\",\n                \"newClose\": 6208.0,\n                \"oldClose\": 6108.0\n            },\n            {\n                \"date\": 20171218,\n                \"from\": \"SF801\",\n                \"to\": \"SF805\",\n                \"newClose\": 6770.0,\n                \"oldClose\": 8418.0\n            },\n            {\n                \"date\": 20180420,\n                \"from\": \"SF805\",\n                \"to\": \"SF809\",\n                \"newClose\": 6110.0,\n                \"oldClose\": 6086.0\n            },\n            {\n                \"date\": 20180815,\n                \"from\": \"SF809\",\n                \"to\": \"SF901\",\n                \"newClose\": 7208.0,\n                \"oldClose\": 7028.0\n            },\n            {\n                \"date\": 20181221,\n                \"from\": \"SF901\",\n                \"to\": \"SF905\",\n                \"newClose\": 5926.0,\n                \"oldClose\": 6060.0\n            },\n            {\n                \"date\": 20190422,\n                \"from\": \"SF905\",\n                \"to\": \"SF909\",\n                \"newClose\": 5854.0,\n                \"oldClose\": 5748.0\n            },\n            {\n                \"date\": 20190827,\n                \"from\": \"SF909\",\n                \"to\": \"SF001\",\n                \"newClose\": 5752.0,\n                \"oldClose\": 5992.0\n            },\n            {\n                \"date\": 20191220,\n                \"from\": \"SF001\",\n                \"to\": \"SF005\",\n                \"newClose\": 5796.0,\n                \"oldClose\": 5794.0\n            },\n            {\n                \"date\": 20200403,\n                \"from\": \"SF005\",\n                \"to\": \"SF007\",\n                \"newClose\": 5552.0,\n                \"oldClose\": 5490.0\n            },\n            {\n                \"date\": 20200410,\n                \"from\": \"SF007\",\n                \"to\": \"SF009\",\n                \"newClose\": 5590.0,\n                \"oldClose\": 5548.0\n            },\n            {\n                \"date\": 20200601,\n                \"from\": \"SF009\",\n                \"to\": \"SF010\",\n                \"newClose\": 5736.0,\n                \"oldClose\": 5780.0\n            },\n            {\n                \"date\": 20200928,\n                \"from\": \"SF010\",\n                \"to\": \"SF011\",\n                \"newClose\": 5880.0,\n                \"oldClose\": 5696.0\n            },\n            {\n                \"date\": 20200929,\n                \"from\": \"SF011\",\n                \"to\": \"SF101\",\n                \"newClose\": 5730.0,\n                \"oldClose\": 5862.0\n            },\n            {\n                \"date\": 20201221,\n                \"from\": \"SF101\",\n                \"to\": \"SF105\",\n                \"newClose\": 6812.0,\n                \"oldClose\": 6800.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"SF105\",\n                \"to\": \"SF109\",\n                \"newClose\": 7444.0,\n                \"oldClose\": 7258.0\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"SF109\",\n                \"to\": \"SF201\",\n                \"newClose\": 9048.0,\n                \"oldClose\": 9192.0\n            }\n        ],\n        \"SM\": [\n            {\n                \"date\": 20160906,\n                \"from\": \"SM705\",\n                \"to\": \"SM708\",\n                \"newClose\": 5106.0,\n                \"oldClose\": 5668.0\n            },\n            {\n                \"date\": 20160923,\n                \"from\": \"SM708\",\n                \"to\": \"SM709\",\n                \"newClose\": 6284.0,\n                \"oldClose\": 5288.0\n            },\n            {\n                \"date\": 20161227,\n                \"from\": \"SM709\",\n                \"to\": \"SM705\",\n                \"newClose\": 7184.0,\n                \"oldClose\": 7014.0\n            },\n            {\n                \"date\": 20161228,\n                \"from\": \"SM705\",\n                \"to\": \"SM709\",\n                \"newClose\": 7066.0,\n                \"oldClose\": 7168.0\n            },\n            {\n                \"date\": 20170116,\n                \"from\": \"SM709\",\n                \"to\": \"SM705\",\n                \"newClose\": 6800.0,\n                \"oldClose\": 6554.0\n            },\n            {\n                \"date\": 20170417,\n                \"from\": \"SM705\",\n                \"to\": \"SM709\",\n                \"newClose\": 5768.0,\n                \"oldClose\": 5738.0\n            },\n            {\n                \"date\": 20170811,\n                \"from\": \"SM709\",\n                \"to\": \"SM801\",\n                \"newClose\": 6884.0,\n                \"oldClose\": 6952.0\n            },\n            {\n                \"date\": 20171222,\n                \"from\": \"SM801\",\n                \"to\": \"SM805\",\n                \"newClose\": 7688.0,\n                \"oldClose\": 8504.0\n            },\n            {\n                \"date\": 20180425,\n                \"from\": \"SM805\",\n                \"to\": \"SM809\",\n                \"newClose\": 7462.0,\n                \"oldClose\": 7720.0\n            },\n            {\n                \"date\": 20180815,\n                \"from\": \"SM809\",\n                \"to\": \"SM901\",\n                \"newClose\": 8624.0,\n                \"oldClose\": 8620.0\n            },\n            {\n                \"date\": 20181221,\n                \"from\": \"SM901\",\n                \"to\": \"SM905\",\n                \"newClose\": 7280.0,\n                \"oldClose\": 7982.0\n            },\n            {\n                \"date\": 20190422,\n                \"from\": \"SM905\",\n                \"to\": \"SM909\",\n                \"newClose\": 7236.0,\n                \"oldClose\": 7390.0\n            },\n            {\n                \"date\": 20190826,\n                \"from\": \"SM909\",\n                \"to\": \"SM001\",\n                \"newClose\": 6970.0,\n                \"oldClose\": 7334.0\n            },\n            {\n                \"date\": 20191217,\n                \"from\": \"SM001\",\n                \"to\": \"SM005\",\n                \"newClose\": 6274.0,\n                \"oldClose\": 6340.0\n            },\n            {\n                \"date\": 20200413,\n                \"from\": \"SM005\",\n                \"to\": \"SM009\",\n                \"newClose\": 7020.0,\n                \"oldClose\": 7016.0\n            },\n            {\n                \"date\": 20200825,\n                \"from\": \"SM009\",\n                \"to\": \"SM101\",\n                \"newClose\": 6262.0,\n                \"oldClose\": 6194.0\n            },\n            {\n                \"date\": 20201216,\n                \"from\": \"SM101\",\n                \"to\": \"SM105\",\n                \"newClose\": 6636.0,\n                \"oldClose\": 6576.0\n            },\n            {\n                \"date\": 20210420,\n                \"from\": \"SM105\",\n                \"to\": \"SM109\",\n                \"newClose\": 7184.0,\n                \"oldClose\": 7128.0\n            },\n            {\n                \"date\": 20210818,\n                \"from\": \"SM109\",\n                \"to\": \"SM201\",\n                \"newClose\": 7950.0,\n                \"oldClose\": 7946.0\n            }\n        ],\n        \"SR\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"SR605\",\n                \"newClose\": 5613.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160301,\n                \"from\": \"SR605\",\n                \"to\": \"SR609\",\n                \"newClose\": 5466.0,\n                \"oldClose\": 5348.0\n            },\n            {\n                \"date\": 20160720,\n                \"from\": \"SR609\",\n                \"to\": \"SR701\",\n                \"newClose\": 6247.0,\n                \"oldClose\": 5860.0\n            },\n            {\n                \"date\": 20161207,\n                \"from\": \"SR701\",\n                \"to\": \"SR705\",\n                \"newClose\": 7144.0,\n                \"oldClose\": 7054.0\n            },\n            {\n                \"date\": 20170331,\n                \"from\": \"SR705\",\n                \"to\": \"SR709\",\n                \"newClose\": 6573.0,\n                \"oldClose\": 6500.0\n            },\n            {\n                \"date\": 20170717,\n                \"from\": \"SR709\",\n                \"to\": \"SR801\",\n                \"newClose\": 6187.0,\n                \"oldClose\": 6211.0\n            },\n            {\n                \"date\": 20171214,\n                \"from\": \"SR801\",\n                \"to\": \"SR805\",\n                \"newClose\": 5959.0,\n                \"oldClose\": 6250.0\n            },\n            {\n                \"date\": 20180330,\n                \"from\": \"SR805\",\n                \"to\": \"SR809\",\n                \"newClose\": 5551.0,\n                \"oldClose\": 5659.0\n            },\n            {\n                \"date\": 20180730,\n                \"from\": \"SR809\",\n                \"to\": \"SR901\",\n                \"newClose\": 5157.0,\n                \"oldClose\": 4989.0\n            },\n            {\n                \"date\": 20181203,\n                \"from\": \"SR901\",\n                \"to\": \"SR905\",\n                \"newClose\": 4936.0,\n                \"oldClose\": 4948.0\n            },\n            {\n                \"date\": 20190328,\n                \"from\": \"SR905\",\n                \"to\": \"SR909\",\n                \"newClose\": 5001.0,\n                \"oldClose\": 5035.0\n            },\n            {\n                \"date\": 20190731,\n                \"from\": \"SR909\",\n                \"to\": \"SR001\",\n                \"newClose\": 5366.0,\n                \"oldClose\": 5322.0\n            },\n            {\n                \"date\": 20191206,\n                \"from\": \"SR001\",\n                \"to\": \"SR005\",\n                \"newClose\": 5402.0,\n                \"oldClose\": 5526.0\n            },\n            {\n                \"date\": 20200326,\n                \"from\": \"SR005\",\n                \"to\": \"SR009\",\n                \"newClose\": 5444.0,\n                \"oldClose\": 5491.0\n            },\n            {\n                \"date\": 20200807,\n                \"from\": \"SR009\",\n                \"to\": \"SR101\",\n                \"newClose\": 5105.0,\n                \"oldClose\": 5132.0\n            },\n            {\n                \"date\": 20201204,\n                \"from\": \"SR101\",\n                \"to\": \"SR105\",\n                \"newClose\": 5005.0,\n                \"oldClose\": 5057.0\n            },\n            {\n                \"date\": 20210326,\n                \"from\": \"SR105\",\n                \"to\": \"SR109\",\n                \"newClose\": 5350.0,\n                \"oldClose\": 5272.0\n            },\n            {\n                \"date\": 20210812,\n                \"from\": \"SR109\",\n                \"to\": \"SR201\",\n                \"newClose\": 5920.0,\n                \"oldClose\": 5654.0\n            }\n        ],\n        \"TA\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"TA605\",\n                \"newClose\": 4440.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160330,\n                \"from\": \"TA605\",\n                \"to\": \"TA609\",\n                \"newClose\": 4768.0,\n                \"oldClose\": 4642.0\n            },\n            {\n                \"date\": 20160805,\n                \"from\": \"TA609\",\n                \"to\": \"TA701\",\n                \"newClose\": 4770.0,\n                \"oldClose\": 4590.0\n            },\n            {\n                \"date\": 20161115,\n                \"from\": \"TA701\",\n                \"to\": \"TA705\",\n                \"newClose\": 4916.0,\n                \"oldClose\": 4812.0\n            },\n            {\n                \"date\": 20170407,\n                \"from\": \"TA705\",\n                \"to\": \"TA709\",\n                \"newClose\": 5126.0,\n                \"oldClose\": 4984.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"TA709\",\n                \"to\": \"TA801\",\n                \"newClose\": 5220.0,\n                \"oldClose\": 5112.0\n            },\n            {\n                \"date\": 20171123,\n                \"from\": \"TA801\",\n                \"to\": \"TA805\",\n                \"newClose\": 5440.0,\n                \"oldClose\": 5410.0\n            },\n            {\n                \"date\": 20180327,\n                \"from\": \"TA805\",\n                \"to\": \"TA809\",\n                \"newClose\": 5464.0,\n                \"oldClose\": 5462.0\n            },\n            {\n                \"date\": 20180808,\n                \"from\": \"TA809\",\n                \"to\": \"TA901\",\n                \"newClose\": 6794.0,\n                \"oldClose\": 6950.0\n            },\n            {\n                \"date\": 20181129,\n                \"from\": \"TA901\",\n                \"to\": \"TA905\",\n                \"newClose\": 5808.0,\n                \"oldClose\": 5994.0\n            },\n            {\n                \"date\": 20190410,\n                \"from\": \"TA905\",\n                \"to\": \"TA909\",\n                \"newClose\": 6250.0,\n                \"oldClose\": 6480.0\n            },\n            {\n                \"date\": 20190815,\n                \"from\": \"TA909\",\n                \"to\": \"TA001\",\n                \"newClose\": 5176.0,\n                \"oldClose\": 5290.0\n            },\n            {\n                \"date\": 20191210,\n                \"from\": \"TA001\",\n                \"to\": \"TA005\",\n                \"newClose\": 4850.0,\n                \"oldClose\": 4762.0\n            },\n            {\n                \"date\": 20200331,\n                \"from\": \"TA005\",\n                \"to\": \"TA009\",\n                \"newClose\": 3342.0,\n                \"oldClose\": 3222.0\n            },\n            {\n                \"date\": 20200811,\n                \"from\": \"TA009\",\n                \"to\": \"TA101\",\n                \"newClose\": 3816.0,\n                \"oldClose\": 3656.0\n            },\n            {\n                \"date\": 20201202,\n                \"from\": \"TA101\",\n                \"to\": \"TA105\",\n                \"newClose\": 3540.0,\n                \"oldClose\": 3416.0\n            },\n            {\n                \"date\": 20210401,\n                \"from\": \"TA105\",\n                \"to\": \"TA109\",\n                \"newClose\": 4462.0,\n                \"oldClose\": 4374.0\n            },\n            {\n                \"date\": 20210805,\n                \"from\": \"TA109\",\n                \"to\": \"TA201\",\n                \"newClose\": 5198.0,\n                \"oldClose\": 5172.0\n            }\n        ],\n        \"WH\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"WH605\",\n                \"newClose\": 2917.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160418,\n                \"from\": \"WH605\",\n                \"to\": \"WH609\",\n                \"newClose\": 2661.0,\n                \"oldClose\": 2688.0\n            },\n            {\n                \"date\": 20160719,\n                \"from\": \"WH609\",\n                \"to\": \"WH701\",\n                \"newClose\": 2614.0,\n                \"oldClose\": 2581.0\n            },\n            {\n                \"date\": 20161222,\n                \"from\": \"WH701\",\n                \"to\": \"WH705\",\n                \"newClose\": 3058.0,\n                \"oldClose\": 3100.0\n            },\n            {\n                \"date\": 20170426,\n                \"from\": \"WH705\",\n                \"to\": \"WH709\",\n                \"newClose\": 2651.0,\n                \"oldClose\": 3060.0\n            },\n            {\n                \"date\": 20170710,\n                \"from\": \"WH709\",\n                \"to\": \"WH801\",\n                \"newClose\": 2625.0,\n                \"oldClose\": 2571.0\n            },\n            {\n                \"date\": 20171228,\n                \"from\": \"WH801\",\n                \"to\": \"WH805\",\n                \"newClose\": 2575.0,\n                \"oldClose\": 2511.0\n            },\n            {\n                \"date\": 20180416,\n                \"from\": \"WH805\",\n                \"to\": \"WH809\",\n                \"newClose\": 2515.0,\n                \"oldClose\": 2548.0\n            },\n            {\n                \"date\": 20180625,\n                \"from\": \"WH809\",\n                \"to\": \"WH901\",\n                \"newClose\": 2649.0,\n                \"oldClose\": 2561.0\n            },\n            {\n                \"date\": 20181228,\n                \"from\": \"WH901\",\n                \"to\": \"WH905\",\n                \"newClose\": 2428.0,\n                \"oldClose\": 2421.0\n            },\n            {\n                \"date\": 20190212,\n                \"from\": \"WH905\",\n                \"to\": \"WH909\",\n                \"newClose\": 2420.0,\n                \"oldClose\": 2423.0\n            },\n            {\n                \"date\": 20190308,\n                \"from\": \"WH909\",\n                \"to\": \"WH911\",\n                \"newClose\": 2400.0,\n                \"oldClose\": 2408.0\n            },\n            {\n                \"date\": 20190313,\n                \"from\": \"WH911\",\n                \"to\": \"WH001\",\n                \"newClose\": 2440.0,\n                \"oldClose\": 2400.0\n            },\n            {\n                \"date\": 20190705,\n                \"from\": \"WH001\",\n                \"to\": \"WH005\",\n                \"newClose\": 2510.0,\n                \"oldClose\": 2449.0\n            },\n            {\n                \"date\": 20190826,\n                \"from\": \"WH005\",\n                \"to\": \"WH007\",\n                \"newClose\": 2549.0,\n                \"oldClose\": 2524.0\n            },\n            {\n                \"date\": 20190924,\n                \"from\": \"WH007\",\n                \"to\": \"WH009\",\n                \"newClose\": 2426.0,\n                \"oldClose\": 2402.0\n            },\n            {\n                \"date\": 20200210,\n                \"from\": \"WH009\",\n                \"to\": \"WH101\",\n                \"newClose\": 2600.0,\n                \"oldClose\": 2566.0\n            },\n            {\n                \"date\": 20200320,\n                \"from\": \"WH101\",\n                \"to\": \"WH103\",\n                \"newClose\": 2589.0,\n                \"oldClose\": 2538.0\n            },\n            {\n                \"date\": 20200527,\n                \"from\": \"WH103\",\n                \"to\": \"WH105\",\n                \"newClose\": 2612.0,\n                \"oldClose\": 2550.0\n            },\n            {\n                \"date\": 20200728,\n                \"from\": \"WH105\",\n                \"to\": \"WH107\",\n                \"newClose\": 2758.0,\n                \"oldClose\": 2650.0\n            },\n            {\n                \"date\": 20201013,\n                \"from\": \"WH107\",\n                \"to\": \"WH109\",\n                \"newClose\": 2700.0,\n                \"oldClose\": 2780.0\n            },\n            {\n                \"date\": 20210907,\n                \"from\": \"WH109\",\n                \"to\": \"WH205\",\n                \"newClose\": 2906.0,\n                \"oldClose\": 2699.0\n            }\n        ],\n        \"ZC\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"ZC605\",\n                \"newClose\": 304.3999938964844,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160407,\n                \"from\": \"ZC605\",\n                \"to\": \"ZC609\",\n                \"newClose\": 362.6000061035156,\n                \"oldClose\": 367.0\n            },\n            {\n                \"date\": 20160816,\n                \"from\": \"ZC609\",\n                \"to\": \"ZC701\",\n                \"newClose\": 516.2000122070312,\n                \"oldClose\": 454.6000061035156\n            },\n            {\n                \"date\": 20161206,\n                \"from\": \"ZC701\",\n                \"to\": \"ZC705\",\n                \"newClose\": 525.4000244140625,\n                \"oldClose\": 597.0\n            },\n            {\n                \"date\": 20170419,\n                \"from\": \"ZC705\",\n                \"to\": \"ZC709\",\n                \"newClose\": 531.5999755859375,\n                \"oldClose\": 622.5999755859375\n            },\n            {\n                \"date\": 20170810,\n                \"from\": \"ZC709\",\n                \"to\": \"ZC801\",\n                \"newClose\": 605.4000244140625,\n                \"oldClose\": 608.7999877929688\n            },\n            {\n                \"date\": 20171220,\n                \"from\": \"ZC801\",\n                \"to\": \"ZC805\",\n                \"newClose\": 636.5999755859375,\n                \"oldClose\": 687.5999755859375\n            },\n            {\n                \"date\": 20180413,\n                \"from\": \"ZC805\",\n                \"to\": \"ZC809\",\n                \"newClose\": 556.4000244140625,\n                \"oldClose\": 558.5999755859375\n            },\n            {\n                \"date\": 20180814,\n                \"from\": \"ZC809\",\n                \"to\": \"ZC901\",\n                \"newClose\": 617.4000244140625,\n                \"oldClose\": 627.7999877929688\n            },\n            {\n                \"date\": 20181210,\n                \"from\": \"ZC901\",\n                \"to\": \"ZC905\",\n                \"newClose\": 576.7999877929688,\n                \"oldClose\": 615.4000244140625\n            },\n            {\n                \"date\": 20190422,\n                \"from\": \"ZC905\",\n                \"to\": \"ZC909\",\n                \"newClose\": 596.7999877929688,\n                \"oldClose\": 611.0\n            },\n            {\n                \"date\": 20190822,\n                \"from\": \"ZC909\",\n                \"to\": \"ZC911\",\n                \"newClose\": 587.0,\n                \"oldClose\": 589.7999877929688\n            },\n            {\n                \"date\": 20190920,\n                \"from\": \"ZC911\",\n                \"to\": \"ZC001\",\n                \"newClose\": 576.4000244140625,\n                \"oldClose\": 581.4000244140625\n            },\n            {\n                \"date\": 20191211,\n                \"from\": \"ZC001\",\n                \"to\": \"ZC005\",\n                \"newClose\": 535.5999755859375,\n                \"oldClose\": 543.2000122070312\n            },\n            {\n                \"date\": 20200330,\n                \"from\": \"ZC005\",\n                \"to\": \"ZC009\",\n                \"newClose\": 501.6000061035156,\n                \"oldClose\": 517.7999877929688\n            },\n            {\n                \"date\": 20200818,\n                \"from\": \"ZC009\",\n                \"to\": \"ZC011\",\n                \"newClose\": 561.4000244140625,\n                \"oldClose\": 570.0\n            },\n            {\n                \"date\": 20201020,\n                \"from\": \"ZC011\",\n                \"to\": \"ZC101\",\n                \"newClose\": 576.4000244140625,\n                \"oldClose\": 590.0\n            },\n            {\n                \"date\": 20201215,\n                \"from\": \"ZC101\",\n                \"to\": \"ZC105\",\n                \"newClose\": 668.5999755859375,\n                \"oldClose\": 721.0\n            },\n            {\n                \"date\": 20210420,\n                \"from\": \"ZC105\",\n                \"to\": \"ZC109\",\n                \"newClose\": 712.5999755859375,\n                \"oldClose\": 782.2000122070312\n            },\n            {\n                \"date\": 20210813,\n                \"from\": \"ZC109\",\n                \"to\": \"ZC201\",\n                \"newClose\": 778.5999755859375,\n                \"oldClose\": 889.7999877929688\n            }\n        ],\n        \"RM\": [\n            {\n                \"date\": 20160104,\n                \"from\": \"\",\n                \"to\": \"RM605\",\n                \"newClose\": 1870.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20160314,\n                \"from\": \"RM605\",\n                \"to\": \"RM609\",\n                \"newClose\": 1915.0,\n                \"oldClose\": 1915.0\n            },\n            {\n                \"date\": 20160805,\n                \"from\": \"RM609\",\n                \"to\": \"RM701\",\n                \"newClose\": 2370.0,\n                \"oldClose\": 2502.0\n            },\n            {\n                \"date\": 20161128,\n                \"from\": \"RM701\",\n                \"to\": \"RM705\",\n                \"newClose\": 2534.0,\n                \"oldClose\": 2469.0\n            },\n            {\n                \"date\": 20170320,\n                \"from\": \"RM705\",\n                \"to\": \"RM709\",\n                \"newClose\": 2434.0,\n                \"oldClose\": 2419.0\n            },\n            {\n                \"date\": 20170808,\n                \"from\": \"RM709\",\n                \"to\": \"RM801\",\n                \"newClose\": 2229.0,\n                \"oldClose\": 2318.0\n            },\n            {\n                \"date\": 20171206,\n                \"from\": \"RM801\",\n                \"to\": \"RM805\",\n                \"newClose\": 2394.0,\n                \"oldClose\": 2355.0\n            },\n            {\n                \"date\": 20180327,\n                \"from\": \"RM805\",\n                \"to\": \"RM809\",\n                \"newClose\": 2497.0,\n                \"oldClose\": 2481.0\n            },\n            {\n                \"date\": 20180806,\n                \"from\": \"RM809\",\n                \"to\": \"RM901\",\n                \"newClose\": 2480.0,\n                \"oldClose\": 2486.0\n            },\n            {\n                \"date\": 20181211,\n                \"from\": \"RM901\",\n                \"to\": \"RM905\",\n                \"newClose\": 2216.0,\n                \"oldClose\": 2227.0\n            },\n            {\n                \"date\": 20190410,\n                \"from\": \"RM905\",\n                \"to\": \"RM909\",\n                \"newClose\": 2207.0,\n                \"oldClose\": 2179.0\n            },\n            {\n                \"date\": 20190816,\n                \"from\": \"RM909\",\n                \"to\": \"RM001\",\n                \"newClose\": 2302.0,\n                \"oldClose\": 2444.0\n            },\n            {\n                \"date\": 20191212,\n                \"from\": \"RM001\",\n                \"to\": \"RM005\",\n                \"newClose\": 2308.0,\n                \"oldClose\": 2244.0\n            },\n            {\n                \"date\": 20200401,\n                \"from\": \"RM005\",\n                \"to\": \"RM009\",\n                \"newClose\": 2373.0,\n                \"oldClose\": 2391.0\n            },\n            {\n                \"date\": 20200817,\n                \"from\": \"RM009\",\n                \"to\": \"RM101\",\n                \"newClose\": 2297.0,\n                \"oldClose\": 2329.0\n            },\n            {\n                \"date\": 20201214,\n                \"from\": \"RM101\",\n                \"to\": \"RM105\",\n                \"newClose\": 2540.0,\n                \"oldClose\": 2482.0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"RM105\",\n                \"to\": \"RM109\",\n                \"newClose\": 2896.0,\n                \"oldClose\": 2798.0\n            },\n            {\n                \"date\": 20210813,\n                \"from\": \"RM109\",\n                \"to\": \"RM201\",\n                \"newClose\": 2929.0,\n                \"oldClose\": 3025.0\n            }\n        ],\n        \"CY\": [\n            {\n                \"date\": 20171018,\n                \"from\": \"\",\n                \"to\": \"CY801\",\n                \"newClose\": 23015.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20171201,\n                \"from\": \"CY801\",\n                \"to\": \"CY809\",\n                \"newClose\": 23575.0,\n                \"oldClose\": 23200.0\n            },\n            {\n                \"date\": 20180424,\n                \"from\": \"CY809\",\n                \"to\": \"CY810\",\n                \"newClose\": 24020.0,\n                \"oldClose\": 23495.0\n            },\n            {\n                \"date\": 20181008,\n                \"from\": \"CY810\",\n                \"to\": \"CY901\",\n                \"newClose\": 24520.0,\n                \"oldClose\": 24200.0\n            },\n            {\n                \"date\": 20190102,\n                \"from\": \"CY901\",\n                \"to\": \"CY905\",\n                \"newClose\": 23855.0,\n                \"oldClose\": 23600.0\n            },\n            {\n                \"date\": 20190410,\n                \"from\": \"CY905\",\n                \"to\": \"CY909\",\n                \"newClose\": 25090.0,\n                \"oldClose\": 24405.0\n            },\n            {\n                \"date\": 20190415,\n                \"from\": \"CY909\",\n                \"to\": \"CY001\",\n                \"newClose\": 24215.0,\n                \"oldClose\": 25070.0\n            },\n            {\n                \"date\": 20191203,\n                \"from\": \"CY001\",\n                \"to\": \"CY005\",\n                \"newClose\": 20970.0,\n                \"oldClose\": 20545.0\n            },\n            {\n                \"date\": 20200407,\n                \"from\": \"CY005\",\n                \"to\": \"CY009\",\n                \"newClose\": 18700.0,\n                \"oldClose\": 18470.0\n            },\n            {\n                \"date\": 20200810,\n                \"from\": \"CY009\",\n                \"to\": \"CY101\",\n                \"newClose\": 19910.0,\n                \"oldClose\": 18680.0\n            },\n            {\n                \"date\": 20201207,\n                \"from\": \"CY101\",\n                \"to\": \"CY105\",\n                \"newClose\": 21475.0,\n                \"oldClose\": 20655.0\n            },\n            {\n                \"date\": 20210409,\n                \"from\": \"CY105\",\n                \"to\": \"CY109\",\n                \"newClose\": 22410.0,\n                \"oldClose\": 22475.0\n            },\n            {\n                \"date\": 20210812,\n                \"from\": \"CY109\",\n                \"to\": \"CY201\",\n                \"newClose\": 26510.0,\n                \"oldClose\": 26685.0\n            }\n        ],\n        \"AP\": [\n            {\n                \"date\": 20171222,\n                \"from\": \"\",\n                \"to\": \"AP805\",\n                \"newClose\": 8117.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20180412,\n                \"from\": \"AP805\",\n                \"to\": \"AP810\",\n                \"newClose\": 7083.0,\n                \"oldClose\": 7221.0\n            },\n            {\n                \"date\": 20180716,\n                \"from\": \"AP810\",\n                \"to\": \"AP901\",\n                \"newClose\": 10061.0,\n                \"oldClose\": 9247.0\n            },\n            {\n                \"date\": 20181114,\n                \"from\": \"AP901\",\n                \"to\": \"AP905\",\n                \"newClose\": 12298.0,\n                \"oldClose\": 11402.0\n            },\n            {\n                \"date\": 20190412,\n                \"from\": \"AP905\",\n                \"to\": \"AP910\",\n                \"newClose\": 7684.0,\n                \"oldClose\": 11825.0\n            },\n            {\n                \"date\": 20190919,\n                \"from\": \"AP910\",\n                \"to\": \"AP001\",\n                \"newClose\": 7877.0,\n                \"oldClose\": 8387.0\n            },\n            {\n                \"date\": 20191217,\n                \"from\": \"AP001\",\n                \"to\": \"AP005\",\n                \"newClose\": 8248.0,\n                \"oldClose\": 8563.0\n            },\n            {\n                \"date\": 20200410,\n                \"from\": \"AP005\",\n                \"to\": \"AP010\",\n                \"newClose\": 8325.0,\n                \"oldClose\": 6720.0\n            },\n            {\n                \"date\": 20200917,\n                \"from\": \"AP010\",\n                \"to\": \"AP101\",\n                \"newClose\": 7372.0,\n                \"oldClose\": 6705.0\n            },\n            {\n                \"date\": 20201215,\n                \"from\": \"AP101\",\n                \"to\": \"AP105\",\n                \"newClose\": 6530.0,\n                \"oldClose\": 6462.0\n            },\n            {\n                \"date\": 20210319,\n                \"from\": \"AP105\",\n                \"to\": \"AP110\",\n                \"newClose\": 7026.0,\n                \"oldClose\": 5173.0\n            },\n            {\n                \"date\": 20210831,\n                \"from\": \"AP110\",\n                \"to\": \"AP201\",\n                \"newClose\": 5775.0,\n                \"oldClose\": 5963.0\n            }\n        ],\n        \"CJ\": [\n            {\n                \"date\": 20190430,\n                \"from\": \"\",\n                \"to\": \"CJ912\",\n                \"newClose\": 8840.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20191107,\n                \"from\": \"CJ912\",\n                \"to\": \"CJ001\",\n                \"newClose\": 10880.0,\n                \"oldClose\": 10855.0\n            },\n            {\n                \"date\": 20191205,\n                \"from\": \"CJ001\",\n                \"to\": \"CJ005\",\n                \"newClose\": 10795.0,\n                \"oldClose\": 10840.0\n            },\n            {\n                \"date\": 20200408,\n                \"from\": \"CJ005\",\n                \"to\": \"CJ009\",\n                \"newClose\": 10235.0,\n                \"oldClose\": 10060.0\n            },\n            {\n                \"date\": 20200820,\n                \"from\": \"CJ009\",\n                \"to\": \"CJ101\",\n                \"newClose\": 9690.0,\n                \"oldClose\": 8930.0\n            },\n            {\n                \"date\": 20201218,\n                \"from\": \"CJ101\",\n                \"to\": \"CJ105\",\n                \"newClose\": 9770.0,\n                \"oldClose\": 10035.0\n            },\n            {\n                \"date\": 20210412,\n                \"from\": \"CJ105\",\n                \"to\": \"CJ109\",\n                \"newClose\": 10075.0,\n                \"oldClose\": 9715.0\n            },\n            {\n                \"date\": 20210721,\n                \"from\": \"CJ109\",\n                \"to\": \"CJ201\",\n                \"newClose\": 12400.0,\n                \"oldClose\": 8980.0\n            }\n        ],\n        \"UR\": [\n            {\n                \"date\": 20190809,\n                \"from\": \"\",\n                \"to\": \"UR001\",\n                \"newClose\": 1702.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20191213,\n                \"from\": \"UR001\",\n                \"to\": \"UR005\",\n                \"newClose\": 1736.0,\n                \"oldClose\": 1710.0\n            },\n            {\n                \"date\": 20200409,\n                \"from\": \"UR005\",\n                \"to\": \"UR009\",\n                \"newClose\": 1578.0,\n                \"oldClose\": 1676.0\n            },\n            {\n                \"date\": 20200811,\n                \"from\": \"UR009\",\n                \"to\": \"UR101\",\n                \"newClose\": 1704.0,\n                \"oldClose\": 1727.0\n            },\n            {\n                \"date\": 20201218,\n                \"from\": \"UR101\",\n                \"to\": \"UR105\",\n                \"newClose\": 1867.0,\n                \"oldClose\": 1807.0\n            },\n            {\n                \"date\": 20210420,\n                \"from\": \"UR105\",\n                \"to\": \"UR107\",\n                \"newClose\": 2040.0,\n                \"oldClose\": 2050.0\n            },\n            {\n                \"date\": 20210607,\n                \"from\": \"UR107\",\n                \"to\": \"UR109\",\n                \"newClose\": 2383.0,\n                \"oldClose\": 2417.0\n            },\n            {\n                \"date\": 20210812,\n                \"from\": \"UR109\",\n                \"to\": \"UR201\",\n                \"newClose\": 2358.0,\n                \"oldClose\": 2465.0\n            }\n        ],\n        \"SA\": [\n            {\n                \"date\": 20191206,\n                \"from\": \"\",\n                \"to\": \"SA005\",\n                \"newClose\": 1561.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20200417,\n                \"from\": \"SA005\",\n                \"to\": \"SA009\",\n                \"newClose\": 1472.0,\n                \"oldClose\": 1356.0\n            },\n            {\n                \"date\": 20200819,\n                \"from\": \"SA009\",\n                \"to\": \"SA101\",\n                \"newClose\": 1569.0,\n                \"oldClose\": 1409.0\n            },\n            {\n                \"date\": 20201218,\n                \"from\": \"SA101\",\n                \"to\": \"SA105\",\n                \"newClose\": 1573.0,\n                \"oldClose\": 1416.0\n            },\n            {\n                \"date\": 20210408,\n                \"from\": \"SA105\",\n                \"to\": \"SA109\",\n                \"newClose\": 1967.0,\n                \"oldClose\": 1842.0\n            },\n            {\n                \"date\": 20210728,\n                \"from\": \"SA109\",\n                \"to\": \"SA201\",\n                \"newClose\": 2584.0,\n                \"oldClose\": 2312.0\n            }\n        ],\n        \"PF\": [\n            {\n                \"date\": 20201014,\n                \"from\": \"\",\n                \"to\": \"PF105\",\n                \"newClose\": 6104.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"PF105\",\n                \"to\": \"PF107\",\n                \"newClose\": 7234.0,\n                \"oldClose\": 6986.0\n            },\n            {\n                \"date\": 20210513,\n                \"from\": \"PF107\",\n                \"to\": \"PF109\",\n                \"newClose\": 7152.0,\n                \"oldClose\": 7064.0\n            },\n            {\n                \"date\": 20210823,\n                \"from\": \"PF109\",\n                \"to\": \"PF201\",\n                \"newClose\": 7012.0,\n                \"oldClose\": 6894.0\n            }\n        ]\n    },\n    \"INE\": {\n        \"sc\": [\n            {\n                \"date\": 20180326,\n                \"from\": \"\",\n                \"to\": \"sc1809\",\n                \"newClose\": 429.8999938964844,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20180815,\n                \"from\": \"sc1809\",\n                \"to\": \"sc1812\",\n                \"newClose\": 510.1000061035156,\n                \"oldClose\": 516.7999877929688\n            },\n            {\n                \"date\": 20181120,\n                \"from\": \"sc1812\",\n                \"to\": \"sc1901\",\n                \"newClose\": 465.0,\n                \"oldClose\": 455.79998779296875\n            },\n            {\n                \"date\": 20181218,\n                \"from\": \"sc1901\",\n                \"to\": \"sc1903\",\n                \"newClose\": 415.79998779296875,\n                \"oldClose\": 404.70001220703125\n            },\n            {\n                \"date\": 20190218,\n                \"from\": \"sc1903\",\n                \"to\": \"sc1904\",\n                \"newClose\": 461.1000061035156,\n                \"oldClose\": 453.0\n            },\n            {\n                \"date\": 20190319,\n                \"from\": \"sc1904\",\n                \"to\": \"sc1905\",\n                \"newClose\": 457.29998779296875,\n                \"oldClose\": 468.20001220703125\n            },\n            {\n                \"date\": 20190418,\n                \"from\": \"sc1905\",\n                \"to\": \"sc1906\",\n                \"newClose\": 472.6000061035156,\n                \"oldClose\": 474.70001220703125\n            },\n            {\n                \"date\": 20190521,\n                \"from\": \"sc1906\",\n                \"to\": \"sc1907\",\n                \"newClose\": 508.8999938964844,\n                \"oldClose\": 509.6000061035156\n            },\n            {\n                \"date\": 20190618,\n                \"from\": \"sc1907\",\n                \"to\": \"sc1908\",\n                \"newClose\": 413.5,\n                \"oldClose\": 408.1000061035156\n            },\n            {\n                \"date\": 20190719,\n                \"from\": \"sc1908\",\n                \"to\": \"sc1909\",\n                \"newClose\": 431.3999938964844,\n                \"oldClose\": 425.8999938964844\n            },\n            {\n                \"date\": 20190820,\n                \"from\": \"sc1909\",\n                \"to\": \"sc1910\",\n                \"newClose\": 427.0,\n                \"oldClose\": 431.3999938964844\n            },\n            {\n                \"date\": 20190911,\n                \"from\": \"sc1910\",\n                \"to\": \"sc1911\",\n                \"newClose\": 448.8999938964844,\n                \"oldClose\": 458.0\n            },\n            {\n                \"date\": 20191021,\n                \"from\": \"sc1911\",\n                \"to\": \"sc1912\",\n                \"newClose\": 446.1000061035156,\n                \"oldClose\": 441.3999938964844\n            },\n            {\n                \"date\": 20191119,\n                \"from\": \"sc1912\",\n                \"to\": \"sc2001\",\n                \"newClose\": 453.1000061035156,\n                \"oldClose\": 453.3999938964844\n            },\n            {\n                \"date\": 20191210,\n                \"from\": \"sc2001\",\n                \"to\": \"sc2002\",\n                \"newClose\": 466.70001220703125,\n                \"oldClose\": 470.20001220703125\n            },\n            {\n                \"date\": 20200106,\n                \"from\": \"sc2002\",\n                \"to\": \"sc2003\",\n                \"newClose\": 516.0999755859375,\n                \"oldClose\": 509.20001220703125\n            },\n            {\n                \"date\": 20200203,\n                \"from\": \"sc2003\",\n                \"to\": \"sc2004\",\n                \"newClose\": 413.6000061035156,\n                \"oldClose\": 415.5\n            },\n            {\n                \"date\": 20200304,\n                \"from\": \"sc2004\",\n                \"to\": \"sc2005\",\n                \"newClose\": 375.1000061035156,\n                \"oldClose\": 367.70001220703125\n            },\n            {\n                \"date\": 20200330,\n                \"from\": \"sc2005\",\n                \"to\": \"sc2006\",\n                \"newClose\": 252.0,\n                \"oldClose\": 245.6999969482422\n            },\n            {\n                \"date\": 20200512,\n                \"from\": \"sc2006\",\n                \"to\": \"sc2007\",\n                \"newClose\": 253.1999969482422,\n                \"oldClose\": 238.39999389648438\n            },\n            {\n                \"date\": 20200616,\n                \"from\": \"sc2007\",\n                \"to\": \"sc2008\",\n                \"newClose\": 290.20001220703125,\n                \"oldClose\": 275.5\n            },\n            {\n                \"date\": 20200716,\n                \"from\": \"sc2008\",\n                \"to\": \"sc2009\",\n                \"newClose\": 301.5,\n                \"oldClose\": 288.70001220703125\n            },\n            {\n                \"date\": 20200817,\n                \"from\": \"sc2009\",\n                \"to\": \"sc2010\",\n                \"newClose\": 289.29998779296875,\n                \"oldClose\": 279.20001220703125\n            },\n            {\n                \"date\": 20200911,\n                \"from\": \"sc2010\",\n                \"to\": \"sc2011\",\n                \"newClose\": 259.79998779296875,\n                \"oldClose\": 243.3000030517578\n            },\n            {\n                \"date\": 20201015,\n                \"from\": \"sc2011\",\n                \"to\": \"sc2012\",\n                \"newClose\": 272.8999938964844,\n                \"oldClose\": 260.20001220703125\n            },\n            {\n                \"date\": 20201113,\n                \"from\": \"sc2012\",\n                \"to\": \"sc2101\",\n                \"newClose\": 257.20001220703125,\n                \"oldClose\": 248.5\n            },\n            {\n                \"date\": 20201211,\n                \"from\": \"sc2101\",\n                \"to\": \"sc2102\",\n                \"newClose\": 301.5,\n                \"oldClose\": 288.29998779296875\n            },\n            {\n                \"date\": 20210113,\n                \"from\": \"sc2102\",\n                \"to\": \"sc2103\",\n                \"newClose\": 350.29998779296875,\n                \"oldClose\": 342.3999938964844\n            },\n            {\n                \"date\": 20210209,\n                \"from\": \"sc2103\",\n                \"to\": \"sc2104\",\n                \"newClose\": 378.20001220703125,\n                \"oldClose\": 376.0\n            },\n            {\n                \"date\": 20210312,\n                \"from\": \"sc2104\",\n                \"to\": \"sc2105\",\n                \"newClose\": 423.3999938964844,\n                \"oldClose\": 418.79998779296875\n            },\n            {\n                \"date\": 20210416,\n                \"from\": \"sc2105\",\n                \"to\": \"sc2106\",\n                \"newClose\": 416.8999938964844,\n                \"oldClose\": 412.79998779296875\n            },\n            {\n                \"date\": 20210517,\n                \"from\": \"sc2106\",\n                \"to\": \"sc2107\",\n                \"newClose\": 426.70001220703125,\n                \"oldClose\": 427.1000061035156\n            },\n            {\n                \"date\": 20210616,\n                \"from\": \"sc2107\",\n                \"to\": \"sc2108\",\n                \"newClose\": 461.29998779296875,\n                \"oldClose\": 458.5\n            },\n            {\n                \"date\": 20210719,\n                \"from\": \"sc2108\",\n                \"to\": \"sc2109\",\n                \"newClose\": 435.1000061035156,\n                \"oldClose\": 427.8999938964844\n            },\n            {\n                \"date\": 20210817,\n                \"from\": \"sc2109\",\n                \"to\": \"sc2110\",\n                \"newClose\": 419.8999938964844,\n                \"oldClose\": 422.0\n            },\n            {\n                \"date\": 20210909,\n                \"from\": \"sc2110\",\n                \"to\": \"sc2111\",\n                \"newClose\": 451.3999938964844,\n                \"oldClose\": 457.1000061035156\n            }\n        ],\n        \"nr\": [\n            {\n                \"date\": 20190812,\n                \"from\": \"\",\n                \"to\": \"nr2002\",\n                \"newClose\": 9820.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20191028,\n                \"from\": \"nr2002\",\n                \"to\": \"nr2004\",\n                \"newClose\": 10010.0,\n                \"oldClose\": 9920.0\n            },\n            {\n                \"date\": 20200226,\n                \"from\": \"nr2004\",\n                \"to\": \"nr2005\",\n                \"newClose\": 9620.0,\n                \"oldClose\": 9535.0\n            },\n            {\n                \"date\": 20200414,\n                \"from\": \"nr2005\",\n                \"to\": \"nr2006\",\n                \"newClose\": 8285.0,\n                \"oldClose\": 8130.0\n            },\n            {\n                \"date\": 20200508,\n                \"from\": \"nr2006\",\n                \"to\": \"nr2007\",\n                \"newClose\": 8445.0,\n                \"oldClose\": 8355.0\n            },\n            {\n                \"date\": 20200529,\n                \"from\": \"nr2007\",\n                \"to\": \"nr2009\",\n                \"newClose\": 8525.0,\n                \"oldClose\": 8340.0\n            },\n            {\n                \"date\": 20200729,\n                \"from\": \"nr2009\",\n                \"to\": \"nr2010\",\n                \"newClose\": 8990.0,\n                \"oldClose\": 8880.0\n            },\n            {\n                \"date\": 20200827,\n                \"from\": \"nr2010\",\n                \"to\": \"nr2011\",\n                \"newClose\": 9675.0,\n                \"oldClose\": 9550.0\n            },\n            {\n                \"date\": 20200928,\n                \"from\": \"nr2011\",\n                \"to\": \"nr2012\",\n                \"newClose\": 9705.0,\n                \"oldClose\": 9520.0\n            },\n            {\n                \"date\": 20201027,\n                \"from\": \"nr2012\",\n                \"to\": \"nr2101\",\n                \"newClose\": 11725.0,\n                \"oldClose\": 11600.0\n            },\n            {\n                \"date\": 20201130,\n                \"from\": \"nr2101\",\n                \"to\": \"nr2102\",\n                \"newClose\": 11025.0,\n                \"oldClose\": 10895.0\n            },\n            {\n                \"date\": 20201228,\n                \"from\": \"nr2102\",\n                \"to\": \"nr2103\",\n                \"newClose\": 10250.0,\n                \"oldClose\": 10165.0\n            },\n            {\n                \"date\": 20210129,\n                \"from\": \"nr2103\",\n                \"to\": \"nr2104\",\n                \"newClose\": 10750.0,\n                \"oldClose\": 10660.0\n            },\n            {\n                \"date\": 20210226,\n                \"from\": \"nr2104\",\n                \"to\": \"nr2105\",\n                \"newClose\": 12045.0,\n                \"oldClose\": 11950.0\n            },\n            {\n                \"date\": 20210331,\n                \"from\": \"nr2105\",\n                \"to\": \"nr2106\",\n                \"newClose\": 10890.0,\n                \"oldClose\": 10710.0\n            },\n            {\n                \"date\": 20210506,\n                \"from\": \"nr2106\",\n                \"to\": \"nr2107\",\n                \"newClose\": 11585.0,\n                \"oldClose\": 11470.0\n            },\n            {\n                \"date\": 20210602,\n                \"from\": \"nr2107\",\n                \"to\": \"nr2108\",\n                \"newClose\": 10690.0,\n                \"oldClose\": 10530.0\n            },\n            {\n                \"date\": 20210701,\n                \"from\": \"nr2108\",\n                \"to\": \"nr2109\",\n                \"newClose\": 10290.0,\n                \"oldClose\": 10150.0\n            },\n            {\n                \"date\": 20210803,\n                \"from\": \"nr2109\",\n                \"to\": \"nr2110\",\n                \"newClose\": 11160.0,\n                \"oldClose\": 11000.0\n            },\n            {\n                \"date\": 20210902,\n                \"from\": \"nr2110\",\n                \"to\": \"nr2111\",\n                \"newClose\": 10735.0,\n                \"oldClose\": 10610.0\n            },\n            {\n                \"date\": 20210928,\n                \"from\": \"nr2111\",\n                \"to\": \"nr2112\",\n                \"newClose\": 11175.0,\n                \"oldClose\": 11280.0\n            }\n        ],\n        \"lu\": [\n            {\n                \"date\": 20201009,\n                \"from\": \"\",\n                \"to\": \"lu2101\",\n                \"newClose\": 2314.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20201120,\n                \"from\": \"lu2101\",\n                \"to\": \"lu2103\",\n                \"newClose\": 2430.0,\n                \"oldClose\": 2346.0\n            },\n            {\n                \"date\": 20210105,\n                \"from\": \"lu2103\",\n                \"to\": \"lu2104\",\n                \"newClose\": 2606.0,\n                \"oldClose\": 2595.0\n            },\n            {\n                \"date\": 20210202,\n                \"from\": \"lu2104\",\n                \"to\": \"lu2105\",\n                \"newClose\": 2939.0,\n                \"oldClose\": 2942.0\n            },\n            {\n                \"date\": 20210310,\n                \"from\": \"lu2105\",\n                \"to\": \"lu2106\",\n                \"newClose\": 3296.0,\n                \"oldClose\": 3278.0\n            },\n            {\n                \"date\": 20210412,\n                \"from\": \"lu2106\",\n                \"to\": \"lu2107\",\n                \"newClose\": 3107.0,\n                \"oldClose\": 3106.0\n            },\n            {\n                \"date\": 20210506,\n                \"from\": \"lu2107\",\n                \"to\": \"lu2108\",\n                \"newClose\": 3291.0,\n                \"oldClose\": 3286.0\n            },\n            {\n                \"date\": 20210602,\n                \"from\": \"lu2108\",\n                \"to\": \"lu2109\",\n                \"newClose\": 3318.0,\n                \"oldClose\": 3304.0\n            },\n            {\n                \"date\": 20210707,\n                \"from\": \"lu2109\",\n                \"to\": \"lu2110\",\n                \"newClose\": 3417.0,\n                \"oldClose\": 3398.0\n            },\n            {\n                \"date\": 20210805,\n                \"from\": \"lu2110\",\n                \"to\": \"lu2111\",\n                \"newClose\": 3259.0,\n                \"oldClose\": 3261.0\n            },\n            {\n                \"date\": 20210903,\n                \"from\": \"lu2111\",\n                \"to\": \"lu2112\",\n                \"newClose\": 3463.0,\n                \"oldClose\": 3481.0\n            },\n            {\n                \"date\": 20211008,\n                \"from\": \"lu2112\",\n                \"to\": \"lu2201\",\n                \"newClose\": 3866.0,\n                \"oldClose\": 3880.0\n            }\n        ],\n        \"bc\": [\n            {\n                \"date\": 20210104,\n                \"from\": \"\",\n                \"to\": \"bc2103\",\n                \"newClose\": 51790.0,\n                \"oldClose\": 0\n            },\n            {\n                \"date\": 20210202,\n                \"from\": \"bc2103\",\n                \"to\": \"bc2105\",\n                \"newClose\": 51000.0,\n                \"oldClose\": 51040.0\n            },\n            {\n                \"date\": 20210406,\n                \"from\": \"bc2105\",\n                \"to\": \"bc2106\",\n                \"newClose\": 59680.0,\n                \"oldClose\": 59500.0\n            },\n            {\n                \"date\": 20210507,\n                \"from\": \"bc2106\",\n                \"to\": \"bc2107\",\n                \"newClose\": 66840.0,\n                \"oldClose\": 66720.0\n            },\n            {\n                \"date\": 20210603,\n                \"from\": \"bc2107\",\n                \"to\": \"bc2108\",\n                \"newClose\": 65070.0,\n                \"oldClose\": 64960.0\n            },\n            {\n                \"date\": 20210702,\n                \"from\": \"bc2108\",\n                \"to\": \"bc2109\",\n                \"newClose\": 60850.0,\n                \"oldClose\": 60830.0\n            },\n            {\n                \"date\": 20210730,\n                \"from\": \"bc2109\",\n                \"to\": \"bc2110\",\n                \"newClose\": 64100.0,\n                \"oldClose\": 63980.0\n            },\n            {\n                \"date\": 20210827,\n                \"from\": \"bc2110\",\n                \"to\": \"bc2111\",\n                \"newClose\": 61280.0,\n                \"oldClose\": 61380.0\n            },\n            {\n                \"date\": 20210928,\n                \"from\": \"bc2111\",\n                \"to\": \"bc2112\",\n                \"newClose\": 61350.0,\n                \"oldClose\": 61350.0\n            }\n        ]\n    }\n}"
  },
  {
    "path": "config/01commom/sessions.json",
    "content": "{\n    \"SD0930\":{\n        \"name\":\"SD0930\",\n        \"offset\": 0,\n        \"auction\":{\n            \"from\": 929,\n            \"to\": 930\n        },\n        \"sections\":[\n            {\n                \"from\": 930,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1300,\n                \"to\": 1500\n            }\n        ]\n    },\n    \"FD0915\":{\n        \"name\":\"FD0915\",\n        \"offset\": 0,\n        \"auction\":{\n            \"from\": 929,\n            \"to\": 930\n        },\n        \"sections\":[\n            {\n                \"from\": 930,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1300,\n                \"to\": 1515\n            }\n        ]\n    },\n    \"FN0100\":{\n        \"name\":\"FN0100\",\n        \"offset\": 300,\n        \"auction\":{\n            \"from\": 2059,\n            \"to\": 2100\n        },\n        \"sections\":[\n            {\n                \"from\": 2100,\n                \"to\": 100\n            },\n            {\n                \"from\": 900,\n                \"to\": 1015\n            },\n            {\n                \"from\": 1030,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1330,\n                \"to\": 1500\n            }\n        ]\n    },\n    \"FN0230\":{\n        \"name\":\"FN0230\",\n        \"offset\": 300,\n        \"auction\":{\n            \"from\": 2059,\n            \"to\": 2100\n        },\n        \"sections\":[\n            {\n                \"from\": 2100,\n                \"to\": 230\n            },\n            {\n                \"from\": 900,\n                \"to\": 1015\n            },\n            {\n                \"from\": 1030,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1330,\n                \"to\": 1500\n            }\n        ]\n    },\n    \"FN2300\":{\n        \"name\":\"FN2300\",\n        \"offset\": 300,\n        \"auction\":{\n            \"from\": 2059,\n            \"to\": 2100\n        },\n        \"sections\":[\n            {\n                \"from\": 2100,\n                \"to\": 2300\n            },\n            {\n                \"from\": 900,\n                \"to\": 1015\n            },\n            {\n                \"from\": 1030,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1330,\n                \"to\": 1500\n            }\n        ]\n    },\n    \"FD0900\":{\n        \"name\":\"FD0900\",\n        \"offset\": 0,\n        \"auction\":{\n            \"from\": 859,\n            \"to\": 900\n        },\n        \"sections\":[\n            {\n                \"from\": 900,\n                \"to\": 1015\n            },\n            {\n                \"from\": 1030,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1330,\n                \"to\": 1500\n            }\n        ]\n    },\n    \"FN2330\":{\n        \"name\":\"FN2330\",\n        \"offset\": 300,\n        \"auction\":{\n            \"from\": 2059,\n            \"to\": 2100\n        },\n        \"sections\":[\n            {\n                \"from\": 2100,\n                \"to\": 2330\n            },\n            {\n                \"from\": 900,\n                \"to\": 1015\n            },\n            {\n                \"from\": 1030,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1330,\n                \"to\": 1500\n            }\n        ]\n    },\n    \"TRADING\":{\n        \"name\":\"TRADING\",\n        \"offset\": 300,\n        \"auction\":{\n            \"from\": 2059,\n            \"to\": 2100\n        },\n        \"sections\":[\n            {\n                \"from\": 2100,\n                \"to\": 230\n            },\n            {\n                \"from\": 900,\n                \"to\": 1130\n            },\n            {\n                \"from\": 1300,\n                \"to\": 1515\n            }\n        ]\n    }\n}"
  },
  {
    "path": "config/03research/cta.json",
    "content": "{\n    \"replayer\":{\n        \"mode\":\"bin\",\n        \"path\":\"./dataset/\",\n        \"path1\":\"D:/Github/test/Storage\",\n        \"tick\":false,\n        \"basefiles\":{\n            \"session\":\"./config/01commom/sessions.json\",\n            \"commodity\":\"./config/01commom/commodities.json\",\n            \"contract\":\"./config/01commom/contracts.json\",\n            \"holiday\":\"./config/01commom/holidays.json\",\n            \"hot\":\"./config/01commom/hots.json\"\n        },\n        \"fees\":\"./config/01commom/fees.json\"\n    },\n    \"env\":{\n        \"mocker\":\"cta\"\n    },\n    \"bspolicy\":\"./config/01commom/actpolicy.json\"\n}"
  },
  {
    "path": "config/03research/hft.json",
    "content": "{\n    \"replayer\":{\n        \"mode\":\"bin\",\n        \"path\":\"./dataset/\",\n        \"tick\":true,\n        \"basefiles\":{\n            \"session\":\"./config/01commom/sessions.json\",\n            \"commodity\":\"./config/01commom/commodities.json\",\n            \"contract\":\"./config/01commom/contracts.json\",\n            \"holiday\":\"./config/01commom/holidays.json\",\n            \"hot\":\"./config/01commom/hots.json\"\n        },\n        \"fees\":\"./config/01commom/fees.json\"\n    },\n    \"env\":{\n        \"mocker\":\"hft\"\n    },\n    \"bspolicy\":\"./config/01commom/actpolicy.json\"\n}"
  },
  {
    "path": "config/03research/log_debugger.json",
    "content": "{\n    \"root\":{\n        \"level\":\"debug\",\n        \"async\":false,\n        \"sinks\":[\n            {\n                \"type\":\"basic_file_sink\",\n                \"filename\":\"outputs_bt/logs/runner.log\",\n                \"pattern\":\"[%Y.%m.%d %H:%M:%S,%f - %-5l] %v\",\n                \"truncate\":true\n            },\n            {\n                \"type\":\"ostream_sink\",\n                \"pattern\":\"[%Y.%m.%d %H:%M:%S,%f - %-5l] %v\"\n            }\n        ]\n    },\n    \"dyn_pattern\":{\n        \"strategy\":{\n            \"level\":\"debug\",\n            \"async\":false,\n            \"sinks\":[\n                {\n                    \"type\":\"basic_file_sink\",\n                    \"filename\":\"outputs_bt/logs/strategy/%s.log\",\n                    \"pattern\":\"[%Y.%m.%d %H:%M:%S,%f - %-5l] %v\",\n                    \"truncate\":true\n                }\n            ]\n        }\n    }\n}"
  },
  {
    "path": "config/03research/log_evaluator.json",
    "content": "{\n    \"root\":{\n        \"level\":\"info\",\n        \"async\":false,\n        \"sinks\":[]\n    },\n    \"dyn_pattern\":{\n        \"strategy\":{\n            \"level\":\"info\",\n            \"async\":false,\n            \"sinks\":[\n                {\n                    \"type\":\"basic_file_sink\",\n                    \"filename\":\"outputs_bt/logs/strategy/%s.log\",\n                    \"pattern\":\"[%Y.%m.%d %H:%M:%S,%f - %-5l] %v\",\n                    \"truncate\":true\n                }\n            ]\n        }\n    }\n}"
  },
  {
    "path": "config/03research/log_trainer.json",
    "content": "{\n    \"root\":{\n        \"level\":\"info\",\n        \"async\":false,\n        \"sinks\":[]\n    },\n    \"dyn_pattern\":{\n        \"strategy\":{\n            \"level\":\"info\",\n            \"async\":false,\n            \"sinks\":[]\n        }\n    }\n}"
  },
  {
    "path": "config/04realtime/log.json",
    "content": "{\n    \"root\":{\n        \"level\":\"debug\",\n        \"async\":false,\n        \"sinks\":[\n            {\n                \"type\":\"daily_file_sink\",\n                \"filename\":\"Logs/Runner.log\",\n                \"pattern\":\"[%Y.%m.%d %H:%M:%S - %-5l] %v\",\n                \"truncate\":true\n            },\n            {\n                \"type\":\"ostream_sink\",\n                \"pattern\":\"[%m.%d %H:%M:%S - %^%-5l%$] %v\"\n            }\n        ]\n    },\n    \"dyn_pattern\":{\n        \"strategy\":{\n            \"level\":\"debug\",\n            \"async\":false,\n            \"sinks\":[\n                {\n                    \"type\":\"daily_file_sink\",\n                    \"filename\":\"Logs/Strategy/%s.log\",\n                    \"pattern\":\"[%Y.%m.%d %H:%M:%S - %-5l] %v\",\n                    \"truncate\":true\n                }\n            ]\n        },\n        \"parser\":{\n            \"level\":\"debug\",\n            \"async\":false,\n            \"sinks\":[\n                {\n                    \"type\":\"daily_file_sink\",\n                    \"filename\":\"Logs/Parser/%s.log\",\n                    \"pattern\":\"[%Y.%m.%d %H:%M:%S - %-5l] %v\",\n                    \"truncate\":true\n                }\n            ]\n        },\n        \"trader\":{\n            \"level\":\"debug\",\n            \"async\":false,\n            \"sinks\":[\n                {\n                    \"type\":\"daily_file_sink\",\n                    \"filename\":\"Logs/Trader/%s.log\",\n                    \"pattern\":\"[%Y.%m.%d %H:%M:%S - %-5l] %v\",\n                    \"truncate\":true\n                }\n            ]\n        },\n        \"executer\":{\n            \"level\":\"debug\",\n            \"async\":false,\n            \"sinks\":[\n                {\n                    \"type\":\"daily_file_sink\",\n                    \"filename\":\"Logs/Executer/%s.log\",\n                    \"pattern\":\"[%Y.%m.%d %H:%M:%S - %-5l] %v\",\n                    \"truncate\":true\n                }\n            ]\n        }\n    },\n    \"risk\":{\n        \"level\":\"debug\",\n        \"async\":false,\n        \"sinks\":[\n            {\n                \"type\":\"daily_file_sink\",\n                \"filename\":\"Logs/Riskmon/Riskmon.log\",\n                \"pattern\":\"[%Y.%m.%d %H:%M:%S - %-5l] %v\",\n                \"truncate\":true\n            }\n        ]\n    }\n}"
  },
  {
    "path": "dataset_from_storage.py",
    "content": "import pandas as pd\nfrom ctypes import POINTER\nfrom os import makedirs\n\nfrom wtpy.wrapper.WtDtHelper import WtDataHelper\nfrom wtpy.WtCoreDefs import WTSBarStruct\nfrom wtpy import WtDtServo\n\n\nclass DataReader:\n    df: pd.DataFrame\n\n    def __len__(self) -> int:\n        return len(self.df)\n\n    def set_bars(self, data: pd.DataFrame) -> tuple:\n        dtype = {\n            'date': int,\n            'time': int,\n            'open': float,\n            'high': float,\n            'low': float,\n            'close': float,\n            'money': float,\n            'vol': int,\n            'hold': int,\n            'diff': int,\n        }\n        self.df = data[dtype.keys()].astype(dtype)\n\n    def get_bars(self, curBar: POINTER(WTSBarStruct), idx: int) -> bool:\n        curBar.contents.date = self.df['date'].iloc[idx]\n        curBar.contents.time = self.df['time'].iloc[idx]\n        curBar.contents.open = self.df['open'].iloc[idx]\n        curBar.contents.high = self.df['high'].iloc[idx]\n        curBar.contents.low = self.df['low'].iloc[idx]\n        curBar.contents.close = self.df['close'].iloc[idx]\n        curBar.contents.money = self.df['money'].iloc[idx]\n        curBar.contents.vol = self.df['vol'].iloc[idx]\n        curBar.contents.hold = self.df['hold'].iloc[idx]\n        curBar.contents.diff = self.df['diff'].iloc[idx]\n\n        return True\n\n\nreader: DataReader = DataReader()\nhelper: WtDataHelper = WtDataHelper()\ndt: WtDtServo = WtDtServo()\ndt.setBasefiles(\n    commfile='./config/01commom/commodities.json',\n    contractfile='./config/01commom/contracts.json',\n    holidayfile='./config/01commom/holidays.json',\n    sessionfile='./config/01commom/sessions.json',\n    hotfile='./config/01commom/hots.json'\n)\ndt.setStorage('D:/Github/test/Storage/')\ndt.commitConfig()\n\nsecurities: tuple = (\n    'CFFEX.IC.HOT',\n    'CFFEX.IF.HOT',\n    'CFFEX.IH.HOT',\n    'CFFEX.T.HOT',\n    'CFFEX.TF.HOT',\n    'CZCE.RM.HOT',#\n    'CZCE.JR.HOT',#\n    'CZCE.AP.HOT',\n    'CZCE.CF.HOT',\n    'CZCE.MA.HOT',\n    'CZCE.SF.HOT',\n    'CZCE.SR.HOT',\n    'CZCE.TA.HOT',#\n    'CZCE.ZC.HOT',\n    'DCE.a.HOT',\n    'DCE.c.HOT',#\n    'DCE.cs.HOT',#\n    'DCE.i.HOT',\n    'DCE.jd.HOT',\n    'DCE.l.HOT',\n    'DCE.m.HOT',#\n    'DCE.p.HOT',\n    'DCE.pp.HOT',\n    'DCE.y.HOT',\n    'DCE.rr.HOT',#\n    'INE.sc.HOT',\n    'INE.lu.HOT',\n    'SHFE.ag.HOT',\n    'SHFE.al.HOT',\n    'SHFE.bu.HOT',\n    'SHFE.cu.HOT',\n    'SHFE.fu.HOT',\n    'SHFE.hc.HOT',\n    'SHFE.ni.HOT',\n    'SHFE.pb.HOT',\n    'SHFE.rb.HOT',\n    'SHFE.zn.HOT',\n)\n\nfor period, name in {'d1': 'day', 'm5': 'min5', }.items():#, 'm1': 'min1'\n    for code in securities:\n        print(period, code)\n        path = './dataset/his/%s/%s' % (name, code.split('.')[0])\n        makedirs(path, exist_ok=True)\n        df = dt.get_bars(code, period=period, fromTime=201601011600,\n                         endTime=202110131600).to_pandas()\n        reader.set_bars(df)\n        helper.trans_bars(barFile='%s/%s.dsb' % (path, code.replace('.HOT', '_HOT')), getter=reader.get_bars,\n                          count=len(reader), period='d' if period == 'd1' else period)\n        # break\n    # break\n"
  },
  {
    "path": "elegantrl/__init__.py",
    "content": "\n"
  },
  {
    "path": "elegantrl/agent.py",
    "content": "import os\nimport torch\nimport numpy as np\nimport numpy.random as rd\n\nfrom copy import deepcopy\nfrom torch.nn.utils import clip_grad_norm_\nfrom elegantrl.net import QNet, QNetDuel, QNetTwin, QNetTwinDuel\nfrom elegantrl.net import Actor, Critic, ShareDPG\nfrom elegantrl.net import ActorSAC, CriticTwin, ShareSPG\nfrom elegantrl.net import ActorPPO, ActorDiscretePPO, CriticPPO, SharePPO\nfrom elegantrl.net import ActorBiConv, CriticBiConv, ShareBiConv\n\n\"\"\"[ElegantRL.2021.11.05](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\n\nclass AgentBase:\n    def __init__(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n                 learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        \"\"\"initialize\n\n        replace by different DRL algorithms\n        explict call self.init() for multiprocessing.\n\n        :param net_dim: the dimension of networks (the width of neural networks)\n        :param state_dim: the dimension of state (the number of state vector)\n        :param action_dim: the dimension of action (the number of discrete action)\n        :param reward_scale: scale the reward to get a appropriate scale Q value\n        :param gamma: the discount factor of Reinforcement Learning\n\n        :param learning_rate: learning rate of optimizer\n        :param if_per_or_gae: PER (off-policy) or GAE (on-policy) for sparse reward\n        :param env_num: the env number of VectorEnv. env_num == 1 means don't use VectorEnv\n        :param gpu_id: the gpu_id of the training device. Use CPU when cuda is not available.\n        \"\"\"\n        self.gamma = None\n        self.states = None\n        self.device = None\n        self.traj_list = None\n        self.action_dim = None\n        self.reward_scale = None\n        self.if_off_policy = True\n\n        self.env_num = env_num\n        self.explore_rate = 1.0\n        self.explore_noise = 0.1\n        self.clip_grad_norm = 4.0\n        # self.amp_scale = None  # automatic mixed precision\n\n        '''attribute'''\n        self.explore_env = None\n        self.get_obj_critic = None\n\n        self.criterion = torch.nn.SmoothL1Loss()\n        self.cri = self.cri_target = self.if_use_cri_target = self.cri_optim = self.ClassCri = None\n        self.act = self.act_target = self.if_use_act_target = self.act_optim = self.ClassAct = None\n\n        assert isinstance(gpu_id, int)\n        assert isinstance(env_num, int)\n        assert isinstance(net_dim, int)\n        assert isinstance(state_dim, int)\n        assert isinstance(action_dim, int)\n        assert isinstance(if_per_or_gae, bool)\n        assert isinstance(gamma, float)\n        assert isinstance(reward_scale, float)\n        assert isinstance(learning_rate, float)\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        \"\"\"initialize the self.object in `__init__()`\n\n        replace by different DRL algorithms\n        explict call self.init() for multiprocessing.\n\n        :param net_dim: the dimension of networks (the width of neural networks)\n        :param state_dim: the dimension of state (the number of state vector)\n        :param action_dim: the dimension of action (the number of discrete action)\n        :param reward_scale: scale the reward to get a appropriate scale Q value\n        :param gamma: the discount factor of Reinforcement Learning\n\n        :param learning_rate: learning rate of optimizer\n        :param if_per_or_gae: PER (off-policy) or GAE (on-policy) for sparse reward\n        :param env_num: the env number of VectorEnv. env_num == 1 means don't use VectorEnv\n        :param gpu_id: the gpu_id of the training device. Use CPU when cuda is not available.\n        \"\"\"\n        self.gamma = gamma\n        self.action_dim = action_dim\n        self.reward_scale = reward_scale\n        # self.amp_scale = torch.cuda.amp.GradScaler()\n        self.traj_list = [list() for _ in range(env_num)]\n        self.device = torch.device(f\"cuda:{gpu_id}\" if (torch.cuda.is_available() and (gpu_id >= 0)) else \"cpu\")\n\n        self.cri = self.ClassCri(int(net_dim * 1.25), state_dim, action_dim).to(self.device)\n        self.act = self.ClassAct(net_dim, state_dim, action_dim).to(self.device) if self.ClassAct else self.cri\n        self.cri_target = deepcopy(self.cri) if self.if_use_cri_target else self.cri\n        self.act_target = deepcopy(self.act) if self.if_use_act_target else self.act\n\n        self.cri_optim = torch.optim.Adam(self.cri.parameters(), learning_rate)\n        self.act_optim = torch.optim.Adam(self.act.parameters(), learning_rate) if self.ClassAct else self.cri\n        # del self.ClassCri, self.ClassAct\n\n        assert isinstance(if_per_or_gae, bool)\n        if env_num == 1:\n            self.explore_env = self.explore_one_env\n        else:\n            self.explore_env = self.explore_vec_env\n\n    def select_action(self, state: np.ndarray) -> np.ndarray:\n        s_tensor = torch.as_tensor(state[np.newaxis], device=self.device)\n        a_tensor = self.act(s_tensor)\n        action = a_tensor.detach().cpu().numpy()\n        return action\n\n    def select_actions(self, state: torch.Tensor) -> torch.Tensor:\n        \"\"\"Select continuous actions for exploration\n\n        :param state: states.shape==(batch_size, state_dim, )\n        :return: actions.shape==(batch_size, action_dim, ),  -1 < action < +1\n        \"\"\"\n\n        action = self.act(state.to(self.device))\n        if rd.rand() < self.explore_rate:  # epsilon-greedy\n            action = (action + torch.randn_like(action) * self.explore_noise).clamp(-1, 1)\n        return action.detach().cpu()\n\n    def explore_one_env(self, env, target_step: int) -> list:\n        \"\"\"actor explores in single Env, then returns the trajectory (env transitions) for ReplayBuffer\n\n        :param env: RL training environment. env.reset() env.step()\n        :param target_step: explored target_step number of step in env\n        :return: `[traj_env_0, ]`\n        `traj_env_0 = [(state, reward, mask, action, noise), ...]` for on-policy\n        `traj_env_0 = [(state, other), ...]` for off-policy\n        \"\"\"\n        state = self.states[0]\n        traj = list()\n        for _ in range(target_step):\n            ten_state = torch.as_tensor(state, dtype=torch.float32)\n            ten_action = self.select_actions(ten_state.unsqueeze(0))[0]\n            action = ten_action.numpy()\n            next_s, reward, done, _ = env.step(action)\n\n            ten_other = torch.empty(2 + self.action_dim)\n            ten_other[0] = reward\n            ten_other[1] = done\n            ten_other[2:] = ten_action\n            traj.append((ten_state, ten_other))\n\n            state = env.reset() if done else next_s\n\n        self.states[0] = state\n\n        traj_state = torch.stack([item[0] for item in traj])\n        traj_other = torch.stack([item[1] for item in traj])\n        traj_list = [(traj_state, traj_other), ]\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ]\n\n    def explore_vec_env(self, env, target_step: int) -> list:\n        \"\"\"actor explores in VectorEnv, then returns the trajectory (env transitions) for ReplayBuffer\n\n        :param env: RL training environment. env.reset() env.step(). It should be a vector env.\n        :param target_step: explored target_step number of step in env\n        :return: `[traj_env_0, ]`\n        `traj_env_0 = [(state, reward, mask, action, noise), ...]` for on-policy\n        `traj_env_0 = [(state, other), ...]` for off-policy\n        \"\"\"\n        ten_states = self.states\n\n        traj = list()\n        for _ in range(target_step):\n            ten_actions = self.select_actions(ten_states)\n            ten_next_states, ten_rewards, ten_dones = env.step(ten_actions)\n\n            ten_others = torch.cat((ten_rewards.unsqueeze(0), ten_dones.unsqueeze(0), ten_actions))\n            traj.append((ten_states, ten_others))\n            ten_states = ten_next_states\n\n        self.states = ten_states\n\n        # traj = [(env_ten, ...), ...], env_ten = (env1_ten, env2_ten, ...)\n        traj_state = torch.stack([item[0] for item in traj])\n        traj_other = torch.stack([item[1] for item in traj])\n        traj_list = [(traj_state[:, env_i, :], traj_other[:, env_i, :])\n                     for env_i in range(len(self.states))]\n        # traj_list = [traj_env_0, ...], traj_env_0 = (ten_state, ten_other)\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ...]\n\n    def update_net(self, buffer, batch_size: int, repeat_times: float, soft_update_tau: float) -> tuple:\n        \"\"\"update the neural network by sampling batch data from ReplayBuffer\n\n        :param buffer: Experience replay buffer\n        :param batch_size: sample batch_size of data for Stochastic Gradient Descent\n        :param repeat_times: `batch_sampling_times = int(target_step * repeat_times / batch_size)`\n        :param soft_update_tau: soft target update: `target_net = target_net * (1-tau) + current_net * tau`,\n        \"\"\"\n\n    def optim_update(self, optimizer, objective, params):  # plan todo params generator -> list\n        \"\"\"minimize the optimization objective via update the network parameters\n\n        :param optimizer: `optimizer = torch.optim.SGD(net.parameters(), learning_rate)`\n        :param objective: `objective = net(...)` the optimization objective, sometimes is a loss function.\n        :param params: `params = net.parameters()` the network parameters which need to be updated.\n        \"\"\"\n        optimizer.zero_grad()\n        objective.backward()\n        clip_grad_norm_(params, max_norm=self.clip_grad_norm)\n        optimizer.step()\n\n    # def optim_update_amp(self, optimizer, objective):  # automatic mixed precision\n    #     \"\"\"minimize the optimization objective via update the network parameters\n    #\n    #     amp: Automatic Mixed Precision\n    #\n    #     :param optimizer: `optimizer = torch.optim.SGD(net.parameters(), learning_rate)`\n    #     :param objective: `objective = net(...)` the optimization objective, sometimes is a loss function.\n    #     :param params: `params = net.parameters()` the network parameters which need to be updated.\n    #     \"\"\"\n    #     # self.amp_scale = torch.cuda.amp.GradScaler()\n    #\n    #     optimizer.zero_grad()\n    #     self.amp_scale.scale(objective).backward()  # loss.backward()\n    #     self.amp_scale.unscale_(optimizer)  # amp\n    #\n    #     # from torch.nn.utils import clip_grad_norm_\n    #     # clip_grad_norm_(model.parameters(), max_norm=3.0)  # amp, clip_grad_norm_\n    #     self.amp_scale.step(optimizer)  # optimizer.step()\n    #     self.amp_scale.update()  # optimizer.step()\n\n    @staticmethod\n    def soft_update(target_net, current_net, tau):\n        \"\"\"soft update target network via current network\n\n        :param target_net: update target network via current network to make training more stable.\n        :param current_net: current network update via an optimizer\n        :param tau: tau of soft target update: `target_net = target_net * (1-tau) + current_net * tau`\n        \"\"\"\n        for tar, cur in zip(target_net.parameters(), current_net.parameters()):\n            tar.data.copy_(cur.data * tau + tar.data * (1.0 - tau))\n\n    def save_or_load_agent(self, cwd: str, if_save: bool):\n        \"\"\"save or load training files for Agent\n\n        :param cwd: Current Working Directory. ElegantRL save training files in CWD.\n        :param if_save: True: save files. False: load files.\n        \"\"\"\n\n        def load_torch_file(model_or_optim, _path):\n            state_dict = torch.load(_path, map_location=lambda storage, loc: storage)\n            model_or_optim.load_state_dict(state_dict)\n\n        name_obj_list = [('actor', self.act), ('act_target', self.act_target), ('act_optim', self.act_optim),\n                         ('critic', self.cri), ('cri_target', self.cri_target), ('cri_optim', self.cri_optim), ]\n        name_obj_list = [(name, obj) for name, obj in name_obj_list if obj is not None]\n\n        if if_save:\n            for name, obj in name_obj_list:\n                save_path = f\"{cwd}/{name}.pth\"\n                torch.save(obj.state_dict(), save_path)\n        else:\n            for name, obj in name_obj_list:\n                save_path = f\"{cwd}/{name}.pth\"\n                load_torch_file(obj, save_path) if os.path.isfile(save_path) else None\n\n    def convert_trajectory(self, traj_list: list) -> list:  # off-policy\n        \"\"\"convert trajectory (env exploration type) to trajectory (replay buffer type)\n\n        convert `other = concat((      reward, done, ...))`\n        to      `other = concat((scale_reward, mask, ...))`\n\n        :param traj_list: `traj_list = [(tensor_state, other_state), ...]`\n        :return: `traj_list = [(tensor_state, other_state), ...]`\n        \"\"\"\n        for ten_state, ten_other in traj_list:\n            ten_other[:, 0] = ten_other[:, 0] * self.reward_scale  # ten_reward\n            ten_other[:, 1] = (1.0 - ten_other[:, 1]) * self.gamma  # ten_mask = (1.0 - ary_done) * gamma\n        return traj_list\n\n\n\"\"\"Value-based Methods (Q network)\"\"\"\n\n\nclass AgentDQN(AgentBase):  # [ElegantRL.2021.10.25]\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassCri = None  # self.ClassCri = QNetDuel if self.if_use_dueling else QNet\n        self.if_use_dueling = True  # self.ClassCri = QNetDuel if self.if_use_dueling else QNet\n        self.explore_rate = 0.25  # the probability of choosing action randomly in epsilon-greedy\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        self.ClassCri = QNetDuel if self.if_use_dueling else QNet\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def select_actions(self, states: torch.Tensor) -> torch.Tensor:  # for discrete action space\n        \"\"\"Select discrete actions for exploration\n\n        `tensor states` states.shape==(batch_size, state_dim, )\n        return `tensor a_ints` a_ints.shape==(batch_size, )\n        \"\"\"\n        if rd.rand() < self.explore_rate:  # epsilon-greedy\n            a_ints = torch.randint(self.action_dim, size=states.shape[0])  # choosing action randomly\n        else:\n            actions = self.act(states.to(self.device))\n            a_ints = actions.argmax(dim=1)\n        return a_ints.detach().cpu()\n\n    def explore_one_env(self, env, target_step) -> list:\n        traj = list()\n        state = self.states[0]\n        for _ in range(target_step):\n            ten_state = torch.as_tensor(state, dtype=torch.float32)\n            ten_action = self.select_actions(ten_state.unsqueeze(0))[0]\n            action = ten_action.numpy()  # isinstance(action, int)\n            next_s, reward, done, _ = env.step(action)\n\n            ten_other = torch.empty(2 + 1)\n            ten_other[0] = reward\n            ten_other[1] = done\n            ten_other[2] = ten_action\n            traj.append((ten_state, ten_other))\n\n            state = env.reset() if done else next_s\n        self.states[0] = state\n\n        traj_state = torch.stack([item[0] for item in traj])\n        traj_other = torch.stack([item[1] for item in traj])\n        traj_list = [(traj_state, traj_other), ]\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ...]\n\n    def explore_vec_env(self, env, target_step) -> list:\n        ten_states = self.states\n\n        traj = list()\n        for _ in range(target_step):\n            ten_actions = self.select_actions(ten_states)\n            ten_next_states, ten_rewards, ten_dones = env.step(ten_actions)\n\n            ten_others = torch.cat((ten_rewards.unsqueeze(0),\n                                    ten_dones.unsqueeze(0),\n                                    ten_actions.unsqueeze(0)))\n            traj.append((ten_states, ten_others))\n            ten_states = ten_next_states\n\n        self.states = ten_states\n\n        traj_state = torch.stack([item[0] for item in traj])\n        traj_other = torch.stack([item[1] for item in traj])\n        traj_list = [(traj_state[:, env_i, :], traj_other[:, env_i, :])\n                     for env_i in range(len(self.states))]\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ...]\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> tuple:\n        buffer.update_now_len()\n        obj_critic = q_value = None\n        for _ in range(int(buffer.now_len / batch_size * repeat_times)):\n            obj_critic, q_value = self.get_obj_critic(buffer, batch_size)\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n        return obj_critic.item(), q_value.mean().item()\n\n    def get_obj_critic_raw(self, buffer, batch_size):\n        with torch.no_grad():\n            reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n            next_q = self.cri_target(next_s).max(dim=1, keepdim=True)[0]\n            q_label = reward + mask * next_q\n\n        q_value = self.cri(state).gather(1, action.long())\n        obj_critic = self.criterion(q_value, q_label)\n        return obj_critic, q_value\n\n    def get_obj_critic_per(self, buffer, batch_size):\n        with torch.no_grad():\n            reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n            next_q = self.cri_target(next_s).max(dim=1, keepdim=True)[0]\n            q_label = reward + mask * next_q\n\n        q_value = self.cri(state).gather(1, action.long())\n        td_error = self.criterion(q_value, q_label)  # or td_error = (q_value - q_label).abs()\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, q_value\n\n\nclass AgentDoubleDQN(AgentDQN):  # [ElegantRL.2021.10.25]\n    def __init__(self):\n        AgentDQN.__init__(self)\n        self.soft_max = torch.nn.Softmax(dim=1)\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        self.ClassCri = QNetTwinDuel if self.if_use_dueling else QNetTwin\n        AgentDQN.init(self, net_dim, state_dim, action_dim, learning_rate, reward_scale, gamma,\n                      if_per_or_gae, env_num, gpu_id)\n\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def select_actions(self, states: torch.Tensor) -> torch.Tensor:  # for discrete action space\n        actions = self.act(states.to(self.device))\n        if rd.rand() < self.explore_rate:  # epsilon-greedy\n            a_prob = self.soft_max(actions)\n            a_ints = torch.multinomial(a_prob, num_samples=1, replacement=True)[:, 0]\n            # a_int = rd.choice(self.action_dim, prob=a_prob)  # numpy version\n        else:\n            a_ints = actions.argmax(dim=1)\n        return a_ints.detach().cpu()\n\n    def get_obj_critic_raw(self, buffer, batch_size) -> (torch.Tensor, torch.Tensor):\n        with torch.no_grad():\n            reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n            next_q = torch.min(*self.cri_target.get_q1_q2(next_s)).max(dim=1, keepdim=True)[0]\n            q_label = reward + mask * next_q\n\n        q1, q2 = [qs.gather(1, action.long()) for qs in self.act.get_q1_q2(state)]\n        obj_critic = self.criterion(q1, q_label) + self.criterion(q2, q_label)\n        return obj_critic, q1\n\n    def get_obj_critic_per(self, buffer, batch_size):\n        with torch.no_grad():\n            reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n            next_q = torch.min(*self.cri_target.get_q1_q2(next_s)).max(dim=1, keepdim=True)[0]\n            q_label = reward + mask * next_q\n\n        q1, q2 = [qs.gather(1, action.long()) for qs in self.act.get_q1_q2(state)]\n        td_error = self.criterion(q1, q_label) + self.criterion(q2, q_label)\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, q1\n\n\n'''Actor-Critic Methods (Policy Gradient)'''\n\n\nclass AgentDDPG(AgentBase):\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassAct = Actor\n        self.ClassCri = Critic\n        self.if_use_cri_target = True\n        self.if_use_act_target = True\n\n        self.explore_noise = 0.3  # explore noise of action (OrnsteinUhlenbeckNoise)\n        self.ou_noise = None\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n        self.ou_noise = OrnsteinUhlenbeckNoise(size=action_dim, sigma=self.explore_noise)\n\n        if if_per_or_gae:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none' if if_per_or_gae else 'mean')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none' if if_per_or_gae else 'mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def select_actions(self, state: torch.Tensor) -> torch.Tensor:\n        action = self.act(state.to(self.device))\n        if rd.rand() < self.explore_rate:  # epsilon-greedy\n            ou_noise = torch.as_tensor(self.ou_noise(), dtype=torch.float32, device=self.device).unsqueeze(0)\n            action = (action + ou_noise).clamp(-1, 1)\n        return action.detach().cpu()\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> (float, float):\n        buffer.update_now_len()\n\n        obj_critic = None\n        obj_actor = None\n        for _ in range(int(buffer.now_len / batch_size * repeat_times)):\n            obj_critic, state = self.get_obj_critic(buffer, batch_size)\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n            action_pg = self.act(state)  # policy gradient\n            obj_actor = -self.cri(state, action_pg).mean()\n            self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n            if self.if_use_act_target:\n                self.soft_update(self.act_target, self.act, soft_update_tau)\n        return obj_critic.item(), obj_actor.item()\n\n    def get_obj_critic_raw(self, buffer, batch_size):\n        with torch.no_grad():\n            reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n            next_q = self.cri_target(next_s, self.act_target(next_s))\n            q_label = reward + mask * next_q\n        q_value = self.cri(state, action)\n        obj_critic = self.criterion(q_value, q_label)\n        return obj_critic, state\n\n    def get_obj_critic_per(self, buffer, batch_size):\n        with torch.no_grad():\n            reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n            next_q = self.cri_target(next_s, self.act_target(next_s))\n            q_label = reward + mask * next_q\n\n        q_value = self.cri(state, action)\n        td_error = self.criterion(q_value, q_label)  # or td_error = (q_value - q_label).abs()\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, state\n\n\nclass AgentTD3(AgentBase):\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassAct = Actor\n        self.ClassCri = CriticTwin\n        self.if_use_cri_target = True\n        self.if_use_act_target = True\n\n        self.explore_noise = 0.1  # standard deviation of exploration noise\n        self.policy_noise = 0.2  # standard deviation of policy noise\n        self.update_freq = 2  # delay update frequency\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> tuple:\n        buffer.update_now_len()\n\n        obj_critic = None\n        obj_actor = None\n        for update_c in range(int(buffer.now_len / batch_size * repeat_times)):\n            obj_critic, state = self.get_obj_critic(buffer, batch_size)\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n\n            if update_c % self.update_freq == 0:  # delay update\n                action_pg = self.act(state)  # policy gradient\n                obj_actor = -self.cri_target(state, action_pg).mean()  # use cri_target is more stable than cri\n                self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n                if self.if_use_cri_target:\n                    self.soft_update(self.cri_target, self.cri, soft_update_tau)\n                if self.if_use_act_target:\n                    self.soft_update(self.act_target, self.act, soft_update_tau)\n        return obj_critic.item() / 2, obj_actor.item()\n\n    def get_obj_critic_raw(self, buffer, batch_size):\n        with torch.no_grad():\n            reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n            next_a = self.act_target.get_action(next_s, self.policy_noise)  # policy noise\n            next_q = torch.min(*self.cri_target.get_q1_q2(next_s, next_a))  # twin critics\n            q_label = reward + mask * next_q\n        q1, q2 = self.cri.get_q1_q2(state, action)\n        obj_critic = self.criterion(q1, q_label) + self.criterion(q2, q_label)  # twin critics\n        return obj_critic, state\n\n    def get_obj_critic_per(self, buffer, batch_size):\n        \"\"\"Prioritized Experience Replay\n\n        Contributor: Github GyChou\n        \"\"\"\n        with torch.no_grad():\n            reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n            next_a = self.act_target.get_action(next_s, self.policy_noise)  # policy noise\n            next_q = torch.min(*self.cri_target.get_q1_q2(next_s, next_a))  # twin critics\n            q_label = reward + mask * next_q\n\n        q1, q2 = self.cri.get_q1_q2(state, action)\n        td_error = self.criterion(q1, q_label) + self.criterion(q2, q_label)\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, state\n\n\nclass AgentSAC(AgentBase):  # [ElegantRL.2021.10.25]\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassCri = CriticTwin\n        self.ClassAct = ActorSAC\n        self.if_use_cri_target = True\n        self.if_use_act_target = False\n\n        self.alpha_log = None\n        self.alpha_optim = None\n        self.target_entropy = None\n        self.obj_critic = (-np.log(0.5)) ** 0.5  # for reliable_lambda\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n\n        self.alpha_log = torch.tensor((-np.log(action_dim) * np.e,), dtype=torch.float32,\n                                      requires_grad=True, device=self.device)  # trainable parameter\n        self.alpha_optim = torch.optim.Adam((self.alpha_log,), lr=learning_rate)\n        self.target_entropy = np.log(action_dim)\n\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def select_actions(self, state: torch.Tensor) -> torch.Tensor:\n        state = state.to(self.device)\n        if rd.rand() < self.explore_rate:  # epsilon-greedy\n            actions = self.act.get_action(state)\n        else:\n            actions = self.act(state)\n        return actions.detach().cpu()\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau):\n        buffer.update_now_len()\n\n        obj_actor = None\n        alpha = None\n        for _ in range(int(buffer.now_len * repeat_times / batch_size)):\n            alpha = self.alpha_log.exp()\n\n            '''objective of critic (loss function of critic)'''\n            obj_critic, state = self.get_obj_critic(buffer, batch_size, alpha)\n            self.obj_critic = 0.995 * self.obj_critic + 0.0025 * obj_critic.item()  # for reliable_lambda\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n            '''objective of alpha (temperature parameter automatic adjustment)'''\n            action_pg, logprob = self.act.get_action_logprob(state)  # policy gradient\n            obj_alpha = (self.alpha_log * (logprob - self.target_entropy).detach()).mean()\n            self.optim_update(self.alpha_optim, obj_alpha, self.alpha_log)\n\n            '''objective of actor'''\n            with torch.no_grad():\n                self.alpha_log[:] = self.alpha_log.clamp(-20, 2).detach()\n            obj_actor = -(torch.min(*self.cri.get_q1_q2(state, action_pg)) + logprob * alpha).mean()\n            # use self.cri_target.get_q1_q2 in above code for more stable training.\n            self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n\n            if self.if_use_act_target:\n                self.soft_update(self.act_target, self.act, soft_update_tau)\n        return self.obj_critic, obj_actor.item(), alpha.item()\n\n    def get_obj_critic_raw(self, buffer, batch_size, alpha):\n        with torch.no_grad():\n            reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n\n            next_a, next_log_prob = self.act_target.get_action_logprob(next_s)  # stochastic policy\n            next_q = torch.min(*self.cri_target.get_q1_q2(next_s, next_a))  # twin critics\n\n            q_label = reward + mask * (next_q + next_log_prob * alpha)\n        q1, q2 = self.cri.get_q1_q2(state, action)\n        obj_critic = self.criterion(q1, q_label) + self.criterion(q2, q_label)\n        return obj_critic, state\n\n    def get_obj_critic_per(self, buffer, batch_size, alpha):\n        with torch.no_grad():\n            reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n\n            next_a, next_log_prob = self.act_target.get_action_logprob(next_s)  # stochastic policy\n            next_q = torch.min(*self.cri_target.get_q1_q2(next_s, next_a))  # twin critics\n\n            q_label = reward + mask * (next_q + next_log_prob * alpha)\n\n        q1, q2 = self.cri.get_q1_q2(state, action)\n        td_error = self.criterion(q1, q_label) + self.criterion(q2, q_label)\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, state\n\n\nclass AgentModSAC(AgentSAC):  # Modified SAC using reliable_lambda and TTUR (Two Time-scale Update Rule)\n    def __init__(self):\n        AgentSAC.__init__(self)\n        self.if_use_act_target = True\n        self.if_use_cri_target = True\n        self.obj_critic = (-np.log(0.5)) ** 0.5  # for reliable_lambda\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau):\n        buffer.update_now_len()\n\n        obj_actor = None\n        update_a = 0\n        alpha = None\n        for update_c in range(1, int(buffer.now_len * repeat_times / batch_size)):\n            alpha = self.alpha_log.exp()\n\n            '''objective of critic (loss function of critic)'''\n            obj_critic, state = self.get_obj_critic(buffer, batch_size, alpha)\n            self.obj_critic = 0.995 * self.obj_critic + 0.0025 * obj_critic.item()  # for reliable_lambda\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n            a_noise_pg, logprob = self.act.get_action_logprob(state)  # policy gradient\n            '''objective of alpha (temperature parameter automatic adjustment)'''\n            obj_alpha = (self.alpha_log * (logprob - self.target_entropy).detach()).mean()\n            self.optim_update(self.alpha_optim, obj_alpha, self.alpha_log)\n            with torch.no_grad():\n                self.alpha_log[:] = self.alpha_log.clamp(-16, 2).detach()\n\n            '''objective of actor using reliable_lambda and TTUR (Two Time-scales Update Rule)'''\n            reliable_lambda = np.exp(-self.obj_critic ** 2)  # for reliable_lambda\n            if_update_a = update_a / update_c < 1 / (2 - reliable_lambda)\n            if if_update_a:  # auto TTUR\n                update_a += 1\n\n                q_value_pg = torch.min(*self.cri.get_q1_q2(state, a_noise_pg))\n                obj_actor = -(q_value_pg + logprob * alpha).mean()\n                self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n                if self.if_use_act_target:\n                    self.soft_update(self.act_target, self.act, soft_update_tau)\n\n        return self.obj_critic, obj_actor.item(), alpha.item()\n\n\nclass AgentPPO(AgentBase):\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassAct = ActorPPO\n        self.ClassCri = CriticPPO\n\n        self.if_off_policy = False\n        self.ratio_clip = 0.2  # could be 0.00 ~ 0.50 ratio.clamp(1 - clip, 1 + clip)\n        self.lambda_entropy = 0.02  # could be 0.00~0.10\n        self.lambda_a_value = 1.00  # could be 0.25~8.00, the lambda of advantage value\n        self.lambda_gae_adv = 0.98  # could be 0.95~0.99, GAE (Generalized Advantage Estimation. ICLR.2016.)\n        self.get_reward_sum = None  # self.get_reward_sum_gae if if_use_gae else self.get_reward_sum_raw\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n        self.traj_list = [list() for _ in range(env_num)]\n        self.env_num = env_num\n\n        if if_per_or_gae:  # if_use_gae\n            self.get_reward_sum = self.get_reward_sum_gae\n        else:\n            self.get_reward_sum = self.get_reward_sum_raw\n        if env_num == 1:\n            self.explore_env = self.explore_one_env\n        else:\n            self.explore_env = self.explore_vec_env\n\n    def select_action(self, state: np.ndarray) -> np.ndarray:\n        s_tensor = torch.as_tensor(state[np.newaxis], device=self.device)\n        a_tensor = self.act(s_tensor)\n        action = a_tensor.detach().cpu().numpy()\n        return action\n\n    def select_actions(self, state: torch.Tensor) -> tuple:\n        \"\"\"\n        `tensor state` state.shape = (batch_size, state_dim)\n        return `tensor action` action.shape = (batch_size, action_dim)\n        return `tensor noise` noise.shape = (batch_size, action_dim)\n        \"\"\"\n        state = state.to(self.device)\n        action, noise = self.act.get_action(state)\n        return action.detach().cpu(), noise.detach().cpu()\n\n    def explore_one_env(self, env, target_step):\n        state = self.states[0]\n\n        last_done = 0\n        traj = list()\n        for step_i in range(target_step):\n            ten_states = torch.as_tensor(state, dtype=torch.float32).unsqueeze(0)\n            ten_actions, ten_noises = self.select_actions(ten_states)\n            action = ten_actions[0].numpy()\n            next_s, reward, done, _ = env.step(np.tanh(action))\n\n            traj.append((ten_states, reward, done, ten_actions, ten_noises))\n            if done:\n                state = env.reset()\n                last_done = step_i\n            else:\n                state = next_s\n\n        self.states[0] = state\n\n        traj_list = self.splice_trajectory([traj, ], [last_done, ])\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ]\n\n    def explore_vec_env(self, env, target_step):\n        ten_states = self.states\n\n        env_num = len(self.traj_list)\n        traj_list = [list() for _ in range(env_num)]  # [traj_env_0, ..., traj_env_i]\n        last_done_list = [0 for _ in range(env_num)]\n\n        for step_i in range(target_step):\n            ten_actions, ten_noises = self.select_actions(ten_states)\n            tem_next_states, ten_rewards, ten_dones = env.step(ten_actions.tanh())\n\n            for env_i in range(env_num):\n                traj_list[env_i].append((ten_states[env_i], ten_rewards[env_i], ten_dones[env_i],\n                                         ten_actions[env_i], ten_noises[env_i]))\n                if ten_dones[env_i]:\n                    last_done_list[env_i] = step_i\n\n            ten_states = tem_next_states\n\n        self.states = ten_states\n\n        traj_list = self.splice_trajectory(traj_list, last_done_list)\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ...]\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau):\n        with torch.no_grad():\n            buf_len = buffer[0].shape[0]\n            buf_state, buf_reward, buf_mask, buf_action, buf_noise = [ten.to(self.device) for ten in buffer]\n\n            '''get buf_r_sum, buf_logprob'''\n            bs = 2 ** 10  # set a smaller 'BatchSize' when out of GPU memory.\n            buf_value = [self.cri_target(buf_state[i:i + bs]) for i in range(0, buf_len, bs)]\n            buf_value = torch.cat(buf_value, dim=0)\n            buf_logprob = self.act.get_old_logprob(buf_action, buf_noise)\n\n            buf_r_sum, buf_adv_v = self.get_reward_sum(buf_len, buf_reward, buf_mask, buf_value)  # detach()\n            buf_adv_v = (buf_adv_v - buf_adv_v.mean()) * (self.lambda_a_value / (buf_adv_v.std() + 1e-5))\n            # buf_adv_v: buffer data of adv_v value\n            del buf_noise, buffer[:]\n\n        obj_critic = None\n        obj_actor = None\n        update_times = int(buf_len / batch_size * repeat_times)\n        for update_i in range(1, update_times + 1):\n            indices = torch.randint(buf_len, size=(batch_size,), requires_grad=False, device=self.device)\n\n            state = buf_state[indices]\n            r_sum = buf_r_sum[indices]\n            adv_v = buf_adv_v[indices]\n            action = buf_action[indices]\n            logprob = buf_logprob[indices]\n\n            '''PPO: Surrogate objective of Trust Region'''\n            new_logprob, obj_entropy = self.act.get_logprob_entropy(state, action)  # it is obj_actor\n            ratio = (new_logprob - logprob.detach()).exp()\n            surrogate1 = adv_v * ratio\n            surrogate2 = adv_v * ratio.clamp(1 - self.ratio_clip, 1 + self.ratio_clip)\n            obj_surrogate = -torch.min(surrogate1, surrogate2).mean()\n            obj_actor = obj_surrogate + obj_entropy * self.lambda_entropy\n            self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n\n            value = self.cri(state).squeeze(1)  # critic network predicts the reward_sum (Q value) of state\n            obj_critic = self.criterion(value, r_sum) / (r_sum.std() + 1e-6)\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n        a_std_log = getattr(self.act, 'a_std_log', torch.zeros(1)).mean()\n        return obj_critic.item(), obj_actor.item(), a_std_log.item()  # logging_tuple\n\n    def get_reward_sum_raw(self, buf_len, buf_reward, buf_mask, buf_value) -> (torch.Tensor, torch.Tensor):\n        buf_r_sum = torch.empty(buf_len, dtype=torch.float32, device=self.device)  # reward sum\n\n        pre_r_sum = 0\n        for i in range(buf_len - 1, -1, -1):\n            buf_r_sum[i] = buf_reward[i] + buf_mask[i] * pre_r_sum\n            pre_r_sum = buf_r_sum[i]\n        buf_adv_v = buf_r_sum - buf_value[:, 0]\n        return buf_r_sum, buf_adv_v\n\n    def get_reward_sum_gae(self, buf_len, ten_reward, ten_mask, ten_value) -> (torch.Tensor, torch.Tensor):\n        buf_r_sum = torch.empty(buf_len, dtype=torch.float32, device=self.device)  # old policy value\n        buf_adv_v = torch.empty(buf_len, dtype=torch.float32, device=self.device)  # advantage value\n\n        pre_r_sum = 0\n        pre_adv_v = 0  # advantage value of previous step\n        ten_bool = torch.not_equal(ten_mask, 0).float()\n        for i in range(buf_len - 1, -1, -1):\n            buf_r_sum[i] = ten_reward[i] + ten_mask[i] * pre_r_sum\n            pre_r_sum = buf_r_sum[i]\n            buf_adv_v[i] = ten_reward[i] + ten_bool[i] * (pre_adv_v - ten_value[i])  # todo need to check\n            pre_adv_v = ten_value[i] + buf_adv_v[i] * self.lambda_gae_adv\n        return buf_r_sum, buf_adv_v\n\n    def splice_trajectory(self, traj_list, last_done_list):\n        for env_i in range(self.env_num):\n            last_done = last_done_list[env_i]\n            traj_temp = traj_list[env_i]\n\n            traj_list[env_i] = self.traj_list[env_i] + traj_temp[:last_done + 1]\n            self.traj_list[env_i] = traj_temp[last_done:]\n        return traj_list\n\n    def convert_trajectory(self, traj_list):\n        for traj in traj_list:\n            temp = list(map(list, zip(*traj)))  # 2D-list transpose\n\n            ten_state = torch.stack(temp[0])\n            ten_reward = torch.as_tensor(temp[1], dtype=torch.float32) * self.reward_scale\n            ten_mask = (1.0 - torch.as_tensor(temp[2], dtype=torch.float32)) * self.gamma\n            ten_action = torch.stack(temp[3])\n            ten_noise = torch.stack(temp[4])\n\n            traj[:] = (ten_state, ten_reward, ten_mask, ten_action, ten_noise)\n        return traj_list\n\n\nclass AgentDiscretePPO(AgentPPO):\n    def __init__(self):\n        AgentPPO.__init__(self)\n        self.ClassAct = ActorDiscretePPO\n\n    def explore_one_env(self, env, target_step):\n        state = self.states[0]\n\n        last_done = 0\n        traj = list()\n        for step_i in range(target_step):\n            ten_states = torch.as_tensor(state, dtype=torch.float32).unsqueeze(0)\n            ten_a_ints, ten_probs = self.select_actions(ten_states)\n            a_int = ten_a_ints[0].numpy()\n            next_s, reward, done, _ = env.step(a_int)  # only different\n\n            traj.append((ten_states, reward, done, ten_a_ints, ten_probs))\n            if done:\n                state = env.reset()\n                last_done = step_i\n            else:\n                state = next_s\n\n        self.states[0] = state\n\n        traj_list = self.splice_trajectory([traj, ], [last_done, ])\n        return self.convert_trajectory(traj_list)\n\n    def explore_vec_env(self, env, target_step):\n        ten_states = self.states\n\n        env_num = len(self.traj_list)\n        traj_list = [list() for _ in range(env_num)]  # [traj_env_0, ..., traj_env_i]\n        last_done_list = [0 for _ in range(env_num)]\n\n        for step_i in range(target_step):\n            ten_a_ints, ten_probs = self.select_actions(ten_states)\n            tem_next_states, ten_rewards, ten_dones = env.step(ten_a_ints.numpy())\n\n            for env_i in range(env_num):\n                traj_list[env_i].append((ten_states[env_i], ten_rewards[env_i], ten_dones[env_i],\n                                         ten_a_ints[env_i], ten_probs[env_i]))\n                if ten_dones[env_i]:\n                    last_done_list[env_i] = step_i\n\n            ten_states = tem_next_states\n\n        self.states = ten_states\n\n        traj_list = self.splice_trajectory(traj_list, last_done_list)\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ...]\n\n\nclass AgentA2C(AgentPPO):  # A2C.2015, PPO.2016\n    def __init__(self):\n        AgentPPO.__init__(self)\n        print('| AgentA2C: A2C or A3C is worse than PPO. We provide AgentA2C code just for teaching.'\n              '| Without TrustRegion, A2C needs special hyper-parameters, such as smaller repeat_times.')\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau):\n        with torch.no_grad():\n            buf_len = buffer[0].shape[0]\n            buf_state, buf_reward, buf_mask, buf_action, buf_noise = [ten.to(self.device) for ten in buffer]\n\n            '''get buf_r_sum, buf_logprob'''\n            bs = 2 ** 10  # set a smaller 'BatchSize' when out of GPU memory.\n            buf_value = [self.cri_target(buf_state[i:i + bs]) for i in range(0, buf_len, bs)]\n            buf_value = torch.cat(buf_value, dim=0)\n            # buf_logprob = self.act.get_old_logprob(buf_action, buf_noise)\n\n            buf_r_sum, buf_adv_v = self.get_reward_sum(buf_len, buf_reward, buf_mask, buf_value)  # detach()\n            buf_adv_v = (buf_adv_v - buf_adv_v.mean()) * (self.lambda_a_value / (buf_adv_v.std() + 1e-5))\n            # buf_adv_v: advantage_value in ReplayBuffer\n            del buf_noise, buffer[:]\n\n        obj_critic = None\n        obj_actor = None\n        update_times = int(buf_len / batch_size * repeat_times)\n        for update_i in range(1, update_times + 1):\n            indices = torch.randint(buf_len, size=(batch_size,), requires_grad=False, device=self.device)\n\n            state = buf_state[indices]\n            r_sum = buf_r_sum[indices]\n            adv_v = buf_adv_v[indices]\n            action = buf_action[indices]\n            # logprob = buf_logprob[indices]\n\n            '''A2C: Advantage function'''\n            new_logprob, obj_entropy = self.act.get_logprob_entropy(state, action)  # it is obj_actor\n            obj_actor = -(adv_v * new_logprob.exp()).mean() + obj_entropy * self.lambda_entropy\n            self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n\n            value = self.cri(state).squeeze(1)  # critic network predicts the reward_sum (Q value) of state\n            obj_critic = self.criterion(value, r_sum) / (r_sum.std() + 1e-6)\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n        a_std_log = getattr(self.act, 'a_std_log', torch.zeros(1)).mean()\n        return obj_critic.item(), obj_actor.item(), a_std_log.item()  # logging_tuple\n\n\nclass AgentDiscreteA2C(AgentA2C):\n    def __init__(self):\n        AgentA2C.__init__(self)\n        self.ClassAct = ActorDiscretePPO\n\n    def explore_one_env(self, env, target_step):\n        state = self.states[0]\n\n        last_done = 0\n        traj = list()\n        for step_i in range(target_step):\n            ten_states = torch.as_tensor(state, dtype=torch.float32).unsqueeze(0)\n            ten_a_ints, ten_probs = self.select_actions(ten_states)\n            a_int = ten_a_ints[0].numpy()\n            next_s, reward, done, _ = env.step(a_int)  # only different\n\n            traj.append((ten_states, reward, done, ten_a_ints, ten_probs))\n            if done:\n                state = env.reset()\n                last_done = step_i\n            else:\n                state = next_s\n\n        self.states[0] = state\n\n        traj_list = self.splice_trajectory([traj, ], [last_done, ])\n        return self.convert_trajectory(traj_list)\n\n    def explore_vec_env(self, env, target_step):\n        ten_states = self.states\n\n        env_num = len(self.traj_list)\n        traj_list = [list() for _ in range(env_num)]  # [traj_env_0, ..., traj_env_i]\n        last_done_list = [0 for _ in range(env_num)]\n\n        for step_i in range(target_step):\n            ten_a_ints, ten_probs = self.select_actions(ten_states)\n            tem_next_states, ten_rewards, ten_dones = env.step(ten_a_ints.numpy())\n\n            for env_i in range(env_num):\n                traj_list[env_i].append((ten_states[env_i], ten_rewards[env_i], ten_dones[env_i],\n                                         ten_a_ints[env_i], ten_probs[env_i]))\n                if ten_dones[env_i]:\n                    last_done_list[env_i] = step_i\n\n            ten_states = tem_next_states\n\n        self.states = ten_states\n\n        traj_list = self.splice_trajectory(traj_list, last_done_list)\n        return self.convert_trajectory(traj_list)  # [traj_env_0, ...]\n\n\nclass AgentStep1AC(AgentBase):\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassAct = ActorBiConv\n        self.ClassCri = CriticBiConv\n        self.if_use_cri_target = False\n        self.if_use_act_target = False\n        self.explore_noise = 2 ** -8\n        self.obj_critic = (-np.log(0.5)) ** 0.5  # for reliable_lambda\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.MSELoss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.MSELoss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n        self.get_obj_critic = self.get_obj_critic_raw\n\n    def select_actions(self, state: torch.Tensor) -> torch.Tensor:\n        action = self.act.get_action(state.to(self.device), self.explore_noise)\n        return action.detach().cpu()\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> (float, float):\n        buffer.update_now_len()\n\n        obj_actor = None\n        update_a = 0\n        for update_c in range(1, int(buffer.now_len / batch_size * repeat_times)):\n            '''objective of critic (loss function of critic)'''\n            obj_critic, state = self.get_obj_critic(buffer, batch_size)\n            self.obj_critic = 0.99 * self.obj_critic + 0.01 * obj_critic.item()  # for reliable_lambda\n            self.optim_update(self.cri_optim, obj_critic, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n            '''objective of actor using reliable_lambda and TTUR (Two Time-scales Update Rule)'''\n            reliable_lambda = np.exp(-self.obj_critic ** 2)  # for reliable_lambda\n            if_update_a = update_a / update_c < 1 / (2 - reliable_lambda)\n            if if_update_a:  # auto TTUR\n                update_a += 1\n\n            obj_actor = -self.cri(state, self.act(state)).mean()  # policy gradient\n            self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n            if self.if_use_act_target:\n                self.soft_update(self.act_target, self.act, soft_update_tau)\n\n        return self.obj_critic, obj_actor.item()\n\n    def get_obj_critic_raw(self, buffer, batch_size):\n        with torch.no_grad():\n            # reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n            q_label, action, state = buffer.sample_batch_one_step(batch_size)\n\n        q_value = self.cri(state, action)\n        obj_critic = self.criterion(q_value, q_label)\n        return obj_critic, state\n\n    def get_obj_critic_per(self, buffer, batch_size):\n        with torch.no_grad():\n            # reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n            q_label, action, state, is_weights = buffer.sample_batch_one_step(batch_size)\n\n        q_value = self.cri(state, action)\n        td_error = self.criterion(q_value, q_label)  # or td_error = (q_value - q_label).abs()\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, q_value\n\n\n'''Actor-Critic Methods (Parameter Sharing)'''\n\n\nclass AgentShareAC(AgentBase):  # IAC (InterAC) waiting for check\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassCri = ShareDPG  # self.Act = None\n\n        self.explore_noise = 0.2  # standard deviation of explore noise\n        self.policy_noise = 0.4  # standard deviation of policy noise\n        self.update_freq = 2 ** 7  # delay update frequency, for hard target update\n        self.avg_loss_c = (-np.log(0.5)) ** 0.5  # old version reliable_lambda\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> tuple:\n        buffer.update_now_len()\n\n        obj_critic = None\n        obj_actor = None\n        reliable_lambda = None\n        k = 1.0 + buffer.now_len / buffer.max_len\n        batch_size_ = int(batch_size * k)\n        for i in range(int(buffer.now_len / batch_size * repeat_times)):\n            with torch.no_grad():\n                reward, mask, action, state, next_state = buffer.sample_batch(batch_size_)\n\n                next_q_label, next_action = self.cri_target.next_q_action(state, next_state, self.policy_noise)\n                q_label = reward + mask * next_q_label\n\n            \"\"\"obj_critic\"\"\"\n            q_eval = self.cri.critic(state, action)\n            obj_critic = self.criterion(q_eval, q_label)\n\n            '''auto reliable lambda'''\n            self.avg_loss_c = 0.995 * self.avg_loss_c + 0.005 * obj_critic.item() / 2  # soft update, twin critics\n            reliable_lambda = np.exp(-self.avg_loss_c ** 2)\n\n            '''actor correction term'''\n            actor_term = self.criterion(self.cri(next_state), next_action)\n\n            if i % repeat_times == 0:\n                '''actor obj'''\n                action_pg = self.cri(state)  # policy gradient\n                obj_actor = -self.cri_target.critic(state, action_pg).mean()  # policy gradient\n                # NOTICE! It is very important to use act_target.critic here instead act.critic\n                # Or you can use act.critic.deepcopy(). Whatever you cannot use act.critic directly.\n\n                obj_united = obj_critic + actor_term * (1 - reliable_lambda) + obj_actor * (reliable_lambda * 0.5)\n            else:\n                obj_united = obj_critic + actor_term * (1 - reliable_lambda)\n\n            \"\"\"united loss\"\"\"\n            self.optim_update(self.cri_optim, obj_united, self.cri.parameters())\n            if i % self.update_freq == self.update_freq and reliable_lambda > 0.1:\n                self.cri_target.load_state_dict(self.cri.state_dict())  # Hard Target Update\n\n        return obj_critic.item(), obj_actor.item(), reliable_lambda\n\n\nclass AgentShareSAC(AgentSAC):  # Integrated Soft Actor-Critic\n    def __init__(self):\n        AgentSAC.__init__(self)\n        self.obj_critic = (-np.log(0.5)) ** 0.5  # for reliable_lambda\n        self.cri_optim = None\n\n        self.target_entropy = None\n        self.alpha_log = None\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        self.device = torch.device(f\"cuda:{gpu_id}\" if torch.cuda.is_available() else \"cpu\")\n        self.alpha_log = torch.tensor((-np.log(action_dim) * np.e,), dtype=torch.float32,\n                                      requires_grad=True, device=self.device)  # trainable parameter\n        self.target_entropy = np.log(action_dim)\n        self.act = self.cri = ShareSPG(net_dim, state_dim, action_dim).to(self.device)\n        self.act_target = self.cri_target = deepcopy(self.act)\n\n        self.cri_optim = torch.optim.Adam(\n            [{'params': self.act.enc_s.parameters(), 'lr': learning_rate * 1.5},\n             {'params': self.act.enc_a.parameters(), },\n             {'params': self.act.net.parameters(), 'lr': learning_rate * 1.5},\n             {'params': self.act.dec_a.parameters(), },\n             {'params': self.act.dec_d.parameters(), },\n             {'params': self.act.dec_q1.parameters(), },\n             {'params': self.act.dec_q2.parameters(), },\n             {'params': (self.alpha_log,)}], lr=learning_rate)\n\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.SmoothL1Loss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.SmoothL1Loss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> tuple:  # 1111\n        buffer.update_now_len()\n\n        obj_actor = None\n        update_a = 0\n        alpha = None\n        for update_c in range(1, int(buffer.now_len / batch_size * repeat_times)):\n            alpha = self.alpha_log.exp()\n\n            '''objective of critic'''\n            obj_critic, state = self.get_obj_critic(buffer, batch_size, alpha)\n            self.obj_critic = 0.995 * self.obj_critic + 0.0025 * obj_critic.item()  # for reliable_lambda\n            reliable_lambda = np.exp(-self.obj_critic ** 2)  # for reliable_lambda\n\n            '''objective of alpha (temperature parameter automatic adjustment)'''\n            a_noise_pg, logprob = self.act.get_action_logprob(state)  # policy gradient\n            obj_alpha = (self.alpha_log * (logprob - self.target_entropy).detach() * reliable_lambda).mean()\n            with torch.no_grad():\n                self.alpha_log[:] = self.alpha_log.clamp(-16, 2).detach()\n\n            '''objective of actor using reliable_lambda and TTUR (Two Time-scales Update Rule)'''\n            if_update_a = update_a / update_c < 1 / (2 - reliable_lambda)\n            if if_update_a:  # auto TTUR\n                update_a += 1\n\n                q_value_pg = torch.min(*self.act_target.get_q1_q2(state, a_noise_pg)).mean()  # twin critics\n                obj_actor = -(q_value_pg + logprob * alpha.detach()).mean()  # policy gradient\n\n                obj_united = obj_critic + obj_alpha + obj_actor * reliable_lambda\n            else:\n                obj_united = obj_critic + obj_alpha\n\n            self.optim_update(self.cri_optim, obj_united, self.cri.parameters())\n            if self.if_use_act_target:\n                self.soft_update(self.act_target, self.act, soft_update_tau)\n\n        return self.obj_critic, obj_actor.item(), alpha.item()\n\n\nclass AgentSharePPO(AgentPPO):\n    def __init__(self):\n        AgentPPO.__init__(self)\n        self.obj_c = (-np.log(0.5)) ** 0.5  # for reliable_lambda\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        self.device = torch.device(f\"cuda:{gpu_id}\" if torch.cuda.is_available() else \"cpu\")\n        if if_per_or_gae:\n            self.get_reward_sum = self.get_reward_sum_gae\n        else:\n            self.get_reward_sum = self.get_reward_sum_raw\n\n        self.act = self.cri = SharePPO(state_dim, action_dim, net_dim).to(self.device)\n\n        self.cri_optim = torch.optim.Adam([\n            {'params': self.act.enc_s.parameters(), 'lr': learning_rate * 0.9},\n            {'params': self.act.dec_a.parameters(), },\n            {'params': self.act.a_std_log, },\n            {'params': self.act.dec_q1.parameters(), },\n            {'params': self.act.dec_q2.parameters(), },\n        ], lr=learning_rate)\n        self.criterion = torch.nn.SmoothL1Loss()\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau):\n        with torch.no_grad():\n            buf_len = buffer[0].shape[0]\n            buf_state, buf_action, buf_noise, buf_reward, buf_mask = [ten.to(self.device) for ten in buffer]\n            # (ten_state, ten_action, ten_noise, ten_reward, ten_mask) = buffer\n\n            '''get buf_r_sum, buf_logprob'''\n            bs = 2 ** 10  # set a smaller 'BatchSize' when out of GPU memory.\n            buf_value = [self.cri_target(buf_state[i:i + bs]) for i in range(0, buf_len, bs)]\n            buf_value = torch.cat(buf_value, dim=0)\n            buf_logprob = self.act.get_old_logprob(buf_action, buf_noise)\n\n            buf_r_sum, buf_adv_v = self.get_reward_sum(buf_len, buf_reward, buf_mask, buf_value)  # detach()\n            buf_adv_v = (buf_adv_v - buf_adv_v.mean()) * (self.lambda_a_value / torch.std(buf_adv_v) + 1e-5)\n            # buf_adv_v: buffer data of adv_v value\n            del buf_noise, buffer[:]\n\n        obj_critic = obj_actor = None\n        for _ in range(int(buf_len / batch_size * repeat_times)):\n            indices = torch.randint(buf_len, size=(batch_size,), requires_grad=False, device=self.device)\n\n            state = buf_state[indices]\n            r_sum = buf_r_sum[indices]\n            adv_v = buf_adv_v[indices]  # advantage value\n            action = buf_action[indices]\n            logprob = buf_logprob[indices]\n\n            '''PPO: Surrogate objective of Trust Region'''\n            new_logprob, obj_entropy = self.act.get_logprob_entropy(state, action)  # it is obj_actor\n            ratio = (new_logprob - logprob.detach()).exp()\n            surrogate1 = adv_v * ratio\n            surrogate2 = adv_v * ratio.clamp(1 - self.ratio_clip, 1 + self.ratio_clip)\n            obj_surrogate = -torch.min(surrogate1, surrogate2).mean()\n            obj_actor = obj_surrogate + obj_entropy * self.lambda_entropy\n\n            value = self.cri(state).squeeze(1)  # critic network predicts the reward_sum (Q value) of state\n            obj_critic = self.criterion(value, r_sum) / (r_sum.std() + 1e-6)\n\n            obj_united = obj_critic + obj_actor\n            self.optim_update(self.cri_optim, obj_united, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n        a_std_log = getattr(self.act, 'a_std_log', torch.zeros(1)).mean()\n        return obj_critic.item(), obj_actor.item(), a_std_log.item()  # logging_tuple\n\n\nclass AgentShareA2C(AgentSharePPO):\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau):\n        with torch.no_grad():\n            buf_len = buffer[0].shape[0]\n            buf_state, buf_action, buf_noise, buf_reward, buf_mask = [ten.to(self.device) for ten in buffer]\n            # (ten_state, ten_action, ten_noise, ten_reward, ten_mask) = buffer\n\n            '''get buf_r_sum, buf_logprob'''\n            bs = 2 ** 10  # set a smaller 'BatchSize' when out of GPU memory.\n            buf_value = [self.cri_target(buf_state[i:i + bs]) for i in range(0, buf_len, bs)]\n            buf_value = torch.cat(buf_value, dim=0)\n            # buf_logprob = self.act.get_old_logprob(buf_action, buf_noise)\n\n            buf_r_sum, buf_adv_v = self.get_reward_sum(buf_len, buf_reward, buf_mask, buf_value)  # detach()\n            buf_adv_v = (buf_adv_v - buf_adv_v.mean()) * (self.lambda_a_value / torch.std(buf_adv_v) + 1e-5)\n            # buf_adv_v: buffer data of adv_v value\n            del buf_noise, buffer[:]\n\n        obj_critic = obj_actor = None\n        for _ in range(int(buf_len / batch_size * repeat_times)):\n            indices = torch.randint(buf_len, size=(batch_size,), requires_grad=False, device=self.device)\n\n            state = buf_state[indices]\n            r_sum = buf_r_sum[indices]\n            adv_v = buf_adv_v[indices]  # advantage value\n            action = buf_action[indices]\n            # logprob = buf_logprob[indices]\n\n            '''A2C: Advantage function'''\n            new_logprob, obj_entropy = self.act.get_logprob_entropy(state, action)  # it is obj_actor\n            obj_actor = -(adv_v * new_logprob.exp()).mean() + obj_entropy * self.lambda_entropy\n            self.optim_update(self.act_optim, obj_actor, self.act.parameters())\n\n            value = self.cri(state).squeeze(1)  # critic network predicts the reward_sum (Q value) of state\n            obj_critic = self.criterion(value, r_sum) / (r_sum.std() + 1e-6)\n\n            obj_united = obj_critic + obj_actor\n            self.optim_update(self.cri_optim, obj_united, self.cri.parameters())\n            if self.if_use_cri_target:\n                self.soft_update(self.cri_target, self.cri, soft_update_tau)\n\n        a_std_log = getattr(self.act, 'a_std_log', torch.zeros(1)).mean()\n        return obj_critic.item(), obj_actor.item(), a_std_log.item()  # logging_tuple\n\n\nclass AgentShareStep1AC(AgentBase):\n    def __init__(self):\n        AgentBase.__init__(self)\n        self.ClassAct = ShareBiConv\n        self.ClassCri = self.ClassAct\n        self.if_use_cri_target = True\n        self.if_use_act_target = True\n        self.obj_critic = (-np.log(0.5)) ** 0.5  # for reliable_lambda\n\n    def init(self, net_dim=256, state_dim=8, action_dim=2, reward_scale=1.0, gamma=0.99,\n             learning_rate=1e-4, if_per_or_gae=False, env_num=1, gpu_id=0):\n        AgentBase.init(self, net_dim=net_dim, state_dim=state_dim, action_dim=action_dim,\n                       reward_scale=reward_scale, gamma=gamma,\n                       learning_rate=learning_rate, if_per_or_gae=if_per_or_gae,\n                       env_num=env_num, gpu_id=gpu_id, )\n        self.act = self.cri = self.ClassAct(net_dim, state_dim, action_dim).to(self.device)\n        if self.if_use_act_target:\n            self.act_target = self.cri_target = deepcopy(self.act)\n        else:\n            self.act_target = self.cri_target = self.act\n\n        self.cri_optim = torch.optim.Adam(\n            [{'params': self.act.enc_s.parameters(), 'lr': learning_rate * 1.5},\n             {'params': self.act.enc_a.parameters(), },\n             {'params': self.act.mid_n.parameters(), 'lr': learning_rate * 1.5},\n             {'params': self.act.dec_a.parameters(), },\n             {'params': self.act.dec_q.parameters(), },\n             ], lr=learning_rate)\n        self.act_optim = self.cri_optim\n\n        if if_per_or_gae:  # if_use_per\n            self.criterion = torch.nn.MSELoss(reduction='none')\n            self.get_obj_critic = self.get_obj_critic_per\n        else:\n            self.criterion = torch.nn.MSELoss(reduction='mean')\n            self.get_obj_critic = self.get_obj_critic_raw\n\n    def select_actions(self, state: torch.Tensor) -> torch.Tensor:\n        action = self.act.get_action(state.to(self.device), self.explore_noise)\n        return action.detach().cpu()\n\n    def update_net(self, buffer, batch_size, repeat_times, soft_update_tau) -> (float, float):\n        buffer.update_now_len()\n\n        obj_critic = None\n        obj_actor = None\n        update_a = 0\n        for update_c in range(1, int(buffer.now_len / batch_size * repeat_times)):\n            '''objective of critic'''\n            obj_critic, state = self.get_obj_critic(buffer, batch_size)\n            self.obj_critic = 0.995 * self.obj_critic + 0.005 * obj_critic.item()  # for reliable_lambda\n            reliable_lambda = np.exp(-self.obj_critic ** 2)  # for reliable_lambda\n\n            '''objective of actor using reliable_lambda and TTUR (Two Time-scales Update Rule)'''\n            if_update_a = update_a / update_c < 1 / (2 - reliable_lambda)\n            if if_update_a:  # auto TTUR\n                update_a += 1\n\n                action_pg = self.act(state)  # policy gradient\n                obj_actor = -self.act_target.critic(state, action_pg).mean()\n\n                obj_united = obj_critic + obj_actor * reliable_lambda\n            else:\n                obj_united = obj_critic\n\n            self.optim_update(self.act_optim, obj_united, self.act.parameters())\n            if self.if_use_act_target:\n                self.soft_update(self.act_target, self.act, soft_update_tau)\n\n        return obj_critic.item(), obj_actor.item()\n\n    def get_obj_critic_raw(self, buffer, batch_size):\n        with torch.no_grad():\n            # reward, mask, action, state, next_s = buffer.sample_batch(batch_size)\n            q_label, action, state = buffer.sample_batch_one_step(batch_size)\n\n        q_value = self.act.critic(state, action)\n        obj_critic = self.criterion(q_value, q_label)\n        return obj_critic, state\n\n    def get_obj_critic_per(self, buffer, batch_size):\n        with torch.no_grad():\n            # reward, mask, action, state, next_s, is_weights = buffer.sample_batch(batch_size)\n            q_label, action, state, is_weights = buffer.sample_batch_one_step(batch_size)\n\n        q_value = self.act.critic(state, action)\n        td_error = self.criterion(q_value, q_label)  # or td_error = (q_value - q_label).abs()\n        obj_critic = (td_error * is_weights).mean()\n\n        buffer.td_error_update(td_error.detach())\n        return obj_critic, q_value\n\n\n'''Utils'''\n\n\nclass OrnsteinUhlenbeckNoise:  # NOT suggest to use it\n    def __init__(self, size, theta=0.15, sigma=0.3, ou_noise=0.0, dt=1e-2):\n        \"\"\"The noise of Ornstein-Uhlenbeck Process\n\n        Source: https://github.com/slowbull/DDPG/blob/master/src/explorationnoise.py\n        It makes Zero-mean Gaussian Noise more stable.\n        It helps agent explore better in a inertial system.\n        Don't abuse OU Process. OU process has too much hyper-parameters and over fine-tuning make no sense.\n\n        :int size: the size of noise, noise.shape==(-1, action_dim)\n        :float theta: related to the not independent of OU-noise\n        :float sigma: related to action noise std\n        :float ou_noise: initialize OU-noise\n        :float dt: derivative\n        \"\"\"\n        self.theta = theta\n        self.sigma = sigma\n        self.ou_noise = ou_noise\n        self.dt = dt\n        self.size = size\n\n    def __call__(self) -> float:\n        \"\"\"output a OU-noise\n\n        :return array ou_noise: a noise generated by Ornstein-Uhlenbeck Process\n        \"\"\"\n        noise = self.sigma * np.sqrt(self.dt) * rd.normal(size=self.size)\n        self.ou_noise -= self.theta * self.ou_noise * self.dt + noise\n        return self.ou_noise\n"
  },
  {
    "path": "elegantrl/demo.py",
    "content": "from elegantrl.agent import *\nfrom elegantrl.env import build_env\nfrom elegantrl.run import Arguments, train_and_evaluate, train_and_evaluate_mp\n\n\"\"\"[ElegantRL.2021.10.10](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\n'''train'''\n\n\ndef demo_continuous_action_off_policy():  # [ElegantRL.2021.10.10]\n    env_name = ['Pendulum-v1', 'LunarLanderContinuous-v2',\n                'BipedalWalker-v3', 'BipedalWalkerHardcore-v3'][0]\n    agent_class = [AgentModSAC, AgentSAC,\n                   AgentTD3, AgentDDPG][0]\n    args = Arguments(env=build_env(env_name), agent=agent_class())\n\n    if env_name in {'Pendulum-v1', 'Pendulum-v0'}:\n        \"\"\"EpisodeReturn: (-1800) -1000 ~ -200 (-50)\n        Step 2e5,  Reward -200,  UsedTime 200s ModSAC\n        \"\"\"\n        # args = Arguments(env=build_env(env_name), agent=agent_class())  # One way to build env\n        # args = Arguments(env=env_name, agent=agent_class())  # Another way to build env\n        # args.env_num = 1\n        # args.max_step = 200\n        # args.state_dim = 3\n        # args.action_dim = 1\n        # args.if_discrete = False\n        # args.target_return = -200\n\n        args.gamma = 0.97\n        args.net_dim = 2 ** 7\n        args.worker_num = 2\n        args.reward_scale = 2 ** -2\n        args.target_step = 200 * 4  # max_step = 200\n    if env_name in {'LunarLanderContinuous-v2', 'LunarLanderContinuous-v1'}:\n        \"\"\"EpisodeReturn: (-800) -200 ~ 200 (302)\n        Step 4e5,  Reward 200,  UsedTime  900s, TD3\n        Step 5e5,  Reward 200,  UsedTime 1500s, ModSAC\n        \"\"\"\n        args.eval_times1 = 2 ** 4\n        args.eval_times2 = 2 ** 6\n\n        args.target_step = args.env.max_step\n    if env_name in {'BipedalWalker-v3', 'BipedalWalker-v2'}:\n        \"\"\"EpisodeReturn: (-200) -140 ~ 300 (341)\n        Step 08e5,  Reward 300,  UsedTime 1800s TD3\n        Step 11e5,  Reward 329,  UsedTime 6000s TD3\n        Step  4e5,  Reward 300,  UsedTime 2000s ModSAC\n        Step  8e5,  Reward 330,  UsedTime 5000s ModSAC\n        \"\"\"\n        args.eval_times1 = 2 ** 3\n        args.eval_times2 = 2 ** 5\n\n        args.gamma = 0.98\n        args.target_step = args.env.max_step\n    if env_name in {'BipedalWalkerHardcore-v3', 'BipedalWalkerHardcore-v2'}:\n        '''EpisodeReturn: (-200) -150 ~ 300 (334)\n        TotalStep (2e6) 4e6\n        \n        Step 12e5,  Reward  20\n        Step 18e5,  Reward 135\n        Step 25e5,  Reward 202\n        Step 43e5,  Reward 309, UsedTime 68ks,  ModSAC, worker_num=4\n        \n        Step 14e5,  Reward  15\n        Step 18e5,  Reward 117\n        Step 28e5,  Reward 212\n        Step 45e5,  Reward 306,  UsedTime 67ks,  ModSAC, worker_num=4\n        \n        Step  8e5,  Reward  13\n        Step 16e5,  Reward 136\n        Step 23e5,  Reward 219\n        Step 38e5,  Reward 302\n        UsedTime 99ks  ModSAC, worker_num=2\n        '''\n        args.gamma = 0.98\n        args.net_dim = 2 ** 8\n        args.max_memo = 2 ** 22\n        args.break_step = int(80e6)\n        args.batch_size = args.net_dim * 2\n        args.repeat_times = 1.5\n        args.learning_rate = 2 ** -15\n\n        args.eval_gap = 2 ** 9\n        args.eval_times1 = 2 ** 2\n        args.eval_times2 = 2 ** 5\n\n        args.worker_num = 4\n        args.target_step = args.env.max_step * 1\n    # args.learner_gpus = (0, )  # single GPU\n    # args.learner_gpus = (0, 1)  # multiple GPUs\n    # train_and_evaluate(args)  # single process\n    train_and_evaluate_mp(args)  # multiple process\n\n\ndef demo_continuous_action_on_policy():  # [ElegantRL.2021.10.13]\n    env_name = ['Pendulum-v1', 'LunarLanderContinuous-v2',\n                'BipedalWalker-v3', 'BipedalWalkerHardcore-v3'][ENV_ID]\n    agent_class = [AgentPPO, AgentA2C][0]\n    args = Arguments(env=build_env(env_name), agent=agent_class())\n    # args.if_per_or_gae = True\n\n    if env_name in {'Pendulum-v1', 'Pendulum-v0'}:\n        \"\"\"\n        Step 45e4,  Reward -138,  UsedTime 373s PPO\n        Step 40e4,  Reward -200,  UsedTime 400s PPO\n        Step 46e4,  Reward -213,  UsedTime 300s PPO\n        \"\"\"\n        # args = Arguments(env=build_env(env_name), agent=agent_class())  # One way to build env\n        # args = Arguments(env=env_name, agent=agent_class())  # Another way to build env\n        # args.env_num = 1\n        # args.max_step = 200\n        # args.state_dim = 3\n        # args.action_dim = 1\n        # args.if_discrete = False\n        # args.target_return = -200\n\n        args.gamma = 0.97\n        args.net_dim = 2 ** 8\n        args.worker_num = 2\n        args.reward_scale = 2 ** -2\n        args.target_step = 200 * 16  # max_step = 200\n\n        args.eval_gap = 2 ** 5\n    if env_name in {'LunarLanderContinuous-v2', 'LunarLanderContinuous-v1'}:\n        \"\"\"\n        Step  9e5,  Reward 210,  UsedTime 1127s PPO\n        Step 13e5,  Reward 223,  UsedTime 1416s PPO\n        Step 15e5,  Reward 250,  UsedTime 1648s PPO\n        Step 19e5,  Reward 201,  UsedTime 1880s PPO\n        Step 43e5,  Reward 224,  UsedTime 3738s PPO\n        Step 14e5,  Reward 213,  UsedTime 1654s PPO GAE\n        Step 12e5,  Reward 216,  UsedTime 1710s PPO GAE\n        \"\"\"\n        args.eval_times1 = 2 ** 4\n        args.eval_times2 = 2 ** 6\n\n        args.target_step = args.env.max_step * 8\n    if env_name in {'BipedalWalker-v3', 'BipedalWalker-v2'}:\n        \"\"\"\n        Step 51e5,  Reward 300,  UsedTime 2827s PPO\n        Step 78e5,  Reward 304,  UsedTime 4747s PPO\n        Step 61e5,  Reward 300,  UsedTime 3977s PPO GAE\n        Step 95e5,  Reward 291,  UsedTime 6193s PPO GAE\n        \"\"\"\n        args.eval_times1 = 2 ** 3\n        args.eval_times2 = 2 ** 5\n\n        args.gamma = 0.98\n        args.target_step = args.env.max_step * 16\n    if env_name in {'BipedalWalkerHardcore-v3', 'BipedalWalkerHardcore-v2'}:\n        \"\"\"\n        Step 57e5,  Reward 295,  UsedTime 17ks PPO\n        Step 70e5,  Reward 300,  UsedTime 21ks PPO\n        \"\"\"\n        args.gamma = 0.98\n        args.net_dim = 2 ** 8\n        args.max_memo = 2 ** 22\n        args.batch_size = args.net_dim * 4\n        args.repeat_times = 2 ** 4\n        args.learning_rate = 2 ** -16\n\n        args.eval_gap = 2 ** 8\n        args.eval_times1 = 2 ** 2\n        args.eval_times2 = 2 ** 5\n        # args.break_step = int(80e5)\n\n        args.worker_num = 4\n        args.target_step = args.env.max_step * 16\n\n    args.learner_gpus = (GPU_ID,)  # single GPU\n    # args.learner_gpus = (0, 1)  # multiple GPUs\n    # train_and_evaluate(args)  # single process\n    train_and_evaluate_mp(args)  # multiple process\n\n\ndef demo_discrete_action_off_policy():  # [ElegantRL.2021.10.10]\n    env_name = ['CartPole-v0', 'LunarLander-v2',\n                'SlimeVolley-v0', ][0]\n    agent_class = [AgentDoubleDQN, AgentDQN][0]\n    args = Arguments(env=build_env(env_name), agent=agent_class())\n    args.agent.if_use_dueling = True  # DuelingDQN\n\n    if env_name in {'CartPole-v0', }:\n        \"Step 1e5,  Reward 200,  UsedTime 40s, AgentD3QN\"\n        args.target_return = 195\n\n        args.reward_scale = 2 ** -1\n        args.target_step = args.env.max_step * 4\n\n        args.eval_gap = 2 ** 5\n    if env_name in {'LunarLander-v2', }:\n        \"Step 29e4,  Reward 222,  UsedTime 5811s D3QN\"\n        args.max_memo = 2 ** 19\n\n        args.reward_scale = 2 ** -1\n        args.target_step = args.env.max_step\n\n    # args.learner_gpus = (0, )  # single GPU\n    # args.learner_gpus = (0, 1)  # multiple GPUs\n    # train_and_evaluate(args)  # single process\n    train_and_evaluate_mp(args)  # multiple process\n\n\ndef demo_discrete_action_on_policy():  # [ElegantRL.2021.10.12]\n    env_name = ['CartPole-v0', 'LunarLander-v2',\n                'SlimeVolley-v0', ][0]\n    agent_class = [AgentDiscretePPO, AgentDiscreteA2C][0]\n    args = Arguments(env=build_env(env_name), agent=agent_class())\n\n    if env_name in {'CartPole-v0', }:\n        \"Step 1e5,  Reward 200,  UsedTime 40s, DiscretePPO\"\n        args.target_return = 195\n\n        args.reward_scale = 2 ** -1\n        args.target_step = args.env.max_step * 8\n\n        args.eval_gap = 2 ** 5\n        train_and_evaluate(args)  # single process\n    if env_name in {'LunarLander-v2', }:\n        '''\n        Step 70e5,  Reward 110,  UsedTime 9961s  DiscretePPO, repeat_times = 2 ** 4\n        Step 10e5,  Reward 218,  UsedTime 1336s  DiscretePPO, repeat_times = 2 ** 5\n        '''\n        args.reward_scale = 2 ** -1\n        args.repeat_times = 2 ** 5\n\n        args.worker_num = 2\n        args.target_step = args.env.max_step * 4\n        train_and_evaluate_mp(args)  # multiple process\n\n\ndef demo_pixel_level_on_policy():  # 2021-09-07\n    env_name = ['CarRacingFix', ][ENV_ID]\n    agent_class = [AgentPPO, AgentSharePPO, AgentShareA2C][0]\n    # args = Arguments(env=build_env(env_name, if_print=True), agent=agent_class())\n    args = Arguments(env=env_name, agent=agent_class())\n\n    if env_name == 'CarRacingFix':\n        args.state_dim = (112, 112, 6)\n        args.action_dim = 6\n        args.max_step = 512\n        args.if_discrete = False\n        args.target_return = 950\n\n        \"Step 12e5,  Reward 300,  UsedTime 10ks PPO\"\n        \"Step 20e5,  Reward 700,  UsedTime 25ks PPO\"\n        \"Step 40e5,  Reward 800,  UsedTime 50ks PPO\"\n        args.agent.ratio_clip = 0.5\n        args.agent.explore_rate = 0.75\n        args.agent.if_use_cri_target = True\n\n        args.gamma = 0.98\n        args.net_dim = 2 ** 8\n        args.repeat_times = 2 ** 4\n        args.learning_rate = 2 ** -17\n        args.soft_update_tau = 2 ** -11\n        args.batch_size = args.net_dim * 4\n        args.if_per_or_gae = True\n        args.agent.lambda_gae_adv = 0.96\n\n        args.eval_gap = 2 ** 9\n        args.eval_times1 = 2 ** 2\n        args.eval_times1 = 2 ** 4\n        args.if_allow_break = False\n        args.break_step = int(2 ** 22)\n\n        # args.worker_num = 6  # about 96 cores\n        args.worker_num = 2  # about 32 cores\n        args.target_step = int(args.max_step * 12 / args.worker_num)\n\n    args.learner_gpus = (GPU_ID,)  # single GPU\n    args.eval_gpu_id = GPU_ID\n    train_and_evaluate_mp(args)\n\n\ndef demo_isaac_gym_on_policy():\n    env_name = ['IsaacVecEnvAnt', 'IsaacVecEnvHumanoid'][0]\n    args = Arguments(env=env_name, agent=AgentPPO())\n    args.learner_gpus = (0,)\n    args.eval_gpu_id = 1\n\n    if env_name in {'IsaacVecEnvAnt', 'IsaacOneEnvAnt'}:\n        '''\n        Step  21e7, Reward  8350, UsedTime  35ks\n        Step 484e7, Reward 16206, UsedTime 960ks  PPO\n        Step  20e7, Reward  9196, UsedTime  35ks\n        Step 471e7, Reward 15021, UsedTime 960ks  PPO, if_use_cri_target = True\n        Step  23e7, Reward  7111, UsedTime  12ks  PPO\n        Step  22e7, Reward  5412, UsedTime  12ks  PPO, max_step * 2\n        '''\n        args.eval_env = 'IsaacOneEnvAnt'\n        args.env = f'IsaacVecEnvAnt'\n        args.env_num = 4096\n        args.max_step = 1000\n        args.state_dim = 60\n        args.action_dim = 8\n        args.if_discrete = False\n        args.target_return = 8000\n\n        args.agent.lambda_entropy = 0.05\n        args.agent.lambda_gae_adv = 0.97\n        args.agent.if_use_cri_target = False\n\n        args.if_per_or_gae = True\n        args.learning_rate = 2 ** -14\n\n        args.net_dim = int(2 ** 8 * 1.5)\n        args.batch_size = args.net_dim * 2 ** 4\n        args.target_step = args.max_step * 1\n        args.repeat_times = 2 ** 4\n        args.reward_scale = 2 ** -2  # (-50) 0 ~ 2500 (3340)\n\n        args.break_step = int(8e14)\n        args.if_allow_break = False\n        args.eval_times1 = 2 ** 1\n        args.eval_times1 = 2 ** 3\n\n    if env_name in {'IsaacVecEnvHumanoid', 'IsaacOneEnvHumanoid'}:\n        '''\n        Step 126e7, Reward  8021\n        Step 216e7, Reward  9517\n        Step 283e7, Reward  9998\n        Step 438e7, Reward 10749, UsedTime 960ks  PPO, env_num = 4096\n        Step  71e7, Reward  7800\n        Step 215e7, Reward  9794, UsedTime 465ks  PPO, env_num = 2048\n        Step   1e7, Reward   117\n        Step  16e7, Reward   538\n        Step  21e7, Reward  3044\n        Step  38e7, Reward  5015\n        Step  65e7, Reward  6010\n        Step  72e7, Reward  6257, UsedTime 129ks  PPO, if_use_cri_target = True\n        Step  77e7, Reward  5399, UsedTime 143ks  PPO\n        Step  86e7, Reward  5822, UsedTime 157ks  PPO, max_step * 2\n        '''\n        args.eval_env = 'IsaacOneEnvHumanoid'\n        args.env = f'IsaacVecEnvHumanoid'\n        args.env_num = 4096\n        args.max_step = 1000\n        args.state_dim = 108\n        args.action_dim = 21\n        args.if_discrete = False\n        args.target_return = 7000\n\n        args.agent.lambda_entropy = 0.05\n        args.agent.lambda_gae_adv = 0.97\n        args.agent.if_use_cri_target = True\n\n        args.net_dim = int(2 ** 8 * 1.5)\n        args.batch_size = args.net_dim * 2 ** 5\n        args.target_step = args.max_step * 1\n        args.repeat_times = 2 ** 4\n        args.reward_scale = 2 ** -2  # (-50) 0 ~ 2500 (3340)\n        args.if_per_or_gae = True\n        args.learning_rate = 2 ** -15\n\n        args.break_step = int(8e14)\n        args.if_allow_break = False\n        args.eval_times1 = 2 ** 1\n        args.eval_times1 = 2 ** 3\n\n    args.worker_num = 1\n    args.workers_gpus = args.learner_gpus\n    train_and_evaluate_mp(args)  # train_and_evaluate(args)\n\n\ndef demo_pybullet_off_policy():\n    env_name = ['AntBulletEnv-v0', 'HumanoidBulletEnv-v0',\n                'ReacherBulletEnv-v0', 'MinitaurBulletEnv-v0', ][0]\n    agent_class = [AgentModSAC, AgentTD3,\n                   AgentShareSAC, AgentShareAC][0]\n    args = Arguments(env=build_env(env_name, if_print=True), agent=agent_class())\n\n    if env_name == 'AntBulletEnv-v0':\n        \"\"\"EpisodeReturn (-50) 0 ~ 2500 (3340)\n        TotalStep (8e5) 10e5\n        0  4.29e+06 2446.47 |  431.34   82.1    999     0 |    0.08   1.65-275.32   0.26 | UsedTime   14393 |\n        0  1.41e+07 3499.37 | 3317.42    5.9    999     0 |    0.24   0.06 -49.94   0.03 | UsedTime   70020 |\n        0  3.54e+06 2875.30 |  888.67    4.7    999     0 |    0.19   0.11 -69.10   0.05 | UsedTime   54701 |\n        0  2.00e+07 2960.38 |  698.58   42.5    999     0 |    0.08   0.05 -39.44   0.03 | UsedTime   53545 |\n        \"\"\"\n        args.agent.if_use_act_target = False\n\n        args.net_dim = 2 ** 9\n        args.max_memo = 2 ** 22\n        args.repeat_times = 2 ** 1\n        args.reward_scale = 2 ** -2\n        args.batch_size = args.net_dim * 2\n        args.target_step = args.env.max_step * 2\n\n        args.eval_gap = 2 ** 8\n        args.eval_times1 = 2 ** 1\n        args.eval_times2 = 2 ** 4\n        args.break_step = int(8e7)\n        args.if_allow_break = False\n    if env_name == 'HumanoidBulletEnv-v0':\n        \"\"\"\n        0  1.50e+07 2571.46 |   53.63   66.8    128    58 |    0.04   0.96-153.29   0.06 | UsedTime    74470 |\n        0  1.51e+07 2822.93 |   -1.51   27.1     99    36 |    0.03   0.58 -96.48   0.04 | UsedTime    74480 |\n        0  1.09e+06   66.96 |   58.69    8.2     58    12 |    0.22   0.28 -22.92   0.00\n        0  3.01e+06  129.69 |  101.39   40.6     96    33 |    0.14   0.28 -20.16   0.03\n        0  5.02e+06  263.13 |  208.69  122.6    195    59 |    0.11   0.29 -32.71   0.03\n        0  6.03e+06  791.89 |  527.79  282.7    360   144 |    0.21   0.26 -36.51   0.03\n        0  8.00e+06 2432.21 |   35.78   49.3    113    54 |   -0.08   1.30-168.28   0.05\n        0  8.13e+06 2432.21 |  907.28  644.9    606   374 |    0.11   0.72-134.01   0.05\n        0  8.29e+06 2432.21 | 2341.30   39.4    999     0 |    0.41   0.41 -96.96   0.03\n        0  1.09e+07 2936.10 | 2936.10   24.8    999     0 |    0.60   0.13 -68.74   0.02\n        0  2.83e+07 2968.08 | 2737.18   15.9    999     0 |    0.57   0.21 -81.07   0.03 | UsedTime    74512 |\n        \"\"\"\n        args.net_dim = 2 ** 9\n        args.reward_scale = 2 ** -2\n        args.batch_size = args.net_dim * 2\n        args.target_step = args.env.max_step * 2\n\n        args.break_step = int(8e7)\n        args.if_allow_break = False\n    if env_name == 'ReacherBulletEnv-v0':\n        \"\"\"EpisodeReturn (-37) 0 ~ 18 (29) \n        TotalStep: (4e4) 5e4  # low eval_times\n        \"\"\"\n        args.explore_rate = 0.9\n        args.learning_rate = 2 ** -15\n\n        args.gamma = 0.99\n        args.net_dim = 2 ** 8\n        args.break_step = int(4e7)\n        args.batch_size = args.net_dim * 2\n        args.repeat_times = 2 ** 0\n        args.reward_scale = 2 ** 2\n\n        args.target_step = args.env.max_step * 4\n\n        args.eval_gap = 2 ** 8\n        args.eval_times1 = 2 ** 3\n        args.eval_times2 = 2 ** 5\n    if env_name == 'MinitaurBulletEnv-v0':\n        \"\"\"EpisodeReturn (-2) 0 ~ 16 (20)\n        TotalStep (2e6) 4e6\n        0  1.00e+06    0.46 |    0.24    0.0     98    37 |    0.06   0.06  -7.64   0.02\n        0  1.26e+06    1.36 |    1.36    0.7    731   398 |    0.10   0.08 -10.40   0.02\n        0  1.30e+06    3.18 |    3.18    0.8    999     0 |    0.13   0.08 -10.99   0.02\n        0  2.00e+06    3.18 |    0.04    0.0     28     0 |    0.13   0.09 -16.02   0.02\n        0  4.04e+06    7.11 |    6.68    0.6    999     0 |    0.17   0.08 -19.67   0.02\n        0  5.72e+06    9.79 |    9.28    0.1    999     0 |    0.22   0.03 -23.89   0.01\n        0  6.01e+06   10.69 |   10.09    0.8    999     0 |    0.22   0.03 -24.98   0.01\n        \"\"\"\n\n        args.net_dim = 2 ** 9\n        args.reward_scale = 2 ** 5  # (-2) 0 ~ 16 (20)\n        args.learning_rate = 2 ** -16\n        args.batch_size = args.net_dim * 2\n        args.target_step = args.env.max_step * 2\n\n        args.eval_gap = 2 ** 8\n        args.eval_times1 = 2 ** 2\n        args.eval_times2 = 2 ** 4\n        args.break_step = int(8e7)\n        args.if_allow_break = False\n\n    args.worker_num = 4\n    args.learner_gpus = (0,)\n    train_and_evaluate_mp(args)\n\n\ndef demo_pybullet_on_policy():\n    env_name = ['AntBulletEnv-v0', 'HumanoidBulletEnv-v0',\n                'ReacherBulletEnv-v0', 'MinitaurBulletEnv-v0', ][0]\n    agent_class = [AgentPPO, AgentSharePPO][0]\n    args = Arguments(env=build_env(env_name, if_print=True), agent=agent_class())\n\n    if env_name == 'AntBulletEnv-v0':\n        \"\"\"\n        0  1.98e+07 3322.16 | 3322.16   48.7    999     0 |    0.78   0.48  -0.01  -0.80 | UsedTime 12380 PPO\n        0  1.99e+07 3104.05 | 3071.44   14.5    999     0 |    0.74   0.47   0.01  -0.79 | UsedTime 12976\n        0  1.98e+07 3246.79 | 3245.98   25.3    999     0 |    0.75   0.48  -0.02  -0.81 | UsedTime 13170\n        0  1.97e+07 3345.48 | 3345.48   29.0    999     0 |    0.80   0.49  -0.01  -0.81 | UsedTime 8169  PPO 2GPU\n        0  1.98e+07 3028.69 | 3004.67   10.3    999     0 |    0.72   0.48   0.05  -0.82 | UsedTime 8734  PPO 2GPU\n        \"\"\"\n        args.agent.lambda_entropy = 0.05\n        args.agent.lambda_gae_adv = 0.97\n\n        args.net_dim = 2 ** 9\n        args.reward_scale = 2 ** -2  # (-50) 0 ~ 2500 (3340)\n        args.repeat_times = 2 ** 3\n        args.learning_rate = 2 ** -15\n        args.if_per_or_gae = True\n        args.batch_size = args.net_dim * 2 ** 3\n        args.target_step = args.env.max_step * 2\n\n        args.break_step = int(8e7)\n        args.if_allow_break = False\n    if env_name == 'HumanoidBulletEnv-v0':\n        \"\"\"\n        0  2.00e+07 2049.87 | 1905.57  686.5    883   308 |    0.93   0.42  -0.02  -1.14 | UsedTime 15292\n        0  3.99e+07 2977.80 | 2611.64  979.6    879   317 |    1.29   0.46  -0.01  -1.16 | UsedTime 19685\n        0  7.99e+07 3047.88 | 3041.95   41.1    999     0 |    1.37   0.46  -0.04  -1.15 | UsedTime 38693\n        \"\"\"\n        args.agent.lambda_entropy = 0.02\n        args.agent.lambda_gae_adv = 0.97\n\n        args.net_dim = 2 ** 9\n        args.batch_size = args.net_dim * 2 ** 3\n        args.target_step = args.env.max_step * 4\n        args.reward_scale = 2 ** -1\n        args.repeat_times = 2 ** 3\n        args.if_per_or_gae = True\n        args.learning_rate = 2 ** -14\n\n        args.break_step = int(8e7)\n        args.if_allow_break = False\n    if env_name == 'ReacherBulletEnv-v0':\n        '''eval_times = 4\n        Step 1e5, Return: 18,  UsedTime  3ks, PPO eval_times =< 4\n        Step 1e6, Return: 18,  UsedTime 30ks, PPO eval_times =< 4\n\n        eval_times = 64\n        The probability of the following results is only 25%.      \n        0  5.00e+05    3.23 |    3.23   12.6    149     0 |   -0.03   0.64  -0.03  -0.51\n        0  3.55e+06    7.69 |    7.69   10.3    149     0 |   -0.19   0.56  -0.04  -0.59\n        0  5.07e+06    9.72 |    7.89    7.6    149     0 |    0.27   0.24   0.02  -0.71\n        0  6.85e+06   11.89 |    6.52   12.3    149     0 |    0.22   0.18  -0.06  -0.85\n        0  7.87e+06   18.59 |   18.59    9.4    149     0 |    0.39   0.18  -0.01  -0.94\n        0  1.01e+06   -2.19 |   -7.30   10.9    149     0 |   -0.05   0.70   0.03  -0.52\n        0  4.05e+06    9.29 |   -1.86   15.0    149     0 |    0.08   0.28  -0.05  -0.65\n        0  4.82e+06   11.12 |   11.12   12.4    149     0 |    0.13   0.26  -0.07  -0.71\n        0  6.07e+06   15.66 |   15.66   11.1    149     0 |    0.16   0.14   0.00  -0.81\n        0  9.46e+06   18.58 |   18.58    8.2    149     0 |    0.19   0.10  -0.06  -1.09\n        0  2.20e+06    3.63 |    3.26    7.3    149     0 |   -0.05   0.43  -0.01  -0.55\n        0  4.19e+06    5.24 |    4.60    9.2    149     0 |    0.04   0.24   0.00  -0.66\n        0  6.16e+06    5.24 |    4.80    9.2    149     0 |    0.03   0.15  -0.00  -0.81\n        0  7.40e+06   12.99 |   12.99   13.2    149     0 |    0.07   0.19  -0.03  -0.91\n        0  1.01e+07   18.09 |   18.09    7.6    149     0 |    0.18   0.16  -0.00  -1.09\n        0  1.06e+06    3.25 |    3.25    7.6    149     0 |   -0.21   0.72  -0.05  -0.51 \n        0  2.13e+06    3.56 |    0.94    6.1    149     0 |    0.08   0.54   0.02  -0.56\n        0  5.85e+06   11.61 |   11.61   11.0    149     0 |    0.13   0.22  -0.05  -0.78\n        0  9.04e+06   14.07 |   13.57   10.5    149     0 |    0.27   0.17   0.01  -1.05\n        0  1.01e+07   16.16 |   16.16   10.8    149     0 |    0.29   0.19  -0.08  -1.13\n        0  1.14e+07   21.33 |   21.33    7.8    149     0 |    0.21   0.24  -0.06  -1.21\n        0  1.02e+07    4.06 |   -3.27   11.1    149     0 |   -0.01   0.34  -0.03  -0.88\n        0  2.00e+07    9.23 |   -1.57    7.6    149     0 |    0.06   0.12  -0.08  -1.26\n        0  3.00e+07   11.78 |   11.78    7.6    149     0 |    0.05   0.08  -0.04  -1.40\n        0  4.01e+07   13.20 |   12.35    7.8    149     0 |    0.14   0.08   0.01  -1.42\n        0  5.02e+07   14.13 |   11.53    6.5    149     0 |    0.10   0.03   0.03  -1.42\n        0  6.00e+07   15.75 |    6.33    6.1    149     0 |    0.18   0.13  -0.03  -1.43\n        0  7.29e+07   20.71 |   20.71    8.1    149     0 |    0.16   0.03  -0.00  -1.41\n        '''\n        args.agent.ratio_clip = 0.5\n        args.agent.lambda_gae_adv = 0.97\n        args.agent.if_use_cri_target = True\n\n        args.gamma = 0.99\n        args.reward_scale = 2 ** 1\n        args.if_per_or_gae = True\n        args.break_step = int(8e7)\n        args.explore_rate = 0.9\n        args.learning_rate = 2 ** -16\n\n        args.net_dim = 2 ** 8\n        args.batch_size = args.net_dim * 4\n        args.repeat_times = 2 ** 4\n        args.target_step = args.env.max_step * 4\n\n        args.eval_gap = 2 ** 8\n        args.eval_times1 = 2 ** 3\n        args.eval_times2 = 2 ** 5\n    if env_name == 'MinitaurBulletEnv-v0':\n        \"\"\"EpisodeReturn (-2) 0 ~ 16 (PPO 34)\n        TotalStep (PPO 3e5) 5e5\n        0  5.91e+05   10.59 |   10.59    3.9    727   282 |    0.27   0.69  -0.03  -0.52\n        0  1.15e+06   14.91 |   12.48    2.2    860   158 |    0.40   0.65  -0.02  -0.55\n        0  2.27e+06   25.38 |   22.54    4.7    968    54 |    0.75   0.61  -0.06  -0.60\n        0  4.13e+06   29.05 |   28.33    1.0    999     0 |    0.89   0.51  -0.07  -0.65\n        0  8.07e+06   32.66 |   32.17    0.9    999     0 |    0.97   0.45  -0.06  -0.73\n        0  1.10e+07   32.66 |   32.33    1.3    999     0 |    0.94   0.40  -0.07  -0.80 | UsedTime   20208 |\n\n        0  5.91e+05    5.48 |    5.48    1.5    781   219 |    0.24   0.66  -0.04  -0.52\n        0  1.01e+06   12.35 |    9.77    2.9    754   253 |    0.34   0.74  -0.05  -0.54\n        0  2.10e+06   12.35 |   12.21    4.8    588   285 |    0.60   0.65  -0.01  -0.58\n        0  4.09e+06   28.31 |   22.88   12.6    776   385 |    0.88   0.51  -0.03  -0.66\n        0  8.03e+06   30.96 |   28.32    6.8    905   163 |    0.93   0.52  -0.05  -0.76\n        0  1.09e+07   32.07 |   31.29    0.9    999     0 |    0.95   0.47  -0.07  -0.82 | UsedTime   20238 |\n        \"\"\"\n        args.agent.lambda_entropy = 0.05\n        args.agent.lambda_gae_adv = 0.97\n\n        args.net_dim = 2 ** 9\n        args.reward_scale = 2 ** 5  # (-2) 0 ~ 16 (20)\n        args.repeat_times = 2 ** 4\n        args.batch_size = args.net_dim * 4\n        args.target_step = args.env.max_step * 2\n        args.if_per_or_gae = True\n        args.learning_rate = 2 ** -15\n\n        args.break_step = int(8e7)\n        args.if_allow_break = False\n\n        args.eval_gap = 2 ** 8\n        args.eval_times1 = 2 ** 2\n        args.eval_times2 = 2 ** 4\n    args.worker_num = 4\n    args.learner_gpus = (0,)\n    train_and_evaluate_mp(args)\n\n\ndef demo_step1_off_policy():\n    env_name = ['DownLinkEnv-v0', 'DownLinkEnv-v1'][ENV_ID]\n    agent_class = [AgentStep1AC, AgentShareStep1AC][1]\n    args = Arguments(env=build_env(env_name), agent=agent_class())\n    args.random_seed += GPU_ID\n\n    args.net_dim = 2 ** 8\n    args.batch_size = int(args.net_dim * 2 ** -1)\n\n    args.max_memo = 2 ** 17\n    args.target_step = int(args.max_memo * 2 ** -4)\n    args.repeat_times = 0.75\n    args.reward_scale = 2 ** 2\n    args.agent.exploration_noise = 2 ** -5\n\n    args.eval_gpu_id = GPU_ID\n    args.eval_gap = 2 ** 9\n    args.eval_times1 = 2 ** 0\n    args.eval_times2 = 2 ** 1\n\n    args.learner_gpus = (GPU_ID,)\n\n    if_use_single_process = 0\n    if if_use_single_process:\n        train_and_evaluate(args, )\n    else:\n        args.worker_num = 4\n        train_and_evaluate_mp(args, )\n\n\n'''train and watch'''\n\nif __name__ == '__main__':\n    GPU_ID = 0  # eval(sys.argv[1])\n    ENV_ID = 0  # eval(sys.argv[2])\n    # demo_continuous_action_off_policy()\n    # demo_continuous_action_on_policy()\n    # demo_discrete_action_off_policy()\n    # demo_discrete_action_on_policy()\n    # demo_pixel_level_on_policy()\n    # demo_pybullet_off_policy()\n    # demo_pybullet_on_policy()\n    # demo_step1_off_policy()\n    pass\n"
  },
  {
    "path": "elegantrl/env.py",
    "content": "import os\nimport gym  # not necessary\nimport numpy as np\nfrom copy import deepcopy\n\n\"\"\"[ElegantRL.2021.11.08](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\ngym.logger.set_level(40)  # Block warning\n\n\"\"\"register your custom env here.\"\"\"\n\n\ndef build_env(env, if_print=False, env_num=1, device_id=None, args=None, ):\n    if isinstance(env, str):\n        env_name = env\n    else:\n        env_name = env.env_name\n    env = None\n\n    '''OpenAI gym classical control'''\n    if env_name in {'CartPole-v0', 'CartPole-v1'}:\n        env = gym.make(env_name)\n        env = PreprocessEnv(env, if_print=if_print)\n    elif env_name in {'Pendulum-v1', 'Pendulum-v0'}:\n        env = PendulumEnv(env_name)\n\n    '''OpenAI gym Box2D'''\n    # pip3 install Box2D==2.3.8 or 2.3.10\n    if env_name in {'LunarLander-v2', 'LunarLanderContinuous-v2',\n                    'BipedalWalker-v3', 'BipedalWalkerHardcore-v3', }:\n        env = gym.make(env_name)\n        env = PreprocessEnv(env, if_print=if_print)  # todo plan to be elegant\n    elif env_name == 'CarRacingFix':  # Box2D\n        from envs.CarRacingFix import CarRacingFix\n        env = CarRacingFix()\n        if if_print:  # todo plan to be elegant\n            print(f\"\\n| env_name:  {env.env_name}, action if_discrete: {env.if_discrete}\"\n                  f\"\\n| state_dim: {env.state_dim}, action_dim: {env.action_dim}\"\n                  f\"\\n| max_step:  {env.max_step:4}, target_return: {env.target_return}\")\n\n    '''PyBullet gym'''\n    if env_name in {'ReacherBulletEnv-v0', 'AntBulletEnv-v0',\n                    'HumanoidBulletEnv-v0', 'MinitaurBulletEnv-v0'}:\n        import pybullet_envs\n        dir(pybullet_envs)\n        env = gym.make(env_name)\n        env = PreprocessEnv(env, if_print=if_print)\n\n    '''NVIDIA Isaac gym'''\n    if env_name.find('Isaac') >= 0:\n        from envs.IsaacGym import PreprocessIsaacOneEnv, PreprocessIsaacVecEnv\n\n        env_last_name = env_name[11:]\n        assert env_last_name in {'Ant', 'Humanoid'}\n\n        if env_name.find('IsaacOneEnv') >= 0:\n            env = PreprocessIsaacOneEnv(env_last_name, if_print=if_print, env_num=1, device_id=device_id)\n        elif env_name.find('IsaacVecEnv') >= 0:\n            env = PreprocessIsaacVecEnv(env_last_name, if_print=if_print, env_num=env_num, device_id=device_id)\n        else:\n            raise ValueError(f'| build_env_from_env_name: need register: {env_name}')\n        return env\n\n    # elif env_name[:10] in {'StockDOW5', 'StockDOW30', 'StockNAS74', 'StockNAS89'}:\n    #     if_eval = env_name.find('eval') != -1\n    #     gamma = 0.993\n    #     from elegantrl.envs.FinRL.StockTradingEnv import StockEnvDOW5, StockEnvDOW30, StockEnvNAS74, StockEnvNAS89\n    #     env_class = {'StockDOW5': StockEnvDOW5,\n    #                  'StockDOW30': StockEnvDOW30,\n    #                  'StockNAS74': StockEnvNAS74,\n    #                  'StockNAS89': StockEnvNAS89,\n    #                  }[env_name[:10]]\n    #     env = env_class(if_eval=if_eval, gamma=gamma)\n\n    if env_name in {'DownLinkEnv-v0', 'DownLinkEnv-v1'}:\n        if env_name == 'DownLinkEnv-v0':\n            from envs.DownLink import DownLinkEnv\n            env = DownLinkEnv(bs_n=4, ur_n=8, power=1.0, csi_noise_var=0.1, csi_clip=3.0)\n        elif env_name == 'DownLinkEnv-v1':\n            from envs.DownLink import DownLinkEnv1\n            env = DownLinkEnv1(bs_n=4, ur_n=8, power=1.0, csi_noise_var=0.1, csi_clip=3.0,\n                               env_cwd=getattr(args, 'cwd', '.'))\n        else:\n            raise ValueError(\"| env.py, build_env(), DownLinkEnv\")\n            \n    if env_name[:6]=='wt4rl-':\n        env = gym.make(env_name)\n\n    if env is None:\n        try:\n            env = deepcopy(env)\n            print(f\"| build_env(): Warning. NOT suggest to use `deepcopy(env)`. env_name: {env_name}\")\n        except Exception as error:\n            print(f\"| build_env(): Error. {error}\")\n            raise ValueError(\"| build_env(): register your custom env in this function.\")\n    return env\n\n\ndef build_eval_env(eval_env, env, env_num, eval_gpu_id, args, ):\n    if isinstance(eval_env, str):\n        eval_env = build_env(env=eval_env, if_print=False, env_num=env_num, device_id=eval_gpu_id, args=args, )\n    elif eval_env is None:\n        eval_env = build_env(env=env, if_print=False, env_num=env_num, device_id=eval_gpu_id, args=args, )\n    else:\n        assert hasattr(eval_env, 'reset')\n        assert hasattr(eval_env, 'step')\n    return eval_env\n\n\n\"\"\"a demo tell you how to build a custom env\"\"\"\n\n\nclass PendulumEnv:  # [ElegantRL.2021.10.10]\n    def __init__(self, env_name):\n        assert env_name in {'Pendulum-v1', 'Pendulum-v0'}\n        try:\n            env_name = 'Pendulum-v0'  # gym.__version__ == 0.17.0\n            self.env = gym.make(env_name)\n        except KeyError:\n            env_name = 'Pendulum-v1'  # gym.__version__ == 0.21.0\n            self.env = gym.make(env_name)\n        self.env_name = env_name  # assert isinstance(env_name, str)\n\n        # from elegantrl.env import get_gym_env_info\n        # get_gym_env_info(env, if_print=True)  # use this function to see the env information\n        self.env_num = 1  # the env number of VectorEnv is greater than 1\n        self.max_step = 200  # the max step of each episode\n        self.state_dim = 3  # feature number of state\n        self.action_dim = 1  # feature number of action\n        self.if_discrete = False  # discrete action or continuous action\n        self.target_return = -200  # episode return is between (-1600, 0)\n\n    def reset(self):\n        return self.env.reset()\n\n    def step(self, action):\n        # PendulumEnv set its action space as (-2, +2). It is bad.  # https://github.com/openai/gym/wiki/Pendulum-v0\n        # I suggest you to set action space as (-1, +1) when you design your own env.\n        return self.env.step(action * 2)  # state, reward, done, info_dict\n\n    def render(self):\n        self.env.render()\n\n\n\"\"\"Utils\"\"\"\n\n\nclass PreprocessEnv(gym.Wrapper):  # environment wrapper\n    def __init__(self, env, if_print=True, if_norm=False):\n        \"\"\"Preprocess a standard OpenAI gym environment for training.\n\n        `object env` a standard OpenAI gym environment, it has env.reset() and env.step()\n        `bool if_print` print the information of environment. Such as env_name, state_dim ...\n        `object data_type` convert state (sometimes float64) to data_type (float32).\n        \"\"\"\n        self.env = gym.make(env) if isinstance(env, str) else env\n        super().__init__(self.env)\n\n        (self.env_name, self.state_dim, self.action_dim, self.max_step,\n         self.if_discrete, self.target_return) = get_gym_env_info(self.env, if_print)\n        self.env.env_num = getattr(self.env, 'env_num', 1)\n        self.env_num = 1\n\n        if if_norm:\n            state_avg, state_std = get_avg_std__for_state_norm(self.env_name)\n            self.neg_state_avg = -state_avg\n            self.div_state_std = 1 / (state_std + 1e-4)\n\n            self.reset = self.reset_norm\n            self.step = self.step_norm\n        else:\n            self.reset = self.reset_type\n            self.step = self.step_type\n\n    def reset_type(self):\n        return self.env.reset()\n\n    def step_type(self, action) -> (np.ndarray, float, bool, dict):\n        return self.env.step(action)\n\n    def reset_norm(self):\n        \"\"\" convert the data type of state from float64 to float32\n        do normalization on state\n\n        return `array state` state.shape==(state_dim, )\n        \"\"\"\n        state = self.env.reset()\n        return (state + self.neg_state_avg) * self.div_state_std\n\n    def step_norm(self, action) -> (np.ndarray, float, bool, dict):\n        \"\"\"convert the data type of state from float64 to float32,\n        do normalization on state\n\n        return `array state`  state.shape==(state_dim, )\n        return `float reward` reward of one step\n        return `bool done` the terminal of an training episode\n        return `dict info` the information save in a dict. OpenAI gym standard. Send a `None` is OK\n        \"\"\"\n        state, reward, done, info = self.env.step(action)\n        state = (state + self.neg_state_avg) * self.div_state_std\n        return state, reward, done, info\n\n\ndef get_gym_env_info(env, if_print) -> (str, int, int, int, bool, float):  # [ElegantRL.2021.10.10]\n    \"\"\"get information of a standard OpenAI gym env.\n\n    The DRL algorithm AgentXXX need these env information for building networks and training.\n\n    `object env` a standard OpenAI gym environment, it has env.reset() and env.step()\n    `bool if_print` print the information of environment. Such as env_name, state_dim ...\n    return `env_name` the environment name, such as XxxXxx-v0\n    return `state_dim` the dimension of state\n    return `action_dim` the dimension of continuous action; Or the number of discrete action\n    return `max_step` the steps in an episode. (from env.reset to done). It breaks an episode when it reach max_step\n    return `if_discrete` Is this env a discrete action space?\n    return `target_return` the target episode return, if agent reach this score, then it pass this game (env).\n    \"\"\"\n\n    if isinstance(env, gym.Env):\n        env_name = getattr(env, 'env_name', None)\n        env_name = env.unwrapped.spec.id if env_name is None else env_name\n\n        state_shape = env.observation_space.shape\n        state_dim = state_shape[0] if len(state_shape) == 1 else state_shape  # sometimes state_dim is a list\n\n        target_return = getattr(env, 'target_return', None)\n        target_return_default = getattr(env.spec, 'reward_threshold', None)\n        if target_return is None:\n            target_return = target_return_default\n        if target_return is None:\n            target_return = 2 ** 16\n\n        max_step = getattr(env, 'max_step', None)\n        max_step_default = getattr(env, '_max_episode_steps', None)\n        if max_step is None:\n            max_step = max_step_default\n        if max_step is None:\n            max_step = 2 ** 10\n\n        if_discrete = isinstance(env.action_space, gym.spaces.Discrete)\n        if if_discrete:  # make sure it is discrete action space\n            action_dim = env.action_space.bs_n\n        elif isinstance(env.action_space, gym.spaces.Box):  # make sure it is continuous action space\n            action_dim = env.action_space.shape[0]\n            assert not any(env.action_space.high - 1)\n            assert not any(env.action_space.low + 1)\n        else:\n            raise RuntimeError('\\n| Error in get_gym_env_info()'\n                               '\\n  Please set these value manually: if_discrete=bool, action_dim=int.'\n                               '\\n  And keep action_space in (-1, 1).')\n    else:\n        env_name = env.env_name\n        state_dim = env.state_dim\n        action_dim = env.action_dim\n        max_step = env.max_step\n        if_discrete = env.if_discrete\n        target_return = env.target_return\n\n    if if_print:\n        print(f\"\\n| env_name:  {env_name}, action if_discrete: {if_discrete}\"\n              f\"\\n| state_dim: {state_dim:4}, action_dim: {action_dim}\"\n              f\"\\n| max_step:  {max_step:4}, target_return: {target_return}\")\n    return env_name, state_dim, action_dim, max_step, if_discrete, target_return\n\n\ndef get_avg_std__for_state_norm(env_name) -> (np.ndarray, np.ndarray):\n    \"\"\"return the state normalization data: neg_avg and div_std\n\n    ReplayBuffer.print_state_norm() will print `neg_avg` and `div_std`\n    You can save these array to here. And PreprocessEnv will load them automatically.\n    eg. `state = (state + self.neg_state_avg) * self.div_state_std` in `PreprocessEnv.step_norm()`\n    neg_avg = -states.mean()\n    div_std = 1/(states.std()+1e-5) or 6/(states.max()-states.min())\n\n    `str env_name` the name of environment that helps to find neg_avg and div_std\n    return `array avg` neg_avg.shape=(state_dim)\n    return `array std` div_std.shape=(state_dim)\n    \"\"\"\n    avg = 0\n    std = 1\n    if env_name == 'LunarLanderContinuous-v2':\n        avg = np.array([1.65470898e-02, -1.29684399e-01, 4.26883133e-03, -3.42124557e-02,\n                        -7.39076972e-03, -7.67103031e-04, 1.12640885e+00, 1.12409466e+00])\n        std = np.array([0.15094465, 0.29366297, 0.23490797, 0.25931464, 0.21603736,\n                        0.25886878, 0.277233, 0.27771219])\n    elif env_name == \"BipedalWalker-v3\":\n        avg = np.array([1.42211734e-01, -2.74547996e-03, 1.65104509e-01, -1.33418152e-02,\n                        -2.43243194e-01, -1.73886203e-02, 4.24114229e-02, -6.57800099e-02,\n                        4.53460692e-01, 6.08022244e-01, -8.64884810e-04, -2.08789053e-01,\n                        -2.92092949e-02, 5.04791247e-01, 3.33571745e-01, 3.37325723e-01,\n                        3.49106580e-01, 3.70363115e-01, 4.04074671e-01, 4.55838055e-01,\n                        5.36685407e-01, 6.70771701e-01, 8.80356865e-01, 9.97987386e-01])\n        std = np.array([0.84419678, 0.06317835, 0.16532085, 0.09356959, 0.486594,\n                        0.55477525, 0.44076614, 0.85030824, 0.29159821, 0.48093035,\n                        0.50323634, 0.48110776, 0.69684234, 0.29161077, 0.06962932,\n                        0.0705558, 0.07322677, 0.07793258, 0.08624322, 0.09846895,\n                        0.11752805, 0.14116005, 0.13839757, 0.07760469])\n    elif env_name == 'ReacherBulletEnv-v0':\n        avg = np.array([0.03149641, 0.0485873, -0.04949671, -0.06938662, -0.14157104,\n                        0.02433294, -0.09097818, 0.4405931, 0.10299437], dtype=np.float32)\n        std = np.array([0.12277275, 0.1347579, 0.14567468, 0.14747661, 0.51311225,\n                        0.5199606, 0.2710207, 0.48395795, 0.40876198], dtype=np.float32)\n    elif env_name == 'AntBulletEnv-v0':\n        avg = np.array([-1.4400886e-01, -4.5074993e-01, 8.5741436e-01, 4.4249415e-01,\n                        -3.1593361e-01, -3.4174921e-03, -6.1666980e-02, -4.3752361e-03,\n                        -8.9226037e-02, 2.5108769e-03, -4.8667483e-02, 7.4835382e-03,\n                        3.6160579e-01, 2.6877613e-03, 4.7474738e-02, -5.0628246e-03,\n                        -2.5761038e-01, 5.9789192e-04, -2.1119279e-01, -6.6801407e-03,\n                        2.5196713e-01, 1.6556121e-03, 1.0365561e-01, 1.0219718e-02,\n                        5.8209229e-01, 7.7563477e-01, 4.8815918e-01, 4.2498779e-01],\n                       dtype=np.float32)\n        std = np.array([0.04128463, 0.19463477, 0.15422264, 0.16463493, 0.16640785,\n                        0.08266512, 0.10606721, 0.07636797, 0.7229637, 0.52585346,\n                        0.42947173, 0.20228386, 0.44787514, 0.33257666, 0.6440182,\n                        0.38659114, 0.6644085, 0.5352245, 0.45194066, 0.20750992,\n                        0.4599643, 0.3846344, 0.651452, 0.39733195, 0.49320385,\n                        0.41713253, 0.49984455, 0.4943505], dtype=np.float32)\n    elif env_name == 'HumanoidBulletEnv-v0':\n        avg = np.array([-1.25880212e-01, -8.51390958e-01, 7.07488894e-01, -5.72232604e-01,\n                        -8.76260102e-01, -4.07587215e-02, 7.27005303e-04, 1.23370838e+00,\n                        -3.68912554e+00, -4.75829793e-03, -7.42472351e-01, -8.94218776e-03,\n                        1.29535913e+00, 3.16205365e-03, 9.13809776e-01, -6.42679911e-03,\n                        8.90435696e-01, -7.92571157e-03, 6.54826105e-01, 1.82383414e-02,\n                        1.20868635e+00, 2.90832808e-03, -9.96598601e-03, -1.87555347e-02,\n                        1.66691601e+00, 7.45300390e-03, -5.63859344e-01, 5.48619963e-03,\n                        1.33900166e+00, 1.05895223e-02, -8.30249667e-01, 1.57017610e-03,\n                        1.92912612e-02, 1.55787319e-02, -1.19833803e+00, -8.22103582e-03,\n                        -6.57119334e-01, -2.40323972e-02, -1.05282271e+00, -1.41856335e-02,\n                        8.53593826e-01, -1.73063378e-03, 5.46878874e-01, 5.43514848e-01],\n                       dtype=np.float32)\n        std = np.array([0.08138401, 0.41358876, 0.33958328, 0.17817754, 0.17003846,\n                        0.15247536, 0.690917, 0.481272, 0.40543965, 0.6078898,\n                        0.46960834, 0.4825346, 0.38099176, 0.5156369, 0.6534775,\n                        0.45825616, 0.38340876, 0.89671516, 0.14449312, 0.47643778,\n                        0.21150663, 0.56597894, 0.56706554, 0.49014297, 0.30507362,\n                        0.6868296, 0.25598812, 0.52973163, 0.14948095, 0.49912784,\n                        0.42137524, 0.42925757, 0.39722264, 0.54846555, 0.5816031,\n                        1.139402, 0.29807225, 0.27311933, 0.34721208, 0.38530213,\n                        0.4897849, 1.0748593, 0.30166605, 0.30824476], dtype=np.float32)\n    elif env_name == 'MinitaurBulletEnv-v0':  # need check\n        avg = np.array([0.90172989, 1.54730119, 1.24560906, 1.97365306, 1.9413892,\n                        1.03866835, 1.69646277, 1.18655352, -0.45842347, 0.17845232,\n                        0.38784456, 0.58572877, 0.91414561, -0.45410697, 0.7591031,\n                        -0.07008998, 3.43842258, 0.61032482, 0.86689961, -0.33910894,\n                        0.47030415, 4.5623528, -2.39108079, 3.03559422, -0.36328256,\n                        -0.20753499, -0.47758384, 0.86756409])\n        std = np.array([0.34192648, 0.51169916, 0.39370621, 0.55568461, 0.46910769,\n                        0.28387504, 0.51807949, 0.37723445, 13.16686185, 17.51240024,\n                        14.80264211, 16.60461412, 15.72930229, 11.38926597, 15.40598346,\n                        13.03124941, 2.47718145, 2.55088804, 2.35964651, 2.51025567,\n                        2.66379017, 2.37224904, 2.55892521, 2.41716885, 0.07529733,\n                        0.05903034, 0.1314812, 0.0221248])\n    return avg, std\n\n\ndef demo_get_video_to_watch_gym_render():\n    import cv2  # pip3 install opencv-python\n    # import gym  # pip3 install gym==0.17 pyglet==1.5.0  # env.render() bug in gym==0.18, pyglet==1.6\n    import torch\n\n    \"\"\"init env\"\"\"\n    env = build_env(env='CarRacingFix')\n\n    '''init agent'''\n    # agent = None   # means use random action\n    from elegantrl.agent import AgentPPO\n    agent = AgentPPO()  # means use the policy network which saved in cwd\n    agent_cwd = '/mnt/sdb1/Yonv/code/ElegantRL/AgentPPO_CarRacingFix_3'\n    net_dim = 2 ** 8\n    state_dim = env.state_dim\n    action_dim = env.action_dim\n    os.environ['CUDA_VISIBLE_DEVICES'] = '1'\n\n    agent.init(net_dim, state_dim, action_dim)\n    agent.save_or_load_agent(cwd=agent_cwd, if_save=False)\n    device = agent.device\n\n    '''initialize evaluete and env.render()'''\n    save_frame_dir = ''  # means don't save video, just open the env.render()\n    # save_frame_dir = 'frames'  # means save video in this directory\n    if save_frame_dir:\n        os.makedirs(save_frame_dir, exist_ok=True)\n\n    state = env.reset()\n    episode_return = 0\n    step = 0\n    for i in range(2 ** 10):\n        print(i) if i % 128 == 0 else None\n        for j in range(1):\n            if agent is None:\n                action = env.action_space.sample()\n            else:\n                s_tensor = torch.as_tensor((state,), dtype=torch.float32, device=device)\n                a_tensor = agent.act(s_tensor)\n                action = a_tensor.detach().cpu().numpy()[0]  # if use 'with torch.no_grad()', then '.detach()' not need.\n            next_state, reward, done, _ = env.step(action)\n\n            episode_return += reward\n            step += 1\n\n            if done:\n                print(f'\\t'\n                      f'TotalStep {i:>6}, epiStep {step:6.0f}, '\n                      f'Reward_T {reward:8.3f}, epiReward {episode_return:8.3f}')\n                state = env.reset()\n                episode_return = 0\n                step = 0\n            else:\n                state = next_state\n\n        if save_frame_dir:\n            frame = env.render('rgb_array')\n            cv2.imwrite(f'{save_frame_dir}/{i:06}.png', frame)\n            cv2.imshow('OpenCV Window', frame)\n            cv2.waitKey(1)\n        else:\n            env.render()\n    env.close()\n\n    '''convert frames png/jpg to video mp4/avi using ffmpeg'''\n    if save_frame_dir:\n        frame_shape = cv2.imread(f'{save_frame_dir}/{3:06}.png').shape\n        print(f\"frame_shape: {frame_shape}\")\n\n        save_video = 'gym_render.mp4'\n        os.system(f\"| Convert frames to video using ffmpeg. Save in {save_video}\")\n        os.system(f'ffmpeg -r 60 -f image2 -s {frame_shape[0]}x{frame_shape[1]} '\n                  f'-i ./{save_frame_dir}/%06d.png '\n                  f'-crf 25 -vb 20M -pix_fmt yuv420p {save_video}')\n\n\ndef train_save_eval_watch():\n    # from elegantrl.env import build_env\n    from elegantrl.run import Arguments, train_and_evaluate\n    from elegantrl.agent import AgentDoubleDQN\n\n    env = build_env('CartPole-v0')\n    agent = AgentDoubleDQN(if_dueling=True)\n    cwd = 'demo_CartPole_D3QN'\n\n    print('train and save')\n    args = Arguments(env=env, agent=agent)\n    args.eval_gap = 2 ** 5\n    args.target_return = 195\n    train_and_evaluate(args)  # single process\n\n    print('evaluate and watch')\n    agent.init(args.net_dim, args.state_dim, args.action_dim, gpu_id=0)\n    agent.save_or_load_agent(cwd=cwd, if_save=False)\n    state = env.reset()\n    for i in range(2 ** 10):\n        action = agent.select_action(state)\n        next_state, reward, done, _ = env.step(action)\n        state = env.reset() if done else next_state\n        env.render()\n"
  },
  {
    "path": "elegantrl/evaluator.py",
    "content": "import os\nimport time\nimport torch\nimport numpy as np\n\n\"\"\"[ElegantRL.2021.11.10](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\n\nclass Evaluator:  # [ElegantRL.2021.10.13]\n    def __init__(self, cwd, agent_id, eval_env, eval_gap, eval_times1, eval_times2, target_return, if_overwrite):\n        self.recorder = list()  # total_step, r_avg, r_std, obj_c, ...\n        self.recorder_path = f'{cwd}/recorder.npy'\n\n        self.cwd = cwd\n        self.agent_id = agent_id\n        self.eval_env = eval_env\n        self.eval_gap = eval_gap\n        self.eval_times1 = eval_times1\n        self.eval_times2 = eval_times2\n        self.if_overwrite = if_overwrite\n        self.target_return = target_return\n\n        self.r_max = -np.inf\n        self.eval_time = 0\n        self.used_time = 0\n        self.total_step = 0\n        self.start_time = time.time()\n        print(f\"{'#' * 80}\\n\"\n              f\"{'ID':<3}{'Step':>8}{'maxR':>8} |\"\n              f\"{'avgR':>8}{'stdR':>7}{'avgS':>7}{'stdS':>6} |\"\n              f\"{'expR':>8}{'objC':>7}{'etc.':>7}\")\n\n    def evaluate_and_save(self, act, steps, r_exp, log_tuple) -> (bool, bool):  # 2021-09-09\n        self.total_step += steps  # update total training steps\n\n        if time.time() - self.eval_time < self.eval_gap:\n            if_reach_goal = False\n            if_save = False\n        else:\n            self.eval_time = time.time()\n\n            '''evaluate first time'''\n            rewards_steps_list = [get_episode_return_and_step(self.eval_env, act)\n                                  for _ in range(self.eval_times1)]\n            r_avg, r_std, s_avg, s_std = self.get_r_avg_std_s_avg_std(rewards_steps_list)\n\n            '''evaluate second time'''\n            if r_avg > self.r_max:  # evaluate actor twice to save CPU Usage and keep precision\n                rewards_steps_list += [get_episode_return_and_step(self.eval_env, act)\n                                       for _ in range(self.eval_times2 - self.eval_times1)]\n                r_avg, r_std, s_avg, s_std = self.get_r_avg_std_s_avg_std(rewards_steps_list)\n\n            '''save the policy network'''\n            if_save = r_avg > self.r_max\n            if if_save:  # save checkpoint with highest episode return\n                self.r_max = r_avg  # update max reward (episode return)\n\n                act_name = 'actor' if self.if_overwrite else f'actor.{self.r_max:08.2f}'\n                act_path = f\"{self.cwd}/{act_name}.pth\"\n                torch.save(act.state_dict(), act_path)  # save policy network in *.pth\n\n                print(f\"{self.agent_id:<3}{self.total_step:8.2e}{self.r_max:8.2f} |\")  # save policy and print\n\n            self.recorder.append((self.total_step, r_avg, r_std, r_exp, *log_tuple))  # update recorder\n\n            '''print some information to Terminal'''\n            if_reach_goal = bool(self.r_max > self.target_return)  # check if_reach_goal\n            if if_reach_goal and self.used_time is None:\n                self.used_time = int(time.time() - self.start_time)\n                print(f\"{'ID':<3}{'Step':>8}{'TargetR':>8} |\"\n                      f\"{'avgR':>8}{'stdR':>7}{'avgS':>7}{'stdS':>6} |\"\n                      f\"{'UsedTime':>8}  ########\\n\"\n                      f\"{self.agent_id:<3}{self.total_step:8.2e}{self.target_return:8.2f} |\"\n                      f\"{r_avg:8.2f}{r_std:7.1f}{s_avg:7.0f}{s_std:6.0f} |\"\n                      f\"{self.used_time:>8}  ########\")\n\n            print(f\"{self.agent_id:<3}{self.total_step:8.2e}{self.r_max:8.2f} |\"\n                  f\"{r_avg:8.2f}{r_std:7.1f}{s_avg:7.0f}{s_std:6.0f} |\"\n                  f\"{r_exp:8.2f}{''.join(f'{n:7.2f}' for n in log_tuple)}\")\n            self.draw_plot()\n\n            if hasattr(self.eval_env, 'curriculum_learning_for_evaluator'):\n                self.eval_env.curriculum_learning_for_evaluator(r_avg)\n        return if_reach_goal, if_save\n\n    @staticmethod\n    def get_r_avg_std_s_avg_std(rewards_steps_list):\n        rewards_steps_ary = np.array(rewards_steps_list, dtype=np.float32)\n        r_avg, s_avg = rewards_steps_ary.mean(axis=0)  # average of episode return and episode step\n        r_std, s_std = rewards_steps_ary.std(axis=0)  # standard dev. of episode return and episode step\n        return r_avg, r_std, s_avg, s_std\n\n    def save_or_load_recoder(self, if_save):\n        if if_save:\n            np.save(self.recorder_path, self.recorder)\n        elif os.path.exists(self.recorder_path):\n            recorder = np.load(self.recorder_path)\n            self.recorder = [tuple(i) for i in recorder]  # convert numpy to list\n            self.total_step = self.recorder[-1][0]\n\n    def draw_plot(self):\n        if len(self.recorder) == 0:\n            print(\"| save_npy_draw_plot() WARNNING: len(self.recorder)==0\")\n            return None\n\n        np.save(self.recorder_path, self.recorder)\n\n        '''draw plot and save as png'''\n        train_time = int(time.time() - self.start_time)\n        total_step = int(self.recorder[-1][0])\n        save_title = f\"step_time_maxR_{int(total_step)}_{int(train_time)}_{self.r_max:.3f}\"\n\n        save_learning_curve(self.recorder, self.cwd, save_title)\n\n\ndef get_episode_return_and_step(env, act) -> (float, int):  # [ElegantRL.2021.10.13]\n    device_id = next(act.parameters()).get_device()  # net.parameters() is a python generator.\n    device = torch.device('cpu' if device_id == -1 else f'cuda:{device_id}')\n\n    episode_step = 1\n    episode_return = 0.0  # sum of rewards in an episode\n\n    max_step = env.max_step\n    if_discrete = env.if_discrete\n    if if_discrete:\n        def get_action(_state):\n            _state = torch.as_tensor(_state, dtype=torch.float32, device=device)\n            _action = act(_state.unsqueeze(0))\n            _action = _action.argmax(dim=1)[0]\n            return _action.detach().cpu().numpy()\n    else:\n        def get_action(_state):\n            _state = torch.as_tensor(_state, dtype=torch.float32, device=device)\n            _action = act(_state.unsqueeze(0))[0]\n            return _action.detach().cpu().numpy()\n\n    state = env.reset()\n    for episode_step in range(max_step):\n        action = get_action(state)\n        state, reward, done, _ = env.step(action)\n        episode_return += reward\n\n        if done:\n            break\n    episode_return = getattr(env, 'episode_return', episode_return)\n    return episode_return, episode_step\n\n\ndef save_learning_curve(recorder=None, cwd='.', save_title='learning curve', fig_name='plot_learning_curve.jpg'):\n    if recorder is None:\n        recorder = np.load(f\"{cwd}/recorder.npy\")\n\n    recorder = np.array(recorder)\n    steps = recorder[:, 0]  # x-axis is training steps\n    r_avg = recorder[:, 1]\n    r_std = recorder[:, 2]\n    r_exp = recorder[:, 3]\n    obj_c = recorder[:, 4]\n    obj_a = recorder[:, 5]\n\n    '''plot subplots'''\n    import matplotlib as mpl\n    mpl.use('Agg')\n    \"\"\"Generating matplotlib graphs without a running X server [duplicate]\n    write `mpl.use('Agg')` before `import matplotlib.pyplot as plt`\n    https://stackoverflow.com/a/4935945/9293137\n    \"\"\"\n    import matplotlib.pyplot as plt\n    fig, axs = plt.subplots(2)\n\n    '''axs[0]'''\n    ax00 = axs[0]\n    ax00.cla()\n\n    ax01 = axs[0].twinx()\n    color01 = 'darkcyan'\n    ax01.set_ylabel('Explore AvgReward', color=color01)\n    ax01.plot(steps, r_exp, color=color01, alpha=0.5, )\n    ax01.tick_params(axis='y', labelcolor=color01)\n\n    color0 = 'lightcoral'\n    ax00.set_ylabel('Episode Return')\n    ax00.plot(steps, r_avg, label='Episode Return', color=color0)\n    ax00.fill_between(steps, r_avg - r_std, r_avg + r_std, facecolor=color0, alpha=0.3)\n    ax00.grid()\n\n    '''axs[1]'''\n    ax10 = axs[1]\n    ax10.cla()\n\n    ax11 = axs[1].twinx()\n    color11 = 'darkcyan'\n    ax11.set_ylabel('objC', color=color11)\n    ax11.fill_between(steps, obj_c, facecolor=color11, alpha=0.2, )\n    ax11.tick_params(axis='y', labelcolor=color11)\n\n    color10 = 'royalblue'\n    ax10.set_xlabel('Total Steps')\n    ax10.set_ylabel('objA', color=color10)\n    ax10.plot(steps, obj_a, label='objA', color=color10)\n    ax10.tick_params(axis='y', labelcolor=color10)\n    for plot_i in range(6, recorder.shape[1]):\n        other = recorder[:, plot_i]\n        ax10.plot(steps, other, label=f'{plot_i}', color='grey', alpha=0.5)\n    ax10.legend()\n    ax10.grid()\n\n    '''plot save'''\n    plt.title(save_title, y=2.3)\n    plt.savefig(f\"{cwd}/{fig_name}\")\n    plt.close('all')  # avoiding warning about too many open figures, rcParam `figure.max_open_warning`\n    # plt.show()  # if use `mpl.use('Agg')` to draw figures without GUI, then plt can't plt.show()\n\n\n"
  },
  {
    "path": "elegantrl/net.py",
    "content": "import numpy as np\nimport torch\nimport torch.nn as nn\n\n\"\"\"[ElegantRL.2021.09.01](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\n'''Q Network'''\n\n\nclass QNet(nn.Module):  # nn.Module is a standard PyTorch Network\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.net = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                 nn.Linear(mid_dim, action_dim))\n\n    def forward(self, state):\n        return self.net(state)  # Q value\n\n\nclass QNetDuel(nn.Module):  # Dueling DQN\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.net_state = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                       nn.Linear(mid_dim, mid_dim), nn.ReLU())\n        self.net_adv = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                     nn.Linear(mid_dim, 1))  # advantage function value 1\n        self.net_val = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                     nn.Linear(mid_dim, action_dim))  # Q value\n\n    def forward(self, state):\n        t_tmp = self.net_state(state)  # tensor of encoded state\n        q_adv = self.net_adv(t_tmp)\n        q_val = self.net_val(t_tmp)\n        return q_adv + q_val - q_val.mean(dim=1, keepdim=True)  # dueling Q value\n\n\nclass QNetTwin(nn.Module):  # Double DQN\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.net_state = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                       nn.Linear(mid_dim, mid_dim), nn.ReLU())\n        self.net_q1 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                    nn.Linear(mid_dim, action_dim))  # q1 value\n        self.net_q2 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                    nn.Linear(mid_dim, action_dim))  # q2 value\n\n    def forward(self, state):\n        tmp = self.net_state(state)\n        return self.net_q1(tmp)  # one Q value\n\n    def get_q1_q2(self, state):\n        tmp = self.net_state(state)\n        return self.net_q1(tmp), self.net_q2(tmp)  # two Q values\n\n\nclass QNetTwinDuel(nn.Module):  # D3QN: Dueling Double DQN\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.net_state = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                       nn.Linear(mid_dim, mid_dim), nn.ReLU())\n        self.net_adv1 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                      nn.Linear(mid_dim, 1))  # q1 value\n        self.net_adv2 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                      nn.Linear(mid_dim, 1))  # q2 value\n        self.net_val1 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                      nn.Linear(mid_dim, action_dim))  # advantage function value 1\n        self.net_val2 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                      nn.Linear(mid_dim, action_dim))  # advantage function value 1\n\n    def forward(self, state):\n        t_tmp = self.net_state(state)\n        q_adv = self.net_adv1(t_tmp)\n        q_val = self.net_val1(t_tmp)\n        return q_adv + q_val - q_val.mean(dim=1, keepdim=True)  # one dueling Q value\n\n    def get_q1_q2(self, state):\n        tmp = self.net_state(state)\n\n        adv1 = self.net_adv1(tmp)\n        val1 = self.net_val1(tmp)\n        q1 = adv1 + val1 - val1.mean(dim=1, keepdim=True)\n\n        adv2 = self.net_adv2(tmp)\n        val2 = self.net_val2(tmp)\n        q2 = adv2 + val2 - val2.mean(dim=1, keepdim=True)\n        return q1, q2  # two dueling Q values\n\n\n'''Policy Network (Actor)'''\n\n\nclass Actor(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.net = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                 nn.Linear(mid_dim, action_dim))\n\n    def forward(self, state):\n        return self.net(state).tanh()  # action.tanh()\n\n    def get_action(self, state, action_std):\n        action = self.net(state).tanh()\n        noise = (torch.randn_like(action) * action_std).clamp(-0.5, 0.5)\n        return (action + noise).clamp(-1.0, 1.0)\n\n\nclass ActorSAC(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim, if_use_dn=False):\n        super().__init__()\n        if if_use_dn:\n            nn_middle = DenseNet(mid_dim // 2)\n            inp_dim = nn_middle.inp_dim\n            out_dim = nn_middle.out_dim\n        else:\n            nn_middle = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                      nn.Linear(mid_dim, mid_dim), nn.ReLU(), )\n            inp_dim = mid_dim\n            out_dim = mid_dim\n\n        self.net_state = nn.Sequential(nn.Linear(state_dim, inp_dim), nn.ReLU(),\n                                       nn_middle, )\n        self.net_a_avg = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.Hardswish(),\n                                       nn.Linear(mid_dim, action_dim))  # the average of action\n        self.net_a_std = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.Hardswish(),\n                                       nn.Linear(mid_dim, action_dim))  # the log_std of action\n        self.log_sqrt_2pi = np.log(np.sqrt(2 * np.pi))\n\n    def forward(self, state):\n        tmp = self.net_state(state)\n        return self.net_a_avg(tmp).tanh()  # action\n\n    def get_action(self, state):\n        t_tmp = self.net_state(state)\n        a_avg = self.net_a_avg(t_tmp)  # NOTICE! it is a_avg without .tanh()\n        a_std = self.net_a_std(t_tmp).clamp(-20, 2).exp()\n        return torch.normal(a_avg, a_std).tanh()  # re-parameterize\n\n    def get_action_logprob(self, state):\n        t_tmp = self.net_state(state)\n        a_avg = self.net_a_avg(t_tmp)  # NOTICE! it needs a_avg.tanh()\n        a_std_log = self.net_a_std(t_tmp).clamp(-20, 2)\n        a_std = a_std_log.exp()\n\n        \"\"\"add noise to action in stochastic policy\"\"\"\n        noise = torch.randn_like(a_avg, requires_grad=True)\n        a_tan = (a_avg + a_std * noise).tanh()  # action.tanh()\n        # Can only use above code instead of below, because the tensor need gradients here.\n        # a_noise = torch.normal(a_avg, a_std, requires_grad=True)\n\n        '''compute log_prob according to mean and std of action (stochastic policy)'''\n        # self.sqrt_2pi_log = np.log(np.sqrt(2 * np.pi))\n        log_prob = a_std_log + self.log_sqrt_2pi + noise.pow(2).__mul__(0.5)  # noise.pow(2) * 0.5\n        # same as below:\n        # from torch.distributions.normal import Normal\n        # log_prob_noise = Normal(a_avg, a_std).log_prob(a_noise)\n        # log_prob = log_prob_noise + (-a_noise_tanh.pow(2) + 1.000001).log()\n        # same as below:\n        # a_delta = (a_avg - a_noise).pow(2) /(2*a_std.pow(2))\n        # log_prob_noise = -a_delta - a_std.log() - np.log(np.sqrt(2 * np.pi))\n        # log_prob = log_prob_noise + (-a_noise_tanh.pow(2) + 1.000001).log()\n\n        log_prob = log_prob + (-a_tan.pow(2) + 1.000001).log()  # fix log_prob using the derivative of action.tanh()\n        # same as below:\n        # epsilon = 1e-6\n        # log_prob = log_prob_noise - (1 - a_noise_tanh.pow(2) + epsilon).log()\n        return a_tan, log_prob.sum(1, keepdim=True)\n\n    # def log_abs_det_jacobian(self, x, y):\n    #     # https://github.com/denisyarats/pytorch_sac/blob/81c5b536d3a1c5616b2531e446450df412a064fb/agent/actor.py#L37\n    #     # ↑ MIT License， Thanks for https://www.zhihu.com/people/Z_WXCY 2ez4U\n    #     # We use a formula that is more numerically stable, see details in the following link\n    #     # https://pytorch.org/docs/stable/_modules/torch/distributions/transforms.html#TanhTransform\n    #     # https://github.com/tensorflow/probability/commit/ef6bb176e0ebd1cf6e25c6b5cecdd2428c22963f\n    #     return 2. * (math.log(2.) - x - F.softplus(-2. * x))\n\n\nclass ActorPPO(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        if isinstance(state_dim, int):\n            nn_middle = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                      nn.Linear(mid_dim, mid_dim), nn.ReLU(), )\n        else:\n            nn_middle = ConvNet(inp_dim=state_dim[2], out_dim=mid_dim, image_size=state_dim[0])\n\n        self.net = nn.Sequential(nn_middle,\n                                 nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                 nn.Linear(mid_dim, action_dim), )\n        layer_norm(self.net[-1], std=0.1)  # output layer for action\n\n        # the logarithm (log) of standard deviation (std) of action, it is a trainable parameter\n        self.a_std_log = nn.Parameter(torch.zeros((1, action_dim)) - 0.5, requires_grad=True)\n        self.sqrt_2pi_log = np.log(np.sqrt(2 * np.pi))\n\n    def forward(self, state):\n        return self.net(state).tanh()  # action.tanh()\n\n    def get_action(self, state):\n        a_avg = self.net(state)\n        a_std = self.a_std_log.exp()\n\n        noise = torch.randn_like(a_avg)\n        action = a_avg + noise * a_std\n        return action, noise\n\n    def get_logprob_entropy(self, state, action):\n        a_avg = self.net(state)\n        a_std = self.a_std_log.exp()\n\n        delta = ((a_avg - action) / a_std).pow(2) * 0.5\n        logprob = -(self.a_std_log + self.sqrt_2pi_log + delta).sum(1)  # new_logprob\n\n        dist_entropy = (logprob.exp() * logprob).mean()  # policy entropy\n        return logprob, dist_entropy\n\n    def get_old_logprob(self, _action, noise):  # noise = action - a_noise\n        delta = noise.pow(2) * 0.5\n        return -(self.a_std_log + self.sqrt_2pi_log + delta).sum(1)  # old_logprob\n\n\nclass ActorDiscretePPO(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        if isinstance(state_dim, int):\n            nn_middle = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(), )\n        else:\n            nn_middle = ConvNet(inp_dim=state_dim[2], out_dim=mid_dim, image_size=state_dim[0])\n\n        self.net = nn.Sequential(nn_middle,\n                                 nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                 nn.Linear(mid_dim, action_dim), )\n        layer_norm(self.net[-1], std=0.1)  # output layer for action\n\n        self.action_dim = action_dim\n        self.soft_max = nn.Softmax(dim=-1)\n        self.Categorical = torch.distributions.Categorical\n\n    def forward(self, state):\n        return self.net(state)  # action_prob without softmax\n\n    def get_action(self, state):\n        a_prob = self.soft_max(self.net(state))\n        # dist = Categorical(a_prob)\n        # a_int = dist.sample()\n        a_int = torch.multinomial(a_prob, num_samples=1, replacement=True)[:, 0]\n        # samples_2d = torch.multinomial(a_prob, num_samples=1, replacement=True)\n        # samples_2d.shape == (batch_size, num_samples)\n        return a_int, a_prob\n\n    def get_logprob_entropy(self, state, a_int):\n        a_prob = self.soft_max(self.net(state))\n        dist = self.Categorical(a_prob)\n        return dist.log_prob(a_int), dist.entropy().mean()\n\n    def get_old_logprob(self, a_int, a_prob):\n        dist = self.Categorical(a_prob)\n        return dist.log_prob(a_int)\n\n\nclass ActorBiConv(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n\n        self.net = nn.Sequential(\n            BiConvNet(mid_dim, state_dim, mid_dim * 4),\n            nn.Linear(mid_dim * 4, mid_dim * 1), nn.ReLU(),\n            DenseNet(mid_dim * 1), nn.ReLU(),\n            nn.Linear(mid_dim * 4, action_dim),\n        )\n        layer_norm(self.net[-1], std=0.1)  # output layer for action\n\n    def forward(self, state):\n        action = self.net(state)\n        return action * torch.pow((action ** 2).sum(), -0.5)  # action / sqrt(L2_norm(action))\n\n    def get_action(self, state, action_std):\n        action = self.net(state)\n        action = action + (torch.randn_like(action) * action_std)\n        return action * torch.pow((action ** 2).sum(), -0.5)  # action / sqrt(L2_norm(action))\n\n\n'''Value Network (Critic)'''\n\n\nclass Critic(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.net = nn.Sequential(nn.Linear(state_dim + action_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                 nn.Linear(mid_dim, 1))\n\n    def forward(self, state, action):\n        return self.net(torch.cat((state, action), dim=1))  # Q value\n\n\nclass CriticTwin(nn.Module):  # shared parameter\n    def __init__(self, mid_dim, state_dim, action_dim, if_use_dn=False):\n        super().__init__()\n        if if_use_dn:\n            nn_middle = DenseNet(mid_dim // 2)\n            inp_dim = nn_middle.inp_dim\n            out_dim = nn_middle.out_dim\n        else:\n            nn_middle = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                      nn.Linear(mid_dim, mid_dim), nn.ReLU(), )\n            inp_dim = mid_dim\n            out_dim = mid_dim\n\n        self.net_sa = nn.Sequential(nn.Linear(state_dim + action_dim, inp_dim), nn.ReLU(),\n                                    nn_middle, )  # concat(state, action)\n        self.net_q1 = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.Hardswish(),\n                                    nn.Linear(mid_dim, 1))  # q1 value\n        self.net_q2 = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.Hardswish(),\n                                    nn.Linear(mid_dim, 1))  # q2 value\n\n    def forward(self, state, action):\n        tmp = self.net_sa(torch.cat((state, action), dim=1))\n        return self.net_q1(tmp)  # one Q value\n\n    def get_q1_q2(self, state, action):\n        tmp = self.net_sa(torch.cat((state, action), dim=1))\n        return self.net_q1(tmp), self.net_q2(tmp)  # two Q values\n\n\nclass CriticPPO(nn.Module):\n    def __init__(self, mid_dim, state_dim, _action_dim):\n        super().__init__()\n        if isinstance(state_dim, int):\n            nn_middle = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(), )\n        else:\n            nn_middle = ConvNet(inp_dim=state_dim[2], out_dim=mid_dim, image_size=state_dim[0])\n\n        self.net = nn.Sequential(nn_middle,\n                                 nn.Linear(mid_dim, mid_dim), nn.ReLU(),\n                                 nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                 nn.Linear(mid_dim, 1), )\n        layer_norm(self.net[-1], std=0.5)  # output layer for advantage value\n\n    def forward(self, state):\n        return self.net(state)  # advantage value\n\n\nclass CriticTwinPPO(nn.Module):\n    def __init__(self, mid_dim, state_dim, _action_dim):\n        super().__init__()\n        if isinstance(state_dim, int):\n            nn_middle = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                      nn.Linear(mid_dim, mid_dim), nn.ReLU(), )\n        else:\n            nn_middle = ConvNet(inp_dim=state_dim[2], out_dim=mid_dim, image_size=state_dim[0])\n\n        self.net = nn.Sequential(nn_middle, )\n        self.net_v1 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                    nn.Linear(mid_dim, 1))  # advantage value1\n        self.net_v2 = nn.Sequential(nn.Linear(mid_dim, mid_dim), nn.Hardswish(),\n                                    nn.Linear(mid_dim, 1))  # advantage value2\n\n        layer_norm(self.net[-1], std=0.5)  # output layer for advantage value\n\n    def forward(self, state):\n        tmp = self.net(state)\n        return self.net_v1(tmp)  # one advantage value\n\n    def get_q1_q2(self, state):\n        tmp = self.net(state)\n        return self.net_v1(tmp), self.net_v2(tmp)  # two advantage values\n\n\nclass CriticBiConv(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        i_c_dim, i_h_dim, i_w_dim = state_dim  # inp_for_cnn.shape == (N, C, H, W)\n        assert action_dim == int(np.prod((i_c_dim, i_w_dim, i_h_dim)))\n        action_dim = (i_c_dim, i_w_dim, i_h_dim)  # (2, bs_n, ur_n)\n\n        self.cnn_s = nn.Sequential(\n            BiConvNet(mid_dim, state_dim, mid_dim * 4),\n            nn.Linear(mid_dim * 4, mid_dim * 2), nn.ReLU(inplace=True),\n            nn.Linear(mid_dim * 2, mid_dim * 1),\n        )\n        self.cnn_a = nn.Sequential(\n            NnReshape(*action_dim),\n            BiConvNet(mid_dim, action_dim, mid_dim * 4),\n            nn.Linear(mid_dim * 4, mid_dim * 2), nn.ReLU(inplace=True),\n            nn.Linear(mid_dim * 2, mid_dim * 1),\n        )\n\n        self.out_net = nn.Sequential(\n            nn.Linear(mid_dim * 1, mid_dim * 1), nn.Hardswish(),\n            nn.Linear(mid_dim * 1, 1),\n        )\n        layer_norm(self.out_net[-1], std=0.1)  # output layer for action\n\n    def forward(self, state, action):\n        xs = self.cnn_s(state)\n        xa = self.cnn_a(action)\n        return self.out_net(xs + xa)  # Q value\n\n\n'''Parameter sharing Network'''\n\n\nclass ShareDPG(nn.Module):  # DPG means deterministic policy gradient\n    def __init__(self, state_dim, action_dim, mid_dim):\n        super().__init__()\n        nn_dense = DenseNet(mid_dim // 2)\n        inp_dim = nn_dense.inp_dim\n        out_dim = nn_dense.out_dim\n\n        self.enc_s = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                   nn.Linear(mid_dim, inp_dim))\n        self.enc_a = nn.Sequential(nn.Linear(action_dim, mid_dim), nn.ReLU(),\n                                   nn.Linear(mid_dim, inp_dim))\n\n        self.net = nn_dense\n\n        self.dec_a = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.Hardswish(),\n                                   nn.Linear(mid_dim, action_dim), nn.Tanh())\n        self.dec_q = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.Hardswish(),\n                                   nn.utils.spectral_norm(nn.Linear(mid_dim, 1)))\n\n    @staticmethod\n    def add_noise(a, noise_std):\n        a_temp = torch.normal(a, noise_std)\n\n        mask = torch.lt(a_temp, -1) + torch.gt(a_temp, 1)  # mask = (a_temp < -1.0) + (a_temp > 1.0)\n        mask = torch.tensor(mask, dtype=torch.float32).cuda()\n\n        noise_uniform = torch.rand_like(a)\n        a_noise = noise_uniform * mask + a_temp * (-mask + 1)\n        return a_noise\n\n    def forward(self, s, noise_std=0.0):  # actor\n        s_ = self.enc_s(s)\n        a_ = self.net(s_)\n        a = self.dec_a(a_)\n        return a if noise_std == 0.0 else self.add_noise(a, noise_std)\n\n    def critic(self, s, a):\n        s_ = self.enc_s(s)\n        a_ = self.enc_a(a)\n        q_ = self.net(s_ + a_)\n        q = self.dec_q(q_)\n        return q\n\n    def next_q_action(self, s, s_next, noise_std):\n        s_ = self.enc_s(s)\n        a_ = self.net(s_)\n        a = self.dec_a(a_)\n\n        '''q_target (without noise)'''\n        a_ = self.enc_a(a)\n        s_next_ = self.enc_s(s_next)\n        q_target0_ = self.net(s_next_ + a_)\n        q_target0 = self.dec_q(q_target0_)\n\n        '''q_target (with noise)'''\n        a_noise = self.add_noise(a, noise_std)\n        a_noise_ = self.enc_a(a_noise)\n        q_target1_ = self.net(s_next_ + a_noise_)\n        q_target1 = self.dec_q(q_target1_)\n\n        q_target = (q_target0 + q_target1) * 0.5\n        return q_target, a\n\n\nclass ShareSPG(nn.Module):  # SPG means stochastic policy gradient\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        self.log_sqrt_2pi_sum = np.log(np.sqrt(2 * np.pi)) * action_dim\n        self.device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n\n        nn_dense = DenseNet(mid_dim // 2)\n        inp_dim = nn_dense.inp_dim\n        out_dim = nn_dense.out_dim\n\n        self.enc_s = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                   nn.Linear(mid_dim, inp_dim), )  # state\n        self.enc_a = nn.Sequential(nn.Linear(action_dim, mid_dim), nn.ReLU(),\n                                   nn.Linear(mid_dim, inp_dim), )  # action without nn.Tanh()\n\n        self.net = nn_dense\n\n        self.dec_a = nn.Sequential(nn.Linear(out_dim, mid_dim // 2), nn.ReLU(),\n                                   nn.Linear(mid_dim // 2, action_dim), )  # action_mean\n        self.dec_d = nn.Sequential(nn.Linear(out_dim, mid_dim // 2), nn.ReLU(),\n                                   nn.Linear(mid_dim // 2, action_dim), )  # action_std_log (d means standard deviation)\n        self.dec_q1 = nn.Sequential(nn.Linear(out_dim, mid_dim // 2), nn.ReLU(),\n                                    nn.Linear(mid_dim // 2, 1), )  # q1 value\n        self.dec_q2 = nn.Sequential(nn.Linear(out_dim, mid_dim // 2), nn.ReLU(),\n                                    nn.Linear(mid_dim // 2, 1), )  # q2 value\n        self.log_alpha = nn.Parameter(torch.zeros((1, action_dim)) - np.log(action_dim), requires_grad=True)\n\n        layer_norm(self.dec_a[-1], std=0.5)\n        layer_norm(self.dec_d[-1], std=0.1)\n        layer_norm(self.dec_q1[-1], std=0.5)\n        layer_norm(self.dec_q2[-1], std=0.5)\n\n    def forward(self, s):\n        x = self.enc_s(s)\n        x = self.net(x)\n        a_avg = self.dec_a(x)\n        return a_avg.tanh()\n\n    def get_action(self, s):\n        s_ = self.enc_s(s)\n        a_ = self.net(s_)\n        a_avg = self.dec_a(a_)  # NOTICE! it is a_avg without tensor.tanh()\n\n        a_std_log = self.dec_d(a_).clamp(-20, 2)\n        a_std = a_std_log.exp()\n\n        action = torch.normal(a_avg, a_std)  # NOTICE! it is action without .tanh()\n        return action.tanh()\n\n    def get_action_logprob(self, state):  # actor\n        s_ = self.enc_s(state)\n        a_ = self.net(s_)\n\n        \"\"\"add noise to action, stochastic policy\"\"\"\n        a_avg = self.dec_a(a_)  # NOTICE! it is action without .tanh()\n        a_std_log = self.dec_d(a_).clamp(-20, 2)\n        a_std = a_std_log.exp()\n\n        noise = torch.randn_like(a_avg, requires_grad=True)\n        a_noise = a_avg + a_std * noise\n\n        a_noise_tanh = a_noise.tanh()\n        fix_term = (-a_noise_tanh.pow(2) + 1.00001).log()\n        logprob = (noise.pow(2) / 2 + a_std_log + fix_term).sum(1, keepdim=True) + self.log_sqrt_2pi_sum\n        return a_noise_tanh, logprob\n\n    def get_q_logprob(self, state):\n        s_ = self.enc_s(state)\n        a_ = self.net(s_)\n\n        \"\"\"add noise to action, stochastic policy\"\"\"\n        a_avg = self.dec_a(a_)  # NOTICE! it is action without .tanh()\n        a_std_log = self.dec_d(a_).clamp(-20, 2)\n        a_std = a_std_log.exp()\n\n        noise = torch.randn_like(a_avg, requires_grad=True)\n        a_noise = a_avg + a_std * noise\n\n        a_noise_tanh = a_noise.tanh()\n        fix_term = (-a_noise_tanh.pow(2) + 1.00001).log()\n        logprob = (noise.pow(2) / 2 + a_std_log + fix_term).sum(1, keepdim=True) + self.log_sqrt_2pi_sum\n\n        '''get q'''\n        a_ = self.enc_a(a_noise_tanh)\n        q_ = self.net(s_ + a_)\n        q = torch.min(self.dec_q1(q_), self.dec_q2(q_))\n        return q, logprob\n\n    def get_q1_q2(self, s, a):  # critic\n        s_ = self.enc_s(s)\n        a_ = self.enc_a(a)\n        q_ = self.net(s_ + a_)\n        q1 = self.dec_q1(q_)\n        q2 = self.dec_q2(q_)\n        return q1, q2\n\n\nclass SharePPO(nn.Module):  # Pixel-level state version\n    def __init__(self, state_dim, action_dim, mid_dim):\n        super().__init__()\n        if isinstance(state_dim, int):\n            self.enc_s = nn.Sequential(nn.Linear(state_dim, mid_dim), nn.ReLU(),\n                                       nn.Linear(mid_dim, mid_dim))  # the only difference.\n        else:\n            self.enc_s = ConvNet(inp_dim=state_dim[2], out_dim=mid_dim, image_size=state_dim[0])\n        out_dim = mid_dim\n\n        self.dec_a = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.ReLU(),\n                                   nn.Linear(mid_dim, action_dim))\n        self.a_std_log = nn.Parameter(torch.zeros(1, action_dim) - 0.5, requires_grad=True)\n\n        self.dec_q1 = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.ReLU(),\n                                    nn.Linear(mid_dim, 1))\n        self.dec_q2 = nn.Sequential(nn.Linear(out_dim, mid_dim), nn.ReLU(),\n                                    nn.Linear(mid_dim, 1))\n\n        layer_norm(self.dec_a[-1], std=0.01)\n        layer_norm(self.dec_q1[-1], std=0.01)\n        layer_norm(self.dec_q2[-1], std=0.01)\n\n        self.sqrt_2pi_log = np.log(np.sqrt(2 * np.pi))\n\n    def forward(self, s):\n        s_ = self.enc_s(s)\n        a_avg = self.dec_a(s_)\n        return a_avg.tanh()\n\n    def get_action_noise(self, state):\n        s_ = self.enc_s(state)\n        a_avg = self.dec_a(s_)\n        a_std = self.a_std_log.exp()\n\n        # a_noise = torch.normal(a_avg, a_std) # same as below\n        noise = torch.randn_like(a_avg)\n        a_noise = a_avg + noise * a_std\n        return a_noise, noise\n\n    def get_q_logprob(self, state, noise):\n        s_ = self.enc_s(state)\n\n        q = torch.min(self.dec_q1(s_), self.dec_q2(s_))\n        logprob = -(noise.pow(2) / 2 + self.a_std_log + self.sqrt_2pi_log).sum(1)\n        return q, logprob\n\n    def get_q1_q2_logprob(self, state, action):\n        s_ = self.enc_s(state)\n\n        q1 = self.dec_q1(s_)\n        q2 = self.dec_q2(s_)\n\n        a_avg = self.dec_a(s_)\n        a_std = self.a_std_log.exp()\n        logprob = -(((a_avg - action) / a_std).pow(2) / 2 + self.a_std_log + self.sqrt_2pi_log).sum(1)\n        return q1, q2, logprob\n\n\nclass ShareBiConv(nn.Module):\n    def __init__(self, mid_dim, state_dim, action_dim):\n        super().__init__()\n        i_c_dim, i_h_dim, i_w_dim = state_dim  # inp_for_cnn.shape == (N, C, H, W)\n        assert action_dim == int(np.prod((i_c_dim, i_w_dim, i_h_dim)))\n\n        state_tuple = (i_c_dim, i_h_dim, i_w_dim)\n        self.enc_s = nn.Sequential(\n            # NnReshape(*state_tuple),\n            BiConvNet(mid_dim, state_tuple, mid_dim * 4),\n        )\n        action_tuple = (i_c_dim, i_w_dim, i_h_dim)\n        self.enc_a = nn.Sequential(\n            NnReshape(*action_tuple),\n            BiConvNet(mid_dim, action_tuple, mid_dim * 4),\n        )\n\n        self.mid_n = nn.Sequential(\n            nn.Linear(mid_dim * 4, mid_dim * 2), nn.ReLU(),\n            nn.Linear(mid_dim * 2, mid_dim * 1), nn.ReLU(),\n            DenseNet(mid_dim),\n        )\n\n        self.dec_a = nn.Sequential(\n            nn.Linear(mid_dim * 4, mid_dim * 2), nn.Hardswish(),\n            nn.Linear(mid_dim * 2, action_dim),\n        )\n        layer_norm(self.dec_a[-1], std=0.1)  # output layer for action\n        self.dec_q = nn.Sequential(\n            nn.Linear(mid_dim * 4, mid_dim * 2), nn.Hardswish(),\n            nn.Linear(mid_dim * 2, 1),\n        )\n        layer_norm(self.dec_q[-1], std=0.1)  # output layer for action\n\n    def forward(self, state):  # actor\n        xs = self.enc_s(state)\n        xn = self.mid_n(xs)\n        action = self.dec_a(xn)\n        return action * torch.pow((action ** 2).sum(), -0.5)  # action / sqrt(L2_norm(action))\n\n    def critic(self, state, action):\n        xs = self.enc_s(state)\n        xa = self.enc_a(action)\n        xn = self.mid_n(xs + xa)\n        return self.dec_q(xn)  # Q value\n\n    def get_action(self, state, action_std):  # actor, get noisy action\n        xs = self.enc_s(state)\n        xn = self.mid_n(xs)\n        action = self.dec_a(xn)\n        action = action + (torch.randn_like(action) * action_std)\n        return action * torch.pow((action ** 2).sum(), -0.5)  # action / sqrt(L2_norm(action))\n\n\n\"\"\"utils\"\"\"\n\n\nclass NnReshape(nn.Module):\n    def __init__(self, *args):\n        super().__init__()\n        self.args = args\n\n    def forward(self, x):\n        return x.view((x.size(0),) + self.args)\n\n\nclass DenseNet(nn.Module):  # plan to hyper-param: layer_number\n    def __init__(self, lay_dim):\n        super().__init__()\n        self.dense1 = nn.Sequential(nn.Linear(lay_dim * 1, lay_dim * 1), nn.Hardswish())\n        self.dense2 = nn.Sequential(nn.Linear(lay_dim * 2, lay_dim * 2), nn.Hardswish())\n        self.inp_dim = lay_dim\n        self.out_dim = lay_dim * 4\n\n    def forward(self, x1):  # x1.shape==(-1, lay_dim*1)\n        x2 = torch.cat((x1, self.dense1(x1)), dim=1)\n        x3 = torch.cat((x2, self.dense2(x2)), dim=1)\n        return x3  # x2.shape==(-1, lay_dim*4)\n\n\nclass ConcatNet(nn.Module):  # concatenate\n    def __init__(self, lay_dim):\n        super().__init__()\n        self.dense1 = nn.Sequential(nn.Linear(lay_dim, lay_dim), nn.ReLU(),\n                                    nn.Linear(lay_dim, lay_dim), nn.Hardswish(), )\n        self.dense2 = nn.Sequential(nn.Linear(lay_dim, lay_dim), nn.ReLU(),\n                                    nn.Linear(lay_dim, lay_dim), nn.Hardswish(), )\n        self.dense3 = nn.Sequential(nn.Linear(lay_dim, lay_dim), nn.ReLU(),\n                                    nn.Linear(lay_dim, lay_dim), nn.Hardswish(), )\n        self.dense4 = nn.Sequential(nn.Linear(lay_dim, lay_dim), nn.ReLU(),\n                                    nn.Linear(lay_dim, lay_dim), nn.Hardswish(), )\n        self.inp_dim = lay_dim\n        self.out_dim = lay_dim * 4\n\n    def forward(self, x0):\n        x1 = self.dense1(x0)\n        x2 = self.dense2(x0)\n        x3 = self.dense3(x0)\n        x4 = self.dense4(x0)\n        return torch.cat((x1, x2, x3, x4), dim=1)\n\n\nclass ConvNet(nn.Module):  # pixel-level state encoder\n    def __init__(self, inp_dim, out_dim, image_size=224):\n        super().__init__()\n        if image_size == 224:\n            self.net = nn.Sequential(  # size==(batch_size, inp_dim, 224, 224)\n                nn.Conv2d(inp_dim, 32, (5, 5), stride=(2, 2), bias=False), nn.ReLU(inplace=True),  # size=110\n                nn.Conv2d(32, 48, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=54\n                nn.Conv2d(48, 64, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=26\n                nn.Conv2d(64, 96, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=12\n                nn.Conv2d(96, 128, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=5\n                nn.Conv2d(128, 192, (5, 5), stride=(1, 1)), nn.ReLU(inplace=True),  # size=1\n                NnReshape(-1),  # size (batch_size, 1024, 1, 1) ==> (batch_size, 1024)\n                nn.Linear(192, out_dim),  # size==(batch_size, out_dim)\n            )\n        elif image_size == 112:\n            self.net = nn.Sequential(  # size==(batch_size, inp_dim, 112, 112)\n                nn.Conv2d(inp_dim, 32, (5, 5), stride=(2, 2), bias=False), nn.ReLU(inplace=True),  # size=54\n                nn.Conv2d(32, 48, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=26\n                nn.Conv2d(48, 64, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=12\n                nn.Conv2d(64, 96, (3, 3), stride=(2, 2)), nn.ReLU(inplace=True),  # size=5\n                nn.Conv2d(96, 128, (5, 5), stride=(1, 1)), nn.ReLU(inplace=True),  # size=1\n                NnReshape(-1),  # size (batch_size, 1024, 1, 1) ==> (batch_size, 1024)\n                nn.Linear(128, out_dim),  # size==(batch_size, out_dim)\n            )\n        else:\n            assert image_size in {224, 112}\n\n    def forward(self, x):\n        # assert x.shape == (batch_size, inp_dim, image_size, image_size)\n        x = x.permute(0, 3, 1, 2)\n        x = x / 128.0 - 1.0\n        return self.net(x)\n\n    # @staticmethod\n    # def check():\n    #     inp_dim = 3\n    #     out_dim = 32\n    #     batch_size = 2\n    #     image_size = [224, 112][1]\n    #     # from elegantrl.net import Conv2dNet\n    #     net = Conv2dNet(inp_dim, out_dim, image_size)\n    #\n    #     x = torch.ones((batch_size, image_size, image_size, inp_dim), dtype=torch.uint8) * 255\n    #     print(x.shape)\n    #     y = net(x)\n    #     print(y.shape)\n\n\nclass BiConvNet(nn.Module):\n    def __init__(self, mid_dim, inp_dim, out_dim):\n        super().__init__()\n        i_c_dim, i_h_dim, i_w_dim = inp_dim  # inp_for_cnn.shape == (N, C, H, W)\n\n        self.cnn_h = nn.Sequential(\n            nn.Conv2d(i_c_dim * 1, mid_dim * 2, (1, i_w_dim), bias=True), nn.LeakyReLU(inplace=True),\n            nn.Conv2d(mid_dim * 2, mid_dim * 1, (1, 1), bias=True), nn.ReLU(inplace=True),\n            NnReshape(-1),  # shape=(-1, i_h_dim * mid_dim)\n            nn.Linear(i_h_dim * mid_dim, out_dim),\n        )\n        self.cnn_w = nn.Sequential(\n            nn.Conv2d(i_c_dim * 1, mid_dim * 2, (i_h_dim, 1), bias=True), nn.LeakyReLU(inplace=True),\n            nn.Conv2d(mid_dim * 2, mid_dim * 1, (1, 1), bias=True), nn.ReLU(inplace=True),\n            NnReshape(-1),  # shape=(-1, i_w_dim * mid_dim)\n            nn.Linear(i_w_dim * mid_dim, out_dim),\n        )\n\n    def forward(self, state):\n        xh = self.cnn_h(state)\n        xw = self.cnn_w(state)\n        return xw + xh\n\n\ndef layer_norm(layer, std=1.0, bias_const=1e-6):\n    torch.nn.init.orthogonal_(layer.weight, std)\n    torch.nn.init.constant_(layer.bias, bias_const)\n\n\nclass ActorSimplify:\n    def __init__(self, gpu_id, actor_net):\n        self.device = torch.device(f\"cuda:{gpu_id}\" if (torch.cuda.is_available() and gpu_id >= 0) else 'cpu')\n        self.actor_net = actor_net.to(self.device)\n\n    def get_action(self, state: np.ndarray) -> np.ndarray:\n        states = torch.as_tensor(state[np.newaxis], dtype=torch.float32, device=self.device)\n        action = self.actor_net(states)[0]\n        return action.detach().cpu().numpy()\n\n\n\"\"\"check\"\"\"\n\n\ndef check_actor_network():\n    batch_size = 3\n    mid_dim = 2 ** 8\n    state_dim = 24\n    action_dim = 4\n\n    if_check_actor_net = 0\n    if if_check_actor_net:\n        net = ActorPPO(mid_dim, state_dim, action_dim)\n\n        inp = torch.ones((batch_size, state_dim), dtype=torch.float32)\n        out = net(inp)\n        print(out.shape)\n\n    if_check_pixel_level = 1\n    if if_check_pixel_level:\n        img_channel = 6\n        img_size = 112  # {112, 224}\n\n        mid_dim = 2 ** 8\n        state_dim = (img_size, img_size, img_channel)\n        action_dim = 4\n\n        net = ActorPPO(mid_dim, state_dim, action_dim)\n\n        inp = torch.ones((batch_size, img_size, img_size, img_channel), dtype=torch.int8)\n        out = net(inp)\n        print(out.shape)\n\n\ndef check_network():\n    from envs.DownLink import DownLinkEnv\n    env = DownLinkEnv()\n\n    gpu_id = 1\n    mid_dim = 128\n    state_dim = env.state_dim\n    action_dim = env.action_dim\n\n    if_check_actor = 0\n    if if_check_actor:\n        net = ActorBiConv(mid_dim, state_dim, action_dim)\n        act = ActorSimplify(gpu_id, net)\n\n        state = env.reset()\n\n        action = env.get_action_mmse(state)\n        reward = env.get_reward(action)\n        print(f\"| mmse            : {reward:8.3f}\")\n\n        action = env.get_action_mmse(state)\n        action = env.get_action_norm_power(action)\n        reward = env.get_reward(action)\n        print(f\"| mmse (max Power): {reward:8.3f}\")\n\n        action = np.ones(env.action_dim)\n        reward = env.get_reward(action)\n        print(f\"| ones (max Power): {reward:8.3f}\")\n\n        action = env.get_action_norm_power(action=None)  # random.normal action\n        reward = env.get_reward(action)\n        print(f\"| rand (max Power): {reward:8.3f}\")\n\n        action = act.get_action(state)\n        action = env.get_action_norm_power(action)\n        reward = env.get_reward(action)\n        print(f\"| net  (max Power): {reward:8.3f}\")\n\n        # state, reward, done, _ = env.step(action)\n        # print(reward)\n\n    if_check_critic = 1\n    if if_check_critic:\n        batch_size = 3\n        device = torch.device(f\"cuda:{gpu_id}\" if (torch.cuda.is_available() and gpu_id >= 0) else 'cpu')\n        critic_net = CriticBiConv(mid_dim, state_dim, action_dim).to(device)\n\n        ten_state = torch.randn(size=(batch_size, *state_dim), dtype=torch.float32, device=device)\n        ten_action = torch.randn(size=(batch_size, action_dim), dtype=torch.float32, device=device)\n\n        q_value = critic_net(ten_state, ten_action)\n        print(q_value)\n"
  },
  {
    "path": "elegantrl/replay.py",
    "content": "import os\nimport torch\nimport numpy as np\nimport numpy.random as rd\n\n\"\"\"[ElegantRL.2021.09.01](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\n\nclass ReplayBuffer:\n    def __init__(self, max_len, state_dim, action_dim, if_use_per, gpu_id=0, state_type=torch.float32):\n        \"\"\"Experience Replay Buffer\n\n        save environment transition in a continuous RAM for high performance training\n        we save trajectory in order and save state and other (action, reward, mask, ...) separately.\n\n        `int max_len` the maximum capacity of ReplayBuffer. First In First Out\n        `int state_dim` the dimension of state\n        `int action_dim` the dimension of action (action_dim==1 for discrete action)\n        `bool if_on_policy` on-policy or off-policy\n        `bool if_gpu` create buffer space on CPU RAM or GPU\n        `bool if_per` Prioritized Experience Replay for sparse reward\n        \"\"\"\n        self.now_len = 0\n        self.next_idx = 0\n        self.if_full = False\n        self.max_len = max_len\n        self.data_type = torch.float32\n        self.action_dim = action_dim\n        self.device = torch.device(f\"cuda:{gpu_id}\" if (torch.cuda.is_available() and (gpu_id >= 0)) else \"cpu\")\n\n        self.per_tree = BinarySearchTree(max_len) if if_use_per else None\n\n        other_dim = 1 + 1 + self.action_dim\n        self.buf_other = torch.empty((max_len, other_dim), dtype=torch.float32, device=self.device)\n\n        buf_state_shape = (max_len, state_dim) if isinstance(state_dim, int) else (max_len, *state_dim)\n        self.buf_state = torch.empty(buf_state_shape, dtype=state_type, device=self.device)\n\n    def append_buffer(self, state, other):  # CPU array to CPU array\n        self.buf_state[self.next_idx] = state\n        self.buf_other[self.next_idx] = other\n\n        if self.per_tree:\n            self.per_tree.update_id(self.next_idx)\n\n        self.next_idx += 1\n        if self.next_idx >= self.max_len:\n            self.if_full = True\n            self.next_idx = 0\n\n    def extend_buffer(self, state, other):  # CPU array to CPU array\n        size = len(other)\n        next_idx = self.next_idx + size\n\n        if self.per_tree:\n            self.per_tree.update_ids(data_ids=np.arange(self.next_idx, next_idx) % self.max_len)\n\n        if next_idx > self.max_len:\n            self.buf_state[self.next_idx:self.max_len] = state[:self.max_len - self.next_idx]\n            self.buf_other[self.next_idx:self.max_len] = other[:self.max_len - self.next_idx]\n            self.if_full = True\n\n            next_idx = next_idx - self.max_len\n            self.buf_state[0:next_idx] = state[-next_idx:]\n            self.buf_other[0:next_idx] = other[-next_idx:]\n        else:\n            self.buf_state[self.next_idx:next_idx] = state\n            self.buf_other[self.next_idx:next_idx] = other\n        self.next_idx = next_idx\n\n    def sample_batch(self, batch_size) -> tuple:\n        \"\"\"randomly sample a batch of data for training\n\n        :int batch_size: the number of data in a batch for Stochastic Gradient Descent\n        :return torch.Tensor reward: reward.shape==(now_len, 1)\n        :return torch.Tensor mask:   mask.shape  ==(now_len, 1), mask = 0.0 if done else gamma\n        :return torch.Tensor action: action.shape==(now_len, action_dim)\n        :return torch.Tensor state:  state.shape ==(now_len, state_dim)\n        :return torch.Tensor state:  state.shape ==(now_len, state_dim), next state\n        \"\"\"\n        if self.per_tree:\n            beg = -self.max_len\n            end = (self.now_len - self.max_len) if (self.now_len < self.max_len) else None\n\n            indices, is_weights = self.per_tree.get_indices_is_weights(batch_size, beg, end)\n            r_m_a = self.buf_other[indices]\n            return (r_m_a[:, 0:1].type(torch.float32),  # reward\n                    r_m_a[:, 1:2].type(torch.float32),  # mask\n                    r_m_a[:, 2:].type(torch.float32),  # action\n                    self.buf_state[indices].type(torch.float32),  # state\n                    self.buf_state[indices + 1].type(torch.float32),  # next state\n                    torch.as_tensor(is_weights, dtype=torch.float32, device=self.device))  # important sampling weights\n        else:\n            indices = rd.randint(self.now_len - 1, size=batch_size)\n            r_m_a = self.buf_other[indices]\n            return (r_m_a[:, 0:1],  # reward\n                    r_m_a[:, 1:2],  # mask\n                    r_m_a[:, 2:],  # action\n                    self.buf_state[indices],\n                    self.buf_state[indices + 1])\n\n    def sample_batch_one_step(self, batch_size) -> tuple:\n        if self.per_tree:\n            beg = -self.max_len\n            end = (self.now_len - self.max_len) if (self.now_len < self.max_len) else None\n\n            indices, is_weights = self.per_tree.get_indices_is_weights(batch_size, beg, end)\n            r_m_a = self.buf_other[indices]\n            return (r_m_a[:, 0:1].type(torch.float32),  # reward\n                    r_m_a[:, 2:].type(torch.float32),  # action\n                    self.buf_state[indices].type(torch.float32),  # state\n                    torch.as_tensor(is_weights, dtype=torch.float32, device=self.device))  # important sampling weights\n        else:\n            indices = rd.randint(self.now_len - 1, size=batch_size)\n            r_m_a = self.buf_other[indices]\n            return (r_m_a[:, 0:1],  # reward\n                    r_m_a[:, 2:],  # action\n                    self.buf_state[indices],)\n\n    def update_now_len(self):\n        \"\"\"update the a pointer `now_len`, which is the current data number of ReplayBuffer\n        \"\"\"\n        self.now_len = self.max_len if self.if_full else self.next_idx\n\n    def print_state_norm(self, neg_avg=None, div_std=None):  # non-essential\n        \"\"\"print the state norm information: state_avg, state_std\n\n        We don't suggest to use running stat state.\n        We directly do normalization on state using the historical avg and std\n        eg. `state = (state + self.neg_state_avg) * self.div_state_std` in `PreprocessEnv.step_norm()`\n        neg_avg = -states.mean()\n        div_std = 1/(states.std()+1e-5) or 6/(states.max()-states.min())\n\n        :array neg_avg: neg_avg.shape=(state_dim)\n        :array div_std: div_std.shape=(state_dim)\n        \"\"\"\n        max_sample_size = 2 ** 14\n\n        '''check if pass'''\n        state_shape = self.buf_state.shape\n        if len(state_shape) > 2 or state_shape[1] > 64:\n            print(f\"| print_state_norm(): state_dim: {state_shape} is too large to print its norm. \")\n            return None\n\n        '''sample state'''\n        indices = np.arange(self.now_len)\n        rd.shuffle(indices)\n        indices = indices[:max_sample_size]  # len(indices) = min(self.now_len, max_sample_size)\n\n        batch_state = self.buf_state[indices]\n\n        '''compute state norm'''\n        if isinstance(batch_state, torch.Tensor):\n            batch_state = batch_state.cpu().data.numpy()\n        assert isinstance(batch_state, np.ndarray)\n\n        if batch_state.shape[1] > 64:\n            print(f\"| _print_norm(): state_dim: {batch_state.shape[1]:.0f} is too large to print its norm. \")\n            return None\n\n        if np.isnan(batch_state).any():  # 2020-12-12\n            batch_state = np.nan_to_num(batch_state)  # nan to 0\n\n        ary_avg = batch_state.mean(axis=0)\n        ary_std = batch_state.std(axis=0)\n        fix_std = ((np.max(batch_state, axis=0) - np.min(batch_state, axis=0)) / 6 + ary_std) / 2\n\n        if neg_avg is not None:  # norm transfer\n            ary_avg = ary_avg - neg_avg / div_std\n            ary_std = fix_std / div_std\n\n        print(f\"print_state_norm: state_avg, state_std (fixed)\")\n        print(f\"avg = np.{repr(ary_avg).replace('=float32', '=np.float32')}\")\n        print(f\"std = np.{repr(ary_std).replace('=float32', '=np.float32')}\")\n\n    def td_error_update(self, td_error):\n        self.per_tree.td_error_update(td_error)\n\n    def save_or_load_history(self, cwd, if_save, buffer_id=0):\n        save_path = f\"{cwd}/replay_{buffer_id}.npz\"\n        if_load = None\n\n        if if_save:\n            self.update_now_len()\n            state_dim = self.buf_state.shape[1]\n            other_dim = self.buf_other.shape[1]\n\n            buf_state_data_type = np.float16 \\\n                if self.buf_state.dtype in {np.float, np.float64, np.float32} \\\n                else np.uint8\n\n            buf_state = np.empty((self.max_len, state_dim), dtype=buf_state_data_type)\n            buf_other = np.empty((self.max_len, other_dim), dtype=np.float16)\n\n            temp_len = self.max_len - self.now_len\n            buf_state[0:temp_len] = self.buf_state[self.now_len:self.max_len].detach().cpu().numpy()\n            buf_other[0:temp_len] = self.buf_other[self.now_len:self.max_len].detach().cpu().numpy()\n\n            buf_state[temp_len:] = self.buf_state[:self.now_len].detach().cpu().numpy()\n            buf_other[temp_len:] = self.buf_other[:self.now_len].detach().cpu().numpy()\n\n            np.savez_compressed(save_path, buf_state=buf_state, buf_other=buf_other)\n            print(f\"| ReplayBuffer save in: {save_path}\")\n        elif os.path.isfile(save_path):\n            buf_dict = np.load(save_path)\n            buf_state = buf_dict['buf_state']\n            buf_other = buf_dict['buf_other']\n\n            buf_state = torch.as_tensor(buf_state, dtype=torch.float32, device=self.device)\n            buf_other = torch.as_tensor(buf_other, dtype=torch.float32, device=self.device)\n            self.extend_buffer(buf_state, buf_other)\n            self.update_now_len()\n            print(f\"| ReplayBuffer load: {save_path}\")\n            if_load = True\n        else:\n            # print(f\"| ReplayBuffer FileNotFound: {save_path}\")\n            if_load = False\n        return if_load\n\n\nclass ReplayBufferMP:\n    def __init__(self, state_dim, action_dim, max_len, if_use_per, buffer_num, gpu_id):\n        \"\"\"Experience Replay Buffer for Multiple Processing\n\n        `int max_len` the max_len of ReplayBuffer, not the total len of ReplayBufferMP\n        `int worker_num` the rollout workers number\n        \"\"\"\n        self.now_len = 0\n        self.max_len = max_len\n        self.worker_num = buffer_num\n\n        buf_max_len = max_len // buffer_num\n        self.buffers = [ReplayBuffer(max_len=buf_max_len, state_dim=state_dim, action_dim=action_dim,\n                                     if_use_per=if_use_per, gpu_id=gpu_id)\n                        for _ in range(buffer_num)]\n\n    def sample_batch(self, batch_size) -> list:\n        bs = batch_size // self.worker_num\n        list_items = [self.buffers[i].sample_batch(bs)\n                      for i in range(self.worker_num)]\n        # list_items of reward, mask, action, state, next_state\n        # list_items of reward, mask, action, state, next_state, is_weights (PER)\n\n        list_items = list(map(list, zip(*list_items)))  # 2D-list transpose\n        return [torch.cat(item, dim=0) for item in list_items]\n\n    def sample_batch_one_step(self, batch_size) -> list:\n        bs = batch_size // self.worker_num\n        list_items = [self.buffers[i].sample_batch_one_step(bs)\n                      for i in range(self.worker_num)]\n        # list_items of reward, mask, action, state, next_state\n        # list_items of reward, mask, action, state, next_state, is_weights (PER)\n\n        list_items = list(map(list, zip(*list_items)))  # 2D-list transpose\n        return [torch.cat(item, dim=0) for item in list_items]\n\n    def update_now_len(self):\n        self.now_len = 0\n        for buffer in self.buffers:\n            buffer.update_now_len()\n            self.now_len += buffer.now_len\n\n    def print_state_norm(self, neg_avg=None, div_std=None):  # non-essential\n        # for buffer in self.l_buffer:\n        self.buffers[0].print_state_norm(neg_avg, div_std)\n\n    def td_error_update(self, td_error):\n        td_errors = td_error.view(self.worker_num, -1, 1)\n        for i in range(self.worker_num):\n            self.buffers[i].per_tree.td_error_update(td_errors[i])\n\n    def save_or_load_history(self, cwd, if_save):\n        for i in range(self.worker_num):\n            self.buffers[i].save_or_load_history(cwd, if_save, buffer_id=i)\n\n\nclass BinarySearchTree:\n    \"\"\"Binary Search Tree for PER\n\n    Contributor: Github GyChou, Github mississippiu\n    Reference: https://github.com/kaixindelele/DRLib/tree/main/algos/pytorch/td3_sp\n    Reference: https://github.com/jaromiru/AI-blog/blob/master/SumTree.py\n    \"\"\"\n\n    def __init__(self, memo_len):\n        self.memo_len = memo_len  # replay buffer len\n        self.prob_ary = np.zeros((memo_len - 1) + memo_len)  # parent_nodes_num + leaf_nodes_num\n        self.max_len = len(self.prob_ary)\n        self.now_len = self.memo_len - 1  # pointer\n        self.indices = None\n        self.depth = int(np.log2(self.max_len))\n\n        # PER.  Prioritized Experience Replay. Section 4\n        # alpha, beta = 0.7, 0.5 for rank-based variant\n        # alpha, beta = 0.6, 0.4 for proportional variant\n        self.per_alpha = 0.6  # alpha = (Uniform:0, Greedy:1)\n        self.per_beta = 0.4  # beta = (PER:0, NotPER:1)\n\n    def update_id(self, data_id, prob=10):  # 10 is max_prob\n        tree_id = data_id + self.memo_len - 1\n        if self.now_len == tree_id:\n            self.now_len += 1\n\n        delta = prob - self.prob_ary[tree_id]\n        self.prob_ary[tree_id] = prob\n\n        while tree_id != 0:  # propagate the change through tree\n            tree_id = (tree_id - 1) // 2  # faster than the recursive loop\n            self.prob_ary[tree_id] += delta\n\n    def update_ids(self, data_ids, prob=10):  # 10 is max_prob\n        ids = data_ids + self.memo_len - 1\n        self.now_len += (ids >= self.now_len).sum()\n\n        upper_step = self.depth - 1\n        self.prob_ary[ids] = prob  # here, ids means the indices of given children (maybe the right ones or left ones)\n        p_ids = (ids - 1) // 2\n\n        while upper_step:  # propagate the change through tree\n            ids = p_ids * 2 + 1  # in this while loop, ids means the indices of the left children\n            self.prob_ary[p_ids] = self.prob_ary[ids] + self.prob_ary[ids + 1]\n            p_ids = (p_ids - 1) // 2\n            upper_step -= 1\n\n        self.prob_ary[0] = self.prob_ary[1] + self.prob_ary[2]\n        # because we take depth-1 upper steps, ps_tree[0] need to be updated alone\n\n    def get_leaf_id(self, v):\n        \"\"\"Tree structure and array storage:\n\n        Tree index:\n              0       -> storing priority sum\n            |  |\n          1     2\n         | |   | |\n        3  4  5  6    -> storing priority for transitions\n        Array type for storing: [0, 1, 2, 3, 4, 5, 6]\n        \"\"\"\n        parent_idx = 0\n        while True:\n            l_idx = 2 * parent_idx + 1  # the leaf's left node\n            r_idx = l_idx + 1  # the leaf's right node\n            if l_idx >= (len(self.prob_ary)):  # reach bottom, end search\n                leaf_idx = parent_idx\n                break\n            else:  # downward search, always search for a higher priority node\n                if v <= self.prob_ary[l_idx]:\n                    parent_idx = l_idx\n                else:\n                    v -= self.prob_ary[l_idx]\n                    parent_idx = r_idx\n        return min(leaf_idx, self.now_len - 2)  # leaf_idx\n\n    def get_indices_is_weights(self, batch_size, beg, end):\n        self.per_beta = min(1., self.per_beta + 0.001)\n\n        # get random values for searching indices with proportional prioritization\n        values = (rd.rand(batch_size) + np.arange(batch_size)) * (self.prob_ary[0] / batch_size)\n\n        # get proportional prioritization\n        leaf_ids = np.array([self.get_leaf_id(v) for v in values])\n        self.indices = leaf_ids - (self.memo_len - 1)\n\n        prob_ary = self.prob_ary[leaf_ids] / self.prob_ary[beg:end].min()\n        is_weights = np.power(prob_ary, -self.per_beta)  # important sampling weights\n        return self.indices, is_weights\n\n    def td_error_update(self, td_error):  # td_error = (q-q).detach_().abs()\n        prob = td_error.squeeze().clamp(1e-6, 10).pow(self.per_alpha)\n        prob = prob.cpu().numpy()\n        self.update_ids(self.indices, prob)\n"
  },
  {
    "path": "elegantrl/run.py",
    "content": "import os\nimport sys\nimport time\n\nimport torch\nimport numpy as np\nimport numpy.random as rd\nimport multiprocessing as mp\n\nfrom elegantrl.env import build_env, build_eval_env\nfrom elegantrl.replay import ReplayBuffer, ReplayBufferMP\nfrom elegantrl.evaluator import Evaluator\n\n\"\"\"[ElegantRL.2021.11.08](https://github.com/AI4Finance-Foundation/ElegantRL)\"\"\"\n\n\nclass Arguments:  # [ElegantRL.2021.10.21]\n    def __init__(self, env, agent):\n        self.env = env  # the environment for training\n        self.env_num = getattr(env, 'env_num', 1)  # env_num = 1. In vector env, env_num > 1.\n        self.max_step = getattr(env, 'max_step', None)  # the max step of an episode\n        self.state_dim = getattr(env, 'state_dim', None)  # vector dimension (feature number) of state\n        self.action_dim = getattr(env, 'action_dim', None)  # vector dimension (feature number) of action\n        self.if_discrete = getattr(env, 'if_discrete', None)  # discrete or continuous action space\n        self.target_return = getattr(env, 'target_return', None)  # target average episode return\n\n        self.agent = agent  # Deep Reinforcement Learning algorithm\n        self.if_off_policy = agent.if_off_policy  # agent is on-policy or off-policy\n        if self.if_off_policy:  # off-policy\n            self.net_dim = 2 ** 8  # the network width\n            self.max_memo = 2 ** 21  # capacity of replay buffer\n            self.batch_size = self.net_dim  # num of transitions sampled from replay buffer.\n            self.target_step = 2 ** 10  # repeatedly update network to keep critic's loss small\n            self.repeat_times = 2 ** 0  # collect target_step, then update network\n            self.if_per_or_gae = False  # use PER (Prioritized Experience Replay) for sparse reward\n        else:  # on-policy\n            self.net_dim = 2 ** 9  # the network width\n            self.max_memo = 2 ** 12  # capacity of replay buffer\n            self.batch_size = self.net_dim * 2  # num of transitions sampled from replay buffer.\n            self.target_step = self.max_memo  # repeatedly update network to keep critic's loss small\n            self.repeat_times = 2 ** 3  # collect target_step, then update network\n            self.if_per_or_gae = False  # use PER: GAE (Generalized Advantage Estimation) for sparse reward\n\n        '''Arguments for training'''\n        self.gamma = 0.99  # discount factor of future rewards\n        self.reward_scale = 2 ** 0  # an approximate target reward usually be closed to 256\n        self.learning_rate = 2 ** -15  # 2 ** -14 ~= 3e-5\n        self.soft_update_tau = 2 ** -8  # 2 ** -8 ~= 5e-3\n\n        '''Arguments for device'''\n        self.worker_num = 2  # rollout workers number pre GPU (adjust it to get high GPU usage)\n        self.thread_num = 8  # cpu_num for evaluate model, torch.set_num_threads(self.num_threads)\n        self.random_seed = 0  # initialize random seed in self.init_before_training()\n        self.learner_gpus = (0,)  # for example: os.environ['CUDA_VISIBLE_DEVICES'] = '0, 2,'\n        self.workers_gpus = self.learner_gpus  # for GPU_VectorEnv (such as isaac gym)\n\n        '''Arguments for evaluate and save'''\n        self.cwd = None  # the directory path to save the model\n        self.if_remove = True  # remove the cwd folder? (True, False, None:ask me)\n        self.break_step = +np.inf  # break training after 'total_step > break_step'\n        self.if_allow_break = True  # allow break training when reach goal (early termination)\n\n        self.eval_env = None  # the environment for evaluating. None means set automatically.\n        self.eval_gap = 2 ** 8  # evaluate the agent per eval_gap seconds\n        self.eval_times1 = 2 ** 2  # number of times that get episode return in first\n        self.eval_times2 = 2 ** 4  # number of times that get episode return in second\n        self.eval_gpu_id = None  # -1 means use cpu, >=0 means use GPU, None means set as learner_gpus[0]\n        self.if_overwrite = True  # Save policy networks with different episode return or overwrite\n\n    def init_before_training(self):\n        np.random.seed(self.random_seed)\n        torch.manual_seed(self.random_seed)\n        torch.set_num_threads(self.thread_num)\n        torch.set_default_dtype(torch.float32)\n\n        '''env'''\n        assert isinstance(self.env_num, int)\n        assert isinstance(self.max_step, int)\n        assert isinstance(self.state_dim, int) or isinstance(self.state_dim, tuple)\n        assert isinstance(self.action_dim, int) or isinstance(self.action_dim, tuple)\n        assert isinstance(self.if_discrete, bool)\n        assert isinstance(self.target_return, int) or isinstance(self.target_return, float)\n\n        '''agent'''\n        assert hasattr(self.agent, 'init')\n        assert hasattr(self.agent, 'update_net')\n        assert hasattr(self.agent, 'explore_env')\n        assert hasattr(self.agent, 'select_actions')\n\n        '''auto set'''\n        if self.cwd is None:\n            agent_name = self.agent.__class__.__name__\n            env_name = getattr(self.env, 'env_name', self.env)\n            self.cwd = f'./{agent_name}_{env_name}_{self.learner_gpus}'\n        if self.eval_gpu_id is None:\n            self.eval_gpu_id = self.learner_gpus[0]\n\n        '''remove history'''\n        if self.if_remove is None:\n            self.if_remove = bool(input(f\"| PRESS 'y' to REMOVE: {self.cwd}? \") == 'y')\n        elif self.if_remove:\n            import shutil\n            shutil.rmtree(self.cwd, ignore_errors=True)\n            print(f\"| Remove cwd: {self.cwd}\")\n        else:\n            print(f\"| Keep cwd: {self.cwd}\")\n        os.makedirs(self.cwd, exist_ok=True)\n        if not self.if_overwrite:\n            os.makedirs('%s/best/'%self.cwd, exist_ok=True)\n\n\n'''single processing training'''\n\n\ndef train_and_evaluate(args, learner_id=0):\n    args.init_before_training()  # necessary!\n\n    '''init: Agent'''\n    agent = args.agent\n    agent.init(net_dim=args.net_dim, state_dim=args.state_dim, action_dim=args.action_dim,\n               gamma=args.gamma, reward_scale=args.reward_scale,\n               learning_rate=args.learning_rate, if_per_or_gae=args.if_per_or_gae,\n               env_num=args.env_num, gpu_id=args.learner_gpus[learner_id], )\n\n    agent.save_or_load_agent(args.cwd, if_save=False)\n\n    env = build_env(env=args.env, if_print=False,\n                    env_num=args.env_num, device_id=args.eval_gpu_id, args=args, )\n    if env.env_num == 1:\n        agent.states = [env.reset(), ]\n        assert isinstance(agent.states[0], np.ndarray)\n        assert agent.states[0].shape in {(env.state_dim,), env.state_dim}\n    else:\n        agent.states = env.reset()\n        assert isinstance(agent.states, torch.Tensor)\n        assert agent.states.shape == (env.env_num, env.state_dim)\n\n    '''init Evaluator'''\n    eval_env = build_eval_env(args.eval_env, args.env, args.env_num, args.eval_gpu_id, args)\n    evaluator = Evaluator(cwd=args.cwd, agent_id=0,\n                          eval_env=eval_env, eval_gap=args.eval_gap,\n                          eval_times1=args.eval_times1, eval_times2=args.eval_times2,\n                          target_return=args.target_return, if_overwrite=args.if_overwrite)\n    evaluator.save_or_load_recoder(if_save=False)\n\n    '''init ReplayBuffer'''\n    if args.if_off_policy:\n        buffer = ReplayBuffer(max_len=args.max_memo, state_dim=env.state_dim,\n                              action_dim=1 if env.if_discrete else env.action_dim,\n                              if_use_per=args.if_per_or_gae, gpu_id=args.learner_gpus[learner_id])\n        buffer.save_or_load_history(args.cwd, if_save=False)\n\n        def update_buffer(_traj_list):\n            ten_state, ten_other = _traj_list[0]\n            buffer.extend_buffer(ten_state, ten_other)\n\n            _steps, _r_exp = get_step_r_exp(ten_reward=ten_other[0])  # other = (reward, mask, action)\n            return _steps, _r_exp\n    else:\n        buffer = list()\n\n        def update_buffer(_traj_list):\n            (ten_state, ten_reward, ten_mask, ten_action, ten_noise) = _traj_list[0]\n            buffer[:] = (ten_state.squeeze(1),\n                         ten_reward,\n                         ten_mask,\n                         ten_action.squeeze(1),\n                         ten_noise.squeeze(1))\n\n            _step, _r_exp = get_step_r_exp(ten_reward=buffer[1])\n            return _step, _r_exp\n\n    \"\"\"start training\"\"\"\n    cwd = args.cwd\n    gamma = args.gamma\n    break_step = args.break_step\n    batch_size = args.batch_size\n    target_step = args.target_step\n    repeat_times = args.repeat_times\n    if_allow_break = args.if_allow_break\n    soft_update_tau = args.soft_update_tau\n    if_overwrite = args.if_overwrite\n    del args\n\n    '''init ReplayBuffer after training start'''\n    if agent.if_off_policy:\n        if_load = buffer.save_or_load_history(cwd, if_save=False)\n\n        if not if_load:\n            traj_list = agent.explore_env(env, target_step)\n            steps, r_exp = update_buffer(traj_list)\n            evaluator.total_step += steps\n\n    '''start training loop'''\n    if_train = True\n    while if_train:\n        with torch.no_grad():\n            traj_list = agent.explore_env(env, target_step)\n            steps, r_exp = update_buffer(traj_list)\n\n        logging_tuple = agent.update_net(buffer, batch_size, repeat_times, soft_update_tau)\n        with torch.no_grad():\n            temp = evaluator.evaluate_and_save(agent.act, steps, r_exp, logging_tuple)\n            if_reach_goal, if_save = temp\n\n            if if_save and not if_overwrite:\n                agent.save_or_load_agent('%s/best/'%(cwd), if_save=True)\n                buffer.save_or_load_history('%s/best/'%(cwd), if_save=True) if agent.if_off_policy else None\n            \n            if_train = not ((if_allow_break and if_reach_goal)\n                            or evaluator.total_step > break_step\n                            or os.path.exists(f'{cwd}/stop'))\n\n    print(f'| UsedTime: {time.time() - evaluator.start_time:>7.0f} | SavedDir: {cwd}')\n\n    agent.save_or_load_agent(cwd, if_save=True)\n    buffer.save_or_load_history(cwd, if_save=True) if agent.if_off_policy else None\n    evaluator.save_or_load_recoder(if_save=True)\n\n\ndef get_step_r_exp(ten_reward):\n    return len(ten_reward), ten_reward.mean().item()\n\n\n'''multiple processing training'''\n\n\ndef train_and_evaluate_mp(args, agent_id=0):\n    args.init_before_training()  # necessary!\n\n    process = list()\n    mp.set_start_method(method='spawn', force=True)  # force all the multiprocessing to 'spawn' methods\n\n    '''learner'''\n    learner_num = len(args.learner_gpus)\n    learner_pipe = PipeLearner(learner_num)\n    for learner_id in range(learner_num):\n        '''evaluator'''\n        if learner_id == learner_num - 1:\n            evaluator_pipe = PipeEvaluator()\n            process.append(mp.Process(target=evaluator_pipe.run, args=(args, agent_id)))\n        else:\n            evaluator_pipe = None\n\n        '''explorer'''\n        worker_pipe = PipeWorker(args.env_num, args.worker_num)\n        for worker_id in range(args.worker_num):\n            # if args.env_num == 1:\n            #     env_pipe = None\n            # else:\n            #     env_pipe = PipeVectorEnv(args)\n            #     process.extend(env_pipe.process)\n            env_pipe = None\n            process.append(mp.Process(target=worker_pipe.run, args=(args, env_pipe, worker_id, learner_id)))\n\n        process.append(mp.Process(target=learner_pipe.run, args=(args, evaluator_pipe, worker_pipe, learner_id)))\n\n    [(p.start(), time.sleep(0.1)) for p in process]\n    process[-1].join()\n    process_safely_terminate(process)\n\n\nclass PipeWorker:\n    def __init__(self, env_num, worker_num):\n        self.env_num = env_num\n        self.worker_num = worker_num\n        self.pipes = [mp.Pipe() for _ in range(worker_num)]\n        self.pipe1s = [pipe[1] for pipe in self.pipes]\n\n    def explore0(self, agent):\n        act_dict = agent.act.state_dict()\n        for worker_id in range(self.worker_num):\n            self.pipe1s[worker_id].send(act_dict)\n\n        traj_lists = [pipe1.recv() for pipe1 in self.pipe1s]\n        return traj_lists\n\n    def explore(self, agent):\n        act_dict = agent.act.state_dict()\n\n        if sys.platform == 'win32':  # Avoid CUDA runtime error (801)\n            # Python3.9< multiprocessing can't send torch.tensor_gpu in WinOS. So I send torch.tensor_cpu\n            for key, value in act_dict.items():\n                act_dict[key] = value.to(torch.device('cpu'))\n\n        for worker_id in range(self.worker_num):\n            self.pipe1s[worker_id].send(act_dict)\n\n        traj_lists = [pipe1.recv() for pipe1 in self.pipe1s]\n        return traj_lists\n\n    def run(self, args, _comm_env, worker_id, learner_id):  # not elegant: comm_env\n        # print(f'| os.getpid()={os.getpid()} PipeExplore.run {learner_id}')\n        env = build_env(env=args.env, if_print=False,\n                        env_num=args.env_num, device_id=args.workers_gpus[learner_id], args=args, )\n\n        '''init Agent'''\n        agent = args.agent\n        agent.init(net_dim=args.net_dim, state_dim=args.state_dim, action_dim=args.action_dim,\n                   gamma=args.gamma, reward_scale=args.reward_scale,\n                   learning_rate=args.learning_rate, if_per_or_gae=args.if_per_or_gae,\n                   env_num=args.env_num, gpu_id=args.learner_gpus[learner_id], )\n        if args.env_num == 1:\n            agent.states = [env.reset(), ]\n        else:\n            agent.states = env.reset()  # VecEnv\n\n        '''loop'''\n        target_step = args.target_step\n        del args\n\n        with torch.no_grad():\n            while True:\n                act_dict = self.pipes[worker_id][0].recv()\n\n                if sys.platform == 'win32':  # todo: not elegant. YonV1943. Avoid CUDA runtime error (801)\n                    # Python3.9< multiprocessing can't send torch.tensor_gpu in WinOS. So I send torch.tensor_cpu\n                    for key, value in act_dict.items():\n                        act_dict[key] = value.to(agent.device)\n\n                agent.act.load_state_dict(act_dict)\n\n                trajectory = agent.explore_env(env, target_step)\n                if sys.platform == 'win32':  # todo: not elegant. YonV1943. Avoid CUDA runtime error (801)\n                    # Python3.9< multiprocessing can't send torch.tensor_gpu in WinOS. So I send torch.tensor_cpu\n                    trajectory = [[item.to(torch.device('cpu'))\n                                   for item in item_list]\n                                  for item_list in trajectory]\n\n                self.pipes[worker_id][0].send(trajectory)\n\n\nclass PipeLearner:\n    def __init__(self, learner_num):\n        self.learner_num = learner_num\n        self.round_num = int(np.log2(learner_num))\n\n        self.pipes = [mp.Pipe() for _ in range(learner_num)]\n        pipes = [mp.Pipe() for _ in range(learner_num)]\n        self.pipe0s = [pipe[0] for pipe in pipes]\n        self.pipe1s = [pipe[1] for pipe in pipes]\n        self.device_list = [torch.device(f'cuda:{i}') for i in range(learner_num)]\n\n        if learner_num == 1:\n            self.idx_l = None\n        elif learner_num == 2:\n            self.idx_l = [(1,), (0,), ]\n        elif learner_num == 4:\n            self.idx_l = [(1, 2), (0, 3),\n                          (3, 0), (2, 1), ]\n        elif learner_num == 8:\n            self.idx_l = [(1, 2, 4), (0, 3, 5),\n                          (3, 0, 6), (2, 1, 7),\n                          (5, 6, 0), (4, 7, 1),\n                          (7, 4, 2), (6, 5, 3), ]\n        else:\n            print(f\"| LearnerPipe, ERROR: learner_num {learner_num} should in (1, 2, 4, 8)\")\n            exit()\n\n    def comm_data(self, data, learner_id, round_id):\n        if round_id == -1:\n            learner_jd = self.idx_l[learner_id][round_id]\n            self.pipes[learner_jd][0].send(data)\n            return self.pipes[learner_id][1].recv()\n        else:\n            learner_jd = self.idx_l[learner_id][round_id]\n            self.pipe0s[learner_jd].send(data)\n            return self.pipe1s[learner_id].recv()\n\n    def comm_network_optim(self, agent, learner_id):\n        device = self.device_list[learner_id]\n\n        for round_id in range(self.round_num):\n            data = get_comm_data(agent)\n            data = self.comm_data(data, learner_id, round_id)\n\n            if data:\n                avg_update_net(agent.act, data[0], device)\n                avg_update_optim(agent.act_optim, data[1], device) if data[1] else None\n\n                avg_update_net(agent.cri, data[2], device) if data[2] else None\n                avg_update_optim(agent.cri_optim, data[3], device)\n\n                avg_update_net(agent.act_target, data[4], device) if agent.if_use_act_target else None\n                avg_update_net(agent.cri_target, data[5], device) if agent.if_use_cri_target else None\n\n    def run0(self, args, comm_eva, comm_exp, learner_id=0):\n        # print(f'| os.getpid()={os.getpid()} PipeLearn.run, {learner_id}')\n        pass\n\n        '''init Agent'''\n        agent = args.agent\n        agent.init(net_dim=args.net_dim, state_dim=args.state_dim, action_dim=args.action_dim,\n                   gamma=args.gamma, reward_scale=args.reward_scale,\n                   learning_rate=args.learning_rate, if_per_or_gae=args.if_per_or_gae,\n                   env_num=args.env_num, gpu_id=args.learner_gpus[learner_id], )\n\n        agent.save_or_load_agent(args.cwd, if_save=False)\n\n        '''init ReplayBuffer'''\n        if agent.if_off_policy:\n            buffer_num = args.worker_num * args.env_num\n            if self.learner_num > 1:\n                buffer_num *= 2\n\n            buffer = ReplayBufferMP(max_len=args.max_memo, state_dim=args.state_dim,\n                                    action_dim=1 if args.if_discrete else args.action_dim,\n                                    if_use_per=args.if_per_or_gae,\n                                    buffer_num=buffer_num, gpu_id=args.learner_gpus[learner_id])\n            buffer.save_or_load_history(args.cwd, if_save=False)\n\n            def update_buffer(_traj_list):\n                step_sum = 0\n                r_exp_sum = 0\n                for buffer_i, (ten_state, ten_other) in enumerate(_traj_list):\n                    buffer.buffers[buffer_i].extend_buffer(ten_state, ten_other)\n\n                    step_r_exp = get_step_r_exp(ten_reward=ten_other[:, 0])  # other = (reward, mask, action)\n                    step_sum += step_r_exp[0]\n                    r_exp_sum += step_r_exp[1]\n                return step_sum, r_exp_sum / len(_traj_list)\n        else:\n            buffer = list()\n\n            def update_buffer(_traj_list):\n                _traj_list = list(map(list, zip(*_traj_list)))\n                _traj_list = [torch.cat(t, dim=0) for t in _traj_list]\n                (ten_state, ten_reward, ten_mask, ten_action, ten_noise) = _traj_list\n                buffer[:] = (ten_state.squeeze(1),\n                             ten_reward,\n                             ten_mask,\n                             ten_action.squeeze(1),\n                             ten_noise.squeeze(1))\n\n                _step, _r_exp = get_step_r_exp(ten_reward=buffer[1])\n                return _step, _r_exp\n\n        '''start training'''\n        cwd = args.cwd\n        batch_size = args.batch_size\n        repeat_times = args.repeat_times\n        soft_update_tau = args.soft_update_tau\n        del args\n\n        if_train = True\n        while if_train:\n            traj_lists = comm_exp.explore(agent)\n            if self.learner_num > 1:\n                data = self.comm_data(traj_lists, learner_id, round_id=-1)\n                traj_lists.extend(data)\n            traj_list = sum(traj_lists, list())\n\n            steps, r_exp = update_buffer(traj_list)\n            del traj_lists\n            logging_tuple = agent.update_net(buffer, batch_size, repeat_times, soft_update_tau)\n            if self.learner_num > 1:\n                self.comm_network_optim(agent, learner_id)\n\n            if comm_eva:\n                if_train, if_save = comm_eva.evaluate_and_save_mp(agent.act, steps, r_exp, logging_tuple)\n\n        agent.save_or_load_agent(cwd, if_save=True)\n        if agent.if_off_policy:\n            print(f\"| LearnerPipe.run: ReplayBuffer saving in {cwd}\")\n            buffer.save_or_load_history(cwd, if_save=True)\n\n    def run(self, args, comm_eva, comm_exp, learner_id=0):\n        # print(f'| os.getpid()={os.getpid()} PipeLearn.run, {learner_id}')\n        pass\n\n        '''init Agent'''\n        agent = args.agent\n        agent.init(net_dim=args.net_dim, state_dim=args.state_dim, action_dim=args.action_dim,\n                   gamma=args.gamma, reward_scale=args.reward_scale,\n                   learning_rate=args.learning_rate, if_per_or_gae=args.if_per_or_gae,\n                   env_num=args.env_num, gpu_id=args.learner_gpus[learner_id], )\n        agent.save_or_load_agent(args.cwd, if_save=False)\n\n        '''init ReplayBuffer'''\n        if agent.if_off_policy:\n            buffer_num = args.worker_num * args.env_num\n            if self.learner_num > 1:\n                buffer_num *= 2\n\n            buffer = ReplayBufferMP(max_len=args.max_memo, state_dim=args.state_dim,\n                                    action_dim=1 if args.if_discrete else args.action_dim,\n                                    if_use_per=args.if_per_or_gae,\n                                    buffer_num=buffer_num, gpu_id=args.learner_gpus[learner_id])\n            buffer.save_or_load_history(args.cwd, if_save=False)\n\n            def update_buffer(_traj_list):\n                step_sum = 0\n                r_exp_sum = 0\n                for buffer_i, (ten_state, ten_other) in enumerate(_traj_list):\n                    buffer.buffers[buffer_i].extend_buffer(ten_state, ten_other)\n\n                    step_r_exp = get_step_r_exp(ten_reward=ten_other[:, 0])  # other = (reward, mask, action)\n                    step_sum += step_r_exp[0]\n                    r_exp_sum += step_r_exp[1]\n                return step_sum, r_exp_sum / len(_traj_list)\n        else:\n            buffer = list()\n\n            def update_buffer(_traj_list):\n                _traj_list = list(map(list, zip(*_traj_list)))\n                _traj_list = [torch.cat(t, dim=0) for t in _traj_list]\n                (ten_state, ten_reward, ten_mask, ten_action, ten_noise) = _traj_list\n                buffer[:] = (ten_state.squeeze(1),\n                             ten_reward,\n                             ten_mask,\n                             ten_action.squeeze(1),\n                             ten_noise.squeeze(1))\n\n                _step, _r_exp = get_step_r_exp(ten_reward=buffer[1])\n                return _step, _r_exp\n\n        '''start training'''\n        cwd = args.cwd\n        batch_size = args.batch_size\n        repeat_times = args.repeat_times\n        soft_update_tau = args.soft_update_tau\n        del args\n\n        if_train = True\n        while if_train:\n            traj_lists = comm_exp.explore(agent)\n            if self.learner_num > 1:\n                data = self.comm_data(traj_lists, learner_id, round_id=-1)\n                traj_lists.extend(data)\n            traj_list = sum(traj_lists, list())\n\n            if sys.platform == 'win32':  # Avoid CUDA runtime error (801)\n                # Python3.9< multiprocessing can't send torch.tensor_gpu in WinOS. So I send torch.tensor_cpu\n                traj_list = [[item.to(torch.device('cpu'))\n                              for item in item_list]\n                             for item_list in traj_list]\n\n            steps, r_exp = update_buffer(traj_list)\n            del traj_lists\n\n            logging_tuple = agent.update_net(buffer, batch_size, repeat_times, soft_update_tau)\n            if self.learner_num > 1:\n                self.comm_network_optim(agent, learner_id)\n\n            if comm_eva:\n                if_train, if_save = comm_eva.evaluate_and_save_mp(agent.act, steps, r_exp, logging_tuple)\n\n        agent.save_or_load_agent(cwd, if_save=True)\n        if agent.if_off_policy:\n            print(f\"| LearnerPipe.run: ReplayBuffer saving in {cwd}\")\n            buffer.save_or_load_history(cwd, if_save=True)\n\n\nclass PipeEvaluator:  # [ElegantRL.10.21]\n    def __init__(self):\n        super().__init__()\n        self.pipe0, self.pipe1 = mp.Pipe()\n\n    def evaluate_and_save_mp(self, agent_act, steps, r_exp, logging_tuple):\n        if self.pipe1.poll():  # if_evaluator_idle\n            if_train, if_save = self.pipe1.recv()\n            act_cpu_dict = {k: v.cpu() for k, v in agent_act.state_dict().items()}\n        else:\n            if_train, if_save = True, False\n            act_cpu_dict = None\n\n        self.pipe1.send((act_cpu_dict, steps, r_exp, logging_tuple))\n        return if_train, if_save\n\n    def run(self, args, _learner_id):\n        # print(f'| os.getpid()={os.getpid()} PipeEvaluate.run {agent_id}')\n        pass\n\n        '''init: Agent'''\n        agent = args.agent\n        agent.init(net_dim=args.net_dim, state_dim=args.state_dim, action_dim=args.action_dim,\n                   gamma=args.gamma, reward_scale=args.reward_scale,\n                   learning_rate=args.learning_rate, if_per_or_gae=args.if_per_or_gae,\n                   env_num=args.env_num, gpu_id=args.eval_gpu_id, )\n\n        agent.save_or_load_agent(args.cwd, if_save=False)\n\n        act = agent.act\n        [setattr(param, 'requires_grad', False) for param in agent.act.parameters()]\n        del agent\n\n        '''init Evaluator'''\n        eval_env = build_eval_env(args.eval_env, args.env, args.env_num, args.eval_gpu_id, args)\n        evaluator = Evaluator(cwd=args.cwd, agent_id=0,\n                              eval_env=eval_env, eval_gap=args.eval_gap,\n                              eval_times1=args.eval_times1, eval_times2=args.eval_times2,\n                              target_return=args.target_return, if_overwrite=args.if_overwrite)\n        evaluator.save_or_load_recoder(if_save=False)\n\n        '''loop'''\n        cwd = args.cwd\n        break_step = args.break_step\n        if_allow_break = args.if_allow_break\n        del args\n\n        if_save = False\n        if_train = True\n        if_reach_goal = False\n        with torch.no_grad():\n            while if_train:\n                act_dict, steps, r_exp, logging_tuple = self.pipe0.recv()\n\n                if act_dict:\n                    act.load_state_dict(act_dict)\n                    if_reach_goal, if_save = evaluator.evaluate_and_save(act, steps, r_exp, logging_tuple)\n                else:\n                    evaluator.total_step += steps\n\n                if_train = not ((if_allow_break and if_reach_goal)\n                                or evaluator.total_step > break_step\n                                or os.path.exists(f'{cwd}/stop'))\n                self.pipe0.send((if_train, if_save))\n\n        print(f'| UsedTime: {time.time() - evaluator.start_time:>7.0f} | SavedDir: {cwd}')\n        evaluator.save_or_load_recoder(if_save=True)\n\n\n# class PipeVectorEnv:\n#     def __init__(self, args):\n#         self.env_num = args.env_num\n#         self.pipes = [mp.Pipe() for _ in range(self.env_num)]\n#         self.pipe0s = [pipe[0] for pipe in self.pipes]\n#\n#         env = build_env(args.eval_env)\n#         self.max_step = env.max_step\n#         self.env_name = env.env_name\n#         self.state_dim = env.state_dim\n#         self.action_dim = env.action_dim\n#         self.action_max = env.action_max\n#         self.if_discrete = env.if_discrete\n#         self.target_return = env.target_return\n#         del env\n#\n#         self.process = list()\n#         for env_id in range(args.env_num):\n#             self.process.append(mp.Process(target=self.run, args=(args, env_id)))\n#             args.random_seed += 1  # set different for each env\n#         # [p.start() for p in self.process]\n#\n#     def reset(self):\n#         vec_state = [pipe0.recv() for pipe0 in self.pipe0s]\n#         return vec_state\n#\n#     def step(self, vec_action):  # pipe0_step\n#         for i in range(self.env_num):\n#             self.pipe0s[i].send(vec_action[i])\n#         return [pipe0.recv() for pipe0 in self.pipe0s]  # list of (state, reward, done)\n#\n#     def run(self, args, env_id):\n#         np.random.seed(args.random_seed)\n#\n#         env = build_env(args.eval_env, if_print=False)\n#         pipe1 = self.pipes[env_id][1]\n#         del args\n#\n#         state = env.reset()\n#         pipe1.send(state)\n#\n#         while True:\n#             action = pipe1.recv()\n#             state, reward, done, _ = env.step(action)\n#             pipe1.send((env.reset() if done else state, reward, done))\n#\n#     # def check(self):\n#     #     vec_state = self.reset()\n#     #     ten_state = np.array(vec_state)\n#     #     print(ten_state.shape)\n#     #\n#     #     vec_action = np.array(((0.0, 1.0, 0.0),\n#     #                            (0.0, 0.5, 0.0),\n#     #                            (0.0, 0.1, 0.0),))[:self.env_num]\n#     #     assert self.env_num <= 3\n#     #\n#     #     trajectory_list = list()\n#     #     for _ in range(8):\n#     #         s_r_d_list = self.step(vec_action)\n#     #         ten_state = np.array([s_r_d[0] for s_r_d in s_r_d_list])\n#     #         print(ten_state.shape)\n#     #         trajectory_list.append(s_r_d_list)\n#     #\n#     #     trajectory_list = list(map(list, zip(*trajectory_list)))  # 2D-list transpose\n#     #     print('| shape of trajectory_list:', len(trajectory_list), len(trajectory_list[0]))\n\ndef get_comm_data(agent):\n    act = list(agent.act.parameters())\n    cri_optim = get_optim_parameters(agent.cri_optim)\n\n    if agent.cri is agent.act:\n        cri = None\n        act_optim = None\n    else:\n        cri = list(agent.cri.parameters())\n        act_optim = get_optim_parameters(agent.act_optim)\n\n    act_target = list(agent.act_target.parameters()) if agent.if_use_act_target else None\n    cri_target = list(agent.cri_target.parameters()) if agent.if_use_cri_target else None\n    return act, act_optim, cri, cri_optim, act_target, cri_target  # data\n\n\n\"\"\"Utils\"\"\"\n\n\ndef get_num_learner(visible_gpu):\n    assert isinstance(visible_gpu, str)  # visible_gpu may in {'0', '1', '1,', '1,2', '1,2,'}\n    visible_gpu = eval(visible_gpu)\n    num_learner = 1 if isinstance(visible_gpu, int) else len(visible_gpu)\n    return num_learner\n\n\ndef process_safely_terminate(process):\n    for p in process:\n        try:\n            p.kill()\n        except OSError as e:\n            print(e)\n            pass\n\n\ndef get_optim_parameters(optim):  # for avg_update_optim()\n    params_list = list()\n    for params_dict in optim.state_dict()['state'].values():\n        params_list.extend([t for t in params_dict.values() if isinstance(t, torch.Tensor)])\n    return params_list\n\n\ndef avg_update_optim(dst_optim, src_optim_param, device):\n    for dst, src in zip(get_optim_parameters(dst_optim), src_optim_param):\n        dst.data.copy_((dst.data + src.data.to(device)) * 0.5)\n        # dst.data.copy_(src.data * tau + dst.data * (1 - tau))\n\n\ndef avg_update_net(dst_net, src_net_param, device):\n    for dst, src in zip(dst_net.parameters(), src_net_param):\n        dst.data.copy_((dst.data + src.data.to(device)) * 0.5)\n"
  },
  {
    "path": "envs.py",
    "content": "from gym import Env\nfrom gym.spaces import Box, Space\nfrom features import Feature\nfrom stoppers import Stopper\nfrom assessments import Assessment\nfrom wtpy.apps import WtBtAnalyst\nfrom wtpy.WtBtEngine import WtBtEngine\nfrom strategies import StateTransfer, EngineType\nfrom multiprocessing import Pipe,  Process\nfrom os import getpid\n\n# 一个进程只能有一个env\n\n\nclass WtEnv(Env):\n    TRAINER = 1\n    EVALUATOR = 2\n    DEBUGGER = 3\n\n    def __init__(self,\n                 strategy: StateTransfer,\n                 stopper: Stopper,\n                 feature: Feature,\n                 assessment: Assessment,\n                 time_range: tuple,\n                 slippage: int = 0,\n                 id: int = getpid(),\n                 mode=1,\n                 ):\n\n        self.reward_range\n\n        if mode == 3:  # 调试模式\n            self._log_: str = './config/03research/log_debugger.json'\n            self._dump_: bool = True\n            self._mode_: str = 'WtDebugger'\n        elif mode == 2:  # 评估模式\n            self._log_: str = './config/03research/log_evaluator.json'\n            self._dump_: bool = True\n            self._mode_: str = 'WtEvaluator'\n        else:  # 训练模式\n            self._log_: str = './config/03research/log_trainer.json'\n            self._dump_: bool = False\n            self._mode_: str = 'WtTrainer'\n\n        self._id_: int = id\n        self._iter_: int = 0\n        self._run_: bool = False\n\n        self.__strategy__ = strategy\n        self._et_ = self.__strategy__.EngineType()\n        self.__stopper__: Stopper = stopper\n        self.__slippage__: int = slippage\n\n        self.__feature__: Feature = feature\n        self.observation_space: Box = Box(**self.__feature__.observation)\n        self.action_space: Space = self.__strategy__.Action(\n            len(self.__feature__.securities))\n\n        self._assessment_: Assessment = assessment\n\n        self.__time_range__ = time_range\n\n    def _debug_(self):\n        pass\n\n    def __step__(self):\n        finished = not self._cb_step_()\n        if self._assessment_.done or finished:\n            self._assessment_.finish()\n            self._debug_()\n            self.close()\n            # if self._dump_:\n            #     self.analyst(self._iter_)\n\n    def close(self):\n        if self._run_ and hasattr(self, '_engine_'):\n            self._engine_.stop_backtest()\n            self._run_ = False\n\n    def reset(self):\n        self.close()\n        time_start, time_end = self.__time_range__[self._iter_%len(self.__time_range__)]\n        self._iter_ += 1\n\n        if not hasattr(self, '_engine_'):\n            # 创建一个运行环境\n            self._engine_: WtBtEngine = WtBtEngine(\n                eType=self._et_,\n                logCfg=self._log_,\n            )\n            if self._et_ == EngineType.ET_CTA:\n                self._engine_.init(\n                    './config/01commom/',\n                    './config/03research/cta.json')\n                self._cb_step_ = self._engine_.cta_step\n            elif self._et_ == EngineType.ET_HFT:\n                self._engine_.init(\n                    './config/01commom/',\n                    './config/03research/hft.json')\n                self._cb_step_ = self._engine_.hft_step\n            else:\n                raise AttributeError\n\n            self._engine_.configBacktest(time_start, time_end)\n            self._engine_.commitBTConfig()\n        else:\n            self._engine_.set_time_range(time_start, time_end)\n\n        # 重置奖励\n        self._assessment_.reset()\n\n        # 创建一个策略并加入运行环境\n        self._strategy_: StateTransfer = self.__strategy__(\n            name=self._name_(self._iter_),\n            feature=self.__feature__,\n            stopper=self.__stopper__,\n            assessment=self._assessment_,\n        )\n\n        # 设置策略的时候一定要安装钩子\n        if self._et_ == EngineType.ET_CTA:\n            self._engine_.set_cta_strategy(\n                self._strategy_, slippage=self.__slippage__, hook=True, persistData=self._dump_)\n        elif self._et_ == EngineType.ET_HFT:\n            self._engine_.set_hft_strategy(self._strategy_, hook=True)\n        else:\n            raise AttributeError\n\n        # 回测一定要异步运行\n        self._engine_.run_backtest(bAsync=True, bNeedDump=self._dump_)\n        self._run_ = True\n\n        self.__step__()\n        return self.__feature__.obs\n\n    def step(self, action):\n        assert hasattr(self, '_engine_')\n        self._strategy_.setAction(action)\n        self._cb_step_()\n\n        self.__step__()\n        return self.__feature__.obs, self._assessment_.reward, self._assessment_.done, {}\n\n    @property\n    def assets(self):\n        return self._assessment_.curr_assets\n\n    def analyst(self, iter: int):\n        name = self._name_(iter)\n        analyst = WtBtAnalyst()\n        folder = \"./outputs_bt/%s/\" % name\n        analyst.add_strategy(\n            name, folder=folder, init_capital=self._assessment_._init_assets_, rf=0.02, annual_trading_days=240)\n        try:\n            analyst.run_new('%s/PnLAnalyzing.xlsx' % folder)\n        except:\n            analyst.run('%s/PnLAnalyzing.xlsx' % folder)\n\n    def analysts(self):\n        for iter in range(1, self._iter_+1):\n            self.analysis(iter)\n\n    def _name_(self, iter):\n        time_start, time_end = self.__time_range__[(iter-1)%len(self.__time_range__)]\n        return '%s%s_%s_%s_%s-%s' % (self._mode_, self._id_, self.__strategy__.Name(), iter, str(time_start)[:8], str(time_end)[:8])\n\n    def __del__(self):\n        if hasattr(self, '_engine_'):\n            self._engine_.release_backtest()\n\n\ndef __sub_process_worker__(pipe: Pipe, _cmd_, _attr_, cli, kwargs):\n    env = cli(**kwargs)\n    while True:\n        cmd, kwargs = pipe.recv()\n        if cmd in _cmd_:\n            if cmd == 'stop':\n                pipe.send(True)\n                pipe.close()\n                break\n            call = getattr(env, cmd)\n            if kwargs:\n                # print(cmd, kwargs)\n                pipe.send(call(**kwargs))\n            else:\n                pipe.send(call())\n        elif cmd in _attr_:\n            pipe.send(getattr(env, cmd))\n        else:\n            pipe.send('unknow %s' % cmd)\n\n\nclass WtSubProcessEnv(Env):\n    _cmd_ = ('reset', 'step', 'close', 'stop')\n    _attr_ = ('reward_range', 'metadata',\n              'observation_space', 'action_space', 'assets')\n\n    def __init__(self, cli, **kwargs):\n        self._pipe_, pipe = Pipe()\n        self._process_ = Process(\n            target=__sub_process_worker__,\n            args=(pipe, self._cmd_, self._attr_, cli, kwargs),\n            daemon=True\n        )\n        self._process_.start()\n\n    def __do__(self, cmd, **kwargs):\n        self._pipe_.send((cmd, kwargs))\n        return self._pipe_.recv()\n\n    @property\n    def metadata(self):\n        return self.__do__('metadata')\n\n    @property\n    def reward_range(self):\n        return self.__do__('reward_range')\n\n    @property\n    def observation_space(self):\n        return self.__do__('observation_space')\n\n    @property\n    def action_space(self):\n        return self.__do__('action_space')\n\n    @property\n    def assets(self):\n        return self.__do__('assets')\n\n    def reset(self):\n        return self.__do__('reset')\n\n    def step(self, action):\n        # print(type(action))\n        return self.__do__('step', action=action)\n\n    def close(self):\n        return self.__do__('close')\n\n    def __del__(self):\n        self.__do__('stop')\n        self._process_.join()\n        self._process_.close()\n"
  },
  {
    "path": "envs_simple_cta.py",
    "content": "from features import Indicator\nfrom assessments import SimpleAssessment\nfrom stoppers import SimpleStopper\nfrom strategies import SimpleCTA\nfrom envs import WtEnv, WtSubProcessEnv\n\n\nclass SimpleCTAEnv(WtEnv):\n    def __init__(self,\n                 time_range: tuple,\n                 slippage: int = 0,\n                 mode: int = 1\n                 ):\n        assets = 180000\n\n        # 角色：数据研究人员、强化学习研究人员、策略研究人员\n        # 原则：每个角色的分工模拟交易机构做隔离\n\n        # 特征工程组件, 滚动窗口=2，根据特征工程自动生成强化学习需要的observation\n        # 特征工程的因子生成绝大多数情况下（舆情因子、周期因子）不是由env负责的，所以尽量使用特征工程组件而不要在env中定义因子\n        # 特征工程的因子定义和生成，主要使用者是数据研究人员\n        # 特征工程的因子后处理，主要使用者是强化学习研究人员\n        feature: Indicator = Indicator(\n            code='DCE.c.HOT', period=Indicator.M5, roll=1, assets=assets)  # 每一个特征工程必须指定一个主要标的\n\n        # 按需添加其他标的\n        feature.addSecurity(code='DCE.cs.HOT')\n        feature.addSecurity(code='DCE.m.HOT')\n        # feature.addSecurity(code='CZCE.RM.HOT')\n        # feature.addSecurity(code='CZCE.JR.HOT')\n        # feature.addSecurity(code='CZCE.TA.HOT')\n        # feature.addSecurity(code='DCE.jd.HOT')\n        # feature.addSecurity(code='SHFE.rb.HOT')\n        # feature.addSecurity(code='SHFE.hc.HOT')\n        # feature.addSecurity(code='SHFE.bu.HOT')\n        # feature.addSecurity(code='SHFE.fu.HOT')\n        # feature.addSecurity(code='SHFE.ni.HOT')\n\n        # 分别使用5分钟、15分钟、日线建立多周期因子\n        for period in (feature.M5, ):  # feature.M5, feature.M10,\n            feature.price(period)\n            feature.volume(period)\n            # feature.roc(period)\n            feature.bollinger(period)  # 标准差通道\n            # feature.sar(period)\n            # feature.trange(period)  # 波动率\n            feature.macd(period)  # 双均线强度\n            # feature.rsi(period)\n            # feature.dx(period)\n            # feature.obv(period)\n            feature.kdj(period)\n\n        # 除上述特征，特征工程组件会自动加上 \"开仓的最大浮盈、开仓的最大亏损、开仓的浮动盈亏、当前持仓数\"4列，如果没有持仓则全部为0\n\n        # 止盈止损组件，暂时是个摆设\n        # 止盈止损组件的主要使用者是策略研究人员\n        stopper: SimpleStopper = SimpleStopper()\n\n        # 评估组件\n        # 评估组件的主要使用者是强化学习研究人员定义reward\n        assessment: SimpleAssessment = SimpleAssessment(init_assets=assets)\n        super().__init__(\n            # 策略只做跟交易模式相关的操作(如趋势策略、日内回转、配对交易、统计套利)，不参与特征生成和评估，主要使用者是策略研究人员\n            strategy=SimpleCTA,\n            stopper=stopper,\n            feature=feature,  # 特征计算\n            assessment=assessment,  # 评估计算\n            time_range=time_range,\n            slippage=slippage,\n            mode=mode,  # 1训练模式，2评估模式，3debug模式\n        )\n\n    def _debug_(self):\n        print('%s: assets %s, reward %s, reward_sum %s' % (\n            self._name_(self._iter_), self._assessment_.curr_assets-self._assessment_.init_assets, self._assessment_.reward, sum(self._assessment_.rewards)))\n\n\nclass SimpleCTASubProcessEnv(WtSubProcessEnv):\n    def __init__(self,\n                 time_range: tuple,\n                 slippage: int = 0,\n                 mode: int = 1):\n        super().__init__(\n            cli=SimpleCTAEnv,\n            time_range=time_range,\n            slippage=slippage,\n            mode=mode)\n\n\nif __name__ == '__main__':\n    env: WtEnv = SimpleCTASubProcessEnv(time_start=201901011600,\n                                        time_end=202001011600, mode=2)\n\n    print(env.action_space.contains)\n\n    for i in range(1):  # 模拟训练10次\n        obs = env.reset()\n        done = False\n        n = 0\n        while not done:\n            # box.contains of Box([-3. -3. -3. -3.], [3. 3. 3. 3.], (4,), float16)\n            action = env.action_space.sample()  # 模拟智能体产生动作\n            obs, reward, done, info = env.step(action)\n            n += 1\n            print(\n                # 'action:', action,\n                # 'obs:', obs,\n                'reward:', reward,\n                # 'done:', done\n            )\n        #     break\n        # break\n        print('第%s次训练完成，执行%s步, 市值%s。' % (i+1, n, env.assets))\n    env.close()\n"
  },
  {
    "path": "features.py",
    "content": "import numpy as np\nimport talib as ta\nfrom reprocess import REPROCESS, ZFILTER, MAXMIN\nfrom wtpy.StrategyDefs import CtaContext, HftContext\n\n\nclass Feature():\n    M1 = 'm1'\n    M3 = 'm3'\n    M5 = 'm5'\n    M10 = 'm10'\n    M15 = 'm15'\n    M30 = 'm30'\n    M60 = 'm60'\n    D1 = 'd1'\n\n    def __init__(self, code: str, period: str, roll: int, assets: float = 1000000) -> None:\n        self.__shape__: tuple = tuple()\n        self._roll_: int = int(roll)\n        self._assets_: float = float(assets)\n\n        self.__cb__: dict = {}\n\n        self.__obs__: dict = {}\n        self.__time__: int = 0\n\n        self.__securities__: list = []\n        self.addSecurity(code=code)\n\n        self.__main__: tuple = (code, period)\n        self.__subscribies__: dict = {}\n        self._subscribe_(period=period, count=1)\n\n        # self.__comminfo__: dict = {}\n\n    @property\n    def securities(self):\n        return self.__securities__\n\n    def addSecurity(self, code: str):\n        if self.__shape__ or code in self.__securities__:\n            return\n        self.__securities__.append(code)\n\n    def _subscribe_(self, period: str, count: int = 1):\n        self.__subscribies__[period] = max(\n            self.__subscribies__.get(period, 0),\n            count+self._roll_\n        )\n\n    def subscribe(self, context: CtaContext):\n        '''\n        根据特征需求订阅数据\n        '''\n        for code in self.__securities__:\n            # comminfo = context.stra_get_comminfo(code)  # 品种信息数据\n            # self.__comminfo__[code] = (comminfo.pricetick, comminfo.volscale)\n            for period, count in self.__subscribies__.items():\n                context.stra_get_bars(\n                    stdCode=code,\n                    period=period,\n                    count=count,\n                    isMain=(code == self.__main__[0]\n                            and period == self.__main__[1])\n                )\n\n    def _callback_(self, space: int, period: str, callback, reprocess: REPROCESS, **kwargs):\n        if self.__shape__ or space < 1:\n            return\n        if period not in self.__cb__:\n            self.__cb__[period] = {}\n        self.__cb__[period][callback.__name__] = (\n            space, callback, reprocess, kwargs)\n\n    def sigmoid(self, value, thresh=30):\n        return (1 / (1 + np.exp(-(value/thresh) * np.e)) - 0.5)*thresh\n\n    @property\n    def observation(self) -> dict:\n        '''\n        根据特征需求生成observation\n        '''\n        self.__shape__ = (\n            len(self.securities),\n            sum(c[0] for v in self.__cb__.values()\n                for c in v.values())*self._roll_+4\n        )\n        self.__flatten__ = (self.__shape__[0]*self.__shape__[1],)\n        return dict(low=-np.inf, high=np.inf, shape=self.__flatten__, dtype=np.float64)\n\n    def calculate(self, context: CtaContext):\n        self.__time__ = context.stra_get_date()*10000+context.stra_get_time()\n        if self.__time__ not in self.__obs__:\n            obs = np.full(shape=self.__shape__,\n                          fill_value=np.nan, dtype=np.float64)\n            for i, code in enumerate(self.securities):  # 处理每一个标的\n                n = 0\n                for period, v in self.__cb__.items():  # 处理每一个周期\n                    for space, callback, p, args in v.values():  # 处理每一个特征\n                        features = callback(\n                            context=context, code=code, period=period, args=args)  # 通过回调函数计算特征\n                        if space == 1:\n                            features = (features, )\n                        for feature in features:  # 处理每一个返回值\n                            # print(p.calculate(feature))\n                            # obs[i][n:n +self._roll_] = p.calculate(feature)[-self._roll_:]\n                            obs[i][n:n +self._roll_] = p.calculate(feature)[-self._roll_:]\n                            #np.clip(p.calculate(feature)[-self._roll_:], -1, 1)\n                            n += self._roll_\n            # self.__obs__[self.__time__] = obs\n            # self.__obs__[self.__time__] = self.sigmoid(obs)\n            self.__obs__[self.__time__] = obs\n\n        # 开仓最大浮盈\n        self.__obs__[self.__time__][:, -4] = tuple(\n            context.stra_get_detail_profit(\n                # stdCode=code, usertag='', flag=1)/self.__comminfo__[code][1]/self.__comminfo__[code][0] for code in self.securities\n                stdCode=code, usertag='', flag=1)/self._assets_ for code in self.securities\n        )\n\n        # 开仓最大亏损\n        self.__obs__[self.__time__][:, -3] = tuple(\n            context.stra_get_detail_profit(\n                # stdCode=code, usertag='', flag=-1)/self.__comminfo__[code][1]/self.__comminfo__[code][0] for code in self.securities\n                stdCode=code, usertag='', flag=-1)/self._assets_ for code in self.securities\n        )\n\n        # 开仓浮动盈亏\n        self.__obs__[self.__time__][:, -2] = tuple(\n            context.stra_get_detail_profit(\n                # stdCode=code, usertag='', flag=0)/self.__comminfo__[code][1]/self.__comminfo__[code][0] for code in self.securities\n                stdCode=code, usertag='', flag=0)/self._assets_ for code in self.securities\n        )\n\n        # 持仓数\n        self.__obs__[self.__time__][:, -1] = tuple(\n            context.stra_get_position(stdCode=code) for code in self.securities)\n\n        # self.__obs__[self.__time__][:, -4:] = self.sigmoid(self.__obs__[self.__time__][:, -4:])\n        # np.clip(\n        #     self.__obs__[self.__time__][:, -4:], -1, 1,\n        #     out=self.__obs__[self.__time__][:, -4:])\n\n    @property\n    def obs(self):\n        # .astype(np.float64)\n        return self.__obs__.get(self.__time__).reshape(self.__flatten__)\n\n    def price(self, period: str, reprocess: REPROCESS = MAXMIN):\n        def price(context: CtaContext, code: str, period: str, args: dict):\n            return context.stra_get_bars(stdCode=code, period=period, count=self.__subscribies__[period]).closes\n\n        self._subscribe_(period=period, count=2+reprocess.n())\n        self._callback_(space=1, period=period,\n                        callback=price, reprocess=reprocess)\n\n    def volume(self, period: str, reprocess: REPROCESS = MAXMIN):\n        def volume(context: CtaContext, code: str, period: str, args: dict):\n            return context.stra_get_bars(stdCode=code, period=period, count=self.__subscribies__[period]).volumes\n\n        self._subscribe_(period=period, count=2+reprocess.n())\n        self._callback_(space=1, period=period,\n                        callback=volume, reprocess=reprocess)\n\n\nclass Indicator(Feature):\n    def roc(self, period: str, reprocess: REPROCESS = REPROCESS):\n        def roc(context: CtaContext, code: str, period: str, args: dict):\n            price = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period]).closes\n            price = np.log(price)\n            return (price[1:]/price[:-1]-1)\n            return np.diff(context.stra_get_bars(stdCode=code, period=period, count=self.__subscribies__[period]).closes)\n\n        self._subscribe_(period=period, count=2+reprocess.n())\n        self._callback_(space=1, period=period,\n                        callback=roc, reprocess=reprocess)\n\n    def bollinger(self, period: str, timeperiod=5, nbdevup=2, nbdevdn=2, reprocess: REPROCESS = MAXMIN):\n        def bollinger(context: CtaContext, code: str, period: str, args: dict):\n            closes = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period]).closes\n            upperband, middleband, lowerband = ta.BBANDS(closes, **args)\n            return upperband, middleband, lowerband\n            return upperband/closes-1, middleband/closes-1, lowerband/closes-1\n\n        self._subscribe_(period=period, count=timeperiod+reprocess.n())\n        self._callback_(space=3, period=period, callback=bollinger, reprocess=reprocess,\n                        timeperiod=timeperiod, nbdevup=nbdevup, nbdevdn=nbdevdn)\n\n    def sar(self, period: str, acceleration=0, maximum=0, reprocess: REPROCESS = MAXMIN):\n        def sar(context: CtaContext, code: str, period: str, args: dict):\n            bars = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period])\n            return ta.SAR(high=bars.highs, low=bars.lows, **args)\n            return ta.SAR(high=bars.highs, low=bars.lows, **args)/bars.closes-1\n        self._subscribe_(period=period, count=10+reprocess.n())\n        self._callback_(space=1, period=period, acceleration=acceleration, maximum=maximum,\n                        callback=sar, reprocess=reprocess)\n\n    def trange(self, period: str, reprocess: REPROCESS = MAXMIN):\n        def trange(context: CtaContext, code: str, period: str, args: dict):\n            bars = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period])\n            return ta.TRANGE(high=bars.highs, low=bars.lows, close=bars.closes)\n            return ta.TRANGE(high=bars.highs, low=bars.lows, close=bars.closes)/bars.closes\n\n        self._subscribe_(period=period, count=2+reprocess.n())\n        self._callback_(space=1, period=period,\n                        callback=trange, reprocess=reprocess)\n\n    def macd(self, period: str, fastperiod: int = 12, slowperiod: int = 26, signalperiod: int = 9, reprocess: REPROCESS = MAXMIN):\n        def macd(context: CtaContext, code: str, period: str, args: dict):\n            return ta.MACD(np.log(context.stra_get_bars(stdCode=code, period=period, count=self.__subscribies__[period]).closes), **args)\n\n        self._subscribe_(period=period, count=slowperiod +\n                         signalperiod+reprocess.n())\n        self._callback_(space=3, period=period, callback=macd, reprocess=reprocess,\n                        fastperiod=fastperiod, slowperiod=slowperiod, signalperiod=signalperiod)\n\n    def rsi(self, period: str, fastperiod: int = 6, midperiod: int = 12, slowperiod: int = 24, reprocess: REPROCESS = MAXMIN):\n        def rsi(context: CtaContext, code: str, period: str, args: dict):\n            bars = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period])\n            return ta.RSI(bars.closes, args['fastperiod']), ta.RSI(bars.closes, args['midperiod']), ta.RSI(bars.closes, args['slowperiod'])\n            return ta.RSI(bars.closes, args['fastperiod'])/100, ta.RSI(bars.closes, args['midperiod'])/100, ta.RSI(bars.closes, args['slowperiod'])/100\n\n        self._subscribe_(period=period, count=slowperiod + 1 + reprocess.n())\n        self._callback_(space=3, period=period, callback=rsi, reprocess=reprocess,\n                        fastperiod=fastperiod, midperiod=midperiod, slowperiod=slowperiod)\n\n    def dx(self, period: str, timeperiod=14, reprocess: REPROCESS = MAXMIN):\n        def dx(context: CtaContext, code: str, period: str, args: dict):\n            bars = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period])\n            return ta.DX(high=bars.highs, low=bars.lows, close=bars.closes, **args)\n            return ta.DX(high=bars.highs, low=bars.lows, close=bars.closes, **args)/100\n\n        self._subscribe_(period=period, count=timeperiod+1+reprocess.n())\n        self._callback_(space=1, period=period, callback=dx, reprocess=reprocess,\n                        timeperiod=timeperiod)\n\n    def obv(self, period: str, reprocess: REPROCESS = MAXMIN):\n        def obv(context: CtaContext, code: str, period: str, args: dict):\n            bars = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period])\n            return ta.OBV(bars.closes, bars.volumes, **args)\n\n        self._subscribe_(period=period, count=10+reprocess.n())\n        self._callback_(space=1, period=period,\n                        callback=obv, reprocess=reprocess)\n\n    def kdj(self, period: str, fastk_period: int = 5, slowk_period: int = 3, reprocess: REPROCESS = MAXMIN):\n        def kdj(context: CtaContext, code: str, period: str, args: dict):\n            bars = context.stra_get_bars(\n                stdCode=code, period=period, count=self.__subscribies__[period])\n            k, d = ta.STOCH(high=bars.highs, low=bars.lows,\n                            close=bars.closes, **args)\n            return k, d, (3*k-2*d)\n            return k/100, d/100, (3*k-2*d)/100\n\n        self._subscribe_(period=period, count=10 + 1 + reprocess.n())\n        self._callback_(space=3, period=period, callback=kdj, reprocess=reprocess,\n                        fastk_period=fastk_period, slowk_period=slowk_period)\n\n    # def weights(self, period: str, timeperiod:int=1, index:str='000300', reprocess:REPROCESS =REPROCESS):\n    #     def example(context: CtaContext, code: str, period: str, args: dict):\n    #         # 标的代码 code\n    #         # 标的周期 period\n    #         # 自定义参数 args['index']\n    #         # 日期int context.stra_get_date()\n    #         # 时间int context.stra_get_time()\n    #         return 查询代码(code, context.stra_get_date(), args['index'])\n\n    #     self._subscribe_(period=period, count=1+reprocess.n())  # 在什么周期的event触发，需要几根bar\n    #     self._callback_(\n    #         space=1, #查询代码有几个值，自动生成obs的占位空间\n    #         period=period,\n    #         callback=example,\n    #         reprocess=reprocess\n    #         timeperiod=timeperiod,\n    #         index=index)\n"
  },
  {
    "path": "reprocess.py",
    "content": "import numpy as np\nimport talib as ta\n\n\nclass REPROCESS():\n    @staticmethod\n    def n() -> int:  # 定义至少需要多少条数据才能计算\n        return 0\n\n    @staticmethod\n    def calculate(data: np.ndarray) -> np.ndarray:  # 计算方法\n        return data\n\n\nclass ZSCORE(REPROCESS):\n    @staticmethod\n    def n() -> int:\n        return 1200\n\n    @staticmethod\n    def calculate(data: np.ndarray) -> np.ndarray:\n        return (data-ta.MA(data, __class__.n()))/(ta.STDDEV(data, __class__.n())+1e-5)\n\n\nclass ZFILTER(REPROCESS):\n    '''\n    https://github.com/zhangchuheng123/Reinforcement-Implementation/blob/master/code/ppo.py\n    '''\n    @staticmethod\n    def n() -> int:\n        return 1200\n\n    @staticmethod\n    def calculate(data: np.ndarray) -> np.ndarray:\n        # 1e-8\n        return (data-ta.MA(data, __class__.n()))/(ta.STDDEV(data, __class__.n())+1e-5)\n\n\nclass MAXMIN(REPROCESS):\n    @staticmethod\n    def n() -> int:\n        return 1200\n\n    @staticmethod\n    def calculate(data: np.ndarray) -> np.ndarray:\n        data = data[-__class__.n():]\n        return (data-data.min())/(data.max()-data.min()+1e-5)*2-1\n"
  },
  {
    "path": "requirements/full_with_cuda.yaml",
    "content": "channels:\n  - pytorch\n  - conda-forge\n  - defaults\ndependencies:\n  - python==3.8.12\n  - pip\n\n    # torch\n  - pytorch\n  - torchvision\n  - torchaudio\n  - cudatoolkit\n\n    # drl\n  - matplotlib\n  - gym\n  - stable-baselines3\n  - ray-rllib\n  - tensorboard\n  - gputil\n  - opencensus \n  - prometheus_client \n  - aiohttp-cors \n  - aioredis==1.3.1\n  - gpy\n  - scikit-learn\n\n    # wtpy\n  - pandas\n  - flask\n  - flask-compress\n  - xlsxwriter\n  - pyquery\n  - zstandard\n\n    # \n  - bottleneck\n  - numexpr\n  - tqdm\n\n    # vscode\n  - IPython\n  - ipywidgets"
  },
  {
    "path": "requirements/full_without_cuda.yaml",
    "content": "channels:\n  - pytorch\n  - conda-forge\n  - defaults\ndependencies:\n  - python==3.8.12\n  - pip\n\n    # torch\n  - pytorch\n  - torchvision\n  - torchaudio\n  - cpuonly\n\n    # drl\n  - matplotlib\n  - gym\n  - stable-baselines3\n  - ray-rllib\n  - tensorboard\n  - gputil\n  - opencensus \n  - prometheus_client \n  - aiohttp-cors \n  - aioredis==1.3.1\n  - gpy\n  - scikit-learn\n\n    # wtpy\n  - pandas\n  - flask\n  - flask-compress\n  - xlsxwriter\n  - pyquery\n  - zstandard\n\n    # \n  - bottleneck\n  - numexpr\n  - tqdm\n\n    # vscode\n  - IPython\n  - ipywidgets"
  },
  {
    "path": "run_toy.py",
    "content": "from runner import entry, Runner\n\nclass SimpleRunner(Runner):\n    def test(self):\n        print('test1')\n\n\nif __name__ == '__main__':\n    entry(obj=SimpleRunner())\n"
  },
  {
    "path": "runner.py",
    "content": "import click\n\nclass Runner():\n    def debug(self):\n        print('debug')\n    def train(self):\n        print('train')\n    def test(self):\n        print('test')\n\n\n@click.group()\n@click.pass_context\ndef entry(ctx, obj:Runner=Runner()):\n    assert isinstance(obj, Runner)\n    ctx.ensure_object(Runner)\n\n@entry.command()\n@click.pass_context\ndef debug(ctx):\n    ctx.obj.debug()\n\n@entry.command()\n@click.pass_context\ndef train(ctx):\n    ctx.obj.train()\n\n@entry.command()\n@click.pass_context\ndef test(ctx):\n    ctx.obj.test()\n\nif __name__ == '__main__':\n    entry()"
  },
  {
    "path": "stoppers.py",
    "content": "class Stopper():\n    pass\n\n\nclass SimpleStopper(Stopper):\n    pass\n"
  },
  {
    "path": "strategies.py",
    "content": "from features import Feature\nfrom stoppers import Stopper\nfrom abc import abstractmethod\nfrom gym.spaces import Space, Box, Discrete, MultiDiscrete\nfrom assessments import Assessment\nfrom wtpy.WtBtEngine import EngineType\nfrom wtpy.StrategyDefs import BaseCtaStrategy, CtaContext, BaseHftStrategy, HftContext\nfrom numpy import around, float32\n\n\nclass StateTransfer():\n    @staticmethod\n    @abstractmethod\n    def Name() -> str:\n        raise NotImplementedError\n\n    @staticmethod\n    @abstractmethod\n    def EngineType() -> int:\n        raise NotImplementedError\n\n    @staticmethod\n    @abstractmethod\n    def Action(size: int) -> dict:\n        raise NotImplementedError\n\n    @staticmethod\n    def setAction(self, action):\n        raise NotImplementedError\n\n    def __init__(self, feature: Feature, assessment: Assessment, stopper: Stopper):\n        self._feature_: Feature = feature\n        self._assessment_: Assessment = assessment\n        self._stopper_: Stopper = stopper\n\n        # print('StateTransfer')\n\n\nclass SimpleCTA(BaseCtaStrategy, StateTransfer):\n    @staticmethod\n    def Name() -> str:\n        return __class__.__name__\n\n    @staticmethod\n    def EngineType() -> int:\n        return EngineType.ET_CTA\n\n    @staticmethod\n    def Action(size: int) -> Space:\n        # return Discrete(10)\n        return Box(low=-1., high=1., shape=(size, ), dtype=float32)\n        # return MultiDiscrete([11]*size)\n        # return dict(low=-1., high=1., shape=(size, ), dtype=float32)\n\n    def setAction(self, action):\n        # print('setAction 1')\n        # action -= 5\n        # self._action_ = dict(zip(self._feature_.securities, [action-5]))\n        self._action_ = dict(zip(self._feature_.securities, around(action*3, 0)))\n        # print(self._action_)\n        # try:\n        #     self._action_ = dict(zip(self._feature_.securities, around(action, 0)))\n        #     print(self.name(), action, type(action))\n        # except:\n        #     print(self.name(), action, type(action))\n        # print('setAction 2')\n\n    def __init__(self, name: str, feature: Feature, assessment: Assessment, stopper: Stopper):\n        super(BaseCtaStrategy, self).__init__(\n            feature=feature, assessment=assessment, stopper=stopper)\n        super().__init__(name)\n        self._action_: dict = {}\n        # print('TrainCTA')\n\n    def on_init(self, context: CtaContext):\n        # print('on_init 1')\n        self._feature_.subscribe(context)\n        # print('on_init 2')\n\n    def on_session_begin(self, context: CtaContext, curTDate: int):\n        # print('on_session_begin')\n        pass\n\n    def on_backtest_end(self, context: CtaContext):\n        # print('on_backtest_end')\n        pass\n\n    def on_calculate(self, context: CtaContext):\n        # print('on_calculate 1')\n        self._feature_.calculate(context=context)\n        self._assessment_.calculate(context=context)\n        # print('on_calculate 2')\n\n    def on_calculate_done(self, context: CtaContext):\n        # print('on_calculate_done 1')\n        for code in tuple(self._action_.keys()):\n            qty = self._action_.pop(code)\n            if qty != context.stra_get_position(stdCode=code):\n                context.stra_set_position(stdCode=code, qty=qty)\n            # print('stra_set_position %s'%code)\n        # print('on_calculate_done 2')\n\n\n# class SimpleHFT(BaseHftStrategy, StateTransfer):\n#     @staticmethod\n#     def Name() -> str:\n#         return __class__.__name__\n\n#     @staticmethod\n#     def EngineType() -> int:\n#         return EngineType.ET_HFT\n\n#     def on_tick(self, context: HftContext, stdCode: str, newTick: dict):\n#         pass\n"
  },
  {
    "path": "wtpy/CodeHelper.py",
    "content": "import re\n\nclass CodeHelper:\n\n    @staticmethod\n    def isStdStkCode(stdCode:str) -> bool:\n        pattern = re.compile(\"^[A-Z]+.([A-Z]+.)?\\\\d{6}Q?$\")\n        if re.match(pattern, stdCode) is not None:\n            return True\n\n        return False\n\n    @staticmethod\n    def stdCodeToStdCommID(stdCode:str) -> str:\n        if CodeHelper.isStdStkCode(stdCode):\n            return CodeHelper.stdStkCodeToStdCommID(stdCode)\n        else:\n            return CodeHelper.stdFutCodeToStdCommID(stdCode)\n\n    @staticmethod\n    def stdStkCodeToStdCommID(stdCode:str) -> str:\n        ay = stdCode.split(\".\")\n        return ay[0] + \".\" + \"STK\"\n\n    @staticmethod\n    def stdFutCodeToStdCommID(stdCode:str) -> str:\n        ay = stdCode.split(\".\")\n        return ay[0] + \".\" + ay[1]"
  },
  {
    "path": "wtpy/ContractMgr.py",
    "content": "import json\n\nclass ContractInfo:\n\n    def __init__(self):\n        self.exchg = ''     #交易所\n        self.code = ''      #合约代码\n        self.name = ''      #合约名称\n        self.product = ''   #品种代码\n        self.stdCode = ''   #标准代码\n\nclass ContractMgr:\n\n    def __init__(self):\n        self.__contracts__ = dict()\n\n    def load(self, fname:str):\n        '''\n        从文件加载品种信息\n        '''\n        f = open(fname, 'r', encoding=\"gbk\")\n        content = f.read()\n        f.close()\n\n        exchgMap = json.loads(content)\n        for exchg in exchgMap:\n            exchgObj = exchgMap[exchg]\n\n            for code in exchgObj:\n                cObj = exchgObj[code]\n                cInfo = ContractInfo()\n                cInfo.exchg = exchg\n                cInfo.code = code\n                cInfo.name = cObj[\"name\"]\n                cInfo.product = cObj[\"product\"]\n                \n                #股票标准代码为SSE.000001，期货标准代码为SHFE.rb.2010\n                if cInfo.code[:len(cInfo.product)] == cInfo.product:\n                    cInfo.stdCode = exchg + \".\" + cInfo.product + \".\" + cInfo.code[len(cInfo.product):]\n                else:\n                    cInfo.stdCode = exchg + \".\" + cInfo.code\n\n                key = \"%s.%s\" % (exchg, code)\n                self.__contracts__[key] = cInfo\n\n    def getContractInfo(self, stdCode:str) -> ContractInfo:\n        if stdCode[-1] == 'Q':\n            stdCode = stdCode[:-1]\n        else:\n            items = stdCode.split(\".\")\n            if len(items) == 3:\n                stdCode = items[0] + \".\" + items[1] + items[2]\n        if stdCode not in self.__contracts__:\n            return None\n            \n        return self.__contracts__[stdCode]\n\n    def getTotalCodes(self) -> list:\n        codes = list()\n        for code in self.__contracts__:\n            codes.append(self.__contracts__[code].stdCode)\n        return codes\n        \n\n"
  },
  {
    "path": "wtpy/CtaContext.py",
    "content": "from pandas import DataFrame as df\nimport pandas as pd\nimport os\nimport json\n\nfrom wtpy.wrapper import WtWrapper\nfrom wtpy.WtDataDefs import WtKlineData, WtHftData\n\nclass CtaContext:\n    '''\n    Context是策略可以直接访问的唯一对象\\n\n    策略所有的接口都通过Context对象调用\\n\n    Context类包括以下几类接口：\\n\n    1、时间接口（日期、时间等），接口格式如：stra_xxx\\n\n    2、数据接口（K线、财务等），接口格式如：stra_xxx\\n\n    3、下单接口（设置目标仓位、直接下单等），接口格式如：stra_xxx\\n\n    '''\n\n    def __init__(self, id:int, stra, wrapper: WtWrapper, engine):\n        self.__stra_info__ = stra   #策略对象，对象基类BaseStrategy.py\n        self.__wrapper__ = wrapper  #底层接口转换器\n        self.__id__ = id            #策略ID\n        self.__bar_cache__ = dict() #K线缓存\n        self.__tick_cache__ = dict()    #tTick缓存，每次都重新去拉取，这个只做中转用，不在python里维护副本\n        self.__sname__ = stra.name()    \n        self.__engine__ = engine          #交易环境\n        self.__pos_cache__ = None\n\n        self.is_backtest = self.__engine__.is_backtest\n\n    @property\n    def id(self):\n        return self.__id__\n\n    def write_indicator(self, tag:str, time:int, data:dict):\n        '''\n        输出指标数据\n        @tag    指标标签\n        @time   输出时间\n        @data   输出的指标数据，dict类型，会转成json以后保存\n        '''\n        self.__engine__.write_indicator(self.__stra_info__.name(), tag, time, data)\n\n    def on_init(self):\n        '''\n        初始化，一般用于系统启动的时候\n        '''\n        self.__stra_info__.on_init(self)\n\n    def on_session_begin(self, curTDate:int):\n        '''\n        交易日开始事件\\n\n\n        @curTDate   交易日，格式为20210220\n        '''\n        self.__stra_info__.on_session_begin(self, curTDate)\n\n    def on_session_end(self, curTDate:int):\n        '''\n        交易日结束事件\\n\n\n        @curTDate   交易日，格式为20210220\n        '''\n        self.__stra_info__.on_session_end(self, curTDate)\n\n    def on_backtest_end(self):\n        '''\n        回测结束事件\n        '''\n        self.__stra_info__.on_backtest_end(self)\n\n    def on_getticks(self, stdCode:str, newTicks:list, isLast:bool):\n        key = stdCode\n\n        ticks = self.__tick_cache__[key]\n        for newTick in newTicks:\n            ticks.append_item(newTick)\n\n    def on_getpositions(self, stdCode:str, qty:float, isLast:bool):\n        if len(stdCode) == 0:\n            return\n        self.__pos_cache__[stdCode] = qty\n\n    def on_getbars(self, stdCode:str, period:str, newBars:list, isLast:bool):\n        key = \"%s#%s\" % (stdCode, period)\n\n        bars = self.__bar_cache__[key]\n        for newBar in newBars:\n            bars.append_bar(newBar)\n\n    def on_tick(self, stdCode:str, newTick):\n        self.__stra_info__.on_tick(self, stdCode, newTick)\n\n\n    def on_bar(self, stdCode:str, period:str, newBar:dict):\n        '''\n        K线闭合事件响应\n        @stdCode   品种代码\n        @period     K线基础周期\n        @times      周期倍数\n        @newBar     最新K线\n        '''        \n        key = \"%s#%s\" % (stdCode, period)\n\n        if key not in self.__bar_cache__:\n            return\n\n        try:\n            self.__bar_cache__[key].append_bar(newBar)\n            self.__bar_cache__[key].closed = True\n            self.__stra_info__.on_bar(self, stdCode, period, newBar)\n        except ValueError as ve:\n            print(ve)\n        else:\n            return\n\n\n    def on_calculate(self):\n        self.__stra_info__.on_calculate(self)\n\n    def on_calculate_done(self):\n        self.__stra_info__.on_calculate_done(self)\n\n    def stra_log_text(self, message:str):\n        '''\n        输出日志\n        @message    消息内容，最大242字符\\n\n        '''\n        self.__wrapper__.cta_log_text(self.__id__, message[:242])\n\n    def stra_get_tdate(self):\n        '''\n        获取当前交易日\\n\n        @return int，格式如20180513\n        '''\n        return self.__wrapper__.cta_get_tdate()\n        \n    def stra_get_date(self):\n        '''\n        获取当前日期\\n\n        @return int，格式如20180513\n        '''\n        return self.__wrapper__.cta_get_date()\n\n    def stra_get_position_avgpx(self, stdCode:str = \"\") -> float:\n        '''\n        获取当前持仓均价\\n\n        @stdCode   合约代码\n        @return 持仓均价\n        '''\n        return self.__wrapper__.cta_get_position_avgpx(self.__id__, stdCode)\n\n    def stra_get_position_profit(self, stdCode:str = \"\") -> float:\n        '''\n        获取持仓浮动盈亏\n        @stdCode   合约代码，为None时读取全部品种的浮动盈亏\n        @return 浮动盈亏\n        '''\n        return self.__wrapper__.cta_get_position_profit(self.__id__, stdCode)\n\n    def stra_get_fund_data(self, flag:int = 0) -> float:\n        '''\n        获取资金数据\\n\n        @flag   0-动态权益，1-总平仓盈亏，2-总浮动盈亏，3-总手续费\\n\n        @return 资金数据\n        '''\n        return self.__wrapper__.cta_get_fund_data(self.__id__, flag)\n\n    def stra_get_time(self):\n        '''\n        获取当前时间，24小时制，精确到分\\n\n        @return int，格式如1231\n        '''\n        return self.__wrapper__.cta_get_time()\n\n    def stra_get_price(self, stdCode:str):\n        '''\n        获取最新价格，一般在获取了K线以后再获取该价格\n        @return 最新价格\n        '''\n        return self.__wrapper__.cta_get_price(stdCode)\n\n    def stra_get_all_position(self):\n        '''\n        获取全部持仓\n        '''\n        self.__pos_cache__ = dict() #\n        self.__wrapper__.cta_get_all_position(self.__id__)\n        return self.__pos_cache__\n\n    def stra_get_bars(self, stdCode:str, period:str, count:int, isMain:bool = False) -> WtKlineData:\n        '''\n        获取历史K线\n        @stdCode   合约代码\n        @period K线周期，如m3/d7\n        @count  要拉取的K线条数\n        @isMain 是否是主K线\n        '''\n        key = \"%s#%s\" % (stdCode, period)\n\n        if key in self.__bar_cache__:\n            #这里做一个数据长度处理\n            return self.__bar_cache__[key]\n\n        self.__bar_cache__[key] = WtKlineData(size=count)\n        cnt =  self.__wrapper__.cta_get_bars(self.__id__, stdCode, period, count, isMain)\n        if cnt == 0:\n            return None\n\n        df_bars = self.__bar_cache__[key]\n        df_bars.closed = False\n\n        return df_bars\n\n    def stra_get_ticks(self, stdCode:str, count:int) -> WtHftData:\n        '''\n        获取tick数据\n        @stdCode   合约代码\n        @count  要拉取的tick数量\n        '''\n        self.__tick_cache__[stdCode] = WtHftData(capacity=count)\n        cnt = self.__wrapper__.cta_get_ticks(self.__id__, stdCode, count)\n        if cnt == 0:\n            return None\n        \n        df_ticks = self.__tick_cache__[stdCode]\n        return df_ticks\n\n    def stra_sub_ticks(self, stdCode:str):\n        '''\n        订阅实时行情\\n\n        获取K线和tick数据的时候会自动订阅，这里只需要订阅额外要检测的品种即可\\n\n        @stdCode   合约代码\n        '''\n        self.__wrapper__.cta_sub_ticks(self.__id__, stdCode)\n\n    def stra_get_position(self, stdCode:str = \"\", usertag:str = \"\"):\n        '''\n        读取当前仓位\\n\n        @stdCode       合约/股票代码\\n\n        @usertag    入场标记\n        @return     正为多仓，负为空仓\n        '''\n        return self.__wrapper__.cta_get_position(self.__id__, stdCode, usertag)\n\n    def stra_set_position(self, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        设置仓位\\n\n        @stdCode   合约/股票代码\\n\n        @qty    目标仓位，正为多仓，负为空仓\\n\n        @return 设置结果TRUE/FALSE\n        '''\n        self.__wrapper__.cta_set_position(self.__id__, stdCode, qty, usertag, limitprice, stopprice)\n        \n\n    def stra_enter_long(self, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        多仓进场，如果有空仓，则平空再开多\\n\n        @stdCode   品种代码\\n\n        @qty    数量\\n\n        @limitprice 限价，默认为0\\n\n        @stopprice  止价，默认为0\n        '''\n        self.__wrapper__.cta_enter_long(self.__id__, stdCode, qty, usertag, limitprice, stopprice)\n\n    def stra_exit_long(self, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        多仓出场，如果剩余多仓不够，则全部平掉即可\\n\n        @stdCode   品种代码\\n\n        @qty    数量\\n\n        @limitprice 限价，默认为0\\n\n        @stopprice  止价，默认为0\n        '''\n        self.__wrapper__.cta_exit_long(self.__id__, stdCode, qty, usertag, limitprice, stopprice)\n\n    def stra_enter_short(self, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        空仓进场，如果有多仓，则平多再开空\\n\n        @stdCode   品种代码\\n\n        @qty    数量\\n\n        @limitprice 限价，默认为0\\n\n        @stopprice  止价，默认为0\n        '''\n        self.__wrapper__.cta_enter_short(self.__id__, stdCode, qty, usertag, limitprice, stopprice)\n\n    def stra_exit_short(self, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        空仓出场，如果剩余空仓不够，则全部平掉即可\\n\n        @stdCode   品种代码\\n\n        @qty    数量\\n\n        @limitprice 限价，默认为0\\n\n        @stopprice  止价，默认为0\n        '''\n        self.__wrapper__.cta_exit_short(self.__id__, stdCode, qty, usertag, limitprice, stopprice)\n\n    def stra_get_last_entrytime(self, stdCode:str):\n        '''\n        获取当前持仓最后一次进场时间\\n\n        @stdCode   品种代码\\n\n        @return 返回最后一次开仓的时间，格式如201903121047\n        '''\n        return self.__wrapper__.cta_get_last_entertime(self.__id__, stdCode)\n\n    def stra_get_last_exittime(self, stdCode:str):\n        '''\n        获取当前持仓最后一次出场时间\\n\n        @stdCode   品种代码\\n\n        @return 返回最后一次开仓的时间，格式如201903121047\n        '''\n        return self.__wrapper__.cta_get_last_exittime(self.__id__, stdCode)\n\n    def stra_get_first_entrytime(self, stdCode:str):\n        '''\n        获取当前持仓第一次进场时间\\n\n        @stdCode   品种代码\\n\n        @return 返回最后一次开仓的时间，格式如201903121047\n        '''\n        return self.__wrapper__.cta_get_first_entertime(self.__id__, stdCode)\n\n\n    def user_save_data(self, key:str, val):\n        '''\n        保存用户数据\n        @key    数据id\n        @val    数据值，可以直接转换成str的数据均可\n        '''\n        self.__wrapper__.cta_save_user_data(self.__id__, key, str(val))\n\n    def user_load_data(self, key:str, defVal = None, vType = float):\n        '''\n        读取用户数据\n        @key    数据id\n        @defVal 默认数据，如果找不到则返回改数据，默认为None\n        @return 返回值，默认处理为float数据\n        '''\n        ret = self.__wrapper__.cta_load_user_data(self.__id__, key, \"\")\n        if ret == \"\":\n            return defVal\n\n        return vType(ret)\n\n    def stra_get_detail_profit(self, stdCode:str, usertag:str, flag:int = 0):\n        '''\n        获取指定标记的持仓的盈亏\n        @stdCode       合约代码\\n\n        @usertag    进场标记\\n\n        @flag       盈亏记号，0-浮动盈亏，1-最大浮盈，-1-最大亏损（负数）\n        @return     盈亏 \n        '''\n        return self.__wrapper__.cta_get_detail_profit(self.__id__, stdCode, usertag, flag)\n\n    def stra_get_detail_cost(self, stdCode:str, usertag:str):\n        '''\n        获取指定标记的持仓的开仓价\n        @stdCode       合约代码\\n\n        @usertag    进场标记\\n\n        @return     开仓价 \n        '''\n        return self.__wrapper__.cta_get_detail_cost(self.__id__, stdCode, usertag)\n\n    def stra_get_detail_entertime(self, stdCode:str, usertag:str):\n        '''\n        获取指定标记的持仓的进场时间\\n\n        @stdCode       合约代码\\n\n        @usertag    进场标记\\n\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.__wrapper__.cta_get_detail_entertime(self.__id__, stdCode, usertag)\n\n    def stra_get_comminfo(self, stdCode:str):\n        '''\n        获取品种详情\\n\n        @stdCode   合约代码如SHFE.ag.HOT，或者品种代码如SHFE.ag\\n\n        @return 品种信息，结构请参考ProductMgr中的ProductInfo\n        '''\n        if self.__engine__ is None:\n            return None\n        return self.__engine__.getProductInfo(stdCode)\n\n    def stra_get_sessinfo(self, stdCode:str):\n        '''\n        获取交易时段详情\\n\n        @stdCode   合约代码如SHFE.ag.HOT，或者品种代码如SHFE.ag\\n\n        @return 品种信息，结构请参考SessionMgr中的SessionInfo\n        '''\n        if self.__engine__ is None:\n            return None\n        return self.__engine__.getSessionByCode(stdCode)"
  },
  {
    "path": "wtpy/ExtModuleDefs.py",
    "content": "\n\nclass BaseExtParser:\n    '''\n    扩展行情接入模块基类\n    '''\n    def __init__(self, id:str):\n        '''\n        构造函数\n        @id     解析器ID\n        '''\n        self.__id__ = id\n        return\n\n    def id(self) -> str:\n        return self.__id__\n\n    def init(self, engine):\n        '''\n        初始化\n        '''\n        self.__engine__ = engine\n        return\n\n    def connect(self):\n        '''\n        开始连接\n        '''\n        return\n\n    def disconnect(self):\n        '''\n        断开连接\n        '''\n        return\n\n    def release(self):\n        '''\n        释放，一般是进程退出时调用\n        '''\n        return\n\n    def subscribe(self, fullCode:str):\n        '''\n        订阅实时行情\\n\n        @fullCode   合约代码，格式如CFFEX.IF2106\n        '''\n        return\n\n    def unsubscribe(self, fullCode:str):\n        '''\n        退订实时行情\\n\n        @fullCode   合约代码，格式如CFFEX.IF2106\n        '''\n        return\n\n\nclass BaseExtExecuter:\n    '''\n    扩展执行器基类\n    '''\n\n    def __init__(self, id:str, scale:float):\n        '''\n        构造函数\\n\n        @id     执行器ID\\n\n        @scale  数量放大倍数\n        '''\n        self.__id__ = id\n        self.__scale__ = scale\n        self.__targets__ = dict()\n        return\n\n    def id(self):\n        return self.__id__\n    \n    def init(self):\n        return\n\n    def set_position(self, stdCode:str, targetPos:float):\n        '''\n        设置目标部位\\n\n        @stdCode    合约代码，期货格式为CFFEX.IF.2106\\n\n        @targetPos  目标仓位，浮点数\n        '''\n\n        # 确定原来的目标仓位\n        oldPos = 0\n        if stdCode in self.__targets__:\n            oldPos = self.__targets__[stdCode]\n\n        # 修改最新的目标仓位\n        self.__targets__[stdCode] = targetPos\n        return"
  },
  {
    "path": "wtpy/ExtToolDefs.py",
    "content": "import json\nimport time\nfrom threading import Thread\n\ndef fileToJson(filename, encoding=\"utf-8\"):\n    f = open(filename, 'r')\n    content = f.read()\n    f.close()\n    try:\n        return json.loads(content)\n    except:\n        return None\n\nclass BaseIndexWriter:\n    '''\n    基础指标输出工具\n    '''\n\n    def __init__(self):\n        return\n\n    def write_indicator(self, id:str, tag:str, time:int, data:dict):\n        '''\n        将指标数据出\\n\n        @id     指标ID\\n\n        @tag    数据标记\\n\n        @time   指标时间\\n\n        @data   数据对象，一个dict\n        '''\n        raise Exception(\"Basic writer cannot output index data to any media\")\n\n\nclass BaseDataReporter:\n    '''\n    数据报告器\n    '''\n    TaskReportRTData        = 1\n    TaskReportSettleData    = 2\n    TaskReportInitData      = 3\n\n    def __init__(self, id:str):\n        self.__inited__ = False\n        self.__id__ = id\n        return\n\n    def init(self):\n        self.__inited__ = True\n        self.__thrd_task__ = None\n        self.__tasks__ = list()\n        self.__stopped__ = False\n\n        #读取策略标记\n        filename = \"./generated/marker.json\"\n        obj = fileToJson(filename)\n        if obj is not None:\n            self.stra_names = obj[\"marks\"]\n\n    def rpt_portfolio_rt_data_impl(self, rtData):\n        raise Exception(\"this method has not been implemented\")\n\n    def rpt_strategy_rt_data_impl(self, rtData):\n        raise Exception(\"this method has not been implemented\")\n\n    def rpt_init_data_impl(self, initData):\n        raise Exception(\"this method has not been implemented\")\n\n    def __do_report_rt_data__(self):\n        print(\"settle data reporter triggered\")\n        # 第一步，提交组合数据，读取portfolio\n        filename = \"./generated/portfolio/datas.json\"\n        objPort = fileToJson(filename)\n        objPort[\"pid\"] = self.__id__\n        # 开始提交组合数据\n        self.rpt_portfolio_rt_data_impl(objPort)\n\n        # 第二步，提交策略数据\n        for sname in self.stra_names:\n            filename = \"./generated/stradata/\" + sname + \".json\"\n            objStra = fileToJson(filename)\n            objStra[\"pid\"] = self.__id__\n            objStra[\"sid\"] = sname\n\n            self.rpt_strategy_rt_data_impl(objStra)\n\n    def __task_loop__(self):\n        while not self.__stopped__:\n            if len(self.__tasks__) == 0:\n                time.sleep(1)\n                continue\n            else:\n                taskid = self.__tasks__.pop(0)                \n                if taskid == self.TaskReportRTData:\n                    self.__do_report_rt_data__()\n                elif taskid == self.TaskReportSettleData:\n                    self.__do_report_settle_data__()\n                elif taskid == self.TaskReportInitData:\n                    self.__do_report_init_data__()\n\n    def __start__(self):\n        if self.__thrd_task__ is None:\n            self.__thrd_task__ = Thread(target=self.__task_loop__, name=\"reportthread\")\n            # self.__thrd_task__.setDaemon(True)\n            self.__thrd_task__.start()\n            print(\"report thread started\")\n\n    def __do_report_init_data__(self):\n        objInitData = dict()\n        objInitData[\"pid\"] = self.__id__\n        objInitData[\"strategies\"] = self.stra_names\n        self.rpt_init_data_impl(objInitData)\n\n    def __do_report_settle_data__(self):\n        print(\"settle data reporter triggered\")\n\n    def report_rt_data(self):\n        print(\"rt data reporter triggered\")\n        self.__tasks__.append(self.TaskReportRTData)\n        if self.__thrd_task__ is None:\n            self.__start__()\n\n    def report_settle_data(self):\n        self.__tasks__.append(self.TaskReportSettleData)\n        if self.__thrd_task__ is None:\n            self.__start__()\n\n    def report_init_data(self):\n        self.__tasks__.append(self.TaskReportInitData)\n        if self.__thrd_task__ is None:\n            self.__start__()\n        "
  },
  {
    "path": "wtpy/HftContext.py",
    "content": "from pandas import DataFrame as df\nimport pandas as pd\nimport os\nimport json\n\nfrom wtpy.wrapper import WtWrapper\nfrom wtpy.WtDataDefs import WtKlineData, WtHftData\n\nclass HftContext:\n    '''\n    Context是策略可以直接访问的唯一对象\\n\n    策略所有的接口都通过Context对象调用\\n\n    Context类包括以下几类接口：\\n\n    1、时间接口（日期、时间等）,接口格式如：stra_xxx\\n\n    2、数据接口（K线、财务等）,接口格式如：stra_xxx\\n\n    3、下单接口（设置目标仓位、直接下单等）,接口格式如：stra_xxx\\n\n    '''\n\n    def __init__(self, id:int, stra, wrapper: WtWrapper, engine):\n        self.__stra_info__ = stra       #策略对象,对象基类BaseStrategy.py\n        self.__wrapper__ = wrapper      #底层接口转换器\n        self.__id__ = id                #策略ID\n        self.__bar_cache__ = dict()     #K线缓存\n        self.__tick_cache__ = dict()    #Tick缓存,每次都重新去拉取,这个只做中转用,不在python里维护副本\n        self.__ordque_cache__ = dict()  #委托队列缓存，用法同__tick_cache__\n        self.__orddtl_cache__ = dict()  #逐笔委托缓存，用法同__tick_cache__\n        self.__trans_cache__ = dict()   #逐笔成交缓存，用法同__tick_cache__\n        self.__sname__ = stra.name()    \n        self.__engine__ = engine          #交易环境\n\n        self.is_backtest = self.__engine__.is_backtest\n\n    @property\n    def id(self):\n        return self.__id__\n\n    def on_init(self):\n        '''\n        初始化,一般用于系统启动的时候\n        '''\n        self.__stra_info__.on_init(self)\n\n    def on_session_begin(self, curTDate:int):\n        '''\n        交易日开始事件\\n\n\n        @curTDate   交易日，格式为20210220\n        '''\n        self.__stra_info__.on_session_begin(self, curTDate)\n\n    def on_session_end(self, curTDate:int):\n        '''\n        交易日结束事件\\n\n\n        @curTDate   交易日，格式为20210220\n        '''\n        self.__stra_info__.on_session_end(self, curTDate)\n\n    def on_backtest_end(self):\n        '''\n        回测结束事件\n        '''\n        self.__stra_info__.on_backtest_end(self)\n\n    def on_getticks(self, stdCode:str, newTicks:list, isLast:bool):\n        key = stdCode\n\n        ticks = self.__tick_cache__[key]\n        for newTick in newTicks:\n            ticks.append_item(newTick)\n\n    def on_getbars(self, stdCode:str, period:str, newBars:list, isLast:bool):\n        key = \"%s#%s\" % (stdCode, period)\n\n        bars = self.__bar_cache__[key]\n        for newBar in newBars:\n            bars.append_bar(newBar)\n\n    def on_tick(self, stdCode:str, newTick:dict):\n        self.__stra_info__.on_tick(self, stdCode, newTick)\n\n    def on_order_queue(self, stdCode:str, newOrdQue:dict):\n        self.__stra_info__.on_order_queue(self, stdCode, newOrdQue)\n\n    def on_get_order_queue(self, stdCode:str, newOdrQues:list, isLast:bool):\n        key = stdCode\n        items = self.__ordque_cache__[key]\n        for newItem in newOdrQues:\n            items.append_item(newItem)\n\n    def on_order_detail(self, stdCode:str, newOrdDtl:dict):\n        self.__stra_info__.on_order_detail(self, stdCode, newOrdDtl)\n\n    def on_get_order_detail(self, stdCode:str, newOrdDtls:list, isLast:bool):\n        key = stdCode\n        items = self.__orddtl_cache__[key]\n        for newItem in newOrdDtls:\n            items.append_item(newItem)\n\n    def on_transaction(self, stdCode:str, newTrans:dict):\n        self.__stra_info__.on_transaction(self, stdCode, newTrans)\n\n    def on_get_transaction(self, stdCode:str, newTranses:list, isLast:bool):\n        key = stdCode\n        items = self.__trans_cache__[key]\n        for newItem in newTranses:\n            items.append_item(newItem)\n\n    def on_channel_ready(self):\n        self.__stra_info__.on_channel_ready(self)\n\n    def on_channel_lost(self):\n        self.__stra_info__.on_channel_lost(self)\n\n    def on_entrust(self, localid:int, stdCode:str, bSucc:bool, msg:str, userTag:str):\n        self.__stra_info__.on_entrust(self, localid, stdCode, bSucc, msg, userTag)\n\n    def on_order(self, localid:int, stdCode:str, isBuy:bool, totalQty:float, leftQty:float, price:float, isCanceled:bool, userTag:str):\n        self.__stra_info__.on_order(self, localid, stdCode, isBuy, totalQty, leftQty, price, isCanceled, userTag)\n\n    def on_trade(self, localid:int, stdCode:str, isBuy:bool, qty:float, price:float, userTag:str):\n        self.__stra_info__.on_trade(self, localid, stdCode, isBuy, qty, price, userTag)\n\n    def on_bar(self, code:str, period:str, newBar:dict):\n        '''\n        K线闭合事件响应\n        @code   品种代码\n        @period K线基础周期\n        @times  周期倍数\n        @newBar 最新K线\n        '''        \n        key = \"%s#%s\" % (code, period)\n\n        if key not in self.__bar_cache__:\n            return\n\n        try:\n            self.__bar_cache__[key].append_bar(newBar)\n            self.__bar_cache__[key].closed = True\n            self.__stra_info__.on_bar(self, code, period, newBar)\n        except ValueError as ve:\n            print(ve)\n        else:\n            return\n\n    def stra_log_text(self, message:str):\n        '''\n        输出日志\n        @message    消息内容\\n\n        '''\n        self.__wrapper__.hft_log_text(self.__id__, message)\n        \n    def stra_get_date(self):\n        '''\n        获取当前日期\\n\n        @return int,格式如20180513\n        '''\n        return self.__wrapper__.hft_get_date()\n\n    def stra_get_time(self):\n        '''\n        获取当前时间,24小时制,精确到分\\n\n        @return int,格式如1231\n        '''\n        return self.__wrapper__.hft_get_time()\n\n    def stra_get_secs(self):\n        '''\n        获取当前秒数,精确到毫秒\\n\n        @return int,格式如1231\n        '''\n        return self.__wrapper__.hft_get_secs()\n\n    def stra_get_price(self, code):\n        '''\n        获取最新价格,一般在获取了K线以后再获取该价格\n        @return 最新价格\n        '''\n        return self.__wrapper__.hft_get_price(code)\n\n    def stra_get_bars(self, code:str, period:str, count:int) -> WtKlineData:\n        '''\n        获取历史K线\n        @code   合约代码\n        @period K线周期,如m3/d7\n        @count  要拉取的K线条数\n        @isMain 是否是主K线\n        '''\n        key = \"%s#%s\" % (code, period)\n\n        if key in self.__bar_cache__:\n            #这里做一个数据长度处理\n            return self.__bar_cache__[key]\n\n        self.__bar_cache__[key] = WtKlineData(size=count)\n        cnt =  self.__wrapper__.hft_get_bars(self.__id__, code, period, count)\n        if cnt == 0:\n            return None\n\n        df_bars = self.__bar_cache__[key]\n        df_bars.closed = False\n\n        return df_bars\n\n    def stra_get_ticks(self, code:str, count:int) -> WtHftData:\n        '''\n        获取tick数据\n        @code   合约代码\n        @count  要拉取的tick数量\n        '''\n        self.__tick_cache__[code] = WtHftData(capacity=count)\n        cnt = self.__wrapper__.hft_get_ticks(self.__id__, code, count)\n        if cnt == 0:\n            return None\n        \n        hftData = self.__tick_cache__[code]\n        return hftData\n\n    def stra_get_order_queue(self, code:str, count:int) -> WtHftData:\n        '''\n        获取委托队列数据\n        @code   合约代码\n        @count  要拉取的tick数量\n        '''\n        self.__ordque_cache__[code] = WtHftData(capacity=count)\n        cnt = self.__wrapper__.hft_get_ordque(self.__id__, code, count)\n        if cnt == 0:\n            return None\n        \n        hftData = self.__ordque_cache__[code]\n        return hftData\n\n    def stra_get_order_detail(self, code:str, count:int) -> WtHftData:\n        '''\n        获取逐笔委托数据\n        @code   合约代码\n        @count  要拉取的tick数量\n        '''\n        self.__orddtl_cache__[code] = WtHftData(capacity=count)\n        cnt = self.__wrapper__.hft_get_orddtl(self.__id__, code, count)\n        if cnt == 0:\n            return None\n        \n        hftData = self.__orddtl_cache__[code]\n        return hftData\n\n    def stra_get_transaction(self, code:str, count:int) -> WtHftData:\n        '''\n        获取逐笔成交数据\n        @code   合约代码\n        @count  要拉取的tick数量\n        '''\n        self.__trans_cache__[code] = WtHftData(capacity=count)\n        cnt = self.__wrapper__.hft_get_trans(self.__id__, code, count)\n        if cnt == 0:\n            return None\n        \n        hftData = self.__trans_cache__[code]\n        return hftData\n\n    def stra_get_position(self, code:str = \"\"):\n        '''\n        读取当前仓位\\n\n        @code       合约/股票代码\\n\n        @return     正为多仓,负为空仓\n        '''\n        return self.__wrapper__.hft_get_position(self.__id__, code)\n\n    def stra_get_position_profit(self, code:str = \"\"):\n        '''\n        读取指定持仓的浮动盈亏\\n\n        @code       合约/股票代码\\n\n        @return     指定持仓的浮动盈亏\n        '''\n        return self.__wrapper__.hft_get_position_profit(self.__id__, code)\n\n    def stra_get_undone(self, stdCode:str):\n        return self.__wrapper__.hft_get_undone(self.__id__, stdCode)\n\n\n    def user_save_data(self, key:str, val):\n        '''\n        保存用户数据\n        @key    数据id\n        @val    数据值,可以直接转换成str的数据均可\n        '''\n        self.__wrapper__.hft_save_user_data(self.__id__, key, str(val))\n\n    def user_load_data(self, key:str, defVal = None, vType = float):\n        '''\n        读取用户数据\n        @key    数据id\n        @defVal 默认数据,如果找不到则返回改数据,默认为None\n        @return 返回值,默认处理为float数据\n        '''\n        ret = self.__wrapper__.hft_load_user_data(self.__id__, key, \"\")\n        if ret == \"\":\n            return defVal\n\n        return vType(ret)\n\n    def stra_get_comminfo(self, code:str):\n        '''\n        获取品种详情\\n\n        @code   合约代码如SHFE.ag.HOT,或者品种代码如SHFE.ag\\n\n        @return 品种信息,结构请参考ProductMgr中的ProductInfo\n        '''\n        if self.__engine__ is None:\n            return None\n        return self.__engine__.getProductInfo(code)\n\n    def stra_sub_ticks(self, stdCode:str):\n        '''\n        订阅实时行情数据\\n\n        获取K线和tick数据的时候会自动订阅，这里只需要订阅额外要检测的品种即可\\n\n        @code   品种代码\n        '''\n        self.__wrapper__.hft_sub_ticks(self.__id__, stdCode)\n\n    def stra_cancel(self, localid:int):\n        '''\n        撤销指定订单\\n\n        @id         策略ID\\n\n        @localid    下单时返回的本地订单号\n        '''\n        return self.__wrapper__.hft_cancel(self.__id__, localid)\n\n    def stra_cancel_all(self, stdCode:str, isBuy:bool):\n        '''\n        撤销指定品种的全部买入订单or卖出订单\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\\n\n        @isBuy      买入or卖出\n        '''\n        idstr = self.__wrapper__.hft_cancel_all(self.__id__, stdCode, isBuy)\n        if len(idstr) == 0:\n            return list()\n\n        ids = idstr.split(\",\")\n        localids = list()\n        for localid in ids:\n            localids.append(int(localid))\n        return localids\n\n    def stra_buy(self, stdCode:str, price:float, qty:float, userTag:str):\n        '''\n        买入指令\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\\n\n        @price      买入价格, 0为市价\\n\n        @qty        买入数量\n        '''\n        idstr = self.__wrapper__.hft_buy(self.__id__, stdCode, price, qty, userTag)\n        if len(idstr) == 0:\n            return list()\n            \n        ids = idstr.split(\",\")\n        localids = list()\n        for localid in ids:\n            localids.append(int(localid))\n        return localids\n\n    def stra_sell(self, stdCode:str, price:float, qty:float, userTag:str):\n        '''\n        卖出指令\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\\n\n        @price      卖出价格, 0为市价\\n\n        @qty        卖出数量\n        '''\n        idstr = self.__wrapper__.hft_sell(self.__id__, stdCode, price, qty, userTag)\n        if len(idstr) == 0:\n            return list()\n            \n        ids = idstr.split(\",\")\n        localids = list()\n        for localid in ids:\n            localids.append(int(localid))\n        return localids\n"
  },
  {
    "path": "wtpy/ProductMgr.py",
    "content": "import json\n\nclass ProductInfo:\n    '''\n    品种信息\n    '''\n\n    def __init__(self):\n        self.exchg = ''     #交易所\n        self.product = ''   #品种代码\n        self.name = ''      #品种名称\n        self.session = ''   #交易时段名\n        self.covermode = 0  #平仓模式\n        self.pricemode = 0  #价格模式\n        self.precision = 0  #精度\n        self.pricetick = 0  #价格变动单位\n        self.volscale = 1   #数量乘数\n\nclass ProductMgr:\n    '''\n    品种信息管理器\n    '''\n    def __init__(self):\n        self.__products__ = dict()\n        return\n\n    def load(self, fname:str):\n        '''\n        从文件加载品种信息\n        '''\n        f = open(fname, 'r', encoding=\"gbk\")\n        content = f.read()\n        f.close()\n\n        exchgMap = json.loads(content)\n        for exchg in exchgMap:\n            exchgObj = exchgMap[exchg]\n            for pid in exchgObj:\n                pObj = exchgObj[pid]\n                pInfo = ProductInfo()\n                pInfo.exchg = exchg\n                pInfo.product = pid\n                pInfo.name = pObj[\"name\"]\n                pInfo.session = pObj[\"session\"]\n                pInfo.covermode = int(pObj[\"covermode\"])\n                pInfo.pricemode = int(pObj[\"pricemode\"])\n                pInfo.precision = int(pObj[\"precision\"])\n                pInfo.volscale = int(pObj[\"volscale\"])\n                pInfo.pricetick = float(pObj[\"pricetick\"])\n\n                key = \"%s.%s\" % (exchg, pid)\n                self.__products__[key] = pInfo\n\n\n    def getProductInfo(self, pid:str) -> ProductInfo:\n        #pid形式可能为SHFE.ag.HOT，或者SHFE.ag.1912，或者SHFE.ag\n        items = pid.split(\".\")\n        key = items[0] + \".\" + items[1]\n        if key not in self.__products__:\n            return None\n\n        return self.__products__[key]"
  },
  {
    "path": "wtpy/SelContext.py",
    "content": "from pandas import DataFrame as df\nimport pandas as pd\nimport os\nimport json\n\nfrom wtpy.wrapper import WtWrapper\nfrom wtpy.WtDataDefs import WtKlineData, WtHftData\n\nclass SelContext:\n    '''\n    Context是策略可以直接访问的唯一对象\\n\n    策略所有的接口都通过Context对象调用\\n\n    Context类包括以下几类接口：\\n\n    1、时间接口（日期、时间等），接口格式如：stra_xxx\\n\n    2、数据接口（K线、财务等），接口格式如：stra_xxx\\n\n    3、下单接口（设置目标仓位、直接下单等），接口格式如：stra_xxx\\n\n    '''\n\n    def __init__(self, id:int, stra, wrapper: WtWrapper, engine):\n        self.__stra_info__ = stra   #策略对象，对象基类BaseStrategy.py\n        self.__wrapper__ = wrapper  #底层接口转换器\n        self.__id__ = id            #策略ID\n        self.__bar_cache__ = dict() #K线缓存\n        self.__tick_cache__ = dict()    #tTick缓存，每次都重新去拉取，这个只做中转用，不在python里维护副本\n        self.__sname__ = stra.name()    \n        self.__engine__ = engine          #交易环境\n        self.__pos_cache__ = None\n\n        self.is_backtest = self.__engine__.is_backtest\n\n    def write_indicator(self, tag, time, data):\n        '''\n        输出指标数据\n        @tag    指标标签\n        @time   输出时间\n        @data   输出的指标数据，dict类型，会转成json以后保存\n        '''\n        self.__engine__.write_indicator(self.__stra_info__.name(), tag, time, data)\n\n    def on_init(self):\n        '''\n        初始化，一般用于系统启动的时候\n        '''\n        self.__stra_info__.on_init(self)\n\n    def on_session_begin(self, curTDate:int):\n        '''\n        交易日开始事件\\n\n\n        @curTDate   交易日，格式为20210220\n        '''\n        self.__stra_info__.on_session_begin(self, curTDate)\n\n    def on_session_end(self, curTDate:int):\n        '''\n        交易日结束事件\\n\n\n        @curTDate   交易日，格式为20210220\n        '''\n        self.__stra_info__.on_session_end(self, curTDate)\n\n    def on_backtest_end(self):\n        '''\n        回测结束事件\n        '''\n        self.__stra_info__.on_backtest_end(self)\n\n    def on_getticks(self, stdCode:str, newTicks:list, isLast:bool):\n        key = stdCode\n\n        ticks = self.__tick_cache__[key]\n        for newTick in newTicks:\n            ticks.append_item(newTick)\n\n    def on_getpositions(self, stdCode:str, qty:float, isLast:bool):\n        if len(stdCode) == 0:\n            return\n        self.__pos_cache__[stdCode] = qty\n\n    def on_getbars(self, stdCode:str, period:str, newBars:list, isLast:bool):\n        key = \"%s#%s\" % (stdCode, period)\n\n        bars = self.__bar_cache__[key]\n        for newBar in newBars:\n            bars.append_bar(newBar)\n\n    def on_tick(self, stdCode:str, newTick):\n        self.__stra_info__.on_tick(self, stdCode, newTick)\n\n    def on_bar(self, stdCode:str, period:str, newBar:dict):\n        pass\n\n    def on_calculate(self):\n        self.__stra_info__.on_calculate(self)\n\n    def on_calculate_done(self):\n        self.__stra_info__.on_calculate_done(self)\n\n    def stra_log_text(self, message:str):\n        '''\n        输出日志\n        @message    消息内容\\n\n        '''\n        self.__wrapper__.sel_log_text(self.__id__, message)\n        \n    def stra_get_date(self):\n        '''\n        获取当前日期\\n\n        @return int，格式如20180513\n        '''\n        return self.__wrapper__.sel_get_date()\n\n    def stra_get_time(self):\n        '''\n        获取当前时间，24小时制，精确到分\\n\n        @return int，格式如1231\n        '''\n        return self.__wrapper__.sel_get_time()\n\n    def stra_get_price(self, stdCode):\n        '''\n        获取最新价格，一般在获取了K线以后再获取该价格\n        @return 最新价格\n        '''\n        return self.__wrapper__.sel_get_price(stdCode)\n\n    def stra_get_all_position(self):\n        '''\n        获取全部持仓\n        '''\n        self.__pos_cache__ = dict() #\n        self.__wrapper__.sel_get_all_position(self.__id__)\n        return self.__pos_cache__\n\n    def stra_get_bars(self, stdCode:str, period:str, count:int) -> WtKlineData:\n        '''\n        获取历史K线\n        @stdCode   合约代码\n        @period K线周期，如m3/d7\n        @count  要拉取的K线条数\n        '''\n        key = \"%s#%s\" % (stdCode, period)\n\n        if key in self.__bar_cache__:\n            #这里做一个数据长度处理\n            return self.__bar_cache__[key]\n\n        self.__bar_cache__[key] = WtKlineData(size=count)\n        cnt =  self.__wrapper__.sel_get_bars(self.__id__, stdCode, period, count)\n        if cnt == 0:\n            return None\n\n        df_bars = self.__bar_cache__[key]\n        df_bars.closed = False\n\n        return df_bars\n\n    def stra_get_ticks(self, stdCode:str, count:int) -> WtHftData:\n        '''\n        获取tick数据\n        @stdCode   合约代码\n        @count  要拉取的tick数量\n        '''\n        self.__bar_cache__[stdCode] = WtHftData(capacity=count)\n        cnt = self.__wrapper__.cta_get_ticks(self.__id__, stdCode, count)\n        if cnt == 0:\n            return None\n        \n        df_ticks = self.__tick_cache__[stdCode]\n        return df_ticks\n\n    def stra_sub_ticks(self, stdCode:str):\n        '''\n        订阅实时行情\\n\n        @stdCode   合约代码\n        '''\n        self.__wrapper__.cta_sub_ticks(stdCode)\n\n    def stra_get_position(self, stdCode:str = \"\", usertag:str = \"\") -> float:\n        '''\n        读取当前仓位\\n\n        @stdCode       合约/股票代码\\n\n        @usertag    入场标记\n        @return     正为多仓，负为空仓\n        '''\n        return self.__wrapper__.sel_get_position(self.__id__, stdCode, usertag)\n\n    def stra_set_position(self, stdCode:str, qty:float, usertag:str = \"\"):\n        '''\n        设置仓位\\n\n        @stdCode   合约/股票代码\\n\n        @qty    目标仓位，正为多仓，负为空仓\\n\n        @return 设置结果TRUE/FALSE\n        '''\n        self.__wrapper__.sel_set_position(self.__id__, stdCode, qty, usertag)\n        \n    def user_save_data(self, key:str, val):\n        '''\n        保存用户数据\n        @key    数据id\n        @val    数据值，可以直接转换成str的数据均可\n        '''\n        self.__wrapper__.sel_save_user_data(self.__id__, key, str(val))\n\n    def user_load_data(self, key:str, defVal = None, vType = float):\n        '''\n        读取用户数据\n        @key    数据id\n        @defVal 默认数据，如果找不到则返回改数据，默认为None\n        @return 返回值，默认处理为float数据\n        '''\n        ret = self.__wrapper__.sel_load_user_data(self.__id__, key, \"\")\n        if ret == \"\":\n            return defVal\n\n        return vType(ret)\n\n    def stra_get_comminfo(self, stdCode:str):\n        '''\n        获取品种详情\\n\n        @stdCode   合约代码如SHFE.ag.HOT，或者品种代码如SHFE.ag\\n\n        @return 品种信息，结构请参考ProductMgr中的ProductInfo\n        '''\n        if self.__engine__ is None:\n            return None\n        return self.__engine__.getProductInfo(stdCode)\n\n    def stra_get_sessioninfo(self, stdCode:str):\n        '''\n        获取品种详情\\n\n        @stdCode   合约代码如SHFE.ag.HOT，或者品种代码如SHFE.ag\\n\n        @return 品种信息，结构请参考ProductMgr中的ProductInfo\n        '''\n        if self.__engine__ is None:\n            return None\n        return self.__engine__.getSessionByCode(stdCode)\n\n    def stra_get_contract(self, stdCode:str):\n        '''\n        获取品种详情\\n\n        @stdCode   合约代码如SHFE.ag.HOT，或者品种代码如SHFE.ag\\n\n        @return 品种信息，结构请参考ProductMgr中的ProductInfo\n        '''\n        if self.__engine__ is None:\n            return None\n        return self.__engine__.getContractInfo(stdCode)\n\n    def stra_get_all_codes(self):\n        if self.__engine__ is None:\n            return None\n\n        return self.__engine__.getAllCodes()\n"
  },
  {
    "path": "wtpy/SessionMgr.py",
    "content": "import math\nimport json\n\nclass SectionInfo:\n\n    def __init__(self):\n        self.stime = 0\n        self.etime = 0\n\nclass SessionInfo:\n\n    def __init__(self):\n        self.id = \"\"\n        self.name = \"\"\n        self.auction = SectionInfo()\n        self.sections = list()\n        self.offset = 0\n        self.totalMins = 0\n\n    def toString(self):\n        '''\n        将SessionInfo转换成json字符串\n        '''\n        obj = dict()\n        obj[\"name\"] = self.name\n        obj[\"offset\"] = self.offset\n        obj[\"auction\"] = {\n            \"from\": self.originalTime(self.auction.stime),\n            \"to\": self.originalTime(self.auction.etime)\n        }\n\n        obj[\"sections\"] = list()\n        for secInfo in self.sections:\n            obj[\"sections\"].append({\n                \"from\": self.originalTime(secInfo.stime),\n                \"to\": self.originalTime(secInfo.etime)\n            })\n\n        return json.dumps(obj, ensure_ascii=True)\n\n\n    def offsetTime(self, rawTime:int):\n        curMinute = math.floor(rawTime/100)*60 + rawTime%100\n        curMinute += self.offset\n        if curMinute >= 1440:\n            curMinute -= 1440\n        elif curMinute < 0:\n            curMinute += 1440\n        \n        return math.floor(curMinute/60)*100 + curMinute%60\n\n    def originalTime(self, offTime:int):\n        curMinute = math.floor(offTime/100)*60 + offTime%100\n        curMinute -= self.offset\n        if curMinute >= 1440:\n            curMinute -= 1440\n        elif curMinute < 0:\n            curMinute += 1440\n        \n        return math.floor(curMinute/60)*100 + curMinute%60\n\n    def getOpenTime(self, bOffset:bool = False):\n        if len(self.sections) == 0:\n            return 0\n\n        opentm = self.sections[0].stime\n        if not bOffset:\n            return self.originalTime(opentm)\n        else:\n            return opentm\n\n    def getCloseTime(self, bOffset:bool = False):\n        if len(self.sections) == 0:\n            return 0\n\n        closetm = self.sections[-1].etime\n        if not bOffset:\n            return self.originalTime(closetm)\n        else:\n            return closetm\n\n    def getTradingMins(self):\n        if len(self.sections) == 0:\n            return 0\n        \n        if self.totalMins == 0:\n            for sec in self.sections:\n                s = sec.stime\n                e = sec.etime\n                h = math.floor(e / 100) - math.floor(s / 100)\n                m = (e%100) - (s%100)\n                self.totalMins += (h*60 + m)\n        return self.totalMins\n\n    def getTradingSecs(self):\n        return self.getTradingMins()*60\n\n\n    def isLastOfSection(self, rawTime:int):\n        offTime = self.offsetTime(rawTime)\n\n        for sec in self.sections:\n            if sec.etime == offTime:\n                return True\n        \n        return False\n\n    def\tisInTradingTime(self, rawTime:int, bStrict:bool = False):\n        mins = self.timeToMinutes(rawTime)\n        if mins == -1:\n            return False\n\n        if bStrict and self.isLastOfSection(rawTime):\n            return False\n            \n        return True\n\n    def isFirstOfSection(self, rawTime:int):\n        offTime = self.offsetTime(rawTime)\n\n        for sec in self.sections:\n            if sec.stime == offTime:\n                return True\n        \n        return False\n\n    def timeToMinutes(self, rawTime:int):\n        if len(self.sections) == 0:\n            return -1\n\n        offTime = self.offsetTime(rawTime)\n\n        bFound = False\n        offset = 0\n        for sec in self.sections:\n            if sec.stime <= offTime and offTime <= sec.etime:\n                hour = math.floor(offTime / 100) - math.floor(sec.stime / 100)\n                minute = offTime % 100 - sec.stime % 100\n                offset += hour*60 + minute\n                bFound = True\n                break\n            else:\n                hour = math.floor(sec.etime / 100) - math.floor(sec.stime / 100)\n                minute = sec.etime % 100 - sec.stime % 100\n                offset += hour*60 + minute\n\n        if not bFound:\n            return -1\n\n        return offset\n\n    def minutesToTime(self, minutes:int, bHeadFirst:bool = False):\n        if len(self.sections) == 0:\n            return -1\n\n        offset = minutes\n        for sec in self.sections:\n            startMin = math.floor(sec.stime / 100)*60 + sec.stime % 100\n            stopMin = math.floor(sec.etime / 100)*60 + sec.etime % 100\n\n            if not bHeadFirst:\n                if startMin + offset >= stopMin:\n                    offset -= (stopMin - startMin)\n                    if offset == 0:\n                        return self.originalTime(math.floor(stopMin / 60) * 100 + stopMin % 60)\n                else:\n                    desMin = startMin + offset\n                    if desMin > 1440:\n                        desMin -= 1440\n\n                    return self.originalTime(math.floor(desMin / 60) * 100 + desMin % 60)\n            else:\n                if startMin + offset >= stopMin:\n                    offset -= (stopMin - startMin)\n                else:\n                    desMin = startMin + offset\n                    if desMin > 1440:\n                        desMin -= 1440\n\n                    return self.originalTime(math.floor(desMin / 60) * 100 + desMin % 60)\n\n        return self.getCloseTime()\n\nclass SessionMgr:\n\n    def __init__(self):\n        self.__sessions__ = dict()\n        return\n\n\n    def load(self, fname:int):\n        f = open(fname, 'r', encoding=\"gbk\")\n        content = f.read()\n        f.close()\n\n        sessions_dict = json.loads(content)\n        for sid in sessions_dict:            \n            if sid in self.__sessions__:\n                continue\n\n            sObj = sessions_dict[sid]\n            sInfo = SessionInfo()\n            sInfo.id = sid\n            sInfo.offset = sObj[\"offset\"]\n            sInfo.name = sObj[\"name\"]\n\n            if \"auction\" in sObj:\n                sInfo.auction.stime = sInfo.offsetTime(sObj[\"auction\"][\"from\"])\n                sInfo.auction.etime = sInfo.offsetTime(sObj[\"auction\"][\"to\"])\n\n            for secObj in sObj[\"sections\"]:\n                secInfo = SectionInfo()\n                secInfo.stime = sInfo.offsetTime(secObj[\"from\"])\n                secInfo.etime = sInfo.offsetTime(secObj[\"to\"])\n                sInfo.sections.append(secInfo)\n\n            self.__sessions__[sid] = sInfo\n\n\n    def getSession(self, sid:str) -> SessionInfo:\n        if sid not in self.__sessions__:\n            return None\n\n        return self.__sessions__[sid]"
  },
  {
    "path": "wtpy/StrategyDefs.py",
    "content": "from wtpy import CtaContext, SelContext, HftContext\n\nclass BaseCtaStrategy:\n    '''\n    CTA策略基础类，所有的策略都从该类派生\n    包含了策略的基本开发框架\n    '''\n    def __init__(self, name:str):\n        self.__name__ = name\n        \n    \n    def name(self) -> str:\n        return self.__name__\n\n\n    def on_init(self, context:CtaContext):\n        '''\n        策略初始化，启动的时候调用\n        用于加载自定义数据\n\n        @context    策略运行上下文\n        '''\n        return\n\n    def on_session_begin(self, context:CtaContext, curTDate:int):\n        '''\n        交易日开始事件\n\n        @curTDate   交易日，格式为20210220\n        '''\n        return\n\n    def on_session_end(self, context:CtaContext, curTDate:int):\n        '''\n        交易日结束事件\n\n        @curTDate   交易日，格式为20210220\n        '''\n        return\n    \n    def on_calculate(self, context:CtaContext):\n        '''\n        K线闭合时调用，一般作为策略的核心计算模块\n\n        @context    策略运行上下文\n        '''\n        return\n\n    def on_calculate_done(self, context:CtaContext):\n        '''\n        K线闭合时调用，一般作为策略的核心计算模块\n\n        @context    策略运行上下文\n        '''\n        return\n\n\n    def on_tick(self, context:CtaContext, stdCode:str, newTick:dict):\n        '''\n        逐笔数据进来时调用\n        生产环境中，每笔行情进来就直接调用\n        回测环境中，是模拟的逐笔数据\n\n        @context    策略运行上下文\n        @stdCode    合约代码\n        @newTick    最新逐笔\n        '''\n        return\n\n    def on_bar(self, context:CtaContext, stdCode:str, period:str, newBar:dict):\n        '''\n        K线闭合时回调\n\n        @context    策略上下文\n        @stdCode    合约代码\n        @period     K线周期\n        @newBar     最新闭合的K线\n        '''\n        return\n\n    def on_backtest_end(self, context:CtaContext):\n        '''\n        回测结束时回调，只在回测框架下会触发\n\n        @context    策略上下文\n        '''\n        return\n\nclass BaseHftStrategy:\n    '''\n    HFT策略基础类，所有的策略都从该类派生\n    包含了策略的基本开发框架\n    '''\n    def __init__(self, name:str):\n        self.__name__ = name\n        \n    \n    def name(self) -> str:\n        return self.__name__\n\n\n    def on_init(self, context:HftContext):\n        '''\n        策略初始化，启动的时候调用\n        用于加载自定义数据\n\n        @context    策略运行上下文\n        '''\n        return\n    \n    def on_session_begin(self, context:HftContext, curTDate:int):\n        '''\n        交易日开始事件\n\n        @curTDate   交易日，格式为20210220\n        '''\n        return\n\n    def on_session_end(self, context:HftContext, curTDate:int):\n        '''\n        交易日结束事件\n\n        @curTDate   交易日，格式为20210220\n        '''\n        return\n\n    def on_backtest_end(self, context:CtaContext):\n        '''\n        回测结束时回调，只在回测框架下会触发\n\n        @context    策略上下文\n        '''\n        return\n\n    def on_tick(self, context:HftContext, stdCode:str, newTick:dict):\n        '''\n        Tick数据进来时调用\n\n        @context    策略运行上下文\n        @stdCode    合约代码\n        @newTick    最新Tick\n        '''\n        return\n\n    def on_order_detail(self, context:HftContext, stdCode:str, newOrdQue:dict):\n        '''\n        逐笔委托数据进来时调用\n\n        @context    策略运行上下文\n        @stdCode    合约代码\n        @newOrdQue  最新逐笔委托\n        '''\n        return\n\n    def on_order_queue(self, context:HftContext, stdCode:str, newOrdQue:dict):\n        '''\n        委托队列数据进来时调用\n\n        @context    策略运行上下文\n        @stdCode    合约代码\n        @newOrdQue  最新委托队列\n        '''\n        return\n\n    def on_transaction(self, context:HftContext, stdCode:str, newTrans:dict):\n        '''\n        逐笔成交数据进来时调用\n\n        @context    策略运行上下文\n        @stdCode    合约代码\n        @newTrans   最新逐笔成交\n        '''\n        return\n\n    def on_bar(self, context:HftContext, stdCode:str, period:str, newBar:dict):\n        '''\n        K线闭合时回调\n\n        @context    策略上下文\n        @stdCode    合约代码\n        @period     K线周期\n        @newBar     最新闭合的K线\n        '''\n        return\n\n    def on_channel_ready(self, context:HftContext):\n        '''\n        交易通道就绪通知\n\n        @context    策略上下文\n        '''\n        return\n\n    def on_channel_lost(self, context:HftContext):\n        '''\n        交易通道丢失通知\n\n        @context    策略上下文\n        '''\n        return\n\n    def on_entrust(self, context:HftContext, localid:int, stdCode:str, bSucc:bool, msg:str, userTag:str):\n        '''\n        下单结果回报\n\n        @context    策略上下文\n        @localid    本地订单id\n        @stdCode    合约代码\n        @bSucc      下单结果\n        @mes        下单结果描述\n        '''\n        return\n\n    def on_order(self, context:HftContext, localid:int, stdCode:str, isBuy:bool, totalQty:float, leftQty:float, price:float, isCanceled:bool, userTag:str):\n        '''\n        订单回报\n        @context    策略上下文\n        @localid    本地订单id\n        @stdCode    合约代码\n        @isBuy      是否买入\n        @totalQty   下单数量\n        @leftQty    剩余数量\n        @price      下单价格\n        @isCanceled 是否已撤单\n        '''\n        return\n\n    def on_trade(self, context:HftContext, localid:int, stdCode:str, isBuy:bool, qty:float, price:float, userTag:str):\n        '''\n        成交回报\n\n        @context    策略上下文\n        @stdCode    合约代码\n        @isBuy      是否买入\n        @qty        成交数量\n        @price      成交价格\n        '''\n        return\n\nclass BaseSelStrategy:\n    '''\n    选股策略基础类，所有的多因子策略都从该类派生\n    包含了策略的基本开发框架\n    '''\n    def __init__(self, name:str):\n        self.__name__ = name\n        \n    \n    def name(self) -> str:\n        return self.__name__\n\n\n    def on_init(self, context:SelContext):\n        '''\n        策略初始化，启动的时候调用\n        用于加载自定义数据\n\n        @context    策略运行上下文\n        '''\n        return\n    \n    def on_session_begin(self, context:SelContext, curTDate:int):\n        '''\n        交易日开始事件\n\n        @curTDate   交易日，格式为20210220\n        '''\n        return\n\n    def on_session_end(self, context:SelContext, curTDate:int):\n        '''\n        交易日结束事件\n\n        @curTDate   交易日，格式为20210220\n        '''\n        return\n    \n    def on_calculate(self, context:SelContext):\n        '''\n        K线闭合时调用，一般作为策略的核心计算模块\n        @context    策略运行上下文\n        '''\n        return\n\n    def on_calculate_done(self, context:SelContext):\n        '''\n        K线闭合时调用，一般作为策略的核心计算模块\n        @context    策略运行上下文\n        '''\n        return\n\n    def on_backtest_end(self, context:CtaContext):\n        '''\n        回测结束时回调，只在回测框架下会触发\n\n        @context    策略上下文\n        '''\n        return\n\n    def on_tick(self, context:SelContext, stdCode:str, newTick:dict):\n        '''\n        逐笔数据进来时调用\n        生产环境中，每笔行情进来就直接调用\n        回测环境中，是模拟的逐笔数据\n        @context    策略运行上下文\n        @stdCode    合约代码\n        @newTick    最新逐笔\n        '''\n        return\n\n    def on_bar(self, context:SelContext, stdCode:str, period:str, newBar:dict):\n        '''\n        K线闭合时回调\n        @context    策略上下文\n        @stdCode    合约代码\n        @period     K线周期\n        @newBar     最新闭合的K线\n        '''\n        return"
  },
  {
    "path": "wtpy/WtBtEngine.py",
    "content": "from wtpy.wrapper import WtBtWrapper\nfrom wtpy.CtaContext import CtaContext\nfrom wtpy.SelContext import SelContext\nfrom wtpy.HftContext import HftContext\nfrom wtpy.StrategyDefs import BaseCtaStrategy, BaseSelStrategy, BaseHftStrategy\nfrom wtpy.ExtToolDefs import BaseIndexWriter\nfrom wtpy.WtCoreDefs import EngineType\nfrom wtpy.WtUtilDefs import singleton\n\nfrom .ProductMgr import ProductMgr, ProductInfo\nfrom .SessionMgr import SessionMgr, SessionInfo\nfrom .ContractMgr import ContractMgr, ContractInfo\n\nfrom .CodeHelper import CodeHelper\n\nimport os\nimport json\n\n\n@singleton\nclass WtBtEngine:\n\n    def __init__(self, eType:EngineType = EngineType.ET_CTA, logCfg:str = \"logcfgbt.json\", isFile:bool = True, bDumpCfg:bool = False, outDir:str = \"./outputs_bt\"):\n        self.is_backtest = True\n\n        self.__wrapper__ = WtBtWrapper(self)  #api接口转换器\n        self.__context__ = None      #策略ctx映射表\n        self.__config__ = dict()        #框架配置项\n        self.__cfg_commited__ = False   #配置是否已提交\n\n        self.__idx_writer__ = None  #指标输出模块\n\n        self.__dump_config__ = bDumpCfg #是否保存最终配置\n\n        if eType == eType.ET_CTA:\n            self.__wrapper__.initialize_cta(logCfg, isFile, outDir)   #初始化CTA环境\n        elif eType == eType.ET_HFT:\n            self.__wrapper__.initialize_hft(logCfg, isFile, outDir)   #初始化HFT环境\n        elif eType == eType.ET_SEL:\n            self.__wrapper__.initialize_sel(logCfg, isFile, outDir)   #初始化SEL环境\n\n    def __check_config__(self):\n        '''\n        检查设置项\\n\n        主要会补充一些默认设置项\n        '''\n        if \"replayer\" not in self.__config__:\n            self.__config__[\"replayer\"] = dict()\n            self.__config__[\"replayer\"][\"basefiles\"] = dict()\n\n        if \"replayer\" not in self.__config__:\n            self.__config__[\"replayer\"] = dict()\n            self.__config__[\"replayer\"][\"mode\"] = \"csv\"\n            self.__config__[\"replayer\"][\"path\"] = \"./storage/\"\n\n        if \"env\" not in self.__config__:\n            self.__config__[\"env\"] = dict()\n            self.__config__[\"env\"][\"mocker\"] = \"cta\"\n\n    def set_writer(self, writer:BaseIndexWriter):\n        '''\n        设置指标输出模块\n        '''\n        self.__idx_writer__ = writer\n\n    def write_indicator(self, id, tag, time, data):\n        '''\n        写入指标数据\n        '''\n        if self.__idx_writer__ is not None:\n            self.__idx_writer__.write_indicator(id, tag, time, data)\n\n    def init(self, folder:str, cfgfile:str = \"configbt.json\", commfile:str=\"commodities.json\", contractfile:str=\"contracts.json\"):\n        '''\n        初始化\\n\n        @folder     基础数据文件目录，\\\\结尾\\n\n        @cfgfile    配置文件，json格式\n        '''\n        f = open(cfgfile, \"r\")\n        content =f.read()\n        self.__config__ = json.loads(content)\n        f.close()\n\n        self.__check_config__()\n\n        self.__config__[\"replayer\"][\"basefiles\"][\"commodity\"] = folder + commfile\n        self.__config__[\"replayer\"][\"basefiles\"][\"contract\"] = folder + contractfile\n        self.__config__[\"replayer\"][\"basefiles\"][\"holiday\"] = folder + \"holidays.json\"\n        self.__config__[\"replayer\"][\"basefiles\"][\"session\"] = folder + \"sessions.json\"\n        self.__config__[\"replayer\"][\"basefiles\"][\"hot\"] = folder + \"hots.json\"\n\n        self.productMgr = ProductMgr()\n        self.productMgr.load(folder + commfile)\n\n        self.contractMgr = ContractMgr()\n        self.contractMgr.load(folder + contractfile)\n\n        self.sessionMgr = SessionMgr()\n        self.sessionMgr.load(folder + \"sessions.json\")\n\n    def configMocker(self, name:str):\n        '''\n        设置模拟器\n        '''\n        self.__config__[\"env\"][\"mocker\"] = name\n\n    def configBacktest(self, stime:int, etime:int):\n        '''\n        配置回测设置项\\n\n        @stime  开始时间\\n\n        @etime  结束时间\n        '''\n        self.__config__[\"replayer\"][\"stime\"] = int(stime)\n        self.__config__[\"replayer\"][\"etime\"] = int(etime)\n\n    def configBTStorage(self, mode:str, path:str = None, dbcfg:dict = None):\n        '''\n        配置数据存储\\n\n        @mode   存储模式，csv-表示从csv直接读取，一般回测使用，wtp-表示使用wt框架自带数据存储\n        '''\n        self.__config__[\"replayer\"][\"mode\"] = mode\n        if path is not None:\n            self.__config__[\"replayer\"][\"path\"] = path\n        if dbcfg is not None:\n            self.__config__[\"replayer\"][\"db\"] = dbcfg\n\n    def setExternalCtaStrategy(self, id:str, module:str, typeName:str, params:dict):\n        '''\n        添加外部的CTA策略\n        '''\n        if \"cta\" not in self.__config__:\n            self.__config__[\"cta\"] = dict()\n\n        self.__config__[\"cta\"][\"module\"] = module\n\n        if \"strategy\" not in self.__config__[\"cta\"]:\n            self.__config__[\"cta\"][\"strategy\"] = dict()\n\n        self.__config__[\"cta\"][\"strategy\"][\"id\"] = id\n        self.__config__[\"cta\"][\"strategy\"][\"name\"] = typeName\n        self.__config__[\"cta\"][\"strategy\"][\"params\"] = params\n        \n\n    def setExternalHftStrategy(self, id:str, module:str, typeName:str, params:dict):\n        '''\n        添加外部的HFT策略\n        '''\n        if \"hft\" not in self.__config__:\n            self.__config__[\"hft\"] = dict()\n\n        self.__config__[\"hft\"][\"module\"] = module\n\n        if \"strategy\" not in self.__config__[\"hft\"]:\n            self.__config__[\"hft\"][\"strategy\"] = dict()\n\n        self.__config__[\"hft\"][\"strategy\"][\"id\"] = id\n        self.__config__[\"hft\"][\"strategy\"][\"name\"] = typeName\n        self.__config__[\"hft\"][\"strategy\"][\"params\"] = params\n\n\n    def commitBTConfig(self):\n        '''\n        提交配置\\n\n        只有第一次调用会生效，不可重复调用\\n\n        如果执行run之前没有调用，run会自动调用该方法\n        '''\n        if self.__cfg_commited__:\n            return\n\n        cfgfile = json.dumps(self.__config__, indent=4, sort_keys=True)\n        self.__wrapper__.config_backtest(cfgfile, False)\n        self.__cfg_commited__ = True\n\n        if self.__dump_config__:\n            f = open(\"config_run.json\", 'w')\n            f.write(cfgfile)\n            f.close()\n\n    def getSessionByCode(self, code:str) -> SessionInfo:\n        '''\n        通过合约代码获取交易时间模板\\n\n        @code   合约代码，格式如SHFE.rb.HOT\n        '''\n        pid = CodeHelper.stdCodeToStdCommID(code)\n\n        pInfo = self.productMgr.getProductInfo(pid)\n        if pInfo is None:\n            return None\n\n        return self.sessionMgr.getSession(pInfo.session)\n\n    def getSessionByName(self, sname:str) -> SessionInfo:\n        '''\n        通过模板名获取交易时间模板\\n\n        @sname  模板名\n        '''\n        return self.sessionMgr.getSession(sname)\n\n    def getProductInfo(self, code:str) -> ProductInfo:\n        '''\n        获取品种信息\\n\n        @code   合约代码，格式如SHFE.rb.HOT\n        '''\n        return self.productMgr.getProductInfo(code)\n\n    def getContractInfo(self, code:str) -> ContractInfo:\n        '''\n        获取品种信息\\n\n        @code   合约代码，格式如SHFE.rb.HOT\n        '''\n        return self.contractMgr.getContractInfo(code)\n\n    def getAllCodes(self) -> list:\n        '''\n        获取全部合约代码\n        '''\n        return self.contractMgr.getTotalCodes()\n\n    def set_time_range(self, beginTime:int, endTime:int):\n        '''\n        设置回测时间\\r\n        @beginTime  开始时间，格式如yyyymmddHHMM\n        @endTime    结束时间，格式如yyyymmddHHMM\n        '''\n        self.__wrapper__.set_time_range(beginTime, endTime)\n\n    def set_cta_strategy(self, strategy:BaseCtaStrategy, slippage:int = 0, hook:bool = False, persistData:bool = True):\n        '''\n        添加策略\\n\n        @strategy   策略对象\n        @slippage   滑点大小\n        @hook       是否安装钩子，主要用于单步控制重算\n        '''\n        ctxid = self.__wrapper__.init_cta_mocker(strategy.name(), slippage, hook, persistData)\n        self.__context__ = CtaContext(ctxid, strategy, self.__wrapper__, self)\n\n    def set_hft_strategy(self, strategy:BaseHftStrategy, hook:bool = False):\n        '''\n        添加策略\\n\n        @strategy   策略对象\n        @hook       是否安装钩子，主要用于单步控制重算\n        '''\n        ctxid = self.__wrapper__.init_hft_mocker(strategy.name(), hook)\n        self.__context__ = HftContext(ctxid, strategy, self.__wrapper__, self)\n\n    def set_sel_strategy(self, strategy:BaseSelStrategy, date:int=0, time:int=0, period:str=\"d\", trdtpl:str=\"CHINA\", session:str=\"TRADING\", slippage:int = 0):\n        '''\n        添加策略\\n\n        @strategy   策略对象\n        '''\n        ctxid = self.__wrapper__.init_sel_mocker(strategy.name(), date, time, period, trdtpl, session, slippage)\n        self.__context__ = SelContext(ctxid, strategy, self.__wrapper__, self)\n\n    def get_context(self, id:int):\n        return self.__context__\n\n    def run_backtest(self, bAsync:bool = False, bNeedDump:bool = True):\n        '''\n        运行框架\n\n        @bAsync 是否异步运行，默认为false\n        '''\n        if not self.__cfg_commited__:   #如果配置没有提交，则自动提交一下\n            self.commitBTConfig()\n\n        self.__wrapper__.run_backtest(bNeedDump = bNeedDump, bAsync = bAsync)\n\n    def cta_step(self, remark:str = \"\") -> bool:\n        '''\n        CTA策略单步执行\n\n        @remark 单步备注信息，没有实际作用，主要用于外部调用区分步骤\n        '''\n        return self.__wrapper__.cta_step(self.__context__.id)\n\n    def hft_step(self):\n        '''\n        HFT策略单步执行\n        '''\n        self.__wrapper__.hft_step(self.__context__.id)\n\n    def stop_backtest(self):\n        '''\n        手动停止回测\n        '''\n        self.__wrapper__.stop_backtest()\n\n    def release_backtest(self):\n        '''\n        释放框架\n        '''\n        self.__wrapper__.release_backtest()\n\n    def on_init(self):\n        return\n\n    def on_schedule(self, date:int, time:int, taskid:int = 0):\n        return\n\n    def on_session_begin(self, date:int):\n        return\n\n    def on_session_end(self, date:int):\n        return\n\n    def on_backtest_end(self):\n        if self.__context__ is None:\n            return\n\n        self.__context__.on_backtest_end()\n\n    def clear_cache(self):\n        '''\n        清除缓存的数据，即加已经加载到内存中的数据全部清除\n        '''\n        self.__wrapper__.clear_cache()\n"
  },
  {
    "path": "wtpy/WtCoreDefs.py",
    "content": "from ctypes import c_uint, c_void_p, CFUNCTYPE, POINTER, c_char_p, c_bool, c_ulong, c_double\nfrom ctypes import Structure, c_char, c_int32, c_uint16, c_uint32, c_uint64, addressof, sizeof\nfrom copy import copy\nimport numpy as np\nimport pandas as pd\nfrom typing import Any\n\nMAX_INSTRUMENT_LENGTH = c_char*32\nMAX_EXCHANGE_LENGTH = c_char*10\nPriceQueueType = c_double*10\nVolumeQueueType = c_uint32*10\n\nclass WTSStruct(Structure):\n    @property\n    def fields(self) -> list:\n        return self._fields_\n\n    @property\n    def values(self) -> tuple:\n        return tuple(getattr(self, i[0]) for i in self._fields_)\n\n    @property\n    def to_dict(self) -> dict:\n        return {i[0]:getattr(self, i[0]) for i in self._fields_}\n\nclass WTSTickStruct(WTSStruct):\n    '''\n    C接口传递的tick数据结构\n    '''\n    _fields_ = [(\"exchg\", MAX_EXCHANGE_LENGTH),\n                (\"code\", MAX_INSTRUMENT_LENGTH),\n                (\"price\", c_double),\n                (\"open\", c_double),\n                (\"high\", c_double),\n                (\"low\", c_double),\n                (\"settle_price\", c_double),\n\n                (\"upper_limit\", c_double),\n                (\"lower_limit\", c_double),\n\n                (\"total_volume\", c_uint32),\n                (\"volume\", c_uint32),\n                (\"total_turnover\", c_double),\n                (\"turn_over\", c_double),\n                (\"open_interest\", c_uint32),\n                (\"diff_interest\", c_int32),\n\n                (\"trading_date\", c_uint32),\n                (\"action_date\", c_uint32),\n                (\"action_time\", c_uint32),\n\n                (\"pre_close\", c_double),\n                (\"pre_settle\", c_double),\n                (\"pre_interest\", c_uint32),\n\n                (\"bid_prices\", PriceQueueType),\n                (\"ask_prices\", PriceQueueType),\n                (\"bid_qty\", VolumeQueueType),\n                (\"ask_qty\", VolumeQueueType)]\n    _pack_ = 1\n\n    @property\n    def fields(self) -> list:\n        fields = self._fields_.copy()\n        fields[0] = ('exchg', 'S10')\n        fields[1] = ('code', 'S10')\n        fields[-4] = ('bid_prices', 'O')\n        fields[-3] = ('ask_prices', 'O')\n        fields[-2] = ('bid_qty', 'O')\n        fields[-1] = ('ask_qty', 'O')\n        return fields\n\n\nclass WTSBarStruct(WTSStruct):\n    '''\n    C接口传递的bar数据结构\n    '''\n    _fields_ = [(\"date\", c_uint32),\n                (\"time\", c_uint32),\n                (\"open\", c_double),\n                (\"high\", c_double),\n                (\"low\", c_double),\n                (\"close\", c_double),\n                (\"settle\", c_double),\n                (\"money\", c_double),\n                (\"vol\", c_uint32),\n                (\"hold\", c_uint32),\n                (\"diff\", c_int32)]\n    _pack_ = 1\n\nclass WTSTransStruct(WTSStruct):\n    '''\n    C接口传递的逐笔成交数据结构\n    '''\n    _fields_ = [(\"exchg\", MAX_EXCHANGE_LENGTH),\n                (\"code\", MAX_INSTRUMENT_LENGTH),\n\n                (\"trading_date\", c_uint32),\n                (\"action_date\", c_uint32),\n                (\"action_time\", c_uint32),\n\n                (\"index\", c_uint32),\n                (\"ttype\", c_int32),\n                (\"side\", c_int32),\n\n                (\"price\", c_double),\n                (\"volume\", c_uint32),\n                (\"askorder\", c_int32),\n                (\"bidorder\", c_int32)]\n    _pack_ = 1\n\nclass WTSOrdQueStruct(WTSStruct):\n    '''\n    C接口传递的委托队列数据结构\n    '''\n    _fields_ = [(\"exchg\", MAX_EXCHANGE_LENGTH),\n                (\"code\", MAX_INSTRUMENT_LENGTH),\n\n                (\"trading_date\", c_uint32),\n                (\"action_date\", c_uint32),\n                (\"action_time\", c_uint32),\n\n                (\"side\", c_int32),\n                (\"price\", c_double),\n                (\"order_items\", c_uint32),\n                (\"qsize\", c_uint32),\n                (\"volumes\", c_uint32*50)]\n    _pack_ = 1\n\nclass WTSOrdDtlStruct(WTSStruct):\n    '''\n    C接口传递的委托明细数据结构\n    '''\n    _fields_ = [(\"exchg\", MAX_EXCHANGE_LENGTH),\n                (\"code\", MAX_INSTRUMENT_LENGTH),\n\n                (\"trading_date\", c_uint32),\n                (\"action_date\", c_uint32),\n                (\"action_time\", c_uint32),\n\n                (\"index\", c_uint32),\n                (\"side\", c_int32),\n                (\"price\", c_double),\n                (\"volume\", c_uint32),\n                (\"otype\", c_int32)]\n    _pack_ = 1\n\n\nclass CacheList(list):\n    def to_record(self) -> np.recarray:\n        data = np.empty(len(self), dtype=self[0].fields)\n        for k, v in enumerate(self):\n            data[k] = v.values\n        return data.view(np.recarray)\n\n    def to_pandas(self) -> pd.DataFrame:\n        return pd.DataFrame(self.to_record())\n\nclass BarList(CacheList):\n    def on_read_bar(self, curBar:POINTER(WTSBarStruct), count:int, isLast:bool):\n        bsSize = sizeof(WTSBarStruct)\n        addr = addressof(curBar.contents)\n        for i in range(count):\n            thisBar = WTSBarStruct.from_address(addr)\n            self.append(copy(thisBar))\n            addr += bsSize\n\n    def on_data_count(self, count:int):\n        pass\n\nclass TickList(CacheList):\n    def on_read_tick(self, curTick:POINTER(WTSTickStruct), count:int, isLast:bool):\n        tsSize = sizeof(WTSTickStruct)\n        addr = addressof(curTick.contents)\n        for i in range(count):\n            thisTick = WTSTickStruct.from_address(addr)\n            self.append(copy(thisTick))\n            addr += tsSize\n\n    def on_data_count(self, count:int):\n        pass\n\n# 回调函数定义\n#策略初始化回调\nCB_STRATEGY_INIT = CFUNCTYPE(c_void_p, c_ulong) \n#策略tick数据推送回调\nCB_STRATEGY_TICK = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSTickStruct))\n#策略获取tick数据的单条tick同步回调\nCB_STRATEGY_GET_TICK = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSTickStruct), c_uint32, c_bool)\n#策略重算回调(CTA/SEL策略)\nCB_STRATEGY_CALC = CFUNCTYPE(c_void_p, c_ulong, c_ulong, c_ulong)\n#策略订阅的K线闭合事件回调\nCB_STRATEGY_BAR = CFUNCTYPE(c_void_p, c_ulong, c_char_p, c_char_p, POINTER(WTSBarStruct))\n#策略获取K线数据的单条K线同步回调\nCB_STRATEGY_GET_BAR = CFUNCTYPE(c_void_p, c_ulong, c_char_p, c_char_p, POINTER(WTSBarStruct), c_uint32, c_bool)\n#策略获取全部持仓的同步回调\nCB_STRATEGY_GET_POSITION = CFUNCTYPE(c_void_p, c_ulong, c_char_p, c_double, c_bool)\n#交易日开始结束事件回调\nCB_SESSION_EVENT = CFUNCTYPE(c_void_p, c_ulong, c_ulong, c_bool) \n\n#引擎事件回调(交易日开启结束等)\nCB_ENGINE_EVENT = CFUNCTYPE(c_void_p, c_ulong, c_ulong, c_ulong)\n\n#HFT策略交易通道事件回调\nCB_HFTSTRA_CHNL_EVT = CFUNCTYPE(c_void_p, c_ulong, c_char_p, c_ulong)\n#HFT策略订单推送回报\nCB_HFTSTRA_ORD = CFUNCTYPE(c_void_p, c_ulong, c_ulong, c_char_p, c_bool, c_double, c_double, c_double, c_bool, c_char_p)\n#HFT策略成交推送回报\nCB_HFTSTRA_TRD = CFUNCTYPE(c_void_p, c_ulong, c_ulong, c_char_p, c_bool, c_double, c_double, c_char_p)\n#HFT策略下单结果回报\nCB_HFTSTRA_ENTRUST = CFUNCTYPE(c_void_p, c_ulong, c_ulong, c_char_p, c_bool, c_char_p, c_char_p)\n\n#策略委托队列推送回调\nCB_HFTSTRA_ORDQUE = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSOrdQueStruct))\n#策略获取委托队列数据的单条数据同步回调\nCB_HFTSTRA_GET_ORDQUE = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSOrdQueStruct), c_uint32, c_bool)\n#策略委托明细推送回调\nCB_HFTSTRA_ORDDTL = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSOrdDtlStruct))\n#策略获取委托明细数据的单条数据同步回调\nCB_HFTSTRA_GET_ORDDTL = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSOrdDtlStruct), c_uint32, c_bool)\n#策略成交明细推送回调\nCB_HFTSTRA_TRANS = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSTransStruct))\n#策略获取成交明细数据的单条数据同步回调\nCB_HFTSTRA_GET_TRANS = CFUNCTYPE(c_void_p, c_ulong, c_char_p, POINTER(WTSTransStruct), c_uint32, c_bool)\n\n\nEVENT_ENGINE_INIT\t= 1     #框架初始化\nEVENT_SESSION_BEGIN = 2     #交易日开始\nEVENT_SESSION_END\t= 3     #交易日结束\nEVENT_ENGINE_SCHDL\t= 4     #框架调度\nEVENT_BACKTEST_END  = 5     #回测结束\n\nCHNL_EVENT_READY\t= 1000  #通道就绪事件\nCHNL_EVENT_LOST\t\t= 1001  #通道断开事件\n\nfrom enum import Enum\nclass EngineType(Enum):\n    '''\n    引擎类型\n    枚举变量\n    '''\n    ET_CTA = 999\n    ET_HFT = 1000\n    ET_SEL = 1001\n\n        \n'''\nParser外接实现\n'''\nEVENT_PARSER_INIT\t\t= 1;\t#Parser初始化\nEVENT_PARSER_CONNECT\t= 2;\t#Parser连接\nEVENT_PARSER_DISCONNECT = 3;\t#Parser断开连接\nEVENT_PARSER_RELEASE\t= 4;\t#Parser释放\nCB_PARSER_EVENT = CFUNCTYPE(c_void_p, c_ulong, c_char_p)\nCB_PARSER_SUBCMD = CFUNCTYPE(c_void_p, c_char_p, c_char_p, c_bool)\n\n'''\nExecuter外接实现\n'''\nCB_EXECUTER_INIT = CFUNCTYPE(c_void_p, c_char_p)\nCB_EXECUTER_CMD = CFUNCTYPE(c_void_p, c_char_p, c_char_p, c_double)\n"
  },
  {
    "path": "wtpy/WtDataDefs.py",
    "content": "import numpy as np\nfrom pandas import DataFrame\n\nclass WtKlineData:\n    def __init__(self, size:int, bAlloc:bool = True):\n        self.capacity:int = size\n        self.size:int = 0\n\n        if bAlloc:\n            self.bartimes = np.zeros(self.capacity, np.int64)\n            self.opens = np.zeros(self.capacity)\n            self.highs = np.zeros(self.capacity)\n            self.lows = np.zeros(self.capacity)\n            self.closes = np.zeros(self.capacity)\n            self.volumes = np.zeros(self.capacity)\n        else:\n            self.bartimes = None\n            self.opens = None\n            self.highs = None\n            self.lows = None\n            self.closes = None\n            self.volumes = None\n\n    def append_bar(self, newBar:dict):\n\n        pos = self.size\n        if pos == self.capacity:\n            self.bartimes[:-1] = self.bartimes[1:]\n            self.opens[:-1] = self.opens[1:]\n            self.highs[:-1] = self.highs[1:]\n            self.lows[:-1] = self.lows[1:]\n            self.closes[:-1] = self.closes[1:]\n            self.volumes[:-1] = self.volumes[1:]\n\n            pos = -1\n        else:\n            self.size += 1\n        self.bartimes[pos] = newBar[\"bartime\"]\n        self.opens[pos] = newBar[\"open\"]\n        self.highs[pos] = newBar[\"high\"]\n        self.lows[pos] = newBar[\"low\"]\n        self.closes[pos] = newBar[\"close\"]\n        self.volumes[pos] = newBar[\"volume\"]\n\n    def is_empty(self) -> bool:\n        return self.size==0\n\n    def clear(self):\n        self.size = 0\n\n        self.bartimes:np.ndarray = np.zeros(self.capacity, np.int64)\n        self.opens:np.ndarray = np.zeros(self.capacity)\n        self.highs:np.ndarray = np.zeros(self.capacity)\n        self.lows:np.ndarray = np.zeros(self.capacity)\n        self.closes:np.ndarray = np.zeros(self.capacity)\n        self.volumes:np.ndarray = np.zeros(self.capacity)\n\n    def get_bar(self, iLoc:int = -1) -> dict:\n        if self.is_empty():\n            return None\n\n        lastBar = dict()\n        lastBar[\"bartime\"] = self.bartimes[iLoc]\n        lastBar[\"open\"] = self.opens[iLoc]\n        lastBar[\"high\"] = self.highs[iLoc]\n        lastBar[\"low\"] = self.lows[iLoc]\n        lastBar[\"close\"] = self.closes[iLoc]\n        lastBar[\"volume\"] = self.volumes[iLoc]\n\n        return lastBar\n\n    def slice(self, iStart:int = 0, iEnd:int = -1, bCopy:bool = False):\n        if self.is_empty():\n            return None\n\n        bartimes = self.bartimes[iStart:iEnd]\n        cnt = len(bartimes)\n        ret = WtKlineData(cnt, False)\n        ret.size = cnt\n\n        if bCopy:\n            ret.bartimes = bartimes.copy()\n            ret.opens = self.opens[iStart:iEnd].copy()\n            ret.highs = self.highs[iStart:iEnd].copy()\n            ret.lows = self.lows[iStart:iEnd].copy()\n            ret.closes = self.closes[iStart:iEnd].copy()\n            ret.volumes = self.volumes[iStart:iEnd].copy()\n        else:\n            ret.bartimes = bartimes\n            ret.opens = self.opens[iStart:iEnd]\n            ret.highs = self.highs[iStart:iEnd]\n            ret.lows = self.lows[iStart:iEnd]\n            ret.closes = self.closes[iStart:iEnd]\n            ret.volumes = self.volumes[iStart:iEnd]\n\n        return ret\n\n    def to_df(self) -> DataFrame:\n        ret = DataFrame({\n            \"bartime\":self.bartimes,\n            \"open\":self.opens,\n            \"high\":self.highs,\n            \"low\":self.lows,\n            \"close\":self.closes,\n            \"volume\":self.volumes\n        })\n        ret.set_index(self.bartimes)\n        return ret\n\nclass WtHftData:\n    def __init__(self, capacity:int):\n        self.capacity:int = capacity\n        self.size:int = 0\n\n        self.items = [None]*capacity\n\n    def append_item(self, newItem:dict):\n        pos = self.size\n        if pos == self.capacity:\n            self.items[:-1] = self.items[1:]\n            pos = -1\n        else:\n            self.size += 1\n\n        self.items[pos] = newItem\n\n    def is_empty(self) -> bool:\n        return self.size==0\n\n    def clear(self):\n        self.size = 0\n        self.items = []*self.capacity\n\n    def get_item(self, iLoc:int=-1) -> dict:\n        if self.is_empty():\n            return None\n\n        return self.items[iLoc]\n\n    def to_df(self) -> DataFrame:\n        ret = DataFrame(self.items)\n        return ret"
  },
  {
    "path": "wtpy/WtDtEngine.py",
    "content": "from wtpy.wrapper import WtDtWrapper\nfrom wtpy.ExtModuleDefs import BaseExtParser\nfrom wtpy.WtUtilDefs import singleton\n\n@singleton\nclass WtDtEngine:\n\n    def __init__(self):\n        self.__wrapper__ = WtDtWrapper()  #api接口转换器\n        self.__ext_parsers__ = dict()   #外接的行情接入模块\n\n    def initialize(self, cfgfile:str = \"dtcfg.json\", logprofile:str = \"logcfgdt.json\"):\n        '''\n        数据引擎初始化\\n\n        @cfgfile    配置文件\\n\n        @logprofile 日志模块配置文件\n        '''\n        self.__wrapper__.initialize(cfgfile, logprofile)\n    \n    def run(self):\n        '''\n        运行数据引擎\n        '''\n        self.__wrapper__.run_datakit()\n\n    def add_exetended_parser(self, parser:BaseExtParser):\n        '''\n        添加扩展parser\n        '''\n        id = parser.id()\n        if id not in self.__ext_parsers__:\n            self.__ext_parsers__[id] = parser\n            if not self.__wrapper__.create_extended_parser(id):\n                self.__ext_parsers__.pop(id)\n\n    def get_extended_parser(self, id:str)->BaseExtParser:\n        '''\n        根据id获取扩展parser\n        '''\n        if id not in self.__ext_parsers__:\n            return None\n        return self.__ext_parsers__[id]\n\n    def push_quote_from_extended_parser(self, id:str, newTick, bNeedSlice:bool):\n        '''\n        向底层推送tick数据\n        '''\n        self.__wrapper__.push_quote_from_exetended_parser(id, newTick, bNeedSlice)"
  },
  {
    "path": "wtpy/WtDtServo.py",
    "content": "from wtpy.WtUtilDefs import singleton\nfrom wtpy.wrapper import WtDtServoApi\nfrom wtpy.WtCoreDefs import BarList, TickList, WTSBarStruct, WTSTickStruct\n\nfrom flask import Flask, session, redirect, request, make_response\nfrom flask_compress  import Compress\n\nimport urllib.request\nimport io\nimport gzip\n\nimport json\n\ndef pack_rsp(obj):\n    rsp = make_response(json.dumps(obj))\n    rsp.headers[\"content-type\"]= \"text/json;charset=utf-8\"\n    return rsp\n\ndef parse_data():\n    try:\n        data = request.get_data()\n        json_data = json.loads(data.decode(\"utf-8\"))\n        return True,json_data\n    except:\n        return False, {\n            \"result\": -998,\n            \"message\": \"请求数据解析失败\"\n        }\n\ndef get_param(json_data, key:str, type=str, defVal = \"\"):\n    if key not in json_data:\n        return defVal\n    else:\n        return type(json_data[key])\n\ndef httpPost(url, datas:dict, encoding='utf-8') -> dict:\n    headers = {\n        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',\n        'Accept-encoding': 'gzip'\n    }\n    data = json.dumps(datas).encode(\"utf-8\")\n    request = urllib.request.Request(url, data, headers)\n    if True:\n        f = urllib.request.urlopen(request)\n        ec = f.headers.get('Content-Encoding')\n        if ec == 'gzip':\n            cd = f.read()\n            cs = io.BytesIO(cd)\n            f = gzip.GzipFile(fileobj=cs)\n\n        ret = json.loads(f.read().decode(encoding))\n        f.close()\n        return ret\n    else:\n        return None\n\n@singleton\nclass WtDtServo:\n\n    # 构造函数，传入动态库名\n    def __init__(self):\n        self.__config__ = None\n        self.__cfg_commited__ = False\n        self.local_api = None\n        self.server_inst = None\n        self.remote_api = None    \n\n    def __check_config__(self):\n        '''\n        检查设置项\\n\n        主要会补充一些默认设置项\n        '''\n        if self.local_api is None:\n            self.local_api = WtDtServoApi()\n\n        if self.__config__ is None:\n            self.__config__ = dict()\n\n        if \"basefiles\" not in self.__config__:\n            self.__config__[\"basefiles\"] = dict()\n\n        if \"data\" not in self.__config__:\n            self.__config__[\"data\"] = {\n                \"store\":{\n                    \"path\":\"./storage/\"\n                }\n            }\n\n    def setRemoteUrl(self, url:str=\"http://127.0.0.1:8081\"):\n        if self.__config__ is not None:\n            raise Exception('WtDtServo is already in local mode')\n            return\n        \n        self.remote_api = WtDtRemoteServo(url)\n\n\n    def setBasefiles(self, commfile:str=\"./common/commodities.json\", contractfile:str=\"./common/contracts.json\", \n                holidayfile:str=\"./common/holidays.json\", sessionfile:str=\"./common/sessions.json\", hotfile:str=\"./common/hots.json\"):\n        '''\n        C接口初始化\n        '''\n        self.__check_config__()\n\n        self.__config__[\"basefiles\"][\"commodity\"] = commfile\n        self.__config__[\"basefiles\"][\"contract\"] = contractfile\n        self.__config__[\"basefiles\"][\"holiday\"] = holidayfile\n        self.__config__[\"basefiles\"][\"session\"] = sessionfile\n        self.__config__[\"basefiles\"][\"hot\"] = hotfile\n\n    def setStorage(self, path:str = \"./storage/\"):\n        self.__config__[\"data\"][\"store\"][\"path\"] = path\n    \n    def commitConfig(self):\n        if self.remote_api is not None:\n            raise Exception('WtDtServo is already in remote mode')\n            return\n            \n        if self.__cfg_commited__:\n            return\n\n        cfgfile = json.dumps(self.__config__, indent=4, sort_keys=True)\n        try:\n            self.local_api.initialize(cfgfile, False)\n            self.__cfg_commited__ = True\n        except OSError as oe:\n            print(oe)\n\n    def __server_impl__(self, port:int, host:str):\n        self.server_inst.run(port = port, host = host)\n        \n    def runServer(self, port:int = 8081, host=\"0.0.0.0\", bSync:bool = True):\n        if self.remote_api is not None:\n            raise Exception('WtDtServo is already in remote mode')\n            return\n\n        app = Flask(__name__)\n        app.secret_key = \"!@#$%^&*()\"\n        Compress(app)\n\n        self.server_inst = app\n\n        @app.route(\"/getbars\", methods=[\"POST\"])\n        def on_get_bars():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            stdCode = get_param(json_data, \"code\")\n            period = get_param(json_data, \"period\")\n            fromTime = get_param(json_data, \"stime\", int, None)\n            dataCount = get_param(json_data, \"count\", int, None)\n            endTime = get_param(json_data, \"etime\", int)\n\n            if (fromTime is None and dataCount is None) or (fromTime is not None and dataCount is not None):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"Only one of stime and count must be valid at the same time\"\n                }\n            else:\n                bars = self.local_api.get_bars(stdCode=stdCode, period=period, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n                if bars is None:\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"Data not found\"\n                    }\n                else:\n                    bar_list = [curBar.to_dict  for curBar in bars]\n                    \n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\",\n                        \"bars\": bar_list\n                    }\n\n            return pack_rsp(ret)\n\n        @app.route(\"/getticks\", methods=[\"POST\"])\n        def on_get_ticks():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            stdCode = get_param(json_data, \"code\")\n            fromTime = get_param(json_data, \"stime\", int, None)\n            dataCount = get_param(json_data, \"count\", int, None)\n            endTime = get_param(json_data, \"etime\", int)\n\n            if (fromTime is None and dataCount is None) or (fromTime is not None and dataCount is not None):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"Only one of stime and count must be valid at the same time\"\n                }\n            else:\n                ticks = self.local_api.get_ticks(stdCode=stdCode, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n                if ticks is None:\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"Data not found\"\n                    }\n                else:\n                    tick_list = list()\n                    for curTick in ticks:\n                        curTick = curTick.to_dict\n                        curTick[\"exchg\"] = curTick[\"exchg\"].decode()\n                        curTick[\"code\"] = curTick[\"code\"].decode()\n\n                        # TODO bid/ask还有问题，先剔除\n                        curTick.pop(\"bid_prices\")\n                        curTick.pop(\"ask_prices\")\n                        curTick.pop(\"bid_qty\")\n                        curTick.pop(\"ask_qty\")\n\n                        tick_list.append(curTick)\n                    \n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\",\n                        \"ticks\": tick_list\n                    }\n\n            return pack_rsp(ret)\n\n        self.commitConfig()\n        if bSync:\n            self.__server_impl__(port, host)\n        else:\n            import threading\n            self.worker = threading.Thread(target=self.__server_impl__, args=(port,host,))\n            self.worker.setDaemon(True)\n            self.worker.start()\n\n    def get_bars(self, stdCode:str, period:str, fromTime:int = None, dataCount:int = None, endTime:int = 0) -> BarList:\n        '''\n        获取K线数据\\n\n        @stdCode    标准合约代码\\n\n        @period     基础K线周期，m1/m5/d\\n\n        @fromTime   开始时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMM\\n\n        @endTime    结束时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMM，为0则读取到最后一条\n        '''\n        if self.remote_api is not None:\n            return self.remote_api.get_bars(stdCode=stdCode, period=period, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n        \n        self.commitConfig()\n\n        if (fromTime is None and dataCount is None) or (fromTime is not None and dataCount is not None):\n            raise Exception('Only one of fromTime and dataCount must be valid at the same time')\n\n        return self.local_api.get_bars(stdCode=stdCode, period=period, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n\n    def get_ticks(self, stdCode:str, fromTime:int = None, dataCount:int = None, endTime:int = 0) -> TickList:\n        '''\n        获取tick数据\\n\n        @stdCode    标准合约代码\\n\n        @fromTime   开始时间，格式为yyyymmddHHMM\\n\n        @endTime    结束时间，格式为yyyymmddHHMM，为0则读取到最后一条\n        '''\n        if self.remote_api is not None:\n            return self.remote_api.get_ticks(stdCode=stdCode, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n\n        self.commitConfig()\n\n        if (fromTime is None and dataCount is None) or (fromTime is not None and dataCount is not None):\n            raise Exception('Only one of fromTime and dataCount must be valid at the same time')\n\n        return self.local_api.get_ticks(stdCode=stdCode, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n\nclass WtDtRemoteServo:\n\n    def __init__(self, url:str=\"http://127.0.0.1:8081\"):\n        self.remote_url = url\n\n    def get_bars(self, stdCode:str, period:str, fromTime:int = None, dataCount:int = None, endTime:int = 0) -> BarList:\n        '''\n        获取K线数据\\n\n        @stdCode    标准合约代码\\n\n        @period     基础K线周期，m1/m5/d\\n\n        @fromTime   开始时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMM\\n\n        @endTime    结束时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMM，为0则读取到最后一条\n        '''\n        if (fromTime is None and dataCount is None) or (fromTime is not None and dataCount is not None):\n            raise Exception('Only one of fromTime and dataCount must be valid at the same time')\n\n        url = self.remote_url + \"/getbars\"\n        data = {\n            \"code\":stdCode,\n            \"period\":period,\n            \"etime\":endTime\n        }\n\n        if fromTime is not None:\n            data[\"stime\"] = fromTime\n        elif dataCount is not None:\n            data[\"count\"] = dataCount\n\n        resObj = httpPost(url, data)\n        if resObj[\"result\"] < 0:\n            print(resObj[\"message\"])\n            return None\n\n        barCache = BarList()\n        for curBar in resObj[\"bars\"]:\n            bs = WTSBarStruct()\n            bs.date = curBar[\"date\"]\n            bs.time = curBar[\"time\"]\n            bs.open = curBar[\"open\"]\n            bs.high = curBar[\"high\"]\n            bs.low = curBar[\"low\"]\n            bs.close = curBar[\"close\"]\n            bs.settle = curBar[\"settle\"]\n            bs.money = curBar[\"money\"]\n            bs.vol = curBar[\"vol\"]\n            bs.hold = curBar[\"hold\"]\n            bs.diff = curBar[\"diff\"]\n            barCache.append(bs)\n        return barCache\n            \n        \n\n    def get_ticks(self, stdCode:str, fromTime:int = None, dataCount:int = None, endTime:int = 0) -> TickList:\n        '''\n        获取tick数据\\n\n        @stdCode    标准合约代码\\n\n        @fromTime   开始时间，格式为yyyymmddHHMM\\n\n        @endTime    结束时间，格式为yyyymmddHHMM，为0则读取到最后一条\n        '''\n        if (fromTime is None and dataCount is None) or (fromTime is not None and dataCount is not None):\n            raise Exception('Only one of fromTime and dataCount must be valid at the same time')\n\n        url = self.remote_url + \"/getticks\"\n        data = {\n            \"code\":stdCode,\n            \"etime\":endTime\n        }\n\n        if fromTime is not None:\n            data[\"stime\"] = fromTime\n        elif dataCount is not None:\n            data[\"count\"] = dataCount\n\n        resObj = httpPost(url, data)\n        if resObj[\"result\"] < 0:\n            print(resObj[\"message\"])\n            return None\n\n        tickCache = TickList()\n        for curTick in resObj[\"ticks\"]:\n            ts = WTSTickStruct()\n            ts.exchg = curTick[\"exchg\"].encode('utf-8')\n            ts.code = stdCode.encode('utf-8')\n            ts.open = curTick[\"open\"]\n            ts.high = curTick[\"high\"]\n            ts.low = curTick[\"low\"]\n            ts.price = curTick[\"price\"]\n            ts.settle_price = curTick[\"settle_price\"]\n\n            ts.upper_limit = curTick[\"upper_limit\"]\n            ts.lower_limit = curTick[\"lower_limit\"]\n\n            ts.total_volume = curTick[\"total_volume\"]\n            ts.volume = curTick[\"volume\"]\n            ts.total_turnover = curTick[\"total_turnover\"]\n            ts.turn_over = curTick[\"turn_over\"]\n            ts.open_interest = curTick[\"open_interest\"]\n            ts.diff_interest = curTick[\"diff_interest\"]\n\n            ts.trading_date = curTick[\"trading_date\"]\n            ts.action_date = curTick[\"action_date\"]\n            ts.action_time = curTick[\"action_time\"]\n\n            ts.pre_close = curTick[\"pre_close\"]\n            ts.pre_settle = curTick[\"pre_settle\"]\n            ts.pre_interest = curTick[\"pre_interest\"]\n\n            # TODO 还有bid和ask档位没处理\n\n            tickCache.append(ts)\n        return tickCache\n"
  },
  {
    "path": "wtpy/WtEngine.py",
    "content": "from wtpy.wrapper import WtWrapper\nfrom wtpy.CtaContext import CtaContext\nfrom wtpy.SelContext import SelContext\nfrom wtpy.HftContext import HftContext\nfrom wtpy.StrategyDefs import BaseCtaStrategy, BaseSelStrategy, BaseHftStrategy\nfrom wtpy.ExtToolDefs import BaseIndexWriter, BaseDataReporter\nfrom wtpy.WtCoreDefs import EngineType\nfrom wtpy.ExtModuleDefs import BaseExtParser, BaseExtExecuter\nfrom wtpy.WtUtilDefs import singleton\n\nfrom .ProductMgr import ProductMgr, ProductInfo\nfrom .SessionMgr import SessionMgr, SessionInfo\nfrom .ContractMgr import ContractMgr, ContractInfo\nfrom .CodeHelper import CodeHelper\n\nimport json\n\n@singleton\nclass WtEngine:\n    '''\n    实盘交易引擎\n    '''\n\n    def __init__(self, eType:EngineType, logCfg:str = \"logcfg.json\", genDir:str = \"generated\", bDumpCfg:bool = False):\n        '''\n        WtEngine构造函数\\n\n        @eType  引擎类型：EngineType.ET_CTA、EngineType.ET_HFT、EngineType.ET_SEL\\n\n        @logCfg 日志配置文件\\n\n        @genDir 数据输出目录\\n\n        @bDumpCfg   是否保存最终配置文件\n        '''\n        self.is_backtest = False\n\n        self.__wrapper__ = WtWrapper(self)  #api接口转换器\n        self.__cta_ctxs__ = dict()      #CTA策略ctx映射表\n        self.__sel_ctxs__ = dict()      #SEL策略ctx映射表\n        self.__hft_ctxs__ = dict()      #HFT策略ctx映射表\n        self.__config__ = dict()        #框架配置项\n        self.__cfg_commited__ = False   #配置是否已提交\n\n        self.__writer__ = None          #指标输出模块\n        self.__reporter__ = None        #数据提交模块\n\n        self.__ext_parsers__ = dict()   #外接的行情接入模块\n        self.__ext_executers__ = dict() #外接的执行器\n\n        self.__dump_config__ = bDumpCfg #是否保存最终配置\n\n        self.__engine_type = eType\n        if eType == EngineType.ET_CTA:\n            self.__wrapper__.initialize_cta(logCfg=logCfg, isFile=True, genDir=genDir)\n        elif eType == EngineType.ET_HFT:\n            self.__wrapper__.initialize_hft(logCfg=logCfg, isFile=True, genDir=genDir)\n        elif eType == EngineType.ET_SEL:\n            self.__wrapper__.initialize_sel(logCfg=logCfg, isFile=True, genDir=genDir)\n\n    def __check_config__(self):\n        '''\n        检查设置项\\n\n        主要会补充一些默认设置项\n        '''\n        if \"basefiles\" not in self.__config__:\n            self.__config__[\"basefiles\"] = dict()\n\n        if \"env\" not in self.__config__:\n            self.__config__[\"env\"] = dict()\n            self.__config__[\"env\"][\"name\"] = \"cta\"\n            self.__config__[\"env\"][\"mode\"] = \"product\"\n            self.__config__[\"env\"][\"product\"] = {\n                \"session\":\"TRADING\"\n            }\n    \n    def getEngineType(self):\n        return self.__engine_type\n\n    def add_exetended_parser(self, parser:BaseExtParser):\n        id = parser.id()\n        if id not in self.__ext_parsers__:\n            self.__ext_parsers__[id] = parser\n            if not self.__wrapper__.create_extended_parser(id):\n                self.__ext_parsers__.pop(id)\n\n    def add_exetended_executer(self, executer:BaseExtExecuter):\n        id = executer.id()\n        if id not in self.__ext_executers__:\n            self.__ext_executers__[id] = executer\n            if not self.__wrapper__.create_extended_executer(id):\n                self.__ext_executers__.pop(id)\n\n    def get_extended_parser(self, id:str)->BaseExtParser:\n        if id not in self.__ext_parsers__:\n            return None\n        return self.__ext_parsers__[id]\n\n    def get_extended_executer(self, id:str)->BaseExtExecuter:\n        if id not in self.__ext_executers__:\n            return None\n        return self.__ext_executers__[id]\n\n    def push_quote_from_extended_parser(self, id:str, newTick, bNeedSlice:bool):\n        self.__wrapper__.push_quote_from_exetended_parser(id, newTick, bNeedSlice)\n\n    def set_writer(self, writer:BaseIndexWriter):\n        '''\n        设置指标输出模块\n        '''\n        self.__writer__ = writer\n\n    def write_indicator(self, id:str, tag:str, time:int, data:dict):\n        '''\n        写入指标数据\n        '''\n        if self.__writer__ is not None:\n            self.__writer__.write_indicator(id, tag, time, data)\n\n    def set_data_reporter(self, reporter:BaseDataReporter):\n        '''\n        设置数据报告器\n        '''\n        self.__reporter__ = reporter\n\n    def init(self, folder:str, cfgfile:str = \"config.json\", commfile:str=\"commodities.json\", contractfile:str=\"contracts.json\"):\n        '''\n        初始化\\n\n        @folder     基础数据文件目录，\\\\结尾\\n\n        @cfgfile    配置文件，json格式\n        '''\n        f = open(cfgfile, \"r\")\n        content =f.read()\n        self.__config__ = json.loads(content)\n        f.close()\n\n        self.__check_config__()\n\n        self.__config__[\"basefiles\"][\"commodity\"] = folder + commfile\n        self.__config__[\"basefiles\"][\"contract\"] = folder + contractfile\n        self.__config__[\"basefiles\"][\"holiday\"] = folder + \"holidays.json\"\n        self.__config__[\"basefiles\"][\"session\"] = folder + \"sessions.json\"\n        self.__config__[\"basefiles\"][\"hot\"] = folder + \"hots.json\"\n\n        self.productMgr = ProductMgr()\n        self.productMgr.load(folder + commfile)\n\n        self.contractMgr = ContractMgr()\n        self.contractMgr.load(folder + contractfile)\n\n        self.sessionMgr = SessionMgr()\n        self.sessionMgr.load(folder + \"sessions.json\")\n\n    def configEngine(self, name:str, mode:str = \"product\"):\n        '''\n        设置引擎和运行模式\n        '''\n        self.__config__[\"env\"][\"name\"] = name\n        self.__config__[\"env\"][\"mode\"] = mode\n\n    def addExternalCtaStrategy(self, id:str, params:dict):\n        '''\n        添加外部的CTA策略\n        '''\n        if \"strategies\" not in self.__config__:\n            self.__config__[\"strategies\"] = dict()\n\n        if \"cta\" not in self.__config__[\"strategies\"]:\n            self.__config__[\"strategies\"][\"cta\"] = list()\n\n        params[\"id\"] = id\n        self.__config__[\"strategies\"][\"cta\"].append(params)\n\n    def addExternalHftStrategy(self, id:str, params:dict):\n        '''\n        添加外部的HFT策略\n        '''\n        if \"strategies\" not in self.__config__:\n            self.__config__[\"strategies\"] = dict()\n\n        if \"hft\" not in self.__config__[\"strategies\"]:\n            self.__config__[\"strategies\"][\"hft\"] = list()\n\n        params[\"id\"] = id\n        self.__config__[\"strategies\"][\"hft\"].append(params)\n\n    def configStorage(self, path:str, module:str=\"\"):\n        '''\n        配置数据存储\\n\n        @mode   存储模式，csv-表示从csv直接读取，一般回测使用，wtp-表示使用wt框架自带数据存储\n        '''\n        self.__config__[\"data\"][\"store\"][\"module\"] = module\n        self.__config__[\"data\"][\"store\"][\"path\"] = path\n\n    def commitConfig(self):\n        '''\n        提交配置\\n\n        只有第一次调用会生效，不可重复调用\\n\n        如果执行run之前没有调用，run会自动调用该方法\n        '''\n        if self.__cfg_commited__:\n            return\n\n        cfgfile = json.dumps(self.__config__, indent=4, sort_keys=True)\n        self.__wrapper__.config(cfgfile, False)\n        self.__cfg_commited__ = True\n\n        if self.__dump_config__:\n            f = open(\"config_run.json\", 'w')\n            f.write(cfgfile)\n            f.close()\n\n    def regCtaStraFactories(self, factFolder:str):\n        '''\n        向底层模块注册CTA工厂模块目录\\n\n        !!!CTA策略只会被CTA引擎加载!!!\\n\n        @factFolder 工厂模块所在的目录\n        '''\n        return self.__wrapper__.reg_cta_factories(factFolder)\n\n    def regHftStraFactories(self, factFolder:str):\n        '''\n        向底层模块注册HFT工厂模块目录\\n\n        !!!HFT策略只会被HFT引擎加载!!!\\n\n        @factFolder 工厂模块所在的目录\n        '''\n        return self.__wrapper__.reg_hft_factories(factFolder)\n\n    def regExecuterFactories(self, factFolder:str):\n        '''\n        向底层模块注册执行器模块目录\\n\n        !!!执行器只在CTA引擎有效!!!\\n\n        @factFolder 工厂模块所在的目录\n        '''\n        return self.__wrapper__.reg_exe_factories(factFolder)\n\n    def addExecuter(self, id:str, trader:str, policies:dict, scale:int = 1):\n        if \"executers\" not in self.__config__:\n            self.__config__[\"executers\"] = list()\n\n        exeItem = {\n            \"active\":True,\n            \"id\": id,\n            \"scale\": scale,\n            \"policy\": policies,\n            \"trader\":trader\n        }\n\n        self.__config__[\"executers\"].append(exeItem)\n\n    def addTrader(self, id:str, params:dict):\n        if \"traders\" not in self.__config__:\n            self.__config__[\"traders\"] = list()\n\n        tItem = params\n        tItem[\"active\"] = True\n        tItem[\"id\"] = id\n\n        self.__config__[\"traders\"].append(tItem)\n\n    def getSessionByCode(self, stdCode:str) -> SessionInfo:\n        '''\n        通过合约代码获取交易时间模板\\n\n        @stdCode   合约代码，格式如SHFE.rb.HOT\n        '''\n        pid = CodeHelper.stdCodeToStdCommID(stdCode)\n        pInfo = self.productMgr.getProductInfo(pid)\n        if pInfo is None:\n            return None\n\n        return self.sessionMgr.getSession(pInfo.session)\n\n    def getSessionByName(self, sname:str) -> SessionInfo:\n        '''\n        通过模板名获取交易时间模板\\n\n        @sname  模板名\n        '''\n        return self.sessionMgr.getSession(sname)\n\n    def getProductInfo(self, stdCode:str) -> ProductInfo:\n        '''\n        获取品种信息\\n\n        @stdCode   合约代码，格式如SHFE.rb.HOT\n        '''\n        return self.productMgr.getProductInfo(stdCode)\n\n    def getContractInfo(self, stdCode:str) -> ContractInfo:\n        '''\n        获取品种信息\\n\n        @stdCode   合约代码，格式如SHFE.rb.HOT\n        '''\n        return self.contractMgr.getContractInfo(stdCode)\n\n    def getAllCodes(self) -> list:\n        '''\n        获取全部合约代码\n        '''\n        return self.contractMgr.getTotalCodes()\n\n    def add_cta_strategy(self, strategy:BaseCtaStrategy):\n        '''\n        添加CTA策略\\n\n        @strategy   策略对象\n        '''\n        id = self.__wrapper__.create_cta_context(strategy.name())\n        self.__cta_ctxs__[id] = CtaContext(id, strategy, self.__wrapper__, self)\n\n    def add_hft_strategy(self, strategy:BaseHftStrategy, trader:str, agent:bool = True):\n        '''\n        添加HFT策略\\n\n        @strategy   策略对象\n        '''\n        id = self.__wrapper__.create_hft_context(strategy.name(), trader, agent)\n        self.__hft_ctxs__[id] = HftContext(id, strategy, self.__wrapper__, self)\n\n    def add_sel_strategy(self, strategy:BaseSelStrategy, date:int, time:int, period:str):\n        id = self.__wrapper__.create_sel_context(strategy.name(), date, time, period)\n        self.__sel_ctxs__[id] = SelContext(id, strategy, self.__wrapper__, self)\n\n    def get_context(self, id:int):\n        '''\n        根据ID获取策略上下文\\n\n        @id     上下文id，一般添加策略的时候会自动生成一个唯一的上下文id\n        '''\n        if self.__engine_type == EngineType.ET_CTA:\n            if id not in self.__cta_ctxs__:\n                return None\n\n            return self.__cta_ctxs__[id]\n        elif self.__engine_type == EngineType.ET_HFT:\n            if id not in self.__hft_ctxs__:\n                return None\n\n            return self.__hft_ctxs__[id]\n        elif self.__engine_type == EngineType.ET_SEL:\n            if id not in self.__sel_ctxs__:\n                return None\n\n            return self.__sel_ctxs__[id]\n\n    def run(self):\n        '''\n        运行框架\n        '''\n        if not self.__cfg_commited__:   #如果配置没有提交，则自动提交一下\n            self.commitConfig()\n\n        self.__wrapper__.run()\n\n    def release(self):\n        '''\n        释放框架\n        '''\n        self.__wrapper__.release()\n\n    def on_init(self):\n        if self.__reporter__ is not None:\n            self.__reporter__.report_init_data()\n        return\n\n    def on_schedule(self, date:int, time:int, taskid:int = 0):\n        # print(\"engine scheduled\")\n        if self.__reporter__ is not None:\n            self.__reporter__.report_rt_data()\n\n    def on_session_begin(self, date:int):\n        # print(\"session begin\")\n        return\n\n    def on_session_end(self, date:int):\n        if self.__reporter__ is not None:\n            self.__reporter__.report_settle_data()\n        return\n"
  },
  {
    "path": "wtpy/WtMsgQue.py",
    "content": "from wtpy.wrapper.WtMQWrapper import WtMQWrapper, CB_ON_MSG\nfrom wtpy.WtUtilDefs import singleton\n\nclass WtMQServer:\n\n    def __init__(self):\n        self.id = None\n\n    def init(self, wrapper:WtMQWrapper, id:int):\n        self.id = id\n        self.wrapper = wrapper\n\n    def publish_message(self, topic:str, message:str):\n        if self.id is None:\n            raise Exception(\"MQServer not initialzied\")\n\n        self.wrapper.publish_message(self.id, topic, message)\n\nclass WtMQClient:\n\n    def __init__(self):\n        return\n\n    def init(self, wrapper:WtMQWrapper, id:int):\n        self.id = id\n        self.wrapper = wrapper\n\n    def start(self):\n        if self.id is None:\n            raise Exception(\"MQClient not initialzied\")\n\n        self.wrapper.start_client(self.id)\n\n    def subscribe(self, topic:str):\n        if self.id is None:\n            raise Exception(\"MQClient not initialzied\")\n        self.wrapper.subcribe_topic(self.id, topic)\n\n    def on_mq_message(self, topic:str, message:str, dataLen:int):\n        pass\n\n@singleton\nclass WtMsgQue:\n\n    def __init__(self) -> None:\n        self._servers = dict()\n        self._clients = dict()\n        self._wrapper = WtMQWrapper(self)\n\n        self._cb_msg = CB_ON_MSG(self.on_mq_message)\n\n    def get_client(self, client_id:int) -> WtMQClient:\n        if client_id not in self._clients:\n            return None\n        \n        return self._clients[client_id]\n\n    def on_mq_message(self, client_id:int, topic:str, message:str, dataLen:int):\n        client = self.get_client(client_id)\n        if client is None:\n            return\n\n        client.on_mq_message(topic, message, dataLen)\n\n    def add_mq_server(self, url:str, server:WtMQServer = None) -> WtMQServer:\n        id = self._wrapper.create_server(url)\n        if server is None:\n            server = WtMQServer()\n\n        server.init(self._wrapper, id)\n        self._servers[id] = server\n        return server\n\n    def destroy_mq_server(self, server:WtMQServer):\n        id = server.id\n        if id not in self._servers:\n            return\n        \n        self._wrapper.destroy_server(id)\n        self._servers.pop(id)\n\n    def add_mq_client(self, url:str, client:WtMQClient = None) -> WtMQClient:\n        id = self._wrapper.create_client(url, self._cb_msg)\n        if client is None:\n            client = WtMQClient()\n        client.init(self._wrapper, id)\n        self._clients[id] = client\n        return client\n\n    def destroy_mq_client(self, client:WtMQClient):\n        id = client.id\n        if id not in self._clients:\n            return\n        \n        self._wrapper.destroy_client(id)\n        self._clients.pop(id)\n        \n        "
  },
  {
    "path": "wtpy/WtUtilDefs.py",
    "content": "def singleton(cls):\n    instances = {}\n    def getinstance(*args,**kwargs):\n        if cls not in instances:\n            instances[cls] = cls(*args,**kwargs)\n        return instances[cls]\n    return getinstance\n"
  },
  {
    "path": "wtpy/__init__.py",
    "content": "from .StrategyDefs import BaseCtaStrategy, BaseSelStrategy, BaseHftStrategy\nfrom .CtaContext import CtaContext\nfrom .SelContext import SelContext\nfrom .HftContext import HftContext\nfrom .WtEngine import WtEngine\nfrom .WtBtEngine import WtBtEngine\nfrom .WtDtEngine import WtDtEngine\nfrom .WtCoreDefs import WTSTickStruct,WTSBarStruct,EngineType\nfrom .WtDataDefs import WtKlineData,WtHftData\nfrom .ExtToolDefs import BaseDataReporter, BaseIndexWriter\nfrom .ExtModuleDefs import BaseExtExecuter, BaseExtParser\nfrom .WtMsgQue import WtMsgQue, WtMQClient, WtMQServer\nfrom .WtDtServo import WtDtServo\n\nfrom wtpy.wrapper.WtExecApi import WtExecApi\nfrom wtpy.wrapper.ContractLoader import ContractLoader,LoaderType\n\n__all__ = [\"BaseCtaStrategy\", \"BaseSelStrategy\", \"BaseHftStrategy\", \"WtEngine\", \"CtaContext\", \"SelContext\", \"HftContext\", \n            \"WtBtEngine\", \"WtDtEngine\", \"WtExecApi\",\"WTSTickStruct\",\"WTSBarStruct\",\"BaseIndexWriter\",\"BaseIndexWriter\",\n            \"EngineType\", \"WtKlineData\", \"WtHftData\",\"ContractLoader\", \"BaseDataReporter\", \"BaseExtParser\", \"BaseExtExecuter\",\n            \"LoaderType\", \"WtDtServo\", \"WtMsgQue\", \"WtMQClient\", \"WtMQServer\"]"
  },
  {
    "path": "wtpy/apps/WtBtAnalyst.py",
    "content": "from pandas import DataFrame as df\nimport pandas as pd\nimport numpy as np\nfrom dateutil.parser import parse\nfrom collections import Counter\nfrom datetime import datetime\n\nimport math\nimport json\nfrom xlsxwriter import Workbook\n\n\nclass Calculate():\n    '''\n    绩效比率计算\n    '''\n    def __init__(self, ret, mar, rf, period, trade):\n        \"\"\"\n        :param ret: 收益率序列\n        :param mar: 最低可接受回报\n        :param rf: 无风险利率\n        :param period: 年交易日（用来年化）240\n        \"\"\"\n        self.ret = ret\n        self.mar = mar\n        self.rf = rf\n        self.trade = math.ceil(trade)\n        self.period = period\n        self.daily_rf = (self.rf + 1) ** (1 / self.period) - 1\n\n    # 潜在上行比率\n    def calculate_upside_ratio(self):\n        acess_return = np.sum(self.ret - self.mar)\n        downside_std = self.ret[self.ret.apply(lambda x: x < 0)].std()\n        upside_ratio = acess_return / downside_std\n        return upside_ratio\n\n    # 夏普率\n    def sharp_ratio(self):\n        expect_return = self.ret.mean()\n        std = self.ret.std()\n        sharp_ratio = (expect_return - self.daily_rf) / std\n        return sharp_ratio\n\n    # 索提诺比率\n    def sortion_ratio(self):\n        expect_return = self.ret.mean()\n        downside_std = self.ret[self.ret.apply(lambda x: x < 0)].std()\n        sortion_ratio = (expect_return - self.daily_rf) / downside_std\n        return sortion_ratio\n\n    # 最大回撤\n    def maxDrawdown(self):\n        ret = (self.ret + 1).cumprod()\n        i = np.argmax((np.maximum.accumulate(ret) - ret) / np.maximum.accumulate(ret))\n        if i == 0:\n            return 0\n        j = np.argmax(ret[:i])\n        return (ret[j] - ret[i]) / ret[j]\n\n    def maxDrawdown_time(self):\n        ret = (self.ret + 1).cumprod()\n        i = np.argmax((np.maximum.accumulate(ret) - ret) / np.maximum.accumulate(ret))\n        if i == 0:\n            return 0\n        j = np.argmax(ret[:i])\n        return i, j\n\n    # 卡尔马比率\n    def calmar_ratio(self):\n        maxdrawdown = Calculate.maxDrawdown(self)\n        annual_return = Calculate.get_annual_return(self)\n        calmar_ratio = annual_return / maxdrawdown\n        return calmar_ratio\n\n    # 斯特林比率\n    def sterling_a_ratio(self):\n        average_drawdown = abs(self.ret.where(self.ret < 0, 0).mean())\n        annual_return = Calculate.get_annual_return(self)\n        sterling_a_ratio = (annual_return - self.rf) / average_drawdown\n        return sterling_a_ratio\n\n    # 单笔最大回撤\n    def single_largest_maxdrawdown(self):\n        single_largest_mdd = self.ret[self.ret.apply(lambda x: x < 0)]\n        if len(single_largest_mdd) == 0:\n            single_largest_mxd = 0\n            return single_largest_mxd\n        single_largest_mxd = abs(single_largest_mdd.min())\n        return single_largest_mxd\n\n    # 单笔最大回撤索引\n    def single_maxdrawdown_time(self):\n        i = np.argmin(self.ret)\n        return i\n\n    # 年化收益率\n    def get_annual_return(self):\n        annual_return = 0 if self.trade==0 else ((1 + self.ret.sum()) ** (self.period / self.trade) - 1)\n        return annual_return\n\n    # 月化收益率\n    def monthly_return(self):\n        ann = Calculate.get_annual_return(self)\n        monthly_return = (ann + 1) ** (1/12) - 1\n        return monthly_return\n\n    # 月平均收益\n    def monthly_average_return(self):\n        monthly = self.ret.mean() * (self.period / 12)\n        return monthly\n\n    # 衰落时间\n    def decay_time(self):\n        netvalue = (self.ret+1).cumprod()\n\n        ser = []\n        temp = netvalue[0]\n        ss = 0\n        for x in netvalue:\n            if x >= temp:\n                ss = 0\n                ser.append(ss)\n                temp = x\n\n            else:\n                ss = ss + 1\n                ser.append(ss)\n        ss = max(pd.Series(ser))\n        return ss\n\ndef fmtNAN(val, defVal = 0):\n    if math.isnan(val):\n        return defVal\n\n    return val\n\ndef continue_trading_analysis(data, x_value) -> dict:\n    '''\n    连续交易分析\n    '''\n    mean = data['profit'].mean()\n    std = data['profit'].std()\n    z_score = (x_value - mean) / std\n    times = 0\n    win_time = 0\n    ltimes = 0\n    loss_time = 0\n    for i in range(len(data)-1):\n        sss = data['profit'][i]\n        if sss > 0:\n            times += 1\n            ltimes = 0\n            rem = i\n            if times > win_time:\n                win_time = times\n                con_win_p_end = rem\n        else:\n            times = 0\n            ltimes += 1\n            rem = i\n            if ltimes > loss_time:\n                loss_time = ltimes\n                con_loss_p_end = rem\n\n    capital = 500000\n    con_win_profit = (data['profit'].loc[con_win_p_end-win_time + 1:con_win_p_end]).sum()\n    con_lose_loss = (data['profit'].loc[con_loss_p_end-loss_time + 1:con_loss_p_end]).sum()\n    # con_win_p_end, win_time 连续盈利结束位置，连续盈利最大次数\n    # con_loss_p_end，loss_time 连续亏损结束位置，连续亏损最大次数\n\n    cot_profit_ratio = con_win_profit / capital\n    loss_profit_ratio = con_lose_loss / capital\n\n    result = {'z值': z_score,\n              '最大连续盈利交易次数': win_time,\n              '最大连续亏损交易次数': loss_time,\n              '最大连续盈利额': con_win_profit,\n              '最大连续亏损额': con_lose_loss,\n              '最大连续盈利（%）': cot_profit_ratio,\n              '最大连续亏损（%）': loss_profit_ratio}\n\n    return result\n\ndef nomalize_val(val):\n    if math.isnan(val):\n        return 0\n    else:\n        return val\n\ndef extreme_trading(data, time_of_std=1):\n    '''\n    极端交易分析\n    '''\n    std = data['profit'].std()\n    df_wins = data[data[\"profit\"] > 0]\n    df_loses = data[data[\"profit\"] <= 0]\n    winamout = df_wins[\"profit\"].sum()  # 毛盈利\n    loseamount = df_loses[\"profit\"].sum()  # 毛亏损\n    trdnetprofit = winamout + loseamount  # 交易净盈亏\n    totaltimes = len(data)  # 总交易次数\n    avgprof = trdnetprofit / totaltimes if totaltimes > 0 else 0  # 单次平均盈亏\n\n    # 单笔盈利 + 标准差\n    sin_profit_plstd = avgprof + (std * time_of_std)\n    # 单笔盈利 - 标准差\n    sin_profit_mistd = avgprof - (std * time_of_std)\n\n    # 极端交易数量\n    extreme_result = data[data['profit'].apply(lambda x: x > sin_profit_plstd or x < sin_profit_mistd)]\n    extreme_num = len(extreme_result)\n\n    # 极端交易盈亏 1 Std. Deviation of Avg. Trade\n    extreme_profit = 0 if extreme_num==0 else extreme_result['profit'].sum()\n\n    result = {'1 Std. Deviation of Avg. Trade': nomalize_val(std),\n              '单笔净利 +1倍标准差': nomalize_val(sin_profit_plstd),\n              '单笔盈利 - 标准差': nomalize_val(sin_profit_mistd),\n              '极端交易数量': extreme_num,\n              '极端交易盈亏': extreme_profit\n              }\n    return result\n\n\ndef average_profit(data):\n    '''\n    连续交易分析之平均收益\n    '''\n    data = data['profit']\n    win = 0\n    li = []\n    lose = 0\n    li_2 = []\n    dic= []\n    dicc = []\n    for i in range(1, len(data) - 1):\n        if (data[i] > 0) == (data[i - 1] > 0):\n            if data[i] > 0:\n                c = 1\n                win = win + c\n            else:\n                c = 1\n                lose = lose + c\n            if (data[i] > 0) == ((data[i + 1]) > 0):\n                pass\n            else:\n                if data[i] > 0:\n                    dis = {str(win): data[i-win:i+1].sum()}\n                    dic.append(dis)\n                    li.append(win)\n                    win = 0\n\n                else:\n                    dis = {str(lose): data[i-lose:i+1].sum()}\n                    dicc.append(dis)\n                    li_2.append(lose)\n                    lose = 0\n        else:\n            win = 0\n            lose = 0\n    number_win = Counter(li)\n    number_lose = Counter(li_2)\n    ss = pd.DataFrame()\n    for x in dic:\n        df = pd.DataFrame([x])\n        ss = pd.concat([ss, df.T])\n    win_ss = ss.reset_index()\n    win_ss = win_ss.groupby('index').mean()\n\n    ss2 = pd.DataFrame()\n    for y in dicc:\n        df = pd.DataFrame([y])\n        ss2 = pd.concat([ss2, df.T])\n    lose_ss = ss2.reset_index()\n    lose_ss = lose_ss.groupby('index').mean()\n    result = {'连续盈利次数': number_win,\n              '连续亏损次数': number_lose,\n              '每个序列平均收益': win_ss,\n              '每个序列平均亏损': lose_ss}\n    return result\n\ndef stat_closes_by_day(df_closes:df, capital) -> df:\n    '''\n    按天统计平仓数据\n    '''\n    df_closes['day'] = df_closes['opentime']\n    df_closes['win'] = df_closes['profit'].apply(lambda x: 1 if x > 0 else 0)\n    df_closes['times'] = 1\n    df_closes['gross_profit'] = df_closes['profit'].apply(lambda x: x if x > 0 else 0)\n    df_closes['gross_loss'] = df_closes['profit'].apply(lambda x: x if x < 0 else 0)\n    profit = df_closes.groupby(df_closes['day']).sum()\n    profit['win_rate'] = profit['win'] / profit['times']\n    profit['profit_ratio'] = profit['profit']*100.0/capital\n    res = profit[['profit', 'gross_profit', 'gross_loss', 'times', 'win_rate','profit_ratio']]\n    return res.iloc[::-1]\n\ndef stat_closes_by_month(df_closes:df, capital) -> df:\n    '''\n    按月统计平仓数据\n    '''\n    df_closes['month'] = df_closes['opentime'].apply(lambda x: x.strftime(\"%Y/%m\"))\n    df_closes['win'] = df_closes['profit'].apply(lambda x: 1 if x > 0 else 0)\n    df_closes['times'] = 1\n    df_closes['gross_profit'] = df_closes['profit'].apply(lambda x: x if x > 0 else 0)\n    df_closes['gross_loss'] = df_closes['profit'].apply(lambda x: x if x < 0 else 0)\n    profit = df_closes.groupby(df_closes['month']).sum()\n    profit['win_rate'] = profit['win'] / profit['times']\n    profit['profit_ratio'] = profit['profit']*100.0/capital\n    res = profit[['profit', 'gross_profit', 'gross_loss', 'times', 'win_rate','profit_ratio']]\n    return res.iloc[::-1]\n\ndef stat_closes_by_year(df_closes:df, capital) -> df:\n    '''\n    按年统计平仓数据\n    '''\n    df_closes['year'] = df_closes['opentime'].apply(lambda x: x.strftime(\"%Y\"))\n    df_closes['win'] = df_closes['profit'].apply(lambda x: 1 if x > 0 else 0)\n    df_closes['times'] = 1\n    df_closes['gross_profit'] = df_closes['profit'].apply(lambda x: x if x > 0 else 0)\n    df_closes['gross_loss'] = df_closes['profit'].apply(lambda x: x if x < 0 else 0)\n    profit = df_closes.groupby(df_closes['year']).sum()\n    profit['win_rate'] = profit['win'] / profit['times']\n    profit['profit_ratio'] = profit['profit']*100.0/capital\n    res = profit[['profit', 'gross_profit', 'gross_loss', 'times', 'win_rate','profit_ratio']]\n    return res.iloc[::-1]\n\ndef time_analysis(df_closes:df) -> dict:\n    '''\n    时间分析\n    '''\n    trading_time = df_closes['closebarno'][len(df_closes) - 1] * 5\n\n    def time_trans(x):\n        d = x // (24 * 60)\n        h = x % (24 * 60) // 60\n        m = x % (24 * 60) % 60\n        return str(d), str(h), str(m)\n    # 转化为日，时，分\n    s_trading_time = time_trans(trading_time)\n\n    # 策略运行时间\n    str_time = (df_closes['closebarno'] - df_closes['openbarno']).sum() * 5\n    s_str_time = time_trans(str_time)\n    # 比率\n    porition = str_time / trading_time * 100\n\n    # 最大空仓时间\n    empty_time = (df_closes['openbarno'].shift(-1) - df_closes['closebarno']).max() * 5\n    s_empty_time = time_trans(empty_time)\n\n    capital = 500000\n    df_closes['principal'] = df_closes['totalprofit'] + capital\n    df_closes['principal'] = df_closes['principal'].shift(1)\n    input_data = df_closes.fillna(value=500000)\n    ret = input_data['profit'] / input_data['principal']\n    mar = 0\n    rf = 0.02\n    period = 240\n    trade = input_data['closebarno'][len(input_data) - 1] / 47\n    factors = Calculate(ret, mar, rf, period, trade)\n\n    single_drawdown_date = factors.single_maxdrawdown_time()\n    signe_drawdown_date = parse(str(input_data['opentime'][single_drawdown_date]))\n\n    # 最大回撤区间\n    maxdrawdown_time = factors.maxDrawdown_time()\n\n    # 回撤开始日期\n    start_time = maxdrawdown_time[1]\n    start_time = parse(str(input_data['opentime'][start_time]))\n\n    # 回撤结束日期\n    end_time = maxdrawdown_time[0]\n    end_time = parse(str(input_data['opentime'][end_time]))\n\n    # 最大损失日期\n    loss_time_index = np.argmin(input_data['profit'])\n    loss_time = parse(str(input_data['opentime'][loss_time_index]))\n\n    result = {'交易周期': '(%s)' % ','.join(s_trading_time),\n              '策略运行时间': '(%s)' % ','.join(s_str_time),\n              '策略运行时间%': porition,\n              '最长空仓时间': '(%s)' % ','.join(s_empty_time),\n              '策略最大回撤开始时间': start_time.strftime(\"%Y/%m/%d %H:%M\"),\n              '策略最大回撤结束时间': end_time.strftime(\"%Y/%m/%d %H:%M\"),\n              '单笔最大回撤时间': signe_drawdown_date.strftime(\"%Y/%m/%d %H:%M\"),\n              '平仓交易最大损失日期': loss_time.strftime(\"%Y/%m/%d %H:%M\")}\n\n    return result\n\ndef ratio_calculate(data, after_merge, capital = 500000, rf = 0, period = 240) -> dict:\n    data['principal'] = data['totalprofit'] + capital\n    data['principal'] = data['principal'].shift(1)\n    input_data = data.fillna(value=capital)\n    ret = input_data['profit'] / input_data['principal']\n    mar = 0\n    trade = input_data['closebarno'][len(input_data) - 1] / 47\n    factors = Calculate(ret, mar, rf, period, trade)\n    # 潜在上涨比率\n    potential_upside_ratio = factors.calculate_upside_ratio()\n    # 夏普比率\n    sharpe_ratio = factors.sharp_ratio()\n    # 索提诺比率\n    sortino_ratio = factors.sortion_ratio()\n    # 卡尔马比率(Calmar Ratio)\n    calmar_ratio = factors.calmar_ratio()\n    # 斯特林比率\n    sterling_ratio = factors.sterling_a_ratio()\n    result1 = performance_summary(data, after_merge)\n    # 净利/单笔最大亏损\n    net_s_loss = result1.get('净利') / result1.get('单笔最大亏损')\n    # 净利/单笔最大回撤\n    net_s_drawdown = result1.get('净利') / factors.single_largest_maxdrawdown()\n    # 净利/ 策略最大回撤\n    net_strategy_drawdown =  result1.get('净利') / factors.maxDrawdown()\n    # 调整净利/单笔最大亏损\n    adjust_s_loss = result1.get('调整净利') / result1.get('单笔最大亏损')\n    # 调整净利/单笔最大回撤\n    adjust_s_drawdown = result1.get('调整净利') / factors.single_largest_maxdrawdown()\n    # 调整净利/ 策略最大回撤\n    adjust_strategy_drawdown = result1.get('调整净利') / factors.maxDrawdown()\n\n    result = {'潜在上涨比率':potential_upside_ratio,\n              '夏普比率':sharpe_ratio,\n              '索提诺比率':sortino_ratio,\n              '卡尔马比率':calmar_ratio,\n              '斯特林比率':sterling_ratio,\n              '净利/单笔最大亏损':net_s_loss,\n              '净利/单笔最大回撤':net_s_drawdown,\n              '净利/ 策略最大回撤':net_strategy_drawdown,\n              '调整净利/单笔最大亏损':adjust_s_loss,\n              '调整净利/单笔最大回撤':adjust_s_drawdown,\n              '调整净利/ 策略最大回撤':adjust_strategy_drawdown}\n\n    return result\n\ndef performance_summary(input_data, input_data1, capital = 500000, rf = 0.00, period = 240):\n    '''\n    绩效统计\n    '''\n    # 指标计算准备\n    input_data['principal'] = input_data['totalprofit'] + capital\n    input_data['principal'] = input_data['principal'].shift(1)\n    input_data = input_data.fillna(value=capital)\n    ret = input_data['profit'] / input_data['principal']\n    mar = 0\n    trade = len(input_data)\n    #trade = input_data['closebarno'][len(input_data)-1] / 47\n\n    # 指标class\n    factors = Calculate(ret, mar, rf, period, trade)\n    # 毛利\n    profit = input_data[input_data['profit'].apply(lambda x: x >= 0)]\n    total_profit = 0 if len(profit)==0 else profit['profit'].sum()\n    # 毛损\n    loss = input_data[input_data['profit'].apply(lambda x: x < 0)]\n    total_loss = 0 if len(loss)==0 else loss['profit'].sum()\n    # 净利\n    net_profit = total_profit + total_loss\n    input_data1['adjust_profit'] = (input_data1['profit'] - input_data1['transaction_fee']) if len(input_data1)>0 else 0\n    # 调整毛利\n    adjust_profit = input_data1[input_data1['adjust_profit'].apply(lambda x: x >= 0)]\n    total_adjust_profit = 0 if len(adjust_profit)==0 else adjust_profit['adjust_profit'].sum()\n    # 调整毛损\n    adjust_loss = input_data1[input_data1['adjust_profit'].apply((lambda x: x < 0))]\n    total_adjust_loss = 0 if len(adjust_loss)==0 else adjust_loss['adjust_profit'].sum()\n    # 调整净利\n    adjust_net_profit = total_adjust_profit + total_adjust_loss\n    # 盈利因子\n    profit_factor = 0 if total_loss==0 else np.abs(total_profit / total_loss)\n    # 调整盈利因子\n    adjust_profit_factor = 0 if total_adjust_loss == 0 else np.abs(total_adjust_profit / total_adjust_loss)\n    # 最大持有合约数量\n    max_holding_number = 1\n    # 已付手续费\n    paid_trading_fee = input_data1['transaction_fee'].sum() if len(input_data1)>0 else 0\n    # 单笔最大亏损\n    single_loss = input_data[input_data['profit'].apply(lambda x: x < 0)]\n    single_largest_loss = 0 if len(single_loss)==0 else abs(single_loss['profit'].min())\n    # 平仓交易最大亏损\n    trading_loss = single_largest_loss\n    # 平仓交易最大亏损比\n    trading_loss_rate = trading_loss / capital\n    # 年化收益率\n    annual_ret = factors.get_annual_return()\n    # 月化收益率\n    monthly_return = factors.monthly_return()\n    # 月平均收益\n    monthly_average_return = factors.monthly_average_return()\n\n    # 结果封装字典\n    result = {'毛利': total_profit,\n              '毛损': total_loss,\n              '净利': net_profit,\n              '调整毛利': adjust_net_profit,\n              '调整毛损': total_adjust_loss,\n              '调整净利': adjust_net_profit,\n              '盈利因子': profit_factor,\n              '调整盈利因子': adjust_profit_factor,\n              '最大持有合约数量': max_holding_number,\n              '已付手续费': paid_trading_fee,\n              '单笔最大亏损': single_largest_loss,\n              '平仓交易最大亏损': trading_loss,\n              '平仓交易最大亏损比': trading_loss_rate,\n              '年化收益率': annual_ret,\n              '月化收益率': monthly_return,\n              '月平均收益': monthly_average_return}\n    return result\n\ndef do_trading_analyze(df_closes, df_funds):\n    \n    df_wins = df_closes[df_closes[\"profit\"] > 0]\n    df_loses = df_closes[df_closes[\"profit\"] <= 0]\n\n    ay_WinnerBarCnts = df_wins[\"closebarno\"] - df_wins[\"openbarno\"]\n    ay_LoserBarCnts = df_loses[\"closebarno\"] - df_loses[\"openbarno\"]\n\n    total_winbarcnts = ay_WinnerBarCnts.sum()\n    total_losebarcnts = ay_LoserBarCnts.sum()\n\n    total_fee = df_funds.iloc[-1][\"fee\"]\n\n    totaltimes = len(df_closes)  # 总交易次数\n    wintimes = len(df_wins)  # 盈利次数\n    losetimes = len(df_loses)  # 亏损次数\n    winamout = df_wins[\"profit\"].sum()  # 毛盈利\n    loseamount = df_loses[\"profit\"].sum()  # 毛亏损\n    trdnetprofit = winamout + loseamount  # 交易净盈亏\n    accnetprofit = trdnetprofit - total_fee  # 账户净盈亏\n    winrate = (wintimes / totaltimes) if totaltimes > 0 else 0  # 胜率\n    avgprof = (trdnetprofit / totaltimes) if totaltimes > 0 else 0  # 单次平均盈亏\n    avgprof_win = (winamout / wintimes) if wintimes > 0 else 0  # 单次盈利均值\n    avgprof_lose = (loseamount / losetimes) if losetimes > 0 else 0  # 单次亏损均值\n    winloseratio = abs(avgprof_win / avgprof_lose) if avgprof_lose != 0 else \"N/A\"  # 单次盈亏均值比\n\n    # 单笔最大盈利交易\n    largest_profit = df_wins['profit'].max()\n    # 单笔最大亏损交易\n    largest_loss = df_loses['profit'].min()\n    # 交易的平均持仓K线根数\n    avgtrd_hold_bar = 0 if totaltimes==0 else ((df_closes['closebarno'] - df_closes['openbarno']).sum()) / totaltimes\n    # 平均空仓K线根数\n    avb = (df_closes['openbarno'].shift(-1) - df_closes['closebarno']).dropna()\n    avgemphold_bar = 0 if len(df_closes)==0 else avb.sum() / len(df_closes)\n\n    # 两笔盈利交易之间的平均空仓K线根数\n    win_holdbar_situ = (df_wins['openbarno'].shift(-1) - df_wins['closebarno']).dropna()\n    winempty_avgholdbar = 0 if len(df_wins)==0 else win_holdbar_situ.sum() / len(df_wins)\n    # 两笔亏损交易之间的偶平均空仓K线根数\n    loss_holdbar_situ = (df_loses['openbarno'].shift(-1) - df_loses['closebarno']).dropna()\n    lossempty_avgholdbar = 0 if len(df_loses)==0 else loss_holdbar_situ.sum() / len(df_loses)\n\n    max_consecutive_wins = 0  # 最大连续盈利次数\n    max_consecutive_loses = 0  # 最大连续亏损次数\n\n    avg_bars_in_winner = total_winbarcnts / wintimes if wintimes > 0 else \"N/A\"\n    avg_bars_in_loser = total_losebarcnts / losetimes if losetimes > 0 else \"N/A\"\n\n    consecutive_wins = 0\n    consecutive_loses = 0\n\n    for idx, row in df_closes.iterrows():\n        profit = row[\"profit\"]\n        if profit > 0:\n            consecutive_wins += 1\n            consecutive_loses = 0\n        else:\n            consecutive_wins = 0\n            consecutive_loses += 1\n\n        max_consecutive_wins = max(max_consecutive_wins, consecutive_wins)\n        max_consecutive_loses = max(max_consecutive_loses, consecutive_loses)\n\n    summary = dict()\n\n    summary[\"交易总数量\"] = totaltimes\n    summary[\"盈利交易次数\"] = wintimes\n    summary[\"亏损交易次数\"] = losetimes\n    summary[\"毛盈利\"] = float(winamout)\n    summary[\"毛亏损\"] = float(loseamount)\n    summary[\"交易净盈亏\"] = float(trdnetprofit)\n    summary[\"% 胜率\"] = winrate * 100\n    summary[\"单次平均盈亏\"] = avgprof\n    summary[\"单次盈利均值\"] = avgprof_win\n    summary[\"单次亏损均值\"] = avgprof_lose\n    summary[\"% 单次盈亏均值比\"] = winloseratio\n    summary[\"最大连续盈利次数\"] = max_consecutive_wins\n    summary[\"最大连续亏损次数\"] = max_consecutive_loses\n    summary[\"盈利交易的平均持仓K线根数\"] = avg_bars_in_winner\n    summary[\"亏损交易的平均持仓K线根数\"] = avg_bars_in_loser\n    summary[\"账户净盈亏\"] = 0 if totaltimes==0 else accnetprofit / totaltimes\n    summary['单笔最大盈利交易'] = largest_profit\n    summary['单笔最大亏损交易'] = largest_loss\n    summary['交易的平均持仓K线根数'] = avgtrd_hold_bar\n    summary['平均空仓K线根数'] = avgemphold_bar\n    summary['两笔盈利交易之间的平均空仓K线根数'] = winempty_avgholdbar\n    summary['两笔亏损交易之间的平均空仓K线根数'] = lossempty_avgholdbar\n    summary = pd.DataFrame([summary]).T\n    summary = summary.reset_index()\n    return summary\n\ndef trading_analyze(workbook:Workbook, df_closes, df_funds, capital = 500000):\n    '''\n    交易分析\n    '''\n    res = average_profit(df_closes)\n    rr = res.get('连续盈利次数')\n    df = pd.DataFrame([rr]).T\n    df.columns = ['连续次数']\n    df = df.reset_index()\n\n    every_series_profit = res.get('每个序列平均收益')\n    every_series_profit = every_series_profit.reset_index()\n    df['index'] = df['index'].apply(lambda x: int(x))\n    every_series_profit['index'] = every_series_profit['index'].apply(lambda x: int(x))\n    f_result = df.merge(every_series_profit)\n    f_result = f_result.sort_values('index')\n    f_result.columns = ['连续次数', '出现次数', '每个序列平均收益']\n\n    rr_2 = res.get('连续亏损次数')\n    df_2 = pd.DataFrame([rr_2]).T\n    df_2.columns = ['连续次数']\n    df_2 = df_2.reset_index()\n\n    every_series_loss = res.get('每个序列平均亏损')\n    every_series_loss = every_series_loss.reset_index()\n    df_2['index'] = df_2['index'].apply(lambda x: int(x))\n    every_series_loss['index'] = every_series_loss['index'].apply(lambda x: int(x))\n    f_2_result = df_2.merge(every_series_loss)\n    f_2_result = f_2_result.sort_values('index')\n    f_2_result.columns = ['连续次数', '出现次数', '每个序列平均亏损']\n\n    ssaa = 1000\n    # 连续交易系列分析\n    s = continue_trading_analysis(df_closes, ssaa)\n    # 极端交易\n    ss = extreme_trading(df_closes)\n    extre_pro = ss.get('单笔净利 +1倍标准差')\n    extre_los = ss.get('单笔盈利 - 标准差')\n    data1 = df_closes[df_closes['profit'].apply(lambda x: x > extre_pro)]\n    data2 = df_closes[df_closes['profit'].apply(lambda x: x < extre_los)]\n    ss_1 = extreme_trading(data1)\n    ss_2 = extreme_trading(data2)\n    ss_1 = pd.DataFrame([ss_1]).T\n    ss_2 = pd.DataFrame([ss_2]).T\n    sss = pd.concat([ss_1, ss_2], axis=1)\n    ss = pd.DataFrame([ss]).T\n    sss = pd.concat([ss, sss], axis=1)\n    sss.columns = ['总计', '极端盈利', '极端亏损']\n\n    title_format = workbook.add_format({\n        'font_size':    16,\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    index_format = workbook.add_format({\n        'font_size':    12,\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    value_format = workbook.add_format({\n        'align':        'right',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    date_format = workbook.add_format({\n        'num_format':   'yyyy/mm/dd',\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n    worksheet = workbook.add_worksheet('交易分析')\n\n    trade_s = do_trading_analyze(df_closes, df_funds)\n    data_1 = df_closes[df_closes['direct'].apply(lambda x: 'LONG' in x)]\n    trade_s_long = do_trading_analyze(data_1, df_funds)\n    data_2 = df_closes[df_closes['direct'].apply(lambda x: 'SHORT' in x)]\n    trade_s_short = do_trading_analyze(data_2, df_funds)\n    trade_s = trade_s.merge(trade_s_long, how='inner', on='index')\n    trade_s = trade_s.merge(trade_s_short,how='inner', on='index')\n    trade_s.columns =['类别', '所有交易', '多头', '空头']\n    trade_s.fillna(value=0, inplace=True)\n\n    worksheet.write_row('A1', ['总体交易分析'], title_format)\n    worksheet.write_row('B3', ['所有交易','多头交易','空头交易'], index_format)\n    worksheet.write_column('A4', trade_s['类别'], index_format)\n    worksheet.write_column('B4', trade_s['所有交易'], value_format)\n    worksheet.write_column('C4', trade_s['多头'], value_format)\n    worksheet.write_column('D4', trade_s['空头'], value_format)\n\n    worksheet.write_row('A28', ['极端交易'], title_format)\n    worksheet.write_row('B30', ['总计','极端盈利','极端亏损'], index_format)\n    worksheet.write_column('A31', sss.index, index_format)\n    worksheet.write_column('B31', sss['总计'], value_format)\n    worksheet.write_column('C31', sss['极端盈利'], value_format)\n    worksheet.write_column('D31', sss['极端亏损'], value_format)\n\n    worksheet.write_row('A38', ['连续交易系列分析'], title_format)\n    worksheet.write_column('A40', s.keys(), index_format)\n    worksheet.write_column('B40', s.values(), value_format)\n\n    worksheet.write_row('A49', ['连续交易系列统计'], title_format)\n    worksheet.write_row('A51', ['连续盈利次数','出现次数','每个序列的平均收益'], index_format)\n    worksheet.write_column('A52', f_result['连续次数'], value_format)\n    worksheet.write_column('B52', f_result['出现次数'], value_format)\n    worksheet.write_column('C52', f_result['每个序列平均收益'], value_format)\n\n    win_cnt = len(f_result)\n    next_row = win_cnt+52\n    worksheet.write_row('A%d'%next_row, ['连续亏损次数','出现次数','每个序列的平均亏损'], index_format)\n    worksheet.write_column('A%d'%(next_row+1), f_2_result['连续次数'], value_format)\n    worksheet.write_column('B%d'%(next_row+1), f_2_result['出现次数'], value_format)\n    worksheet.write_column('C%d'%(next_row+1), f_2_result['每个序列平均亏损'], value_format)\n\n    # 这里开始画图\n    next_row += len(f_2_result) + 3\n    worksheet.write_row('A%d'%next_row, ['全部交易'], title_format)\n    chart_col = workbook.add_chart({'type': 'scatter'})\n    length = len(df_closes)\n    sheetName = '交易列表'\n    chart_col.add_series(\n        {\n            'name': '收益分布',\n            'categories': '=%s!$A$4:$A$%s' % (sheetName, length+3),\n            'values':   '=%s!$J$4:$J$%s' % (sheetName, length+3),\n            'marker': {\n                'type':\"circle\", \n                'size':3\n            }\n        }\n    )\n    chart_col.set_title({'name': '收益分布'})\n    worksheet.insert_chart('A%d' % (next_row+2), chart_col)\n\n    next_row += 30\n    worksheet.write_row('A%d'%next_row, ['潜在盈利'], title_format)\n    chart_col = workbook.add_chart({'type': 'scatter'})\n    length = len(df_closes)\n    sheetName = '交易列表'\n    chart_col.add_series(\n        {\n            'name': '潜在盈利',\n            'categories': '=%s!$A$4:$A$%s' % (sheetName, length+3),\n            'values':   '=%s!$N$4:$N$%s' % (sheetName, length+3),\n            'marker': {\n                'type':\"diamond\", \n                'size':3, \n                'border': {'color': 'red'},\n                'fill':   {'color': 'red'}\n            }\n        }\n    )\n    chart_col.set_title({'name': '潜在盈利'})\n    worksheet.insert_chart('A%d' % (next_row+2), chart_col)\n\n    next_row += 30\n    worksheet.write_row('A%d'%next_row, ['潜在亏损'], title_format)\n    chart_col = workbook.add_chart({'type': 'scatter'})\n    length = len(df_closes)\n    sheetName = '交易列表'\n    chart_col.add_series(\n        {\n            'name': '潜在亏损',\n            'categories': '=%s!$A$4:$A$%s' % (sheetName, length+3),\n            'values':   '=%s!$P$4:$P$%s' % (sheetName, length+3),\n            'marker': {\n                'type':\"triangle\", \n                'size':3, \n                'border': {'color': 'green'},\n                'fill':   {'color': 'green'}\n            }\n        }\n    )\n    chart_col.set_title({'name': '潜在亏损'})\n    worksheet.insert_chart('A%d' % (next_row+2), chart_col)\n\n \n    # 周期分析\n    worksheet = workbook.add_worksheet('周期分析')\n\n    df_closes['opentime'] = df_closes['opentime'].apply(lambda x: parse(str(int(x / 10000))))\n    res = stat_closes_by_day(df_closes.copy(), capital)    \n    worksheet.write_row('A1', ['日度绩效分析'], title_format)\n    worksheet.write_row('A3', ['期间','盈利(¤)','盈利(%)','毛利','毛损','交易次数','胜率(%)'], index_format)\n    worksheet.write_column('A4', res.index, date_format)\n    worksheet.write_column('B4', res[\"profit\"], value_format)\n    worksheet.write_column('C4', res[\"profit_ratio\"], value_format)\n    worksheet.write_column('D4', res[\"gross_profit\"], value_format)\n    worksheet.write_column('E4', res[\"gross_loss\"], value_format)\n    worksheet.write_column('F4', res[\"times\"], value_format)\n    worksheet.write_column('G4', res[\"win_rate\"]*100, value_format)\n  \n    next_row = 5 + len(res)\n    res = stat_closes_by_month(df_closes.copy(), capital)\n    worksheet.write_row('A%d'%(next_row+1), ['月度绩效分析'], title_format)\n    worksheet.write_row('A%d'%(next_row+3), ['期间','盈利(¤)','盈利(%)','毛利','毛损','交易次数','胜率(%)'], index_format)\n    worksheet.write_column('A%d'%(next_row+4), res.index, index_format)\n    worksheet.write_column('B%d'%(next_row+4), res[\"profit\"], value_format)\n    worksheet.write_column('C%d'%(next_row+4), res[\"profit_ratio\"], value_format)\n    worksheet.write_column('D%d'%(next_row+4), res[\"gross_profit\"], value_format)\n    worksheet.write_column('E%d'%(next_row+4), res[\"gross_loss\"], value_format)\n    worksheet.write_column('F%d'%(next_row+4), res[\"times\"], value_format)\n    worksheet.write_column('G%d'%(next_row+4), res[\"win_rate\"]*100, value_format)\n\n    next_row = next_row + 4 + len(res)\n    res = stat_closes_by_year(df_closes.copy(), capital) \n    worksheet.write_row('A%d'%(next_row+1), ['年度绩效分析'], title_format)\n    worksheet.write_row('A%d'%(next_row+3), ['期间','盈利(¤)','盈利(%)','毛利','毛损','交易次数','胜率(%)'], index_format)\n    worksheet.write_column('A%d'%(next_row+4), res.index, index_format)\n    worksheet.write_column('B%d'%(next_row+4), res[\"profit\"], value_format)\n    worksheet.write_column('C%d'%(next_row+4), res[\"profit_ratio\"], value_format)\n    worksheet.write_column('D%d'%(next_row+4), res[\"gross_profit\"], value_format)\n    worksheet.write_column('E%d'%(next_row+4), res[\"gross_loss\"], value_format)\n    worksheet.write_column('F%d'%(next_row+4), res[\"times\"], value_format)\n    worksheet.write_column('G%d'%(next_row+4), res[\"win_rate\"]*100, value_format)\n\ndef strategy_analyze(workbook:Workbook, df_closes, df_trades, capital, rf = 0.0, period = 240):\n    '''\n    策略分析\n    '''\n\n    # 截取开仓明细\n    data1_open = df_trades[df_trades['action'].apply(lambda x: 'OPEN' in x)].reset_index()\n    data1_open = data1_open.drop(columns=['index'])\n    # 截取平仓明细\n    data1_close = df_trades[df_trades['action'].apply(lambda x: 'CLOSE' in x)].reset_index()\n    data1_close = data1_close.drop(columns=['index'])\n\n    # 将平仓明细字段重命名，并跟开仓明细合并成一个大表\n    data1_close = data1_close.rename(columns={'code': 'code_1', 'time': 'time_1', 'direct': 'direct_1',\n                                              'action': 'action_1', 'price': 'price_1', 'qty': 'qty_1', 'tag': 'tag_1',\n                                              'fee': 'fee_1'})\n\n    new_data = pd.concat([data1_open, data1_close], axis=1)\n    new_data = new_data.dropna()\n    new_data = new_data.drop(columns=['code_1', 'qty_1'])\n\n    # 计算开仓平仓手续费\n    new_data['transaction_fee'] = new_data['fee'] + new_data['fee_1']\n    clean_data = new_data[['time', 'transaction_fee']]\n    clean_data = clean_data.rename(columns={'time': 'opentime'})\n\n    # 合并数据\n    after_merge = pd.merge(df_closes, clean_data, how='inner', on='opentime')\n\n    data_long = df_closes[df_closes['direct'].apply(lambda x:'LONG' in x )].reset_index()\n    after_merge_long = after_merge[after_merge['direct'].apply(lambda x: 'LONG' in x)].reset_index()\n    data_short = df_closes[df_closes['direct'].apply(lambda x: 'SHORT' in x)].reset_index()\n    after_merge_short = after_merge[after_merge['direct'].apply(lambda x: 'SHORT' in x)].reset_index()\n\n    # 全部平仓明细进行绩效分析\n    result1 = performance_summary(df_closes, after_merge, capital=capital, rf=rf, period=period)\n    # 做多平仓明细进行绩效分析\n    result1_2 = performance_summary(data_long, after_merge_long, capital=capital, rf=rf, period=period)\n    # 做空平仓明细进行绩效分析\n    result1_3 = performance_summary(data_short,after_merge_short, capital=capital, rf=rf, period=period)\n    # 绩效比率计算\n    result2 = ratio_calculate(df_closes, after_merge, capital=capital, rf=rf, period=period)\n    # 时间分析\n    result3 = time_analysis(df_closes)\n\n    result1 = pd.DataFrame(pd.Series(result1), columns=['所有交易'])\n    result1 = result1.reset_index().rename(columns={'index': '策略绩效概要'})\n\n    result1_2 = pd.DataFrame(pd.Series(result1_2), columns=['多头交易'])\n    result1_2 = result1_2.reset_index().rename(columns={'index': '策略绩效概要'})\n\n    result1_3 = pd.DataFrame(pd.Series(result1_3), columns=['空头交易'])\n    result1_3 = result1_3.reset_index().rename(columns={'index': '策略绩效概要'})\n\n    result1 = result1.merge(result1_2,how='inner',on='策略绩效概要')\n    result1 = result1.merge(result1_3,how='inner',on='策略绩效概要')\n\n    sheetName = '策略分析'\n    worksheet = workbook.add_worksheet(sheetName)\n\n    title_format = workbook.add_format({\n        'font_size':    16,\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    index_format = workbook.add_format({\n        'font_size':    12,\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    value_format = workbook.add_format({\n        'align':        'right',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n    result1.fillna(value=0, inplace=True)\n    worksheet.write_row('A1', ['策略绩效概要'], title_format)    \n    worksheet.write_row('B3', ['所有交易','多头交易','空头交易'], index_format)\n    worksheet.write_column('A4', result1['策略绩效概要'], index_format)\n    worksheet.write_column('B4', result1['所有交易'], value_format)\n    worksheet.write_column('C4', result1['多头交易'], value_format)\n    worksheet.write_column('D4', result1['空头交易'], value_format)\n\n    worksheet.write_row('A22', ['绩效比率'], title_format)    \n    worksheet.write_column('A24', result2.keys(), index_format)\n    worksheet.write_column('B24', result2.values(), value_format)\n\n    worksheet.write_row('A37', ['时间分析'], title_format)    \n    worksheet.write_column('A39', result3.keys(), index_format)\n    worksheet.write_column('B39', result3.values(), value_format)\n\n    # 这里开始画图\n    worksheet.write_row('A49', ['详细权益曲线'], title_format)\n    chart_col = workbook.add_chart({'type': 'line'})\n    length = len(df_closes)\n    sheetName = '交易列表'\n    chart_col.add_series(\n        {\n            'name': '详细权益曲线',\n            'categories': '=%s!$G$4:$G$%s' % (sheetName, length+3),\n            'values':   '=%s!$R$4:$R$%s' % (sheetName, length+3),\n            'line': {'color': 'red','width': 1}\n        }\n    )\n    chart_col.set_title({'name': '详细权益曲线'})\n    worksheet.insert_chart('A51', chart_col)\n\n    worksheet.write_row('A79', ['详细权益曲线及潜在亏损'], title_format)\n    chart_col = workbook.add_chart({'type': 'line'})\n    chart_col.add_series(\n        {\n            'name': '权益曲线',\n            'categories': '=%s!$G$4:$G$%s' % (sheetName, length+3),\n            'values':   '=%s!$R$4:$R$%s' % (sheetName, length+3),\n            'line': {'color': 'red','width': 1}\n        }\n    )\n    chart_col.add_series(\n        {\n            'name': '潜在亏损',\n            'categories': '=%s!$G$4:$G$%s' % (sheetName, length+3),\n            'values':   '=%s!$P$4:$P$%s' % (sheetName, length+3),\n            'line': {'color': 'green','width': 1}\n        }\n    )\n    chart_col.set_title({'name': '详细权益曲线及潜在亏损'})\n    worksheet.insert_chart('A81', chart_col)\n\n    worksheet.write_row('A109', ['潜在盈利与亏损'], title_format)\n    chart_col = workbook.add_chart({'type': 'line'})\n    chart_col.add_series(\n        {\n            'name': '潜在盈利',\n            'categories': '=%s!$G$4:$G$%s' % (sheetName, length+3),\n            'values':   '=%s!$N$4:$N$%s' % (sheetName, length+3),\n            'line': {'color': 'red','width': 1}\n        }\n    )\n    chart_col.add_series(\n        {\n            'name': '潜在亏损',\n            'categories': '=%s!$G$4:$G$%s' % (sheetName, length+3),\n            'values':   '=%s!$P$4:$P$%s' % (sheetName, length+3),\n            'line': {'color': 'green','width': 1}\n        }\n    )\n    chart_col.set_title({'name': '潜在盈利与亏损'})\n    worksheet.insert_chart('A111', chart_col)\n\ndef output_closes(workbook:Workbook, df_closes:df, capital = 500000):\n    worksheet = workbook.add_worksheet('交易列表')\n    title_format = workbook.add_format({\n        'font_size':    16,\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    index_format = workbook.add_format({\n        'font_size':    12,\n        'bold':         True,\n        'align':        'left',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    value_format = workbook.add_format({\n        'align':        'right',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n\n    time_format = workbook.add_format({\n        'num_format':   'yyyy/mm/dd HH:MM',\n        'align':        'right',  # 水平居中\n        'valign':       'vcenter'  # 垂直居中\n    })\n    \n\n    df_closes['entrytime'] = df_closes['opentime'].apply(lambda x: datetime.strptime(str(x), '%Y%m%d%H%M'))\n    df_closes['exittime'] = df_closes['closetime'].apply(lambda x: datetime.strptime(str(x), '%Y%m%d%H%M'))\n\n    worksheet.write_row('A1', ['交易列表'], title_format)    \n    worksheet.write_row('A3', ['编号', '代码','方向','进场时间','进场价格','进场标记','出场时间','出场价格','出场标记',\n    '盈利¤','盈利%','累计盈利¤','累计盈利%','潜在盈利¤','潜在盈利%','潜在亏损¤','潜在亏损%','累计权益'], index_format)\n    df_closes[\"profit_ratio\"] = df_closes[\"profit\"]*100/capital\n    df_closes[\"total_profit_ratio\"] = df_closes[\"totalprofit\"]*100/capital\n    df_closes[\"max_profit_ratio\"] = df_closes[\"maxprofit\"]*100/capital\n    df_closes[\"max_loss_ratio\"] = df_closes[\"maxloss\"]*100/capital\n\n    worksheet.write_column('A4', df_closes.index+1, value_format)\n    worksheet.write_column('B4', df_closes['code'], value_format)\n    worksheet.write_column('C4', df_closes['direct'], value_format)\n    worksheet.write_column('D4', df_closes['entrytime'], time_format)\n    worksheet.write_column('E4', df_closes['openprice'], value_format)\n    ay = df_closes['entertag'].apply(lambda x: x if type(x)==str else '' if math.isnan(x) else x)\n    worksheet.write_column('F4', ay, value_format)\n    worksheet.write_column('G4', df_closes['exittime'], time_format)\n    worksheet.write_column('H4', df_closes['closeprice'], value_format)\n    ay = df_closes['exittag'].apply(lambda x: x if type(x)==str else '' if math.isnan(x) else x)\n    worksheet.write_column('I4', ay, value_format)\n\n    worksheet.write_column('J4', df_closes['profit'], value_format)\n    worksheet.write_column('K4', df_closes['profit_ratio'], value_format)\n    worksheet.write_column('L4', df_closes['totalprofit'], value_format)\n    worksheet.write_column('M4', df_closes['total_profit_ratio'], value_format)\n    worksheet.write_column('N4', df_closes['maxprofit'], value_format)\n    worksheet.write_column('O4', df_closes['max_profit_ratio'], value_format)\n    worksheet.write_column('P4', df_closes['maxloss'], value_format)\n    worksheet.write_column('Q4', df_closes['max_loss_ratio'], value_format)\n    worksheet.write_column('R4', df_closes['totalprofit']+capital, value_format)\n\ndef summary_analyze(df_funds:df, capital = 5000000, rf = 0, period = 240) -> dict:\n    '''\n    概要分析\n    '''\n    init_capital = capital\n    annual_days = period\n    days = len(df_funds)\n\n    #先做资金统计吧\n    print(\"anayzing fund data……\")\n    df_funds[\"dynbalance\"] += init_capital\n    ayBal = df_funds[\"dynbalance\"]              # 每日期末动态权益\n\n    #生成每日期初动态权益\n    ayPreBal = np.array(ayBal.tolist()[:-1])  \n    ayPreBal = np.insert(ayPreBal, 0, init_capital)    #每日期初权益\n    df_funds[\"prebalance\"] = ayPreBal\n\n    #统计期末权益大于期初权益的天数，即盈利天数\n    windays = len(df_funds[df_funds[\"dynbalance\"]>df_funds[\"prebalance\"]])\n\n    #每日净值\n    ayNetVals = (ayBal/init_capital)\n    \n    ar = math.pow(ayNetVals.iloc[-1], annual_days/days) - 1       #年化收益率=总收益率^(年交易日天数/统计天数)\n    ayDailyReturn = ayBal/ayPreBal-1 #每日收益率\n    delta = fmtNAN(ayDailyReturn.std(axis=0)*math.pow(annual_days,0.5),0)       #年化标准差=每日收益率标准差*根号下(年交易日天数)\n    down_delta = fmtNAN(ayDailyReturn[ayDailyReturn<0].std(axis=0)*math.pow(annual_days,0.5), 0)    #下行标准差=每日亏损收益率标准差*根号下(年交易日天数)\n\n    #sharpe率\n    if delta != 0.0:\n        sr = (ar-rf)/delta\n    else:\n        sr = 9999.0\n\n    #计算最大回撤和最大上涨\n    maxub = ayNetVals[0]\n    minub = maxub\n    mdd = 0.0\n    midd = 0.0\n    mup = 0.0\n    for idx in range(1,len(ayNetVals)):\n        maxub = max(maxub, ayNetVals[idx])\n        minub = min(minub, ayNetVals[idx])\n        profit = (ayNetVals[idx] - ayNetVals[idx-1])/ayNetVals[idx-1]\n        falldown = (ayNetVals[idx] - maxub)/maxub\n        riseup = (ayNetVals[idx] - minub)/minub\n        if profit <= 0:\n            midd = max(midd, abs(profit))\n            mdd = max(mdd, abs(falldown))\n        else:\n            mup = max(mup, abs(riseup))\n    #索提诺比率\n    if down_delta != 0.0:\n        sortino = (ar-rf)/down_delta\n    else:\n        sortino = 0.0\n    if mdd != 0.0:\n        calmar = ar/mdd\n    else:\n        calmar = 999999.0\n\n\n    # key_indicator = ['交易天数', '累积收益（%）', '年化收益率（%）', '胜率（%）', '最大回撤（%）', '最大上涨（%）', '标准差（%）',\n    #         '下行波动率（%）', 'Sharpe比率', 'Sortino比率', 'Calmar比率']\n    return {\n        \"days\": days,\n        \"total_return\":(ayNetVals.iloc[-1]-1)*100, \n        \"annual_return\":ar*100, \n        \"win_rate\":(windays/days)*100, \n        \"max_falldown\":mdd*100, \n        \"max_profratio\":mup*100, \n        \"std\":delta*100, \n        \"down_std\":down_delta*100, \n        \"sharpe_ratio\":sr, \n        \"sortino_ratio\":sortino, \n        \"calmar_ratio\":calmar\n    }\n\n\ndef funds_analyze(workbook:Workbook, df_funds:df, capital = 5000000, rf = 0, period = 240):\n    '''\n    逐日资金分析\n    '''\n    init_capital = capital\n    annual_days = period\n    days = len(df_funds)\n\n    #先做资金统计吧\n    print(\"anayzing fund data……\")\n    df_funds[\"dynbalance\"] += init_capital\n    ayBal = df_funds[\"dynbalance\"]              # 每日期末动态权益\n\n    #生成每日期初动态权益\n    ayPreBal = np.array(ayBal.tolist()[:-1])  \n    ayPreBal = np.insert(ayPreBal, 0, init_capital)    #每日期初权益\n    df_funds[\"prebalance\"] = ayPreBal\n\n    #统计期末权益大于期初权益的天数，即盈利天数\n    windays = len(df_funds[df_funds[\"dynbalance\"]>df_funds[\"prebalance\"]])\n\n    #每日净值\n    ayNetVals = (ayBal/init_capital)\n    \n    ar = math.pow(ayNetVals.iloc[-1], annual_days/days) - 1       #年化收益率=总收益率^(年交易日天数/统计天数)\n    ayDailyReturn = ayBal/ayPreBal-1 #每日收益率\n    delta = fmtNAN(ayDailyReturn.std(axis=0)*math.pow(annual_days,0.5),0)       #年化标准差=每日收益率标准差*根号下(年交易日天数)\n    down_delta = fmtNAN(ayDailyReturn[ayDailyReturn<0].std(axis=0)*math.pow(annual_days,0.5), 0)    #下行标准差=每日亏损收益率标准差*根号下(年交易日天数)\n\n    #sharpe率\n    if delta != 0.0:\n        sr = (ar-rf)/delta\n    else:\n        sr = 9999.0\n\n    #计算最大回撤和最大上涨\n    maxub = ayNetVals[0]\n    minub = maxub\n    mdd = 0.0\n    midd = 0.0\n    mup = 0.0\n    for idx in range(1,len(ayNetVals)):\n        maxub = max(maxub, ayNetVals[idx])\n        minub = min(minub, ayNetVals[idx])\n        profit = (ayNetVals[idx] - ayNetVals[idx-1])/ayNetVals[idx-1]\n        falldown = (ayNetVals[idx] - maxub)/maxub\n        riseup = (ayNetVals[idx] - minub)/minub\n        if profit <= 0:\n            midd = max(midd, abs(profit))\n            mdd = max(mdd, abs(falldown))\n        else:\n            mup = max(mup, abs(riseup))\n    #索提诺比率\n    if down_delta != 0.0:\n        sortino = (ar-rf)/down_delta\n    else:\n        sortino = 0.0\n    if mdd != 0.0:\n        calmar = ar/mdd\n    else:\n        calmar = 999999.0\n\n    #输出到excel\n    sheetName = '逐日绩效概览'\n    worksheet = workbook.add_worksheet(sheetName)\n\n    #   设置合并单元格及格式   #\n    # ~~~~~~ 写入数据 ~~~~~~ #\n    title_format = workbook.add_format({\n        'bold':     True,\n        'border':   1,\n        'align':    'center',   # 水平居中\n        'valign':   'vcenter',  # 垂直居中\n        'fg_color': '#bcbcbc'\n    })\n    fund_data_format = workbook.add_format({\n        'border': 1,\n        'align':    'right',    # 右对齐\n        'valign':   'vcenter',  # 垂直居中\n    })\n        \n    fund_data_format_2 = workbook.add_format({\n        'border': 1,\n        'align':    'right',    # 右对齐\n        'valign':   'vcenter',  # 垂直居中\n        'num_format': '0.00'\n    })\n\n    fund_data_format_3 = workbook.add_format({\n        'border': 1,\n        'align':    'right',    # 右对齐\n        'valign':   'vcenter',  # 垂直居中\n        'num_format': '0.000'\n    })\n\n    fund_data_format_4 = workbook.add_format({\n        'border': 1,\n        'align':    'right',    # 右对齐\n        'valign':   'vcenter',  # 垂直居中\n        'num_format': '0.0000'\n    })\n\n\n    merge_format = workbook.add_format({\n        'font_size': 16,\n        'bold':     True,\n        'align':    'center',   # 水平居中\n        'valign':   'vcenter',  # 垂直居中\n    })\n    indicator_format = workbook.add_format({\n        'font_size': 12,\n        'bold':     True,\n        'align':    'center',   # 水平居中\n        'valign':   'vcenter',  # 垂直居中\n    })\n    worksheet.merge_range('A1:D1', '收益率统计指标', merge_format)\n    worksheet.merge_range('E1:H1', '风险统计指标', merge_format)\n    worksheet.merge_range('I1:K1', '综合指标', merge_format)\n\n    key_indicator = ['交易天数', '累积收益（%）', '年化收益率（%）', '胜率（%）', '最大回撤（%）', '最大上涨（%）', '标准差（%）',\n            '下行波动率（%）', 'Sharpe比率', 'Sortino比率', 'Calmar比率']\n    key_data = [(ayNetVals.iloc[-1]-1)*100, ar*100, (windays/days)*100, mdd*100, mup*100, delta*100, down_delta*100, sr, sortino, calmar]\n    worksheet.write_row('A2', key_indicator, indicator_format)\n    worksheet.write_column('A3', [days], fund_data_format)\n    worksheet.write_row('B3', key_data, fund_data_format_3)\n\n    #   画图   #\n    chart_col = workbook.add_chart({'type': 'line'})\n    length = days\n    chart_col.add_series(                                   # 给图表设置格式，填充内容\n        {\n            'name': '=逐日绩效分析!$B$1',\n            'categories': '=逐日绩效分析!$A$3:$A$%d' % (length+2),\n            'values':   '=逐日绩效分析!$G$3:$G$%d' % (length+2),\n            'line': {'color': 'blue', 'width':1},\n        }\n    )\n    chart_col.set_title({'name': '累计净值'})\n    worksheet.insert_chart('A8', chart_col)\n\n    #  准备第二张表格  #\n    sheetName = '逐日绩效分析'\n    worksheet = workbook.add_worksheet(sheetName)\n    title_format2 = workbook.add_format({\n        'border': 1,\n        'align':    'center',   # 水平居中\n        'valign':   'vcenter',  # 垂直居中\n        'fg_color': '#D3D3D3',\n        'text_wrap': 1\n    })\n    worksheet.merge_range('A1:A2', '日期', title_format2)\n    worksheet.merge_range('B1:B2', '统计时间', title_format2)\n    worksheet.merge_range('C1:C2', '初始资金', title_format2)\n    worksheet.merge_range('D1:D2', '出入金', title_format2)\n    worksheet.merge_range('E1:E2', '当前权益', title_format2)\n    worksheet.merge_range('F1:F2', '累计盈亏', title_format2)\n    worksheet.merge_range('G1:G2', '累计净值', title_format2)\n    worksheet.merge_range('H1:I1', '当日盈亏', title_format2)\n    indicator = ['数值', '比例']\n    worksheet.write_row('H2', indicator, title_format2)\n    worksheet.merge_range('J1:J2', '峰值', title_format2)\n    worksheet.merge_range('K1:K2', '当日累计回撤', title_format2)\n    worksheet.merge_range('L1:L2', '历史最大累计回撤', title_format2)\n    worksheet.merge_range('M1:M2', '最大单日回撤', title_format2)\n    worksheet.merge_range('N1:N2', '衰落时间', title_format2)\n    # worksheet.merge_range('O1:O2', 'IF指数', title_format2)\n    # worksheet.merge_range('P1:P2', 'IF净值', title_format2)\n\n    #  写入内容  #\n    profit_format = workbook.add_format({\n        'border': 1,\n        'align':    'right',    # 靠右\n        'valign':   'vcenter',  # 垂直居中\n        'fg_color': '#FAFAD2',\n        'num_format': '0.00'\n    })\n\n    percent_format = workbook.add_format({\n        'border': 1,\n        'align':    'right',    # 右对齐\n        'valign':   'vcenter',  # 垂直居中\n        'num_format': '0.00%'\n    })\n\n    date_format = workbook.add_format({\n        'num_format':   'yyyy/mm/dd',\n        'border': 1,\n        'align':    'right',    # 右对齐\n        'valign':   'vcenter',  # 垂直居中\n    })\n\n    ayDates = df_funds['date'].apply(lambda x: str(x)[:4]+'/'+str(x)[4:6]+'/'+str(x)[6:8])\n    worksheet.write_column('A3', ayDates, date_format)\n    worksheet.write_column('B3', range(len(df_funds)), fund_data_format)\n    initial = [init_capital]*len(df_funds)\n    worksheet.write_column('C3', initial, fund_data_format)\n    worksheet.write_column('D3', '/', fund_data_format)\n    worksheet.write_column('E3', ayBal, fund_data_format)\n    worksheet.write_column('F3', ayBal-init_capital, fund_data_format_2)\n    worksheet.write_column('G3', ayNetVals, fund_data_format_4)\n    worksheet.write_column('H3', ayBal-ayPreBal, profit_format)\n    worksheet.write_column('I3', ayDailyReturn, percent_format)\n    #  计算峰值\n    upper = np.maximum.accumulate(ayNetVals)\n    worksheet.write_column('J3', upper, fund_data_format_4)\n    #  回撤指标\n    temp = 1-(ayNetVals)/(np.maximum.accumulate(ayNetVals))\n    worksheet.write_column('K3', temp, percent_format)\n    worksheet.write_column('L3', np.maximum.accumulate(temp), percent_format)\n    worksheet.write_column('M3', np.minimum.accumulate(ayDailyReturn), percent_format)\n    #  计算衰落时间\n    down_time = [0]\n    for i in range(1, len(upper)):\n        if upper[i] > upper[i-1]:\n            down_time.append(0)\n        else:\n            l = down_time[i-1]\n            down_time.append(l+1)\n    worksheet.write_column('N3', down_time, fund_data_format)\n\nclass WtBtAnalyst:\n\n    def __init__(self):\n        self.__strategies__ = dict()\n        return\n\n    def add_strategy(self,  sname:str, folder:str, init_capital:float, rf:float=0.02, annual_trading_days:int = 240):\n        self.__strategies__[sname] = {\n            \"folder\": folder,\n            \"cap\":init_capital,\n            \"rf\":rf,\n            \"atd\":annual_trading_days\n        }\n\n    def run_new(self, outFileName:str = ''):\n        if len(self.__strategies__.keys()) == 0:\n            raise Exception(\"strategies is empty\")\n\n        for sname in self.__strategies__:\n            sInfo = self.__strategies__[sname]\n            folder = sInfo[\"folder\"]\n            print(\"start PnL analyzing for strategy %s……\" % (sname))\n\n            df_funds = pd.read_csv(folder + \"funds.csv\")\n            df_closes = pd.read_csv(folder + \"closes.csv\")\n            df_trades = pd.read_csv(folder + \"trades.csv\")\n\n            if len(outFileName) == 0:\n                outFileName = 'Strategy[%s]_PnLAnalyzing_%s_%s.xlsx' % (sname, df_funds['date'][0], df_funds['date'].iloc[-1])\n\n            workbook = Workbook(outFileName)\n            init_capital = sInfo[\"cap\"]\n            annual_days = sInfo[\"atd\"]\n            rf = sInfo[\"rf\"]\n\n            strategy_analyze(workbook, df_closes.copy(), df_trades.copy(), capital=init_capital, rf=rf, period=annual_days)\n            output_closes(workbook, df_closes.copy(), capital=init_capital)\n            trading_analyze(workbook, df_closes.copy(), df_funds.copy(), capital=init_capital)\n            funds_analyze(workbook, df_funds.copy(), capital=init_capital, rf=rf, period=annual_days)\n            workbook.close()\n\n            print(\"PnL analyzing of strategy %s done\" % (sname))\n\n\n    def run(self, outFileName:str = ''):\n        if len(self.__strategies__.keys()) == 0:\n            raise Exception(\"strategies is empty\")\n\n        for sname in self.__strategies__:\n            sInfo = self.__strategies__[sname]\n            folder = sInfo[\"folder\"]\n            print(\"start PnL analyzing for strategy %s……\" % (sname))\n\n            df_funds = pd.read_csv(folder + \"funds.csv\")\n            print(\"fund logs loaded……\")\n\n            init_capital = sInfo[\"cap\"]\n            annual_days = sInfo[\"atd\"]\n            rf = sInfo[\"rf\"]\n            \n            if len(outFileName) == 0:\n                outFileName = 'Strategy[%s]_PnLAnalyzing_%s_%s.xlsx' % (sname, df_funds['date'][0], df_funds['date'].iloc[-1])\n            workbook = Workbook(outFileName)\n            funds_analyze(workbook, df_funds, capital=init_capital, rf=rf, period=annual_days)\n            workbook.close()\n\n            print(\"PnL analyzing of strategy %s done\" % (sname))\n\n    def run_simple(self):\n        if len(self.__strategies__.keys()) == 0:\n            raise Exception(\"strategies is empty\")\n\n        for sname in self.__strategies__:\n            sInfo = self.__strategies__[sname]\n            folder = sInfo[\"folder\"]\n\n            df_funds = pd.read_csv(folder + \"funds.csv\")\n\n            init_capital = sInfo[\"cap\"]\n            annual_days = sInfo[\"atd\"]\n            rf = sInfo[\"rf\"]\n            \n            filename = folder + 'summary.json'\n            sumObj = summary_analyze(df_funds, capital=init_capital, rf=rf, period=annual_days)\n            sumObj[\"name\"] = sname\n            f = open(filename,\"w\")\n            f.write(json.dumps(sumObj, indent=4, ensure_ascii=True))\n            f.close()"
  },
  {
    "path": "wtpy/apps/WtCtaOptimizer.py",
    "content": "from json import encoder\nimport multiprocessing\nimport time\nimport threading\nimport json\n\nimport os\nimport math\nimport numpy as np\nimport pandas as pd\nfrom pandas import DataFrame as df\n\nfrom wtpy import WtBtEngine,EngineType\nfrom wtpy.apps import WtBtAnalyst\n\ndef fmtNAN(val, defVal = 0):\n    if math.isnan(val):\n        return defVal\n\n    return val\n\nclass ParamInfo:\n    '''\n    参数信息类\n    '''\n    def __init__(self, name:str, start_val = None, end_val = None, step_val = None, ndigits = 1, val_list:list = None):\n        self.name = name    #参数名\n        self.start_val = start_val  #起始值\n        self.end_val = end_val      #结束值\n        self.step_val = step_val    #变化步长\n        self.ndigits = ndigits      #小数位\n        self.val_list = val_list    #指定参数\n\n    def gen_array(self):\n        if self.val_list is not None:\n            return self.val_list\n\n        values = list()\n        curVal = round(self.start_val, self.ndigits)\n        while curVal < self.end_val:\n            values.append(curVal)\n\n            curVal += self.step_val\n            curVal = round(curVal, self.ndigits)\n            if curVal >= self.end_val:\n                curVal = self.end_val\n                break\n        values.append(round(curVal, self.ndigits))\n        return values\n\nclass WtCtaOptimizer:\n    '''\n    参数优化器\\n\n    主要用于做策略参数优化的\n    '''\n    def __init__(self, worker_num:int = 8):\n        '''\n        构造函数\\n\n\n        @worker_num 工作进程个数，默认为8，可以根据CPU核心数设置\n        '''\n        self.worker_num = worker_num\n        self.running_worker = 0\n        self.mutable_params = dict()\n        self.fixed_params = dict()\n        self.env_params = dict()\n\n        self.cpp_stra_module = None\n        return\n\n    def add_mutable_param(self, name:str, start_val, end_val, step_val, ndigits = 1):\n        '''\n        添加可变参数\\n\n\n        @name       参数名\\n\n        @start_val  起始值\\n\n        @end_val    结束值\\n\n        @step_val   步长\\n\n        @ndigits    小数位\n        '''\n        self.mutable_params[name] = ParamInfo(name=name, start_val=start_val, end_val=end_val, step_val=step_val, ndigits=ndigits)\n\n    def add_listed_param(self, name:str, val_list:list):\n        '''\n        添加限定范围的可变参数\\n\n\n        @name       参数名\\n\n        @val_list   参数值列表\n        '''\n        self.mutable_params[name] = ParamInfo(name=name, val_list=val_list)\n\n    def add_fixed_param(self, name:str, val):\n        '''\n        添加固定参数\\n\n\n        @name       参数名\\n\n        @val        值\\n\n        '''\n        self.fixed_params[name] = val\n        return\n    \n    def set_strategy(self, typeName:type, name_prefix:str):\n        '''\n        设置策略\\n\n\n        @typeName       策略类名\\n\n        @name_prefix    命名前缀，用于自动命名用，一般为格式为\"前缀_参数1名_参数1值_参数2名_参数2值\"\n        '''\n        self.strategy_type = typeName\n        self.name_prefix = name_prefix\n        return\n\n    def set_cpp_strategy(self, module:str, type_name:type, name_prefix:str):\n        '''\n        设置CPP策略\\n\n\n        @module         模块文件\\n\n        @typeName       策略类名\\n\n        @name_prefix    命名前缀，用于自动命名用，一般为格式为\"前缀_参数1名_参数1值_参数2名_参数2值\"\n        '''\n        self.cpp_stra_module = module\n        self.cpp_stra_type = type_name\n        self.name_prefix = name_prefix\n        return\n\n    def config_backtest_env(self, deps_dir:str, cfgfile:str=\"configbt.json\", storage_type:str=\"csv\", storage_path:str = None, db_config:dict = None):\n        '''\n        配置回测环境\\n\n\n        @deps_dir   依赖文件目录\\n\n        @cfgfile    配置文件名\\n\n        @storage_type   存储类型，csv/bin等\\n\n        @storage_path   存储路径\n        '''\n        self.env_params[\"deps_dir\"] = deps_dir\n        self.env_params[\"cfgfile\"] = cfgfile\n        self.env_params[\"storage_type\"] = storage_type\n\n        if storage_path is None and db_config is None:\n            raise Exception(\"storage_path and db_config cannot be both None!\")\n\n        if storage_type == 'db' and db_config is None:\n            raise Exception(\"db_config cannot be None while storage_type is db!\")\n\n        self.env_params[\"storage_path\"] = storage_path\n        self.env_params[\"db_config\"] = db_config\n\n    def config_backtest_time(self, start_time:int, end_time:int):\n        '''\n        配置回测时间，可多次调用配置多个回测时间区间\\n\n\n        @start_time 开始时间，精确到分钟，格式如201909100930\\n\n        @end_time   结束时间，精确到分钟，格式如201909100930\n        '''\n        if \"time_ranges\" not in self.env_params:\n            self.env_params[\"time_ranges\"] = []\n\n        self.env_params[\"time_ranges\"].append([start_time,end_time])\n\n    def __gen_tasks__(self, markerfile:str = \"strategies.json\"):\n        '''\n        生成回测任务\n        '''\n        param_names = self.mutable_params.keys()\n        param_values = dict()\n        # 先生成各个参数的变量数组\n        # 并计算总的参数有多少组\n        total_groups = 1\n        for name in param_names:\n            paramInfo = self.mutable_params[name]\n            values = paramInfo.gen_array()\n            param_values[name] = values\n            total_groups *= len(values)\n\n        #再生成最终每一组的参数dict\n        param_groups = list()\n        stra_names = dict()\n        time_ranges = self.env_params[\"time_ranges\"]\n        for time_range in time_ranges:\n            start_time = time_range[0]\n            end_time = time_range[1]\n            for i in range(total_groups):\n                k = i\n                thisGrp = self.fixed_params.copy()  #复制固定参数\n                endix = ''\n                for name in param_names:\n                    cnt = len(param_values[name])\n                    curVal = param_values[name][k%cnt]\n                    tname = type(curVal)\n                    if tname.__name__ == \"list\":\n                        val_str  = ''\n                        for item in curVal:\n                            val_str += str(item)\n                            val_str += \"_\"\n\n                        val_str = val_str[:-1]\n                        thisGrp[name] = curVal\n                        endix += name \n                        endix += \"_\"\n                        endix += val_str\n                        endix += \"_\"\n                    else:\n                        thisGrp[name] = curVal\n                        endix += name \n                        endix += \"_\"\n                        endix += str(curVal)\n                        endix += \"_\"\n                    k = math.floor(k / cnt)\n\n                endix = endix[:-1]\n                straName = self.name_prefix + endix\n                straName += \"_%d_%d\" % (start_time, end_time)\n                thisGrp[\"name\"] = straName\n                thisGrp[\"start_time\"] = start_time\n                thisGrp[\"end_time\"] = end_time\n                stra_names[straName] = thisGrp\n                param_groups.append(thisGrp)\n        \n        # 将每一组参数和对应的策略ID落地到文件中，方便后续的分析\n        f = open(markerfile, \"w\")\n        f.write(json.dumps(obj=stra_names, sort_keys=True, indent=4))\n        f.close()\n        return param_groups\n\n    def __ayalyze_result__(self, strName:str, time_range:tuple, params:dict):\n        folder = \"./outputs_bt/%s/\" % (strName)\n        df_closes = pd.read_csv(folder + \"closes.csv\")\n        df_funds = pd.read_csv(folder + \"funds.csv\")\n\n        df_wins = df_closes[df_closes[\"profit\"]>0]\n        df_loses = df_closes[df_closes[\"profit\"]<=0]\n\n        ay_WinnerBarCnts = df_wins[\"closebarno\"]-df_wins[\"openbarno\"]\n        ay_LoserBarCnts = df_loses[\"closebarno\"]-df_loses[\"openbarno\"]\n\n        total_winbarcnts = ay_WinnerBarCnts.sum()\n        total_losebarcnts = ay_LoserBarCnts.sum()\n\n        total_fee = df_funds.iloc[-1][\"fee\"]\n\n        totaltimes = len(df_closes) # 总交易次数\n        wintimes = len(df_wins)     # 盈利次数\n        losetimes = len(df_loses)   # 亏损次数\n        winamout = df_wins[\"profit\"].sum()      #毛盈利\n        loseamount = df_loses[\"profit\"].sum()   #毛亏损\n        trdnetprofit = winamout + loseamount    #交易净盈亏\n        accnetprofit = trdnetprofit - total_fee #账户净盈亏\n        winrate = wintimes / totaltimes if totaltimes>0 else 0      # 胜率\n        avgprof = trdnetprofit/totaltimes if totaltimes>0 else 0    # 单次平均盈亏\n        avgprof_win = winamout/wintimes if wintimes>0 else 0        # 单次盈利均值\n        avgprof_lose = loseamount/losetimes if losetimes>0 else 0   # 单次亏损均值\n        winloseratio = abs(avgprof_win/avgprof_lose) if avgprof_lose!=0 else \"N/A\"   # 单次盈亏均值比\n            \n        max_consecutive_wins = 0    # 最大连续盈利次数\n        max_consecutive_loses = 0   # 最大连续亏损次数\n        \n        avg_bars_in_winner = total_winbarcnts/wintimes if wintimes>0 else \"N/A\"\n        avg_bars_in_loser = total_losebarcnts/losetimes if losetimes>0 else \"N/A\"\n\n        consecutive_wins = 0\n        consecutive_loses = 0\n        for idx, row in df_closes.iterrows():\n            profit = row[\"profit\"]\n            if profit > 0:\n                consecutive_wins += 1\n                consecutive_loses = 0\n            else:\n                consecutive_wins = 0\n                consecutive_loses += 1\n            \n            max_consecutive_wins = max(max_consecutive_wins, consecutive_wins)\n            max_consecutive_loses = max(max_consecutive_loses, consecutive_loses)\n\n        summary = params.copy()\n        summary[\"开始时间\"] = time_range[0]\n        summary[\"结束时间\"] = time_range[1]\n        summary[\"总交易次数\"] = totaltimes\n        summary[\"盈利次数\"] = wintimes\n        summary[\"亏损次数\"] = losetimes\n        summary[\"毛盈利\"] = float(winamout)\n        summary[\"毛亏损\"] = float(loseamount)\n        summary[\"交易净盈亏\"] = float(trdnetprofit)\n        summary[\"胜率\"] = winrate*100\n        summary[\"单次平均盈亏\"] = avgprof\n        summary[\"单次盈利均值\"] = avgprof_win\n        summary[\"单次亏损均值\"] = avgprof_lose\n        summary[\"单次盈亏均值比\"] = winloseratio\n        summary[\"最大连续盈利次数\"] = max_consecutive_wins\n        summary[\"最大连续亏损次数\"] = max_consecutive_loses\n        summary[\"平均盈利周期\"] = avg_bars_in_winner\n        summary[\"平均亏损周期\"] = avg_bars_in_loser\n        summary[\"平均账户收益率\"] = accnetprofit/totaltimes\n\n        f = open(folder+\"summary.json\", mode=\"w\")\n        f.write(json.dumps(obj=summary, indent=4))\n        f.close()\n\n        return\n\n    def __execute_task__(self, params:dict):\n        '''\n        执行单个回测任务\\n\n\n        @params kv形式的参数\n        '''\n        name = params[\"name\"]\n        f = open(\"logcfg_tpl.json\", \"r\")\n        content =f.read()\n        f.close()\n        content = content.replace(\"$NAME$\", name)\n        engine = WtBtEngine(eType=EngineType.ET_CTA, logCfg=content, isFile=False)\n        engine.init(self.env_params[\"deps_dir\"], self.env_params[\"cfgfile\"])\n        engine.configBacktest(params[\"start_time\"], params[\"end_time\"])\n        engine.configBTStorage(mode=self.env_params[\"storage_type\"], path=self.env_params[\"storage_path\"], dbcfg=self.env_params[\"db_config\"])\n\n        time_range = (params[\"start_time\"], params[\"end_time\"])\n\n        # 去掉多余的参数\n        params.pop(\"start_time\")\n        params.pop(\"end_time\")\n        \n        if self.cpp_stra_module is not None:\n            params.pop(\"name\")\n            engine.setExternalCtaStrategy(name, self.cpp_stra_module, self.cpp_stra_type, params)\n        else:\n            straInfo = self.strategy_type(**params)\n            engine.set_cta_strategy(straInfo)\n\n        engine.commitBTConfig()\n        engine.run_backtest()\n        engine.release_backtest()\n\n        self.__ayalyze_result__(name, time_range, params)\n\n    def __start_task__(self, params:dict):\n        '''\n        启动单个回测任务\\n\n        这里用线程启动子进程的目的是为了可以控制总的工作进程个数\\n\n        可以在线程中join等待子进程结束，再更新running_worker变量\\n\n        如果在__execute_task__中修改running_worker，因为在不同进程中，数据并不同步\\n\n\n        @params kv形式的参数\n        '''\n        p = multiprocessing.Process(target=self.__execute_task__, args=(params,))\n        p.start()\n        p.join()\n        self.running_worker -= 1\n        print(\"工作进程%d个\" % (self.running_worker))\n\n    def go(self, interval:float = 0.2, out_marker_file:str = \"strategies.json\", out_summary_file:str = \"total_summary.csv\"):\n        '''\n        启动优化器\\n\n        @interval   时间间隔，单位秒\n        @markerfile 标记文件名，回测完成以后分析会用到\n        '''\n        self.tasks = self.__gen_tasks__(out_marker_file)\n        self.running_worker = 0\n        total_task = len(self.tasks)\n        left_task = total_task\n        while True:\n            if left_task == 0:\n                break\n\n            if self.running_worker < self.worker_num:\n                params = self.tasks[total_task-left_task]\n                left_task -= 1\n                print(\"剩余任务%d个\" % (left_task))\n                p = threading.Thread(target=self.__start_task__, args=(params,))\n                p.start()\n                self.running_worker += 1\n                print(\"工作进程%d个\" % (self.running_worker))\n            else:\n                time.sleep(interval)\n\n        #最后，全部任务都已经启动完了，再等待所有工作进程结束\n        while True:\n            if self.running_worker == 0:\n                break\n            else:\n                time.sleep(interval)\n\n        #开始汇总回测结果\n        f = open(out_marker_file, \"r\")\n        content = f.read()\n        f.close()\n\n        obj_stras = json.loads(content)\n        total_summary = list()\n        for straName in obj_stras:\n            filename = \"./outputs_bt/%s/summary.json\" % (straName)\n            if not os.path.exists(filename):\n                print(\"%s不存在，请检查数据\" % (filename))\n                continue\n                \n            f = open(filename, \"r\")\n            content = f.read()\n            f.close()\n            obj_summary = json.loads(content)\n            total_summary.append(obj_summary)\n\n        df_summary = df(total_summary)\n        # df_summary = df_summary.drop(labels=[\"name\"], axis='columns')\n        df_summary.to_csv(out_summary_file, encoding='utf-8-sig')\n\n    def analyze(self, out_marker_file:str = \"strategies.json\", out_summary_file:str = \"total_summary.csv\"):\n        #开始汇总回测结果\n        f = open(out_marker_file, \"r\")\n        content = f.read()\n        f.close()\n\n        total_summary = list()\n        obj_stras = json.loads(content)\n        for straName in obj_stras:\n            params = obj_stras[straName]\n            filename = \"./outputs_bt/%s/summary.json\" % (straName)\n            if not os.path.exists(filename):\n                print(\"%s不存在，请检查数据\" % (filename))\n                continue\n                \n            time_range = (params[\"start_time\"],params[\"end_time\"])\n            self.__ayalyze_result__(straName, time_range, params)\n            \n            f = open(filename, \"r\")\n            content = f.read()\n            f.close()\n            obj_summary = json.loads(content)\n            total_summary.append(obj_summary)\n\n        df_summary = df(total_summary)\n        df_summary = df_summary.drop(labels=[\"name\"], axis='columns')\n        df_summary.to_csv(out_summary_file)\n\n    def analyzer(self, out_marker_file:str = \"strategies.json\", init_capital=500000, rf=0.02, annual_trading_days=240):\n        for straname in json.load(open(out_marker_file, mode='r')).keys():\n            try:\n                analyst = WtBtAnalyst()\n                analyst.add_strategy(straname, folder=\"./outputs_bt/%s/\"%straname, init_capital=init_capital, rf=rf, annual_trading_days=annual_trading_days)\n                analyst.run()\n            except:\n                pass\n\n                \n"
  },
  {
    "path": "wtpy/apps/WtHotPicker.py",
    "content": "\nimport datetime\nimport time\nimport json\nimport os\nimport logging\nimport functools\n\nimport urllib.request\nimport io\nimport gzip\nimport xml.dom.minidom\nfrom pyquery import PyQuery as pq\nimport re\n\nclass DayData:\n    '''\n    每日行情数据\n    '''\n\n    def __init__(self):\n        self.pid = ''\n        self.month = 0\n        self.code = ''  # 代码\n        self.close = 0  # 今收盘(收盘价)\n        self.volume = 0  # 成交量(手)\n        self.hold = 0  # 空盘量(总持？持仓量)\n\ndef extractPID(code):\n    \n    for idx in range(0, len(code)):\n        c = code[idx]\n        if '0' <= c and c <= '9': \n            break\n    \n    return code[:idx]\n\ndef readFileContent(filename):\n    if not os.path.exists(filename):\n        return \"\"\n    f = open(filename, 'r')\n    content = f.read()\n    f.close()\n    return content\n\ndef cmp_alg_01(left:DayData, right:DayData):\n    if left.month > right.month:\n        if left.hold > right.hold and left.volume > right.volume/3:\n            return 1\n        else:\n            return -1\n    else:\n        if left.hold <= right.hold or left.volume <= right.volume/3:\n            return -1\n        else:\n            return 1\n\ndef countFridays(curDate:datetime.datetime):\n    '''\n    计算截止到当周的周五的天数\n    '''\n    wd = curDate.weekday()\n    checkDate = datetime.datetime(year=curDate.year, month=curDate.month, day=1)\n    count = 0\n    while checkDate < curDate:\n        if checkDate.weekday() == 4:\n            count += 1\n        \n        checkDate += datetime.timedelta(days=1)\n\n    if wd < 4:\n        count += 1\n\n    return count\n\ndef httpGet(url, encoding='utf-8'):\n    request = urllib.request.Request(url)\n    request.add_header('Accept-encoding', 'gzip')\n    request.add_header(\n        'User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')\n    try:\n        f = urllib.request.urlopen(request)\n        ec = f.headers.get('Content-Encoding')\n        if ec == 'gzip':\n            cd = f.read()\n            cs = io.BytesIO(cd)\n            f = gzip.GzipFile(fileobj=cs)\n\n        return f.read().decode(encoding)\n    except:\n        return \"\"\n\ndef httpPost(url, datas, encoding='utf-8'):\n    headers = {\n        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',\n        'Accept-encoding': 'gzip'\n    }\n    data = urllib.parse.urlencode(datas).encode('utf-8')\n    request = urllib.request.Request(url, data, headers)\n    try:\n        f = urllib.request.urlopen(request)\n        ec = f.headers.get('Content-Encoding')\n        if ec == 'gzip':\n            cd = f.read()\n            cs = io.BytesIO(cd)\n            f = gzip.GzipFile(fileobj=cs)\n\n        return f.read().decode(encoding)\n    except:\n        return \"\"\n\nclass WtCacheMon:\n    '''\n    缓存管理器基类\n    '''\n    def __init__(self):\n        self.day_cache = dict()\n\n    def get_cache(self, exchg, curDT:datetime.datetime):\n        pass\n\nclass WtCacheMonExchg(WtCacheMon):\n    '''\n    交易所行情缓存器\n    通过到交易所官网上拉取当日的行情快照，缓存当日行情数据\n    '''\n\n    @staticmethod\n    def getCffexData(curDT:datetime.datetime) -> dict:\n        '''\n        读取CFFEX指定日期的行情快照\n\n        @curDT  指定的日期\n        '''\n\n        dtStr = curDT.strftime('%Y%m%d')\n        dtNum = int(dtStr)\n        path = \"http://www.cffex.com.cn/fzjy/mrhq/%d/%02d/index.xml\" % (dtNum/100, dtNum % 100)\n        content = httpGet(path)\n        if len(content) == 0:\n            return None\n\n        try:\n            dom = xml.dom.minidom.parseString(content)\n        except:\n            logging.info(\"[CFFEX]%s无数据，跳过\" % (dtStr))\n            return None\n\n        root = dom.documentElement\n        \n        items = {}\n        days = root.getElementsByTagName(\"dailydata\")\n        for day in days:\n            pid = day.getElementsByTagName(\n                \"productid\")[0].firstChild.data.strip()\n\n            if pid not in [\"IF\",\"IH\",\"IC\",\"T\",'TF']:\n                continue\n\n            item = DayData()\n            item.code = day.getElementsByTagName(\"instrumentid\")[\n                0].firstChild.data.strip()\n            item.pid = pid\n            item.hold = float(day.getElementsByTagName(\n                \"openinterest\")[0].firstChild.data)\n            item.close = float(day.getElementsByTagName(\n                \"closeprice\")[0].firstChild.data)\n            item.volume = int(day.getElementsByTagName(\n                \"volume\")[0].firstChild.data)\n\n            item.month = item.code[len(item.pid):]\n\n            items[item.code] = item\n        return items\n\n    @staticmethod\n    def getShfeData(curDT:datetime.datetime) -> dict:\n        '''\n        读取SHFE指定日期的行情快照\n\n        @curDT  指定的日期\n        '''\n\n        dtStr = curDT.strftime('%Y%m%d')\n        content = httpGet(\"http://www.shfe.com.cn/data/dailydata/kx/kx%s.dat\" % (dtStr))\n        if len(content) == 0:\n            return None\n        \n        items = {}\n        root = json.loads(content)\n        for day in root['o_curinstrument']:\n            pid = day['PRODUCTID'].strip().rstrip('_f')\n            dm = day['DELIVERYMONTH']\n            if len(str(day['CLOSEPRICE']).strip()) == 0:\n                continue\n\n            code = pid + dm\n\n            item = DayData()\n            item.pid = pid\n            item.code = code\n            item.hold = int(day['OPENINTEREST'])\n            if day['VOLUME'] != '':\n                item.volume = int(day['VOLUME'])\n            item.close = float(day[\"CLOSEPRICE\"])\n            item.month = item.code[len(item.pid):]\n            items[code] = item\n        return items\n\n    @staticmethod\n    def getCzceData(curDT:datetime.datetime) -> dict:\n        '''\n        读取CZCE指定日期的行情快照\n\n        @curDT  指定的日期\n        '''\n\n        dtStr = curDT.strftime('%Y%m%d')\n        url = 'http://www.czce.com.cn/cn/DFSStaticFiles/Future/%s/%s/FutureDataDaily.htm' % (dtStr[0:4], dtStr)\n        try:\n            html = httpGet(url).strip()\n        except urllib.error.HTTPError as httperror:\n            print(httperror)\n            return None\n\n        if len(html) == 0:\n            return None\n\n        dataitems = {}\n        doc = pq(html)\n        # print(doc(#senfe .table  table))\n        items = doc('#senfe')\n        # 去掉第一行标题\n        items.remove('tr.tr0')\n        # 获取tr   items.find('tr')\n        lis = items('tr')\n        # print(lis)\n        # tr行数\n        trcount = len(lis)\n        # 遍历行\n        for tr in range(0, trcount-1):\n            item = DayData()\n            tdlis = doc(lis[tr])('td')\n\n            item.code = doc(tdlis[0]).text()\n            ay = re.compile('[A-Za-z]+').findall(item.code)\n            if len(ay) == 0:\n                continue\n\n            item.pid = ay[0]    \n\n            close = doc(tdlis[5]).text()\n            if close != '':\n                item.close = float(close.replace(\",\",\"\"))\n\n            volume = doc(tdlis[9]).text()\n            if volume != '':\n                item.volume = int(volume.replace(\",\",\"\"))\n\n            hold = doc(tdlis[10]).text()\n            if hold != '':\n                item.hold = int(hold.replace(\",\",\"\"))\n\n            item.month = item.code[len(item.pid):]\n            if item.month[0] == '0':\n                item.month = \"2\" + item.month\n            else:\n                item.month = \"1\" + item.month\n\n            dataitems[item.code] = item\n        # print(dataitems)\n        return dataitems\n\n    @staticmethod\n    def getDceData(curDT:datetime.datetime) -> dict:\n        '''\n        读取DCE指定日期的行情快照\n\n        @curDT  指定的日期\n        '''\n\n        pname_map = {\n            \"聚乙烯\": \"l\",\n            \"鸡蛋\": \"jd\",\n            \"焦煤\": \"jm\",\n            \"豆二\": \"b\",\n            \"胶合板\": \"bb\",\n            \"玉米\": \"c\",\n            \"豆粕\": \"m\",\n            \"棕榈油\": \"p\",\n            \"玉米淀粉\": \"cs\",\n            \"纤维板\": \"fb\",\n            \"铁矿石\": \"i\",\n            \"焦炭\": \"j\",\n            \"豆一\": \"a\",\n            \"聚丙烯\": \"pp\",\n            \"聚氯乙烯\": \"v\",\n            \"豆油\": \"y\",\n            \"乙二醇\":\"eg\",\n            \"粳米\":\"rr\",\n            \"苯乙烯\":\"eb\",\n            \"液化石油气\":\"pg\",\n            \"生猪\":\"lh\"\n        }\n\n        url = 'http://www.dce.com.cn/publicweb/quotesdata/dayQuotesCh.html'\n        try:\n            data = {}\n            data['dayQuotes.variety'] = 'all'\n            data['dayQuotes.trade_type'] = 0\n            data['year'] = curDT.year\n            data['month'] = curDT.month - 1\n            data['day'] = curDT.day\n            html = httpPost(url, data)\n        except urllib.error.HTTPError as httperror:\n            print(httperror)\n            return None\n\n        dataitems = {}\n        doc = pq(html)\n        items = doc('.dataArea')  # doc('#printData')\n        # # 获取tr   items.find('tr')\n        lis = items('tr')\n        trcount = len(lis)\n        # 遍历行\n        for tr in range(1, trcount):\n\n            tdlis = doc(lis[tr])('td')\n            # 商品名称\n            pzname = doc(tdlis[0]).text()\n            if pzname not in pname_map:\n                if \"小计\" not in pzname and \"总计\" not in pzname:\n                    logging.error(\"未知品种:\" + pzname)\n                continue\n\n            # 交割月份\n            item = DayData()\n            item.pid = pname_map[pzname]\n            item.code = item.pid + doc(tdlis[1]).text()\n            # 收盘价\n            spj = doc(tdlis[5]).text()\n            item.close = float(spj if spj != '' else 0)\n            # 成交量\n            item.volume = int(doc(tdlis[10]).text())\n            # 持仓量\n            item.hold = int(doc(tdlis[11]).text())\n            item.month = item.code[len(item.pid):]\n            dataitems[item.code] = item\n\n        return dataitems\n\n    @staticmethod\n    def getIneData(curDT:datetime.datetime) -> dict:\n        '''\n        读取INE指定日期的行情快照\n\n        @curDT  指定的日期\n        '''\n        dtStr = curDT.strftime('%Y%m%d')\n        content = httpGet(\"http://www.ine.cn/data/dailydata/kx/kx%s.dat\" % (dtStr))\n        if len(content) == 0:\n            return None\n\n        items = {}\n        root = json.loads(content)\n        for day in root['o_curinstrument']:\n            pid = day['PRODUCTID'].strip().rstrip('_f')\n            dm = day['DELIVERYMONTH']\n            if pid != 'sc' or dm == '' or dm == '小计':\n                continue\n            item = DayData()\n            item.pid = pid\n            item.code = pid + dm\n            item.hold = int(day['OPENINTEREST'])\n            item.close = float(day['CLOSEPRICE'])\n            item.volume = int(day['VOLUME']) if day['VOLUME']!='' else 0\n            item.month = item.code[len(item.pid):]\n            items[item.code] = item\n        return items\n\n\n    def cache_by_date(self, exchg:str, curDT:datetime.datetime):\n        '''\n        缓存指定日期指定交易所的行数据\n\n        @exchg  交易所代码\n        @curDT  指定日期\n        '''\n        dtStr = curDT.strftime('%Y%m%d')\n\n        if dtStr not in self.day_cache:\n            self.day_cache[dtStr] = dict()\n\n        cacheItem = self.day_cache[dtStr]\n        if exchg == 'CFFEX':\n            cacheItem[exchg] = WtCacheMonExchg.getCffexData(curDT)\n        elif exchg  == 'SHFE':\n            cacheItem[exchg] = WtCacheMonExchg.getShfeData(curDT)\n        elif exchg  == 'DCE':\n            cacheItem[exchg] = WtCacheMonExchg.getDceData(curDT)\n        elif exchg  == 'CZCE':\n            cacheItem[exchg] = WtCacheMonExchg.getCzceData(curDT)\n        elif exchg  == 'INE':\n            cacheItem[exchg] = WtCacheMonExchg.getIneData(curDT)\n        else:\n            raise Exception(\"未知交易所代码\" + exchg)\n\n    def get_cache(self, exchg:str, curDT:datetime.datetime):\n        '''\n        获取指定日期的某个交易所合约的快照数据\n\n        @exchg  交易所代码\n        @curDT  指定日期\n        '''\n        dtStr = curDT.strftime('%Y%m%d')\n        if dtStr not in self.day_cache or exchg not in self.day_cache[dtStr]:\n            self.cache_by_date(exchg, curDT)\n\n        if dtStr not in self.day_cache:\n            return None\n\n        if exchg not in self.day_cache[dtStr]:\n            return None\n        return self.day_cache[dtStr][exchg]\n\nclass WtCacheMonSS(WtCacheMon):\n    '''\n    快照缓存管理器\n    通过读取wtpy的datakit当日生成的快照文件，缓存当日行情数据\n    一般目录为\"数据存储目录/his/snapshots/xxxxxxx.csv\"\n    '''\n\n    def __init__(self, snapshot_path:str):\n        WtCacheMon.__init__(self)\n        self.snapshot_path = snapshot_path\n\n    def cache_snapshot(self, curDT:datetime):\n        '''\n        缓存指定日期的快照数据\n\n        @curDT  指定的日期\n        '''\n        dtStr = curDT.strftime('%Y%m%d')\n\n        filename = \"%s%s.csv\" % (self.snapshot_path, dtStr)\n        content = readFileContent(filename)\n        lines = content.split(\"\\n\")\n\n        if dtStr not in self.day_cache:\n            self.day_cache[dtStr] = dict()\n\n        cacheItem = self.day_cache[dtStr]\n        for idx in range(1, len(lines)):\n            line = lines[idx]\n            if len(line) == 0:\n                break\n            items = line.split(\",\")\n            \n            exchg = items[1]\n            if exchg not in cacheItem:\n                cacheItem[exchg] = dict()\n\n            day = DayData()\n            day.pid = extractPID(items[2])\n            day.code = items[2]\n            # 收盘价\n            day.close = float(items[6])\n            # 成交量\n            day.volume = int(items[8])\n            # 持仓量\n            day.hold = int(items[10])\n            day.month = day.code[len(day.pid):]\n            if len(day.month) == 3:\n                if day.month[0] >= '0' and day.month[0] <= '5':\n                    day.month = \"2\" + day.month\n                else:\n                    day.month = \"1\" + day.month\n            cacheItem[exchg][day.code] = day\n\n    def get_cache(self, exchg, curDT:datetime):\n        '''\n        获取指定日期的某个交易所合约的快照数据\n\n        @exchg  交易所代码\n        @curDT  指定日期\n        '''\n\n        dtStr = curDT.strftime('%Y%m%d')\n        if dtStr not in self.day_cache:\n            self.cache_snapshot(curDT)\n\n        if dtStr not in self.day_cache:\n            return None\n\n        if exchg not in self.day_cache[dtStr]:\n            return None\n        return self.day_cache[dtStr][exchg]\n\nclass WtMailNotifier:\n    '''\n    邮件通知器\n    '''\n    def __init__(self, user:str, pwd:str, sender:str=None, host:str=\"smtp.exmail.qq.com\", port=465, isSSL:bool = True):\n        self.user = user\n        self.pwd = pwd\n        self.sender = sender if sender is not None else \"WtHotNotifier<%s>\" % (user)\n        self.receivers = list()\n\n        self.mail_host = host\n        self.mail_port = port\n        self.mail_ssl = isSSL\n\n    def add_receiver(self, name:str, addr:str):\n        '''\n        添加收件人\n\n        @name   收件人姓名\n        @addr   收件人邮箱地址\n        '''\n        self.receivers.append({\n            \"name\":name,\n            \"addr\":addr\n        })\n\n    def notify(self, hot_changes:dict, sec_changes:dict, nextDT:datetime.datetime, hotFile:str, hotMap:str, secFile:str, secMap:str):\n        '''\n        通知主力切换事件\n\n        @hot_changes    当日主力切换的规则列表\n        @sec_changes    当日次主力切换的规则列表\n        @nextDT         生效日期\n        @hotFile        主力规则文件\n        @hotMap         主力映射文件\n        '''\n        dtStr = nextDT.strftime('%Y.%m.%d')\n    \n        import smtplib\n        from email.mime.text import MIMEText\n        from email.mime.multipart import MIMEMultipart\n        from email.mime.application import MIMEApplication\n        from email.header import Header\n\n        sender = self.sender\n        receivers = self.receivers\n\n        content = ''\n        for exchg in hot_changes:\n            for pid in hot_changes[exchg]:\n                item = hot_changes[exchg][pid][-1]\n                content +=  '品种%s.%s的主力合约已切换,下个交易日(%s)生效, %s -> %s\\n' % (exchg, pid, dtStr, item[\"from\"], item[\"to\"])\n\n        content += '\\n'\n        for exchg in sec_changes:\n            for pid in sec_changes[exchg]:\n                item = sec_changes[exchg][pid][-1]\n                content +=  '品种%s.%s的次主力合约已切换,下个交易日(%s)生效, %s -> %s\\n' % (exchg, pid, dtStr, item[\"from\"], item[\"to\"])\n\n        msg_mp = MIMEMultipart()\n        msg_mp['From'] = sender  # 发送者          \n        \n        subject = '主力合约换月邮件<%s>' % (dtStr)\n        msg_mp['Subject'] = Header(subject, 'utf-8')\n\n        content = MIMEText(content, 'plain', 'utf-8')\n        msg_mp.attach(content)\n\n        xlspart = MIMEApplication(open(hotFile,'rb').read())\n        xlspart[\"Content-Type\"] = 'application/octet-stream'\n        xlspart.add_header('Content-Disposition','attachment', filename=os.path.basename(hotFile))\n        msg_mp.attach(xlspart)\n\n        xlspart = MIMEApplication(open(hotMap,'rb').read())\n        xlspart[\"Content-Type\"] = 'application/octet-stream'\n        xlspart.add_header('Content-Disposition','attachment', filename=os.path.basename(hotMap))\n        msg_mp.attach(xlspart)\n\n        xlspart = MIMEApplication(open(secFile,'rb').read())\n        xlspart[\"Content-Type\"] = 'application/octet-stream'\n        xlspart.add_header('Content-Disposition','attachment', filename=os.path.basename(secFile))\n        msg_mp.attach(xlspart)\n\n        xlspart = MIMEApplication(open(secMap,'rb').read())\n        xlspart[\"Content-Type\"] = 'application/octet-stream'\n        xlspart.add_header('Content-Disposition','attachment', filename=os.path.basename(secMap))\n        msg_mp.attach(xlspart)\n\n        if self.mail_ssl:\n            smtpObj = smtplib.SMTP_SSL(self.mail_host, self.mail_port)\n        else:\n            smtpObj = smtplib.SMTP(self.mail_host, self.mail_port)\n\n        try:\n            smtpObj.ehlo()\n            smtpObj.login(self.user, self.pwd) \n            logging.info(\"%s 登录成功 %s:%d\", self.user, self.mail_host, self.mail_port)\n        except smtplib.SMTPException as ex:\n            logging.error(\"邮箱初始化失败：{}\".format(ex))\n\n        for item in receivers:\n            to = \"%s<%s>\" % (item[\"name\"], item[\"addr\"])\n            msg_mp['To'] =  Header(to, 'utf-8')    # 接收者\n            try:\n                smtpObj.sendmail(sender, item[\"addr\"], msg_mp.as_string())\n                logging.info(\"邮件发送失败，收件人: %s\", to)\n            except smtplib.SMTPException as ex:\n                logging.error(\"邮件发送失败，收件人：{}, {}\".format(to, ex))\n\nclass WtHotPicker:\n    '''\n    主力选择器\n    '''\n    def __init__(self, markerFile:str = \"./marker.json\", hotFile:str = \"../Common/hots.json\", secFile:str = None):\n        self.marker_file = markerFile\n        self.hot_file = hotFile\n        self.sec_file = secFile\n\n        self.mail_notifier:WtMailNotifier = None\n        self.cache_monitor:WtCacheMon = None\n\n        self.current_hots = None\n        self.current_secs = None\n\n    def set_cacher(self, cacher:WtCacheMon):\n        '''\n        设置日行情缓存器\n        '''\n        self.cache_monitor = cacher\n        \n    def set_mail_notifier(self, notifier:WtMailNotifier):\n        '''\n        设置邮件通知器\n        '''\n        self.mail_notifier = notifier\n\n    def pick_exchg_hots(self, exchg:str, beginDT:datetime.datetime, endDT:datetime.datetime, alg:int = 0):\n        '''\n        确定指定市场的主力合约\n\n        @exchg          交易所代码\n        @beginDT        开始日期\n        @endDT          截止日期\n        @alg            切换规则算法，0-除中金所外，按成交量确定，1-中金所，按照成交量和总持共同确定\n        '''\n\n        cacheMon = self.cache_monitor\n        current_hots = self.current_hots\n        current_secs = self.current_secs\n\n        if exchg not in current_hots:\n            current_hots[exchg] = dict()\n\n        if exchg not in current_secs:\n            current_secs[exchg] = dict()\n\n        lastHots = current_hots[exchg]\n        lastSecs = current_secs[exchg]\n\n        hot_switches = {}\n        sec_switches = {}\n\n        curDT = beginDT\n\n        while curDT <= endDT:\n            hots = {}\n            seconds = {}\n            logging.info(\"[%s]开始拉取%s数据\" % (exchg, curDT.strftime('%Y%m%d')))\n            items = cacheMon.get_cache(exchg, curDT)\n            if items is not None:\n                wd = curDT.weekday()\n                fri_cnt = countFridays(curDT)\n                cur_month = curDT.strftime('%Y%m')[2:]\n                next_month = int(cur_month)+1\n                if next_month % 100 == 13:\n                    next_month = str(int(cur_month[:2])+1)+\"01\"\n                else:\n                    next_month = str(next_month)\n\n                items_by_pid = dict()\n                for code in items:\n                    item = items[code]\n                    pid = item.pid\n\n                    if pid not in items_by_pid:\n                        items_by_pid[pid] = list()\n\n                    items_by_pid[pid].append(item)\n\n                for pid in items_by_pid:\n                    ay = items_by_pid[pid]\n                    if alg == 1:\n                        #ay.sort(key=functools.cmp_to_key(cmp_alg_01)) #按总持排序\n                        ay.sort(key=lambda x : x.volume) #按成交量\n                    elif alg == 0:\n                        ay.sort(key=lambda x : x.hold) #按总持\n                    hot = ay[-1]\n\n                    if len(ay) > 1:\n                        sec = ay[-2]\n                        #中金所算法，如果是当月第三个周三，并且主力合约月份小于次主力合约月份，\n                        #说明没有根据数据自动换月，强制进行换月\n                        if alg == 1 and wd == 2 and fri_cnt == 3 and hot.month==cur_month:\n                            for item in ay:\n                                if item.month == next_month:\n                                    hot = item\n                                    break\n\n                        #如果主力合约月份大于等于次主力合约，则次主力递延一位\n                        if hot.month >= sec.month:\n                            sec = ay[-3]\n                        \n                        seconds[pid] = sec.code\n\n                    hots[pid] = hot.code\n                    \n                for key in hots.keys():\n                    nextDT = curDT + datetime.timedelta(days=1)\n                    if key not in lastHots:\n                        item = {}\n                        item[\"date\"] = int(curDT.strftime('%Y%m%d'))\n                        item[\"from\"] = \"\"\n                        item[\"to\"] = hots[key]\n                        item[\"oldclose\"] = 0.0\n                        item[\"newclose\"] = items[hots[key]].close\n                        hot_switches[key] = [item]\n                        lastHots[key] = hots[key]\n                        logging.info(\"[%s]品种%s主力确认, 确认日期: %s, %s\", exchg,key, nextDT.strftime('%Y%m%d'), hots[key])\n                    else:\n                        oldcode = lastHots[key]\n                        newcode = hots[key]\n                        oldItem = None\n                        if oldcode in items:\n                            oldItem = items[oldcode]\n                        newItem = items[newcode]\n                        if oldItem is None or newItem.month > oldItem.month:\n                            item = {}\n                            item[\"date\"] = int(nextDT.strftime('%Y%m%d'))\n                            item[\"from\"] = oldcode\n                            item[\"to\"] = newcode\n                            if oldcode in items:\n                                item[\"oldclose\"] = items[oldcode].close\n                            else:\n                                item[\"oldclose\"] = 0.0\n                                item[\"date\"] = int(curDT.strftime('%Y%m%d'))\n                            item[\"newclose\"] = items[newcode].close\n                            if key not in hot_switches:\n                                hot_switches[key] = list()\n                            hot_switches[key].append(item)\n                            logging.info(\"[%s]品种%s主力切换 切换日期: %s，%s -> %s\", exchg, key, nextDT.strftime('%Y%m%d'), lastHots[key], hots[key])\n                            lastHots[key] = hots[key]\n\n                for key in seconds.keys():\n                    nextDT = curDT + datetime.timedelta(days=1)\n                    if key not in lastSecs:\n                        item = {}\n                        item[\"date\"] = int(curDT.strftime('%Y%m%d'))\n                        item[\"from\"] = \"\"\n                        item[\"to\"] = seconds[key]\n                        item[\"oldclose\"] = 0.0\n                        item[\"newclose\"] = items[seconds[key]].close\n                        sec_switches[key] = [item]\n                        lastSecs[key] = seconds[key]\n                        logging.info(\"[%s]品种%s次主力确认, 确认日期: %s, %s\", exchg,key, nextDT.strftime('%Y%m%d'), seconds[key])\n                    else:\n                        oldcode = lastSecs[key]\n                        newcode = seconds[key]\n                        oldItem = None\n                        if oldcode in items:\n                            oldItem = items[oldcode]\n                        newItem = items[newcode]\n                        if oldItem is None or newItem.month > oldItem.month:\n                            item = {}\n                            item[\"date\"] = int(nextDT.strftime('%Y%m%d'))\n                            item[\"from\"] = oldcode\n                            item[\"to\"] = newcode\n                            if oldcode in items:\n                                item[\"oldclose\"] = items[oldcode].close\n                            else:\n                                item[\"oldclose\"] = 0.0\n                                item[\"date\"] = int(curDT.strftime('%Y%m%d'))\n                            item[\"newclose\"] = items[newcode].close\n                            if key not in sec_switches:\n                                sec_switches[key] = list()\n                            sec_switches[key].append(item)\n                            logging.info(\"[%s]品种%s次主力切换 切换日期: %s，%s -> %s\", exchg, key, nextDT.strftime('%Y%m%d'), lastSecs[key], seconds[key])\n                            lastSecs[key] = seconds[key]\n            # 日期递增\n            curDT = curDT + datetime.timedelta(days=1)\n        return hot_switches,sec_switches\n    \n    def merge_switch_list(self, total, exchg, switch_list):\n        '''\n        合并主力切换规则\n        \n        @total          已有的全部切换规则\n        @exchg          交易所代码\n        @switcg_list    新的切换规则\n        '''\n        if exchg not in total:\n            total[exchg] = switch_list\n            logging.info(\"[%s]全市场主力切换规则重构\" % (exchg))\n            return True, total\n        \n        bChanged = False\n        for pid in switch_list:\n            if pid not in total[exchg]:\n                total[exchg][pid] = switch_list[pid]\n                logging.info(\"[%s]品种%s主力切换规则重构\" % (exchg, pid))\n                bChanged = True\n            else:\n                total[exchg][pid].extend(switch_list[pid])\n                logging.info(\"[%s]品种%s主力切换规则追加%d条\" % (exchg, pid, len(switch_list[pid])))\n                bChanged = True\n        return bChanged, total\n\n    def execute_rebuild(self, beginDate:datetime.datetime = None, endDate:datetime.datetime = None, exchanges = [\"CFFEX\", \"SHFE\", \"CZCE\", \"DCE\", \"INE\"], wait=False):\n        '''\n        重构全部的主力切换规则\n        不依赖现有数据，全部重新确定主力合约的切换规则\n\n        @beginDate  开始日期\n        @endDate    截止日期\n        @exchanges  要重构的交易所列表\n        @wait       每个日期切换是否等待，等待时间1s，主要针对从交易所官网拉取，防止被拉黑名单\n        '''\n        if endDate is None:\n            endDate = datetime.datetime.now()\n\n        if beginDate is None:\n            beginDate = datetime.datetime.strptime(\"2016-01-01\", '%Y-%m-%d')\n        \n        total_hots = dict()\n        total_secs = dict()\n\n        self.current_hots = dict()\n        self.current_secs = dict()\n\n        for exchg in exchanges:\n            self.current_hots[exchg] = dict()\n            self.current_secs[exchg] = dict()\n        \n        hot_changes = dict()\n        sec_changes = dict()\n        curDate = beginDate\n        while curDate <= endDate:\n            if wait:\n                time.sleep(1)\n            for exchg in exchanges:\n                alg = 1 if exchg=='CFFEX' else 0    # 中金所的换月算法和其他交易所不同\n                hotRules,secRules = self.pick_exchg_hots(exchg, curDate, curDate, alg=alg)\n\n                if len(hotRules.keys()) > 0:\n                    hasChange,total_hots = self.merge_switch_list(total_hots, exchg, hotRules)\n\n                    if exchg not in hot_changes:\n                        hot_changes[exchg] = dict()\n                    hot_changes[exchg].update(hotRules)\n\n                if len(secRules.keys()) > 0:\n                    hasChange,total_secs = self.merge_switch_list(total_secs, exchg, secRules)\n\n                    if exchg not in sec_changes:\n                        sec_changes[exchg] = dict()\n                    sec_changes[exchg].update(secRules)\n\n            curDate = curDate + datetime.timedelta(days=1)\n\n        #日期标记要保存\n        marker = dict()\n        marker[\"date\"] = int(endDate.strftime('%Y%m%d'))\n        output = open(self.marker_file, 'w')\n        output.write(json.dumps(marker, sort_keys=True, indent = 4))\n        output.close()\n        \n        logging.info(\"主力切换规则已更新\")\n\n        output = open(self.hot_file, 'w')\n        output.write(json.dumps(total_hots, sort_keys=True, indent = 4))\n        output.close()\n\n        if self.sec_file is not None:\n            output = open(self.sec_file, 'w')\n            output.write(json.dumps(total_secs, sort_keys=True, indent = 4))\n            output.close()\n\n        output = open(\"hotmap.json\", 'w')\n        output.write(json.dumps(self.current_hots, sort_keys=True, indent = 4))\n        output.close()\n\n        output = open(\"secmap.json\", 'w')\n        output.write(json.dumps(self.current_secs, sort_keys=True, indent = 4))\n        output.close()\n\n        if self.mail_notifier is not None:\n            self.mail_notifier.notify(hot_changes, sec_changes, endDate, hotFile, \"hotmap.json\", secFile, \"secmap.json\")\n\n        return total_hots,total_secs\n  \n    def execute_increment(self, endDate:datetime.datetime = None, exchanges = [\"CFFEX\", \"SHFE\", \"CZCE\", \"DCE\", \"INE\"]):\n        '''\n        增量更新主力切换规则\n        会自动加载marker.json取得上次更新的日期，并读取hots.json确定当前的映射规则\n\n        @endDate    截止日期\n        @exchanges  要重构的交易所列表\n        '''\n\n        if endDate is None:\n            endDate = datetime.datetime.now()\n\n        markerFile = self.marker_file\n        hotFile = self.hot_file\n        secFile = self.sec_file\n\n        marker = {\"date\":\"0\"}\n        c = readFileContent(markerFile)\n        if len(c) > 0:\n            marker = json.loads(c)\n\n        c = readFileContent(hotFile)\n        total_hots = dict()\n        if len(c) > 0:\n            total_hots = json.loads(c)\n        else:\n            marker[\"date\"] = \"0\"\n\n        c = readFileContent(secFile)\n        total_secs = dict()\n        if len(c) > 0:\n            total_secs = json.loads(c)\n        else:\n            marker[\"date\"] = \"0\"\n\n        lastDate = str(marker[\"date\"])\n        if lastDate >= endDate.strftime('%Y%m%d'):\n            logging.info(\"上次更新日期%s大于结束日期%s，退出更新\" % (lastDate, endDate.strftime('%Y%m%d')))\n            exit()\n        elif lastDate != \"0\":\n            beginDT = datetime.datetime.strptime(lastDate, \"%Y%m%d\") + datetime.timedelta(days=1)\n        else:\n            beginDT = datetime.datetime.strptime(\"2016-01-01\", '%Y-%m-%d')\n        \n        self.current_hots = dict()\n        self.current_secs = dict()\n\n        for exchg in total_hots:\n            if exchg not in self.current_hots:\n                self.current_hots[exchg] = dict()\n\n            for pid in total_hots[exchg]:\n                ay = total_hots[exchg][pid]\n                self.current_hots[exchg][pid] = ay[-1][\"to\"]\n\n        for exchg in total_secs:\n            if exchg not in self.current_secs:\n                self.current_secs[exchg] = dict()\n\n            for pid in total_secs[exchg]:\n                ay = total_secs[exchg][pid]\n                self.current_secs[exchg][pid] = ay[-1][\"to\"]\n        \n        bChanged = False\n        hot_changes = dict()\n        sec_changes = dict()\n        for exchg in exchanges:\n            logging.info(\"[%s]开始分析主力换月数据\" % exchg)\n            alg = 1 if exchg=='CFFEX' else 0    # 中金所的换月算法和其他交易所不同\n            hotRules,secRules = self.pick_exchg_hots(exchg, beginDT, endDate, alg=alg)\n\n            if len(hotRules.keys()) > 0:\n                hasChange,total_hots = self.merge_switch_list(total_hots, exchg, hotRules)\n                bChanged  = bChanged or hasChange\n                hot_changes[exchg] = hotRules\n\n            if len(secRules.keys()) > 0:\n                hasChange,total_secs = self.merge_switch_list(total_secs, exchg, secRules)\n                bChanged  = bChanged or hasChange\n                sec_changes[exchg] = secRules\n\n\n        #日期标记要保存\n        marker = dict()\n        marker[\"date\"] = int(endDate.strftime('%Y%m%d'))\n        output = open(markerFile, 'w')\n        output.write(json.dumps(marker, sort_keys=True, indent = 4))\n        output.close()\n        \n        if bChanged:\n            logging.info(\"主力切换规则已更新\")\n\n            output = open(hotFile, 'w')\n            output.write(json.dumps(total_hots, sort_keys=True, indent = 4))\n            output.close()\n\n            output = open(secFile, 'w')\n            output.write(json.dumps(total_secs, sort_keys=True, indent = 4))\n            output.close()\n\n            output = open(\"hotmap.json\", 'w')\n            output.write(json.dumps(self.current_hots, sort_keys=True, indent = 4))\n            output.close()\n\n            output = open(\"secmap.json\", 'w')\n            output.write(json.dumps(self.current_secs, sort_keys=True, indent = 4))\n            output.close()\n\n            if self.mail_notifier is not None:\n                self.mail_notifier.notify(hot_changes, sec_changes, endDate, hotFile, \"hotmap.json\", secFile, \"secmap.json\")\n        else:\n            logging.info(\"主力切换规则未更新，不保存数据\")\n"
  },
  {
    "path": "wtpy/apps/__init__.py",
    "content": "from .WtBtAnalyst import WtBtAnalyst\nfrom .WtCtaOptimizer import WtCtaOptimizer\nfrom .WtHotPicker import WtHotPicker, WtCacheMonExchg, WtCacheMonSS, WtMailNotifier, WtCacheMon\n\n__all__ = [\"WtBtAnalyst\",\"WtCtaOptimizer\", \"WtHotPicker\", \"WtCacheMonExchg\", \"WtCacheMonSS\", \"WtMailNotifier\", \"WtCacheMon\"]"
  },
  {
    "path": "wtpy/apps/datahelper/DHBaostock.py",
    "content": "from wtpy.apps.datahelper.DHDefs import BaseDataHelper, DBHelper\nimport baostock as bs\nfrom datetime import datetime\nimport json\nimport os\n\ndef transCodes(codes:list) -> list:\n    ret = list()\n    for code in codes:\n        items = code.split(\".\")\n        exchg = items[0]\n        if exchg == \"SSE\":\n            ret.append(\"sh.\"+items[1])\n        else:\n            ret.append(\"sz.\"+items[1])\n\n    return ret\n\nclass DHBaostock(BaseDataHelper):\n\n    def __init__(self):\n        BaseDataHelper.__init__(self)\n        print(\"Baostock helper has been created.\")\n        return\n\n    def auth(self, **kwargs):\n        if self.isAuthed:\n            return\n\n        bs.login()\n        self.isAuthed = True\n        print(\"Baostock has been authorized.\")\n\n    def dmpCodeListToFile(self, filename:str, hasIndex:bool=True, hasStock:bool=True):\n        raise Exception(\"Baostock has not code list api\")\n\n    def dmpAdjFactorsToFile(self, codes:list, filename:str):\n        codes = transCodes(codes)\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n        count = 0\n        length = len(codes)\n        for code in codes:\n            exchg = code[:2]\n            if exchg == 'sh':\n                exchg = 'SSE'\n            else:\n                exchg = 'SZSE'\n            count += 1\n\n            stocks[exchg][code[3:]] = list()\n            print(\"Fetching adjust factors of %s(%d/%s)...\" % (code, count, length))\n            rs = bs.query_adjust_factor(code=code, start_date=\"1990-01-01\")\n\n            if rs.error_code != '0':\n                print(\"Error occured: %s\" % (rs.error_msg))\n                continue\n    \n            while rs.next():\n                items = rs.get_row_data()\n                date = int(items[1].replace(\"-\",\"\"))\n                factor = float(items[4])\n                stocks[exchg][code[3:]].append({\n                    \"date\": date,\n                    \"factor\": factor\n                })\n        \n        print(\"Writing adjust factors into file %s...\" % (filename))\n        f = open(filename, 'w+')\n        f.write(json.dumps(stocks, sort_keys=True, indent=4, ensure_ascii=False))\n        f.close()\n\n    def dmpBarsToFile(self, folder:str, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        codes = transCodes(codes)\n\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        start_date = start_date.strftime(\"%Y-%m-%d\")\n        end_date = end_date.strftime(\"%Y-%m-%d\")\n\n        freq = ''\n        isDay = False\n        filetag = ''\n        fields = \"\"\n        if period == 'day':\n            freq = 'd'\n            isDay = True\n            filetag = 'd'\n            fields = \"date,open,high,low,close,volume,amount\"\n        elif period == \"min5\":\n            freq = '5'\n            filetag = 'm5'\n            fields = \"date,time,open,high,low,close,volume,amount\"\n        else:\n            raise Exception(\"Baostock has only bars of frequency day and min5\")\n\n        count = 0\n        length = len(codes)\n        for code in codes:\n            exchg = code[:2]\n            if exchg == 'sh':\n                exchg = 'SSE'\n            else:\n                exchg = 'SZSE'\n            count += 1\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, code, count, length))\n            rs = bs.query_history_k_data_plus(code=code, fields=fields, start_date=start_date, end_date=end_date, frequency=freq)\n            content = \"date,time,open,high,low,close,volume,turnover\\n\"\n            if rs.error_code != '0':\n                print(\"Error occured: %s\" % (rs.error_msg))\n                continue\n\n            while rs.next():\n                items = rs.get_row_data().copy()\n                if isDay:\n                    items.insert(1, \"0\")\n                else:\n                    time = items[1][-9:-3]\n                    items[1] = time[:2]+\":\"+time[2:4]+\":\"+time[4:]\n                content += \",\".join(items) + \"\\n\"\n\n            filename = \"%s.%s_%s.csv\" % (exchg, code[3:], filetag)\n            filepath = os.path.join(folder, filename)\n            print(\"Writing bars into file %s...\" % (filepath))\n            f = open(filepath, \"w\", encoding=\"utf-8\")\n            f.write(content)\n            f.close()\n\n    def dmpAdjFactorsToDB(self, dbHelper:DBHelper, codes:list):\n        codes = transCodes(codes)\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n\n        count = 0\n        length = len(codes)\n        for code in codes:\n            exchg = code[:2]\n            if exchg == 'sh':\n                exchg = 'SSE'\n            else:\n                exchg = 'SZSE'\n            count += 1\n            \n            print(\"Fetching adjust factors of %s(%d/%s)...\" % (code, count, length))\n            stocks[exchg][code[3:]] = list()\n            rs = bs.query_adjust_factor(code=code, start_date=\"1990-01-01\")\n\n            if rs.error_code == '0':\n                print(\"Error occured: %s\" % (rs.error_msg))\n                continue\n    \n            while rs.next():\n                items = rs.get_row_data()\n                date = int(items[1].replace(\"-\",\"\"))\n                factor = float(items[4])\n                stocks[exchg][code[3:]].append({\n                    \"date\": date,\n                    \"factor\": factor\n                })\n        \n        print(\"Writing adjust factors into database...\")\n        dbHelper.writeFactors(stocks)\n\n    def dmpBarsToDB(self, dbHelper:DBHelper, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        codes = transCodes(codes)\n\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        start_date = start_date.strftime(\"%Y-%m-%d\")\n        end_date = end_date.strftime(\"%Y-%m-%d\")\n\n        freq = ''\n        isDay = False\n        fields = \"\"\n        if period == 'day':\n            freq = 'd'\n            isDay = True\n            fields = \"date,open,high,low,close,volume,amount\"\n        elif period == \"min5\":\n            freq = '5'\n            fields = \"date,time,open,high,low,close,volume,amount\"\n        else:\n            raise Exception(\"Baostock has only bars of frequency day and min5\")\n\n        count = 0\n        length = len(codes)\n        for code in codes:\n            exchg = code[:2]\n            if exchg == 'sh':\n                exchg = 'SSE'\n            else:\n                exchg = 'SZSE'\n            count += 1\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, code, count, length))\n            rs = bs.query_history_k_data_plus(code=code, fields=fields, start_date=start_date, end_date=end_date, frequency=freq)\n            bars = []\n            while (rs.error_code == '0') & rs.next():\n                items = rs.get_row_data()\n                if isDay:\n                    bars.append({\n                        \"exchange\":exchg,\n                        \"code\":code[3:],\n                        \"date\": int(items[0].replace(\"-\",\"\")),\n                        \"time\": 0,\n                        \"open\": float(items[1]),\n                        \"high\": float(items[2]),\n                        \"low\": float(items[3]),\n                        \"close\": float(items[4]),\n                        \"volume\": float(items[5]),\n                        \"turnover\": float(items[6])\n                    })\n                else:\n                    time = int(items[1][-9:-5])\n                    bars.append({\n                        \"exchange\":exchg,\n                        \"code\":code[3:],\n                        \"date\": int(items[0].replace(\"-\",\"\")),\n                        \"time\": time,\n                        \"open\": float(items[2]),\n                        \"high\": float(items[3]),\n                        \"low\": float(items[4]),\n                        \"close\": float(items[5]),\n                        \"volume\": float(items[6]),\n                        \"turnover\": float(items[7])\n                    })\n\n            print(\"Writing bars into database...\")\n            dbHelper.writeBars(bars, period)"
  },
  {
    "path": "wtpy/apps/datahelper/DHDefs.py",
    "content": "from datetime import datetime\n\nclass DBHelper:\n\n    def __init__(self):\n        pass\n\n    def initDB(self):\n        '''\n        初始化数据库，主要是建表等工作\n        '''\n        pass\n\n    def writeBars(self, bars:list, period=\"day\"):\n        '''\n        将K线存储到数据库中\\n\n        @bars   K线序列\\n\n        @period K线周期\n        '''\n        pass\n\n    def writeFactors(self, factors:dict):\n        '''\n        将复权因子存储到数据库中\\n\n        @factors   复权因子\n        '''\n        pass\n\n\nclass BaseDataHelper:\n\n    def __init__(self):\n        self.isAuthed = False\n        pass\n\n    def __check__(self):\n        if not self.isAuthed:\n            raise Exception(\"This module has not authorized yet!\")\n\n    def auth(self, **kwargs):\n        '''\n        模块认证\n        '''\n        pass\n\n    def dmpCodeListToFile(self, filename:str, hasIndex:bool=True, hasStock:bool=True):\n        '''\n        将代码列表导出到文件\\n\n        @filename   要输出的文件名，json格式\\n\n        @hasIndex   是否包含指数\\n\n        @hasStock   是否包含股票\\n\n        '''\n        pass\n\n    def dmpAdjFactorsToFile(self, codes:list, filename:str):\n        '''\n        将除权因子导出到文件\\n\n        @codes  股票列表，格式如[\"SSE.600000\",\"SZSE.000001\"]\\n\n        @filename   要输出的文件名，json格式\n        '''\n        pass\n\n    def dmpBarsToFile(self, folder:str, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        '''\n        将K线导出到指定的目录下的csv文件，文件名格式如SSE.600000_d.csv\\n\n        @folder 要输出的文件夹\\n\n        @codes  股票列表，格式如[\"SSE.600000\",\"SZSE.000001\"]\\n\n        @start_date 开始日期，datetime类型，传None则自动设置为1990-01-01\\n\n        @end_date   结束日期，datetime类型，传None则自动设置为当前日期\\n\n        @period K线周期，支持day、min1、min5\\n\n        '''\n        pass\n\n    def dmpAdjFactorsToDB(self, dbHelper:DBHelper, codes:list):\n        '''\n        将除权因子导出到数据库\\n\n        @codes  股票列表，格式如[\"SSE.600000\",\"SZSE.000001\"]\\n\n        @dbHelper   数据库辅助模块\n        '''\n        pass\n\n    def dmpBarsToDB(self, dbHelper:DBHelper, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        '''\n        将K线导出到数据库\\n\n        @dbHelper 数据库辅助模块\\n\n        @codes  股票列表，格式如[\"SSE.600000\",\"SZSE.000001\"]\\n\n        @start_date 开始日期，datetime类型，传None则自动设置为1990-01-01\\n\n        @end_date   结束日期，datetime类型，传None则自动设置为当前日期\\n\n        @period K线周期，支持day、min1、min5\\n\n        '''\n        pass"
  },
  {
    "path": "wtpy/apps/datahelper/DHFactory.py",
    "content": "from wtpy.apps.datahelper.DHDefs import BaseDataHelper\nfrom wtpy.apps.datahelper.DHBaostock import DHBaostock\nfrom wtpy.apps.datahelper.DHTushare import DHTushare\nfrom wtpy.apps.datahelper.DHRqData import DHRqData\n\nclass DHFactory:\n    \n    @staticmethod\n    def createHelper(name:str) -> BaseDataHelper:\n        '''\n        创建数据辅助模块\\n\n        @name   模块名称，目前支持的有tushare、baostock、rqdata\n        '''\n        name = name.lower()\n        if name == \"baostock\":\n            return DHBaostock()\n        elif name == \"tushare\":\n            return DHTushare()\n        elif name == \"rqdata\":\n            return DHRqData()\n        else:\n            raise Exception(\"Cannot recognize helper with name %s\" % (name))\n"
  },
  {
    "path": "wtpy/apps/datahelper/DHRqData.py",
    "content": "from wtpy.apps.datahelper.DHDefs import BaseDataHelper, DBHelper\nimport rqdatac as rq\nfrom datetime import datetime, timedelta\nimport json\nimport os\n\ndef exchgStdToRQ(exchg:str) -> str:\n    if exchg == 'SSE':\n        return \"XSHG\"\n    elif exchg == 'SZSE':\n        return \"XSHE\"\n    else:\n        return exchg\n\ndef exchgRQToStd(exchg:str) -> str:\n    if exchg == 'XSHG':\n        return \"SSE\"\n    elif exchg == 'XSHE':\n        return \"SZSE\"\n    else:\n        return exchg\n\ndef stdCodeToRQ(stdCode:str):\n    stdCode = stdCode.upper()\n    items = stdCode.split(\".\")\n    exchg = exchgStdToRQ(items[0])\n    if len(items) == 2:\n        # 简单股票代码，格式如SSE.600000\n        return items[1] + \".\" + exchg\n    elif items[1] in [\"IDX\",\"ETF\",\"STK\",\"OPT\"]:\n        # 标准股票代码，格式如SSE.IDX.000001\n        return items[2] + \".\" + exchg\n    elif len(items) == 3:\n        # 标准期货代码，格式如CFFEX.IF.2103\n        if items[2] != 'HOT':\n            return ''.join(items[1:])\n        else:\n            return items[1] + \"88\"\n\n    \n\n\nclass DHRqData(BaseDataHelper):\n\n    def __init__(self):\n        BaseDataHelper.__init__(self)\n        print(\"Rqdata helper has been created.\")\n        return\n\n    def auth(self, **kwargs):\n        if self.isAuthed:\n            return\n\n        rq.init(**kwargs)\n        self.isAuthed = True\n        print(\"Rqdata has been authorized.\")\n\n    def dmpCodeListToFile(self, filename:str, hasIndex:bool=True, hasStock:bool=True):\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n        \n        #个股列表\n        if hasStock:\n            print(\"Fetching stock list...\")\n            df_stocks = rq.all_instruments(type='CS', market=\"cn\")\n            for idx, row in df_stocks.iterrows():\n                rawcode = row[\"order_book_id\"][:6]\n                exchg = row[\"exchange\"]\n                if exchg == 'XSHG':\n                    exchg = \"SSE\"\n                else:\n                    exchg = \"SZSE\"\n                sInfo = dict()\n                sInfo[\"exchg\"] = exchg                    \n                sInfo[\"code\"] = rawcode\n                sInfo[\"name\"] = row[\"symbol\"]\n                sInfo[\"product\"] = \"STK\"            \n                \n                stocks[sInfo[\"exchg\"]][rawcode] = sInfo\n\n        if hasIndex:\n            #上证指数列表\n            print(\"Fetching index list...\")\n            df_stocks = rq.all_instruments(type='INDX', market=\"cn\")\n            for idx, row in df_stocks.iterrows():\n                rawcode = row[\"order_book_id\"][:6]\n                exchg = row[\"exchange\"]\n                if exchg == 'XSHG':\n                    exchg = \"SSE\"\n                else:\n                    exchg = \"SZSE\"\n                sInfo = dict()\n                sInfo[\"exchg\"] = exchg                    \n                sInfo[\"code\"] = rawcode\n                sInfo[\"name\"] = row[\"symbol\"]\n                sInfo[\"product\"] = \"IDX\"            \n                \n                stocks[sInfo[\"exchg\"]][rawcode] = sInfo\n\n        print(\"Writing code list into file %s...\" % (filename))\n        f = open(filename, 'w')\n        f.write(json.dumps(stocks, sort_keys=True, indent=4, ensure_ascii=False))\n        f.close()\n\n    def dmpAdjFactorsToFile(self, codes:list, filename:str):\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            count += 1\n            rq_code = code + \".\" + exchgStdToRQ(exchg)\n\n            stocks[exchg][code] = list()\n            print(\"Fetching adjust factors of %s(%d/%s)...\" % (code, count, length))\n            df_factors = rq.get_ex_factor(order_book_ids=rq_code, start_date=\"1990-01-01\")\n    \n            for idx, row in df_factors.iterrows():\n                date = row['announcement_date'].to_pydatetime()\n                date = date + timedelta(days=1)\n                factor = float(row['ex_cum_factor'])\n                stocks[exchg][code].append({\n                    \"date\": int(date.strftime(\"%Y%m%d\")),\n                    \"factor\": factor\n                })\n        \n        print(\"Writing adjust factors into file %s...\" % (filename))\n        f = open(filename, 'w+')\n        f.write(json.dumps(stocks, sort_keys=True, indent=4, ensure_ascii=False))\n        f.close()\n\n    def dmpBarsToFile(self, folder:str, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        freq = ''\n        isDay = False\n        filetag = ''\n        if period == 'day':\n            freq = '1d'\n            isDay = True\n            filetag = 'd'\n        elif period == \"min5\":\n            freq = '5m'\n            filetag = 'm5'\n        elif period == \"min1\":\n            freq = '1m'\n            filetag = 'm1'\n        else:\n            raise Exception(\"Unrecognized period\")\n        \n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            count += 1\n            rq_code = stdCodeToRQ(stdCode)\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, stdCode, count, length))\n            df_bars = rq.get_price(order_book_ids = rq_code,start_date=start_date, end_date=end_date,frequency=freq,adjust_type='none',expect_df=True)\n            content = \"date,time,open,high,low,close,volume,turnover,hold\\n\"\n            total_nums = len(df_bars)\n            cur_num = 0\n            for idx, row in df_bars.iterrows():\n                trade_date = row.name[1].to_pydatetime()\n                date = trade_date.strftime(\"%Y-%m-%d\")\n                if isDay:\n                    time = '0'\n                else:\n                    time = trade_date.strftime(\"%H:%M:%S\")\n                o = str(row[\"open\"])\n                h = str(row[\"high\"])\n                l = str(row[\"low\"])\n                c = str(row[\"close\"])\n                v = str(row[\"volume\"])\n                t = str(row[\"total_turnover\"])\n                items = [date, time, o, h, l, c, v, t]\n                if \"open_interest\" in row:\n                    items.append(str(row[\"open_interest\"]))\n\n                content += \",\".join(items) + \"\\n\"\n\n                cur_num += 1\n                if cur_num % 500 == 0:\n                    print(\"Processing bars %d/%d...\" % (cur_num, total_nums))\n\n            filename = \"%s_%s.csv\" % (stdCode, filetag)\n            filepath = os.path.join(folder, filename)\n            print(\"Writing bars into file %s...\" % (filepath))\n            f = open(filepath, \"w\", encoding=\"utf-8\")\n            f.write(content)\n            f.close()\n\n    def dmpAdjFactorsToDB(self, dbHelper:DBHelper, codes:list):\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            count += 1\n            rq_code = code + \".\" + exchgStdToRQ(exchg)\n\n            stocks[exchg][code] = list()\n            print(\"Fetching adjust factors of %s(%d/%s)...\" % (code, count, length))\n            df_factors = rq.get_ex_factor(order_book_ids=rq_code, start_date=\"1990-01-01\")\n    \n            for idx, row in df_factors.iterrows():\n                date = row['announcement_date'].to_pydatetime()\n                date = date + timedelta(days=1)\n                factor = float(row['ex_cum_factor'])\n                stocks[exchg][code].append({\n                    \"date\": int(date.strftime(\"%Y%m%d\")),\n                    \"factor\": factor\n                })\n        \n        print(\"Writing adjust factors into database...\")\n        dbHelper.writeFactors(stocks)\n\n    def dmpBarsToDB(self, dbHelper:DBHelper, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        freq = ''\n        isDay = False\n        if period == 'day':\n            freq = '1d'\n            isDay = True\n        elif period == \"min5\":\n            freq = '5m'\n        elif period == \"min1\":\n            freq = '1m'\n        else:\n            raise Exception(\"Unrecognized period\")\n        \n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            items = stdCode.split(\".\")\n            exchg = items[0]\n            code = stdCode[(len(exchg)+1):]\n            rq_code = stdCodeToRQ(stdCode)\n            count += 1\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, stdCode, count, length))\n            df_bars = rq.get_price(order_book_ids = rq_code,start_date=start_date, end_date=end_date,frequency=freq,adjust_type='none',expect_df=True)\n            bars = list()\n            total_nums = len(df_bars)\n            cur_num = 0\n            for idx, row in df_bars.iterrows():\n                trade_date = row.name[1].to_pydatetime()\n                date = int(trade_date.strftime(\"%Y%m%d\"))\n                if isDay:\n                    time = 0\n                else:\n                    time = int(trade_date.strftime(\"%H%M\"))\n                curBar = {\n                    \"exchange\":exchg,\n                    \"code\": code,\n                    \"date\": date,\n                    \"time\": time,\n                    \"open\": row[\"open\"],\n                    \"high\": row[\"open\"],\n                    \"low\": row[\"open\"],\n                    \"close\": row[\"open\"],\n                    \"volume\": row[\"volume\"],\n                    \"turnover\": row[\"total_turnover\"]\n                }\n\n                if \"settlement\" in row:\n                    curBar[\"settle\"] = row[\"settlement\"]\n\n                if \"open_interest\" in row:\n                    curBar[\"interest\"] = row[\"open_interest\"]\n\n                bars.append(curBar)\n                cur_num += 1\n                if cur_num % 500 == 0:\n                    print(\"Processing bars %d/%d...\" % (cur_num, total_nums))\n\n            print(\"Writing bars into database...\")\n            dbHelper.writeBars(bars, period)"
  },
  {
    "path": "wtpy/apps/datahelper/DHTushare.py",
    "content": "from wtpy.apps.datahelper.DHDefs import BaseDataHelper, DBHelper\nimport tushare as ts\nfrom datetime import datetime\nimport json\nimport os\n\ndef transCode(stdCode:str) -> str:\n    items = stdCode.split(\".\")\n    exchg = items[0]\n    if exchg == \"SSE\":\n        exchg = \"SH\"\n    elif exchg == \"SZSE\":\n        exchg = \"SZ\"\n    \n    if exchg in ['SH','SZ']:\n        rawCode = ''\n        if len(items) > 2:\n            rawCode = items[2]\n        else:\n            rawCode = items[1]\n    else:\n        # 期货合约代码，格式为DCE.a.2018\n        rawCode = ''\n        if exchg == \"CZCE\":\n            rawCode = items[1] + items[2][1:]\n        else:\n            rawCode = ''.join(items[1:])\n    return rawCode.upper() + \".\" + exchg\n\n    \n\nclass DHTushare(BaseDataHelper):\n\n    def __init__(self):\n        BaseDataHelper.__init__(self)\n        self.api = None\n        self.use_pro = True\n\n        print(\"Tushare helper has been created.\")\n        return\n\n    def auth(self, **kwargs):\n        if self.isAuthed:\n            return\n\n        if \"use_pro\" in kwargs:\n            self.use_pro = kwargs[\"use_pro\"]\n            kwargs.pop(\"use_pro\")\n\n        self.api = ts.pro_api(**kwargs)\n        self.isAuthed = True\n        print(\"Tushare has been authorized, use_pro is %s.\" % (\"enabled\" if self.use_pro else \"disabled\"))\n\n    def dmpCodeListToFile(self, filename:str, hasIndex:bool=True, hasStock:bool=True):\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n        \n        #个股列表\n        if hasStock:\n            print(\"Fetching stock list...\")\n            df_stocks = self.api.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')\n            for idx, row in df_stocks.iterrows():\n                code = row[\"ts_code\"]\n                rawcode = row[\"symbol\"]\n                sInfo = dict()\n                pid = \"STK\"\n                if code[-2:] == \"SH\":\n                    sInfo[\"exchg\"] = \"SSE\"\n                else:\n                    sInfo[\"exchg\"] = \"SZSE\"\n                code = rawcode #code[-2:] + rawcode\n                sInfo[\"code\"] = code\n                sInfo[\"name\"] = row[\"name\"]\n                sInfo[\"product\"] = pid            \n                \n                stocks[sInfo[\"exchg\"]][code] = sInfo\n\n        if hasIndex:\n            #上证指数列表\n            print(\"Fetching index list of SSE...\")\n            df_stocks = self.api.index_basic(market='SSE')\n            for idx, row in df_stocks.iterrows():\n                code = row[\"ts_code\"]\n                rawcode = code[:6]\n                if rawcode[0] != '0':\n                    continue\n                \n                sInfo = dict()\n                sInfo[\"exchg\"] = \"SSE\"\n                code = rawcode #\"SH\" + rawcode\n                sInfo[\"code\"] = code\n                sInfo[\"name\"] = row[\"name\"]\n                sInfo[\"product\"] = \"IDX\"            \n                \n                stocks[sInfo[\"exchg\"]][code] = sInfo\n\n            #深证指数列表\n            print(\"Fetching index list of SZSE...\")\n            df_stocks = self.api.index_basic(market='SZSE')\n            for idx, row in df_stocks.iterrows():\n                code = row[\"ts_code\"]\n                rawcode = code[:6]\n                if rawcode[:3] != '399':\n                    continue\n                \n                sInfo = dict()\n                sInfo[\"exchg\"] = \"SZSE\"\n                code = rawcode  #\"SZ\" + rawcode\n                sInfo[\"code\"] = code\n                sInfo[\"name\"] = row[\"name\"]\n                sInfo[\"product\"] = \"IDX\"            \n                \n                stocks[sInfo[\"exchg\"]][code] = sInfo\n\n        print(\"Writing code list into file %s...\" % (filename))\n        f = open(filename, 'w')\n        f.write(json.dumps(stocks, sort_keys=True, indent=4, ensure_ascii=False))\n        f.close()\n\n\n    def dmpAdjFactorsToFile(self, codes:list, filename:str):\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            ts_code = transCode(stdCode)\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            count += 1\n\n            print(\"Fetching adjust factors of %s(%d/%s)...\" % (stdCode, count, length))\n            stocks[exchg][code] = list()\n            df_factors = self.api.adj_factor(ts_code=ts_code)\n\n            items = list()\n            for idx, row in df_factors.iterrows():\n                date = row[\"trade_date\"]\n                factor = row[\"adj_factor\"]\n                items.append({\n                    \"date\": int(date),\n                    \"factor\": float(factor)\n                })\n\n            items.reverse()\n            pre_factor = 0\n            for item in items:\n                if item[\"factor\"] != pre_factor:\n                    stocks[exchg][code].append(item)\n                    pre_factor = item[\"factor\"]\n\n        print(\"Writing adjust factors into file %s...\" % (filename))\n        f = open(filename, 'w+')\n        f.write(json.dumps(stocks, sort_keys=True, indent=4, ensure_ascii=False))\n        f.close()\n\n    def __dmp_bars_to_file_from_pro__(self, folder:str, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        freq = ''\n        isDay = False\n        filetag = ''\n        if period == 'day':\n            freq = 'D'\n            isDay = True\n            filetag = 'd'\n        elif period == \"min5\":\n            freq = '5min'\n            filetag = 'm5'\n        elif period == \"min1\":\n            freq = '1min'\n            filetag = 'm1'\n        else:\n            raise Exception(\"Unrecognized period\")\n\n        if isDay:\n            start_date = start_date.strftime(\"%Y%m%d\")\n            end_date = end_date.strftime(\"%Y%m%d\")\n        else:\n            start_date = start_date.strftime(\"%Y-%m-%d\") + \" 09:00:00\"\n            end_date = end_date.strftime(\"%Y-%m-%d\") + \" 15:15:00\"\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            ts_code = transCode(stdCode)\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            asset_type = \"E\"\n            if (exchg == 'SSE' and code[0] == '0') | (exchg == 'SZSE' and code[:3] == '399'):\n                    asset_type =  \"I\"\n            elif exchg not in ['SSE','SZSE']:\n                asset_type = \"FT\"\n            count += 1\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, code, count, length))\n            df_bars = ts.pro_bar(api=self.api, ts_code=ts_code, start_date=start_date, end_date=end_date, freq=freq, asset=asset_type)\n            df_bars = df_bars.iloc[::-1]\n            content = \"date,time,open,high,low,close,volume,turnover\\n\"\n            for idx, row in df_bars.iterrows():\n                if isDay:\n                    trade_date = row[\"trade_date\"]\n                    date = trade_date + ''\n                    time = '0'\n                else:\n                    trade_time = row[\"trade_time\"]\n                    date = trade_time.split(' ')[0]\n                    time = trade_time.split(' ')[1]\n                o = str(row[\"open\"])\n                h = str(row[\"high\"])\n                l = str(row[\"low\"])\n                c = str(row[\"close\"])\n                v = str(row[\"vol\"]*100)\n                t = str(row[\"amount\"]*100)\n                items = [date, time, o, h, l, c, v, t]\n\n                content += \",\".join(items) + \"\\n\"\n\n            filename = \"%s.%s_%s.csv\" % (exchg, code, filetag)\n            filepath = os.path.join(folder, filename)\n            print(\"Writing bars into file %s...\" % (filepath))\n            f = open(filepath, \"w\", encoding=\"utf-8\")\n            f.write(content)\n            f.close()\n\n    def __dmp_bars_to_file_from_old__(self, folder:str, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        freq = ''\n        isDay = False\n        filetag = ''\n        if period == 'day':\n            freq = 'D'\n            isDay = True\n            filetag = 'd'\n        elif period == \"min5\":\n            freq = '5'\n            filetag = 'm5'\n        else:\n            raise Exception(\"Unrecognized period\")\n\n        start_date = start_date.strftime(\"%Y-%m-%d\")\n        end_date = end_date.strftime(\"%Y-%m-%d\")\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            count += 1\n            if (exchg == 'SSE' and code[0] == '0') | (exchg == 'SZSE' and code[:3] == '399'):\n                raise Exception(\"Old api only supports stocks\")\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, code, count, length))\n            df_bars = ts.get_k_data(code, start=start_date, end=end_date, ktype=freq)\n            content = \"date,time,open,high,low,close,volume\\n\"\n            for idx, row in df_bars.iterrows():\n                if isDay:\n                    date = row[\"date\"]\n                    time = '0'\n                else:\n                    trade_time = row[\"date\"]\n                    date = trade_time.split(' ')[0]\n                    time = trade_time.split(' ')[1] + \":00\"\n                o = str(row[\"open\"])\n                h = str(row[\"high\"])\n                l = str(row[\"low\"])\n                c = str(row[\"close\"])\n                v = str(row[\"volume\"])\n                items = [date, time, o, h, l, c, v]\n\n                content += \",\".join(items) + \"\\n\"\n\n            filename = \"%s.%s_%s.csv\" % (exchg, code, filetag)\n            filepath = os.path.join(folder, filename)\n            print(\"Writing bars into file %s...\" % (filepath))\n            f = open(filepath, \"w\", encoding=\"utf-8\")\n            f.write(content)\n            f.close()\n\n    def dmpBarsToFile(self, folder:str, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if self.use_pro:\n            self.__dmp_bars_to_file_from_pro__(folder=folder, codes=codes, start_date=start_date, end_date=end_date, period=period)\n        else:\n            self.__dmp_bars_to_file_from_old__(folder=folder, codes=codes, start_date=start_date, end_date=end_date, period=period)\n\n    def dmpAdjFactorsToDB(self, dbHelper:DBHelper, codes:list):\n        stocks = {\n            \"SSE\":{},\n            \"SZSE\":{}\n        }\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            ts_code = transCode(stdCode)\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            count += 1\n\n            print(\"Fetching adjust factors of %s(%d/%s)...\" % (stdCode, count, length))\n            stocks[exchg][code] = list()\n            df_factors = self.api.adj_factor(ts_code=ts_code)\n\n            items = list()\n            for idx, row in df_factors.iterrows():\n                date = row[\"trade_date\"]\n                factor = row[\"adj_factor\"]\n                items.append({\n                    \"date\": int(date),\n                    \"factor\": factor\n                })\n\n            items.reverse()\n            pre_factor = 0\n            for item in items:\n                if item[\"factor\"] != pre_factor:\n                    stocks[exchg][code].append(item)\n                    pre_factor = item[\"factor\"]\n\n        print(\"Writing adjust factors into database...\")\n        dbHelper.writeFactors(stocks)\n\n    def __dmp_bars_to_db_from_pro__(self, dbHelper:DBHelper, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        freq = ''\n        isDay = False\n        filetag = ''\n        if period == 'day':\n            freq = 'D'\n            isDay = True\n            filetag = 'd'\n        elif period == \"min5\":\n            freq = '5min'\n            filetag = 'm5'\n        elif period == \"min1\":\n            freq = '1min'\n            filetag = 'm1'\n        else:\n            raise Exception(\"Unrecognized period\")\n\n        if isDay:\n            start_date = start_date.strftime(\"%Y%m%d\")\n            end_date = end_date.strftime(\"%Y%m%d\")\n        else:\n            start_date = start_date.strftime(\"%Y-%m-%d\") + \" 09:00:00\"\n            end_date = end_date.strftime(\"%Y-%m-%d\") + \" 15:15:00\"\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            ts_code = transCode(stdCode)\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            asset_type = \"E\"\n            if (exchg == 'SSE' and code[0] == '0') | (exchg == 'SZSE' and code[:3] == '399'):\n                    asset_type =  \"I\"\n            elif exchg not in ['SSE','SZSE']:\n                asset_type = \"FT\"\n            count += 1\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, code, count, length))\n            df_bars = ts.pro_bar(api=self.api, ts_code=ts_code, start_date=start_date, end_date=end_date, freq=freq, asset=asset_type)\n            bars = []\n            for idx, row in df_bars.iterrows():          \n                if isDay:\n                    trade_date = row[\"trade_date\"]\n                    bars.append({\n                        \"exchange\":exchg,\n                        \"code\": code,\n                        \"date\": int(trade_date),\n                        \"time\": 0,\n                        \"open\": row[\"open\"],\n                        \"high\": row[\"high\"],\n                        \"low\": row[\"low\"],\n                        \"close\": row[\"close\"],\n                        \"volume\": row[\"vol\"]*100,\n                        \"turnover\": row[\"amount\"]*100\n                    })\n                else:\n                    trade_time = row[\"trade_time\"]\n                    date = int(trade_time.split(' ')[0].replace(\"-\",\"\"))\n                    time = int(trade_time.split(' ')[1].replace(\":\",\"\")[:4])\n                    bars.append({\n                        \"exchange\":exchg,\n                        \"code\":code,\n                        \"date\": date,\n                        \"time\": time,\n                        \"open\": row[\"open\"],\n                        \"high\": row[\"high\"],\n                        \"low\": row[\"low\"],\n                        \"close\": row[\"close\"],\n                        \"volume\": row[\"vol\"]*100,\n                        \"turnover\": row[\"amount\"]*100\n                    })\n\n            print(\"Writing bars into database...\")\n            dbHelper.writeBars(bars, period)\n\n    def __dmp_bars_to_db_from_old__(self, dbHelper:DBHelper, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if start_date is None:\n            start_date = datetime(year=1990, month=1, day=1)\n        \n        if end_date is None:\n            end_date = datetime.now()\n\n        freq = ''\n        isDay = False\n        if period == 'day':\n            freq = 'D'\n            isDay = True\n        elif period == \"min5\":\n            freq = '5'\n        else:\n            raise Exception(\"Unrecognized period\")\n\n        start_date = start_date.strftime(\"%Y-%m-%d\")\n        end_date = end_date.strftime(\"%Y-%m-%d\")\n\n        count = 0\n        length = len(codes)\n        for stdCode in codes:\n            exchg = stdCode.split(\".\")[0]\n            code = stdCode[-6:]\n            if (exchg == 'SSE' and code[0] == '0') | (exchg == 'SZSE' and code[:3] == '399'):\n                raise Exception(\"Old api only supports stocks\")\n            count += 1\n            \n            print(\"Fetching %s bars of %s(%d/%s)...\" % (period, code, count, length))\n            df_bars = ts.get_k_data(code, start=start_date, end=end_date, ktype=freq)\n            bars = []\n            for idx, row in df_bars.iterrows():          \n                if isDay:\n                    trade_date = row[\"date\"]\n                    bars.append({\n                        \"exchange\":exchg,\n                        \"code\": code,\n                        \"date\": int(trade_date.replace('-','')),\n                        \"time\": 0,\n                        \"open\": row[\"open\"],\n                        \"high\": row[\"high\"],\n                        \"low\": row[\"low\"],\n                        \"close\": row[\"close\"],\n                        \"volume\": row[\"volume\"]\n                    })\n                else:\n                    trade_time = row[\"date\"]\n                    date = int(trade_time.split(' ')[0].replace(\"-\",\"\"))\n                    time = int(trade_time.split(' ')[1].replace(\":\",\"\"))\n                    bars.append({\n                        \"exchange\":exchg,\n                        \"code\":code,\n                        \"date\": date,\n                        \"time\": time,\n                        \"open\": row[\"open\"],\n                        \"high\": row[\"high\"],\n                        \"low\": row[\"low\"],\n                        \"close\": row[\"close\"],\n                        \"volume\": row[\"volume\"]\n                    })\n\n            print(\"Writing bars into database...\")\n            dbHelper.writeBars(bars, period)\n\n    def dmpBarsToDB(self, dbHelper:DBHelper, codes:list, start_date:datetime=None, end_date:datetime=None, period:str=\"day\"):\n        if self.use_pro:\n            self.__dmp_bars_to_db_from_pro__(dbHelper=dbHelper, codes=codes, start_date=start_date, end_date=end_date, period=period)\n        else:\n            self.__dmp_bars_to_db_from_old__(dbHelper=dbHelper, codes=codes, start_date=start_date, end_date=end_date, period=period)"
  },
  {
    "path": "wtpy/apps/datahelper/__init__.py",
    "content": "from .DHFactory import DHFactory\nfrom .db.MysqlHelper import MysqlHelper\n\n__all__ = [\"DHFactory\",\"MysqlHelper\"]"
  },
  {
    "path": "wtpy/apps/datahelper/db/MysqlHelper.py",
    "content": "from wtpy.apps.datahelper.DHDefs import DBHelper\nimport pymysql\nimport math\nimport os\n\nclass MysqlHelper(DBHelper):\n    def __init__(self, host:str, user:str, pwd:str, dbname:str, port:int=3306):\n        self.params = {\n            \"host\":host,\n            'user':user,\n            'password':pwd,\n            'database':dbname,\n            'port':port\n        }\n        self.conn:pymysql.Connection = None\n    \n    def __get_conn__(self):\n        if self.conn is None:\n            self.conn = pymysql.connect(**self.params)\n        \n        try:\n            self.conn.ping()\n        except:\n            self.conn = pymysql.connect(**self.params)\n\n        return self.conn \n\n    def initDB(self):\n        paths = os.path.split(__file__)\n        a = (paths[:-1] + ('initdb_mysql.sql',))\n        _path = os.path.join(*a)\n        f = open(_path, \"r\", encoding=\"UTF-8\")\n        content = f.read()\n        f.close()\n        conn = self.__get_conn__()\n        cursor = conn.cursor()\n        items = content.split(\";\")\n        for item in items:\n            item = item.strip()\n            if len(item) == 0:\n                continue\n            cursor.execute(item+\";\")\n        conn.commit()\n        cursor.close()\n\n    def writeBars(self, bars:list, period=\"day\"):\n        count = 0\n        sql = \"\"\n        isDay = (period=='day')\n        tbname = \"tb_kline_%s\" % (period)\n        for curBar in bars:\n            if count == 0:\n                if isDay:\n                    sql = \"REPLACE INTO %s(exchange,`code`,`date`,open,high,low,close,settle,volume,turnover,interest,diff_interest) VALUES\" % (tbname)\n                else:\n                    sql = \"REPLACE INTO %s(exchange,`code`,`date`,`time`,open,high,low,close,volume,turnover,interest,diff_interest) VALUES\" % (tbname)\n            \n            if isDay:\n                subsql = \"('%s','%s',%d,%f,%f,%f,%f,\" % (curBar[\"exchange\"], curBar[\"code\"], curBar[\"date\"], curBar[\"open\"], curBar[\"high\"], curBar[\"low\"], curBar[\"close\"])\n                if \"settle\" in curBar:\n                    subsql += str(curBar[\"settle\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"volume\" in curBar:\n                    subsql += str(curBar[\"volume\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"turnover\" in curBar:\n                    subsql += str(curBar[\"turnover\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"interest\" in curBar:\n                    subsql += str(curBar[\"interest\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"diff_interest\" in curBar:\n                    subsql += str(curBar[\"diff_interest\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                subsql = subsql[:-1] + \"),\"\n                sql += subsql\n            else:\n                barTime = (curBar[\"date\"] - 19900000)*10000 + curBar[\"time\"]\n                subsql = \"('%s','%s',%d,%d,%f,%f,%f,%f,\" % (curBar[\"exchange\"], curBar[\"code\"], curBar[\"date\"], barTime, curBar[\"open\"], curBar[\"high\"], curBar[\"low\"], curBar[\"close\"])\n                if \"volume\" in curBar:\n                    subsql += str(curBar[\"volume\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"turnover\" in curBar:\n                    subsql += str(curBar[\"turnover\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"interest\" in curBar:\n                    subsql += str(curBar[\"interest\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                if \"diff_interest\" in curBar:\n                    subsql += str(curBar[\"diff_interest\"]) + \",\"\n                else:\n                    subsql += \"0,\"\n                subsql = subsql[:-1] + \"),\"\n                sql += subsql\n\n            count += 1\n            if count == 500:\n                count = 0\n                sql = sql[:-1] + \";\"\n                conn = self.__get_conn__()\n                cursor = conn.cursor()\n                cursor.execute(sql)\n                conn.commit()\n                cursor.close()\n\n        # 循环完了，再做一次提交\n        if count > 0:\n            sql = sql[:-1] + \";\"\n            conn = self.__get_conn__()\n            cursor = conn.cursor()\n            cursor.execute(sql)\n            conn.commit()\n            cursor.close()\n\n\n    def writeFactors(self, factors:dict):\n        for exchg in factors:\n            codelist = factors[exchg]\n            for code in codelist:\n                items = codelist[code]\n                sql = 'REPLACE INTO tb_adj_factors(exchange,`code`,`date`,factor) VALUES'\n                for item in items:\n                    sql += \"('%s','%s',%d,%f),\" % (exchg, code, item[\"date\"], item[\"factor\"])\n\n                sql = sql[:-1] + \";\"\n                conn = self.__get_conn__()\n                cursor = conn.cursor()\n                cursor.execute(sql)\n                conn.commit()\n                cursor.close()"
  },
  {
    "path": "wtpy/apps/datahelper/db/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/apps/datahelper/db/initdb_mysql.sql",
    "content": "CREATE TABLE IF NOT EXISTS `tb_adj_factors` (\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n  `exchange` varchar(20) NOT NULL DEFAULT '',\n  `code` varchar(32) NOT NULL DEFAULT '',\n  `date` int(10) unsigned NOT NULL DEFAULT 0,\n  `factor` double(22,12) NOT NULL DEFAULT 0.000000000000,\n  `createtime` datetime NOT NULL DEFAULT current_timestamp(),\n  `updatetime` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `exchange_code_date` (`exchange`,`code`,`date`),\n  KEY `exchange_code` (`exchange`,`code`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='除权因子表';\nCREATE TABLE IF NOT EXISTS `tb_kline_day` (\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n  `exchange` varchar(20) NOT NULL DEFAULT '',\n  `code` varchar(30) NOT NULL DEFAULT '',\n  `date` int(10) unsigned NOT NULL DEFAULT 0,\n  `open` double(22,4) NOT NULL DEFAULT 0.0000,\n  `high` double(22,4) NOT NULL DEFAULT 0.0000,\n  `low` double(22,4) NOT NULL DEFAULT 0.0000,\n  `close` double(22,4) NOT NULL DEFAULT 0.0000,\n  `settle` double(22,4) NOT NULL DEFAULT 0.0000,\n  `volume` double(22,6) unsigned NOT NULL DEFAULT 0.000000,\n  `turnover` double(22,4) NOT NULL DEFAULT 0.0000,\n  `interest` bigint(20) unsigned NOT NULL DEFAULT 0,\n  `diff_interest` bigint(20) NOT NULL DEFAULT 0,\n  `createtime` datetime NOT NULL DEFAULT current_timestamp(),\n  `updatetime` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `exchange_code_date` (`exchange`,`code`,`date`),\n  KEY `exchange_code` (`exchange`,`code`),\n  KEY `date` (`date`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='日线表';\nCREATE TABLE IF NOT EXISTS `tb_kline_min1` (\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n  `exchange` varchar(20) NOT NULL DEFAULT '',\n  `code` varchar(30) NOT NULL DEFAULT '',\n  `date` int(10) unsigned NOT NULL DEFAULT 0,\n  `time` int(10) unsigned NOT NULL DEFAULT 0,\n  `open` double(22,4) NOT NULL DEFAULT 0.0000,\n  `high` double(22,4) NOT NULL DEFAULT 0.0000,\n  `low` double(22,4) NOT NULL DEFAULT 0.0000,\n  `close` double(22,4) NOT NULL DEFAULT 0.0000,\n  `volume` double(22,6) unsigned NOT NULL DEFAULT 0.000000,\n  `turnover` double(22,4) NOT NULL DEFAULT 0.0000,\n  `interest` bigint(20) unsigned NOT NULL DEFAULT 0,\n  `diff_interest` bigint(20) NOT NULL DEFAULT 0,\n  `createtime` datetime NOT NULL DEFAULT current_timestamp(),\n  `updatetime` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `exchange_code_date_time` (`exchange`,`code`,`date`,`time`),\n  KEY `exchange_code` (`exchange`,`code`),\n  KEY `time` (`time`),\n  KEY `date` (`date`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='1分钟线表';\nCREATE TABLE IF NOT EXISTS `tb_kline_min5` (\n  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n  `exchange` varchar(20) NOT NULL DEFAULT '',\n  `code` varchar(30) NOT NULL DEFAULT '',\n  `date` int(10) unsigned NOT NULL DEFAULT 0,\n  `time` int(10) unsigned NOT NULL DEFAULT 0,\n  `open` double(22,4) NOT NULL DEFAULT 0.0000,\n  `high` double(22,4) NOT NULL DEFAULT 0.0000,\n  `low` double(22,4) NOT NULL DEFAULT 0.0000,\n  `close` double(22,4) NOT NULL DEFAULT 0.0000,\n  `volume` double(22,6) unsigned NOT NULL DEFAULT 0.000000,\n  `turnover` double(22,4) NOT NULL DEFAULT 0.0000,\n  `interest` bigint(20) unsigned NOT NULL DEFAULT 0,\n  `diff_interest` bigint(20) NOT NULL DEFAULT 0,\n  `createtime` datetime NOT NULL DEFAULT current_timestamp(),\n  `updatetime` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),\n  PRIMARY KEY (`id`) USING BTREE,\n  UNIQUE KEY `exchange_code_date_time` (`exchange`,`code`,`date`,`time`) USING BTREE,\n  KEY `exchange_code` (`exchange`,`code`),\n  KEY `date` (`date`),\n  KEY `time` (`time`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='5分钟线表';"
  },
  {
    "path": "wtpy/monitor/DataMgr.py",
    "content": "import json\nimport os\nimport sqlite3\nimport hashlib\nimport datetime\nfrom .WtLogger import WtLogger\n\ndef backup_file(filename):\n    if not os.path.exists(filename):\n        return\n\n    items = filename.split(\".\")\n    ext = items[-1]\n    prefix = \".\".join(items[:-1])\n\n    now = datetime.datetime.now()\n    timetag = now.strftime(\"%Y%m%d_%H%M%S\")\n    target = prefix + \"_\" + timetag + \".\" + ext\n    import shutil\n    shutil.copy(filename, target)\n\nclass DataMgr:\n\n    def __init__(self, datafile:str=\"mondata.db\", logger:WtLogger=None):\n        self.__grp_cache__ = dict()\n        self.__logger__ = logger\n\n        self.__db_conn__ = sqlite3.connect(datafile, check_same_thread=False)\n        self.__check_db__()\n\n        #加载组合列表\n        cur = self.__db_conn__.cursor()\n        self.__config__ = {\n            \"groups\":{},\n            \"users\":{}\n        }\n\n        for row in cur.execute(\"SELECT * FROM groups;\"):\n            grpInfo = dict()\n            grpInfo[\"id\"] = row[1]\n            grpInfo[\"name\"] = row[2]\n            grpInfo[\"path\"] = row[3]\n            grpInfo[\"info\"] = row[4]\n            grpInfo[\"gtype\"] = row[5]\n            grpInfo[\"datmod\"] = row[6]\n            grpInfo[\"env\"] = row[7]\n            grpInfo[\"mqurl\"] = row[8]\n            self.__config__[\"groups\"][grpInfo[\"id\"]] = grpInfo\n\n        for row in cur.execute(\"SELECT * FROM users;\"):\n            usrInfo = dict()\n            usrInfo[\"loginid\"] = row[1]\n            usrInfo[\"name\"] = row[2]\n            usrInfo[\"role\"] = row[3]\n            usrInfo[\"passwd\"] = row[4]\n            usrInfo[\"iplist\"] = row[5]\n            usrInfo[\"remark\"] = row[6]\n            usrInfo[\"createby\"] = row[7]\n            usrInfo[\"createtime\"] = row[8]\n            usrInfo[\"modifyby\"] = row[9]\n            usrInfo[\"modifytime\"] = row[10]\n            self.__config__[\"users\"][usrInfo[\"loginid\"]] = usrInfo\n\n    def get_db(self):\n        return self.__db_conn__\n\n    def __check_db__(self):\n        if self.__db_conn__ is None:\n            return\n\n        cur = self.__db_conn__.cursor()\n        tables = []\n        for row in cur.execute(\"select name from sqlite_master where type='table' order by name\"):\n            tables.append(row[0])\n        \n        if \"actions\" not in tables:\n            sql = \"CREATE TABLE [actions] (\\n\"\n            sql += \"[id] INTEGER PRIMARY KEY autoincrement, \\n\"\n            sql += \"[loginid] VARCHAR(20) NOT NULL DEFAULT '', \\n\"\n            sql += \"[actiontime] DATETIME default (datetime('now', 'localtime')), \\n\"\n            sql += \"[actionip] VARCHAR(30) NOT NULL DEFAULT '', \\n\"\n            sql += \"[actiontype] VARCHAR(20) NOT NULL DEFAULT '',\\n\"\n            sql += \"[remark] TEXT default '');\"\n            cur.execute(sql)\n            cur.execute(\"CREATE INDEX [idx_actions_loginid] ON [actions] ([loginid]);\")\n            cur.execute(\"CREATE INDEX [idx_actions_actiontime] ON [actions] ([actiontime]);\")\n            self.__db_conn__.commit()\n\n        if \"groups\" not in tables:\n            sql = \"CREATE TABLE [groups] (\\n\"\n            sql += \"[id] INTEGER PRIMARY KEY autoincrement,\\n\"\n            sql += \"[groupid] VARCHAR(20) NOT NULL DEFAULT '',\\n\"\n            sql += \"[name] VARCHAR(30) NOT NULL DEFAULT '',\\n\"\n            sql += \"[path] VARCHAR(256) NOT NULL DEFAULT '',\\n\"\n            sql += \"[info] TEXT DEFAULT '',\\n\"\n            sql += \"[gtype] VARCHAR(10) NOT NULL DEFAULT 'cta',\\n\"\n            sql += \"[datmod] VARCHAR(10) NOT NULL DEFAULT 'mannual',\\n\"\n            sql += \"[env] VARCHAR(20) NOT NULL DEFAULT 'product',\\n\"\n            sql += \"[mqurl] VARCHAR(255) NOT NULL DEFAULT '',\\n\"\n            sql += \"[createtime] DATETIME default (datetime('now', 'localtime')),\\n\"\n            sql += \"[modifytime] DATETIME default (datetime('now', 'localtime')));\"\n            cur.execute(sql)\n            cur.execute(\"CREATE UNIQUE INDEX [idx_groupid] ON [groups] ([groupid]);\")\n            self.__db_conn__.commit()\n\n        if \"schedules\" not in tables:\n            sql = \"CREATE TABLE [schedules] (\\n\"\n            sql += \"[id] INTEGER PRIMARY KEY autoincrement,\\n\"\n            sql += \"[appid] VARCHAR(20) NOT NULL DEFAULT '',\\n\"\n            sql += \"[path] VARCHAR(256) NOT NULL DEFAULT '',\\n\"\n            sql += \"[folder] VARCHAR(256) NOT NULL DEFAULT '',\\n\"\n            sql += \"[param] VARCHAR(50) NOT NULL DEFAULT '',\\n\"\n            sql += \"[type] INTEGER DEFAULT 0,\\n\"\n            sql += \"[span] INTEGER DEFAULT 3,\\n\"\n            sql += \"[guard] VARCHAR(20) DEFAULT 'false',\\n\"\n            sql += \"[redirect] VARCHAR(20) DEFAULT 'false',\\n\"\n            sql += \"[schedule] VARCHAR(20) DEFAULT 'false',\\n\"\n            sql += \"[weekflag] VARCHAR(20) DEFAULT '000000',\\n\"\n            sql += \"[mqurl] VARCHAR(255) NOT NULL DEFAULT '',\\n\"\n            sql += \"[task1] VARCHAR(100) NOT NULL DEFAULT '{\\\"active\\\": true,\\\"time\\\": 0,\\\"action\\\": 0}',\\n\"\n            sql += \"[task2] VARCHAR(100) NOT NULL DEFAULT '{\\\"active\\\": true,\\\"time\\\": 0,\\\"action\\\": 0}',\\n\"\n            sql += \"[task3] VARCHAR(100) NOT NULL DEFAULT '{\\\"active\\\": true,\\\"time\\\": 0,\\\"action\\\": 0}',\\n\"\n            sql += \"[task4] VARCHAR(100) NOT NULL DEFAULT '{\\\"active\\\": true,\\\"time\\\": 0,\\\"action\\\": 0}',\\n\"\n            sql += \"[task5] VARCHAR(100) NOT NULL DEFAULT '{\\\"active\\\": true,\\\"time\\\": 0,\\\"action\\\": 0}',\\n\"\n            sql += \"[task6] VARCHAR(100) NOT NULL DEFAULT '{\\\"active\\\": true,\\\"time\\\": 0,\\\"action\\\": 0}',\\n\"\n            sql += \"[createtime] DATETIME default (datetime('now', 'localtime')),\\n\"\n            sql += \"[modifytime] DATETIME default (datetime('now', 'localtime')));\"\n            cur.execute(sql)\n            cur.execute(\"CREATE UNIQUE INDEX [idx_appid] ON [schedules] ([appid]);\")\n            self.__db_conn__.commit()\n\n        if \"users\" not in tables:\n            sql = \"CREATE TABLE [users] (\\n\"\n            sql += \"[id] INTEGER PRIMARY KEY autoincrement,\\n\"\n            sql += \"[loginid] VARCHAR(20) NOT NULL DEFAULT '',\\n\"\n            sql += \"[name] VARCHAR(30) NOT NULL DEFAULT '',\\n\"\n            sql += \"[role] VARCHAR(10) NOT NULL DEFAULT '',\\n\"\n            sql += \"[passwd] VARCHAR(30) NOT NULL DEFAULT 'cta',\\n\"\n            sql += \"[iplist] VARCHAR(100) NOT NULL DEFAULT 'mannual',\\n\"\n            sql += \"[remark] VARCHAR(256) NOT NULL DEFAULT '',\\n\"\n            sql += \"[createby] VARCHAR(20) NOT NULL DEFAULT '',\\n\"\n            sql += \"[createtime] DATETIME default (datetime('now', 'localtime')),\\n\"\n            sql += \"[modifyby] VARCHAR(20) NOT NULL DEFAULT '',\\n\"\n            sql += \"[modifytime] DATETIME default (datetime('now', 'localtime')));\"\n            cur.execute(sql)\n            cur.execute(\"CREATE UNIQUE INDEX [idx_loginid] ON [users] ([loginid]);\")\n            self.__db_conn__.commit()\n\n    def __check_cache__(self, grpid, grpInfo):\n        now = datetime.datetime.now()\n        if grpid not in self.__grp_cache__:\n            self.__grp_cache__[grpid] = dict()\n            self.__grp_cache__[grpid][\"cachetime\"] = None\n        else:\n            cache_time = self.__grp_cache__[grpid][\"cachetime\"]\n            bNeedReset = False\n            if cache_time is None:\n                bNeedReset = True\n            else:\n                td = now - cache_time\n                if td.total_seconds() >= 60:# 上次缓存时间超过60s，则重新读取\n                    bNeedReset = True\n\n            if bNeedReset:\n                self.__grp_cache__[grpid] = dict()\n                self.__grp_cache__[grpid][\"cachetime\"] = None\n\n        if \"strategies\" not in self.__grp_cache__[grpid]:\n            filepath = \"./generated/marker.json\"\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                try:\n                    f = open(filepath, \"r\")\n                    content = f.read()\n                    marker = json.loads(content)\n                    f.close()\n\n                    self.__grp_cache__[grpid] = {\n                        \"strategies\":marker[\"marks\"],\n                        \"channels\":marker[\"channels\"]\n                    } \n\n                    if \"executers\" in marker:\n                        self.__grp_cache__[grpid][\"executers\"] = marker[\"executers\"]\n                    else:\n                        self.__grp_cache__[grpid][\"executers\"] = []\n\n                except:\n                    self.__grp_cache__[grpid] = {\n                        \"strategies\":[],\n                        \"channels\":[],\n                        \"executers\":[]\n                    } \n            self.__grp_cache__[grpid][\"strategies\"].sort()\n            self.__grp_cache__[grpid][\"channels\"].sort()\n            self.__grp_cache__[grpid][\"executers\"].sort()\n            self.__grp_cache__[grpid][\"cachetime\"] = now\n\n    def get_groups(self, tpfilter:str=''):\n        ret = []\n        for grpid in self.__config__[\"groups\"]:\n            grpinfo = self.__config__[\"groups\"][grpid]\n            if tpfilter == '':\n                ret.append(grpinfo)\n            elif grpinfo[\"gtype\"] == tpfilter:\n                ret.append(grpinfo)\n        \n        return ret\n\n    def has_group(self, grpid:str):\n        return (grpid in self.__config__[\"groups\"])\n\n    def get_group(self, grpid:str):\n        if grpid in self.__config__[\"groups\"]:\n            return self.__config__[\"groups\"][grpid]\n        else:\n            return None\n\n    def get_group_cfg(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return \"{}\"\n        else:\n            grpInfo = self.__config__[\"groups\"][grpid]\n            filepath = \"./config.json\"\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            f = open(filepath, \"r\")\n            content = f.read()\n            f.close()\n            return json.loads(content)\n\n    def set_group_cfg(self, grpid:str, config:dict):\n        if grpid not in self.__config__[\"groups\"]:\n            return False\n        else:\n            grpInfo = self.__config__[\"groups\"][grpid]\n            filepath = \"./config.json\"\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            backup_file(filepath)\n            f = open(filepath, \"w\")\n            f.write(json.dumps(config, indent=4))\n            f.close()\n            return True\n\n    def get_group_entry(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return \"{}\"\n        else:\n            grpInfo = self.__config__[\"groups\"][grpid]\n            filepath = \"./run.py\"\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            f = open(filepath, \"r\", encoding=\"utf-8\")\n            content = f.read()\n            f.close()\n            return content\n\n    def set_group_entry(self, grpid:str, content:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return False\n        else:\n            grpInfo = self.__config__[\"groups\"][grpid]\n            filepath = \"./run.py\"\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            backup_file(filepath)\n            f = open(filepath, \"w\", encoding=\"utf-8\")\n            f.write(content)\n            f.close()\n            return True\n\n    def add_group(self, grpInfo:dict):\n        grpid = grpInfo[\"id\"]\n        isNewGrp = not (grpid in self.__config__[\"groups\"])\n\n        bSucc = False\n        try:\n            cur = self.__db_conn__.cursor()\n            sql = ''\n            if isNewGrp:\n                sql = \"INSERT INTO groups(groupid,name,path,info,gtype,datmod,env,mqurl) VALUES('%s','%s','%s','%s','%s','%s','%s','%s');\" \\\n                    % (grpid, grpInfo[\"name\"], grpInfo[\"path\"], grpInfo[\"info\"], grpInfo[\"gtype\"], grpInfo[\"datmod\"], grpInfo[\"env\"], grpInfo[\"mqurl\"])\n            else:\n                sql = \"UPDATE groups SET name='%s',path='%s',info='%s',gtype='%s',datmod='%s',env='%s',mqurl='%s',modifytime=datetime('now','localtime') WHERE groupid='%s';\" \\\n                    % (grpInfo[\"name\"], grpInfo[\"path\"], grpInfo[\"info\"], grpInfo[\"gtype\"], grpInfo[\"datmod\"], grpInfo[\"env\"], grpInfo[\"mqurl\"], grpid)\n            cur.execute(sql)\n            self.__db_conn__.commit()\n            bSucc = True\n        except sqlite3.Error as e:\n            print(e)\n\n        if bSucc:\n            self.__config__[\"groups\"][grpid] = grpInfo\n\n        return bSucc\n\n    def del_group(self, grpid:str):\n        if grpid in self.__config__[\"groups\"]:\n            self.__config__[\"groups\"].pop(grpid)\n            \n            cur = self.__db_conn__.cursor()\n            cur.execute(\"DELETE FROM groups WHERE groupid='%s';\" % (grpid))\n            self.__db_conn__.commit()\n\n    def get_users(self):\n        ret = []\n        for loginid in self.__config__[\"users\"]:\n            usrInfo = self.__config__[\"users\"][loginid]\n            ret.append(usrInfo.copy())                \n        \n        return ret\n\n    def add_user(self, usrInfo, admin):\n        loginid = usrInfo[\"loginid\"]\n        isNewUser = not (loginid in self.__config__[\"users\"])\n\n        cur = self.__db_conn__.cursor()\n        now = datetime.datetime.now()\n        if isNewUser:\n            encpwd = hashlib.md5((loginid+usrInfo[\"passwd\"]).encode(\"utf-8\")).hexdigest()\n            usrInfo[\"passwd\"] = encpwd\n            usrInfo[\"createby\"] = admin\n            usrInfo[\"modifyby\"] = admin\n            usrInfo[\"createtime\"] = now.strftime(\"%Y-%m-%d %H:%M:%S\")\n            usrInfo[\"modifytime\"] = now.strftime(\"%Y-%m-%d %H:%M:%S\")\n            cur.execute(\"INSERT INTO users(loginid,name,role,passwd,iplist,remark,createby,modifyby) VALUES(?,?,?,?,?,?,?,?);\", \n                (loginid, usrInfo[\"name\"], usrInfo[\"role\"], encpwd, usrInfo[\"iplist\"], usrInfo[\"remark\"], admin, admin))\n        else:\n            usrInfo[\"modifyby\"] = admin\n            usrInfo[\"modifytime\"] = now.strftime(\"%Y-%m-%d %H:%M:%S\")\n            cur.execute(\"UPDATE users SET name=?,role=?,iplist=?,remark=?,modifyby=?,modifytime=datetime('now','localtime') WHERE loginid=?;\", \n                (usrInfo[\"name\"], usrInfo[\"role\"], usrInfo[\"iplist\"], usrInfo[\"remark\"], admin, loginid))\n        self.__db_conn__.commit()\n\n        self.__config__[\"users\"][loginid] = usrInfo\n\n    def mod_user_pwd(self, loginid:str, newpwd:str, admin:str):\n        cur = self.__db_conn__.cursor()\n        cur.execute(\"UPDATE users SET passwd=?,modifyby=?,modifytime=datetime('now','localtime') WHERE loginid=?;\", \n                (newpwd,admin,loginid))\n        self.__db_conn__.commit()\n        self.__config__[\"users\"][loginid][\"passwd\"]=newpwd\n\n\n    def del_user(self, loginid, admin):\n        if loginid in self.__config__[\"users\"]:\n            self.__config__[\"users\"].pop(loginid)\n            \n            cur = self.__db_conn__.cursor()\n            cur.execute(\"DELETE FROM users WHERE loginid='%s';\" % (loginid))\n            self.__db_conn__.commit()\n            return True\n        else:\n            return False\n\n    def log_action(self, adminInfo, atype, remark):\n        cur = self.__db_conn__.cursor()\n        sql = \"INSERT INTO actions(loginid,actiontime,actionip,actiontype,remark) VALUES('%s',datetime('now','localtime'),'%s','%s','%s');\" % (\n                adminInfo[\"loginid\"], adminInfo[\"loginip\"], atype, remark)\n        cur.execute(sql)\n        self.__db_conn__.commit()\n\n    def get_user(self, loginid:str):\n        if loginid in self.__config__[\"users\"]:\n            return self.__config__[\"users\"][loginid].copy()\n        elif loginid == 'superman':\n            return {\n                \"loginid\":loginid,\n                \"name\":\"超管\",\n                \"role\":\"superman\",\n                \"passwd\":\"25ed305a56504e95fd1ca9900a1da174\",\n                \"iplist\":\"\",\n                \"remark\":\"内置超管账号\",\n                'builtin':True\n            }\n        else:\n            return None\n\n    def get_strategies(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n        \n        return self.__grp_cache__[grpid][\"strategies\"]\n\n    def get_channels(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n        \n        return self.__grp_cache__[grpid][\"channels\"]\n\n    def get_trades(self, grpid:str, straid:str, limit:int = 200):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        if straid not in self.__grp_cache__[grpid][\"strategies\"]:\n            return []\n\n        if \"trades\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"trades\"] = dict()\n        \n        if straid not in self.__grp_cache__[grpid][\"trades\"]:\n            filepath = \"./generated/outputs/%s/trades.csv\" % (straid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                trdCache = dict()\n                trdCache[\"file\"] = filepath\n                trdCache[\"lastrow\"] = 0\n                trdCache[\"trades\"] = list()\n                self.__grp_cache__[grpid][\"trades\"][straid] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"trades\"][straid]\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n            if len(cells) > 10:\n                continue\n\n            tItem = {\n                \"strategy\":straid,\n                \"code\": cells[0],\n                \"time\": int(cells[1]),\n                \"direction\": cells[2],\n                \"offset\": cells[3],\n                \"price\": float(cells[4]),\n                \"volume\": float(cells[5]),\n                \"tag\": cells[6],\n                \"fee\": 0\n            }\n\n            if len(cells) > 7:\n                tItem[\"fee\"] = float(cells[7])\n\n            trdCache[\"trades\"].append(tItem)\n            trdCache[\"lastrow\"] += 1\n        \n        return trdCache[\"trades\"][-limit:]\n\n    def get_funds(self, grpid:str, straid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        if straid not in self.__grp_cache__[grpid][\"strategies\"]:\n            return []\n\n        if \"funds\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"funds\"] = dict()\n        \n        if straid not in self.__grp_cache__[grpid][\"funds\"]:\n            filepath = \"./generated/outputs/%s/funds.csv\" % (straid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                trdCache = dict()\n                trdCache[\"file\"] = filepath\n                trdCache[\"lastrow\"] = 0\n                trdCache[\"funds\"] = list()\n                self.__grp_cache__[grpid][\"funds\"][straid] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"funds\"][straid]\n\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n            if len(cells) > 10:\n                continue\n\n            tItem = {\n                \"strategy\":straid,\n                \"date\": int(cells[0]),\n                \"closeprofit\": float(cells[1]),\n                \"dynprofit\": float(cells[2]),\n                \"dynbalance\": float(cells[3]),\n                \"fee\": 0\n            }\n\n            if len(cells) > 4:\n                tItem[\"fee\"] = float(cells[4])\n\n            trdCache[\"funds\"].append(tItem)\n            trdCache[\"lastrow\"] += 1\n\n        ret = trdCache[\"funds\"].copy()\n\n        if len(ret) > 0:\n            last_date = ret[-1][\"date\"]\n        else:\n            last_date = 0\n\n        # 这里再更新一条实时数据\n        filepath = \"./generated/stradata/%s.json\" % (straid)\n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        f = open(filepath, \"r\")\n        try:\n            content = f.read()\n            json_data = json.loads(content)\n            fund = json_data[\"fund\"]\n            if fund[\"tdate\"] > last_date:\n                ret.append({\n                    \"strategy\":straid,\n                    \"date\": fund[\"tdate\"],\n                    \"closeprofit\": fund[\"total_profit\"],\n                    \"dynprofit\": fund[\"total_dynprofit\"],\n                    \"dynbalance\": fund[\"total_profit\"] + fund[\"total_dynprofit\"] - fund[\"total_fees\"],\n                    \"fee\": fund[\"total_fees\"]\n                })\n        except:\n            pass\n        f.close()\n        \n        return ret\n\n    def get_signals(self, grpid:str, straid:str, limit:int = 200):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        if straid not in self.__grp_cache__[grpid][\"strategies\"]:\n            return []\n\n        if \"signals\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"signals\"] = dict()\n        \n        if straid not in self.__grp_cache__[grpid][\"signals\"]:\n            filepath = \"./generated/outputs/%s/signals.csv\" % (straid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                trdCache = dict()\n                trdCache[\"file\"] = filepath\n                trdCache[\"lastrow\"] = 0\n                trdCache[\"signals\"] = list()\n                self.__grp_cache__[grpid][\"signals\"][straid] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"signals\"][straid]\n\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"strategy\":straid,\n                \"code\": cells[0],\n                \"target\": float(cells[1]),\n                \"sigprice\": float(cells[2]),\n                \"gentime\": cells[3],\n                \"tag\": cells[4]\n            }\n\n            trdCache[\"signals\"].append(tItem)\n\n        trdCache[\"lastrow\"] += len(lines)        \n        return trdCache[\"signals\"][-limit:]\n\n    def get_rounds(self, grpid:str, straid:str, limit:int = 200):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        if straid not in self.__grp_cache__[grpid][\"strategies\"]:\n            return []\n\n        if \"rounds\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"rounds\"] = dict()\n        \n        if straid not in self.__grp_cache__[grpid][\"rounds\"]:\n            filepath = \"./generated/outputs/%s/closes.csv\" % (straid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                trdCache = dict()\n                trdCache[\"file\"] = filepath\n                trdCache[\"lastrow\"] = 0\n                trdCache[\"rounds\"] = list()\n                self.__grp_cache__[grpid][\"rounds\"][straid] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"rounds\"][straid]\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"strategy\":straid,\n                \"code\": cells[0],\n                \"direct\": cells[1],\n                \"opentime\": int(cells[2]),\n                \"openprice\": float(cells[3]),\n                \"closetime\": int(cells[4]),\n                \"closeprice\": float(cells[5]),\n                \"qty\": float(cells[6]),\n                \"profit\": float(cells[7]),\n                \"entertag\": cells[9],\n                \"exittag\": cells[10]\n            }\n\n            trdCache[\"rounds\"].append(tItem)\n        trdCache[\"lastrow\"] += len(lines)\n        \n        return trdCache[\"rounds\"][-limit:]\n\n    def get_positions(self, grpid:str, straid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        ret = list()\n        if straid != \"all\":\n            if straid not in self.__grp_cache__[grpid][\"strategies\"]:\n                return []\n            \n            filepath = \"./generated/stradata/%s.json\" % (straid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            \n            f = open(filepath, \"r\")\n            try:\n                content = f.read()\n                json_data = json.loads(content)\n\n                positions = json_data[\"positions\"]\n                for pItem in positions:\n                    tag = \"volumn\" if \"volume\" not in pItem else \"volume\"\n                    if pItem[tag] == 0.0:\n                        continue\n\n                    for dItem in pItem[\"details\"]:\n                        dItem[\"code\"] = pItem[\"code\"]\n                        dItem[\"strategy\"] = straid\n                        if \"volumn\" in dItem:\n                            dItem[\"volume\"] = dItem[\"volumn\"]\n                            dItem.pop(\"volumn\")\n                        ret.append(dItem)\n            except:\n                pass\n\n            f.close()\n        else:\n            for straid in self.__grp_cache__[grpid][\"strategies\"]:\n                filepath = \"./generated/stradata/%s.json\" % (straid)\n                filepath = os.path.join(grpInfo[\"path\"], filepath)\n                if not os.path.exists(filepath):\n                    return []\n                \n                f = open(filepath, \"r\")\n                try:\n                    content = f.read()\n                    json_data = json.loads(content)\n\n                    positions = json_data[\"positions\"]\n                    for pItem in positions:\n                        tag = \"volumn\" if \"volume\" not in pItem else \"volume\"\n                        if pItem[tag] == 0.0:\n                            continue\n\n                        for dItem in pItem[\"details\"]:\n                            dItem[\"code\"] = pItem[\"code\"]\n                            dItem[\"strategy\"] = straid\n                            if \"volumn\" in dItem:\n                                dItem[\"volume\"] = dItem[\"volumn\"]\n                                dItem.pop(\"volumn\")\n                            ret.append(dItem)\n                except:\n                    pass\n\n                f.close()\n        return ret\n\n    def get_channel_orders(self, grpid:str, chnlid:str, limit:int = 200):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        if chnlid not in self.__grp_cache__[grpid][\"channels\"]:\n            return []\n\n        if \"corders\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"corders\"] = dict()\n        \n        if chnlid not in self.__grp_cache__[grpid][\"corders\"]:\n            filepath = \"./generated/traders/%s/orders.csv\" % (chnlid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                trdCache = dict()\n                trdCache[\"file\"] = filepath\n                trdCache[\"lastrow\"] = 0\n                trdCache[\"corders\"] = list()\n                self.__grp_cache__[grpid][\"corders\"][chnlid] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"corders\"][chnlid]\n\n        f = open(trdCache[\"file\"], \"r\",encoding=\"gb2312\",errors=\"ignore\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"channel\":chnlid,\n                \"localid\":int(cells[0]),\n                \"time\":int(cells[2]),\n                \"code\": cells[3],\n                \"action\": cells[4],\n                \"total\": float(cells[5]),\n                \"traded\": float(cells[6]),\n                \"price\": float(cells[7]),\n                \"orderid\": cells[8],\n                \"canceled\": cells[9],\n                \"remark\": cells[10]\n            }\n\n            trdCache[\"corders\"].append(tItem)\n        \n        return trdCache[\"corders\"][-limit:]\n\n    def get_channel_trades(self, grpid:str, chnlid:str, limit:int = 200):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        if chnlid not in self.__grp_cache__[grpid][\"channels\"]:\n            return []\n\n        if \"ctrades\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"ctrades\"] = dict()\n        \n        if chnlid not in self.__grp_cache__[grpid][\"ctrades\"]:\n            filepath = \"./generated/traders/%s/trades.csv\" % (chnlid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            else:\n                trdCache = dict()\n                trdCache[\"file\"] = filepath\n                trdCache[\"lastrow\"] = 0\n                trdCache[\"ctrades\"] = list()\n                self.__grp_cache__[grpid][\"ctrades\"][chnlid] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"ctrades\"][chnlid]\n\n        f = open(trdCache[\"file\"], \"r\",encoding=\"gb2312\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"channel\":chnlid,\n                \"localid\":int(cells[0]),\n                \"time\":int(cells[2]),\n                \"code\": cells[3],\n                \"action\": cells[4],\n                \"volume\": float(cells[5]),\n                \"price\": float(cells[6]),\n                \"tradeid\": cells[7],\n                \"orderid\": cells[8]\n            }\n\n            trdCache[\"ctrades\"].append(tItem)\n        \n        return trdCache[\"ctrades\"][-limit:]\n\n    def get_channel_positions(self, grpid:str, chnlid:str):\n        if self.__config__ is None:\n            return []\n\n        if \"groups\" not in self.__config__:\n            return []\n\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        ret = list()\n        channels = list()\n        if chnlid != 'all':\n            channels.append(chnlid)\n        else:\n            channels = self.__grp_cache__[grpid][\"channels\"]\n\n        for cid in channels:\n            if cid not in self.__grp_cache__[grpid][\"channels\"]:\n                continue\n            \n            filepath = \"./generated/traders/%s/rtdata.json\" % (cid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                return []\n            \n            f = open(filepath, \"r\")\n            try:\n                content = f.read()\n                json_data = json.loads(content)\n\n                positions = json_data[\"positions\"]\n                for pItem in positions:\n                    pItem[\"channel\"] = cid\n                    ret.append(pItem)\n            except:\n                pass\n\n            f.close()\n        return ret\n\n    def get_channel_funds(self, grpid:str, chnlid:str):\n        if self.__config__ is None:\n            return []\n\n        if \"groups\" not in self.__config__:\n            return []\n\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n            \n        ret = dict()\n        channels = list()\n        if chnlid != 'all':\n            channels.append(chnlid)\n        else:\n            channels = self.__grp_cache__[grpid][\"channels\"]\n            print(channels)\n\n        for cid in channels:\n            if cid not in self.__grp_cache__[grpid][\"channels\"]:\n                continue\n            \n            filepath = \"./generated/traders/%s/rtdata.json\" % (cid)\n            filepath = os.path.join(grpInfo[\"path\"], filepath)\n            if not os.path.exists(filepath):\n                continue\n            \n            f = open(filepath, \"r\")\n            try:\n                content = f.read()\n                json_data = json.loads(content)\n\n                funds = json_data[\"funds\"]\n                ret[cid] = funds\n            except:\n                pass\n\n            f.close()\n        print(ret)\n        return ret\n\n    def get_actions(self, sdate, edate):\n        ret = list()\n\n        cur = self.__db_conn__.cursor()\n        for row in cur.execute(\"SELECT id,loginid,actiontime,actionip,actiontype,remark FROM actions WHERE actiontime>=? and actiontime<=?;\", (sdate, edate)):\n            aInfo = dict()\n            aInfo[\"id\"] = row[0]\n            aInfo[\"loginid\"] = row[1]\n            aInfo[\"actiontime\"] = row[2]\n            aInfo[\"actionip\"] = row[3]\n            aInfo[\"action\"] = row[4]\n            aInfo[\"remark\"] = row[5]\n\n            ret.append(aInfo)\n\n        return ret\n\n    def get_group_trades(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n\n        if \"grptrades\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"grptrades\"] = dict()\n        \n        filepath = \"./generated/portfolio/trades.csv\"\n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        print(filepath)\n        if not os.path.exists(filepath):\n            return []\n        else:\n            trdCache = dict()\n            trdCache[\"file\"] = filepath\n            trdCache[\"lastrow\"] = 0\n            trdCache[\"trades\"] = list()\n            self.__grp_cache__[grpid][\"grptrades\"][\"cache\"] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"grptrades\"]['cache']\n\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n        print(lines)\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"code\": cells[0],\n                \"time\": int(cells[1]),\n                \"direction\": cells[2],\n                \"offset\": cells[3],\n                \"price\": float(cells[4]),\n                \"volume\": float(cells[5]),\n                \"fee\": float(cells[6])\n            }\n\n            trdCache[\"trades\"].append(tItem)\n            trdCache[\"lastrow\"] += 1\n        \n        return trdCache[\"trades\"]\n\n    def get_group_rounds(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n\n        if \"grprounds\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"grprounds\"] = dict()\n        \n        filepath = \"./generated/portfolio/closes.csv\"\n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        if not os.path.exists(filepath):\n            return []\n        else:\n            trdCache = dict()\n            trdCache[\"file\"] = filepath\n            trdCache[\"lastrow\"] = 0\n            trdCache[\"rounds\"] = list()\n            self.__grp_cache__[grpid][\"grprounds\"][\"cache\"] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"grprounds\"]['cache']\n\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n        print(lines)\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"code\": cells[0],\n                \"direct\": cells[1],\n                \"opentime\": int(cells[2]),\n                \"openprice\": float(cells[3]),\n                \"closetime\": int(cells[4]),\n                \"closeprice\": float(cells[5]),\n                \"qty\": float(cells[6]),\n                \"profit\": float(cells[7])\n            }\n\n            trdCache[\"rounds\"].append(tItem)\n            trdCache[\"lastrow\"] += 1\n        \n        return trdCache[\"rounds\"]\n\n    def get_group_funds(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n\n        if \"grpfunds\" not in self.__grp_cache__[grpid]:\n            self.__grp_cache__[grpid][\"grpfunds\"] = dict()\n        \n        filepath = \"./generated/portfolio/funds.csv\"\n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        if not os.path.exists(filepath):\n            return []\n        else:\n            trdCache = dict()\n            trdCache[\"file\"] = filepath\n            trdCache[\"lastrow\"] = 0\n            trdCache[\"funds\"] = list()\n            self.__grp_cache__[grpid][\"grpfunds\"][\"cache\"] = trdCache\n\n        trdCache = self.__grp_cache__[grpid][\"grpfunds\"]['cache']\n\n        f = open(trdCache[\"file\"], \"r\")\n        last_row = trdCache[\"lastrow\"]\n        lines = f.readlines()\n        f.close()\n        lines = lines[1+last_row:]\n\n        for line in lines:\n            cells = line.split(\",\")\n\n            tItem = {\n                \"date\": int(cells[0]),\n                \"predynbalance\": float(cells[1]),\n                \"prebalance\": float(cells[2]),\n                \"balance\": float(cells[3]),\n                \"closeprofit\": float(cells[4]),\n                \"dynprofit\": float(cells[5]),\n                \"fee\": float(cells[6]),\n                \"maxdynbalance\": float(cells[7]),\n                \"maxtime\": float(cells[8]),\n                \"mindynbalance\": float(cells[9]),\n                \"mintime\": float(cells[10]),\n                \"mdmaxbalance\": float(cells[11]),\n                \"mdmaxdate\": float(cells[12]),\n                \"mdminbalance\": float(cells[13]),\n                \"mdmindate\": float(cells[14])\n            }\n\n            trdCache[\"funds\"].append(tItem)\n            trdCache[\"lastrow\"] += 1\n        \n        ret = trdCache[\"funds\"].copy()\n\n        if len(ret) > 0:\n            last_date = ret[-1][\"date\"]\n        else:\n            last_date = 0\n\n        # 这里再更新一条实时数据\n        filepath = \"./generated/portfolio/datas.json\"\n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        f = open(filepath, \"r\")\n        try:\n            content = f.read()\n            json_data = json.loads(content)\n            fund = json_data[\"fund\"]\n            if [\"date\"] > last_date:\n                ret.append({\n                    \"date\": fund[\"date\"],\n                    \"predynbalance\": fund[\"predynbal\"],\n                    \"prebalance\": fund[\"prebalance\"],\n                    \"balance\": fund[\"balance\"],\n                    \"closeprofit\": fund[\"profit\"],\n                    \"dynprofit\": fund[\"dynprofit\"],\n                    \"fee\": fund[\"fees\"],\n                    \"maxdynbalance\": fund[\"max_dyn_bal\"],\n                    \"maxtime\": fund[\"max_time\"],\n                    \"mindynbalance\": fund[\"min_dyn_bal\"],\n                    \"mintime\": fund[\"min_time\"],\n                    \"mdmaxbalance\": fund[\"maxmd\"][\"dyn_balance\"],\n                    \"mdmaxdate\": fund[\"maxmd\"][\"date\"],\n                    \"mdminbalance\": fund[\"minmd\"][\"dyn_balance\"],\n                    \"mdmindate\": fund[\"minmd\"][\"date\"]\n                })\n        except:\n            pass\n        f.close()\n        return ret\n\n    def get_group_positions(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return []\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n        \n        filepath = \"./generated/portfolio/datas.json\"\n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        if not os.path.exists(filepath):\n            return []\n        else:\n            ret = list()\n            f = open(filepath, \"r\")\n            try:\n                content = f.read()\n                json_data = json.loads(content)\n\n                positions = json_data[\"positions\"]\n                for pItem in positions:\n                    if pItem[\"volume\"] == 0:\n                        continue\n\n                    for dItem in pItem[\"details\"]:\n                        dItem[\"code\"] = pItem[\"code\"]\n                        ret.append(dItem)\n            except:\n                pass\n\n            f.close()\n            return ret\n\n    def get_group_performances(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return {}\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n        \n        filepath = \"./generated/portfolio/datas.json\" \n        filepath = os.path.join(grpInfo[\"path\"], filepath)\n        if not os.path.exists(filepath):\n            return {}\n        else:\n            perf = dict()\n            f = open(filepath, \"r\")\n            try:\n                content = f.read()\n                json_data = json.loads(content)\n\n                positions = json_data[\"positions\"]\n                for pItem in positions:\n                    code = pItem['code']\n                    ay = code.split(\".\")\n                    pid = code\n                    if len(ay) > 2:\n                        if ay[1] not in ['IDX','STK','ETF']:\n                            pid = ay[0] + \".\" + ay[1]\n                        else:\n                            pid = ay[0] + \".\" + ay[2]\n\n                    if pid not in perf:\n                        perf[pid] = {\n                            'closeprofit':0,\n                            'dynprofit':0\n                        }\n\n                    perf[pid]['closeprofit'] += pItem['closeprofit']\n                    perf[pid]['dynprofit'] += pItem['dynprofit']\n                    \n            except:\n                pass\n\n            f.close()\n            return perf\n\n    def get_group_filters(self, grpid:str):\n        if grpid not in self.__config__[\"groups\"]:\n            return {}\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n        \n        filepath = os.path.join(grpInfo[\"path\"], 'filters.json')\n        if not os.path.exists(filepath):\n            filters = {}\n        else:\n            filters = {}\n            f = open(filepath, \"r\")\n            try:\n                content = f.read()\n                filters = json.loads(content)\n            except:\n                pass\n\n            f.close()\n\n        gpCache = self.__grp_cache__[grpid]\n        if \"executer_filters\" not in filters:\n            filters[\"executer_filters\"] = dict()\n        if \"strategy_filters\" not in filters:\n            filters[\"strategy_filters\"] = dict()\n        if \"code_filters\" not in filters:\n            filters[\"code_filters\"] = dict()\n\n        for sid in gpCache[\"strategies\"]:\n            if sid not in filters['strategy_filters']:\n                filters['strategy_filters'][sid] = False\n        \n        for eid in gpCache[\"executers\"]:\n            if eid not in filters['executer_filters']:\n                filters['executer_filters'][eid] = False\n\n        for id in filters['strategy_filters'].keys():\n            if type(filters['strategy_filters'][id]) != bool:\n                filters['strategy_filters'][id] = True\n\n        for id in filters['code_filters'].keys():\n            if type(filters['code_filters'][id]) != bool:\n                filters['code_filters'][id] = True\n\n        return filters\n\n    def set_group_filters(self, grpid:str, filters:dict):\n        if grpid not in self.__config__[\"groups\"]:\n            return False\n\n        grpInfo = self.__config__[\"groups\"][grpid]\n        self.__check_cache__(grpid, grpInfo)\n\n        realfilters = {\n            \"strategy_filters\":{},\n            \"code_filters\":{},\n            \"executer_filters\":{}\n        }\n\n        if \"strategy_filters\" in filters:\n            for sid in filters[\"strategy_filters\"]:\n                if filters[\"strategy_filters\"][sid]:\n                    realfilters[\"strategy_filters\"][sid] = {\n                        \"action\":\"redirect\",\n                        \"target\":0\n                    }\n\n        if \"code_filters\" in filters:\n            for sid in filters[\"code_filters\"]:\n                if filters[\"code_filters\"][sid]:\n                    realfilters[\"code_filters\"][sid] = {\n                        \"action\":\"redirect\",\n                        \"target\":0\n                    }\n\n        if \"executer_filters\" in filters:\n            realfilters[\"executer_filters\"] = filters[\"executer_filters\"]\n        \n        filepath = os.path.join(grpInfo[\"path\"], 'filters.json')\n        backup_file(filepath)\n        f = open(filepath, \"w\")\n        f.write(json.dumps(realfilters, indent=4))\n        f.close()\n        return True\n            "
  },
  {
    "path": "wtpy/monitor/EventReceiver.py",
    "content": "import threading\nimport struct\nimport json\nimport chardet\n\nfrom wtpy import WtMsgQue, WtMQClient\n\nmq = WtMsgQue()\n\nTOPIC_RT_TRADE = \"TRD_TRADE\"    # 生产环境下的成交通知\nTOPIC_RT_ORDER = \"TRD_ORDER\"    # 生产环境下的订单通知\nTOPIC_RT_NOTIFY = \"TRD_NOTIFY\"  # 生产环境下的普通通知\nTOPIC_RT_LOG = \"LOG\"            # 生产环境下的日志通知\n\nclass EventSink:\n    def __init__(self):\n        pass\n\n    def on_order(self, chnl:str, ordInfo:dict):\n        pass\n\n    def on_trade(self, chnl:str, trdInfo:dict):\n        pass\n    \n    def on_notify(self, chnl:str, message:str):\n        pass\n\n    def on_log(self, tag:str, time:int, message:str):\n        pass\n\ndef decode_bytes(data:bytes):\n    ret = chardet.detect(data)\n    if ret is not None:\n        encoding = ret[\"encoding\"]\n        if encoding is not None:\n            return data.decode(encoding)\n        else:\n            return data.decode()\n    else:\n        return data.decode()\n\nclass EventReceiver(WtMQClient):\n\n    def __init__(self, url:str, topics:list = [], sink:EventSink = None, logger = None):\n        self.url = url\n        self.logger = logger\n        mq.add_mq_client(url, self)\n        for topic in topics:\n            self.subscribe(topic)\n\n        self._stopped = False\n        self._worker = None\n        self._sink = sink\n\n    def on_mq_message(self, topic:str, message:str, dataLen:int):\n        topic = decode_bytes(topic)\n        message = decode_bytes(message[:dataLen])\n        if self._sink is not None:\n            if topic == TOPIC_RT_TRADE:\n                msgObj = json.loads(message)\n                trader = msgObj[\"trader\"]\n                msgObj.pop(\"trader\")\n                self._sink.on_trade(trader, msgObj)\n            elif topic == TOPIC_RT_ORDER:\n                msgObj = json.loads(message)\n                trader = msgObj[\"trader\"]\n                msgObj.pop(\"trader\")\n                self._sink.on_order(trader, msgObj)\n            elif topic == TOPIC_RT_NOTIFY:\n                trader = msgObj[\"trader\"]\n                self._sink.on_notify(trader, msgObj[\"message\"])\n            elif topic == TOPIC_RT_LOG:\n                msgObj = json.loads(message)\n                self._sink.on_log(msgObj[\"tag\"], msgObj[\"time\"], msgObj[\"message\"])\n\n    def run(self):\n        self.start()\n\n    def release(self):\n        mq.destroy_mq_client(self)\n\nTOPIC_BT_EVENT  = \"BT_EVENT\"    # 回测环境下的事件，主要通知回测的启动和结束\nTOPIC_BT_STATE  = \"BT_STATE\"    # 回测的状态\nTOPIC_BT_FUND   = \"BT_FUND\"     # 每日资金变化\n\nclass BtEventSink:\n    def __init__(self):\n        pass\n    \n    def on_begin(self):\n        pass\n    \n    def on_finish(self):\n        pass\n\n    def on_fund(self, fundInfo:dict):\n        pass\n\n    def on_state(self, statInfo:float):\n        pass\n\nclass BtEventReceiver(WtMQClient):\n\n    def __init__(self, url:str, topics:list = [], sink:BtEventSink = None, logger = None):\n        self.url = url\n        self.logger = logger\n        mq.add_mq_client(url, self)\n        for topic in topics:\n            self.subscribe(topic)\n\n        self._stopped = False\n        self._worker = None\n        self._sink = sink\n\n    def on_mq_message(self, topic:str, message:str, dataLen:int):\n        topic = decode_bytes(topic)\n        message = decode_bytes(message[:dataLen])\n        if self._sink is not None:\n            if topic == TOPIC_BT_EVENT:\n                if message == 'BT_START':\n                    self._sink.on_begin()\n                else:\n                    self._sink.on_finish()\n            elif topic == TOPIC_BT_STATE:\n                msgObj = json.loads(message)\n                self._sink.on_state(msgObj)\n            elif topic == TOPIC_BT_FUND:\n                msgObj = json.loads(message)\n                self._sink.on_fund(msgObj)\n\n    def run(self):\n        self.start()\n\n    def release(self):\n        mq.destroy_mq_client(self)\n"
  },
  {
    "path": "wtpy/monitor/PushSvr.py",
    "content": "from flask_socketio import SocketIO, emit\nfrom flask import session, sessions\n\nfrom .WtLogger import WtLogger\n\ndef get_param(json_data, key:str, type=str, defVal = \"\"):\n    if key not in json_data:\n        return defVal\n    else:\n        return type(json_data[key])\n\nclass PushServer:\n\n    def __init__(self, app, dataMgr, logger:WtLogger = None):\n        sockio:SocketIO = SocketIO(app)\n        self.sockio = sockio\n        self.app = app\n        self.dataMgr = dataMgr\n        self.logger = logger\n\n        @sockio.on('connect', namespace='/')\n        def on_connect():\n            usrInfo = session.get(\"userinfo\")\n            if usrInfo is not None:\n                self.logger.info(\"%s connected\" % usrInfo[\"loginid\"])\n\n        @sockio.on('disconnect', namespace='/')\n        def on_disconnect():\n            usrInfo = session.get(\"userinfo\")\n            if usrInfo is not None:\n                self.logger.info(\"%s disconnected\" % usrInfo[\"loginid\"])\n\n        @sockio.on('setgroup', namespace='/')\n        def set_group(data):\n            groupid = get_param(data, \"groupid\")\n            if len(groupid) == 0:\n                emit('setgroup', {\"result\":-2, \"message\":\"组合ID不能为空\"})\n            else:\n                session[\"groupid\"] = groupid         \n\n    def run(self, port:int, host:str):\n        self.sockio.run(self.app, host, port)\n\n    def notifyGrpLog(self, groupid, tag:str, time:int, message):\n        self.sockio.emit(\"notify\", {\"type\":\"gplog\", \"groupid\":groupid, \"tag\":tag, \"time\":time, \"message\":message}, broadcast=True)\n\n    def notifyGrpEvt(self, groupid, evttype):\n        self.sockio.emit(\"notify\", {\"type\":\"gpevt\", \"groupid\":groupid, \"evttype\":evttype}, broadcast=True)\n\n    def notifyGrpChnlEvt(self, groupid, chnlid, evttype, data):\n        self.sockio.emit(\"notify\", {\"type\":\"chnlevt\", \"groupid\":groupid, \"channel\":chnlid, \"data\":data, \"evttype\":evttype}, broadcast=True)"
  },
  {
    "path": "wtpy/monitor/WatchDog.py",
    "content": "import threading\nimport time\nimport subprocess\nimport os\nimport datetime\nimport json\nimport copy\nimport platform\nimport psutil\n\nfrom .EventReceiver import EventReceiver, EventSink\nfrom .WtLogger import WtLogger\n\nfrom enum import Enum\n\ndef isWindows():\n    if \"windows\" in platform.system().lower():\n        return True\n\n    return False\n\nclass WatcherSink:\n\n    def __init__(self):\n        pass\n\n    def on_start(self, appid:str):\n        pass\n\n    def on_stop(self, appid:str):\n        pass\n\n    def on_output(self, appid:str, tag:str, time:int, message:str):\n        pass\n\n    def on_order(self, appid:str, chnl:str, ordInfo:dict):\n        pass\n\n    def on_trade(self, appid:str, chnl:str, trdInfo:dict):\n        pass\n    \n    def on_notify(self, appid:str, chnl:str, message:str):\n        pass\n\n\nclass ActionType(Enum):\n    '''\n    操作类型\n    枚举变量\n    '''\n    AT_START    = 0\n    AT_STOP     = 1\n    AT_RESTART  = 2\n\nclass AppState(Enum):\n    '''\n    app状态\n    枚举变量\n    '''\n    AS_NotExist     = 901\n    AS_NotRunning   = 902\n    AS_Running      = 903\n    AS_Closed       = 904\n\nclass AppInfo(EventSink):\n    def __init__(self, appConf:dict, sink:WatcherSink = None, logger:WtLogger=None):\n        self.__info__ = appConf\n\n        self._cmd_line = None\n\n        self.__logger__ = logger\n\n        self._lock = threading.Lock()\n        self._id = appConf[\"id\"]\n        self._check_span = appConf[\"span\"]\n        self._guard = appConf[\"guard\"]\n        self._redirect = appConf[\"redirect\"]\n        self._mq_url = appConf[\"mqurl\"].strip()\n        self._schedule = appConf[\"schedule\"][\"active\"]\n        self._weekflag = appConf[\"schedule\"][\"weekflag\"]\n\n        self._ticks = 0\n        self._state = AppState.AS_NotRunning\n        self._procid = None\n        self._sink = sink\n\n        self._evt_receiver = None\n\n        if not os.path.exists(appConf[\"folder\"]) or not os.path.exists(appConf[\"path\"]):\n            self._state == AppState.AS_NotExist\n\n    def applyConf(self, appConf:dict):\n        self._lock.acquire()\n        self.__info__ = appConf\n        self._check_span = appConf[\"span\"]\n        self._guard = appConf[\"guard\"]\n        old_mqurl = self._mq_url\n        self._mq_url = appConf[\"mqurl\"]\n        self._redirect = appConf[\"redirect\"]\n        self._schedule = appConf[\"schedule\"][\"active\"]\n        self._weekflag = appConf[\"schedule\"][\"weekflag\"]\n        self._ticks = 0\n        self._lock.release()\n        self.__logger__.info(\"应用%s的调度设置已更新\" % (self._id))\n\n        if self._mq_url != old_mqurl:\n            if self._evt_receiver is not None:\n                self._evt_receiver.release()\n\n            if self._mq_url != '':\n                self._evt_receiver = EventReceiver(url=self._mq_url, logger=self.__logger__)\n                self._evt_receiver.run()\n                self.__logger__.info(\"应用%s开始接收%s的通知信息\" % (self._id, self._mq_url))\n\n    def getConf(self):\n        self._lock.acquire()\n        ret = copy.copy(self.__info__)\n        self._lock.release()\n        return ret\n\n    @property\n    def cmd_line(self) -> str:\n        fullPath = os.path.join(self.__info__[\"folder\"], self.__info__[\"param\"])\n        if self._cmd_line is None:\n            self._cmd_line = self.__info__[\"path\"] + \" \" + fullPath\n        return self._cmd_line\n\n    def is_running(self, pids) -> bool:\n        bNeedCheck = (self._procid is None) or (not psutil.pid_exists(self._procid))\n        if bNeedCheck:\n            for pid in pids:\n                try:\n                    pInfo = psutil.Process(pid)\n                    cmdLine = pInfo.cmdline()\n                    if len(cmdLine) == 0:\n                        continue\n                    # print(cmdLine)\n                    cmdLine = ' '.join(cmdLine)\n                    if self.cmd_line.upper() == cmdLine.upper():\n                        self._procid = pid\n                        self.__logger__.info(\"应用%s挂载成功，进程ID: %d\" % (self._id, self._procid))\n     \n                        if self._mq_url != '':\n                            # 如果事件接收器为空或者url发生了改变，则需要重新创建\n                            bNeedCreate = self._evt_receiver is None or self._evt_receiver.url != self._mq_url\n                            if bNeedCreate:\n                                if self._evt_receiver is not None:\n                                    self._evt_receiver.release()\n                                self._evt_receiver = EventReceiver(url=self._mq_url, logger=self.__logger__, sink=self)\n                                self._evt_receiver.run()\n                                self.__logger__.info(\"应用%s开始接收%s的通知信息\" % (self._id, self._mq_url))\n                except:\n                    pass\n            return False\n\n        return True\n\n    def run(self):\n        if self._state == AppState.AS_Running:\n            return\n\n        if self._mq_url != '':\n            # 每次启动都重新创建接收器\n            if self._evt_receiver is not None:\n                self._evt_receiver.release()\n            self._evt_receiver = EventReceiver(url=self._mq_url, logger=self.__logger__, sink=self)\n            self._evt_receiver.run()\n            self.__logger__.info(\"应用%s开始接收%s的通知信息\" % (self._id, self._mq_url))\n\n        try:\n            fullPath = os.path.join(self.__info__[\"folder\"], self.__info__[\"param\"])\n            if isWindows():\n                self._procid = subprocess.Popen([self.__info__[\"path\"], fullPath],  # 需要执行的文件路径\n                                cwd=self.__info__[\"folder\"], creationflags=subprocess.CREATE_NEW_CONSOLE).pid\n            else:\n                self._procid = subprocess.Popen([self.__info__[\"path\"], fullPath],  # 需要执行的文件路径\n                                cwd=self.__info__[\"folder\"]).pid\n\n            self._cmd_line = self.__info__[\"path\"] + \" \" + fullPath\n        except:\n            self.__logger__.info(\"应用%s启动异常\" % (self._id))\n\n        self._state = AppState.AS_Running\n\n        self.__logger__.info(\"应用%s的已启动，进程ID: %d\" % (self._id, self._procid))\n        if self._sink is not None:\n            self._sink.on_start(self._id)\n\n    def stop(self):\n        if self._state != AppState.AS_Running:\n            return\n\n        try:\n            if isWindows():\n                os.system(\"taskkill /pid \" + str(self._procid))\n            else:\n                os.system(\"kill -9 \" + str(self._procid))\n        except e as SystemError:\n            self.__logger__.error(\"关闭异常: {}\" % (e))\n            pass\n        self.__logger__.info(\"应用%s的已停止，进程ID: %d\" % (self._id, self._procid))\n        if self._sink is not None:\n            self._sink.on_stop(self._id)\n        self._procid = None\n        self._state = AppState.AS_Closed\n\n    def restart(self):\n        if self._procid is not None:\n            self.stop()\n        \n        self.run()\n\n    def update_state(self, pids):\n        if self.is_running(pids):\n            self._state = AppState.AS_Running\n        elif self._state == AppState.AS_Running:\n            self._state = AppState.AS_NotRunning\n            self.__logger__.info(\"应用%s的已停止\" % (self._id))\n            self._procid = None\n            if self._sink is not None:\n                self._sink.on_stop(self._id)\n        \n\n    def tick(self, pids):\n        self._ticks += 1\n\n        if self._ticks == self._check_span:\n            self.update_state(pids)\n            if self._state == AppState.AS_NotRunning and self._guard:\n                self.__logger__.info(\"应用%s未启动，正在自动重启\" % (self._id))\n                self.run()\n            elif self._schedule:\n                self.__schedule__()\n\n            self._ticks = 0\n    \n    def __schedule__(self):\n        weekflag = self._weekflag\n\n        now = datetime.datetime.now()\n        # python中周一是0，周天是6\n        # 但是web端沿用了C++里的规则，周日是0，周六是6，所以做一个变换\n        wd = now.weekday() + 1\n        if wd == 7:\n            wd = 0\n        if weekflag[wd] != \"1\":\n            return\n\n        appid = self.__info__[\"id\"]\n\n        curMin = int(now.strftime(\"%H%M\"))\n        curDt = int(now.strftime(\"%y%m%d\"))\n        self._lock.acquire()\n        for tInfo in self.__info__[\"schedule\"][\"tasks\"]:\n            if not tInfo[\"active\"]:\n                continue\n            \n            if \"lastDate\" in tInfo:\n                lastDate = tInfo[\"lastDate\"]\n            else:\n                lastDate = 0\n\n            if \"lastTime\" in tInfo:\n                lastTime = tInfo[\"lastTime\"]\n            else:\n                lastTime = 0\n            targetTm = tInfo[\"time\"]\n            action = tInfo[\"action\"]\n\n            if curMin == targetTm and (curMin != lastTime or curDt != lastDate):\n                if action == ActionType.AT_START.value:\n                    if self._state not in [AppState.AS_NotExist, AppState.AS_Running]:\n                        self.__logger__.info(\"自动启动应用%s\" % (appid))\n                        self.run()\n                elif action == ActionType.AT_STOP.value:\n                    if self._state == AppState.AS_Running:\n                        self.__logger__.info(\"自动停止应用%s\" % (appid))\n                        self.stop()\n                elif action == ActionType.AT_RESTART.value:\n                    self.__logger__.info(\"自动重启应用%s\" % (appid))\n                    self.restart()\n\n                tInfo[\"lastDate\"] = curDt\n                tInfo[\"lastTime\"] = curMin\n        self._lock.release()\n\n    def isRunning(self):\n        return self._state == AppState.AS_Running\n\n    # EventSink.on_order\n    def on_order(self, chnl:str, ordInfo:dict):\n        if self._sink is not None:\n            self._sink.on_order(self._id, chnl, ordInfo)\n\n    # EventSink.on_trade\n    def on_trade(self, chnl:str, trdInfo:dict):\n        if self._sink is not None:\n            self._sink.on_trade(self._id, chnl, trdInfo)\n    \n    # EventSink.on_notify\n    def on_notify(self, chnl:str, message:str):\n        if self._sink is not None:\n            self._sink.on_notify(self._id, chnl, message)\n\n    # EventSink.on_log\n    def on_log(self, tag:str, time:int, message:str):\n        if self._sink is not None:\n            self._sink.on_output(self._id, tag, time, message)\n        pass\n\nclass WatchDog:\n\n    def __init__(self, db, sink:WatcherSink = None, logger:WtLogger=None):\n        self.__db_conn__ = db\n        self.__apps__ = dict()\n        self.__app_conf__ = dict()\n        self.__stopped__ = False\n        self.__worker__ = None\n        self.__sink__ = sink\n        self.__logger__ = logger\n\n        #加载调度列表\n        cur = self.__db_conn__.cursor()\n        for row in cur.execute(\"SELECT * FROM schedules;\"):\n            appConf = dict()\n            appConf[\"id\"] = row[1]\n            appConf[\"path\"] = row[2]\n            appConf[\"folder\"] = row[3]\n            appConf[\"param\"] = row[4]\n            appConf[\"type\"] = row[5]\n            appConf[\"span\"] = row[6]\n            appConf[\"guard\"] = row[7]=='true'\n            appConf[\"redirect\"] = row[8]=='true'\n            appConf[\"mqurl\"] = row[11]\n            appConf[\"schedule\"] = dict()\n            appConf[\"schedule\"][\"active\"] = row[9]=='true'\n            appConf[\"schedule\"][\"weekflag\"] = row[10]\n            appConf[\"schedule\"][\"tasks\"] = list()\n            appConf[\"schedule\"][\"tasks\"].append(json.loads(row[12]))\n            appConf[\"schedule\"][\"tasks\"].append(json.loads(row[13]))\n            appConf[\"schedule\"][\"tasks\"].append(json.loads(row[14]))\n            appConf[\"schedule\"][\"tasks\"].append(json.loads(row[15]))\n            appConf[\"schedule\"][\"tasks\"].append(json.loads(row[16]))\n            appConf[\"schedule\"][\"tasks\"].append(json.loads(row[17]))\n            self.__app_conf__[appConf[\"id\"]] = appConf\n            self.__apps__[appConf[\"id\"]] = AppInfo(appConf, sink, self.__logger__)\n\n\n    def __watch_impl__(self):\n        while not self.__stopped__:\n            time.sleep(1)\n            pids = psutil.pids()\n            for appid in self.__apps__:\n                appInfo = self.__apps__[appid]\n\n                appInfo.tick(pids)\n\n    def get_apps(self):\n        ret = {}\n        for appid in self.__app_conf__:\n            bRunning = self.__apps__[appid].isRunning()\n            conf = copy.copy(self.__app_conf__[appid])\n            conf[\"running\"] = bRunning\n            ret[appid] = conf\n        return ret\n\n    def run(self):\n        if self.__worker__ is None:\n            self.__worker__ = threading.Thread(target=self.__watch_impl__, name=\"WatchDog\", daemon=True)\n            self.__worker__.start()\n            self.__logger__.info(\"自动调度服务已启动\")\n\n    def start(self, appid:str):\n        if appid not in self.__apps__:\n            return\n\n        self.__logger__.info(\"手动启动%s\" % (appid))\n        appInfo = self.__apps__[appid]\n        appInfo.run()\n\n    def stop(self, appid:str):\n        if appid not in self.__apps__:\n            return\n\n        self.__logger__.info(\"手动停止%s\" % (appid))\n        appInfo = self.__apps__[appid]\n        appInfo.stop()\n\n    def has_app(self, appid:str):\n        return appid in self.__apps__\n\n    def restart(self, appid:str):\n        if appid not in self.__apps__:\n            return\n\n        appInfo = self.__apps__[appid]\n        appInfo.restart()\n    \n    def isRunning(self, appid:str):\n        if appid not in self.__apps__:\n            return False\n\n        appInfo = self.__apps__[appid]\n        return appInfo.isRunning()\n\n    def getAppConf(self, appid:str):\n        if appid not in self.__apps__:\n            return None\n        \n        appInfo = self.__apps__[appid]\n        return appInfo.getConf()\n\n    def delApp(self, appid:str):\n        if appid not in self.__apps__:\n            return\n\n        self.__apps__.pop(appid)\n\n        cur = self.__db_conn__.cursor()\n        cur.execute(\"DELETE FROM schedules WHERE appid='%s';\" % (appid))\n        self.__db_conn__.commit()\n        self.__logger__.info(\"应用%s自动调度已删除\" % (appid))\n\n    def updateMQURL(self, appid:str, mqurl:str):\n        if appid not in self.__apps__:\n            return\n\n        self.__app_conf__[appid][\"mqurl\"] = mqurl\n        appConf = self.__app_conf__[appid]\n        appInst = self.__apps__[appid]\n        appInst.applyConf(appConf)\n        \n        cur = self.__db_conn__.cursor()\n        sql = \"UPDATE schedules SET mqurl='%s',modifytime=datetime('now','localtime') WHERE appid='%s';\" % (mqurl, appid)\n        print(sql)\n        cur.execute(sql)\n        self.__db_conn__.commit()\n\n    def applyAppConf(self, appConf:dict, isGroup:bool = False):\n        appid = appConf[\"id\"]\n        self.__app_conf__[appid] = appConf\n        isNewApp = False\n        if appid not in self.__apps__:\n            isNewApp = True\n            self.__apps__[appid] = AppInfo(appConf, self.__sink__, self.__logger__)\n        else:\n            appInst = self.__apps__[appid]\n            appInst.applyConf(appConf)\n\n        guard = 'true' if appConf[\"guard\"] else 'false'\n        redirect = 'true' if appConf[\"redirect\"] else 'false'\n        schedule = 'true' if appConf[\"schedule\"] else 'false'\n\n        stype = 1 if isGroup else 0\n\n        cur = self.__db_conn__.cursor()\n        sql = ''\n        if isNewApp:\n            sql = \"INSERT INTO schedules(appid,path,folder,param,type,span,guard,redirect,schedule,weekflag,task1,task2,task3,task4,task5,task6,mqurl) \\\n                    VALUES('%s','%s','%s','%s',%d, %d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');\" % (\n                    appid, appConf[\"path\"], appConf[\"folder\"], appConf[\"param\"], stype, appConf[\"span\"], guard, redirect, schedule, appConf[\"schedule\"][\"weekflag\"],\n                    json.dumps(appConf[\"schedule\"][\"tasks\"][0]),json.dumps(appConf[\"schedule\"][\"tasks\"][1]),json.dumps(appConf[\"schedule\"][\"tasks\"][2]),\n                    json.dumps(appConf[\"schedule\"][\"tasks\"][3]),json.dumps(appConf[\"schedule\"][\"tasks\"][4]),json.dumps(appConf[\"schedule\"][\"tasks\"][5]),\n                    appConf[\"mqurl\"])\n        else:\n            sql = \"UPDATE schedules SET path='%s',folder='%s',param='%s',type=%d,span='%s',guard='%s',redirect='%s',schedule='%s',weekflag='%s',task1='%s',task2='%s',\\\n                    task3='%s',task4='%s',task5='%s',task6='%s',mqurl='%s',modifytime=datetime('now','localtime') WHERE appid='%s';\" % (\n                    appConf[\"path\"], appConf[\"folder\"], appConf[\"param\"], stype, appConf[\"span\"], guard, redirect, schedule, appConf[\"schedule\"][\"weekflag\"],\n                    json.dumps(appConf[\"schedule\"][\"tasks\"][0]),json.dumps(appConf[\"schedule\"][\"tasks\"][1]),json.dumps(appConf[\"schedule\"][\"tasks\"][2]),\n                    json.dumps(appConf[\"schedule\"][\"tasks\"][3]),json.dumps(appConf[\"schedule\"][\"tasks\"][4]),json.dumps(appConf[\"schedule\"][\"tasks\"][5]), \n                    appConf[\"mqurl\"], appid)\n        cur.execute(sql)\n        self.__db_conn__.commit()"
  },
  {
    "path": "wtpy/monitor/WtBtMon.py",
    "content": "'''\nDescripttion: 回测管理模块\nversion: \nAuthor: Wesley\nDate: 2021-08-11 14:03:33\nLastEditors: Wesley\nLastEditTime: 2021-09-02 14:18:50\n'''\nimport os\nimport json\nimport subprocess\nimport platform\nimport sys\nimport psutil\nimport hashlib\nimport datetime\nimport shutil\nimport json\nimport threading\nimport time\n\nfrom wtpy import WtDtServo\nfrom .WtLogger import WtLogger\nfrom .EventReceiver import BtEventReceiver, BtEventSink\n\ndef isWindows():\n    if \"windows\" in platform.system().lower():\n        return True\n\n    return False\n\ndef md5_str(v:str) -> str:\n    return hashlib.md5(v.encode()).hexdigest()\n\ndef gen_btid(user:str, straid:str) -> str:\n    now = datetime.datetime.now()\n    s = user + \"_\" + straid + \"_\" + str(now.timestamp())\n    return md5_str(s)\n\ndef gen_straid(user:str) -> str:\n    now = datetime.datetime.now()\n    s = user + \"_\" + str(now.timestamp())\n    return md5_str(s)\n\nclass BtTaskSink:\n\n    def __init__(self):\n        pass\n\n    def on_start(self, user:str, straid:str, btid:str):\n        pass\n\n    def on_stop(self, user:str, straid:str, btid:str):\n        pass\n\n    def on_state(self, user:str, straid:str, btid:str, statInfo:dict):\n        pass\n\n    def on_fund(self, user:str, straid:str, btid:str, fundInfo:dict):\n        pass\n\nclass WtBtTask(BtEventSink):\n    '''\n    回测任务类\n    '''\n    def __init__(self, user:str, straid:str, btid:str, folder:str, logger:WtLogger = None, sink:BtTaskSink = None):\n        self.user = user\n        self.straid = straid\n        self.btid = btid\n        self.logger = logger\n        self.folder = folder\n        self.sink = sink\n        \n        self._cmd_line = None\n        self._mq_url = \"ipc:///wtpy/bt_%s.ipc\" % (btid)\n        self._ticks = 0\n        self._state = 0\n        self._procid = None\n        self._evt_receiver = None\n\n    def __check__(self):\n         while True:\n            time.sleep(1)\n            pids = psutil.pids()\n            if psutil.pid_exists(self._procid):\n                continue\n            else:\n                print(\"%s process %d finished\" % (self.btid, self._procid))\n                if self.sink is not None:\n                    self.sink.on_stop(self.user, self.straid, self.btid)\n                break\n\n    def run(self):\n        if self._state != 0:\n            return\n\n        self._evt_receiver = BtEventReceiver(url=self._mq_url, logger=self.logger, sink=self)\n        self._evt_receiver.run()\n        self.logger.info(\"回测%s开始接收%s的通知信息\" % (self.btid, self._mq_url))\n\n        try:\n            fullPath = os.path.join(self.folder, \"runBT.py\")\n            if isWindows():\n                self._procid = subprocess.Popen([sys.executable, fullPath],  # 需要执行的文件路径\n                                cwd=self.folder, creationflags=subprocess.CREATE_NEW_CONSOLE).pid\n            else:\n                self._procid = subprocess.Popen([sys.executable, fullPath],  # 需要执行的文件路径\n                                cwd=self.folder).pid\n\n            self._cmd_line = sys.executable + \" \" + fullPath\n        except:\n            self.logger.info(\"回测%s启动异常\" % (self.btid))\n\n        self._state = 1\n\n        self.logger.info(\"回测%s的已启动，进程ID: %d\" % (self.btid, self._procid))\n\n        self.watcher = threading.Thread(target=self.__check__, name=self.btid, daemon=True)\n        self.watcher.start()\n\n    @property\n    def cmd_line(self) -> str:\n        fullPath = os.path.join(self.folder, \"runBT.py\")\n        if self._cmd_line is None:\n            self._cmd_line = sys.executable + \" \" + fullPath\n        return self._cmd_line\n\n    def is_running(self, pids) -> bool:\n        bNeedCheck = (self._procid is None) or (not psutil.pid_exists(self._procid))\n        if bNeedCheck:\n            for pid in pids:\n                try:\n                    pInfo = psutil.Process(pid)\n                    cmdLine = pInfo.cmdline()\n                    if len(cmdLine) == 0:\n                        continue\n                    # print(cmdLine)\n                    cmdLine = ' '.join(cmdLine)\n                    if self.cmd_line.upper() == cmdLine.upper():\n                        self._procid = pid\n                        self.logger.info(\"回测%s挂载成功，进程ID: %d\" % (self.btid, self._procid))\n\n                        if self._mq_url != '':\n                            self._evt_receiver = BtEventReceiver(url=self._mq_url, logger=self.logger, sink=self)\n                            self._evt_receiver.run()\n                            self.logger.info(\"回测%s开始接收%s的通知信息\" % (self.btid, self._mq_url))\n\n                        self.watcher = threading.Thread(target=self.__check__, name=self.btid, daemon=True)\n                        self.watcher.run()\n                except:\n                    pass\n            return False\n\n        return True\n\n    def on_begin(self):\n        if self.sink is not None:\n            self.sink.on_start(self.user, self.straid, self.btid)\n\n    def on_finish(self):\n        pass\n\n    def on_state(self, statInfo:dict):\n        if self.sink is not None:\n            self.sink.on_state(self.user, self.straid, self.btid, statInfo)\n        print(statInfo)\n\n    def on_fund(self, fundInfo:dict):\n        if self.sink is not None:\n            self.sink.on_fund(self.user, self.straid, self.btid, fundInfo)\n        print(fundInfo)\n\n\nclass WtBtMon(BtTaskSink):\n    '''\n    回测管理器\n    '''\n    def __init__(self, deploy_folder:str, dtServo:WtDtServo = None, logger:WtLogger = None):\n        self.path = deploy_folder\n        self.user_stras = dict()\n        self.user_bts = dict()\n        self.logger = logger\n        self.dt_servo = dtServo\n\n        self.task_infos = dict()\n        self.task_map = dict()\n\n        self.__load_tasks__()\n\n    def __load_user_data__(self, user:str):\n        folder = os.path.join(self.path, user)\n        if not os.path.exists(folder):\n            os.mkdir(folder)\n\n        filepath = os.path.join(folder, \"marker.json\")\n        if not os.path.exists(filepath):\n            return False\n\n        f = open(filepath, \"r\")\n        content = f.read()\n        f.close()\n\n        obj = json.loads(content)\n        self.user_stras[user] = obj[\"strategies\"]\n        self.user_bts[user] = obj[\"backtests\"]\n        return True\n\n    def __save_user_data__(self, user):\n        folder = os.path.join(self.path, user)\n        if not os.path.exists(folder):\n            os.mkdir(folder)\n\n        obj = {\n            \"strategies\":{},\n            \"backtests\":{}\n        }\n\n        if user in self.user_stras:\n            obj[\"strategies\"] = self.user_stras[user]\n\n        if user in self.user_bts:\n            obj[\"backtests\"] = self.user_bts[user]\n\n        filepath = os.path.join(folder, \"marker.json\")\n        f = open(filepath, \"w\")\n        f.write(json.dumps(obj, indent=4, ensure_ascii=False))\n        f.close()\n        return True\n\n    def get_strategies(self, user:str) -> list:\n        if user not in self.user_stras:\n            bSucc = self.__load_user_data__(user)\n        \n            if not bSucc:\n                return None\n\n        ay = list()\n        for straid in self.user_stras[user]:\n            ay.append(self.user_stras[user][straid])\n        return ay\n\n    def add_strategy(self, user:str, name:str) -> dict:\n        if user not in self.user_stras:\n            self.__load_user_data__(user)\n\n        if user not in self.user_stras:\n            self.user_stras[user] = dict()\n\n        straid = gen_straid(user)\n        self.user_stras[user][straid] = {\n            \"id\":straid,\n            \"name\":name,\n            \"perform\":{\n                \"days\": 0,\n                \"total_return\": 0,\n                \"annual_return\": 0,\n                \"win_rate\": 0,\n                \"max_falldown\": 0,\n                \"max_profratio\": 0,\n                \"std\": 0,\n                \"down_std\": 0,\n                \"sharpe_ratio\": 0,\n                \"sortino_ratio\": 0,\n                \"calmar_ratio\": 0\n            }\n        }\n\n        folder = os.path.join(self.path, user, straid)\n        if not os.path.exists(folder):\n            os.mkdir(folder)\n\n        fname = os.path.join(folder, \"MyStrategy.py\")\n        srcfname = os.path.join(self.path, \"template/MyStrategy.py\")\n        shutil.copyfile(srcfname, fname)\n\n        self.__save_user_data__(user)\n\n        return self.user_stras[user][straid]\n\n    def del_strategy(self, user:str, straid:str):\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return False\n\n        if straid not in self.user_stras[user]:\n            return True\n\n        folder = os.path.join(self.path, user, straid)\n        if not os.path.exists(folder):\n            return True\n\n        delFolder = os.path.join(self.path, user, \".del\")\n        if not os.path.exists(delFolder):\n            os.mkdir(delFolder)\n        shutil.move(folder, delFolder)\n        self.user_stras[user].pop(straid)\n        self.__save_user_data__(user)\n        return True\n    \n    def has_strategy(self, user:str, straid:str, btid:str = None) -> bool:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return False\n\n        if btid is None:\n            return straid in self.user_stras[user]\n        else:\n            return btid in self.user_bts[user]\n\n    def get_strategy_code(self, user:str, straid:str, btid:str = None) -> str:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        if btid is None:\n            path = os.path.join(self.path, user, straid, \"MyStrategy.py\")\n            if not os.path.exists(path):\n                return None\n\n            f = open(path, \"r\", encoding=\"UTF-8\")\n            content = f.read()\n            f.close()\n            return content\n        else:\n            thisBts = self.user_bts[user]\n            if btid not in thisBts:\n                return None\n\n            bt_path = os.path.join(self.path, \"%s/%s/backtests/%s/runBT.py\" % (user, straid, btid))\n            f = open(bt_path, \"r\")\n            content = f.read()\n            f.close()\n            return content\n\n    def set_strategy_code(self, user:str, straid:str, content:str) -> bool:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return False\n\n        path = os.path.join(self.path, user, straid, \"MyStrategy.py\")\n        if not os.path.exists(path):\n            return None\n\n        f = open(path, \"w\", encoding=\"UTF-8\")\n        f.write(content)\n        f.close()\n        return True\n\n    def get_backtests(self, user:str, straid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        if user not in self.user_bts:\n            return None\n\n        ay = list()\n        for btid in self.user_bts[user]:\n            ay.append(self.user_bts[user][btid])\n\n        return ay\n\n    def del_backtest(self, user:str, btid:str):\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return\n\n        if user not in self.user_bts:\n            return\n\n        if btid in self.user_bts[user]:\n            self.user_bts[user].pop(btid)\n            self.logger.info(\"Backtest %s of %s deleted\" % (btid, user))\n\n            self.__save_user_data__(user)\n\n    def get_bt_funds(self, user:str, straid:str, btid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/funds.csv\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        lines = f.readlines()\n        f.close()\n        lines = lines[1:]\n\n        funds = list()\n        for line in lines:\n            cells = line.split(\",\")\n            if len(cells) > 10:\n                continue\n\n            tItem = {\n                \"date\": int(cells[0]),\n                \"closeprofit\": float(cells[1]),\n                \"dynprofit\": float(cells[2]),\n                \"dynbalance\": float(cells[3]),\n                \"fee\": 0\n            }\n\n            if len(cells) > 4:\n                tItem[\"fee\"] = float(cells[4])\n\n            funds.append(tItem)\n        \n        return funds\n\n    def get_bt_trades(self, user:str, straid:str, btid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/trades.csv\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        lines = f.readlines()\n        f.close()\n        lines = lines[1:]\n\n        items = list()\n        for line in lines:\n            cells = line.split(\",\")\n            if len(cells) > 10:\n                continue\n\n            item = {\n                \"code\": cells[0],\n                \"time\": int(cells[1]),\n                \"direction\": cells[2],\n                \"offset\": cells[3],\n                \"price\": float(cells[4]),\n                \"volume\": float(cells[5]),\n                \"tag\": cells[6],\n                \"fee\": 0\n            }\n\n            if len(cells) > 7:\n                item[\"fee\"] = float(cells[7])\n\n            if len(cells) > 4:\n                item[\"fee\"] = float(cells[4])\n\n            items.append(item)\n        \n        return items\n\n    def get_bt_rounds(self, user:str, straid:str, btid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/closes.csv\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        lines = f.readlines()\n        f.close()\n        lines = lines[1:]\n\n        items = list()\n        for line in lines:\n            cells = line.split(\",\")\n\n            item = {\n                \"code\": cells[0],\n                \"direct\": cells[1],\n                \"opentime\": int(cells[2]),\n                \"openprice\": float(cells[3]),\n                \"closetime\": int(cells[4]),\n                \"closeprice\": float(cells[5]),\n                \"qty\": float(cells[6]),\n                \"profit\": float(cells[7]),\n                \"maxprofit\": float(cells[8]),\n                \"maxloss\": float(cells[9]),\n                \"entertag\": cells[11],\n                \"exittag\": cells[12]\n            }\n\n            items.append(item)\n        \n        return items\n\n    def get_bt_signals(self, user:str, straid:str, btid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/signals.csv\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        lines = f.readlines()\n        f.close()\n        lines = lines[1:]\n\n        items = list()\n        for line in lines:\n            cells = line.split(\",\")\n            if len(cells) > 10:\n                continue\n\n            item = {\n                \"code\": cells[0],\n                \"target\": float(cells[1]),\n                \"sigprice\": float(cells[2]),\n                \"gentime\": cells[3],\n                \"tag\": cells[4]\n            }\n\n            items.append(item)\n        \n        return items\n\n    def get_bt_summary(self, user:str, straid:str, btid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/summary.json\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        content = f.read()\n        f.close()\n\n        obj = json.loads(content)\n        return obj\n\n    def get_bt_state(self, user:str, straid:str, btid:str) -> list:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/btenv.json\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        content = f.read()\n        f.close()\n\n        obj = json.loads(content)\n        return obj\n\n    def get_bt_state(self, user:str, straid:str, btid:str) -> dict:\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        filename = \"%s/%s/backtests/%s/outputs_bt/%s/btenv.json\" % (user, straid, btid, btid)\n        filename = os.path.join(self.path, filename)\n        if not os.path.exists(filename):\n            return None\n\n        f = open(filename, \"r\")\n        content = f.read()\n        f.close()\n\n        thisBts[btid][\"state\"] = json.loads(content)\n\n        return thisBts[btid][\"state\"]\n\n    def update_bt_state(self, user:str, straid:str, btid:str, stateObj:dict):\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n\n        thisBts = self.user_bts[user]\n        if btid not in thisBts:\n            return None\n\n        thisBts[btid][\"state\"] = stateObj\n\n    def get_bt_kline(self, user:str, straid:str, btid:str) -> list:\n        if self.dt_servo is None:\n            return None\n\n        if user not in self.user_bts:\n            bSucc = self.__load_user_data__(user)\n\n            if not bSucc:\n                return None\n        \n        btState = self.get_bt_state(user, straid, btid)\n        if btState is None:\n            return None\n\n        thisBts = self.user_bts[user]\n        if \"kline\" not in thisBts[btid]:\n            code = btState[\"code\"]\n            period = btState[\"period\"]\n            stime = btState[\"stime\"]\n            etime = btState[\"etime\"]\n            barList = self.dt_servo.get_bars(stdCode=code, period=period, fromTime=stime, endTime=etime)\n            if barList is None:\n                return None\n\n            bars = list()\n            for realBar in barList:\n                bar = dict()\n                if period[0] == 'd':\n                    bar[\"time\"] = realBar.date\n                else:\n                    bar[\"time\"] = 1990*100000000 + realBar.time\n                    bar[\"bartime\"] = bar[\"time\"]\n                    bar[\"open\"] = realBar.open\n                    bar[\"high\"] = realBar.high\n                    bar[\"low\"] = realBar.low\n                    bar[\"close\"] = realBar.close\n                    bar[\"volume\"] = realBar.vol\n                bars.append(bar)\n            thisBts[btid][\"kline\"] = bars\n\n        return thisBts[btid][\"kline\"]\n\n    def run_backtest(self, user:str, straid:str, fromTime:int, endTime:int, capital:float, slippage:int=0) -> dict:\n        if user not in self.user_bts:\n            self.__load_user_data__(user)\n\n        if user not in self.user_bts:\n            self.user_bts[user] = dict()\n            \n        btid = gen_btid(user, straid)\n\n        # 生成回测目录\n        folder = os.path.join(self.path, user, straid, \"backtests\")\n        if not os.path.exists(folder):\n            os.mkdir(folder)\n        \n        folder = os.path.join(folder, btid)\n        os.mkdir(folder)\n\n        # 将策略文件复制到该目录下\n        old_path = os.path.join(self.path, user, straid, \"MyStrategy.py\")\n        new_path = os.path.join(folder, \"MyStrategy.py\")\n        shutil.copyfile(old_path, new_path)\n\n        # 初始化目录下的配置文件\n        old_path = os.path.join(self.path, \"template/configbt.json\")\n        new_path = os.path.join(folder, \"configbt.json\")\n        f = open(old_path, \"r\", encoding=\"UTF-8\")\n        content = f.read()\n        f.close()\n        content = content.replace(\"$BTID$\", btid)\n\n        f = open(new_path, \"w\", encoding=\"UTF-8\")\n        f.write(content)\n        f.close()\n\n        old_path = os.path.join(self.path, \"template/logcfgbt.json\")\n        new_path = os.path.join(folder, \"logcfgbt.json\")\n        shutil.copyfile(old_path, new_path)\n\n        old_path = os.path.join(self.path, \"template/fees.json\")\n        new_path = os.path.join(folder, \"fees.json\")\n        shutil.copyfile(old_path, new_path)\n\n        old_path = os.path.join(self.path, \"template/runBT.py\")\n        new_path = os.path.join(folder, \"runBT.py\")\n\n        f = open(old_path, \"r\", encoding=\"UTF-8\")\n        content = f.read()\n        f.close()\n        content = content.replace(\"$FROMTIME$\", str(fromTime))\n        content = content.replace(\"$ENDTIME$\", str(endTime))\n        content = content.replace(\"$STRAID$\", btid)\n        content = content.replace(\"$CAPITAL$\", str(capital))\n        content = content.replace(\"$SLIPPAGE$\", str(slippage))\n\n        f = open(new_path, \"w\", encoding=\"UTF-8\")\n        f.write(content)\n        f.close()\n\n        btInfo = {\n            \"id\":btid,\n            \"capital\":capital,\n            \"runtime\":datetime.datetime.now().strftime(\"%Y.%m.%d %H:%M:%S\"),\n            \"state\":{\n                \"code\": \"\",\n                \"period\": \"\",\n                \"stime\": fromTime,\n                \"etime\": endTime,\n                \"progress\": 0,\n                \"elapse\": 0\n            },\n            \"perform\":{\n                \"days\": 0,\n                \"total_return\": 0,\n                \"annual_return\": 0,\n                \"win_rate\": 0,\n                \"max_falldown\": 0,\n                \"max_profratio\": 0,\n                \"std\": 0,\n                \"down_std\": 0,\n                \"sharpe_ratio\": 0,\n                \"sortino_ratio\": 0,\n                \"calmar_ratio\": 0\n            }\n        }\n\n        self.user_bts[user][btid] = btInfo\n\n        self.__save_user_data__(user)\n\n        # 添加\n        btTask = WtBtTask(user, straid, btid, folder, self.logger, sink=self)\n        btTask.run()\n\n        self.task_map[btid] = btTask\n\n        # 这里还需要记录一下回测的任务，不然如果重启就恢复不了了\n        taskInfo = {\n            \"user\":user,\n            \"straid\":straid,\n            \"btid\":btid,\n            \"folder\":folder\n        }\n        self.task_infos[btid]= taskInfo\n        self.__save_tasks__()\n\n        return btInfo\n\n    def __update_bt_result__(self, user:str, straid:str, btid:str):\n        if user not in self.user_bts:\n            self.__load_user_data__(user)\n\n        if user not in self.user_bts:\n            self.user_bts[user] = dict()\n\n        # 更新回测状态\n        stateObj = self.get_bt_state(user, straid, btid)\n        self.user_bts[user][btid][\"state\"] = stateObj\n\n        # 更新回测结果摘要\n        summaryObj = self.get_bt_summary(user, straid, btid)\n        self.user_bts[user][btid][\"perform\"] = summaryObj\n        self.user_stras[user][straid][\"perform\"] = summaryObj\n\n        self.__save_user_data__(user)\n    \n    def __save_tasks__(self):\n        obj = self.task_infos\n\n        filename = os.path.join(self.path, \"tasks.json\")\n        f = open(filename, \"w\")\n        f.write(json.dumps(obj, indent=4))\n        f.close()\n\n    def __load_tasks__(self):\n        filename = os.path.join(self.path, \"tasks.json\")\n        if not os.path.exists(filename):\n            return\n\n        f = open(filename, \"r\")\n        content = f.read()\n        f.close()\n\n        task_infos = json.loads(content)\n        pids = psutil.pids()\n        for btid in task_infos:\n            tInfo = task_infos[btid].copy()\n            tInfo[\"logger\"] = self.logger\n            btTask = WtBtTask(**tInfo)\n\n            if btTask.is_running(pids):\n                self.task_map[btid] = btTask\n                self.task_infos[btid] = task_infos[btid]\n                self.logger.info(\"回测任务%s已恢复\")\n            else:\n                # 之前记录过测回测任务，执行完成了，要更新回测数据\n                self.__update_bt_result__(tInfo[\"user\"], tInfo[\"straid\"], btid)\n        \n        self.__save_tasks__()\n            \n\n    def on_start(self, user:str, straid:str, btid:str):\n        pass\n\n    def on_stop(self, user:str, straid:str, btid:str):\n        self.__update_bt_result__(user, straid, btid)\n\n    def on_state(self, user:str, straid:str, btid:str, statInfo:dict):\n        self.user_bts[user][btid][\"state\"] = statInfo\n\n    def on_fund(self, user:str, straid:str, btid:str, fundInfo:dict):\n        pass"
  },
  {
    "path": "wtpy/monitor/WtLogger.py",
    "content": "import logging\nimport os\n\nclass WtLogger:\n\n    def __init__(self, catName:str='', filename:str=\"out.log\"):\n        self.logger = logging.getLogger(catName)\n        self.logger.setLevel(logging.DEBUG)\n\n        #创建一个handler，用于写入日志文件\n        log_path = os.getcwd()+\"/logs/\" # 指定文件输出路径，注意logs是个文件夹，一定要加上/，不然会导致输出路径错误，把logs变成文件名的一部分了\n        if not os.path.exists(log_path):\n            os.mkdir(log_path)\n        logname = log_path + filename #指定输出的日志文件名\n        fh = logging.FileHandler(logname,encoding = 'utf-8',mode='a')  # 指定utf-8格式编码，避免输出的日志文本乱码\n        fh.setLevel(logging.INFO)\n\n        #创建一个handler，用于将日志输出到控制台\n        ch = logging.StreamHandler()\n        ch.setLevel(logging.INFO)\n\n        # 定义handler的输出格式\n        formatter = logging.Formatter('[%(asctime)s - %(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')\n        fh.setFormatter(formatter)\n        ch.setFormatter(formatter)\n\n        # 给logger添加handler\n        self.logger.addHandler(fh)\n        self.logger.addHandler(ch)\n\n    def info(self, message:str):\n        self.logger.info(message)\n\n    def warn(self, message:str):\n        self.logger.warn(message)\n\n    def error(self, message:str):\n        self.logger.error(message)\n\n    def fatal(self, message:str):\n        self.logger.fatal(message)\n"
  },
  {
    "path": "wtpy/monitor/WtMonSvr.py",
    "content": "from flask import Flask, session, redirect, request, make_response\nfrom flask_compress  import Compress\nimport json\nimport datetime\nimport os\nimport hashlib\nimport sys\nimport base64\nimport chardet\nimport pytz\n\nfrom .WtLogger import WtLogger\nfrom .DataMgr import DataMgr, backup_file\nfrom .PushSvr import PushServer\nfrom .WatchDog import WatchDog, WatcherSink\nfrom .EventReceiver import EventReceiver, EventSink\nfrom .WtBtMon import WtBtMon\nfrom wtpy import WtDtServo\n\ndef pack_rsp(obj):\n    rsp = make_response(json.dumps(obj))\n    rsp.headers[\"content-type\"]= \"text/json;charset=utf-8\"\n    return rsp\n\ndef parse_data():\n    try:\n        data = request.get_data()\n        json_data = json.loads(data.decode(\"utf-8\"))\n        return True,json_data\n    except:\n        return False, {\n            \"result\": -998,\n            \"message\": \"请求数据解析失败\"\n        }\n\ndef get_param(json_data, key:str, type=str, defVal = \"\"):\n    if key not in json_data:\n        return defVal\n    else:\n        return type(json_data[key])\n\n#获取文件最后N行的函数\ndef get_tail(filename, N:int = 100, encoding=\"GBK\") :\n    filesize = os.path.getsize(filename)\n    blocksize = 10240\n    dat_file = open(filename, 'r', encoding=encoding)\n    last_line = \"\"\n    if filesize > blocksize :\n        maxseekpoint = (filesize // blocksize)\n        dat_file.seek((maxseekpoint-1)*blocksize)\n    elif filesize :\n        dat_file.seek(0, 0)\n    lines =  dat_file.readlines()\n    if lines :\n        last_line = lines[-N:]\n    dat_file.close()\n    return ''.join(last_line), len(last_line)\n\ndef check_auth():\n    usrInfo = session.get(\"userinfo\")\n    # session里没有用户信息\n    if usrInfo is None:\n        \n        return False, {\n            \"result\":-999,\n            \"message\":\"请先登录\"\n        }\n\n    # session里有用户信息，则要读取\n    exptime = session.get(\"expiretime\")\n    now = datetime.datetime.now().replace(tzinfo=pytz.timezone('UTC')).strftime(\"%Y.%m.%d %H:%M:%S\")\n    if now > exptime:\n        return False, {\n            \"result\":-999,\n            \"message\":\"登录已超时，请重新登录\"\n        }\n\n    return True, usrInfo\n\ndef get_cfg_tree(root:str, name:str):\n    if not os.path.exists(root):\n        return {\n            \"label\":name,\n            \"path\":root,\n            \"exist\":False,\n            \"isfile\":False,\n            \"children\":[]\n        }\n\n    if os.path.isfile(root):\n        return {\n            \"label\":name,\n            \"path\":root,\n            \"exist\":False,\n            \"isfile\":True\n        }\n\n    ret = {\n        \"label\":name,\n        \"path\":root,\n        \"exist\":True,\n        \"isfile\":False,\n        \"children\":[]\n    }\n\n    filepath = os.path.join(root, \"run.py\")\n    ret['children'].append({\n        \"label\":\"run.py\",\n        \"path\":filepath,\n        \"exist\":True,\n        \"isfile\":True,\n        \"children\":[]\n    })\n\n    filepath = os.path.join(root, \"config.json\")\n    ret['children'].append({\n        \"label\":\"config.json\",\n        \"path\":filepath,\n        \"exist\":True,\n        \"isfile\":True,\n        \"children\":[]\n    })\n\n    f = open(filepath, \"r\")\n    content = f.read()\n    f.close()\n    cfgObj = json.loads(content)\n    if \"executers\" in cfgObj:\n        filename = cfgObj[\"executers\"]\n        if type(filename) == str:\n            filepath = os.path.join(root, filename)\n            ret['children'].append({\n                \"label\":filename,\n                \"path\":filepath,\n                \"exist\":True,\n                \"isfile\":True,\n                \"children\":[]\n            })\n\n    if \"parsers\" in cfgObj:\n        filename = cfgObj[\"parsers\"]\n        if type(filename) == str:\n            filepath = os.path.join(root, filename)\n            ret['children'].append({\n                \"label\":filename,\n                \"path\":filepath,\n                \"exist\":True,\n                \"isfile\":True,\n                \"children\":[]\n            })\n\n    if \"traders\" in cfgObj:\n        filename = cfgObj[\"traders\"]\n        if type(filename) == str:\n            filepath = os.path.join(root, filename)\n            ret['children'].append({\n                \"label\":filename,\n                \"path\":filepath,\n                \"exist\":True,\n                \"isfile\":True,\n                \"children\":[]\n            })\n\n    filepath = os.path.join(root, 'generated')\n    ret[\"children\"].append(get_path_tree(filepath, 'generated', True))\n        \n    return ret\n\ndef get_path_tree(root:str, name:str, hasFile:bool = True):\n    if not os.path.exists(root):\n        return {\n            \"label\":name,\n            \"path\":root,\n            \"exist\":False,\n            \"isfile\":False,\n            \"children\":[]\n        }\n\n    if os.path.isfile(root):\n        return {\n            \"label\":name,\n            \"path\":root,\n            \"exist\":False,\n            \"isfile\":True\n        }\n\n    ret = {\n        \"label\":name,\n        \"path\":root,\n        \"exist\":True,\n        \"isfile\":False,\n        \"children\":[]\n    }\n    files = os.listdir(root, )\n    for filename in files:\n        if filename in ['__pycache__', '.vscode', 'wtpy', '__init__.py']:\n            continue\n        if filename[-3:] == 'pyc':\n            continue\n\n        filepath = os.path.join(root, filename)\n        if os.path.isfile(filepath):\n            if not hasFile:\n                continue\n            else:\n                ret[\"children\"].append({\n                    \"label\":filename,\n                    \"path\":filepath,\n                    \"exist\":True,\n                    \"isfile\":True})\n        else:\n            ret[\"children\"].append(get_path_tree(filepath, filename, hasFile))\n\n        ay1 = list()\n        ay2 = list()\n        for item in ret[\"children\"]:\n            if item[\"isfile\"]:\n                ay2.append(item)\n            else:\n                ay1.append(item)\n        ay = ay1 + ay2\n        ret[\"children\"] = ay\n    return ret\n\nclass WtMonSvr(WatcherSink):\n\n    def __init__(self, static_folder:str=\"\", static_url_path=\"/\", deploy_dir=\"C:/\"):\n        if len(static_folder) == 0:\n            static_folder = 'static'\n\n        self.logger = WtLogger(__name__, \"WtMonSvr.log\")\n\n        # 数据管理器，主要用于缓存各组合的数据\n        self.__data_mgr__ = DataMgr('data.db', logger=self.logger)\n\n        self.__bt_mon__:WtBtMon = None\n        self.__dt_servo__:WtDtServo = None\n\n        # 看门狗模块，主要用于调度各个组合启动关闭\n        self._dog = WatchDog(sink=self, db=self.__data_mgr__.get_db(), logger=self.logger)\n\n        app = Flask(__name__, instance_relative_config=True, static_folder=static_folder, static_url_path=static_url_path)\n        app.secret_key = \"!@#$%^&*()\"\n        Compress(app)\n        # app.debug = True\n        self.app = app\n        self.worker = None\n        self.deploy_dir = deploy_dir\n        self.deploy_tree = None\n\n        self.push_svr = PushServer(app, self.__data_mgr__, self.logger)\n\n        self.init_mgr_apis(app)\n\n    def set_bt_mon(self, btMon:WtBtMon):\n        self.__bt_mon__ = btMon\n        self.init_bt_apis(self.app)\n\n    def set_dt_servo(self, dtServo:WtDtServo):\n        self.__dt_servo__ = dtServo\n\n    def init_bt_apis(self, app:Flask):\n\n        # 拉取K线数据\n        @app.route(\"/bt/qrybars\", methods=[\"POST\"])\n        def qry_bt_bars():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            if self.__dt_servo__ is None:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"没有配置数据伺服\"\n                }\n                return pack_rsp(ret)\n\n            stdCode = get_param(json_data, \"code\")\n            period = get_param(json_data, \"period\")\n            fromTime = get_param(json_data, \"stime\", int, None)\n            dataCount = get_param(json_data, \"count\", int, None)\n            endTime = get_param(json_data, \"etime\", int)\n\n            bars = self.__dt_servo__.get_bars(stdCode=stdCode, period=period, fromTime=fromTime, dataCount=dataCount, endTime=endTime)\n            if bars is None:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"Data not found\"\n                }\n            else:\n                bar_list = [curBar.to_dict  for curBar in bars]\n                \n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\",\n                    \"bars\": bar_list\n                }\n\n            return pack_rsp(ret)\n\n        \n        # 拉取用户策略列表\n        @app.route(\"/bt/qrystras\", methods=[\"POST\"])\n        def qry_my_stras():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            ret = {\n                \"result\":0,\n                \"message\":\"OK\",\n                \"strategies\": self.__bt_mon__.get_strategies(user)\n            }\n\n            return pack_rsp(ret)\n\n        # 拉取策略代码\n        @app.route(\"/bt/qrycode\", methods=[\"POST\"])\n        def qry_stra_code():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略代码不存在\"\n                    }\n                else:\n                    content = self.__bt_mon__.get_strategy_code(user, straid)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"content\":content\n                    }\n\n            return pack_rsp(ret)\n\n        # 提交策略代码\n        @app.route(\"/bt/setcode\", methods=[\"POST\"])\n        def set_stra_code():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            content = get_param(json_data, \"content\")\n            if len(content) == 0 or len(straid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID和代码不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = self.__bt_mon__.set_strategy_code(user, straid, content)\n                    if ret:\n                        ret = {\n                            \"result\":0,\n                            \"message\":\"OK\"\n                        }\n                    else:\n                        ret = {\n                            \"result\":-3,\n                            \"message\":\"保存策略代码失败\"\n                        }\n\n            return pack_rsp(ret)\n\n        # 添加用户策略\n        @app.route(\"/bt/addstra\", methods=[\"POST\"])\n        def cmd_add_stra():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            name = get_param(json_data, \"name\")\n            if len(name) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略名称不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-3,\n                    \"message\":\"回测管理器未配置\"\n                }\n                return pack_rsp(ret)\n\n            straInfo = self.__bt_mon__.add_strategy(user, name)\n            if straInfo is None:\n                ret = {\n                    \"result\":-4,\n                    \"message\":\"策略添加失败\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"OK\",\n                    \"strategy\": straInfo\n                }\n\n            return pack_rsp(ret)\n\n        # 删除用户策略\n        @app.route(\"/bt/delstra\", methods=[\"POST\"])\n        def cmd_del_stra():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            if len(straid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = self.__bt_mon__.del_strategy(user, straid)\n                    if ret:\n                        ret = {\n                            \"result\":0,\n                            \"message\":\"OK\"\n                        }\n                    else:\n                        ret = {\n                            \"result\":-3,\n                            \"message\":\"保存策略代码失败\"\n                        }\n\n            return pack_rsp(ret)\n\n        # 获取策略回测列表\n        @app.route(\"/bt/qrystrabts\", methods=[\"POST\"])\n        def qry_stra_bts():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            if len(straid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"backtests\":self.__bt_mon__.get_backtests(user, straid)\n                    }\n\n            return pack_rsp(ret)\n\n        # 获取策略回测信号\n        @app.route(\"/bt/qrybtsigs\", methods=[\"POST\"])\n        def qry_stra_bt_signals():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            btid = get_param(json_data, \"btid\")\n            if len(straid) == 0 or len(btid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID和回测ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"signals\":self.__bt_mon__.get_bt_signals(user, straid, btid)\n                    }\n\n            return pack_rsp(ret)\n\n        # 删除策略回测列表\n        @app.route(\"/bt/delstrabt\", methods=[\"POST\"])\n        def cmd_del_stra_bt():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            btid = get_param(json_data, \"btid\")\n            if len(btid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"回测ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                self.__bt_mon__.del_backtest(user, btid)\n                ret = {\n                    \"result\":0,\n                    \"message\":\"OK\"\n                }\n\n            return pack_rsp(ret)\n\n        # 获取策略回测成交\n        @app.route(\"/bt/qrybttrds\", methods=[\"POST\"])\n        def qry_stra_bt_trades():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            btid = get_param(json_data, \"btid\")\n            if len(straid) == 0 or len(btid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID和回测ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"trades\":self.__bt_mon__.get_bt_trades(user, straid, btid)\n                    }\n\n            return pack_rsp(ret)\n\n        # 获取策略回测资金\n        @app.route(\"/bt/qrybtfunds\", methods=[\"POST\"])\n        def qry_stra_bt_funds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            btid = get_param(json_data, \"btid\")\n            if len(straid) == 0 or len(btid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID和回测ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"funds\":self.__bt_mon__.get_bt_funds(user, straid, btid)\n                    }\n\n            return pack_rsp(ret)\n\n        # 获取策略回测回合\n        @app.route(\"/bt/qrybtrnds\", methods=[\"POST\"])\n        def qry_stra_bt_rounds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            straid = get_param(json_data, \"straid\")\n            btid = get_param(json_data, \"btid\")\n            if len(straid) == 0 or len(btid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID和回测ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"rounds\":self.__bt_mon__.get_bt_rounds(user, straid, btid)\n                    }\n\n            return pack_rsp(ret)\n\n        # 启动策略回测\n        @app.route(\"/bt/runstrabt\", methods=[\"POST\"])\n        def cmd_run_stra_bt():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, userInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(userInfo)\n\n            user = userInfo[\"loginid\"]\n            role = userInfo[\"role\"]\n            if role not in ['researcher','superman']:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"没有权限\"\n                }\n                return pack_rsp(ret)\n\n            curDt = int(datetime.datetime.now().strftime(\"%Y%m%d\"))\n\n            straid = get_param(json_data, \"straid\")\n            fromtime = get_param(json_data, \"stime\", int, defVal=curDt)\n            endtime = get_param(json_data, \"etime\", int, defVal=curDt)\n            capital = get_param(json_data, \"capital\", float, defVal=500000)\n            slippage = get_param(json_data, \"slippage\", int, defVal=0)\n            if len(straid) == 0:\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"策略ID不能为空\"\n                }\n                return pack_rsp(ret)\n\n            if fromtime > endtime:\n                fromtime,endtime = endtime,fromtime\n\n            fromtime = fromtime*10000 + 900\n            endtime = endtime*10000 + 1515\n\n            if self.__bt_mon__ is None:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"回测管理器未配置\"\n                }\n            else:\n                if not self.__bt_mon__.has_strategy(user, straid):\n                    ret = {\n                        \"result\":-2,\n                        \"message\":\"策略不存在\"\n                    }\n                else:\n                    btInfo = self.__bt_mon__.run_backtest(user,straid,fromtime,endtime,capital,slippage)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"OK\",\n                        \"backtest\": btInfo\n                    }\n\n            return pack_rsp(ret)\n\n    def init_mgr_apis(self, app:Flask):\n\n        @app.route(\"/console\", methods=[\"GET\"])\n        def stc_console_index():\n            return redirect(\"./console/index.html\")\n\n        @app.route(\"/mobile\", methods=[\"GET\"])\n        def stc_mobile_index():\n            return redirect(\"./mobile/index.html\")\n\n\n        '''下面是API接口的编写'''\n        @app.route(\"/mgr/login\", methods=[\"POST\"])\n        def cmd_login():\n            \n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            if True:\n                user = get_param(json_data, \"loginid\")\n                pwd = get_param(json_data, \"passwd\")\n\n                if len(user) == 0 or len(pwd) == 0:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"用户名和密码不能为空\"\n                    }\n                else:\n                    encpwd = hashlib.md5((user+pwd).encode(\"utf-8\")).hexdigest()\n                    now = datetime.datetime.now()\n                    usrInf = self.__data_mgr__.get_user(user)\n                    if usrInf is None:\n                        ret = {\n                            \"result\":-1,\n                            \"message\":\"用户不存在\"\n                        }\n                    elif encpwd != usrInf[\"passwd\"]:\n                        ret = {\n                            \"result\":-1,\n                            \"message\":\"登录密码错误\"\n                        }\n                    else:\n                        usrInf.pop(\"passwd\")\n                        usrInf[\"loginip\"]=request.remote_addr\n                        usrInf[\"logintime\"]=now.strftime(\"%Y/%m/%d %H:%M:%S\")\n\n                        exptime = now + datetime.timedelta(minutes=360)  #360分钟令牌超时\n                        session[\"userinfo\"] = usrInf\n                        session[\"expiretime\"] = exptime.replace(tzinfo=pytz.timezone('UTC')).strftime(\"%Y.%m.%d %H:%M:%S\")\n\n                        ret = {\n                            \"result\":0,\n                            \"message\":\"Ok\",\n                            \"userinfo\":usrInf\n                        }\n\n                        self.__data_mgr__.log_action(usrInf, \"login\", json.dumps(request.headers.get('User-Agent')))\n            else:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"请求处理出现异常\",\n                }\n                if session.get(\"userinfo\") is not None:\n                    session.pop(\"userinfo\")\n\n            return pack_rsp(ret)\n\n        # 修改密码\n        @app.route(\"/mgr/modpwd\", methods=[\"POST\"])\n        def mod_pwd():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            oldpwd = get_param(json_data, \"oldpwd\")\n            newpwd = get_param(json_data, \"newpwd\")\n\n            if len(oldpwd) == 0 or len(newpwd) == 0:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"新旧密码都不能为空\"\n                }\n            else:\n                user = adminInfo[\"loginid\"]\n                oldencpwd = hashlib.md5((user+oldpwd).encode(\"utf-8\")).hexdigest()\n                usrInf = self.__data_mgr__.get_user(user)\n                if usrInf is None:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"用户不存在\"\n                    }\n                else:\n                    if oldencpwd != usrInf[\"passwd\"]:\n                        ret = {\n                            \"result\":-1,\n                            \"message\":\"旧密码错误\"\n                        }\n                    else:\n                        if 'builtin' in usrInf and usrInf[\"builtin\"]:\n                            #如果是内建账号要改密码，则先添加用户\n                            usrInf[\"passwd\"] = oldpwd\n                            self.__data_mgr__.add_user(usrInf, user)\n                            print(\"%s是内建账户，自动添加到数据库中\" % user)\n\n                        newencpwd = hashlib.md5((user+newpwd).encode(\"utf-8\")).hexdigest()\n                        self.__data_mgr__.mod_user_pwd(user, newencpwd, user)\n\n                        ret = {\n                            \"result\":0,\n                            \"message\":\"Ok\"\n                        }\n\n            return pack_rsp(ret)\n\n        # 添加组合\n        @app.route(\"/mgr/addgrp\", methods=[\"POST\"])\n        def cmd_add_group():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            id = get_param(json_data, \"groupid\")\n            name = get_param(json_data, \"name\")\n            path = get_param(json_data, \"path\")\n            info = get_param(json_data, \"info\")\n            gtype = get_param(json_data, \"gtype\")\n            env = get_param(json_data, \"env\")\n            datmod = get_param(json_data, \"datmod\")\n            mqurl = get_param(json_data, \"mqurl\")\n\n            action = get_param(json_data, \"action\")\n            if action == \"\":\n                action = \"add\"\n\n            if len(id) == 0 or len(name) == 0 or len(gtype) == 0:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合ID、名称、类型都不能为空\"\n                }\n            elif not os.path.exists(path) or not os.path.isdir(path):\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"组合运行目录不正确\"\n                }\n            elif action == \"add\" and self.__data_mgr__.has_group(id):\n                ret = {\n                    \"result\":-3,\n                    \"message\":\"组合ID不能重复\"\n                }\n            else:\n                try:\n                    grpInfo = {\n                        \"id\":id,\n                        \"name\":name,\n                        \"path\":path,\n                        \"info\":info,\n                        \"gtype\":gtype,\n                        \"datmod\":datmod,\n                        \"env\":env,\n                        \"mqurl\":mqurl\n                    }   \n\n                    if self.__data_mgr__.add_group(grpInfo):\n                        ret = {\n                            \"result\":0,\n                            \"message\":\"Ok\"\n                        }\n\n                        if action == \"add\":\n                            self.__data_mgr__.log_action(adminInfo, \"addgrp\", json.dumps(grpInfo))\n                        else:\n                            self.__data_mgr__.log_action(adminInfo, \"modgrp\", json.dumps(grpInfo))\n\n                        self._dog.updateMQURL(id, mqurl)\n                    else:\n                        ret = {\n                            \"result\":-2,\n                            \"message\":\"添加用户失败\"\n                        }\n                except:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"请求解析失败\"\n                    }\n\n            return pack_rsp(ret)\n\n        # 删除组合\n        @app.route(\"/mgr/delgrp\", methods=[\"POST\"])\n        def cmd_del_group():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            id = get_param(json_data, \"groupid\")\n\n            if len(id) == 0:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合ID不能为空\"\n                }\n            elif not self.__data_mgr__.has_group(id):\n                ret = {\n                    \"result\":-3,\n                    \"message\":\"该组合不存在\"\n                }\n            elif self._dog.isRunning(id):\n                ret = {\n                    \"result\":-3,\n                    \"message\":\"请先停止该组合\"\n                }\n            else:\n                if True:\n                    self._dog.delApp(id)\n                    self.__data_mgr__.del_group(id)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\"\n                    }\n\n                    self.__data_mgr__.log_action(adminInfo, \"delgrp\", id)\n                else:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"请求解析失败\"\n                    }\n\n            return pack_rsp(ret)\n\n        # 组合停止\n        @app.route(\"/mgr/stopgrp\", methods=[\"POST\"])\n        def cmd_stop_group():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n            \n            grpid = get_param(json_data, \"groupid\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                if self._dog.isRunning(grpid):\n                    self._dog.stop(grpid)\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\"\n                }\n\n                self.__data_mgr__.log_action(adminInfo, \"stopgrp\", grpid)\n\n            return pack_rsp(ret)\n        \n        # 组合启动\n        @app.route(\"/mgr/startgrp\", methods=[\"POST\"])\n        def cmd_start_group():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n            \n            grpid = get_param(json_data, \"groupid\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                if not self._dog.isRunning(grpid):\n                    self._dog.start(grpid)\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\"\n                }\n                self.__data_mgr__.log_action(adminInfo, \"startgrp\", grpid)\n\n            return pack_rsp(ret)\n\n        # 获取执行的python进程的路径\n        @app.route(\"/mgr/qryexec\", methods=[\"POST\"])\n        def qry_exec_path():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            ret = {\n                \"result\":0,\n                \"message\":\"Ok\",\n                \"path\": sys.executable\n            }\n\n            return pack_rsp(ret)\n\n        # 配置监控\n        @app.route(\"/mgr/qrymon\", methods=[\"POST\"])\n        def qry_mon_cfg():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                monCfg = self._dog.getAppConf(grpid)\n                if monCfg is None:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"ok\"\n                    }\n                else:\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"ok\",\n                        \"config\":monCfg\n                    }\n\n            return pack_rsp(ret)\n\n        # 配置监控\n        @app.route(\"/mgr/cfgmon\", methods=[\"POST\"])\n        def cmd_config_monitor():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            #这里本来是要做检查的，算了，先省事吧\n            isGrp = get_param(json_data, \"group\", bool, False)\n            \n            self._dog.applyAppConf(json_data, isGrp)\n            ret = {\n                \"result\":0,\n                \"message\":\"ok\"\n            }\n            self.__data_mgr__.log_action(adminInfo, \"cfgmon\", json.dumps(json_data))\n\n            return pack_rsp(ret)\n\n        # 查询目录结构\n        @app.route(\"/mgr/qrydir\", methods=[\"POST\"])\n        def qry_directories():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            if True:\n                if self.deploy_tree is None:\n                    self.deploy_tree = get_path_tree(self.deploy_dir, \"root\")\n\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\",\n                    \"tree\":self.deploy_tree\n                }\n            else:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"请求解析失败\"\n                }\n\n            return pack_rsp(ret)\n\n        # 查询目录结构\n        @app.route(\"/mgr/qrygrpdir\", methods=[\"POST\"])\n        def qry_grp_directories():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                monCfg = self.__data_mgr__.get_group(grpid)\n\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\",\n                    \"tree\": get_cfg_tree(monCfg[\"path\"], \"root\")\n                }\n\n            return pack_rsp(ret)\n\n        # 查询组合列表\n        @app.route(\"/mgr/qrygrp\", methods=[\"POST\"])\n        def qry_groups():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            try:\n                groups = self.__data_mgr__.get_groups()\n                for grpInfo in groups:\n                    grpInfo[\"running\"] = self._dog.isRunning(grpInfo[\"id\"])\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\",\n                    \"groups\":groups\n                }\n            except:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"请求解析失败\"\n                }\n\n            return pack_rsp(ret)\n\n        # 查询文件信息\n        @app.route(\"/mgr/qrygrpfile\", methods=[\"POST\"])\n        def qry_group_file():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            path = get_param(json_data, \"path\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                monCfg = self.__data_mgr__.get_group(grpid)\n                root = monCfg[\"path\"]\n                if path[:len(root)] != root:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"目标文件不在当前组合下\"\n                    }\n                else:\n                    f = open(path,'rb')\n                    content = f.read()\n                    f.close()\n\n                    encoding = chardet.detect(content)[\"encoding\"]\n                    content = content.decode(encoding)\n\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\",\n                        \"content\": content\n                    }\n\n            return pack_rsp(ret)\n\n        # 提交组合文件\n        @app.route(\"/mgr/cmtgrpfile\", methods=[\"POST\"])\n        def cmd_commit_group_file():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            content = get_param(json_data, \"content\")\n            path = get_param(json_data, \"path\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                monCfg = self.__data_mgr__.get_group(grpid)\n                root = monCfg[\"path\"]\n                if path[:len(root)] != root:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"目标文件不在当前组合下\"\n                    }\n                else:\n                    try:\n                        f = open(path,'rb')\n                        old_content = f.read()\n                        f.close()\n                        encoding = chardet.detect(old_content)[\"encoding\"]\n\n                        backup_file(path)\n\n                        f = open(path,'wb')\n                        f.write(content.encode(encoding))\n                        f.close()\n\n                        ret = {\n                            \"result\":0,\n                            \"message\":\"Ok\"\n                        }\n                    except:\n                        ret = {\n                            \"result\":-1,\n                            \"message\":\"文件保存失败\"\n                        }\n\n            return pack_rsp(ret)\n        \n        # 查询策略列表\n        @app.route(\"/mgr/qrystras\", methods=[\"POST\"])\n        def qry_strategys():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\",\n                    \"strategies\":self.__data_mgr__.get_strategies(grpid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询通道列表\n        @app.route(\"/mgr/qrychnls\", methods=[\"POST\"])\n        def qry_channels():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\",\n                    \"channels\":self.__data_mgr__.get_channels(grpid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询组合日志\n        @app.route(\"/mgr/qrylogs\", methods=[\"POST\"])\n        def qry_logs():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"id\")\n            logtype = get_param(json_data, \"type\")\n\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                grpInfo = self.__data_mgr__.get_group(grpid)\n                try:\n                    logfolder = os.path.join(grpInfo[\"path\"], \"./Logs/\")\n                    file_list = os.listdir(logfolder)\n                    targets = list()\n                    for fname in file_list:\n                        if fname[:6] == \"Runner\":\n                            targets.append(fname)\n\n                    targets.sort()\n                    filename = os.path.join(logfolder, targets[-1])\n                    content,lines = get_tail(filename, 100)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\",\n                        \"content\":content,\n                        \"lines\":lines\n                    }\n                except:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"请求解析失败\"\n                    }\n\n            return pack_rsp(ret)\n\n        # 查询策略成交\n        @app.route(\"/mgr/qrytrds\", methods=[\"POST\"])\n        def qry_trades():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            sid = get_param(json_data, \"strategyid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"trades\": self.__data_mgr__.get_trades(gid, sid)\n                }\n                    \n\n            return pack_rsp(ret)\n\n        # 查询策略信号\n        @app.route(\"/mgr/qrysigs\", methods=[\"POST\"])\n        def qry_signals():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            sid = get_param(json_data, \"strategyid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"signals\": self.__data_mgr__.get_signals(gid, sid)\n                }\n                    \n\n            return pack_rsp(ret)\n\n        # 查询策略回合\n        @app.route(\"/mgr/qryrnds\", methods=[\"POST\"])\n        def qry_rounds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            sid = get_param(json_data, \"strategyid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"rounds\": self.__data_mgr__.get_rounds(gid, sid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询策略持仓\n        @app.route(\"/mgr/qrypos\", methods=[\"POST\"])\n        def qry_positions():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            sid = get_param(json_data, \"strategyid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"positions\": self.__data_mgr__.get_positions(gid, sid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询策略持仓\n        @app.route(\"/mgr/qryfunds\", methods=[\"POST\"])\n        def qry_funds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            sid = get_param(json_data, \"strategyid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"funds\": self.__data_mgr__.get_funds(gid, sid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询通道订单\n        @app.route(\"/mgr/qrychnlords\", methods=[\"POST\"])\n        def qry_channel_orders():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            cid = get_param(json_data, \"channelid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"orders\": self.__data_mgr__.get_channel_orders(gid, cid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询通道成交\n        @app.route(\"/mgr/qrychnltrds\", methods=[\"POST\"])\n        def qry_channel_trades():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            cid = get_param(json_data, \"channelid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"trades\": self.__data_mgr__.get_channel_trades(gid, cid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询通道持仓\n        @app.route(\"/mgr/qrychnlpos\", methods=[\"POST\"])\n        def qry_channel_position():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            cid = get_param(json_data, \"channelid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"positions\": self.__data_mgr__.get_channel_positions(gid, cid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询通道资金\n        @app.route(\"/mgr/qrychnlfund\", methods=[\"POST\"])\n        def qry_channel_funds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n            cid = get_param(json_data, \"channelid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"funds\": self.__data_mgr__.get_channel_funds(gid, cid)\n                }\n\n            return pack_rsp(ret)\n\n        # 查询用户列表\n        @app.route(\"/mgr/qryusers\", methods=[\"POST\"])\n        def qry_users():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            users = self.__data_mgr__.get_users()\n            for usrInfo in users:\n                usrInfo.pop(\"passwd\")\n            \n            ret = {\n                \"result\":0,\n                \"message\":\"\",\n                \"users\": users\n            }\n                \n\n            return pack_rsp(ret)\n\n        # 提交用户信息\n        @app.route(\"/mgr/cmtuser\", methods=[\"POST\"])\n        def cmd_commit_user():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            self.__data_mgr__.add_user(json_data, adminInfo[\"loginid\"])\n            ret = {\n                \"result\":0,\n                \"message\":\"Ok\"\n            }\n\n            self.__data_mgr__.log_action(adminInfo, \"cmtuser\", json.dumps(json_data))\n\n            return pack_rsp(ret)\n\n        # 删除用户\n        @app.route(\"/mgr/deluser\", methods=[\"POST\"])\n        def cmd_delete_user():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            loginid = get_param(json_data, \"loginid\")\n\n            if self.__data_mgr__.del_user(loginid, adminInfo[\"loginid\"]):\n                self.__data_mgr__.log_action(adminInfo, \"delusr\", loginid)\n            ret = {\n                \"result\":0,\n                \"message\":\"Ok\"\n            }\n\n            return pack_rsp(ret)\n\n        # 修改密码\n        @app.route(\"/mgr/resetpwd\", methods=[\"POST\"])\n        def reset_pwd():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            user = get_param(json_data, \"loginid\")\n            pwd = get_param(json_data, \"passwd\")\n\n            if len(pwd) == 0 or len(user) == 0:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"密码都不能为空\"\n                }\n            else:\n                encpwd = hashlib.md5((user+pwd).encode(\"utf-8\")).hexdigest()\n                usrInf = self.__data_mgr__.get_user(user)\n                if usrInf is None:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"用户不存在\"\n                    }\n                else:\n                    self.__data_mgr__.mod_user_pwd(user, encpwd, adminInfo[\"loginid\"])\n                    self.__data_mgr__.log_action(adminInfo, \"resetpwd\", loginid)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\"\n                    }\n\n            return pack_rsp(ret)\n\n        # 查询操作记录\n        @app.route(\"/mgr/qryacts\", methods=[\"POST\"])\n        def qry_actions():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            sdate = get_param(json_data, \"sdate\")\n            edate = get_param(json_data, \"edate\")\n\n            ret = {\n                \"result\":0,\n                \"message\":\"\",\n                \"actions\": self.__data_mgr__.get_actions(sdate, edate)\n            }   \n\n            return pack_rsp(ret)\n\n        # 查询全部调度\n        @app.route(\"/mgr/qrymons\", methods=[\"POST\"])\n        def qry_mon_apps():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            schedules = self._dog.get_apps()\n            for appid in schedules:\n                schedules[appid][\"group\"] = self.__data_mgr__.has_group(appid)                \n\n            ret = {\n                \"result\":0,\n                \"message\":\"\",\n                \"schedules\": schedules\n            }   \n\n            return pack_rsp(ret)\n\n        @app.route(\"/mgr/startapp\", methods=[\"POST\"])\n        def cmd_start_app():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n            \n            appid = get_param(json_data, \"appid\")\n            if not self._dog.has_app(appid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"App不存在\"\n                }\n            else:\n                if not self._dog.isRunning(appid):\n                    self._dog.start(appid)\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\"\n                }\n                self.__data_mgr__.log_action(adminInfo, \"startapp\", appid)\n\n            return pack_rsp(ret)\n\n        # 组合停止\n        @app.route(\"/mgr/stopapp\", methods=[\"POST\"])\n        def cmd_stop_app():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n            \n            appid = get_param(json_data, \"appid\")\n            if not self._dog.has_app(appid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"App不存在\"\n                }\n            else:\n                if self._dog.isRunning(appid):\n                    self._dog.stop(appid)\n                ret = {\n                    \"result\":0,\n                    \"message\":\"Ok\"\n                }\n\n                self.__data_mgr__.log_action(adminInfo, \"stopapp\", appid)\n\n            return pack_rsp(ret)\n\n        # 查询调度日志\n        @app.route(\"/mgr/qrymonlog\", methods=[\"POST\"])\n        def qry_mon_logs():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n            \n            filename = os.getcwd() + \"/logs/WtMonSvr.log\"\n            content,lines = get_tail(filename, 100, \"UTF-8\")\n            ret = {\n                \"result\":0,\n                \"message\":\"Ok\",\n                \"content\":content,\n                \"lines\":lines\n            }\n\n            return pack_rsp(ret)\n\n        # 删除调度任务\n        @app.route(\"/mgr/delapp\", methods=[\"POST\"])\n        def cmd_del_app():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, adminInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(adminInfo)\n\n            id = get_param(json_data, \"appid\")\n\n            if len(id) == 0:\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合ID不能为空\"\n                }\n            elif self.__data_mgr__.has_group(id):\n                ret = {\n                    \"result\":-2,\n                    \"message\":\"该调度任务是策略组合，请从组合管理删除\"\n                }\n            elif not self._dog.has_app(id):\n                ret = {\n                    \"result\":-3,\n                    \"message\":\"该调度任务不存在\"\n                }\n            elif self._dog.isRunning(id):\n                ret = {\n                    \"result\":-4,\n                    \"message\":\"请先停止该任务\"\n                }\n            else:\n                if True:\n                    self._dog.delApp(id)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\"\n                    }\n\n                    self.__data_mgr__.log_action(adminInfo, \"delapp\", id)\n                else:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"请求解析失败\"\n                    }\n\n            return pack_rsp(ret)\n\n        # 查询组合持仓\n        @app.route(\"/mgr/qryportpos\", methods=[\"POST\"])\n        def qry_group_positions():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"positions\": self.__data_mgr__.get_group_positions(gid)\n                }\n                    \n\n            return pack_rsp(ret)\n\n        # 查询组合成交\n        @app.route(\"/mgr/qryporttrd\", methods=[\"POST\"])\n        def qry_group_trades():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"trades\": self.__data_mgr__.get_group_trades(gid)\n                }\n                    \n\n            return pack_rsp(ret)\n\n        # 查询组合回合\n        @app.route(\"/mgr/qryportrnd\", methods=[\"POST\"])\n        def qry_group_rounds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"rounds\": self.__data_mgr__.get_group_rounds(gid)\n                }\n                    \n\n            return pack_rsp(ret)\n        \n        # 查询组合资金\n        @app.route(\"/mgr/qryportfunds\", methods=[\"POST\"])\n        def qry_group_funds():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"funds\": self.__data_mgr__.get_group_funds(gid)\n                }\n                    \n\n            return pack_rsp(ret)\n\n        # 查询组合绩效分析\n        @app.route(\"/mgr/qryportperfs\", methods=[\"POST\"])\n        def qry_group_perfs():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"performance\": self.__data_mgr__.get_group_performances(gid)\n                }\n                    \n            return pack_rsp(ret)\n\n        # 查询组合过滤器\n        @app.route(\"/mgr/qryportfilters\", methods=[\"POST\"])\n        def qry_group_filters():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            gid = get_param(json_data, \"groupid\")\n\n            if not self.__data_mgr__.has_group(gid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                ret = {\n                    \"result\":0,\n                    \"message\":\"\",\n                    \"filters\": self.__data_mgr__.get_group_filters(gid)\n                }\n                    \n            return pack_rsp(ret)\n\n        # 提交组合过滤器\n        @app.route(\"/mgr/cmtgrpfilters\", methods=[\"POST\"])\n        def cmd_commit_group_filters():\n            bSucc, json_data = parse_data()\n            if not bSucc:\n                return pack_rsp(json_data)\n\n            bSucc, usrInfo = check_auth()\n            if not bSucc:\n                return pack_rsp(usrInfo)\n\n            grpid = get_param(json_data, \"groupid\")\n            filters = get_param(json_data, \"filters\", type=dict)\n            if not self.__data_mgr__.has_group(grpid):\n                ret = {\n                    \"result\":-1,\n                    \"message\":\"组合不存在\"\n                }\n            else:\n                try:\n                    self.__data_mgr__.set_group_filters(grpid, filters)\n                    ret = {\n                        \"result\":0,\n                        \"message\":\"Ok\"\n                    }\n                except:\n                    ret = {\n                        \"result\":-1,\n                        \"message\":\"过滤器保存失败\"\n                    }\n\n            return pack_rsp(ret)\n            \n    \n    def __run_impl__(self, port:int, host:str):\n        self._dog.run()\n        self.push_svr.run(port = port, host = host)\n    \n    def run(self, port:int = 8080, host=\"0.0.0.0\", bSync:bool = True):\n        if bSync:\n            self.__run_impl__(port, host)\n        else:\n            import threading\n            self.worker = threading.Thread(target=self.__run_impl__, args=(port,host,))\n            self.worker.setDaemon(True)\n            self.worker.start()\n\n    def init_logging(self):\n        pass\n\n    def on_start(self, grpid:str):\n        if self.__data_mgr__.has_group(grpid):\n            self.push_svr.notifyGrpEvt(grpid, 'start')\n\n    def on_stop(self, grpid:str):\n        if self.__data_mgr__.has_group(grpid):\n            self.push_svr.notifyGrpEvt(grpid, 'stop')\n    \n    def on_output(self, grpid:str, tag:str, time:int, message:str):\n        if self.__data_mgr__.has_group(grpid):\n            self.push_svr.notifyGrpLog(grpid, tag, time, message)\n\n    def on_order(self, grpid:str, chnl:str, ordInfo:dict):\n        self.push_svr.notifyGrpChnlEvt(grpid, chnl, 'order', ordInfo)\n\n    def on_trade(self, grpid:str, chnl:str, trdInfo:dict):\n        self.push_svr.notifyGrpChnlEvt(grpid, chnl, 'trade', trdInfo)\n    \n    def on_notify(self, grpid:str, chnl:str, message:str):\n        self.push_svr.notifyGrpChnlEvt(grpid, chnl, 'notify', message)"
  },
  {
    "path": "wtpy/monitor/__init__.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2020-08-25 15:38:28\nLastEditors: Wesley\nLastEditTime: 2021-08-16 17:29:42\n'''\nfrom .WtMonSvr import WtMonSvr\nfrom .WtBtMon import WtBtMon\nfrom .WtLogger import WtLogger\n\n__all__ = [\"WtMonSvr\",\"WtBtMon\",\"WtLogger\"]"
  },
  {
    "path": "wtpy/monitor/static/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/index.html",
    "content": "<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>策略控制台</title><link href=./static/css/app.7124646856965c4b556dceff0ae7d6c3.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.cd39a6c53a9d7599c08c.js></script><script type=text/javascript src=./static/js/app.a102fec3f69ea23c673f.js></script></body></html>"
  },
  {
    "path": "wtpy/monitor/static/console/static/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/static/css/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/static/css/app.7b6729291f05cec91b99cfd44c17df6b.css",
    "content": "#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;width:100%}body{margin:0}.el-main{padding:4px!important}.box{border:1px solid #e4e7ed;margin:4px;border-radius:4px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track-piece{background-color:#f1f1f1;border-radius:2px}::-webkit-scrollbar-thumb:vertical{height:6px;background-color:#ccc;border-radius:2px}::-webkit-scrollbar-thumb:horizontal{width:6px;background-color:#ccc;border-radius:2px}.el-table td,.el-table th{padding:4px 0}.text-danger{color:#f56c6c;font-weight:700}.text-warning{color:#e6a23c;font-weight:700}.text-success{color:#67c23a;font-weight:700}.text-info{color:#909399;font-weight:700}[data-v-02eab36d]{margin:0}.el-input__inner[data-v-02eab36d]{border-radius:10px!important;height:35px!important;line-height:35px!important;font-size:12px}.el-button[data-v-02eab36d]{width:100%;border-radius:10px;height:35px!important;line-height:35px!important;padding:0}.el-checkbox__label[data-v-02eab36d]{font-size:12px;color:#a7aab2;padding-left:5px}.loginBox[data-v-02eab36d]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100vh;width:100%}.login[data-v-02eab36d]{width:240px;height:400px;text-align:center}.logo[data-v-02eab36d]{width:100px;margin:0 auto}.log img[data-v-02eab36d]{width:100%}.loginForm[data-v-02eab36d]{margin-top:30px}.loginForm div[data-v-02eab36d]{width:100%;margin:5px auto}#index[data-v-ce9460cc]{height:100%;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.statusbar[data-v-ce9460cc]{height:36px!important}.row[data-v-ce9460cc],.statusbar[data-v-ce9460cc]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.el-menu[data-v-ce9460cc]{border-right:0 solid transparent!important}.user[data-v-ce9460cc]{font-size:16px;display:block;margin:3px 0}.button[data-v-ce9460cc]{font-size:18px;padding:4px;font-weight:700;color:#909399}.button[data-v-ce9460cc]:hover{cursor:pointer}.userhead[data-v-ce9460cc]{font-size:44px;color:#909399}.userhead[data-v-ce9460cc]:hover{cursor:pointer;color:#f56c6c}.group[data-v-ce9460cc]{background-color:#a3b8e3;padding:2px 4px;color:#2a3a57;border-radius:2px}.channel[data-v-ce9460cc]{background-color:#c2dbff;padding:2px 4px;color:#2a3a57;border-radius:2px}.title-success[data-v-ce9460cc]{background-color:#9ee379;padding:2px 4px;color:#2a3a57;border-radius:2px}.title-warning[data-v-ce9460cc]{background-color:#ffd16e;padding:2px 4px;color:#2a3a57;border-radius:2px}.time[data-v-ce9460cc]{color:#5e93fc;padding:2px 4px}.message[data-v-ce9460cc]{padding:2px 4px;color:#707070}.scroller[data-v-ce9460cc]{padding-top:5px;padding-left:5px}.scroller[data-v-ce9460cc]:hover{cursor:pointer;border:1px solid #f56c6c;padding-top:4px;padding-left:4px}.el-menu--horizontal>.el-menu-item[data-v-6717c4fd]{float:left;height:36px;line-height:36px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item.is-active[data-v-6717c4fd]{border-bottom:2px solid #000;color:#303133}.el-menu.el-menu--horizontal[data-v-6717c4fd]{border-bottom:0 solid #e6e6e6}.el-header[data-v-6717c4fd]{border-bottom:1px solid #e6e6e6}.dialog-group .el-row[data-v-6717c4fd]{margin:4px 8px;padding:4px 0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;vertical-align:middle;height:36px}.simtab[data-v-7f597c06]{padding:0 20px;height:100%;line-height:39px;border:1px solid #e4e7ed;border-bottom:none;border-top-left-radius:4px;border-top-right-radius:4px;min-width:56px;font-size:14px}.el-textarea__inner[data-v-7f597c06]{height:100%!important}.el-select[data-v-7f597c06]{width:120px}.el-header[data-v-d91c86fe]{padding:0 4px}.table[data-v-d91c86fe]{width:100%;height:100%}.el-select[data-v-d91c86fe]{width:120px}.el-header[data-v-b10ba514]{padding:0 4px}.table[data-v-b10ba514]{width:100%;height:100%}.el-select[data-v-b10ba514]{width:120px}.el-header[data-v-4147835e]{padding:0 4px}.table[data-v-4147835e]{width:100%;height:100%}.filter[data-v-4147835e]{font-size:24px;font-weight:700}.filter-row[data-v-4147835e]{padding-top:4px;padding-bottom:4px}.filter-channel[data-v-4147835e],.filter-code[data-v-4147835e],.filter-strategy[data-v-4147835e]{padding-left:4px}.filter-pane[data-v-4147835e]{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:2px}.delete-btn[data-v-4147835e]{float:right;color:#ff4949}.delete-btn i[data-v-4147835e]{color:#ff4949}.CodeMirror{height:100%!important;font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:transparent}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5)}.cm-animate-fat-cursor,.cm-fat-cursor-mark{-webkit-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;background-color:#7e7}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-webkit-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:\"\"}span.CodeMirror-selectedtext{background:none}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:\"\\25BE\"}.CodeMirror-foldgutter-folded:after{content:\"\\25B8\"}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid #000;border-radius:4px 4px 4px 4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark{background-position:0 100%;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=\")}.CodeMirror-lint-mark-error{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==\")}.CodeMirror-lint-marker{background-position:50%;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message{padding-left:18px;background-position:0 0;background-repeat:no-repeat}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=\")}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=\")}.CodeMirror-lint-marker-multiple{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC\");background-repeat:no-repeat;background-position:100% 100%;width:100%;height:100%}.empty-box[data-v-53f6add5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100vh;width:100%}.content[data-v-53f6add5]{width:240px;height:400px;text-align:center}.week-marker[data-v-4b8c701c]{-webkit-box-flex:0;-ms-flex:0;flex:0;padding-right:12px}.config-row[data-v-4b8c701c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:8px 4px}.el-row[data-v-4b8c701c]{padding:8px 4px}.task-item[data-v-4b8c701c]{width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline}.config-label[data-v-4b8c701c]{color:#606266;font-weight:500;font-size:14px}[data-v-0cbbd64e]{margin:0}.loginBox[data-v-0cbbd64e]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100vh;width:100%}.login[data-v-0cbbd64e]{width:240px;height:400px;text-align:center}.simtab[data-v-081057d1]{padding:0 20px;height:100%;line-height:39px;border:1px solid #e4e7ed;border-bottom:none;border-top-left-radius:4px;border-top-right-radius:4px;min-width:56px;font-size:14px}.CodeMirror[data-v-081057d1]{height:100%!important}.btopt-btn[data-v-081057d1]:hover{cursor:pointer;color:#f56c6c}.stra-item[data-v-081057d1]{padding:8px 16px;border-bottom:1px solid #e4e7ed}.stra-item[data-v-081057d1]:hover{background-color:#f5f7fa;cursor:pointer}.stra-list[data-v-081057d1]:nth-child(odd){background-color:#fafafa}.stra-list[data-v-081057d1]{padding:4px 0}.stra-title[data-v-081057d1]{font-size:16px}.stra-label[data-v-081057d1],.stra-mdd[data-v-081057d1],.stra-return[data-v-081057d1]{color:#707070;font-size:14px}.button[data-v-081057d1]{font-weight:700}.button[data-v-081057d1],.toolbar[data-v-081057d1]{padding:4px;color:#909399}.button[data-v-081057d1]:hover,.toolbar[data-v-081057d1]:hover{cursor:pointer;color:#f56c6c}.divider[data-v-081057d1]{display:block;height:1px;width:100%;margin:4px 0;background-color:#dcdfe6}.table[data-v-081057d1]{width:100%;height:100%}.el-tabs__header{margin:0}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:none;background:transparent;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.panel[data-v-64b19f62]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;border-right:1px solid #dcdfe6}.panel-tag[data-v-64b19f62]{text-align:center;font-weight:700}.panel-val[data-v-64b19f62]{text-align:center}.divider[data-v-64b19f62]{display:block;height:1px;width:100%;margin:4px 0;background-color:#dcdfe6}.table[data-v-42cf5d6d],.table[data-v-64b19f62]{width:100%;height:100%}.simtab[data-v-42cf5d6d]{padding:0 20px;height:100%;line-height:39px;border:1px solid #e4e7ed;border-bottom:none;border-top-left-radius:4px;border-top-right-radius:4px;min-width:56px;font-size:14px}.el-textarea__inner[data-v-42cf5d6d]{height:100%!important}.simtab[data-v-c381bfac]{padding:0 20px;height:100%;line-height:39px;border:1px solid #e4e7ed;border-bottom:none;border-top-left-radius:4px;border-top-right-radius:4px;min-width:56px;font-size:14px}.dialog-user .el-row[data-v-c381bfac]{margin:4px 8px;padding:4px 0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;vertical-align:middle;height:36px}.el-pagination--small .arrow.disabled,.el-table--hidden,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(static/fonts/element-icons.535877f.woff) format(\"woff\"),url(static/fonts/element-icons.732389d.ttf) format(\"truetype\");font-weight:400;font-display:\"auto\";font-style:normal}[class*=\" el-icon-\"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:\"\\E6A0\"}.el-icon-ice-cream-square:before{content:\"\\E6A3\"}.el-icon-lollipop:before{content:\"\\E6A4\"}.el-icon-potato-strips:before{content:\"\\E6A5\"}.el-icon-milk-tea:before{content:\"\\E6A6\"}.el-icon-ice-drink:before{content:\"\\E6A7\"}.el-icon-ice-tea:before{content:\"\\E6A9\"}.el-icon-coffee:before{content:\"\\E6AA\"}.el-icon-orange:before{content:\"\\E6AB\"}.el-icon-pear:before{content:\"\\E6AC\"}.el-icon-apple:before{content:\"\\E6AD\"}.el-icon-cherry:before{content:\"\\E6AE\"}.el-icon-watermelon:before{content:\"\\E6AF\"}.el-icon-grape:before{content:\"\\E6B0\"}.el-icon-refrigerator:before{content:\"\\E6B1\"}.el-icon-goblet-square-full:before{content:\"\\E6B2\"}.el-icon-goblet-square:before{content:\"\\E6B3\"}.el-icon-goblet-full:before{content:\"\\E6B4\"}.el-icon-goblet:before{content:\"\\E6B5\"}.el-icon-cold-drink:before{content:\"\\E6B6\"}.el-icon-coffee-cup:before{content:\"\\E6B8\"}.el-icon-water-cup:before{content:\"\\E6B9\"}.el-icon-hot-water:before{content:\"\\E6BA\"}.el-icon-ice-cream:before{content:\"\\E6BB\"}.el-icon-dessert:before{content:\"\\E6BC\"}.el-icon-sugar:before{content:\"\\E6BD\"}.el-icon-tableware:before{content:\"\\E6BE\"}.el-icon-burger:before{content:\"\\E6BF\"}.el-icon-knife-fork:before{content:\"\\E6C1\"}.el-icon-fork-spoon:before{content:\"\\E6C2\"}.el-icon-chicken:before{content:\"\\E6C3\"}.el-icon-food:before{content:\"\\E6C4\"}.el-icon-dish-1:before{content:\"\\E6C5\"}.el-icon-dish:before{content:\"\\E6C6\"}.el-icon-moon-night:before{content:\"\\E6EE\"}.el-icon-moon:before{content:\"\\E6F0\"}.el-icon-cloudy-and-sunny:before{content:\"\\E6F1\"}.el-icon-partly-cloudy:before{content:\"\\E6F2\"}.el-icon-cloudy:before{content:\"\\E6F3\"}.el-icon-sunny:before{content:\"\\E6F6\"}.el-icon-sunset:before{content:\"\\E6F7\"}.el-icon-sunrise-1:before{content:\"\\E6F8\"}.el-icon-sunrise:before{content:\"\\E6F9\"}.el-icon-heavy-rain:before{content:\"\\E6FA\"}.el-icon-lightning:before{content:\"\\E6FB\"}.el-icon-light-rain:before{content:\"\\E6FC\"}.el-icon-wind-power:before{content:\"\\E6FD\"}.el-icon-baseball:before{content:\"\\E712\"}.el-icon-soccer:before{content:\"\\E713\"}.el-icon-football:before{content:\"\\E715\"}.el-icon-basketball:before{content:\"\\E716\"}.el-icon-ship:before{content:\"\\E73F\"}.el-icon-truck:before{content:\"\\E740\"}.el-icon-bicycle:before{content:\"\\E741\"}.el-icon-mobile-phone:before{content:\"\\E6D3\"}.el-icon-service:before{content:\"\\E6D4\"}.el-icon-key:before{content:\"\\E6E2\"}.el-icon-unlock:before{content:\"\\E6E4\"}.el-icon-lock:before{content:\"\\E6E5\"}.el-icon-watch:before{content:\"\\E6FE\"}.el-icon-watch-1:before{content:\"\\E6FF\"}.el-icon-timer:before{content:\"\\E702\"}.el-icon-alarm-clock:before{content:\"\\E703\"}.el-icon-map-location:before{content:\"\\E704\"}.el-icon-delete-location:before{content:\"\\E705\"}.el-icon-add-location:before{content:\"\\E706\"}.el-icon-location-information:before{content:\"\\E707\"}.el-icon-location-outline:before{content:\"\\E708\"}.el-icon-location:before{content:\"\\E79E\"}.el-icon-place:before{content:\"\\E709\"}.el-icon-discover:before{content:\"\\E70A\"}.el-icon-first-aid-kit:before{content:\"\\E70B\"}.el-icon-trophy-1:before{content:\"\\E70C\"}.el-icon-trophy:before{content:\"\\E70D\"}.el-icon-medal:before{content:\"\\E70E\"}.el-icon-medal-1:before{content:\"\\E70F\"}.el-icon-stopwatch:before{content:\"\\E710\"}.el-icon-mic:before{content:\"\\E711\"}.el-icon-copy-document:before{content:\"\\E718\"}.el-icon-full-screen:before{content:\"\\E719\"}.el-icon-switch-button:before{content:\"\\E71B\"}.el-icon-aim:before{content:\"\\E71C\"}.el-icon-crop:before{content:\"\\E71D\"}.el-icon-odometer:before{content:\"\\E71E\"}.el-icon-time:before{content:\"\\E71F\"}.el-icon-bangzhu:before{content:\"\\E724\"}.el-icon-close-notification:before{content:\"\\E726\"}.el-icon-microphone:before{content:\"\\E727\"}.el-icon-turn-off-microphone:before{content:\"\\E728\"}.el-icon-position:before{content:\"\\E729\"}.el-icon-postcard:before{content:\"\\E72A\"}.el-icon-message:before{content:\"\\E72B\"}.el-icon-chat-line-square:before{content:\"\\E72D\"}.el-icon-chat-dot-square:before{content:\"\\E72E\"}.el-icon-chat-dot-round:before{content:\"\\E72F\"}.el-icon-chat-square:before{content:\"\\E730\"}.el-icon-chat-line-round:before{content:\"\\E731\"}.el-icon-chat-round:before{content:\"\\E732\"}.el-icon-set-up:before{content:\"\\E733\"}.el-icon-turn-off:before{content:\"\\E734\"}.el-icon-open:before{content:\"\\E735\"}.el-icon-connection:before{content:\"\\E736\"}.el-icon-link:before{content:\"\\E737\"}.el-icon-cpu:before{content:\"\\E738\"}.el-icon-thumb:before{content:\"\\E739\"}.el-icon-female:before{content:\"\\E73A\"}.el-icon-male:before{content:\"\\E73B\"}.el-icon-guide:before{content:\"\\E73C\"}.el-icon-news:before{content:\"\\E73E\"}.el-icon-price-tag:before{content:\"\\E744\"}.el-icon-discount:before{content:\"\\E745\"}.el-icon-wallet:before{content:\"\\E747\"}.el-icon-coin:before{content:\"\\E748\"}.el-icon-money:before{content:\"\\E749\"}.el-icon-bank-card:before{content:\"\\E74A\"}.el-icon-box:before{content:\"\\E74B\"}.el-icon-present:before{content:\"\\E74C\"}.el-icon-sell:before{content:\"\\E6D5\"}.el-icon-sold-out:before{content:\"\\E6D6\"}.el-icon-shopping-bag-2:before{content:\"\\E74D\"}.el-icon-shopping-bag-1:before{content:\"\\E74E\"}.el-icon-shopping-cart-2:before{content:\"\\E74F\"}.el-icon-shopping-cart-1:before{content:\"\\E750\"}.el-icon-shopping-cart-full:before{content:\"\\E751\"}.el-icon-smoking:before{content:\"\\E752\"}.el-icon-no-smoking:before{content:\"\\E753\"}.el-icon-house:before{content:\"\\E754\"}.el-icon-table-lamp:before{content:\"\\E755\"}.el-icon-school:before{content:\"\\E756\"}.el-icon-office-building:before{content:\"\\E757\"}.el-icon-toilet-paper:before{content:\"\\E758\"}.el-icon-notebook-2:before{content:\"\\E759\"}.el-icon-notebook-1:before{content:\"\\E75A\"}.el-icon-files:before{content:\"\\E75B\"}.el-icon-collection:before{content:\"\\E75C\"}.el-icon-receiving:before{content:\"\\E75D\"}.el-icon-suitcase-1:before{content:\"\\E760\"}.el-icon-suitcase:before{content:\"\\E761\"}.el-icon-film:before{content:\"\\E763\"}.el-icon-collection-tag:before{content:\"\\E765\"}.el-icon-data-analysis:before{content:\"\\E766\"}.el-icon-pie-chart:before{content:\"\\E767\"}.el-icon-data-board:before{content:\"\\E768\"}.el-icon-data-line:before{content:\"\\E76D\"}.el-icon-reading:before{content:\"\\E769\"}.el-icon-magic-stick:before{content:\"\\E76A\"}.el-icon-coordinate:before{content:\"\\E76B\"}.el-icon-mouse:before{content:\"\\E76C\"}.el-icon-brush:before{content:\"\\E76E\"}.el-icon-headset:before{content:\"\\E76F\"}.el-icon-umbrella:before{content:\"\\E770\"}.el-icon-scissors:before{content:\"\\E771\"}.el-icon-mobile:before{content:\"\\E773\"}.el-icon-attract:before{content:\"\\E774\"}.el-icon-monitor:before{content:\"\\E775\"}.el-icon-search:before{content:\"\\E778\"}.el-icon-takeaway-box:before{content:\"\\E77A\"}.el-icon-paperclip:before{content:\"\\E77D\"}.el-icon-printer:before{content:\"\\E77E\"}.el-icon-document-add:before{content:\"\\E782\"}.el-icon-document:before{content:\"\\E785\"}.el-icon-document-checked:before{content:\"\\E786\"}.el-icon-document-copy:before{content:\"\\E787\"}.el-icon-document-delete:before{content:\"\\E788\"}.el-icon-document-remove:before{content:\"\\E789\"}.el-icon-tickets:before{content:\"\\E78B\"}.el-icon-folder-checked:before{content:\"\\E77F\"}.el-icon-folder-delete:before{content:\"\\E780\"}.el-icon-folder-remove:before{content:\"\\E781\"}.el-icon-folder-add:before{content:\"\\E783\"}.el-icon-folder-opened:before{content:\"\\E784\"}.el-icon-folder:before{content:\"\\E78A\"}.el-icon-edit-outline:before{content:\"\\E764\"}.el-icon-edit:before{content:\"\\E78C\"}.el-icon-date:before{content:\"\\E78E\"}.el-icon-c-scale-to-original:before{content:\"\\E7C6\"}.el-icon-view:before{content:\"\\E6CE\"}.el-icon-loading:before{content:\"\\E6CF\"}.el-icon-rank:before{content:\"\\E6D1\"}.el-icon-sort-down:before{content:\"\\E7C4\"}.el-icon-sort-up:before{content:\"\\E7C5\"}.el-icon-sort:before{content:\"\\E6D2\"}.el-icon-finished:before{content:\"\\E6CD\"}.el-icon-refresh-left:before{content:\"\\E6C7\"}.el-icon-refresh-right:before{content:\"\\E6C8\"}.el-icon-refresh:before{content:\"\\E6D0\"}.el-icon-video-play:before{content:\"\\E7C0\"}.el-icon-video-pause:before{content:\"\\E7C1\"}.el-icon-d-arrow-right:before{content:\"\\E6DC\"}.el-icon-d-arrow-left:before{content:\"\\E6DD\"}.el-icon-arrow-up:before{content:\"\\E6E1\"}.el-icon-arrow-down:before{content:\"\\E6DF\"}.el-icon-arrow-right:before{content:\"\\E6E0\"}.el-icon-arrow-left:before{content:\"\\E6DE\"}.el-icon-top-right:before{content:\"\\E6E7\"}.el-icon-top-left:before{content:\"\\E6E8\"}.el-icon-top:before{content:\"\\E6E6\"}.el-icon-bottom:before{content:\"\\E6EB\"}.el-icon-right:before{content:\"\\E6E9\"}.el-icon-back:before{content:\"\\E6EA\"}.el-icon-bottom-right:before{content:\"\\E6EC\"}.el-icon-bottom-left:before{content:\"\\E6ED\"}.el-icon-caret-top:before{content:\"\\E78F\"}.el-icon-caret-bottom:before{content:\"\\E790\"}.el-icon-caret-right:before{content:\"\\E791\"}.el-icon-caret-left:before{content:\"\\E792\"}.el-icon-d-caret:before{content:\"\\E79A\"}.el-icon-share:before{content:\"\\E793\"}.el-icon-menu:before{content:\"\\E798\"}.el-icon-s-grid:before{content:\"\\E7A6\"}.el-icon-s-check:before{content:\"\\E7A7\"}.el-icon-s-data:before{content:\"\\E7A8\"}.el-icon-s-opportunity:before{content:\"\\E7AA\"}.el-icon-s-custom:before{content:\"\\E7AB\"}.el-icon-s-claim:before{content:\"\\E7AD\"}.el-icon-s-finance:before{content:\"\\E7AE\"}.el-icon-s-comment:before{content:\"\\E7AF\"}.el-icon-s-flag:before{content:\"\\E7B0\"}.el-icon-s-marketing:before{content:\"\\E7B1\"}.el-icon-s-shop:before{content:\"\\E7B4\"}.el-icon-s-open:before{content:\"\\E7B5\"}.el-icon-s-management:before{content:\"\\E7B6\"}.el-icon-s-ticket:before{content:\"\\E7B7\"}.el-icon-s-release:before{content:\"\\E7B8\"}.el-icon-s-home:before{content:\"\\E7B9\"}.el-icon-s-promotion:before{content:\"\\E7BA\"}.el-icon-s-operation:before{content:\"\\E7BB\"}.el-icon-s-unfold:before{content:\"\\E7BC\"}.el-icon-s-fold:before{content:\"\\E7A9\"}.el-icon-s-platform:before{content:\"\\E7BD\"}.el-icon-s-order:before{content:\"\\E7BE\"}.el-icon-s-cooperation:before{content:\"\\E7BF\"}.el-icon-bell:before{content:\"\\E725\"}.el-icon-message-solid:before{content:\"\\E799\"}.el-icon-video-camera:before{content:\"\\E772\"}.el-icon-video-camera-solid:before{content:\"\\E796\"}.el-icon-camera:before{content:\"\\E779\"}.el-icon-camera-solid:before{content:\"\\E79B\"}.el-icon-download:before{content:\"\\E77C\"}.el-icon-upload2:before{content:\"\\E77B\"}.el-icon-upload:before{content:\"\\E7C3\"}.el-icon-picture-outline-round:before{content:\"\\E75F\"}.el-icon-picture-outline:before{content:\"\\E75E\"}.el-icon-picture:before{content:\"\\E79F\"}.el-icon-close:before{content:\"\\E6DB\"}.el-icon-check:before{content:\"\\E6DA\"}.el-icon-plus:before{content:\"\\E6D9\"}.el-icon-minus:before{content:\"\\E6D8\"}.el-icon-help:before{content:\"\\E73D\"}.el-icon-s-help:before{content:\"\\E7B3\"}.el-icon-circle-close:before{content:\"\\E78D\"}.el-icon-circle-check:before{content:\"\\E720\"}.el-icon-circle-plus-outline:before{content:\"\\E723\"}.el-icon-remove-outline:before{content:\"\\E722\"}.el-icon-zoom-out:before{content:\"\\E776\"}.el-icon-zoom-in:before{content:\"\\E777\"}.el-icon-error:before{content:\"\\E79D\"}.el-icon-success:before{content:\"\\E79C\"}.el-icon-circle-plus:before{content:\"\\E7A0\"}.el-icon-remove:before{content:\"\\E7A2\"}.el-icon-info:before{content:\"\\E7A1\"}.el-icon-question:before{content:\"\\E7A4\"}.el-icon-warning-outline:before{content:\"\\E6C9\"}.el-icon-warning:before{content:\"\\E7A3\"}.el-icon-goods:before{content:\"\\E7C2\"}.el-icon-s-goods:before{content:\"\\E7B2\"}.el-icon-star-off:before{content:\"\\E717\"}.el-icon-star-on:before{content:\"\\E797\"}.el-icon-more-outline:before{content:\"\\E6CC\"}.el-icon-more:before{content:\"\\E794\"}.el-icon-phone-outline:before{content:\"\\E6CB\"}.el-icon-phone:before{content:\"\\E795\"}.el-icon-user:before{content:\"\\E6E3\"}.el-icon-user-solid:before{content:\"\\E7A5\"}.el-icon-setting:before{content:\"\\E6CA\"}.el-icon-s-tools:before{content:\"\\E7AC\"}.el-icon-delete:before{content:\"\\E6D7\"}.el-icon-delete-solid:before{content:\"\\E7C9\"}.el-icon-eleme:before{content:\"\\E7C7\"}.el-icon-platform-eleme:before{content:\"\\E7CA\"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotating{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:\"\"}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#000}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#000}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#000}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#000;color:#fff}.el-dialog,.el-pager li{background:#fff;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-pager,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#000}.el-pager li.active{color:#000;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{to{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#000}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:\"\";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:\"\";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e6e6e6;color:#333}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:\"\";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:\"\"}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #000;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #000;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#e6e6e6}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#000}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#e6e6e6}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#e6e6e6}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#000}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#000}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#000;border-color:#000;-webkit-box-shadow:-1px 0 0 0 #000;box-shadow:-1px 0 0 0 #000}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #000;box-shadow:0 0 2px 2px #000}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#000}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:\"\";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#000;background-color:#000}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#000;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:\"\\E6DA\";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#000;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:\"\";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#000}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotate(180deg);transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotate(0);transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotate(180deg);transform:rotate(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#000}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;-webkit-transform:translateY(.5px);transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table--border td:first-child .cell,.el-table--border th:first-child .cell,.el-table .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#000}.el-table th.required>div:before{display:inline-block;content:\"\";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:\"\";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th,.el-table--border th.gutter:last-of-type,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:\"\";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#000}.el-table .descending .sort-caret.descending{border-top-color:#000}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#e6e6e6}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#f5f7fa}.el-table__body tr.current-row>td{background-color:#e6e6e6}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#e6e6e6;color:#333}.el-table-filter__list-item.is-active{background-color:#000;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#000}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;text-align:center;cursor:pointer;position:relative}.el-date-table td,.el-date-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td div{padding:3px 0}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#000;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#000}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#000}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#000}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#000;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#000;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#000}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#000}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#000}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#000;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#000}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#000}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#000;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#000}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel,.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:\"\";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#000}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#000}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#000}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#000}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:\"\";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper,.el-time-panel{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:\"\";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#000}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:\"\";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#000}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:\"\"}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#000;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:\"\"}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:\"\"}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:\"*\";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#000;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8);transform:scale(.8)}.el-tabs__new-tab:hover{color:#000}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:\"\";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #000 inset;box-shadow:inset 0 0 2px 2px #000;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#000}.el-tabs__item:hover{color:#000;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#000;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#000}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border:1px solid #e4e7ed;border-bottom:none;border-left:none;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:none;border-top:1px solid #e4e7ed;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:none;border-top:1px solid #e4e7ed;border-left:1px solid #fff}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#000}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#000;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#000}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#000}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:\" \";border-width:5px}.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-upload-cover:after{content:\"\"}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{vertical-align:middle;display:inline-block}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#000;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #000;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px}.el-slider.is-vertical .el-slider__button-wrapper,.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#000}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#000;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#000;stroke-linecap:round}.el-loading-spinner i{color:#000}@-webkit-keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#000;color:#000}.el-upload:focus .el-upload-dragger{border-color:#000}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#000;font-style:normal}.el-upload-dragger:hover{border-color:#000}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #000}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#000}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#000;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#000}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:\"\";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner:after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#000;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner:after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#000}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#000;border-color:#000}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border:1px solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#000}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#000}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:\"\";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active,.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45);transform:scale(.45)}.collapse-transition{-webkit-transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out;transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{-webkit-transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out;transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#000}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__tags,.el-collapse-item__wrap,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,.03));filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:\" \";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#e6e6e6;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#000;border:1px solid #ccc;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#000}.el-tag .el-tag__close{color:#000}.el-tag .el-tag__close:hover{color:#fff;background-color:#000}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#000;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#000}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#333}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#999;color:#000}.el-tag--plain.is-hit{border-color:#000}.el-tag--plain .el-tag__close{color:#000}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#000}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#000}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#000;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input:-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{font-size:12px;margin-top:8px;width:280px}.el-color-predefine,.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex}.el-color-predefine__colors{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #000;box-shadow:0 0 3px 2px #000}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,color-stop(0,red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,color-stop(0,red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,color-stop(0,hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,color-stop(0,hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:\"\";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#000;border-color:#000}.el-color-dropdown__link-btn{cursor:pointer;color:#000;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(primary,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;cursor:pointer}.el-color-picker__color,.el-color-picker__trigger{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-color-picker__color{display:block;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#000}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#000;outline:0}.el-input__suffix{right:5px;-webkit-transition:all .3s;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px}.el-input__icon,.el-input__prefix{-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;line-height:40px}.el-input__icon:after{content:\"\";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#000;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#000}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:\"\";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;padding:20px}.el-footer,.el-main{-webkit-box-sizing:border-box;box-sizing:border-box}.el-footer{padding:0 20px;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#000}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:\"\";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #000}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#000}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#000}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#000}.el-link.el-link--primary:hover{color:#333}.el-link.el-link--primary.is-disabled{color:grey}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#c0c4cc;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox,.el-image-viewer__btn{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#000;border-color:#b3b3b3;background-color:#e6e6e6}.el-button:active{color:#000;border-color:#000;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#000;color:#000}.el-button.is-active,.el-button.is-plain:active{color:#000;border-color:#000}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:\"\";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#000;border-color:#000}.el-button--primary:focus,.el-button--primary:hover{background:#333;border-color:#333;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#000;border-color:#000;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:grey;border-color:grey}.el-button--primary.is-plain{color:#000;background:#e6e6e6;border-color:#999}.el-button--primary.is-plain:active,.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#000;border-color:#000;color:#fff}.el-button--primary.is-plain:active{outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#666;background-color:#e6e6e6;border-color:#ccc}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#000;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#333;border-color:transparent;background-color:transparent}.el-button--text:active{color:#000;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:\"\"}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#000}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{line-height:24px}.el-page-header,.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex}.el-page-header__left{cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{content:\"\";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox,.el-checkbox-button__inner,.el-radio{font-weight:500;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#000}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#000;border-color:#000}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#000}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#000}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:\"\";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#000}.el-checkbox__inner:after{-webkit-box-sizing:content-box;box-sizing:content-box;content:\"\";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#000}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;outline:0;white-space:nowrap}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#000;border-color:#000;-webkit-box-shadow:-1px 0 0 0 #666;box-shadow:-1px 0 0 0 #666}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#000}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#000}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#000}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#000;background:#000}.el-radio__input.is-checked .el-radio__inner:after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#000}.el-radio__input.is-focus .el-radio__inner{border-color:#000}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#000}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:\"\";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #000;box-shadow:0 0 2px 2px #000}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity .34s ease-out;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:background-color .3s;transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity .12s ease-out;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#000;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(100%);transform:translate(100%)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(100%);transform:translate(100%)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-100%);transform:translate(-100%)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-100%);transform:translate(-100%)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}.el-drawer{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child,.el-drawer__title{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}\n/*# sourceMappingURL=app.7b6729291f05cec91b99cfd44c17df6b.css.map */"
  },
  {
    "path": "wtpy/monitor/static/console/static/css/static/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/static/css/static/fonts/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/static/js/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/monitor/static/console/static/js/app.d3652914f874ea570f72.js",
    "content": "webpackJsonp([1],{\"+B9X\":function(t,e){},\"4/hK\":function(t,e){},\"7Otq\":function(t,e){t.exports=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABaNSURBVHja7J15eFTlvcc/Z5slM5nJvkEIWwICgqAoKFUEC7jTul5rq3axdn16e61t773VWuu1avVavHax9kr1WqtAXaqoFAsFccEFkC0QCCEkIWSZbLPPnHPuH+9JGmIimclMQMn3eeYZNM+Z95z3e36/97e9v1eqmLeMExAKoFrfBcBEYJL1nQ/kAHlAFuACNMAEdCAAtAOtvT77gEqgGjgMxK2PfqI9uHoC3YsG2IBi4FxgLnA6UGH9TbY+AJL1+TiYvb4N66MDVcAW4C3gDaAGiAKxEULE+HZgAnAJcBEwqx8CkoHU67v370wHTgWutwjaBrwCvAzsAiLHkxzpOKksh6V6LgWuBs5JAQFDQbcEvQ+sAFYCTUDo005IBjAa+C5wDZA7CNUz3DCBTuAvwK+s9ScwXIPLwygR5cCDwAfAt6xF+UQjo1vFeYGbgHeBR4GpgPPTQIgClAI/sR7u65ZV9EmBBlxnqbJfAGOt/5e+Ccsdc2G6fttrrQ+PA5dZUvJJhQqcZT1PyDKfg58UCZGAycATwHJgPJ8elAAPA88AMywNcEIT4gSWAn+zpOLTigXAeuBLgPtEJaQQuN2yTkbz6UcW8L/A/dY6eUIR0q2ifsTJh1ss32XGiULITOApYBEnL84CViHCPceVkLOB56xwx8mOCYjwy6LjRcgC6wbKRrjoQbY1J1cONyFnW4t31ggH/foszyYrKckQMgt42nL8RjCwL7YCETRNKyGTgceAMSNzfkx4LGNnZroIyQMeSnSAkxxliOBkaaoJkYDvA4tH5jhhnAH8J4OM5Q2WkEuBH4/MbdK4GZGhTAkhp1jrxgiGht9Y0jIkQlzAPYh06wiGbg4vQ1TMJE3IUuDykblMGeYCNyZLSAnwy5E5TDl+jgizJEzILUDRyPylHE7gPwaa+4EImWCZaiNID25C1IZJgyFEAm7lxKwI+TThbvopVJQHkI5bRuYr7bgYUUUpfRwhCvC9Ad11SUJR5KM+knRiCZIs97lHeXjur7+5kY89N7f35aCvyBT0Z5bJEsiKTCAYpaMzgq4b4mJNxuN24HZp6HET3TSPm55TVRnDMGnvCBMMRjFME0mScDo0srOcqIpELG6kdEzTBEWRkGWJYDBGZyBCPCbGUBSJTJcdl8sGpolumP39xGWIQO2BHonoVZelIOqOruj7xpkSHDnip6Mrgl1T8GTacTpUojGdtvYQ4Ugcd4YNVZXRdZPhFBpJktA0hS5/hIbDnUTjJh63DY/bjqoq+AMxfO0hFFnG6bT1TGQqyLDbFULhuJgbfwRFkclwatg0lbhu0OmP0umPYFNlHA4Vo39S2oBNiNrioyREBb7WlwzDMDh4qAOPx85XrzidBfPGUlzoAeBQfQfr3zrAM8/vYG+Nj/Kx2WiaTCxuDIukSBJomkJTi5+mxk7mzC7jmqXTmDmtGE+mnUAwwo7KZp55fgfr36gmL99FYUEmYAw0OYOG3a7Q3hGirqGL0mIPSy88hblnjKaowI2ETIsvwOZt9by8Zi+79zVTmO8mNzuDeFynz8hfBB4A/HB0sfUkxKaWnocFiYO1bYwtzeKBO5dw0YLyfm/updf3cutPX2PPvhamnlJILGYAZlrJME1wOBSajvg50uTnli+fxV23LSAv+6MluP5glDsfWM+Dv9lEVpaTkmIP0ag+pHHb2kLUHWzj6itm8N2vzuGc2f1H2Cv3t3DfI5t4/OkPKCzMJDfLia4bfWdnHvAmYHarLMWSjgXdq74kQVNrAK/LzrOPXct5cwZOnVeMz+Xs2aW8vGYPTY1+8vJcPetM+tYMia5gjIbqFm7+8ln89t5LyXD2X3Zr0xQWnTeBUFRn7dq9aHYVl8uWlJSoikQoqnOwsolbbpnL8oc+x5hRAydP83IyuHzxZGKGyatr9+LM0NBsSu/31UTsSXkNMLoJsSEKvkZ1kxGJ6rT4gtx7+yIu+2zFMW+0uDCTokIPT6/YRma2M+3WjU1TqNrbzMwzSnnsgctxu2zHDiSdUcr72w+zdUcjOTkZyakqTaVy+2GWXDKFPz1y1aDXy4XnjGP3vhbe3VKPx2NH/uf8SJYx9SgQlXvFrXoygYZhEgzGOG1qMV++ZvAJwiXnlzN77lgOHWpHltNXWC/LEu2dYVRF4qZrZ1GUP7hqTpdT48brZuF02WhpDSZ8j7Is0dgawO2xc/cPFyZsvNx/+yKK89wEgtG+hkUZIs0hde9amt/bQdF1k2A4ypkzR6GpcgJvrczs6cVEOyNptbQUWaalLUROfibTJhUkdO3kCXkU5rno7Er8HhVFpulQOwsXTmJ8WU7C9z2mxMviC8rp6IwQP1ql64gqFVW2rKtzeq8dBhCPm2RmaAnesCT0uJRe01eSIB7T0VQZmy2xAnSnU8NhU5MyOuJxA0yT2dOLcbuS2yYyZ9YoTN3o6x7IiNC81E3Imb0lRJaEo9XeFUlwoVUozHeDqqLHzbQSYugmLqeK121L6NpAIEooEk8qwqDrJjhUcrKdqEpyKrkoPxPNptLHnpAQO44zZMQ+v/LeZp0qCwfnva31RKLxQQ+mqTJnnjYap9dBZyBKutZ13TDRYzqTJuQzbkx2QtfuqGyisSWAJ9OekIMo+DNBFmGRZBGJxjEMo78gYiFQJltkKEcvXpDh0Ni6s5Hlz25LaMBxY7yMHeWlpdWPrKR+YZdlCX8wCrLEmbNG4coYvIQEgjGeWLmNcDBGXk7ipnk4GsdpVyktSb5GcF9NG/G40d/LGgemycCUvhFHE7DbVDyZTn724Ho+2NE46AG9Hgezp5cQ9YVQ1NQToigKvtYgmS47Z0wfldC1dzywjtfXVVFSnImsJPoiyLS2BSnMczE+QansjTUb9uFw2vqbG7mbkPK+EUfTFBQVFbhobvVz9dee4dX1+4QOPQY8bjtLFpSDKhEMxVK+uMsy+DvDzJhSyOzTSgZ1zcH6dm698zUeePgNsvPd5OU4rWhCYo5oyBdi8oRccrzJbch97pXdbHi7hqxMG4oi9VWZMjBaRVQk9hMiMDFNmDg2l737W7jq5hVct3Qai+ZPZEyJl/LxOWR5+q/9mnv6aMZNKqDhgI+KqUUEg6khRlUl2jpCEDe54PxycrMHnpiqGh+1dR1U7mvhqVXbeGtDNTmjvYwqSi5souuAbnDe3LFkZSW+f3XvgVZuveNVbJqK3dZvAw0JyFMRJfT96hbDMJFlickVBdTWdfDoHzfzxKptFOS4mDGlkEXzJzDvrDJOm3J06r2kKJOvXD2T//z+84QqClAUacjBPDDRbDbqa5soKPFwzWVTPxo27Qzz9vt1rPnHfjZs2E9NYye+9jDoBmMq8snKchIOxxM2eVVVoqGpC3uum/PPGZ+QbwbwwY7DfOO2F6mpa6diYj6m9cL3g+wBJaQ3KYahUzbaS7Qok1ZfgIbGTmprfPx17V4mjs5i0cJyrrl8GueeVdYT1rjhX2bx5Mqt7HmvlunzxhH2R4cQSDRxZGi0HOnC9AX59m0LmDwht+fvR1qDrHp5Jy++tIs33j9EoD2MpEg43HZKR3nxehwYhkEoCRVqmiY2m432A618/rrTmVoxuBK1QCBK9aE21r9Zw0OPvUP1/hbKy/NAAnPgl9MjVcxbVoVoezQo00+WZVRFwjChrT3EkcZO9HCMgiIP1145g+/dfDbjRgsr5JW1e/n8FY+jehyMm1JEPBIjHk/caXQ6Nbq6wlS/XcOF18zi/x69mhxLXT63Zg8PP7yRdW8cAEzcuRkUF3lxODUM3UDXkw+1d+c8mlqCNNe2sfovN7Hk/I9OVZMvyK49TVRV+6g60Io/EKW5NcCuvc3s3teCLMPEcbkosiScy49Z7qSKecvqrVhWEhaPhKophIIxDtW2EfGFOGtuGfffczGfmS12LDyyfDPf/sZKbG47ZZMLyHBqhMMxDINjEqNpCpIq01TfTtOuRuYunsKTv7+aCaVZROIGd937d37x0D/QQ1GKxueRW+BGMk1iMX3ISSjTFM6xpMnsWlvJVV+fxxO/+hwO+z/1/+ZtDaxZV8XfN1azo6qFto6QyBiaJhgmsqZQVOAmN9tJLK5jHNuOOCxVzFvWxBBLRWVZQrOpdHWGqdnRQMnYPJ78/dUsOHssAL978j3uvmcth2rbySxwUzTai9Ouocd14rp5lD6VZQlVlUGS8LX4OVzbjhmLc+UVp3H/f13M2BIPwajOrT9ZzW/uex13aQ5lFfnIpvATUmHUGSbYNQVUiZ1v1jBhbC4vPn8TU8rFNFVWt/K7J9/nuee3c7C+HQxwZNrwZjlxO20osoh7yYospHTwEtqcEkK6nRfNpqAbJpVb6iguzeLVVTcx3Qr+vf1hA7/7wzs8++J2gh0RVLtKZo6TXG8Gdod46wzdoMMfxdcaINwVBlnijClFfPGGM/nmDWf0hCvuvH8dP73tefImFzOqLIdIMIpuDD1+Zln7OJ0awWCcqi2HKMxz8dRT17NwnmhIsWL1bu762Rq2727E5rZTVCLWKNM0hXq0Xq4kJbR5SCqrXzHXZOJxg6oPG1j02Um88KfrrWCewOp1Vbz4SiX/2FjNgSNdREIx0M2eHnGSqpDtsTNrSiEXLTmFyxdPZnxp1j+vX7+Pq65YjpxhY+K0IoL+SCreJRRJwmZTiOkGjXXttB1oY9rMEn754FIWf0aQsezxzfzbj14iHo4xflIBLq+TeExPZTLusFQxb9k+PqbWNJmnU20Kra1BjtR3svy3V3DDlR/dU7+9sonKqmbe3VbPjspmYnGdwgI3c2aO5pSKfGZMLSQv6+gkkq8jzNIbn2Lj6kpOnT9RkDmExUKShHpUFJlgMEpDQyfBtiCyU+X6z03ntu/PZ+pEYYS+sGYPS697Ak1VmDStGFMXa1WKiwcOShXzlr1PiveZS5KYp+radmZPK+b1VTfgdAwcrm7rDBOP6Xg9DmzawDGNP67Yxo23rCC/xENhQSaRBNeMbpWkqQpIEAxGafYFCbSFMHUDb76bxfMncOVl07jq4ik91x2oa2fhZY9xqL6D8mlFEDeJG2kpeapUgZZU/6ppgqbJ5GTa2bqzgdc3HeCShQOngbM9x/Z8O7rCrHxhO0TjFBVlEgknRoZhmthUBVVVqK3voL2lCxQFV6adWTOKWTh/Iovml3PunLKPOH73/noTB2raGF+Rh2RAzEhb/VmnCvgQOamURgJ13cTpstHWFWb12qqPJWRwoQcfmz9sQPU6Es4tmSY4bCpxw2TXrkZMVeLSi6Zw7pwypk4uoHx8LhMHyADuO+jjxRd34M7JwJFhIx5La4lTh4roa5tyGIaJw6HicGhs3lJPW0eYbG/yPcx2722hpS1EQYFb6O4EQx+6CZUfNlBals0v7ljMReeXkzWI+3nmhZ0945rpLaQxgRYZ0eQxLUPJkoSmStQc9PHB9oakfyceN3jrvVqMUIxsrzMxz9sEm11h/+4jTJyYx58fu5brlp46KDICwSivrd+H4tRwZTrSXdpkAHUyoldt2qCpMuGozt7q5AWx2RdkV1WziA4kWCmiqjJ1h7swJbjjxxdw9umDb+W1ZWcjuyuP4FTlpFO2CRKyU0Z0ek5LAtw0TDRNxZSg4UhX0r/T4gvQ1BJAtqsDRUk/Jrwj03qog3PPm8jSxZMSunbnnmaC4TiapmCmWV8hsrY7ZUTD4H3pUoqK5T6LsHdyiMV0otE4UoJJekmSCIaiYJNZeM5Y3BmJFUTsr2kFWcLu1AYThxoqfEC1jGir/W56pMREViSR5QskH343DJOYbiaco5ckkUe3uWyMK0s87XqwrgNZApuqkO5aZUQrWr+MKNJ6Kx0jmlZ8yzSFZx5JssC57nAXTU1d5FiFygmtYZqCHjPoSjDEYhgmvvYwJlJ/6dZ0rB/vAEY3IetI055CVZax21S27WrkbxuqE74+Eo2z8qWdRNpC5OVmJGRhGYaJ22VD74qwZVvDoGoCulHf2EVdfTuY5pDKfgZrkAJrAL17pFpgRzpG0g2T3OwMouEYv/yfjYQiia0lL62tYuUzW8kvzUJK4i1VFIkMr4OVq3cnZOmtenkX1bVtCddvJYkGYDu9tiOAKNT6TDokRdNkbJrChzsO0+aPcvHC8kFd9/YHdXztO6voDOmMn5BLOKInHGI3DMjKyaB2TxN1rQEuX3LKMXPiH2xv5Fv//hJx3aAo351IPiNZ22cVondlz3YEw/LYv5mWEU0Th8OGpMqs37CfQ0e6OP3UEjyZ9gGv+dNz2/nGD/5K7aF2Jk0rwtBNjCRzHpom43Db2byphoNHuph/zjicjv6PTtn4Ti1f+d5z1NS1M7Y0G0lK+/ohAT8A9sPReww7EJsQC9NDCmS6bMiqwhubDrDujRr8IXFuSjRmEAhGqW3oZOPbB7nv15u4d9kGOvxRJlYUIEsiF51sAkrXTVwuO5pDY9NbNby5pR5ME1WRMQ1o7wyzq6qZ5c9u5cd3/42aQ+2Uj8tFUeV0RXV7oxZxWEEYjt7SpgDfAf47ba+CJKEqMv5AlKYWP0gSuV4H3iwRdu/0R/H5gvhDUbwuO3l5bhRZIhrTU1LXZbMpdHZFaGoOoGkyBblucrKdxHWdlpYATb4QDpsoGFdVue+WgXThPkSrjXhfQkC0CK8m3UcyKDIgtjD7A1HEcwt1ZNMUsr1OnE6NeNxIWk0NpKxtmkI8ZtDaHiQUjvWoI0WSyMy0k+V1YBpmuteN3pgM7O12O/oq0sOIjqNfSucddPsSXo+DLK/TmhSzZ6OpYZg9Ed1UlqJKltcPkJ+b0aNKu6XXNM1jlemkGusQe9TN3vZvXwflnuG6G8OwCgMMw/q3+G9zGOxMMZZpFQKaQ6rfGgLuoM8BZHI/Ul1lSckI0ouN/YWs5AHc+LtG5ivt+FG3ZXUsQkxEA4FfjcxZ2rDSkg4GQ0g3KQ8ijo8bQerxEwY4vFI+hsMy0qs39fgZvVqYJEIIiN7l60bmMGXYhejfS7KEdCBajIdG5jIl+DrQOBRCALYy0vIvFfgB4nRqhkoIwJ+BR0bmNGk8g2guQ6oIiVoe/Dsjc5sw9llWVWcqCQGot3Rg9cgcDxrtiI5xVYO9INFk8TZrgI6RuR4UrgXeTuSCZLL3bwJXMQx1MZ9wXIfoEke6CQFx1u01iIqVEXwU37QMIYaLEBCnkF08or6Ogg58wbKozOEmBEskL6RXI+CTGK2Io6GeHormSEUF2FvA5xGlkCcr9lra4pWhrq2pKsnbiuiI/YeTkIwVwCWp8tFSWSN5EPhXRJil6yQgIg780HreqlT9aKqLVrssKTmPQcRtPsHYhujk+hBiGwEnKiHdb84WxInJPwSaP0VEdCEOYrkE0UA/muoB0lnWfcR6g84GlpOmfYzDiJWI7q0/B+rSNUi66+yjiODat4E5wAufQCLWAucjzo2qpJ/ChE8SId0IIJL611sSs9J6sBM1/KIDq4ELLJN+PdZxEumGOswP6rf8lhsQZatfsMzlSYja4uN1QI9pqdT9lhQ/ZUl2YLhvpG9t73DDBmQgujpfBiwBxlmSK6eRoG4CDGs9WAs8j4jMBhDHRxwXHG9Ceu7DIscJTEVsHJqDOMw3rw9BUgJEmb0+3afMtFlRhc2I6sGtFgnRE0GFqpwY6D7UJGKZk+9Y95ZhScwkRMPnUkSztWwg0/q7o5e60621KWipRx8ixlSHqPjY00sV6QxQG3U88f8DAOnpVoI55ywSAAAAAElFTkSuQmCC\"},\"7tVw\":function(t,e){},C17c:function(t,e){},Cb2R:function(t,e){},DoUX:function(t,e){},GUiZ:function(t,e){},JgyK:function(t,e){},LxZp:function(t,e){},NHnr:function(t,e,s){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var a=s(\"7+uW\"),i={render:function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{attrs:{id:\"app\"}},[e(\"router-view\")],1)},staticRenderFns:[]};var n=s(\"VU/8\")({name:\"App\"},i,!1,function(t){s(\"wx9h\")},null,null).exports,o=s(\"/ocq\"),r={name:\"Login\",data:function(){return{loginid:\"\",passwd:\"\",saveuser:!0,loading:!1}},methods:{doLogin:function(){var t=this,e=this,s=e.loginid,a=e.passwd;e.loading=!0,this.$api.login(s,a,function(a){if(a.result<0)e.$alert(\"用户登录出错：\"+a.message,\"登录失败\");else{var i=a.userinfo;localStorage.setItem(\"last_user\",s),localStorage.setItem(\"save_user\",e.saveuser?\"true\":\"false\"),t.$store.commit(\"loginok\",{isLogined:!0,loginid:s,userinfo:i}),t.$socket.emit(\"connect\",1),e.$router.push(\"/index\")}e.loading=!1})}},mounted:function(){this.saveuser=\"true\"==localStorage.getItem(\"save_user\"),this.saveuser&&(this.loginid=localStorage.getItem(\"last_user\"))}},l={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.loading,expression:\"loading\"}],staticClass:\"loginBox\"},[s(\"div\",{staticClass:\"login\"},[s(\"div\",{staticClass:\"loginForm\"},[s(\"el-row\",[s(\"h2\",[t._v(\"交易控制中心\")])]),t._v(\" \"),s(\"el-row\",[s(\"el-input\",{attrs:{placeholder:\"用户名\"},model:{value:t.loginid,callback:function(e){t.loginid=e},expression:\"loginid\"}})],1),t._v(\" \"),s(\"el-row\",[s(\"el-input\",{attrs:{placeholder:\"密码\",type:\"password\"},model:{value:t.passwd,callback:function(e){t.passwd=e},expression:\"passwd\"}})],1),t._v(\" \"),s(\"el-row\",[s(\"el-checkbox\",{staticStyle:{float:\"right\"},model:{value:t.saveuser,callback:function(e){t.saveuser=e},expression:\"saveuser\"}},[t._v(\"保存用户名\")])],1),t._v(\" \"),s(\"el-row\",{staticStyle:{\"margin-top\":\"30px\"}},[s(\"el-button\",{attrs:{type:\"primary\",plain:\"\"},on:{click:function(e){return t.doLogin()}}},[t._v(\"登 录\")])],1)],1)])])},staticRenderFns:[]};var c=s(\"VU/8\")(r,l,!1,function(t){s(\"kk+i\")},\"data-v-02eab36d\",null).exports,u=s(\"Dd8w\"),d=s.n(u),p=s(\"NYxO\"),f={name:\"index\",computed:d()({},Object(p.b)([\"cache\"]),{isAdmin:function(){var t=this.cache.userinfo;return!!t&&(\"admin\"==t.role||\"superman\"==t.role)}}),components:{},data:function(){return{showDlgModPwd:!1,oldpwd:\"\",newpwd:\"\",confirmpwd:\"\",loading:!1,notifies:[],lastNotify:null,showNotifies:!1}},methods:{handleItemSel:function(t,e,s,a){},onLogout:function(t){var e=this;this.$confirm(\"确定要注销登录吗？\",\"注销登录\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){e.$store.commit(\"logoutok\"),e.$router.push(\"/login\")}).catch(function(){})},onModPwd:function(t){this.showDlgModPwd=!0},doModPwd:function(){var t=this,e=this;\"\"!=this.newpwd&&\"\"!=this.oldpwd&&\"\"!=this.confirmpwd?this.newpwd==this.confirmpwd?(this.loading=!0,this.$api.modpwd(this.oldpwd,this.newpwd,function(s){s.result<0?e.$notify.error(\"密码修改失败：\"+s.message,\"修改密码\"):(e.$notify.success(\"密码修改成功\",\"修改密码\"),t.showDlgModPwd=!1),setTimeout(function(){t.loading=!1},150)})):this.$alert(\"两次输入的新密码不一致\"):this.$alert(\"密码不能为空\")},handleNotify:function(t){this.notifies.push(t),this.notifies.length>100&&(this.notifies=this.notifies.slice(this.notifies.length-100)),this.lastNotify=t},onClickScroller:function(t){this.showNotifies=!this.showNotifies},getTitleStyle:function(t){return\"成交回报\"==t?\"title-success\":\"title-warning\"},getIconStyle:function(t){return\"成交回报\"==t?\"el-icon-news\":\"el-icon-warning-outline\"}},mounted:function(){this.cache.isLogined||this.$router.push(\"/login\")}},m={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a(\"div\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.loading,expression:\"loading\"}],staticStyle:{height:\"100%\"},attrs:{id:\"index\"}},[a(\"el-container\",{staticStyle:{height:\"100%\"}},[a(\"el-aside\",{staticStyle:{\"border-right\":\"2px solid #E4E7ED\",height:\"100%\"},attrs:{width:\"230px\"}},[a(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[a(\"div\",{staticStyle:{flex:\"0\",height:\"44px !important\",\"border-bottom\":\"1px solid #E4E7ED\"}},[a(\"div\",{staticStyle:{display:\"flex\",\"flex-direction\":\"row\",\"margin-left\":\"12px\"}},[a(\"div\",{staticStyle:{flex:\"0\",\"margin-top\":\"6px\",\"padding-right\":\"12px\"}},[a(\"img\",{attrs:{src:s(\"7Otq\"),height:\"28px\",width:\"28px\"}})]),t._v(\" \"),a(\"div\",{staticStyle:{flex:\"1\",\"margin-top\":\"4px\",overflow:\"hidden\"}},[a(\"span\",{staticStyle:{\"font-size\":\"24px\"}},[t._v(\"WT控制台\")])])])]),t._v(\" \"),a(\"div\",{staticStyle:{flex:\"1\"}},[a(\"div\",{staticStyle:{display:\"flex\",\"flex-direction\":\"column\",height:\"100%\"}},[a(\"div\",{staticStyle:{flex:\"1\",display:\"block\",\"border-bottom\":\"1px solid #E4E7ED\"}},[a(\"el-menu\",{staticClass:\"el-menu-vertical-demo\",staticStyle:{height:\"100%\"},attrs:{\"default-active\":\"1-1\",router:\"\"},on:{select:t.handleItemSel}},[a(\"el-submenu\",{attrs:{index:\"1\"}},[a(\"template\",{slot:\"title\"},[a(\"i\",{staticClass:\"el-icon-set-up\"}),t._v(\" \"),a(\"span\",[t._v(\"控制台\")])]),t._v(\" \"),a(\"el-menu-item-group\",[a(\"el-menu-item\",{attrs:{index:\"1-1\",route:\"/monitor\"}},[a(\"i\",{staticClass:\"el-icon-view\"}),t._v(\" \"),a(\"span\",[t._v(\"监控中心\")])]),t._v(\" \"),t.isAdmin?a(\"el-menu-item\",{attrs:{index:\"1-2\",route:\"/schedule\"}},[a(\"i\",{staticClass:\"el-icon-time\"}),t._v(\" \"),a(\"span\",[t._v(\"调度中心\")])]):t._e()],1)],2),t._v(\" \"),t.isAdmin?a(\"el-submenu\",{attrs:{index:\"2\"}},[a(\"template\",{slot:\"title\"},[a(\"i\",{staticClass:\"el-icon-box\"}),t._v(\" \"),a(\"span\",[t._v(\"自动实施\")])]),t._v(\" \"),a(\"el-menu-item-group\",[a(\"el-menu-item\",{attrs:{index:\"2-1\",route:\"/deploy\"}},[a(\"i\",{staticClass:\"el-icon-thumb\"}),t._v(\" \"),a(\"span\",[t._v(\"策略部署\")])]),t._v(\" \"),a(\"el-menu-item\",{attrs:{index:\"2-2\",route:\"/backtest\"}},[a(\"i\",{staticClass:\"el-icon-data-line\"}),t._v(\" \"),a(\"span\",[t._v(\"在线回测\")])])],1)],2):t._e(),t._v(\" \"),t.isAdmin?a(\"el-submenu\",{attrs:{index:\"3\"}},[a(\"template\",{slot:\"title\"},[a(\"i\",{staticClass:\"el-icon-setting\"}),t._v(\" \"),a(\"span\",[t._v(\"系统设置\")])]),t._v(\" \"),a(\"el-menu-item-group\",[a(\"el-menu-item\",{attrs:{index:\"3-1\",route:\"/admins\"}},[a(\"i\",{staticClass:\"el-icon-user\"}),t._v(\" \"),a(\"span\",[t._v(\"用户管理\")])])],1)],2):t._e()],1)],1),t._v(\" \"),a(\"div\",{staticStyle:{flex:\"0\",margin:\"8px\",\"font-size\":\"14px\",display:\"flex\",\"flex-direction\":\"row\"}},[a(\"div\",{staticStyle:{flex:\"0 0\",\"margin-right\":\"8px\"}},[a(\"el-popover\",{attrs:{placement:\"top-start\",width:\"240\",trigger:\"hover\"}},[a(\"div\",[a(\"el-row\",{staticStyle:{\"font-size\":\"20px\",\"padding-bottom\":\"4px\"}},[a(\"i\",{staticClass:\"el-icon-user\",staticStyle:{\"padding-right\":\"4px\"}}),a(\"strong\",[t._v(\"用户信息\")])]),t._v(\" \"),a(\"el-row\",[a(\"el-col\",{attrs:{span:8}},[t._v(\"账户：\")]),t._v(\" \"),a(\"el-col\",{attrs:{span:14}},[t._v(t._s(t.cache.loginid))])],1),t._v(\" \"),a(\"el-row\",[a(\"el-col\",{attrs:{span:8}},[t._v(\"姓名：\")]),t._v(\" \"),a(\"el-col\",{attrs:{span:14}},[t._v(t._s(t.cache.userinfo.name))])],1),t._v(\" \"),a(\"el-row\",[a(\"el-col\",{attrs:{span:8}},[t._v(\"用户类型：\")]),t._v(\" \"),a(\"el-col\",{attrs:{span:14}},[t._v(t._s(t.isAdmin?\"管理员\":\"风控员\"))])],1),t._v(\" \"),a(\"el-row\",[a(\"el-col\",{attrs:{span:8}},[t._v(\"登录时间：\")]),t._v(\" \"),a(\"el-col\",{attrs:{span:14}},[t._v(t._s(t.cache.userinfo.logintime))])],1),t._v(\" \"),a(\"el-row\",[a(\"el-col\",{attrs:{span:8}},[t._v(\"登录地址：\")]),t._v(\" \"),a(\"el-col\",{attrs:{span:14}},[t._v(t._s(t.cache.userinfo.loginip))])],1)],1),t._v(\" \"),a(\"span\",{attrs:{slot:\"reference\"},slot:\"reference\"},[a(\"i\",{staticClass:\"el-icon-user userhead\"})])])],1),t._v(\" \"),a(\"div\",{staticStyle:{flex:\"1 0\"}},[a(\"el-row\",[a(\"span\",{staticClass:\"user\"},[t._v(t._s(t.cache.userinfo.name))])]),t._v(\" \"),a(\"el-row\",[a(\"span\",{staticClass:\"user\"},[t._v(t._s(t.cache.loginid))])])],1),t._v(\" \"),a(\"div\",{staticStyle:{flex:\"0 0\"}},[a(\"div\",[a(\"el-tooltip\",{attrs:{placement:\"top\"}},[a(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"修改密码\")]),t._v(\" \"),a(\"i\",{staticClass:\"el-icon-setting button\",on:{click:t.onModPwd}})])],1),t._v(\" \"),a(\"div\",[a(\"el-tooltip\",{attrs:{placement:\"top\"}},[a(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"注销登录\")]),t._v(\" \"),a(\"i\",{staticClass:\"el-icon-switch-button button\",staticStyle:{color:\"#F56C6C\"},on:{click:t.onLogout}})])],1)])])])])])]),t._v(\" \"),a(\"el-container\",[a(\"el-main\",{staticStyle:{\"border-bottom\":\"2px solid #E4E7ED\"}},[a(\"keep-alive\",[a(\"router-view\",{ref:\"main\",on:{notify:t.handleNotify}})],1)],1),t._v(\" \"),a(\"el-footer\",{staticClass:\"statusbar\"},[a(\"div\",{staticStyle:{flex:\"1\",margin:\"4px\"}},[a(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.lastNotify,expression:\"lastNotify\"}],staticClass:\"scroller\",on:{click:t.onClickScroller}},[a(\"marquee\",[a(\"i\",{class:t.getIconStyle(t.lastNotify?t.lastNotify.title:\"\"),staticStyle:{\"padding-right\":\"4px\"}}),t._v(\" \"),a(\"span\",{staticClass:\"time\"},[t._v(t._s(t.lastNotify?t.lastNotify.time.format(\"hh:mm:ss\"):\"\"))]),t._v(\" \"),a(\"span\",{staticClass:\"group\"},[t._v(t._s(t.lastNotify?t.lastNotify.group:\"\"))]),t._v(\" \"),a(\"span\",{staticClass:\"channel\"},[t._v(t._s(t.lastNotify?t.lastNotify.channel:\"\"))]),t._v(\" \"),a(\"span\",{class:t.getTitleStyle(t.lastNotify?t.lastNotify.title:\"\")},[t._v(t._s(t.lastNotify?t.lastNotify.title:\"\"))]),t._v(\" \"),a(\"span\",{staticClass:\"message\"},[t._v(t._s(t.lastNotify?t.lastNotify.message:\"\"))])])],1)]),t._v(\" \"),a(\"div\",{staticStyle:{flex:\"0\",\"margin-top\":\"4px\",\"min-width\":\"150px\"}},[a(\"i\",{staticClass:\"el-icon-connection\",staticStyle:{color:\"green\",\"padding-right\":\"8px\"}}),a(\"a\",[t._v(\"推送通道已连接\")])])])],1)],1),t._v(\" \"),a(\"el-dialog\",{attrs:{title:\"修改密码\",visible:t.showDlgModPwd,width:\"360px\"},on:{\"update:visible\":function(e){t.showDlgModPwd=e}}},[a(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[a(\"el-input\",{attrs:{placeholder:\"请输入旧密码\",\"show-password\":\"\"},model:{value:t.oldpwd,callback:function(e){t.oldpwd=e},expression:\"oldpwd\"}})],1),t._v(\" \"),a(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[a(\"el-input\",{attrs:{placeholder:\"请输入新密码\",\"show-password\":\"\"},model:{value:t.newpwd,callback:function(e){t.newpwd=e},expression:\"newpwd\"}})],1),t._v(\" \"),a(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[a(\"el-input\",{attrs:{placeholder:\"请确认新密码\",\"show-password\":\"\"},model:{value:t.confirmpwd,callback:function(e){t.confirmpwd=e},expression:\"confirmpwd\"}})],1),t._v(\" \"),a(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[a(\"el-button\",{attrs:{type:\"primary\",plain:\"\"},on:{click:function(e){return t.doModPwd()}}},[t._v(\"确 定\")])],1)],1),t._v(\" \"),a(\"el-dialog\",{attrs:{title:\"通知列表\",visible:t.showNotifies,direction:\"btt\",width:\"800px\"},on:{\"update:visible\":function(e){t.showNotifies=e}}},[a(\"div\",{staticStyle:{height:\"400px\",\"overflow-y\":\"scroll\",border:\"solid 1px #E4E7ED\",padding:\"4px\"}},[a(\"el-table\",{attrs:{data:t.notifies,stripe:\"\",\"show-header\":!1}},[a(\"el-table-column\",{scopedSlots:t._u([{key:\"default\",fn:function(e){return[a(\"i\",{class:t.getIconStyle(e.row.title),staticStyle:{\"padding-right\":\"4px\"}}),t._v(\" \"),a(\"span\",{staticClass:\"time\"},[t._v(t._s(e.row.time.format(\"hh:mm:ss\")))]),t._v(\" \"),a(\"span\",{staticClass:\"group\"},[t._v(t._s(e.row.group))]),t._v(\" \"),a(\"span\",{staticClass:\"channel\"},[t._v(t._s(e.row.channel))]),t._v(\" \"),a(\"span\",{class:t.getTitleStyle(e.row.title)},[t._v(t._s(e.row.title))]),t._v(\" \"),a(\"span\",{staticClass:\"message\"},[t._v(t._s(e.row.message))])]}}])})],1)],1)])],1)},staticRenderFns:[]};var h=s(\"VU/8\")(f,m,!1,function(t){s(\"pKwi\")},\"data-v-ce9460cc\",null).exports,v=s(\"mvHQ\"),g=s.n(v),b=s(\"bOdI\"),y=s.n(b),w={name:\"stradata\",props:{groupid:{type:String,default:function(){return\"\"}}},computed:d()({},Object(p.b)([\"cache\"]),{isAdmin:function(){var t=this.cache.userinfo;return!!t&&(\"admin\"==t.role||\"superman\"==t.role)}}),components:{},watch:{groupid:function(t,e){var s=this;t=t||\"\",e=e||\"\",0!=t.length&&t!=e&&setTimeout(function(){s.$api.getStrategies(t,function(t){t.result<0?s.$notify.error(\"获取策略列表出错：\"+t.message):(s.strategies=t.strategies,\"pos\"!=s.selCat&&\"all\"==s.strafilter?s.strafilter=s.strategies[0]:\"pos\"==s.selCat&&(s.strafilter=\"all\"),s.queryData())})},300)}},data:function(){var t;return t={selCat:\"pos\",strafilter:\"all\",strategies:[],loading:{trade:!1,signal:!1,round:!1,position:!1,fund:!1},capital:5e6,trades:[],positions:[],signals:[],rounds:[]},y()(t,\"strategies\",[]),y()(t,\"funds\",[]),y()(t,\"nvChart\",null),y()(t,\"autoData\",!1),y()(t,\"dataInterval\",0),y()(t,\"refreshTime\",(new Date).format(\"yyyy.MM.dd hh:mm:ss\")),t},methods:{handleCheckAutoData:function(t){this.resetDataInterval()},resetDataInterval:function(){var t=this;this.autoData?(0!=this.dataInterval&&clearInterval(this.dataInterval),this.dataInterval=setInterval(function(){t.queryData()},3e4)):0!=this.dataInterval&&clearInterval(this.dataInterval)},getTrdSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(e<3||e>5)a[e]=\"\";else if(3!=e){if(4==e)a[e]=s.length+\"笔\";else if(5==e){var i=s.map(function(t){return Number(t.volume)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}}else a[e]=\"总计\"}),a},getSigSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){e>1?a[e]=\"\":0!=e?1==e&&(a[e]=s.length+\"笔\"):a[e]=\"总计\"}),a},getPosSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(0==e||1==e||2==e||3==e)if(0!=e){if(1==e)a[e]=s.length+\"笔\";else if(2==e){var i=s.map(function(t){return Number(t.qty)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+Math.abs(e)},0)+\"手\"}else if(3==e){var n=s.map(function(t){return Number(t.profit)});n.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(1)}}else a[e]=\"总计\";else a[e]=\"\"}),a},getRndSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(5==e||6==e||7==e||8==e)if(5!=e)if(6!=e){if(7==e){var i=s.map(function(t){return Number(t.qty)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}else if(8==e){var n=s.map(function(t){return Number(t.profit)});n.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(1)}}else a[e]=s.length+\"笔\";else a[e]=\"总计\";else a[e]=\"\"}),a},handleCatChange:function(t,e){this.selCat!=t.name&&(this.selCat=t.name,\"pos\"!=this.selCat&&\"all\"==this.strafilter?this.strafilter=this.strategies[0]:\"pos\"==this.selCat&&(this.strafilter=\"all\"),this.queryData())},onStraSwitch:function(){this.queryData()},formatAmount:function(t,e){return t[e.property].toFixed(2)},fmtPrice:function(t){for(var e=t.toFixed(4),s=0;s<e.length&&\"0\"==e[e.length-1-s];s++);\".\"==e[e.length-1-s]&&s++;var a=e.length-s;return e.substr(0,a)},fmtTime:function(t,e){if(e=e||!1){var s=t+\"\";return s.substr(2,2)+\".\"+s.substr(4,2)+\".\"+s.substr(6,2)+\" \"+s.substr(8,2)+\":\"+s.substr(10,2)+\":\"+s.substr(12,2)+\",\"+s.substr(14,3)}var a=t+\"\";return a.substr(2,2)+\".\"+a.substr(4,2)+\".\"+a.substr(6,2)+\" \"+a.substr(8,2)+\":\"+a.substr(10,2)},fmtDate:function(t){var e=t+\"\";return e.substr(0,4)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)},fmtProfit:function(t){return t>0?\"text-danger\":t<0?\"text-success\":\"\"},onClickPaintChart:function(){this.paintChart()},paintChart:function(){null==this.nvChart&&(this.nvChart=this.$echarts.init(document.getElementById(\"trend\")));for(var t={title:{text:\"净值走势\"},tooltip:{trigger:\"axis\",axisPointer:{label:{backgroundColor:\"#6a7985\",formatter:function(t){var e=t.value+\"\";return e.substr(0,4)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)}}},formatter:function(t){if(0==t.length)return\"收益曲线\";var e=t[0].axisValueLabel;for(var s in t)\"净值\"==t[s].seriesName?e+=\"<br/>净值: \"+t[s].value.toFixed(4):e+=\"<br/>\"+t[s].seriesName+\": \"+t[s].value;return e}},grid:{top:42,left:\"8\",right:\"8\",bottom:\"8\",containLabel:!0},xAxis:{type:\"category\",data:[],boundaryGap:!1,axisLabel:{textStyle:{color:\"#000\"},formatter:function(t,e){return(t+=\"\").substr(0,4)+\".\"+t.substr(4,2)+\".\"+t.substr(6,2)}},axisLine:{lineStyle:{color:\"#000\"}}},yAxis:[{type:\"value\",axisLabel:{textStyle:{color:\"#000\"},formatter:function(t,e){return t.toFixed(4)}},axisLine:{lineStyle:{color:\"#000\"}},scale:!0}],series:[{name:\"净值\",type:\"line\",smooth:!0,stack:\"净值\",areaStyle:{normal:{color:{type:\"linear\",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:\"rgba(102,156,214,0.5)\"},{offset:1,color:\"rgba(242,242,242,0.3)\"}],globalCoord:!1}}},data:[],lineStyle:{normal:{color:\"rgb(102,156,214)\",width:2}},itemStyle:{normal:{color:\"rgb(102,156,214)\",borderWidth:1}}}]},e=[],s=[],a=parseInt(this.capital),i=this.funds.length-1;i>=0;i--){var n=this.funds[i];e.push(n.date);var o=a+n.dynbalance;s.push(o/a)}var r=Math.max.apply(null,s),l=Math.min.apply(null,s);if(r==l)r*=1.05,l*=.95;else{var c=r-l;r+=.05*c,l=Math.max(0,l-.05*c)}t.xAxis.data=e,t.series[0].data=s,t.yAxis[0].max=r,t.yAxis[0].min=l,this.nvChart.setOption(t)},queryData:function(t){var e=this;t=t||!1;var s=this,a=this.selCat,i=this.groupid||\"\",n=this.strafilter||\"\";0!=i.length?0!=n.length?\"trd\"==a?(s.loading.trade=!0,setTimeout(function(){e.$api.getTrades(i,n,function(a){a.result<0?e.$notify.error(\"查询成交出错：\"+a.message):(a.trades.forEach(function(t){var e=\"\";\"OPEN\"==t.offset?e+=\"开\":e+=\"平\",\"LONG\"==t.direction?e+=\"多\":e+=\"空\",t.action=e}),s.trades=a.trades,s.trades.reverse()),s.loading.trade=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"sig\"==a?(s.loading.signal=!0,setTimeout(function(){e.$api.getSignals(i,n,function(a){a.result<0?e.$notify.error(\"查询信号出错：\"+a.message):(s.signals=a.signals,s.signals.reverse()),s.loading.signal=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"rnd\"==a?(s.loading.round=!0,setTimeout(function(){e.$api.getRounds(i,n,function(a){a.result<0?e.$notify.error(\"查询回合出错：\"+a.message):(s.rounds=a.rounds,s.rounds.reverse()),s.loading.round=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"pos\"==a?(s.loading.position=!0,setTimeout(function(){e.$api.getPositions(i,n,function(a){a.result<0?e.$notify.error(\"查询持仓出错：\"+a.message):(a.positions.forEach(function(t){t.qty=t.volume*(t.long?1:-1)}),s.positions=a.positions),s.loading.position=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"fnd\"==a&&(s.loading.fund=!0,setTimeout(function(){e.$api.getFunds(i,n,function(a){a.result<0?e.$notify.error(\"查询绩效出错：\"+a.message):(s.funds=a.funds,s.funds.reverse(),s.paintChart()),s.loading.fund=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):this.$notify.error(\"策略ID不能为空\"):this.$notify.error(\"组合ID不能为空\")}},mounted:function(){window.onresize=function(){self.zooming||(self.zooming=!0,setTimeout(function(){self.myChart&&self.nvChart.resize(),self.zooming=!1},300))}}},x={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",overflow:\"auto\"}},[s(\"el-container\",{staticStyle:{height:\"100%\",overflow:\"auto\"}},[s(\"el-header\",{staticStyle:{height:\"40px\",\"overflow-y\":\"hidden\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{flex:\"0\",height:\"100%\"}},[s(\"el-tabs\",{staticStyle:{height:\"100%\",margin:\"0\"},attrs:{value:t.selCat,\"tab-position\":\"top\"},on:{\"tab-click\":t.handleCatChange}},[s(\"el-tab-pane\",{attrs:{label:\"持仓明细\",name:\"pos\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"成交明细\",name:\"trd\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"信号明细\",name:\"sig\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"回合明细\",name:\"rnd\"}}),t._v(\" \"),t.isAdmin?s(\"el-tab-pane\",{attrs:{label:\"每日绩效\",name:\"fnd\"}}):t._e()],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"2px solid #E4E7ED\",\"margin-top\":\"4px\"}},[s(\"div\",{staticStyle:{float:\"right\"}},[s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"每隔30秒刷新一次\",placement:\"top\"}},[s(\"el-checkbox\",{staticStyle:{float:\"right\",\"margin-top\":\"6px\"},on:{change:t.handleCheckAutoData},model:{value:t.autoData,callback:function(e){t.autoData=e},expression:\"autoData\"}},[t._v(\"自动刷新\")])],1)],1),t._v(\" \"),s(\"el-col\",{attrs:{offset:1,span:12}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\"},on:{change:t.onStraSwitch},model:{value:t.strafilter,callback:function(e){t.strafilter=e},expression:\"strafilter\"}},[s(\"el-option\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"pos\"==t.selCat,expression:\"selCat=='pos'\"}],attrs:{label:\"全部策略\",value:\"all\"}},[s(\"i\",{staticClass:\"el-icon-collection\"}),t._v(\" \"),s(\"span\",[t._v(\"全部策略\")])]),t._v(\" \"),t._l(t.strategies,function(e){return s(\"el-option\",{key:e,attrs:{label:e,value:e}},[s(\"i\",{staticClass:\"el-icon-tickets\"}),t._v(\" \"),s(\"span\",[t._v(t._s(e))])])})],2)],1),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"el-button\",{attrs:{type:\"primary\",icon:\"el-icon-refresh\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.queryData()}}},[t._v(\"刷新\")])],1)],1)],1)])])]),t._v(\" \"),s(\"el-main\",{staticStyle:{overflow:\"auto\",\"border-bottom\":\"1px solid #E4E7ED\"}},[s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"pos\"==t.selCat,expression:\"selCat=='pos'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.position,expression:\"loading.position\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.positions,\"summary-method\":t.getPosSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"strategy\",label:\"策略\",width:\"140\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"数量\",width:\"64\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.qty>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.qty))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"浮盈\",width:\"100\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.profit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.profit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.opentime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓价格\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.price)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"最大浮盈\",width:\"120\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-danger\"},[t._v(t._s(e.row.maxprofit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"最大浮亏\",width:\"120\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-success\"},[t._v(t._s(e.row.maxloss.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"opentag\",label:\"标记\",sortable:\"\"}})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"trd\"==t.selCat,expression:\"selCat=='trd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.trade,expression:\"loading.trade\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.trades,\"summary-method\":t.getTrdSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"strategy\",label:\"策略\",width:\"140\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.time)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"动作\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"开多\"==e.row.action||\"平空\"==e.row.action?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.action))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"价格\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.price)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"volume\",label:\"数量\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"tag\",label:\"标记\",sortable:\"\"}})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"sig\"==t.selCat,expression:\"selCat=='sig'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.signal,expression:\"loading.signal\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.signals,\"summary-method\":t.getSigSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"strategy\",label:\"策略\",width:\"140\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"target\",label:\"目标数量\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:t.fmtProfit(e.row.target)},[t._v(t._s(e.row.target))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"触发价格\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.sigprice)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"触发时间\",width:\"180\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.gentime,!0)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"tag\",label:\"标记\",sortable:\"\"}})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"rnd\"==t.selCat,expression:\"selCat=='rnd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.round,expression:\"loading.round\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",\"summary-method\":t.getRndSum,\"show-summary\":\"\",data:t.rounds}},[s(\"el-table-column\",{attrs:{prop:\"strategy\",label:\"策略\",width:\"140\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"方向\",width:\"64\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"LONG\"==e.row.direct?\"text-danger\":\"text-success\"},[t._v(t._s(\"LONG\"==e.row.direct?\"多\":\"空\"))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.opentime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓价格\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.openprice)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.closetime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓价格\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.closeprice)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"qty\",label:\"数量\",width:\"64\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"盈亏\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.profit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.profit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"entertag\",label:\"进场标记\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"exittag\",label:\"出场标记\",width:\"100\"}})],1)],1),t._v(\" \"),t.isAdmin?s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"fnd\"==t.selCat,expression:\"selCat=='fnd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.fund,expression:\"loading.fund\"}],staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",overflow:\"auto\",height:\"50%\",\"border-bottom\":\"1px solid #E4E7ED\"}},[s(\"div\",{staticStyle:{\"max-height\":\"100%\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.funds}},[s(\"el-table-column\",{attrs:{prop:\"strategy\",label:\"策略\",width:\"140\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"日期\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtDate(e.row.date)))])]}}],null,!1,1157224088)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓盈亏\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.closeprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.closeprofit.toFixed(1)))])]}}],null,!1,298912261)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"浮动盈亏\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.dynprofit.toFixed(1)))])]}}],null,!1,103057029)}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"fee\",label:\"手续费\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"dynbalance\",label:\"动态权益\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynbalance>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.dynbalance.toFixed(1)))])]}}],null,!1,1406323205)})],1)],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",overflow:\"auto\",display:\"flex\",\"flex-direction\":\"column\",margin:\"4px\"}},[s(\"div\",{staticStyle:{height:\"40px\",display:\"inline-block\",flex:\"0\",margin:\"4px\"}},[s(\"el-row\",[s(\"el-col\",{staticStyle:{\"margin-top\":\"2px\"},attrs:{span:2}},[s(\"i\",{staticClass:\"el-icon-money\"}),t._v(\" \"),s(\"a\",[t._v(\"资金规模\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:3}},[s(\"el-input\",{attrs:{placeholder:\"请输入资金规模\",size:\"mini\",type:\"number\",min:\"1000000\",step:\"1000000\"},model:{value:t.capital,callback:function(e){t.capital=e},expression:\"capital\"}})],1),t._v(\" \"),s(\"el-col\",{staticStyle:{\"margin-left\":\"2px\"},attrs:{span:2}},[s(\"el-button\",{attrs:{size:\"mini\",plain:\"\",type:\"danger\"},on:{click:t.onClickPaintChart}},[t._v(\"重新绘图\")])],1)],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",\"border-top\":\"1px solid #E4E7ED\"}},[s(\"div\",{staticStyle:{width:\"100%\",height:\"100%\"},attrs:{id:\"trend\"}})])])]):t._e()]),t._v(\" \"),s(\"el-footer\",{staticStyle:{height:\"24px\"}},[s(\"span\",{staticStyle:{\"font-size\":\"12px\",color:\"gray\",\"line-height\":\"24px\"}},[t._v(\"数据刷新时间: \"+t._s(t.refreshTime))])])],1)],1)},staticRenderFns:[]};var _=s(\"VU/8\")(w,x,!1,function(t){s(\"tvDO\")},\"data-v-d91c86fe\",null).exports,k={name:\"tradedata\",props:{groupid:{type:String,default:function(){return\"\"}}},components:{},watch:{groupid:function(t,e){var s=this;t=t||\"\",e=e||\"\",0!=t.length&&t!=e&&setTimeout(function(){s.$api.getChannels(t,function(t){if(t.result<0)s.$notify.error(\"拉取组合交易通道出错：\"+t.message);else{s.channels=t.channels;var e=s.showAllChannels(s.selCat);s.chnlfilter=e?\"all\":s.channels[0],setTimeout(function(){s.queryData()},300)}})},300)}},data:function(){return{selCat:\"pos\",chnlfilter:\"all\",channels:[],loading:{trade:!1,order:!1,position:!1,fund:!1},trades:[],orders:[],positions:[],funds:[],autoData:!1,dataInterval:0,refreshTime:(new Date).format(\"yyyy.MM.dd hh:mm:ss\")}},methods:{showAllChannels:function(t){return\"fnd\"==t||\"pos\"==t},getPosSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(0==e||1==e||2==e||3==e)if(0!=e){if(1==e)a[e]=s.length+\"笔\";else if(2==e){var i=s.map(function(t){return Number(t.long.newvol)}),n=s.map(function(t){return Number(t.long.prevol)});a[e]=\"昨\"+n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手 | 今\"+i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}else if(3==e){var o=s.map(function(t){return Number(t.short.newvol)}),r=s.map(function(t){return Number(t.short.prevol)});a[e]=\"昨\"+r.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手 | 今\"+o.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}}else a[e]=\"总计\";else a[e]=\"\"}),a},getTrdSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(e<4||e>6)a[e]=\"\";else if(4!=e){if(5==e)a[e]=s.length+\"笔\";else if(6==e){var i=s.map(function(t){return Number(t.volume)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}}else a[e]=\"总计\"}),a},getOrdSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(e<4||e>7)a[e]=\"\";else if(4!=e){if(5==e)a[e]=s.length+\"笔\";else if(6==e){var i=s.map(function(t){return Number(t.total)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}else if(7==e){var n=s.map(function(t){return Number(t.traded)});n.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}}else a[e]=\"总计\"}),a},getFndSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(0!=e){if(1==e)a[e]=s.length+\"条\";else if(2==e){var i=s.map(function(t){return Number(t.prebalance)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(3==e){var n=s.map(function(t){return Number(t.balance)});n.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(4==e){var o=s.map(function(t){return Number(t.closeprofit)});o.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=o.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(5==e){var r=s.map(function(t){return Number(t.dynprofit)});r.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=r.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(6==e){var l=s.map(function(t){return Number(t.margin)});l.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=l.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(7==e){var c=s.map(function(t){return Number(t.fee)});c.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=c.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(8==e){var u=s.map(function(t){return Number(t.available)});u.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=u.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}else if(9==e){var d=s.map(function(t){return Number(t.moneyio)});d.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=d.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(2)}}else a[e]=\"总计\"}),a},handleCheckAutoData:function(t){this.resetDataInterval()},resetDataInterval:function(){var t=this;this.autoData?(0!=this.dataInterval&&clearInterval(this.dataInterval),this.dataInterval=setInterval(function(){t.queryData()},3e4)):0!=this.dataInterval&&clearInterval(this.dataInterval)},getActClr:function(t){return\"开多\"==t||\"平空\"==t||\"平今空\"==t?\"text-danger\":\"text-success\"},handleCatChange:function(t,e){if(this.selCat!=t.name){this.selCat=t.name;var s=this.showAllChannels(this.selCat);s||\"all\"!=this.chnlfilter?s&&(this.chnlfilter=\"all\"):this.chnlfilter=this.channels[0],this.queryData()}},onChnlSwitch:function(){this.queryData()},formatTime:function(t,e){var s=t[e.property],a=new Date;return a.setTime(s),a.format(\"yyyy/MM/dd hh:mm:ss\")},fmtPrice:function(t,e){for(var s=t[e.property].toFixed(4),a=0;a<s.length&&\"0\"==s[s.length-1-a];a++);\".\"==s[s.length-1-a]&&a++;var i=s.length-a;return s.substr(0,i)},fmtAmount:function(t,e){return t[e.property].toFixed(2)},queryData:function(t){var e=this;t=t||!1;var s=this,a=this.selCat,i=this.groupid||\"\",n=this.chnlfilter||\"\";0!=i.length?0!=n.length?\"trd\"==a?(s.loading.trade=!0,setTimeout(function(){e.$api.getChnlTrades(i,n,function(a){a.result<0?e.$notify.error(\"查询成交出错：\"+a.message):(a.trades.forEach(function(t){var e;t.action=\"OL\"==(e=t.action)?\"开多\":\"OS\"==e?\"开空\":\"CL\"==e?\"平多\":\"CS\"==e?\"平空\":e}),s.trades=a.trades,s.trades.reverse()),s.loading.trade=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"ord\"==a?(s.loading.order=!0,setTimeout(function(){e.$api.getChnlOrders(i,n,function(a){a.result<0?e.$notify.error(\"查询订单出错：\"+a.message):(a.orders.forEach(function(t){var e;t.action=\"OL\"==(e=t.action)?\"开多\":\"OS\"==e?\"开空\":\"CL\"==e?\"平多\":\"CS\"==e?\"平空\":e}),s.orders=a.orders,s.orders.reverse()),s.loading.order=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"pos\"==a?(s.loading.position=!0,setTimeout(function(){e.$api.getChnlPositions(i,n,function(a){a.result<0?e.$notify.error(\"查询持仓出错：\"+a.message):s.positions=a.positions,s.loading.position=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"fnd\"==a&&(s.loading.fund=!0,setTimeout(function(){e.$api.getChnlFunds(i,n,function(a){if(a.result<0)e.$notify.error(\"查询资金出错：\"+a.message);else{var i=[];for(var n in a.funds){var o=a.funds[n];for(var r in o){var l=o[r];l.channel=n,l.currency=r,l.moneyio=l.deposit-l.withdraw,l.dynprofit=l.dynprofit||0,i.push(l)}}s.funds=i}s.loading.fund=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):this.$notify.error(\"通道ID不能为空\"):this.$notify.error(\"组合ID不能为空\")}}},C={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\"}},[s(\"el-container\",{staticStyle:{height:\"100%\"}},[s(\"el-header\",{staticStyle:{height:\"40px\",\"overflow-y\":\"hidden\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{flex:\"0\",height:\"100%\"}},[s(\"el-tabs\",{attrs:{value:t.selCat,\"tab-position\":\"top\"},on:{\"tab-click\":t.handleCatChange}},[s(\"el-tab-pane\",{attrs:{label:\"持仓明细\",name:\"pos\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"成交明细\",name:\"trd\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"订单明细\",name:\"ord\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"资金明细\",name:\"fnd\"}})],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"2px solid #E4E7ED\",\"margin-top\":\"4px\"}},[s(\"div\",{staticStyle:{float:\"right\"}},[s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"每隔30秒刷新一次\",placement:\"top\"}},[s(\"el-checkbox\",{staticStyle:{float:\"right\",\"margin-top\":\"6px\"},on:{change:t.handleCheckAutoData},model:{value:t.autoData,callback:function(e){t.autoData=e},expression:\"autoData\"}},[t._v(\"自动刷新\")])],1)],1),t._v(\" \"),s(\"el-col\",{attrs:{offset:1,span:12}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\"},on:{change:t.onChnlSwitch},model:{value:t.chnlfilter,callback:function(e){t.chnlfilter=e},expression:\"chnlfilter\"}},[s(\"el-option\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showAllChannels(t.selCat),expression:\"showAllChannels(selCat)\"}],attrs:{label:\"全部通道\",value:\"all\"}},[s(\"i\",{staticClass:\"el-icon-tickets\"}),t._v(\" \"),s(\"span\",[t._v(\"全部通道\")])]),t._v(\" \"),t._l(t.channels,function(e){return s(\"el-option\",{key:e,attrs:{label:e,value:e}},[s(\"i\",{staticClass:\"el-icon-tickets\"}),t._v(\" \"),s(\"span\",[t._v(t._s(e))])])})],2)],1),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"el-button\",{attrs:{type:\"primary\",icon:\"el-icon-refresh\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.queryData()}}},[t._v(\"刷新\")])],1)],1)],1)])])]),t._v(\" \"),s(\"el-main\",{staticStyle:{overflow:\"auto\",\"border-bottom\":\"1px solid #E4E7ED\"}},[s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"pos\"==t.selCat,expression:\"selCat=='pos'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.position,expression:\"loading.position\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.positions,\"summary-method\":t.getPosSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"channel\",label:\"通道\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"long\",label:\"多头\",width:\"140\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"a\",{staticClass:\"text-danger\"},[s(\"span\",[t._v(\"昨\"+t._s(e.row.long.prevol)+\"[\"+t._s(e.row.long.preavail)+\"]\")]),t._v(\" \"),s(\"span\",[t._v(\"|\")]),t._v(\" \"),s(\"span\",[t._v(\"今\"+t._s(e.row.long.newvol)+\"[\"+t._s(e.row.long.newavail)+\"]\")])])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"short\",label:\"空头\",width:\"140\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"a\",{staticClass:\"text-success\"},[s(\"span\",[t._v(\"昨\"+t._s(e.row.short.prevol)+\"[\"+t._s(e.row.short.preavail)+\"]\")]),t._v(\" \"),s(\"span\",[t._v(\"|\")]),t._v(\" \"),s(\"span\",[t._v(\"今\"+t._s(e.row.short.newvol)+\"[\"+t._s(e.row.short.newavail)+\"]\")])])]}}])})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"trd\"==t.selCat,expression:\"selCat=='trd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.trade,expression:\"loading.trade\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.trades,\"summary-method\":t.getTrdSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"channel\",label:\"通道\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"time\",label:\"时间\",width:\"150\",sortable:\"\",formatter:t.formatTime}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"localid\",label:\"本地单号\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"动作\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:t.getActClr(e.row.action)},[t._v(t._s(e.row.action))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"price\",label:\"价格\",width:\"80\",formatter:t.fmtPrice}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"volume\",label:\"数量\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"tradeid\",label:\"成交单号\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"orderid\",label:\"委托单号\",width:\"100\"}})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"ord\"==t.selCat,expression:\"selCat=='ord'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.order,expression:\"loading.order\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.orders,\"summary-method\":t.getOrdSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"channel\",label:\"通道\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"time\",label:\"委托时间\",width:\"150\",sortable:\"\",formatter:t.formatTime}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"localid\",label:\"本地单号\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"动作\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:t.getActClr(e.row.action)},[t._v(t._s(e.row.action))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"price\",label:\"价格\",width:\"80\",formatter:t.fmtPrice}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"total\",label:\"数量\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"traded\",label:\"成交\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"orderid\",label:\"委托单号\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"撤销\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"TRUE\"==e.row.canceled?\"text-danger\":\"text-info\"},[t._v(t._s(\"TRUE\"==e.row.canceled?\"是\":\"否\"))])]}}])})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"fnd\"==t.selCat,expression:\"selCat=='fnd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.fund,expression:\"loading.fund\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.funds,\"summary-method\":t.getFndSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"channel\",label:\"通道\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"currency\",label:\"币种\",width:\"64\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"prebalance\",label:\"上日结存\",width:\"120\",sortable:\"\",formatter:t.fmtAmount}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"balance\",label:\"静态权益\",width:\"120\",sortable:\"\",formatter:t.fmtAmount}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓盈亏\",width:\"110\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.closeprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.closeprofit.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"浮动盈亏\",width:\"110\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.dynprofit.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"margin\",label:\"保证金\",width:\"120\",sortable:\"\",formatter:t.fmtAmount}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"fee\",label:\"手续费\",width:\"100\",sortable:\"\",formatter:t.fmtAmount}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"available\",label:\"可用资金\",width:\"120\",sortable:\"\",formatter:t.fmtAmount}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"出入金\",width:\"100\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.moneyio>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.moneyio.toFixed(2)))])]}}])})],1)],1)]),t._v(\" \"),s(\"el-footer\",{staticStyle:{height:\"24px\"}},[s(\"span\",{staticStyle:{\"font-size\":\"12px\",color:\"gray\",\"line-height\":\"24px\"}},[t._v(\"数据刷新时间: \"+t._s(t.refreshTime))])])],1)],1)},staticRenderFns:[]};var S=s(\"VU/8\")(k,C,!1,function(t){s(\"n+8b\")},\"data-v-b10ba514\",null).exports,N={name:\"portdata\",props:{groupid:{type:String,default:function(){return\"\"}}},computed:d()({},Object(p.b)([\"cache\"]),{isAdmin:function(){var t=this.cache.userinfo;return!!t&&(\"admin\"==t.role||\"superman\"==t.role)}}),components:{},watch:{groupid:function(t,e){var s=this;t=t||\"\",e=e||\"\",0!=t.length&&t!=e&&setTimeout(function(){s.queryData()},300)}},data:function(){return{selCat:\"pos\",loading:{risk:!1,performance:!1,position:!1,fund:!1},capital:5e6,performances:[],positions:[],filters:{},funds:[],nvChart:null,pieChart:null,autoData:!1,dataInterval:0,refreshTime:(new Date).format(\"yyyy.MM.dd hh:mm:ss\")}},methods:{handleCheckAutoData:function(t){this.resetDataInterval()},resetDataInterval:function(){var t=this;this.autoData?(0!=this.dataInterval&&clearInterval(this.dataInterval),this.dataInterval=setInterval(function(){\"pos\"==t.selCat&&t.queryData()},3e4)):0!=this.dataInterval&&clearInterval(this.dataInterval)},getPosSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(0==e||1==e||2==e||3==e)if(0!=e){if(1==e){var i=s.map(function(t){return Number(t.qty)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=s.length+\"笔 | \"+i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+Math.abs(e)},0)+\"手\"}else if(2==e){var n=s.map(function(t){return Number(t.profit)});n.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(1)}}else a[e]=\"总计\";else a[e]=\"\"}),a},handleCatChange:function(t,e){this.selCat!=t.name&&(this.selCat=t.name,this.queryData())},formatAmount:function(t,e){return t[e.property].toFixed(2)},fmtFundTime:function(t){var e=Math.floor(t/1e3)+\"\";return e.length<6&&(e=\"0\"+e),e.substr(0,2)+\":\"+e.substr(2,2)},fmtFundDate:function(t){var e=t+\"\";return e.substr(2,2)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)},fmtPrice:function(t){for(var e=t.toFixed(4),s=0;s<e.length&&\"0\"==e[e.length-1-s];s++);\".\"==e[e.length-1-s]&&s++;var a=e.length-s;return e.substr(0,a)},fmtTime:function(t,e){if(e=e||!1){var s=t+\"\";return s.substr(2,2)+\".\"+s.substr(4,2)+\".\"+s.substr(6,2)+\" \"+s.substr(8,2)+\":\"+s.substr(10,2)+\":\"+s.substr(12,2)+\",\"+s.substr(14,3)}var a=t+\"\";return a.substr(2,2)+\".\"+a.substr(4,2)+\".\"+a.substr(6,2)+\" \"+a.substr(8,2)+\":\"+a.substr(10,2)},fmtDate:function(t){var e=t+\"\";return e.substr(0,4)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)},fmtProfit:function(t){return t>0?\"text-danger\":t<0?\"text-success\":\"\"},onClickResetCapital:function(){var t=parseInt(this.capital);this.funds.forEach(function(e){e.capital=t}),this.paintChart()},paintChart:function(){null==this.nvChart&&(this.nvChart=this.$echarts.init(document.getElementById(\"grptrend\")));for(var t={title:{text:\"净值走势\"},tooltip:{trigger:\"axis\",axisPointer:{label:{backgroundColor:\"#6a7985\",formatter:function(t){var e=t.value+\"\";return e.substr(0,4)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)}}},formatter:function(t){if(0==t.length)return\"收益曲线\";var e=t[0].axisValueLabel;for(var s in t)\"净值\"==t[s].seriesName?e+=\"<br/>净值: \"+t[s].value.toFixed(4):e+=\"<br/>\"+t[s].seriesName+\": \"+t[s].value;return e}},grid:{top:42,left:\"8\",right:\"8\",bottom:\"8\",containLabel:!0},xAxis:{type:\"category\",data:[],boundaryGap:!1,axisLabel:{textStyle:{color:\"#000\"},formatter:function(t,e){return(t+=\"\").substr(0,4)+\".\"+t.substr(4,2)+\".\"+t.substr(6,2)}},axisLine:{lineStyle:{color:\"#000\"}}},yAxis:[{type:\"value\",axisLabel:{textStyle:{color:\"#000\"},formatter:function(t,e){return t.toFixed(4)}},axisLine:{lineStyle:{color:\"#000\"}},scale:!0}],series:[{name:\"净值\",type:\"line\",smooth:!0,stack:\"净值\",areaStyle:{normal:{color:{type:\"linear\",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:\"rgba(102,156,214,0.5)\"},{offset:1,color:\"rgba(242,242,242,0.3)\"}],globalCoord:!1}}},data:[],lineStyle:{normal:{color:\"rgb(102,156,214)\",width:2}},itemStyle:{normal:{color:\"rgb(102,156,214)\",borderWidth:1}}}]},e=[],s=[],a=parseInt(this.capital),i=this.funds.length-1;i>=0;i--){var n=this.funds[i];e.push(n.date);var o=a+n.dynbalance;s.push(o/a)}var r=Math.max.apply(null,s),l=Math.min.apply(null,s);if(r==l)r*=1.05,l*=.95;else{var c=r-l;r+=.05*c,l=Math.max(0,l-.05*c)}t.xAxis.data=e,t.series[0].data=s,t.yAxis[0].max=r,t.yAxis[0].min=l,this.nvChart.setOption(t)},paintPie:function(){if(this.isAdmin){null==this.pieChart&&(this.pieChart=this.$echarts.init(document.getElementById(\"pie\")));var t=[];for(var e in this.performances){var s=this.performances[e],a=s.closeprofit+s.dynprofit;t.push({value:Math.abs(a),truevalue:a,name:e})}var i={title:{text:\"组合绩效归因\",subtext:\"按品种\",left:\"center\"},tooltip:{trigger:\"item\",formatter1:\"{a} <br/>{b} : {c} ({d}%)\",formatter:function(t){return t.name+\": \"+(t.data.truevalue/1e4).toFixed(2)+\"万(\"+t.percent.toFixed(1)+\"%)\"}},legend:{orient:\"horizontal\",left:\"center\",top:\"bottom\"},series:[{name:\"分品种绩效\",type:\"pie\",radius:\"50%\",emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:\"rgba(0, 0, 0, 0.5)\"}},data:t}]};this.pieChart.setOption(i)}},queryPerf:function(){var t=this,e=this.groupid||\"\";this.$api.getPortPerfs(e,function(e){e.result<0?t.$notify.error(\"查询绩效归因出错：\"+e.message,\"查询失败\"):(t.performances=e.performance,setTimeout(function(){t.paintPie()},300))})},checkAllFilters:function(t,e){for(var s in this.filters[t])this.filters[t][s]=e},onAddCodeFilter:function(){var t=this;t.$prompt(\"请输入品种代码，格式如CFFEX.IF\",\"新增代码过滤器\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\"}).then(function(e){var s=e.value;if(void 0!=t.filters.code_filters[s])return t.$alert(\"该品种代码已存在\"),!0;t.filters.code_filters[s]=!0,t.$forceUpdate()}).catch(function(){})},onDelCodeFilter:function(t){var e=this;this.$confirm(\"确定要删除该代码过滤器吗?\",\"删除代码过滤器\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){delete e.filters.code_filters[t],e.$forceUpdate()}).catch(function(){})},onCommitFilters:function(){var t=this,e=this;this.$confirm(\"确定要提交最新的过滤器配置吗?\",\"提交过滤器\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){var s=t.groupid||\"\";e.$api.commitPortFilters(s,e.filters,function(e){e.result<0?t.$notify.error(\"提交过滤器出错：\"+e.message):t.$notify({message:\"过滤器提交成功\"})})}).catch(function(){})},queryData:function(t){var e=this;t=t||!1;var s=this,a=this.selCat,i=this.groupid||\"\";0!=i.length?\"pos\"==a?(s.loading.position=!0,setTimeout(function(){e.$api.getPortPositions(i,function(a){a.result<0?e.$notify.error(\"查询持仓出错：\"+a.message):(a.positions.forEach(function(t){t.qty=t.volume*(t.long?1:-1)}),s.positions=a.positions),s.loading.position=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()}),e.queryPerf()},300)):\"fnd\"==a?(s.loading.fund=!0,setTimeout(function(){var a=parseInt(s.capital);e.$api.getPortFunds(i,function(i){i.result<0?e.$notify.error(\"查询绩效出错：\"+i.message):(i.funds.forEach(function(t){t.dynbalance=t.balance+t.dynprofit,t.capital=a}),s.funds=i.funds,s.funds.reverse(),s.paintChart()),s.loading.fund=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):\"rsk\"==a&&(s.loading.risk=!0,setTimeout(function(){parseInt(s.capital);e.$api.getPortFilters(i,function(a){a.result<0?e.$notify.error(\"查询过滤器出错：\"+a.message):(a.filters.strategy_filters=a.filters.strategy_filters||{},a.filters.code_filters=a.filters.code_filters||{},a.filters.channel_filters=a.filters.executer_filters||{},s.filters=a.filters),s.loading.risk=!1,s.refreshTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),t&&s.resetDataInterval()})},300)):this.$notify.error(\"组合ID不能为空\")}},mounted:function(){var t=this;window.onresize=function(){t.zooming||(t.zooming=!0,setTimeout(function(){t.myChart&&t.nvChart.resize(),t.pieChart&&t.pieChart.resize(),t.zooming=!1},300))},t.$nextTick(function(){t.$on(\"resize\",function(){t.zooming||(t.zooming=!0,setTimeout(function(){t.myChart&&t.nvChart.resize(),t.pieChart&&t.pieChart.resize(),t.zooming=!1},150))})})}},A={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",overflow:\"auto\"}},[s(\"el-container\",{staticStyle:{height:\"100%\",overflow:\"auto\"}},[s(\"el-header\",{staticStyle:{height:\"40px\",\"overflow-y\":\"hidden\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{flex:\"0\",height:\"100%\"}},[s(\"el-tabs\",{staticStyle:{height:\"100%\",margin:\"0\"},attrs:{value:t.selCat,\"tab-position\":\"top\"},on:{\"tab-click\":t.handleCatChange}},[s(\"el-tab-pane\",{attrs:{label:\"持仓数据\",name:\"pos\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"组合风控\",name:\"rsk\"}}),t._v(\" \"),t.isAdmin?s(\"el-tab-pane\",{attrs:{label:\"每日绩效\",name:\"fnd\"}}):t._e()],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"2px solid #E4E7ED\",\"margin-top\":\"4px\"}},[s(\"div\",{staticStyle:{float:\"right\"}},[s(\"el-row\",[s(\"el-col\",{attrs:{offset:7,span:4}},[s(\"el-tooltip\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"pos\"==t.selCat,expression:\"selCat=='pos'\"}],staticClass:\"item\",attrs:{effect:\"dark\",content:\"每隔30秒刷新一次\",placement:\"top\"}},[s(\"el-checkbox\",{staticStyle:{float:\"right\",\"margin-top\":\"6px\"},on:{change:t.handleCheckAutoData},model:{value:t.autoData,callback:function(e){t.autoData=e},expression:\"autoData\"}},[t._v(\"自动刷新\")])],1)],1),t._v(\" \"),s(\"el-col\",{attrs:{offset:1,span:4}},[s(\"el-button\",{attrs:{type:\"primary\",icon:\"el-icon-refresh\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.queryData()}}},[t._v(\"刷新\")])],1)],1)],1)])])]),t._v(\" \"),s(\"el-main\",{staticStyle:{overflow:\"auto\",\"border-bottom\":\"1px solid #E4E7ED\"}},[s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"pos\"==t.selCat,expression:\"selCat=='pos'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.position,expression:\"loading.position\"}],staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{flex:\"1\",height:\"100%\",overflow:\"auto\",\"border-right\":\"1px solid #E4E7ED\",width:\"100%\"}},[s(\"div\",[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.positions,\"summary-method\":t.getPosSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"数量\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.qty>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.qty))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"浮盈\",width:\"100\",sortable:\"\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.profit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.profit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.opentime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓价格\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.price)))])]}}])})],1)],1)]),t._v(\" \"),t.isAdmin?s(\"div\",{staticStyle:{flex:\"1\",height:\"100%\",overflow:\"auto\",width:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",height:\"100%\"}},[s(\"div\",{staticStyle:{width:\"100%\",height:\"100%\"},attrs:{id:\"pie\"}})])]):t._e()]),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"rsk\"==t.selCat,expression:\"selCat=='rsk'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.risk,expression:\"loading.risk\"}],staticStyle:{height:\"100%\",overflow:\"auto\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"1\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticClass:\"filter-pane el-card is-always-shadow\"},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 1 44px\",padding:\"18px 20px\",\"border-bottom\":\"1px solid #EBEEF5\",\"box-sizing\":\"border-box\"}},[s(\"span\",{staticClass:\"filter\"},[t._v(\"策略过滤器\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\",\"margin-left\":\"1px\"},attrs:{type:\"danger\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.checkAllFilters(\"strategy_filters\",!0)}}},[t._v(\"一键过滤\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\",\"margin-right\":\"1px\"},attrs:{type:\"success\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.checkAllFilters(\"strategy_filters\",!1)}}},[t._v(\"一键通过\")])],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1 0 0\",overflow:\"auto\",padding:\"20px\"}},t._l(t.filters.strategy_filters,function(e,a){return s(\"el-row\",{key:a,staticClass:\"filter-row\"},[s(\"el-col\",{attrs:{span:12}},[s(\"i\",{staticClass:\"el-icon-cpu\"}),s(\"span\",{staticClass:\"filter-strategy\"},[t._v(t._s(a))])]),t._v(\" \"),s(\"el-col\",{attrs:{span:12}},[s(\"el-switch\",{attrs:{\"active-text\":\"过滤\",\"inactive-text\":\"通过\",\"inactive-color\":\"#13ce66\",\"active-color\":\"#ff4949\"},model:{value:t.filters.strategy_filters[a],callback:function(e){t.$set(t.filters.strategy_filters,a,e)},expression:\"filters['strategy_filters'][id]\"}})],1)],1)}),1)])]),t._v(\" \"),s(\"div\",{staticClass:\"filter-pane el-card is-always-shadow\"},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 1 44px\",padding:\"18px 20px\",\"border-bottom\":\"1px solid #EBEEF5\",\"box-sizing\":\"border-box\"}},[s(\"span\",{staticClass:\"filter\"},[t._v(\"代码过滤器\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\",\"margin-left\":\"1px\"},attrs:{type:\"danger\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.checkAllFilters(\"code_filters\",!0)}}},[t._v(\"一键过滤\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\",\"margin-right\":\"1px\"},attrs:{type:\"success\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.checkAllFilters(\"code_filters\",!1)}}},[t._v(\"一键通过\")])],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1 0 0\",overflow:\"auto\",padding:\"20px\"}},[t._l(t.filters.code_filters,function(e,a){return s(\"el-row\",{key:a,staticClass:\"filter-row\"},[s(\"el-col\",{staticStyle:{\"margin-top\":\"4px\"},attrs:{span:10}},[s(\"i\",{staticClass:\"el-icon-collection\"}),s(\"span\",{staticClass:\"filter-code\"},[t._v(t._s(a))])]),t._v(\" \"),s(\"el-col\",{staticStyle:{\"margin-top\":\"4px\"},attrs:{span:10}},[s(\"el-switch\",{staticStyle:{float:\"right\"},attrs:{\"active-text\":\"过滤\",\"inactive-text\":\"通过\",\"inactive-color\":\"#13ce66\",\"active-color\":\"#ff4949\"},model:{value:t.filters.code_filters[a],callback:function(e){t.$set(t.filters.code_filters,a,e)},expression:\"filters['code_filters'][id]\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"删除代码过滤器\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\"},attrs:{size:\"mini\",circle:\"\",icon:\"el-icon-delete\"},on:{click:function(e){return t.onDelCodeFilter(a)}}})],1)],1)],1)}),t._v(\" \"),s(\"el-row\",{staticClass:\"filter-row\"},[s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"添加代码过滤器\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{width:\"100%\"},attrs:{type:\"primary\",plain:\"\",icon:\"el-icon-plus\"},on:{click:function(e){return t.onAddCodeFilter()}}})],1)],1)],2)])]),t._v(\" \"),s(\"div\",{staticClass:\"filter-pane el-card is-always-shadow\"},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 1 44px\",padding:\"18px 20px\",\"border-bottom\":\"1px solid #EBEEF5\",\"box-sizing\":\"border-box\"}},[s(\"span\",{staticClass:\"filter\"},[t._v(\"通道过滤器\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\",\"margin-left\":\"1px\"},attrs:{type:\"danger\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.checkAllFilters(\"channel_filters\",!0)}}},[t._v(\"一键过滤\")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\",\"margin-right\":\"1px\"},attrs:{type:\"success\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.checkAllFilters(\"channel_filters\",!1)}}},[t._v(\"一键通过\")])],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1 0 0\",overflow:\"auto\",padding:\"20px\"}},t._l(t.filters.channel_filters,function(e,a){return s(\"el-row\",{key:a,staticClass:\"filter-row\"},[s(\"el-col\",{attrs:{span:12}},[s(\"i\",{staticClass:\"el-icon-link\"}),s(\"span\",{staticClass:\"filter-channel\"},[t._v(t._s(a))])]),t._v(\" \"),s(\"el-col\",{attrs:{span:12}},[s(\"el-switch\",{attrs:{\"active-text\":\"过滤\",\"inactive-text\":\"通过\",\"inactive-color\":\"#13ce66\",\"active-color\":\"#ff4949\"},model:{value:t.filters.channel_filters[a],callback:function(e){t.$set(t.filters.channel_filters,a,e)},expression:\"filters['channel_filters'][id]\"}})],1)],1)}),1)])])]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"0 28px\",margin:\"2px 0\"}},[s(\"span\",{staticStyle:{\"font-size\":\"12px\",color:\"gray\",\"line-height\":\"24px\"}},[t._v(\"\\n                            当过滤器生效时，相关的信号都会被过滤掉！修改完过滤器，一定要记得\"),s(\"strong\",[t._v(\"提交\")]),t._v(\"！提交以后会在\"),s(\"strong\",[t._v(\"1分钟内\")]),t._v(\"生效！\\n                        \")]),t._v(\" \"),s(\"el-button\",{staticStyle:{float:\"right\"},attrs:{type:\"danger\",icon:\"el-icon-finished\"},on:{click:function(e){return t.onCommitFilters()}}},[t._v(\"提交\")])],1)])]),t._v(\" \"),t.isAdmin?s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"fnd\"==t.selCat,expression:\"selCat=='fnd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.fund,expression:\"loading.fund\"}],staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{height:\"40px\",display:\"inline-block\",flex:\"0\",margin:\"4px\"}},[s(\"el-row\",[s(\"el-col\",{staticStyle:{\"margin-top\":\"2px\"},attrs:{span:2}},[s(\"i\",{staticClass:\"el-icon-money\"}),t._v(\" \"),s(\"a\",[t._v(\"资金规模\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:3}},[s(\"el-input\",{attrs:{placeholder:\"请输入资金规模\",size:\"mini\",type:\"number\",min:\"1000000\",step:\"1000000\"},model:{value:t.capital,callback:function(e){t.capital=e},expression:\"capital\"}})],1),t._v(\" \"),s(\"el-col\",{staticStyle:{\"margin-left\":\"2px\"},attrs:{span:2}},[s(\"el-button\",{attrs:{size:\"mini\",plain:\"\",type:\"danger\"},on:{click:t.onClickResetCapital}},[t._v(\"刷新数据\")])],1)],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",overflow:\"auto\",height:\"50%\",\"border-bottom\":\"1px solid #E4E7ED\"}},[s(\"div\",{staticStyle:{\"max-height\":\"100%\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.funds}},[s(\"el-table-column\",{attrs:{label:\"日期\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtDate(e.row.date)))])]}}],null,!1,1157224088)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓盈亏\",width:\"90\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.closeprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.closeprofit.toFixed(1)))])]}}],null,!1,298912261)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"浮动盈亏\",width:\"90\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.dynprofit.toFixed(1)))])]}}],null,!1,103057029)}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"fee\",label:\"佣金\",width:\"80\",formatter:t.formatAmount}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"动态权益\",width:\"110\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynbalance+e.row.capital>=0?\"text-danger\":\"text-success\"},[t._v(t._s((e.row.dynbalance+e.row.capital).toFixed(1)))])]}}],null,!1,4057529733)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"日内最大市值\",width:\"140\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-danger\"},[t._v(t._s((e.row.maxdynbalance+e.row.capital).toFixed(1)+\"(\"+t.fmtFundTime(e.row.maxtime)+\")\"))])]}}],null,!1,2563446024)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"日内最小市值\",width:\"140\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-success\"},[t._v(t._s((e.row.mindynbalance+e.row.capital).toFixed(1)+\"(\"+t.fmtFundTime(e.row.mintime)+\")\"))])]}}],null,!1,1140179728)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"多日最大市值\",width:\"160\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-danger\"},[t._v(t._s((e.row.mdmaxbalance+e.row.capital).toFixed(1)+\"(\"+t.fmtFundDate(e.row.mdmaxdate)+\")\"))])]}}],null,!1,3597427227)}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"多日最小市值\",width:\"160\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-success\"},[t._v(t._s((e.row.mdminbalance+e.row.capital).toFixed(1)+\"(\"+t.fmtFundDate(e.row.mdmindate)+\")\"))])]}}],null,!1,1635711075)})],1)],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",overflow:\"auto\",display:\"flex\",\"flex-direction\":\"column\",margin:\"4px\"}},[s(\"div\",{staticStyle:{flex:\"1\",width:\"100%\",\"border-top\":\"1px solid #E4E7ED\"}},[s(\"div\",{staticStyle:{width:\"100%\",height:\"100%\"},attrs:{id:\"grptrend\"}})])])]):t._e()]),t._v(\" \"),s(\"el-footer\",{staticStyle:{height:\"24px\"}},[s(\"span\",{staticStyle:{\"font-size\":\"12px\",color:\"gray\",\"line-height\":\"24px\"}},[t._v(\"数据刷新时间: \"+t._s(t.refreshTime))])])],1)],1)},staticRenderFns:[]};var D=s(\"VU/8\")(N,A,!1,function(t){s(\"b3w7\")},\"data-v-4147835e\",null).exports,T=s(\"E5Az\"),E=(s(\"tWbI\"),s(\"5IAE\"),s(\"4/hK\"),s(\"Yokd\"),s(\"GUiZ\"),s(\"Z6qg\"),s(\"aGTD\"),s(\"7Xsf\"),s(\"THjC\"),s(\"Kk9m\"),s(\"fo6W\"),s(\"U3HU\"),s(\"soCA\"),s(\"aX1R\"),s(\"vq+x\"),{name:\"editor\",props:{groupid:{type:String,default:function(){return\"\"}}},computed:{curFilePath:function(){return null==this.curFile?\"\":this.curFile.path}},components:{codemirror:T.codemirror},watch:{groupid:function(t,e){t=t||\"\",e=e||\"\",0!=t.length&&t!=e&&this.queryFiles()}},data:function(){return{folders:[],edit:!1,filename:\"\",content_s:\"\",content_backup:\"\",curFile:null,fileOnway:!1,cmOptions:{mode:\"python\",keyMap:\"sublime\",lineNumbers:!0,smartIndent:!0,indentUnit:4,indentWithTabs:!0,lineWrapping:!0,gutters:[\"CodeMirror-linenumbers\",\"CodeMirror-foldgutter\",\"CodeMirror-lint-markers\"],foldGutter:!0,autofocus:!0,matchBrackets:!0,autoCloseBrackets:!0,styleActiveLine:!0,readOnly:!0}}},methods:{queryFiles:function(){var t=this,e=this;e.$api.getGroupDir(e.groupid,function(s){s.result<0?e.$notify.error(\"获取组合目录结构失败：\"+s.message):t.folders=[s.tree]})},handleFileClick:function(t){var e=this;if(t.isfile){var s=t.path.split(\".\"),a=s[s.length-1].toLowerCase();if(-1==[\"py\",\"json\",\"js\",\"csv\"].indexOf(a))return void this.$toast(\"该文件不可查看\");e.fileOnway=!0,e.curFile=t,e.$api.getGroupFile(this.groupid,t.path,function(t){t.result<0?e.$notify.error(\"获取文件内容失败\"+t.message):(e.content_s=t.content,e.cmOptions.mode=function(t){return\"py\"==t?\"python\":\"json\"==t?{name:\"javascript\",json:!0}:\"js\"==t?\"javascript\":\"text/plain\"}(a),e.fileOnway=!1)})}},onClickEdit:function(){this.content_backup=this.content_s,this.cmOptions.readOnly=!1,this.edit=!0},onClickCancel:function(){var t=this;this.content_s!=this.content_backup?this.$confirm(\"内容已被修改，确定要放弃修改吗?\",\"提示\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){t.content_s=t.content_backup,t.cmOptions.readOnly=!0,t.edit=!1}).catch(function(){}):(this.content_s=this.content_backup,this.cmOptions.readOnly=!0,this.edit=!1)},onClickCommit:function(){var t=this;this.loading=!0,this.$api.commitGroupFile(this.groupid,this.curFile.path,this.content_s,function(e){e.result<0?t.$message.error(\"文件提交失败:\"+e.message):t.$message({message:\"文件提交成功\",type:\"success\"}),t.edit=!1,t.cmOptions.readOnly=!0,t.loading=!1})}},mounted:function(){}}),I={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",width:\"100%\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{flex:\"0 320px\",\"min-width\":\"320px\",border:\"1px solid #DCDFE6\",\"border-radius\":\"2px\",margin:\"4px\"}},[s(\"div\",{staticStyle:{height:\"100%\",overflow:\"auto\"}},[s(\"el-tree\",{attrs:{data:t.folders},on:{\"node-click\":t.handleFileClick}})],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",margin:\"4px\",display:\"flex\",\"flex-direction\":\"column\",overflow:\"auto\"}},[s(\"div\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.fileOnway,expression:\"fileOnway\"}],staticStyle:{flex:\"1\",height:\"100%\",overflow:\"auto\",border:\"1px solid #DCDFE6\",\"border-radius\":\"2px\"}},[s(\"div\",{staticStyle:{height:\"100%\"}},[s(\"codemirror\",{ref:\"mycode\",staticStyle:{height:\"100% !important\"},attrs:{options:t.cmOptions},model:{value:t.content_s,callback:function(e){t.content_s=e},expression:\"content_s\"}})],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"0 32px\",\"margin-top\":\"8px\"}},[s(\"span\",{staticStyle:{\"font-size\":\"12px\",color:\"gray\",float:\"left\"}},[t._v(\"当前文件:\"+t._s(t.curFilePath))]),t._v(\" \"),s(\"el-button\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.edit,expression:\"!edit\"}],staticStyle:{float:\"right\"},attrs:{size:\"mini\"},on:{click:function(e){return t.onClickEdit()}}},[s(\"i\",{staticClass:\"el-icon-edit\"}),t._v(\"修改\\n            \")]),t._v(\" \"),s(\"el-button\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.edit,expression:\"edit\"}],staticStyle:{float:\"right\"},attrs:{size:\"mini\"},on:{click:function(e){return t.onClickCommit()}}},[s(\"i\",{staticClass:\"el-icon-set-up\"}),t._v(\"提交\\n            \")]),t._v(\" \"),s(\"el-button\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.edit,expression:\"edit\"}],staticStyle:{float:\"right\"},attrs:{size:\"mini\"},on:{click:function(e){return t.onClickCancel()}}},[s(\"i\",{staticClass:\"el-icon-refresh-left\"}),t._v(\"取消\\n            \")])],1)])])},staticRenderFns:[]};var G={name:\"empty\",components:{StrategyData:_,ChannelData:S,PorfolioData:D,Editor:s(\"VU/8\")(E,I,!1,function(t){s(\"C17c\")},null,null).exports},computed:d()({},Object(p.b)([\"cache\"]),{isAdmin:function(){var t=this.cache.userinfo;return!!t&&(\"admin\"==t.role||\"superman\"==t.role)},groupid:function(){return null==this.groupinfo?\"\":this.groupinfo.id}}),props:{groupinfo:{type:Object,default:function(){return{id:\"\",name:\"\",path:\"\",info:\"\",gtype:\"cta\",datmod:\"auto\"}}}},watch:{groupinfo:function(t,e){var s=this;null!=t&&(null!=e&&t.id==e.id||(this.logScroll=\"auto\"==t.datmod,setTimeout(function(){s.queryLogs(!0)},300)))}},data:function(){return{selData:\"sdata\",logs:\"\",logfilter:\"total\",logCache:\"\",logLines:0,logScroll:!0,logOnway:!1,autoLog:!1,logInterval:0,logTime:(new Date).format(\"yyyy.MM.dd hh:mm:ss\")}},methods:{handleClickTab:function(t,e){var s=this;this.selData=t.name,\"pdata\"==t.name&&setTimeout(function(){s.$refs.portfolio.$emit(\"resize\")},150)},handleClickQryLog:function(){var t=this;setTimeout(function(){t.queryLogs(!0)},300)},handleCheckAutoLog:function(t){this.resetLogInterval()},resetLogInterval:function(){var t=this;this.autoLog?(0!=this.logInterval&&clearInterval(this.logInterval),this.logInterval=setInterval(function(){t.queryLogs()},15e3)):0!=this.logInterval&&clearInterval(this.logInterval)},queryLogs:function(t){var e=this;t=t||!1;var s=this;\"\"!=this.groupinfo.id&&(s.logOnway=!0,this.$api.getLogs(this.groupinfo.id,this.logfilter,function(a){a.result<0?(e.logs=\"\",e.logLines=0,e.$notify.error(\"组合日志拉取失败：\"+a.message),s.$nextTick(function(){s.$refs.logs.scrollTo(0,0)})):(e.logs=a.content,e.logLines=a.lines||0,s.$nextTick(function(){var t=s.$refs.logs.scrollHeight;s.$refs.logs.scrollTo(0,t)})),s.logTime=(new Date).format(\"yyyy.MM.dd hh:mm:ss\"),s.logOnway=!1,t&&s.resetLogInterval()}))},processLog:function(t){var e=this,s=t.message||\"\";if(s.length>0){var a=0==e.logCache.length,i=\"[\"+new Date(t.time).format(\"yyyy.MM.dd hh:mm:ss\")+\" - \"+t.tag+\"] \"+s+\"\\n\";e.logCache+=i,e.logLines++,a&&e.$nextTick(function(){e.logLines>=200&&(e.logs=\"\",e.logLines=0),e.logs+=e.logCache,e.logCache=\"\",e.$nextTick(function(){var t=e.$refs.logs.scrollHeight;e.$refs.logs.scrollTo(0,t)})})}},processEvent:function(t){var e=t.evttype||\"\";if(\"\"!=e)if(\"notify\"==e)this.$notify({title:\"订单回报\",type:\"error\",message:\"交易通道{0}错误：{1}\".format(t.channel,t.message),duration:0});else if(\"order\"==e){if(!t.data.canceled)return;this.$notify({title:\"订单回报\",type:\"error\",message:\"交易通道{0}订单已撤销，本地订单号：{1}\".format(t.channel,t.data.localid),duration:0})}else if(\"trade\"==e){var s=(t.data.isopen?\"开\":\"平\")+(t.data.islong?\"多\":\"空\");this.$notify({title:\"成交回报\",type:\"success\",message:\"交易通道：{0}，操作：{1}，代码：{2}，数量：{3}，成交价：{4}，本地订单号：{5}\".format(t.channel,s,t.data.code,t.data.volume,t.data.price,t.data.localid)})}}},mounted:function(){var t=this;t.$on(\"notify\",function(e){if(e.groupid==t.groupinfo.id)if(\"gplog\"==e.type){if(!t.logScroll)return;t.processLog(e)}else\"chnlevt\"==e.type&&t.processEvent(e)})}},F={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100vh\",width:\"100%\"}},[s(\"el-row\",{staticStyle:{height:\"100%\"}},[s(\"el-col\",{staticStyle:{height:\"100%\"},attrs:{span:8}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0\",margin:\"2px 4px 0px 4px\",\"min-height\":\"39px\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticClass:\"simtab\",staticStyle:{flex:\"0\"}},[s(\"span\",[t._v(\"滚动日志\")])]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"1px solid #E4E7ED\",\"margin-top\":\"6px\"}}),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"0 160px\",\"border-bottom\":\"1px solid #E4E7ED\",\"margin-top\":\"6px\",display:\"inline-block\"}},[s(\"el-row\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.logScroll,expression:\"!logScroll\"}]},[s(\"el-col\",{attrs:{span:11}},[s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"每个15秒刷新一次\",placement:\"top\"}},[s(\"el-checkbox\",{staticStyle:{float:\"right\",\"margin-top\":\"6px\"},on:{change:t.handleCheckAutoLog},model:{value:t.autoLog,callback:function(e){t.autoLog=e},expression:\"autoLog\"}},[t._v(\"自动刷新\")])],1)],1),t._v(\" \"),s(\"el-col\",{attrs:{offset:1,span:12}},[s(\"el-button\",{attrs:{type:\"primary\",icon:\"el-icon-refresh\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.handleClickQryLog()}}},[t._v(\"刷新\")])],1)],1)],1)]),t._v(\" \"),s(\"div\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.logOnway,expression:\"logOnway\"}],staticStyle:{flex:\"1\",margin:\"10px 4px\"}},[s(\"textarea\",{ref:\"logs\",staticClass:\"el-textarea__inner\",attrs:{readonly:\"readonly\",autocomplete:\"off\",placeholder:\"这里是日志内容\"},domProps:{value:t.logs}})]),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.logScroll,expression:\"!logScroll\"}],staticStyle:{flex:\"0 24px\",\"align-items\":\"right\"}},[s(\"span\",{staticStyle:{\"font-size\":\"12px\",color:\"gray\"}},[t._v(\"日志刷新时间: \"+t._s(t.logTime))])])])]),t._v(\" \"),s(\"el-col\",{staticStyle:{height:\"100%\",\"border-left\":\"1px solid #E4E7ED\"},attrs:{span:16}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0\",margin:\"2px 4px 0px 4px\",\"min-height\":\"44px\"}},[s(\"el-tabs\",{staticStyle:{height:\"100%\"},attrs:{value:t.selData,type:\"card\"},on:{\"tab-click\":t.handleClickTab}},[s(\"el-tab-pane\",{attrs:{label:\"策略管理\",name:\"sdata\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"组合管理\",name:\"pdata\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"通道管理\",name:\"tdata\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"配置管理\",name:\"editor\"}})],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",margin:\"2px\",overflow:\"auto\"}},[s(\"StrategyData\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"sdata\"==t.selData,expression:\"selData=='sdata'\"}],attrs:{groupid:t.groupid}}),t._v(\" \"),s(\"ChannelData\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"tdata\"==t.selData,expression:\"selData=='tdata'\"}],attrs:{groupid:t.groupid}}),t._v(\" \"),s(\"PorfolioData\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"pdata\"==t.selData,expression:\"selData=='pdata'\"}],ref:\"portfolio\",attrs:{groupid:t.groupid}}),t._v(\" \"),s(\"Editor\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"editor\"==t.selData,expression:\"selData=='editor'\"}],attrs:{groupid:t.groupid}})],1)])])],1)],1)},staticRenderFns:[]};var M=s(\"VU/8\")(G,F,!1,function(t){s(\"g1Tk\")},\"data-v-7f597c06\",null).exports,q={render:function(){this.$createElement;this._self._c;return this._m(0)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticClass:\"empty-box\"},[e(\"div\",{staticClass:\"content\"},[e(\"h2\",[this._v(\"尚未添加组合\")])])])}]};var $=s(\"VU/8\")({name:\"empty\",components:{},data:function(){return{}},methods:{}},q,!1,function(t){s(\"SP1q\")},\"data-v-53f6add5\",null).exports,B={name:\"schedule\",computed:d()({},Object(p.b)([\"folders\"])),props:{fixinfo:{type:Boolean,default:function(){return!1}},forapp:{type:Boolean,default:function(){return!1}},config:{type:Object,default:function(){return{id:\"\",folder:\"\",path:\"\",param:\"\",mqurl:\"\",span:3,guard:!1,redirect:!1,schedule:{active:!0,weekflag:\"0111110\",weekmask:[!1,!0,!0,!0,!0,!0,!1],tasks:[{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0}]}}}}},data:function(){return{showfolders:!1,selfolder:\"\",actions:[\"启动\",\"停止\",\"重启\"]}},methods:{onLinkPython:function(){var t=this;this.$api.getPythonPath(function(e){e.result<0?t.$alert(e.message):t.config.path=e.path})},handlePickFolder:function(t){var e=this,s=this;s.selfolder=\"\",0==s.folders.length?this.$api.getFolders(function(t){t.result<0?s.$alert(t.message):(e.$store.commit(\"setfolders\",{folders:[t.tree]}),s.showfolders=!0)}):s.showfolders=!0},handleFolderPicked:function(){\"\"==this.selfolder?this.$alert(\"请选择目录\"):(this.config.folder=this.selfolder,this.showfolders=!1)},handleFolderClick:function(t){this.selfolder=t.path},onConfigCommit:function(){var t=this,e=JSON.parse(g()(this.config));if(0!=e.path.length)if(0!=e.id.length)if(0!=e.folder.length){e.schedule.weekflag=\"\";for(var s=0;s<7;s++)e.schedule.weekflag+=e.schedule.weekmask[s]?\"1\":\"0\";for(var a=0;a<6;a++){var i=e.schedule.tasks[a].time;i=i.replace(\":\",\"\"),e.schedule.tasks[a].time=parseInt(i)}e.redirect=!this.forapp,e.isapp=this.forapp,this.$confirm(\"确定要提交该调度配置?\",\"自动调度\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){delete e.schedule.weekmask,t.$api.commitMonCfg(e,function(e){e.result<0?t.$message.error(e.message):(t.$message({message:\"监控配置已提交成功\",type:\"success\"}),t.$emit(\"cfgudt\"))})})}else this.$alert(\"执行目录不能为空\");else this.$alert(\"应用ID不能为空\");else this.$alert(\"执行程序路径不能为空\")}}},O={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{display:\"flex\",\"flex-direction\":\"column\",margin:\"4px 20px\"}},[t._m(0),t._v(\" \"),s(\"el-divider\",{attrs:{\"content-position\":\"left\"}},[t._v(\"任务信息\")]),t._v(\" \"),s(\"div\",{staticClass:\"config-label\"},[s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"a\",[t._v(\"任务ID：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:7}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:t.fixinfo},model:{value:t.config.id,callback:function(e){t.$set(t.config,\"id\",e)},expression:\"config.id\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:4,offset:2}},[s(\"a\",[t._v(\"启动参数：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:7}},[s(\"el-input\",{attrs:{size:\"mini\",placeholder:\"run.py\"},model:{value:t.config.param,callback:function(e){t.$set(t.config,\"param\",e)},expression:\"config.param\"}})],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"a\",[t._v(\"执行程序：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:20}},[s(\"el-input\",{attrs:{size:\"mini\",placeholder:\"python执行程序所在目录，请上服务器查询\"},model:{value:t.config.path,callback:function(e){t.$set(t.config,\"path\",e)},expression:\"config.path\"}},[s(\"el-tooltip\",{attrs:{slot:\"append\",effect:\"dark\",content:\"直接获取python路径\",placement:\"top\"},slot:\"append\"},[s(\"el-button\",{attrs:{icon:\"el-icon-link\"},on:{click:t.onLinkPython}})],1)],1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"a\",[t._v(\"工作目录：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:20}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:t.fixinfo},model:{value:t.config.folder,callback:function(e){t.$set(t.config,\"folder\",e)},expression:\"config.folder\"}},[s(\"el-tooltip\",{attrs:{slot:\"append\",effect:\"dark\",content:\"选择组合所在的目录\",placement:\"top\"},slot:\"append\"},[s(\"el-button\",{attrs:{icon:\"el-icon-folder\",disabled:t.fixinfo},on:{click:t.handlePickFolder}})],1)],1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"a\",[t._v(\"消息地址：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:20}},[s(\"el-input\",{attrs:{size:\"mini\",placeholder:\"请输入消息队列的URL\",disabled:t.forapp},model:{value:t.config.mqurl,callback:function(e){t.$set(t.config,\"mqurl\",e)},expression:\"config.mqurl\"}})],1)],1)],1),t._v(\" \"),s(\"el-divider\",{attrs:{\"content-position\":\"left\"}},[t._v(\"监控设置\")]),t._v(\" \"),s(\"div\",{staticClass:\"config-row\"},[s(\"div\",{staticStyle:{flex:\"0\",\"margin-top\":\"6px\",\"padding-right\":\"16px\"}},[s(\"el-checkbox\",{model:{value:t.config.guard,callback:function(e){t.$set(t.config,\"guard\",e)},expression:\"config.guard\"}},[t._v(\"进程守护\")])],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"0:display:inline\"}},[s(\"span\",{staticClass:\"config-label\"},[t._v(\"检测间隔\")]),t._v(\" \"),s(\"el-input-number\",{attrs:{size:\"mini\",min:1,max:100,label:\"检测间隔\"},model:{value:t.config.span,callback:function(e){t.$set(t.config,\"span\",e)},expression:\"config.span\"}}),t._v(\" \"),s(\"span\",{staticClass:\"config-label\"},[t._v(\"s\")])],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\"}}),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"0\",\"margin-top\":\"6px\"}},[s(\"el-checkbox\",{model:{value:t.config.schedule.active,callback:function(e){t.$set(t.config.schedule,\"active\",e)},expression:\"config.schedule.active\"}},[t._v(\"计划任务\")])],1)]),t._v(\" \"),s(\"el-divider\",{attrs:{\"content-position\":\"left\"}},[t._v(\"计划任务\")]),t._v(\" \"),s(\"div\",{staticClass:\"config-row\"},[s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[0],callback:function(e){t.$set(t.config.schedule.weekmask,0,e)},expression:\"config.schedule.weekmask[0]\"}},[t._v(\"周日\")])],1),t._v(\" \"),s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[1],callback:function(e){t.$set(t.config.schedule.weekmask,1,e)},expression:\"config.schedule.weekmask[1]\"}},[t._v(\"周一\")])],1),t._v(\" \"),s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[2],callback:function(e){t.$set(t.config.schedule.weekmask,2,e)},expression:\"config.schedule.weekmask[2]\"}},[t._v(\"周二\")])],1),t._v(\" \"),s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[3],callback:function(e){t.$set(t.config.schedule.weekmask,3,e)},expression:\"config.schedule.weekmask[3]\"}},[t._v(\"周三\")])],1),t._v(\" \"),s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[4],callback:function(e){t.$set(t.config.schedule.weekmask,4,e)},expression:\"config.schedule.weekmask[4]\"}},[t._v(\"周四\")])],1),t._v(\" \"),s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[5],callback:function(e){t.$set(t.config.schedule.weekmask,5,e)},expression:\"config.schedule.weekmask[5]\"}},[t._v(\"周五\")])],1),t._v(\" \"),s(\"div\",{staticClass:\"week-marker\"},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.weekmask[6],callback:function(e){t.$set(t.config.schedule.weekmask,6,e)},expression:\"config.schedule.weekmask[6]\"}},[t._v(\"周六\")])],1)]),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:5}},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.tasks[0].active,callback:function(e){t.$set(t.config.schedule.tasks[0],\"active\",e)},expression:\"config.schedule.tasks[0].active\"}},[t._v(\"任务一\")])],1),t._v(\" \"),s(\"el-col\",{attrs:{span:6}},[s(\"el-input\",{attrs:{placeholder:\"请输入时间\",\"suffix-icon\":\"el-icon-time\",size:\"mini\",type:\"time\",disabled:!t.config.schedule.tasks[0].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[0].time,callback:function(e){t.$set(t.config.schedule.tasks[0],\"time\",e)},expression:\"config.schedule.tasks[0].time\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:5,offset:1}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\",disabled:!t.config.schedule.tasks[0].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[0].action,callback:function(e){t.$set(t.config.schedule.tasks[0],\"action\",e)},expression:\"config.schedule.tasks[0].action\"}},t._l(t.actions,function(t,e){return s(\"el-option\",{key:e,attrs:{label:t,value:e}})}),1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:5}},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.tasks[1].active,callback:function(e){t.$set(t.config.schedule.tasks[1],\"active\",e)},expression:\"config.schedule.tasks[1].active\"}},[t._v(\"任务二\")])],1),t._v(\" \"),s(\"el-col\",{attrs:{span:6}},[s(\"el-input\",{attrs:{placeholder:\"请输入时间\",\"suffix-icon\":\"el-icon-time\",size:\"mini\",type:\"time\",disabled:!t.config.schedule.tasks[1].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[1].time,callback:function(e){t.$set(t.config.schedule.tasks[1],\"time\",e)},expression:\"config.schedule.tasks[1].time\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:5,offset:1}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\",disabled:!t.config.schedule.tasks[1].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[1].action,callback:function(e){t.$set(t.config.schedule.tasks[1],\"action\",e)},expression:\"config.schedule.tasks[1].action\"}},t._l(t.actions,function(t,e){return s(\"el-option\",{key:e,attrs:{label:t,value:e}})}),1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:5}},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.tasks[2].active,callback:function(e){t.$set(t.config.schedule.tasks[2],\"active\",e)},expression:\"config.schedule.tasks[2].active\"}},[t._v(\"任务三\")])],1),t._v(\" \"),s(\"el-col\",{attrs:{span:6}},[s(\"el-input\",{attrs:{placeholder:\"请输入时间\",\"suffix-icon\":\"el-icon-time\",size:\"mini\",type:\"time\",disabled:!t.config.schedule.tasks[2].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[2].time,callback:function(e){t.$set(t.config.schedule.tasks[2],\"time\",e)},expression:\"config.schedule.tasks[2].time\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:5,offset:1}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\",disabled:!t.config.schedule.tasks[2].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[2].action,callback:function(e){t.$set(t.config.schedule.tasks[2],\"action\",e)},expression:\"config.schedule.tasks[2].action\"}},t._l(t.actions,function(t,e){return s(\"el-option\",{key:e,attrs:{label:t,value:e}})}),1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:5}},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.tasks[3].active,callback:function(e){t.$set(t.config.schedule.tasks[3],\"active\",e)},expression:\"config.schedule.tasks[3].active\"}},[t._v(\"任务四\")])],1),t._v(\" \"),s(\"el-col\",{attrs:{span:6}},[s(\"el-input\",{attrs:{placeholder:\"请输入时间\",\"suffix-icon\":\"el-icon-time\",size:\"mini\",type:\"time\",disabled:!t.config.schedule.tasks[3].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[3].time,callback:function(e){t.$set(t.config.schedule.tasks[3],\"time\",e)},expression:\"config.schedule.tasks[3].time\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:5,offset:1}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\",disabled:!t.config.schedule.tasks[3].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[3].action,callback:function(e){t.$set(t.config.schedule.tasks[3],\"action\",e)},expression:\"config.schedule.tasks[3].action\"}},t._l(t.actions,function(t,e){return s(\"el-option\",{key:e,attrs:{label:t,value:e}})}),1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:5}},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.tasks[4].active,callback:function(e){t.$set(t.config.schedule.tasks[4],\"active\",e)},expression:\"config.schedule.tasks[4].active\"}},[t._v(\"任务五\")])],1),t._v(\" \"),s(\"el-col\",{attrs:{span:6}},[s(\"el-input\",{attrs:{placeholder:\"请输入时间\",\"suffix-icon\":\"el-icon-time\",size:\"mini\",type:\"time\",disabled:!t.config.schedule.tasks[4].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[4].time,callback:function(e){t.$set(t.config.schedule.tasks[4],\"time\",e)},expression:\"config.schedule.tasks[4].time\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:5,offset:1}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\",disabled:!t.config.schedule.tasks[4].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[4].action,callback:function(e){t.$set(t.config.schedule.tasks[4],\"action\",e)},expression:\"config.schedule.tasks[4].action\"}},t._l(t.actions,function(t,e){return s(\"el-option\",{key:e,attrs:{label:t,value:e}})}),1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:5}},[s(\"el-checkbox\",{attrs:{disabled:!t.config.schedule.active},model:{value:t.config.schedule.tasks[5].active,callback:function(e){t.$set(t.config.schedule.tasks[5],\"active\",e)},expression:\"config.schedule.tasks[5].active\"}},[t._v(\"任务六\")])],1),t._v(\" \"),s(\"el-col\",{attrs:{span:6}},[s(\"el-input\",{attrs:{placeholder:\"请输入时间\",\"suffix-icon\":\"el-icon-time\",size:\"mini\",type:\"time\",disabled:!t.config.schedule.tasks[5].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[5].time,callback:function(e){t.$set(t.config.schedule.tasks[5],\"time\",e)},expression:\"config.schedule.tasks[5].time\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:5,offset:1}},[s(\"el-select\",{attrs:{placeholder:\"请选择\",size:\"mini\",disabled:!t.config.schedule.tasks[5].active||!t.config.schedule.active},model:{value:t.config.schedule.tasks[5].action,callback:function(e){t.$set(t.config.schedule.tasks[5],\"action\",e)},expression:\"config.schedule.tasks[5].action\"}},t._l(t.actions,function(t,e){return s(\"el-option\",{key:e,attrs:{label:t,value:e}})}),1)],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{padding:\"8px 4px\"}},[s(\"div\",{staticStyle:{flex:\"1:display:inline\",float:\"right\"}},[s(\"el-button\",{staticStyle:{float:\"right\"},attrs:{type:\"primary\",size:\"mini\",plain:\"\"},on:{click:function(e){return t.onConfigCommit()}}},[t._v(\"提交设置\")])],1)]),t._v(\" \"),s(\"el-dialog\",{attrs:{title:\"选择目录\",visible:t.showfolders,width:\"25%\"},on:{\"update:visible\":function(e){t.showfolders=e}}},[s(\"div\",{staticStyle:{width:\"100%\",height:\"300px\",overflow:\"auto\",border:\"1px solid #E4E7ED\"}},[s(\"el-tree\",{attrs:{data:t.folders},on:{\"node-click\":t.handleFolderClick}})],1),t._v(\" \"),s(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[s(\"el-button\",{on:{click:function(e){t.showfolders=!1}}},[t._v(\"取 消\")]),t._v(\" \"),s(\"el-button\",{attrs:{type:\"primary\",plain:\"\"},on:{click:t.handleFolderPicked}},[t._v(\"确 定\")])],1)])],1)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticStyle:{\"padding-bottom\":\"12px\"}},[e(\"h4\",[this._v(\"调度设置\")])])}]};var P=s(\"VU/8\")(B,O,!1,function(t){s(\"+B9X\")},\"data-v-4b8c701c\",null).exports,U={name:\"monitor\",computed:d()({},Object(p.b)([\"folders\",\"cache\"]),{grpname:function(){return null==this.curGroup?\"组合基本信息\":this.curGroup.name},isAdmin:function(){var t=this.cache.userinfo;return!!t&&(\"admin\"==t.role||\"superman\"==t.role)}}),components:{Group:M,Empty:$,Schedule:P},data:function(){return{groups:[],selectedIdx:\"\",schedule:!1,baseinfo:!1,showgrpdlg:!1,curGroup:null,addGroup:!1,editGroup:!1,copyGroup:{id:\"\",name:\"\",path:\"\",info:\"\",gtype:\"cta\",datmod:\"mannual\",env:\"product\",mqurl:\"\"},showfolders:!1,selfolder:\"\",monitors:{},curMonCfg:{id:\"\",folder:\"\",path:\"\",param:\"\",span:3,guard:!1,redirect:!1,schedule:{active:!1,weekflag:\"0111110\",weekmask:[!1,!0,!0,!0,!0,!0,!1],tasks:[{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0}]}}}},methods:{handlePickFolder:function(t){var e=this,s=this;s.selfolder=\"\",0==s.folders.length?this.$api.getFolders(function(t){t.result<0?s.$notify.error(\"查询目录结构出错：\"+t.message):(e.$store.commit(\"setfolders\",{folders:[t.tree]}),s.showfolders=!0)}):s.showfolders=!0},handleFolderPicked:function(){\"\"==this.selfolder?this.$alert(\"请选择目录\"):(this.copyGroup.path=this.selfolder,this.showfolders=!1)},handleFolderClick:function(t){this.selfolder=t.path},handleTabSel:function(t,e){var s=this;s.selectedIdx=t,s.groups.forEach(function(e){if(e.id==t)return s.curGroup=e,!0})},handleClickSchedule:function(){var t=this,e=this,s=e.curGroup.id;e.monitors[s]?(e.curMonCfg=e.monitors[s],e.schedule=!0):e.$api.getMonCfg(s,function(a){if(a.result<0)e.$notify.error(a.message);else if(a.config){var i=a.config;i.schedule.weekmask=[];for(var n=0;n<i.schedule.weekflag.length;n++)i.schedule.weekmask.push(\"1\"==i.schedule.weekflag[n]);for(var o=0;o<6;o++){var r=i.schedule.tasks[o].time+\"\";1==r.length?i.schedule.tasks[o].time=\"00:0\"+r:2==r.length?i.schedule.tasks[o].time=\"00:\"+r:3==r.length?i.schedule.tasks[o].time=\"0\"+r[0]+\":\"+r.substr(1):i.schedule.tasks[o].time=r.substr(0,2)+\":\"+r.substr(2)}e.monitors[s]=i,e.curMonCfg=i,e.schedule=!0}else t.$confirm(\"该组合尚未配置自动调度，马上去配置?\",\"自动调度\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){var t={id:\"\",folder:\"\",path:\"\",param:\"\",span:3,guard:!1,redirect:!1,mqurl:\"\",schedule:{active:!1,weekflag:\"0111110\",weekmask:[!1,!0,!0,!0,!0,!0,!1],tasks:[{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0}]}};t.id=e.curGroup.id,t.folder=e.curGroup.path,t.redirect=!0,t.mqurl=e.curGroup.mqurl,e.curMonCfg=t,e.schedule=!0})})},handleGrpCmd:function(t){var e=this,s=this;if(\"addgrp\"==t)this.copyGroup={id:\"\",name:\"\",path:\"\",info:\"\",gtype:\"cta\",datmod:\"mannual\",env:\"product\",mqurl:\"\"},this.addGroup=!0,this.showgrpdlg=!0,this.editGroup=!0;else if(\"delgrp\"==t){this.addGroup=!1,this.showgrpdlg=!1;var a=s.curGroup;this.$confirm(\"确定要删除该组合?\",\"组合管理\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){e.$api.delGroup(a.id,function(t){if(t.result<0)s.$notify.error(\"删除组合失败：\"+t.message);else for(var e=0;e<s.groups.length;e++)if(s.groups[e].id==a.id){s.groups.splice(e,1),e;break}})})}},onCommitGroup:function(){var t=this,e=this,s=this.copyGroup;this.$api.commitGroup(s,this.addGroup?\"add\":\"mod\",function(a){a.result<0?e.$notify.error(\"提交组合信息失败：\"+a.message):(t.addGroup&&e.groups.push(s),e.showgrpdlg=!1,null==e.curGroup&&(e.selectedIdx=s.id,e.curGroup=s))})},onCloseGrpDlg:function(t){t()},handleViewGrop:function(){null!=this.curGroup&&\"\"!=this.curGroup.id&&(this.copyGroup=JSON.parse(g()(this.curGroup)),this.copyGroup.datmod=this.copyGroup.datmod||\"mannual\",this.addGroup=!1,this.editGroup=!1,this.showgrpdlg=!0)},handleStartGroup:function(){var t=this;if(null!=this.curGroup&&\"\"!=this.curGroup.id)if(this.curGroup.running)this.$notify(\"组合正在运行\");else{var e=this,s=e.curGroup.id;e.monitors[s]?this.$api.startGroup(this.curGroup.id,function(e){e.result<0&&t.$notify.error(\"启动组合失败：\"+e.message)}):e.$api.getMonCfg(s,function(a){if(a.result<0)e.$notify.error(a.message);else if(a.config){var i=a.config;i.schedule.weekmask=[];for(var n=0;n<i.schedule.weekflag.length;n++)i.schedule.weekmask.push(\"1\"==i.schedule.weekflag[n]);for(var o=0;o<6;o++){var r=i.schedule.tasks[o].time+\"\";1==r.length?i.schedule.tasks[o].time=\"00:0\"+r:2==r.length?i.schedule.tasks[o].time=\"00:\"+r:3==r.length?i.schedule.tasks[o].time=\"0\"+r[0]+\":\"+r.substr(1):i.schedule.tasks[o].time=r.substr(0,2)+\":\"+r.substr(2)}e.monitors[s]=i,t.$api.startGroup(t.curGroup.id,function(e){e.result<0&&t.$notify.error(e.message)})}else e.$alert(\"该组合尚未配置调度，不能启动\")})}},handleStopGroup:function(){var t=this;null!=this.curGroup&&\"\"!=this.curGroup.id&&(this.curGroup.running?this.$confirm(\"确定要停止该组合吗?\",\"手动停止\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){t.$api.stopGroup(t.curGroup.id,function(e){e.result<0&&t.$notify.error(e.message)})}):this.$notify(\"组合已经处于停止状态\"))}},mounted:function(){var t=this;t.$nextTick(function(){t.$api.getGroups(function(e){e.result<0?t.$notify.error(\"查询组合出错：\"+e.message):(t.groups=e.groups,t.groups.length>0&&(t.selectedIdx=t.groups[0].id,t.curGroup=t.groups[0]),t.sockets.subscribe(\"notify\",function(e){if(\"gpevt\"==e.type&&(\"start\"==e.evttype?setTimeout(function(){t.$notify({message:\"组合\"+e.groupid+\"已启动\",type:\"success\"})},300):\"stop\"==e.evttype&&setTimeout(function(){t.$notify.error(\"组合\"+e.groupid+\"已停止\")},300)),\"chnlevt\"==e.type){var s=null,a=e.evttype||\"\",i=null;if(t.groups.forEach(function(t){t.id==e.groupid&&(i=t)}),null!=i){if(\"notify\"==a)s={time:new Date,group:i.name,channel:e.channel,title:\"事件通知\",type:\"error\",message:\"错误：{1}\".format(e.channel,e.message)};else if(\"order\"==a)e.data.canceled&&(s={time:new Date,group:i.name,channel:e.channel,title:\"订单回报\",type:\"danger\",message:\"订单已撤销，本地订单号：{1}\".format(e.channel,e.data.localid)});else if(\"trade\"==a){var n=(e.data.isopen?\"开\":\"平\")+(e.data.islong?\"多\":\"空\");s={time:new Date,group:i.name,channel:e.channel,title:\"成交回报\",type:\"success\",message:\"操作：{1}，代码：{2}，数量：{3}，成交价：{4}，本地订单号：{5}\".format(e.channel,n,e.data.code,e.data.volume,e.data.price,e.data.localid)}}null!=s&&t.$emit(\"notify\",s)}}null!=t.curGroup&&e.groupid==t.curGroup.id&&(\"gplog\"==e.type||\"chnlevt\"==e.type?t.$refs.group&&t.$refs.group.$emit(\"notify\",e):\"gpevt\"==e.type&&(\"start\"==e.evttype?t.curGroup.running=!0:\"stop\"==e.evttype&&(t.curGroup.running=!1)))}))})})}},z={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\"}},[s(\"el-container\",{staticStyle:{height:\"100%\"}},[s(\"el-header\",{staticStyle:{height:\"44px !important\"}},[s(\"div\",{staticStyle:{float:\"left\",height:\"100%\",\"margin-top\":\"7px\"}},[s(\"el-menu\",{staticClass:\"el-menu-demo\",attrs:{\"default-active\":t.selectedIdx,mode:\"horizontal\"},on:{select:t.handleTabSel}},t._l(t.groups,function(e,a){return s(\"el-menu-item\",{key:a,attrs:{index:e.id}},[t._v(\"\\n                        \"+t._s(e.name)+\"\\n                        \"),s(\"i\",{class:\"auto\"==e.datmod?\"el-icon-monitor\":\"el-icon-thumb\"})])}),1)],1),t._v(\" \"),s(\"div\",{staticStyle:{float:\"right\",margin:\"6px 0px\"}},[s(\"el-row\",[s(\"el-tooltip\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"\"!=t.selectedIdx&&t.curGroup.running,expression:\"selectedIdx!='' && curGroup.running\"}],staticClass:\"item\",attrs:{effect:\"dark\",content:\"手动停止组合\",placement:\"top-start\"}},[s(\"el-button\",{attrs:{type:\"danger\",icon:\"el-icon-magic-stick\",size:\"mini\",plain:\"\"},on:{click:t.handleStopGroup}},[t._v(\"停止\")])],1),t._v(\" \"),s(\"el-tooltip\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"\"!=t.selectedIdx&&!t.curGroup.running,expression:\"selectedIdx!='' && !curGroup.running\"}],staticClass:\"item\",attrs:{effect:\"dark\",content:\"手动启动组合\",placement:\"top-start\"}},[s(\"el-button\",{attrs:{type:\"success\",icon:\"el-icon-magic-stick\",size:\"mini\",plain:\"\"},on:{click:t.handleStartGroup}},[t._v(\"启动\")])],1),t._v(\" \"),s(\"el-tooltip\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"\"!=t.selectedIdx,expression:\"selectedIdx!=''\"}],staticClass:\"item\",attrs:{effect:\"dark\",content:\"查看策略组合的基本信息\",placement:\"top-start\"}},[s(\"el-button\",{attrs:{type:\"primary\",icon:\"el-icon-magic-stick\",size:\"mini\",plain:\"\"},on:{click:t.handleViewGrop}},[t._v(\"查看\")])],1),t._v(\" \"),t.isAdmin?s(\"el-tooltip\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"\"!=t.selectedIdx,expression:\"selectedIdx!=''\"}],staticClass:\"item\",attrs:{effect:\"dark\",content:\"配置策略组合的自动调度\",placement:\"top-start\"}},[s(\"el-button\",{attrs:{type:\"primary\",icon:\"el-icon-time\",size:\"mini\",plain:\"\"},on:{click:t.handleClickSchedule}},[t._v(\"调度\")])],1):t._e(),t._v(\" \"),s(\"el-divider\",{attrs:{direction:\"vertical\"}}),t._v(\" \"),s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"管理策略组合\",placement:\"top-start\"}},[s(\"el-dropdown\",{attrs:{\"split-button\":\"\",type:\"danger\",size:\"mini\",trigger:\"click\"},on:{command:t.handleGrpCmd}},[t._v(\"\\n                            组合管理\\n                            \"),s(\"el-dropdown-menu\",{attrs:{slot:\"dropdown\"},slot:\"dropdown\"},[s(\"el-dropdown-item\",{attrs:{command:\"addgrp\"}},[s(\"i\",{staticClass:\"el-icon-plus\"}),t._v(\" \"),s(\"span\",[t._v(\"添加组合\")])]),t._v(\" \"),s(\"el-dropdown-item\",{directives:[{name:\"show\",rawName:\"v-show\",value:null!=t.curGroup,expression:\"curGroup!=null\"}],attrs:{command:\"delgrp\"}},[s(\"i\",{staticClass:\"el-icon-delete\"}),t._v(\" \"),s(\"span\",[t._v(\"删除组合\")])])],1)],1)],1)],1)],1)]),t._v(\" \"),s(\"el-main\",[s(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"}},[s(\"Empty\",{directives:[{name:\"show\",rawName:\"v-show\",value:0==t.groups.length,expression:\"groups.length==0\"}],staticStyle:{height:\"100%\",width:\"100%\"}}),t._v(\" \"),s(\"Group\",{directives:[{name:\"show\",rawName:\"v-show\",value:0!=t.groups.length,expression:\"groups.length!=0\"}],ref:\"group\",staticStyle:{height:\"100%\",width:\"100%\"},attrs:{groupinfo:t.curGroup}})],1)])],1),t._v(\" \"),s(\"el-drawer\",{attrs:{title:\"计划任务\",\"with-header\":!1,visible:t.schedule,direction:\"rtl\",size:\"500px\"},on:{\"update:visible\":function(e){t.schedule=e}}},[s(\"Schedule\",{attrs:{config:t.curMonCfg,fixinfo:!0}})],1),t._v(\" \"),s(\"el-dialog\",{attrs:{title:\"选择目录\",visible:t.showfolders,width:\"25%\"},on:{\"update:visible\":function(e){t.showfolders=e}}},[s(\"div\",{staticStyle:{width:\"100%\",height:\"300px\",overflow:\"auto\",border:\"1px solid #E4E7ED\"}},[s(\"el-tree\",{attrs:{data:t.folders},on:{\"node-click\":t.handleFolderClick}})],1),t._v(\" \"),s(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[s(\"el-button\",{on:{click:function(e){t.showfolders=!1}}},[t._v(\"取 消\")]),t._v(\" \"),s(\"el-button\",{attrs:{type:\"primary\",plain:\"\"},on:{click:t.handleFolderPicked}},[t._v(\"确 定\")])],1)]),t._v(\" \"),s(\"el-dialog\",{staticClass:\"dialog-group\",attrs:{title:t.addGroup?\"添加组合\":\"修改组合\",visible:t.showgrpdlg,width:\"25%\",\"before-close\":t.onCloseGrpDlg},on:{\"update:visible\":function(e){t.showgrpdlg=e}}},[s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"组合ID：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:!t.editGroup},model:{value:t.copyGroup.id,callback:function(e){t.$set(t.copyGroup,\"id\",e)},expression:\"copyGroup.id\"}})],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"组合名称：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:!t.editGroup},model:{value:t.copyGroup.name,callback:function(e){t.$set(t.copyGroup,\"name\",e)},expression:\"copyGroup.name\"}})],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"组合路径：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:!t.editGroup},model:{value:t.copyGroup.path,callback:function(e){t.$set(t.copyGroup,\"path\",e)},expression:\"copyGroup.path\"}},[s(\"el-tooltip\",{attrs:{slot:\"append\",effect:\"dark\",content:\"选择组合所在的目录\",placement:\"top\"},slot:\"append\"},[s(\"el-button\",{attrs:{icon:\"el-icon-folder\",disabled:!t.editGroup},on:{click:t.handlePickFolder}})],1)],1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"组合类型：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-radio\",{attrs:{label:\"cta\",disabled:!t.editGroup},model:{value:t.copyGroup.gtype,callback:function(e){t.$set(t.copyGroup,\"gtype\",e)},expression:\"copyGroup.gtype\"}},[t._v(\"CTA组合\")]),t._v(\" \"),s(\"el-radio\",{attrs:{label:\"hft\",disabled:!t.editGroup},model:{value:t.copyGroup.gtype,callback:function(e){t.$set(t.copyGroup,\"gtype\",e)},expression:\"copyGroup.gtype\"}},[t._v(\"HFT组合\")]),t._v(\" \"),s(\"el-radio\",{attrs:{label:\"sel\",disabled:!t.editGroup},model:{value:t.copyGroup.gtype,callback:function(e){t.$set(t.copyGroup,\"gtype\",e)},expression:\"copyGroup.gtype\"}},[t._v(\"SEL组合\")])],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"数据模式：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"组合会自动向监控服务推送数据\",placement:\"top\"}},[s(\"el-radio\",{attrs:{label:\"auto\",disabled:!t.editGroup},model:{value:t.copyGroup.datmod,callback:function(e){t.$set(t.copyGroup,\"datmod\",e)},expression:\"copyGroup.datmod\"}},[t._v(\"自动\")])],1),t._v(\" \"),s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"监控服务只在有请求的时候去读取数据\",placement:\"top\"}},[s(\"el-radio\",{attrs:{label:\"mannual\",disabled:!t.editGroup},model:{value:t.copyGroup.datmod,callback:function(e){t.$set(t.copyGroup,\"datmod\",e)},expression:\"copyGroup.datmod\"}},[t._v(\"手动\")])],1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"消息地址：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-tooltip\",{staticClass:\"item\",attrs:{effect:\"dark\",content:\"消息订阅地址要和配置文件中的notifier一致\",placement:\"top\"}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:!t.editGroup||\"auto\"!=t.copyGroup.datmod,placeholder:\"请输入消息队列的订阅地址\"},model:{value:t.copyGroup.mqurl,callback:function(e){t.$set(t.copyGroup,\"mqurl\",e)},expression:\"copyGroup.mqurl\"}})],1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"组合环境：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-radio\",{attrs:{label:\"product\",disabled:!t.editGroup},model:{value:t.copyGroup.env,callback:function(e){t.$set(t.copyGroup,\"env\",e)},expression:\"copyGroup.env\"}},[t._v(\"生产环境\")]),t._v(\" \"),s(\"el-radio\",{attrs:{label:\"backtest\",disabled:!t.editGroup},model:{value:t.copyGroup.env,callback:function(e){t.$set(t.copyGroup,\"env\",e)},expression:\"copyGroup.env\"}},[t._v(\"回测环境\")])],1)],1),t._v(\" \"),s(\"el-row\",{staticStyle:{height:\"60px\"}},[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"组合介绍：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{staticStyle:{\"min-height\":\"80px\"},attrs:{type:\"textarea\",disabled:!t.editGroup},model:{value:t.copyGroup.info,callback:function(e){t.$set(t.copyGroup,\"info\",e)},expression:\"copyGroup.info\"}})],1)],1),t._v(\" \"),s(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[s(\"el-button\",{directives:[{name:\"show\",rawName:\"v-show\",value:!t.addGroup&&!t.editGroup,expression:\"!addGroup && !editGroup\"}],attrs:{type:\"primary\",plain:\"\",size:\"mini\",icon:\"el-icon-edit\"},on:{click:function(e){t.editGroup=!0}}},[t._v(\"编辑\")]),t._v(\" \"),s(\"el-button\",{attrs:{type:\"primary\",plain:\"\",size:\"mini\",icon:\"el-icon-thumb\"},on:{click:function(e){return t.onCommitGroup()}}},[t._v(\"提交\")])],1)],1),t._v(\" \"),s(\"el-dialog\",{attrs:{title:\"选择目录\",visible:t.showfolders,width:\"25%\"},on:{\"update:visible\":function(e){t.showfolders=e}}},[s(\"div\",{staticStyle:{width:\"100%\",height:\"300px\",overflow:\"auto\",border:\"1px solid #E4E7ED\"}},[s(\"el-tree\",{attrs:{data:t.folders},on:{\"node-click\":t.handleFolderClick}})],1),t._v(\" \"),s(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[s(\"el-button\",{attrs:{size:\"mini\"},on:{click:function(e){t.showfolders=!1}}},[t._v(\"取 消\")]),t._v(\" \"),s(\"el-button\",{attrs:{type:\"primary\",plain:\"\",size:\"mini\"},on:{click:t.handleFolderPicked}},[t._v(\"确 定\")])],1)])],1)},staticRenderFns:[]};var L=s(\"VU/8\")(U,z,!1,function(t){s(\"nZf+\")},\"data-v-6717c4fd\",null).exports,j={render:function(){this.$createElement;this._self._c;return this._m(0)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticClass:\"loginBox\"},[e(\"div\",{staticClass:\"login\"},[this._v(\"\\n        在线部署功能建设中，敬请期待\\n    \")])])}]};var Z=s(\"VU/8\")({name:\"Deploy\",data:function(){return{}},methods:{},mounted:function(){}},j,!1,function(t){s(\"DoUX\")},\"data-v-0cbbd64e\",null).exports,R=(s(\"jQeI\"),s(\"CK2l\"),s(\"c+I8\"),s(\"iHuw\"),s(\"RkhK\"),s(\"LxZp\"),{name:\"BTComp\",props:{btInfo:{type:Object,default:function(){return null}},straInfo:{type:Object,default:function(){return null}}},watch:{btInfo:function(t,e){var s=this;null!=t&&(null!=e&&t.id==e.id||setTimeout(function(){s.queryTrades(),s.queryRounds(),s.queryFunds(),s.querySignals()},300))}},data:function(){return{loading:{signal:!1,round:!1,fund:!1,trade:!1},selCat:\"summary\",signals:[],rounds:[],funds:[],trades:[],kChart:null,tChart:null,bars:[]}},methods:{fmtBtTime:function(t){return(t+=\"\").substr(0,4)+\".\"+t.substr(4,2)+\".\"+t.substr(6,2)+\" \"+t.substr(8,2)+\":\"+t.substr(10,2)},onCatSel:function(t,e){var s=this;this.selCat!=t.name&&(this.selCat=t.name,\"kline\"==t.name&&this.kChart?setTimeout(function(){s.kChart.resize()},300):\"summary\"==t.name&&this.tChart&&setTimeout(function(){s.tChart.resize()},300))},queryBars:function(){var t=this;if(null!=this.btInfo){var e=this.btInfo.state.code,s=this.btInfo.state.stime,a=this.btInfo.state.etime,i=this.btInfo.state.period;this.$api.getBtBars(e,i,s,a,function(e){e.result<0?t.$notify.error(\"拉取K线出错：\"+e.message):(t.bars=e.bars,t.paintChart(!1))})}},querySignals:function(){var t=this,e=this.straInfo.id,s=this.btInfo.id;this.loading.signal=!0,this.$api.getBtSignals(e,s,function(e){e.result<0?t.$notify.error(\"查询信号出错：\"+e.message):(t.signals=e.signals,t.signals.reverse()),t.loading.signal=!1})},queryTrades:function(){var t=this,e=this.straInfo.id,s=this.btInfo.id;this.loading.trade=!0,this.$api.getBtTrades(e,s,function(e){e.result<0?t.$notify.error(\"查询成交出错：\"+e.message):(e.trades.forEach(function(t){var e=\"\";\"OPEN\"==t.offset?e+=\"开\":e+=\"平\",\"LONG\"==t.direction?e+=\"多\":e+=\"空\",t.action=e}),t.trades=e.trades,t.trades.reverse()),t.loading.trade=!1,setTimeout(function(){t.queryBars()},300)})},queryRounds:function(){var t=this,e=this.straInfo.id,s=this.btInfo.id;this.loading.round=!1,this.$api.getBtRounds(e,s,function(e){e.result<0?t.$notify.error(\"查询回合出错：\"+e.message):(t.rounds=e.rounds,t.rounds.reverse()),t.loading.round=!1})},queryFunds:function(){var t=this,e=this.straInfo.id,s=this.btInfo.id;this.loading.fund=!0,this.$api.getBtFunds(e,s,function(e){e.result<0?t.$notify.error(\"查询绩效出错：\"+e.message):(t.funds=e.funds,t.funds.reverse(),t.paintTrend()),t.loading.fund=!1})},getTrdSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(e<3||e>5)a[e]=\"\";else if(3!=e){if(4==e)a[e]=s.length+\"笔\";else if(5==e){var i=s.map(function(t){return Number(t.volume)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}}else a[e]=\"总计\"}),a},getSigSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){e>1?a[e]=\"\":0!=e?1==e&&(a[e]=s.length+\"笔\"):a[e]=\"总计\"}),a},getRndSum:function(t){var e=t.columns,s=t.data,a=[];return e.forEach(function(t,e){if(5==e||6==e||7==e||8==e)if(5!=e)if(6!=e){if(7==e){var i=s.map(function(t){return Number(t.qty)});i.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=i.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0)+\"手\"}else if(8==e){var n=s.map(function(t){return Number(t.profit)});n.every(function(t){return isNaN(t)})?a[e]=\"N/A\":a[e]=n.reduce(function(t,e){var s=Number(e);return isNaN(s)?t:t+e},0).toFixed(1)}}else a[e]=s.length+\"笔\";else a[e]=\"总计\";else a[e]=\"\"}),a},paintChart:function(t){var e=this.bars||[];t=t||!1;null==this.kChart&&(this.kChart=this.$echarts.init(document.getElementById(\"bt_kline\")));var s=[],a=[];e.forEach(function(e,i){var n=e.date+\"\";if(n=n.substr(0,4)+\"/\"+parseInt(n.substr(4,2))+\"/\"+parseInt(n.substr(6,2)),!t){var o=e.time%1e4+\"\";3==o.length&&(o=\"0\"+o),n+=\" \"+o.substr(0,2)+\":\"+o.substr(2,2)}s.push(n),a.push([e.open,e.close,e.low,e.high])});var i=[],n=[],o=\"\";JSON.parse(g()(this.trades)).reverse().forEach(function(t){var e=t.time+\"\";e=e.substr(0,4)+\"/\"+parseInt(e.substr(4,2))+\"/\"+parseInt(e.substr(6,2))+\" \"+e.substr(8,2)+\":\"+e.substr(10,2);var s=\"开多\"==t.action||\"平空\"==t.action||\"OL\"==t.action||\"CS\"==t.action,a=\"开\"==t.action[0]||\"O\"==t.action[0];if(o==e){var r=i[i.length-1];r.data.volume+=t.volume,r.data.flag+=a?1:2}else i.push({value:[e,t.price],symbol:\"triangle\",symbolRotate:s?0:180,symbolOffset:[0,s?\"50%\":\"-50%\"],itemStyle:{color:s?\"#f00\":\"#0f0\"},data:{isBuy:s,volume:t.volume,price:t.price,flag:a?1:2}});var l=i[i.length-1],c=i[i.length-2];if(l.data.flag>=2){var u=(l.data.price-c.data.price)*(s?-1:1)>=0;n.push({source:i.length-2,target:i.length-1,lineStyle:{color:u?\"#f00\":\"#0f0\",type:\"solid\",width:1}})}o=e});var r={title:{text:this.btInfo.state.code+\" \"+this.btInfo.state.period},toolbox:{show:!0,orient:\"horizontal\",feature:{saveAsImage:{},restore:{}}},tooltip:{trigger:\"axis\",axisPointer:{type:\"cross\"},formatter:function(t){t.sort(function(t,e){return t.seriesIndex-e.seriesIndex});var e,s=t[0].axisValue,a=t[0].data,i=s+\"<br/><br/>\";if(i+=t[0].marker+\"开: \"+a[1].toFixed(2)+\"<br/>\",i+=t[0].marker+\"高: \"+a[4].toFixed(2)+\"<br/>\",i+=t[0].marker+\"低: \"+a[3].toFixed(2)+\"<br/>\",i+=t[0].marker+\"收: \"+a[2].toFixed(2)+\"<br/>\",t.length>1){var n=t[1].data.data,o=(e=n).isBuy?3==e.flag?\"翻多: +\":2==e.flag?\"平空: +\":\"开多: +\":3==e.flag?\"翻空: -\":2==e.flag?\"平多: -\":\"开空: -\";i+=t[1].marker+o+n.volume+\"@\"+n.price+\"<br/>\"}return i}},axisPointer:{link:{xAxisIndex:\"all\"},label:{backgroundColor:\"#777\"}},grid:{left:\"4%\",right:\"4%\",bottom:\"10%\"},xAxis:{type:\"category\",data:s,scale:!0,boundaryGap:!0,axisLine:{onZero:!1},splitLine:{show:!1},splitNumber:20,min:\"dataMin\",max:\"dataMax\"},yAxis:{scale:!0,splitArea:{show:!0}},dataZoom:[{type:\"inside\",start:90,end:100},{show:!0,type:\"slider\",y:\"95%\",start:90,end:100}],series:[{name:\"K线\",type:\"candlestick\",data:a,yAxisIndex:\"0\",itemStyle:{normal:{color:\"#ec0000\",color0:\"#00da3c\",borderColor:\"#8A0000\",borderColor0:\"#008F28\"}},markLine:{symbol:[\"none\",\"none\"],data:[{name:\"min line on close\",type:\"min\",valueDim:\"close\"},{name:\"max line on close\",type:\"max\",valueDim:\"close\"}]}},{type:\"graph\",layout:\"none\",coordinateSystem:\"cartesian2d\",data:i,links:n,symbolSize:20,zlevel:9}]};this.kChart.setOption(r)},fmtDate:function(t){var e=t+\"\";return e.substr(0,4)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)},fmtProfit:function(t){return t>0?\"text-danger\":t<0?\"text-success\":\"\"},fmtTime:function(t,e){if(e=e||!1){var s=t+\"\";return s.substr(2,2)+\".\"+s.substr(4,2)+\".\"+s.substr(6,2)+\" \"+s.substr(8,2)+\":\"+s.substr(10,2)+\":\"+s.substr(12,2)+\",\"+s.substr(14,3)}var a=t+\"\";return a.substr(2,2)+\".\"+a.substr(4,2)+\".\"+a.substr(6,2)+\" \"+a.substr(8,2)+\":\"+a.substr(10,2)},formatAmount:function(t,e){return t[e.property].toFixed(2)},fmtPrice:function(t){for(var e=t.toFixed(4),s=0;s<e.length&&\"0\"==e[e.length-1-s];s++);\".\"==e[e.length-1-s]&&s++;var a=e.length-s;return e.substr(0,a)},paintTrend:function(){null==this.tChart&&(this.tChart=this.$echarts.init(document.getElementById(\"bt_fund\")));for(var t={title:{text:\"净值走势\"},tooltip:{trigger:\"axis\",axisPointer:{label:{backgroundColor:\"#6a7985\",formatter:function(t){var e=t.value+\"\";return e.substr(0,4)+\".\"+e.substr(4,2)+\".\"+e.substr(6,2)}}},formatter:function(t){if(0==t.length)return\"收益曲线\";var e=t[0].axisValueLabel;for(var s in t)\"净值\"==t[s].seriesName?e+=\"<br/>净值: \"+t[s].value.toFixed(4):e+=\"<br/>\"+t[s].seriesName+\": \"+t[s].value;return e}},grid:{top:42,left:\"8\",right:\"8\",bottom:\"8\",containLabel:!0},xAxis:{type:\"category\",data:[],boundaryGap:!1,axisLabel:{textStyle:{color:\"#000\"},formatter:function(t,e){return(t+=\"\").substr(0,4)+\".\"+t.substr(4,2)+\".\"+t.substr(6,2)}},axisLine:{lineStyle:{color:\"#000\"}}},yAxis:[{type:\"value\",axisLabel:{textStyle:{color:\"#000\"},formatter:function(t,e){return t.toFixed(4)}},axisLine:{lineStyle:{color:\"#000\"}},scale:!0}],series:[{name:\"净值\",type:\"line\",stack:\"净值\",areaStyle:{normal:{color:{type:\"linear\",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:\"rgba(102,156,214,0.5)\"},{offset:1,color:\"rgba(242,242,242,0.3)\"}],globalCoord:!1}}},data:[],lineStyle:{normal:{color:\"rgb(102,156,214)\",width:2}},itemStyle:{normal:{color:\"rgb(102,156,214)\",borderWidth:1}}}]},e=[],s=[],a=parseInt(this.btInfo.capital),i=this.funds.length-1;i>=0;i--){var n=this.funds[i];e.push(n.date);var o=a+n.dynbalance;s.push(o/a)}var r=Math.max.apply(null,s),l=Math.min.apply(null,s);if(r==l)r*=1.05,l*=.95;else{var c=r-l;r+=.05*c,l=Math.max(0,l-.05*c)}t.xAxis.data=e,t.series[0].data=s,t.yAxis[0].max=r,t.yAxis[0].min=l,this.tChart.setOption(t)},getClass:function(t){return t>=0?\"text-danger\":\"text-success\"}},mounted:function(){window.onresize=function(){var t=this;t.zooming||(t.zooming=!0,setTimeout(function(){t.kChart&&t.kChart.resize(),t.tChart&&t.tChart.resize(),t.zooming=!1},300))}}}),V={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",width:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 44px\"}},[s(\"el-tabs\",{staticStyle:{height:\"100%\",margin:\"0\"},attrs:{value:t.selCat,\"tab-position\":\"top\"},on:{\"tab-click\":t.onCatSel}},[s(\"el-tab-pane\",{attrs:{label:\"绩效概览\",name:\"summary\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"信号分析\",name:\"kline\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"成交明细\",name:\"trd\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"信号明细\",name:\"sig\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"回合明细\",name:\"rnd\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"每日绩效\",name:\"fnd\"}})],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",overflow:\"auto\",width:\"100%\"}},[s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"kline\"==t.selCat,expression:\"selCat=='kline'\"}],staticStyle:{height:\"100%\",width:\"100%\",overflow:\"auto\"}},[t._m(0)]),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"summary\"==t.selCat,expression:\"selCat=='summary'\"}],staticStyle:{height:\"100%\",width:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 200px\",width:\"100%\"}},[s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"回测天数\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.btInfo.perform.days:0)+\"天\")])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"开始时间\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.fmtBtTime(t.btInfo.state.stime):\"-\"))])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"结束时间\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.fmtBtTime(t.btInfo.state.etime):\"-\"))])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"初始资金\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.btInfo.capital.toFixed(1):0))])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"总收益率\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val\",class:t.getClass(t.btInfo?t.btInfo.perform.total_return:0)},[t._v(t._s(t.btInfo?t.btInfo.perform.total_return.toFixed(2):\"0.00\")+\"%\")])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"胜率\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-danger\"},[t._v(t._s(t.btInfo?t.btInfo.perform.win_rate.toFixed(2):\"0.00\")+\"%\")])])])],1),t._v(\" \"),s(\"div\",{staticClass:\"divider\"}),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"年化收益率\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val\",class:t.getClass(t.btInfo?t.btInfo.perform.annual_return:0)},[t._v(t._s(t.btInfo?t.btInfo.perform.annual_return.toFixed(2):\"0.00\")+\"%\")])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"最大回撤\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-success\"},[t._v(t._s(t.btInfo?t.btInfo.perform.max_falldown.toFixed(2):\"0.00\")+\"%\")])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"最大盈利\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-danger\"},[t._v(t._s(t.btInfo?t.btInfo.perform.max_profratio.toFixed(2):\"0.00\")+\"%\")])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"夏普率\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.btInfo.perform.sharpe_ratio.toFixed(2):\"0.00\"))])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"索提诺比率\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.btInfo.perform.sortino_ratio.toFixed(2):\"0.00\"))])])]),t._v(\" \"),s(\"el-col\",{attrs:{span:4}},[s(\"div\",{staticClass:\"panel\"},[s(\"p\",{staticClass:\"panel-tag\"},[t._v(\"卡尔玛比率\")]),t._v(\" \"),s(\"p\",{staticClass:\"panel-val text-info\"},[t._v(t._s(t.btInfo?t.btInfo.perform.calmar_ratio.toFixed(2):\"0.00\"))])])])],1)],1),t._v(\" \"),s(\"div\",{staticClass:\"divider\"}),t._v(\" \"),t._m(1)]),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"sig\"==t.selCat,expression:\"selCat=='sig'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.signal,expression:\"loading.signal\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.signals}},[s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"target\",label:\"目标数量\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:t.fmtProfit(e.row.target)},[t._v(t._s(e.row.target))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"触发价格\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.sigprice)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"触发时间\",width:\"180\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.gentime,!0)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"tag\",label:\"标记\",sortable:\"\",width:\"180\"}})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"rnd\"==t.selCat,expression:\"selCat=='rnd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.round,expression:\"loading.round\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.rounds}},[s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"方向\",width:\"64\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"LONG\"==e.row.direct?\"text-danger\":\"text-success\"},[t._v(t._s(\"LONG\"==e.row.direct?\"多\":\"空\"))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.opentime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开仓价格\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.openprice)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.closetime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓价格\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.closeprice)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"qty\",label:\"数量\",width:\"64\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"盈亏\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.profit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.profit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"潜在盈利\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-danger\"},[t._v(t._s(e.row.maxprofit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"潜在亏损\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{staticClass:\"text-success\"},[t._v(t._s(e.row.maxloss.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"entertag\",label:\"进场标记\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"exittag\",label:\"出场标记\",width:\"100\"}})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"fnd\"==t.selCat,expression:\"selCat=='fnd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.fund,expression:\"loading.fund\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.funds}},[s(\"el-table-column\",{attrs:{label:\"日期\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtDate(e.row.date)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"平仓盈亏\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.closeprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.closeprofit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"浮动盈亏\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynprofit>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.dynprofit.toFixed(1)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"fee\",label:\"手续费\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"dynbalance\",label:\"动态权益\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.dynbalance>=0?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.dynbalance.toFixed(1)))])]}}])})],1)],1),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"trd\"==t.selCat,expression:\"selCat=='trd'\"},{name:\"loading\",rawName:\"v-loading\",value:t.loading.trade,expression:\"loading.trade\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.trades,\"summary-method\":t.getTrdSum,\"show-summary\":\"\"}},[s(\"el-table-column\",{attrs:{prop:\"code\",label:\"品种\",width:\"120\",sortable:\"\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"时间\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.time)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"动作\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"开多\"==e.row.action||\"平空\"==e.row.action?\"text-danger\":\"text-success\"},[t._v(t._s(e.row.action))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"价格\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtPrice(e.row.price)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"volume\",label:\"数量\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"tag\",label:\"标记\",sortable:\"\"}})],1)],1)])])},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"},attrs:{id:\"bt_kline\"}},[e(\"p\",[this._v(\"这里绘制K线和信号列表\")])])},function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticStyle:{flex:\"1\",width:\"100%\"}},[e(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"}},[e(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"},attrs:{id:\"bt_fund\"}},[e(\"p\",[this._v(\"这里绘制每日收益曲线\")])])])])}]};var Y=s(\"VU/8\")(R,V,!1,function(t){s(\"JgyK\")},\"data-v-64b19f62\",null).exports,J={name:\"Backtest\",components:{codemirror:T.codemirror,BTComp:Y},data:function(){var t=this;return{btConfig:{startTime:(new Date).addDays(-92),endTime:new Date,capital:5e5,slippage:0},pickerOption:{format:\"yyyy-MM-dd HH:mm\"},selData:\"editor\",strategies:[],strasOnWay:!1,showBTCfg:!1,curStra:null,curBT:null,backtests:[],edit:!1,content:\"\",content_bak:\"\",cmOptions:{mode:\"python\",keyMap:\"sublime\",lineNumbers:!0,smartIndent:!0,indentUnit:4,indentWithTabs:!1,lineWrapping:!0,gutters:[\"CodeMirror-linenumbers\",\"CodeMirror-foldgutter\",\"CodeMirror-lint-markers\"],foldGutter:!0,autofocus:!0,matchBrackets:!0,autoCloseBrackets:!0,styleActiveLine:!0,extraKeys:{\"Ctrl-S\":function(){t.onSaveCode()}}}}},methods:{fmtTime:function(t){return(t+=\"\").substr(0,4)+\".\"+t.substr(4,2)+\".\"+t.substr(6,2)+\" \"+t.substr(8,2)+\":\"+t.substr(10,2)},onDelBacktest:function(t){var e=this;100==t.progress?this.$confirm(\"确定要删除该回测记录吗\",\"删除回测\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\"}).then(function(){e.$api.delBacktest(t.id,function(s){if(s.result<0)e.$message.error(\"回测任务删除失败:\"+s.message);else{e.$message({message:\"回测任务删除成功\",type:\"success\"});for(var a=0;a<e.backtests.length;a++)if(e.backtests[a].id==t.id){e.backtests.splice(a,1);break}}})}).catch(function(){}):this.$message({message:\"回测任务尚未结束，无法删除\",type:\"danger\"})},onViewBacktest:function(t){this.curBT=t,this.selData=\"backtest\"},onAddStrategy:function(){var t=this;this.$prompt(\"请输入策略名称\",\"新建策略\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\"}).then(function(e){t.$api.addBtStrategy(e.value,function(e){e.result<0?t.$message.error(\"新建策略失败:\"+e.message):t.strategies.push(e.strategy)})}).catch(function(){})},onRunBacktest:function(t){var e=this;this.$confirm(\"确定要启动回测任务吗\",\"启动回测\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\"}).then(function(){var t=e.curStra.id,s=e.btConfig.startTime.format(\"yyyyMMdd\"),a=e.btConfig.endTime.format(\"yyyyMMdd\"),i=e.btConfig.capital,n=e.btConfig.slippage;e.$api.runBacktest(t,s,a,i,n,function(t){t.result<0?e.$message.error(\"回测任务启动失败:\"+t.message):(e.$message({message:\"回测任务启动成功\",type:\"success\"}),e.backtests.push(t.backtest)),e.showBTCfg=!1})}).catch(function(){})},onSaveCode:function(t){var e=this;null!=this.curStra&&this.content!=this.content_bak&&this.$api.commitBtStraCode(this.curStra.id,this.content,function(t){t.result<0?e.$message.error(\"策略代码提交失败:\"+t.message):(e.$message({message:\"策略代码保存成功\",type:\"success\"}),e.content_bak=e.content)})},onDelStrategy:function(t){var e=this;this.$confirm(\"确定要删除该策略吗\",\"删除策略\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\"}).then(function(s){e.$api.delBtStrategy(t,function(t){t.result<0?e.$message.error(\"删除策略失败:\"+t.message):(e.$message.success(\"删除策略成功\"),e.refreshStras())})}).catch(function(){})},onRefreshStrategy:function(){this.refreshStras()},onOpenStrategy:function(t){var e=this;this.curStra=t,this.$api.getBtStraCode(t.id,function(t){t.result<0?e.$message.error(\"拉取策略代码失败:\"+t.message):(e.content_bak=t.content,e.content=t.content)}),this.$api.getBacktests(t.id,function(t){t.result<0?e.$message.error(\"拉取策略回测记录失败:\"+t.message):e.backtests=t.backtests})},handleClickTab:function(t,e){this.selData=t.name},onClickCancel:function(){var t=this;this.content!=this.content_bak?this.$confirm(\"内容已被修改，确定要放弃修改吗?\",\"提示\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){t.content=t.content_bak,t.cmOptions.readOnly=!0,t.edit=!1}).catch(function(){}):(this.content=this.content_bak,this.cmOptions.readOnly=!0,this.edit=!1)},onClickCommit:function(){var t=this;null!=this.curStra&&this.content!=this.content_bak&&(this.loading=!0,this.$api.commitBtStraCode(this.curStra.id,this.content,function(e){e.result<0?t.$message.error(\"策略代码提交失败:\"+e.message):t.$message({message:\"策略代码提交成功\",type:\"success\"}),t.edit=!1,t.cmOptions.readOnly=!0,t.loading=!1}))},refreshStras:function(){var t=this;this.strasOnWay=!0,this.$api.getBtStrategies(function(e){e.result<0?t.$message.error(\"拉取策略列表失败:\"+e.message):t.strategies=e.strategies,t.strasOnWay=!1})}},mounted:function(){var t=this;this.$nextTick(function(){setTimeout(function(){t.refreshStras()},300)})}},Q={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{height:\"100%\",flex:\"0 320px\"}},[s(\"div\",{staticStyle:{display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 40px\",display:\"flex\",\"flex-direction\":\"row\"}},[t._m(0),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"1px solid #E4E7ED\",\"margin-top\":\"10px\",\"margin-right\":\"6px\"}},[s(\"el-tooltip\",{staticStyle:{float:\"right\"},attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"刷新列表\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-refresh button\",staticStyle:{float:\"right\"},on:{click:t.onRefreshStrategy}})]),t._v(\" \"),s(\"el-tooltip\",{staticStyle:{float:\"right\"},attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"新建策略\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-plus button\",staticStyle:{float:\"right\"},on:{click:t.onAddStrategy}})])],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1 1\"}},[s(\"div\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.strasOnWay,expression:\"strasOnWay\"}],staticClass:\"stra-list\",staticStyle:{overflow:\"auto\"}},t._l(t.strategies,function(e,a){return s(\"div\",{key:a,staticClass:\"stra-item\"},[s(\"el-row\",{staticClass:\"stra-line\"},[s(\"i\",{staticClass:\"el-icon-cpu\"}),t._v(\" \"),s(\"span\",{staticClass:\"stra-title\"},[t._v(t._s(e.name))]),t._v(\" \"),s(\"el-tooltip\",{staticStyle:{float:\"right\"},attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"删除策略\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-delete button\",staticStyle:{float:\"right\"},on:{click:function(s){return t.onDelStrategy(e.id)}}})]),t._v(\" \"),s(\"el-tooltip\",{staticStyle:{float:\"right\"},attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"查看策略\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-view button\",staticStyle:{float:\"right\"},on:{click:function(s){return t.onOpenStrategy(e)}}})])],1),t._v(\" \"),s(\"el-row\",{staticClass:\"stra-line\"},[s(\"el-col\",{attrs:{span:12}},[s(\"span\",{staticClass:\"stra-label\"},[t._v(\"年化：\")]),t._v(\" \"),s(\"span\",{staticClass:\"stra-return\"},[t._v(t._s(e.perform.annual_return.toFixed(2))+\"%\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:12}},[s(\"span\",{staticClass:\"stra-label\"},[t._v(\"最大回撤：\")]),t._v(\" \"),s(\"span\",{staticClass:\"stra-mdd\"},[t._v(t._s(e.perform.max_falldown.toFixed(2))+\"%\")])])],1)],1)}),0)])])]),t._v(\" \"),s(\"div\",{staticStyle:{height:\"100%\",\"border-left\":\"1px solid #E4E7ED\",flex:\"1 0\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0 44px\",margin:\"2px 4px 0px 4px\"}},[s(\"el-tabs\",{staticStyle:{height:\"100%\"},attrs:{value:t.selData,type:\"card\"},on:{\"tab-click\":t.handleClickTab}},[s(\"el-tab-pane\",{attrs:{label:\"策略查看\",name:\"editor\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"回测详情\",name:\"backtest\"}})],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",overflow:\"auto\",margin:\"4px\"}},[s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"editor\"==t.selData,expression:\"selData=='editor'\"}],staticStyle:{height:\"100%\",width:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"2\",width:\"100%\",overflow:\"auto\"}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0\"}},[s(\"span\",{staticStyle:{color:\"gray\"}},[t._v(\"快捷操作：\")]),t._v(\" \"),s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"提交代码\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-upload2 toolbar\",on:{click:function(e){return t.onClickCommit()}}})]),t._v(\" \"),s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"放弃修改\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-refresh-left toolbar\",on:{click:function(e){return t.onClickCancel()}}})]),t._v(\" \"),s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"启动回测\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-video-play toolbar\",on:{click:function(e){t.showBTCfg=!0}}})]),t._v(\" \"),s(\"span\",{staticStyle:{color:\"gray\",float:\"right\"}},[t._v(\"当前策略:\"+t._s(t.curStra?t.curStra.name:\"\"))])],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",overflow:\"auto\",margin:\"20px\",border:\"1px solid #DCDFE6\",\"border-radius\":\"2px\"}},[s(\"div\",{staticStyle:{height:\"100%\"}},[s(\"div\",{staticStyle:{height:\"100%\"}},[s(\"codemirror\",{ref:\"mycode\",staticStyle:{height:\"100% !important\"},attrs:{options:t.cmOptions},model:{value:t.content,callback:function(e){t.content=e},expression:\"content\"}})],1)])])])]),t._v(\" \"),s(\"div\",{staticClass:\"divider\"}),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",overflow:\"auto\"}},[s(\"div\",{staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.backtests}},[s(\"el-table-column\",{attrs:{prop:\"runtime\",label:\"回测时间\",width:\"150\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"开始时间\",width:\"140\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.state.stime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"结束时间\",width:\"140\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(t.fmtTime(e.row.state.etime)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"累计收益率%\",width:\"110\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(e.row.perform.total_return.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"年化收益率%\",width:\"110\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(e.row.perform.annual_return.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"最大回撤%\",width:\"90\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(e.row.perform.max_falldown.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"夏普率\",width:\"72\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(e.row.perform.sharpe_ratio.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"卡尔玛比率\",width:\"100\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s(e.row.perform.calmar_ratio.toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"回测进度\"},scopedSlots:t._u([{key:\"default\",fn:function(t){return[s(\"el-progress\",{attrs:{percentage:t.row.state.progress,color:\"#409eff\"}})]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"耗时s\",width:\"60\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",[t._v(t._s((e.row.state.elapse/1e9).toFixed(2)))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"操作\",width:\"60\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"删除该回测记录\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-delete btopt-btn\",on:{click:function(s){return t.onDelBacktest(e.row)}}})]),t._v(\" \"),s(\"el-tooltip\",{attrs:{placement:\"top\"}},[s(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[t._v(\"查看回测详情\")]),t._v(\" \"),s(\"i\",{staticClass:\"el-icon-view btopt-btn\",on:{click:function(s){return t.onViewBacktest(e.row)}}})])]}}])})],1)],1)])]),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"backtest\"==t.selData,expression:\"selData=='backtest'\"}],staticStyle:{height:\"100%\",width:\"100%\"}},[s(\"BTComp\",{staticStyle:{height:\"100%\"},attrs:{btInfo:t.curBT,straInfo:t.curStra}})],1)])])])]),t._v(\" \"),s(\"el-dialog\",{attrs:{title:\"回测配置\",visible:t.showBTCfg,width:\"300px\"},on:{\"update:visible\":function(e){t.showBTCfg=e}}},[s(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[s(\"el-col\",{attrs:{span:8}},[s(\"span\",[t._v(\"开始时间：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:16}},[s(\"el-date-picker\",{staticStyle:{width:\"100%\"},attrs:{size:\"mini\",type:\"date\",format:\"yyyy-MM-dd\",placeholder:\"选择开始时间\"},model:{value:t.btConfig.startTime,callback:function(e){t.$set(t.btConfig,\"startTime\",e)},expression:\"btConfig.startTime\"}})],1)],1),t._v(\" \"),s(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[s(\"el-col\",{attrs:{span:8}},[s(\"span\",[t._v(\"结束时间：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:16}},[s(\"el-date-picker\",{staticStyle:{width:\"100%\"},attrs:{size:\"mini\",type:\"date\",format:\"yyyy-MM-dd\",placeholder:\"选择结束时间\"},model:{value:t.btConfig.endTime,callback:function(e){t.$set(t.btConfig,\"endTime\",e)},expression:\"btConfig.endTime\"}})],1)],1),t._v(\" \"),s(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[s(\"el-col\",{attrs:{span:8}},[s(\"span\",[t._v(\"初始资金：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:16}},[s(\"el-input-number\",{staticStyle:{width:\"100%\"},attrs:{size:\"mini\",min:1e5,max:2e6,step:1e4,label:\"初始资金\"},model:{value:t.btConfig.capital,callback:function(e){t.$set(t.btConfig,\"capital\",e)},expression:\"btConfig.capital\"}})],1)],1),t._v(\" \"),s(\"el-row\",{staticStyle:{margin:\"8px 0\"}},[s(\"el-col\",{attrs:{span:8}},[s(\"span\",[t._v(\"价格滑点：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:16}},[s(\"el-input-number\",{staticStyle:{width:\"100%\"},attrs:{size:\"mini\",min:0,max:20,label:\"价格滑点\"},model:{value:t.btConfig.slippage,callback:function(e){t.$set(t.btConfig,\"slippage\",e)},expression:\"btConfig.slippage\"}})],1)],1),t._v(\" \"),s(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[s(\"el-button\",{attrs:{type:\"danger\",size:\"mini\",plain:\"\"},on:{click:t.onRunBacktest}},[t._v(\"启动\")])],1)],1)],1)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e(\"div\",{staticClass:\"simtab\",staticStyle:{flex:\"0\"}},[e(\"span\",[this._v(\"我的策略\")])])}]};var W=s(\"VU/8\")(J,Q,!1,function(t){s(\"iP0y\"),s(\"Cb2R\")},\"data-v-081057d1\",null).exports,H=s(\"fZjL\"),K=s.n(H),X={name:\"Schedule\",components:{MoniforCfg:P},data:function(){return{selCat:\"list\",showfolders:!1,selfolder:\"\",loading:!1,committing:!1,addApp:!1,monitors:[],logs:\"\",logLines:0,logOnway:!1,curMonCfg:{id:\"\",folder:\"\",path:\"\",param:\"\",type:0,span:3,guard:!1,redirect:!1,schedule:{active:!1,weekflag:\"0111110\",weekmask:[!1,!0,!0,!0,!0,!0,!1],tasks:[{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0}]}}}},methods:{handleClickTab:function(t,e){this.selCat=t.name,\"logs\"==t.name&&this.queryLogs()},onCfgUpdated:function(){this.queryData()},handleSelectApp:function(t){console.log(t);var e=JSON.parse(g()(t));e.schedule.weekmask=[];for(var s=0;s<e.schedule.weekflag.length;s++)e.schedule.weekmask.push(\"1\"==e.schedule.weekflag[s]);for(var a=0;a<6;a++){var i=e.schedule.tasks[a].time+\"\";1==i.length?e.schedule.tasks[a].time=\"00:0\"+i:2==i.length?e.schedule.tasks[a].time=\"00:\"+i:3==i.length?e.schedule.tasks[a].time=\"0\"+i[0]+\":\"+i.substr(1):e.schedule.tasks[a].time=i.substr(0,2)+\":\"+i.substr(2)}this.curMonCfg=e},resetConf:function(){this.curMonCfg={id:\"\",folder:\"\",path:\"\",param:\"\",span:3,guard:!1,redirect:!1,schedule:{active:!1,weekflag:\"0111110\",weekmask:[!1,!0,!0,!0,!0,!0,!1],tasks:[{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0},{active:!1,time:\"00:00\",action:0}]}}},queryLogs:function(){var t=this,e=this;e.logOnway=!0,this.$api.getMonLogs(function(s){s.result<0?t.$alert(s.message):(t.logs=s.content,t.logLines=s.lines||0,e.$nextTick(function(){var t=e.$refs.logs.scrollHeight;e.$refs.logs.scrollTo(0,t)})),e.logOnway=!1})},queryData:function(){var t=this;t.resetConf(),t.loading=!0,setTimeout(function(){t.$api.getMonApps(function(e){if(e.result<0)t.$message.error(e.message);else{for(var s=[],a=K()(e.schedules),i=0;i<a.length;i++){var n=a[i],o=e.schedules[n];o.state=o.running?\"运行中\":\"未启动\",o.guardstr=o.guard?\"是\":\"否\",o.task=o.schedule.active?\"是\":\"否\",s.push(o)}t.monitors=s}t.loading=!1})},300)},handleAppCommand:function(t){var e=this,s=this;\"add\"==t?(this.resetConf(),this.addApp=!0):\"del\"==t?this.$confirm(\"确定要删除该调度任务吗?\",\"调度管理\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"warning\"}).then(function(){e.$api.delApp(s.curMonCfg.id,function(t){if(t.result<0)s.$alert(t.message);else for(var e=0;e<s.monitors.length;e++)if(s.monitors[e].id==s.curMonCfg.id){s.monitors.splice(e,1),e;break}})}):\"refresh\"==t?this.queryData():\"start\"==t?this.$api.startApp(this.curMonCfg.id,function(t){if(t.result<0)e.$message.error(t.message);else for(var s=0;s<e.monitors.length;s++)if(e.monitors[s].id==e.curMonCfg.id){e.monitors[s].state=\"运行中\",e.monitors[s].running=!0;break}}):\"stop\"==t&&this.$api.stopApp(this.curMonCfg.id,function(t){if(t.result<0)e.$message.error(t.message);else for(var s=0;s<e.monitors.length;s++)if(e.monitors[s].id==e.curMonCfg.id){e.monitors[s].state=\"未启动\",e.monitors[s].running=!1;break}})}},mounted:function(){var t=this;this.$nextTick(function(){t.queryData(),t.queryLogs()})}},tt={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"}},[s(\"el-row\",{staticStyle:{height:\"100%\"}},[s(\"el-col\",{staticStyle:{height:\"100%\"},attrs:{span:16}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0\",margin:\"2px 4px 0px 4px\",\"min-height\":\"39px\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticStyle:{flex:\"0\",height:\"100%\"}},[s(\"el-tabs\",{staticStyle:{height:\"100%\",margin:\"0\"},attrs:{value:t.selCat,type:\"card\",\"tab-position\":\"top\"},on:{\"tab-click\":t.handleClickTab}},[s(\"el-tab-pane\",{attrs:{label:\"调度列表\",name:\"list\"}}),t._v(\" \"),s(\"el-tab-pane\",{attrs:{label:\"调度日志\",name:\"logs\"}})],1)],1),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"1px solid #E4E7ED\",\"margin-top\":\"6px\",height:\"34px\"}},[s(\"el-dropdown\",{staticStyle:{float:\"right\"},attrs:{\"split-button\":\"\",type:\"danger\",size:\"mini\",trigger:\"click\"},on:{command:t.handleAppCommand}},[s(\"i\",{staticClass:\"el-icon-edit-outline\"}),t._v(\"管理\\n                                \"),s(\"el-dropdown-menu\",{attrs:{slot:\"dropdown\"},slot:\"dropdown\"},[s(\"el-dropdown-item\",{attrs:{command:\"add\"}},[s(\"i\",{staticClass:\"el-icon-circle-plus-outline\"}),t._v(\"添加应用\")]),t._v(\" \"),s(\"el-dropdown-item\",{attrs:{command:\"del\"}},[s(\"i\",{staticClass:\"el-icon-delete\"}),t._v(\"删除应用\")]),t._v(\" \"),s(\"el-dropdown-item\",{attrs:{divided:\"\",command:\"refresh\"}},[s(\"i\",{staticClass:\"el-icon-refresh\"}),t._v(\"刷新列表\")]),t._v(\" \"),s(\"el-dropdown-item\",{staticClass:\"text-success\",attrs:{divided:\"\",command:\"start\"}},[s(\"i\",{staticClass:\"el-icon-video-play\"}),t._v(\"启动应用\")]),t._v(\" \"),s(\"el-dropdown-item\",{staticClass:\"text-danger\",attrs:{command:\"stop\"}},[s(\"i\",{staticClass:\"el-icon-switch-button\"}),t._v(\"停止应用\")])],1)],1)],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",margin:\"10px 4px\",height:\"100%\"}},[s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"logs\"==t.selCat,expression:\"selCat=='logs'\"},{name:\"loading\",rawName:\"v-loading\",value:t.logOnway,expression:\"logOnway\"}],staticStyle:{height:\"100%\"}},[s(\"textarea\",{ref:\"logs\",staticClass:\"el-textarea__inner\",attrs:{readonly:\"readonly\",autocomplete:\"off\",placeholder:\"这里是日志内容\"},domProps:{value:t.logs}})]),t._v(\" \"),s(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"list\"==t.selCat,expression:\"selCat=='list'\"}],staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.loading,expression:\"loading\"}],staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.monitors,\"highlight-current-row\":\"\"},on:{\"current-change\":t.handleSelectApp}},[s(\"el-table-column\",{attrs:{label:\"名称\",width:\"120\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"i\",{class:e.row.group?\"el-icon-data-analysis\":\"el-icon-monitor\"}),t._v(\" \"),s(\"a\",{staticStyle:{\"padding-left\":\"8px\"}},[t._v(t._s(e.row.id))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"状态\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:e.row.running?\"text-success\":\"text-danger\"},[t._v(t._s(e.row.state))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"守护\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"是\"==e.row.guard?\"text-success\":\"text-danger\"},[t._v(t._s(e.row.guardstr))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{label:\"任务\",width:\"80\"},scopedSlots:t._u([{key:\"default\",fn:function(e){return[s(\"span\",{class:\"是\"==e.row.task?\"text-success\":\"text-danger\"},[t._v(t._s(e.row.task))])]}}])}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"param\",label:\"参数\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"span\",label:\"间隔(s)\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"path\",label:\"路径\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"folder\",label:\"目录\"}})],1)],1)])])]),t._v(\" \"),s(\"el-col\",{staticStyle:{height:\"100%\",\"border-left\":\"1px solid #E4E7ED\"},attrs:{span:8}},[s(\"MoniforCfg\",{attrs:{config:t.curMonCfg,fixinfo:!t.addApp,forapp:0==t.curMonCfg.type},on:{cfgudt:t.onCfgUpdated}})],1)],1)],1)},staticRenderFns:[]};var et=s(\"VU/8\")(X,tt,!1,function(t){s(\"7tVw\")},\"data-v-42cf5d6d\",null).exports,st={name:\"Login\",data:function(){return{users:[],actions:[],curUser:{loginid:\"\",name:\"\",remark:\"\",role:\"admin\",passwd:\"\",iplist:\"\"},daterange:[],showUserDlg:!1,addUser:!0,loading_user:!1}},methods:{handleSelectUser:function(t){this.curUser=JSON.parse(g()(t))},handleDtRangeChange:function(){},onClickQryActions:function(){var t=this;0==this.daterange.length&&this.$alert(\"请选选择日期范围\");var e=this.daterange[0].format(\"yyyy-MM-dd 00:00:00\"),s=this.daterange[1].format(\"yyyy-MM-dd 23:59:59\");this.$api.getActions(e,s,function(e){e.result>=0&&(t.actions=e.actions)})},onCommitUser:function(){var t=this;this.$api.commitUser(this.curUser,this.addUser?\"add\":\"mod\",function(e){e.result<0?t.$notify.error(e.message):(t.$notify({message:\"用户信息提交成功\",type:\"success\"}),t.showUserDlg=!1,t.queryUsers())})},queryUsers:function(){var t=this;this.loading_user=!0,this.$api.getUsers(function(e){e.result>=0?t.users=e.users:t.$notify.error(e.message),t.loading_user=!1})},handleUserCmd:function(t){var e=this;if(\"add\"==t)this.curUser={loginid:\"\",name:\"\",remark:\"\",role:\"admin\",passwd:\"\",iplist:\"\"},this.addUser=!0,this.showUserDlg=!0;else if(\"mod\"==t){if(\"\"==this.curUser.loginid)return void this.$alert(\"请选择要修改的用户\");this.curUser.passwd=\"********\",this.addUser=!1,this.showUserDlg=!0}else if(\"del\"==t){if(\"\"==this.curUser.loginid)return void this.$alert(\"请选择要删除的用户\");this.$confirm(\"确定要删除用户\"+this.curUser.loginid+\"吗?\",\"删除用户\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"danger\"}).then(function(){e.$api.delUser(e.curUser.loginid,function(t){t.result<0?e.$notify.error(t.message):(e.$notify({message:\"用户已删除\",type:\"success\"}),e.queryUsers())})})}else if(\"reset\"==t){if(\"\"==this.curUser.loginid)return void this.$alert(\"请选择要重置密码的用户\");this.$prompt(\"请输入新的密码\",\"重置密码\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",inputType:\"password\"}).then(function(t){var s=t.value;e.$confirm(\"确定要重置用户\"+e.curUser.loginid+\"的密码吗?\",\"重置密码\",{confirmButtonText:\"确定\",cancelButtonText:\"取消\",type:\"danger\"}).then(function(){e.$api.resetpwd(e.curUser.loginid,s,function(t){t.result<0?e.$notify.error(t.message):e.$notify({message:\"密码重置成功\",type:\"success\"})})})}).catch(function(){})}else\"refresh\"==t&&this.queryUsers()}},mounted:function(){var t=this;this.$nextTick(function(){t.queryUsers()})}},at={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s(\"div\",{staticStyle:{height:\"100%\",width:\"100%\"}},[s(\"el-row\",{staticStyle:{height:\"100%\"}},[s(\"el-col\",{staticStyle:{height:\"100%\"},attrs:{span:12}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0\",margin:\"2px 4px 0px 4px\",\"min-height\":\"39px\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticClass:\"simtab\",staticStyle:{flex:\"0\"}},[s(\"span\",[t._v(\"用户列表\")])]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"1px solid #E4E7ED\",\"margin-top\":\"6px\"}},[s(\"el-dropdown\",{staticStyle:{float:\"right\"},attrs:{\"split-button\":\"\",type:\"danger\",size:\"mini\",trigger:\"click\"},on:{command:t.handleUserCmd}},[s(\"i\",{staticClass:\"el-icon-edit-outline\"}),t._v(\"管理\\n                                \"),s(\"el-dropdown-menu\",{attrs:{slot:\"dropdown\"},slot:\"dropdown\"},[s(\"el-dropdown-item\",{attrs:{command:\"add\"}},[s(\"i\",{staticClass:\"el-icon-circle-plus-outline\"}),t._v(\"添加用户\")]),t._v(\" \"),s(\"el-dropdown-item\",{attrs:{command:\"mod\"}},[s(\"i\",{staticClass:\"el-icon-edit-outline\"}),t._v(\"修改用户\")]),t._v(\" \"),s(\"el-dropdown-item\",{attrs:{command:\"del\"}},[s(\"i\",{staticClass:\"el-icon-delete\"}),t._v(\"删除用户\")]),t._v(\" \"),s(\"el-dropdown-item\",{attrs:{command:\"reset\"}},[s(\"i\",{staticClass:\"el-icon-switch-button\"}),t._v(\"重置密码\")]),t._v(\" \"),s(\"el-dropdown-item\",{attrs:{divided:\"\",command:\"refresh\"}},[s(\"i\",{staticClass:\"el-icon-refresh\"}),t._v(\"刷新数据\")])],1)],1)],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",margin:\"10px 4px\",height:\"100%\"}},[s(\"div\",{staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{directives:[{name:\"loading\",rawName:\"v-loading\",value:t.loading_user,expression:\"loading_user\"}],staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.users,\"highlight-current-row\":\"\"},on:{\"update:data\":function(e){t.users=e},\"current-change\":t.handleSelectUser}},[s(\"el-table-column\",{attrs:{prop:\"loginid\",label:\"登录名\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"name\",label:\"姓名\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"createtime\",label:\"创建时间\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"createby\",label:\"创建人\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"modifytime\",label:\"修改时间\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"modifyby\",label:\"修改人\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"remark\",label:\"备注\"}})],1)],1)])])]),t._v(\" \"),s(\"el-col\",{staticStyle:{height:\"100%\",\"border-left\":\"1px solid #E4E7ED\"},attrs:{span:12}},[s(\"div\",{staticStyle:{height:\"100%\",display:\"flex\",\"flex-direction\":\"column\"}},[s(\"div\",{staticStyle:{flex:\"0\",margin:\"2px 4px 0px 4px\",\"min-height\":\"39px\",display:\"flex\",\"flex-direction\":\"row\"}},[s(\"div\",{staticClass:\"simtab\",staticStyle:{flex:\"0\"}},[s(\"span\",[t._v(\"操作日志\")])]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",\"border-bottom\":\"1px solid #E4E7ED\",\"margin-top\":\"6px\"}},[s(\"el-row\",{staticStyle:{height:\"100%\"}},[s(\"el-col\",{attrs:{span:12,offset:9}},[s(\"el-date-picker\",{staticStyle:{float:\"right\"},attrs:{type:\"daterange\",align:\"right\",size:\"mini\",\"unlink-panels\":\"\",\"range-separator\":\"至\",\"start-placeholder\":\"开始日期\",\"end-placeholder\":\"结束日期\"},on:{change:t.handleDtRangeChange},model:{value:t.daterange,callback:function(e){t.daterange=e},expression:\"daterange\"}})],1),t._v(\" \"),s(\"el-col\",{attrs:{span:3}},[s(\"el-button\",{staticStyle:{float:\"right\"},attrs:{type:\"primary\",icon:\"el-icon-refresh\",size:\"mini\",plain:\"\"},on:{click:t.onClickQryActions}},[t._v(\"刷新\")])],1)],1)],1)]),t._v(\" \"),s(\"div\",{staticStyle:{flex:\"1\",margin:\"10px 4px\",height:\"100%\"}},[s(\"div\",{staticStyle:{\"max-height\":\"100%\",overflow:\"auto\"}},[s(\"el-table\",{staticClass:\"table\",attrs:{border:\"\",stripe:\"\",data:t.actions}},[s(\"el-table-column\",{attrs:{prop:\"loginid\",label:\"登录名\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"actiontime\",label:\"操作时间\",width:\"100\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"actionip\",label:\"来源IP\",width:\"120\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"action\",label:\"类型\",width:\"80\"}}),t._v(\" \"),s(\"el-table-column\",{attrs:{prop:\"remark\",label:\"备注\"}})],1)],1)])])])],1),t._v(\" \"),s(\"el-dialog\",{staticClass:\"dialog-user\",attrs:{title:t.addUser?\"添加用户\":\"修改用户\",visible:t.showUserDlg,width:\"25%\"},on:{\"update:visible\":function(e){t.showUserDlg=e}}},[s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"登录名：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{size:\"mini\",disabled:!t.addUser},model:{value:t.curUser.loginid,callback:function(e){t.$set(t.curUser,\"loginid\",e)},expression:\"curUser.loginid\"}})],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"用户姓名：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{size:\"mini\"},model:{value:t.curUser.name,callback:function(e){t.$set(t.curUser,\"name\",e)},expression:\"curUser.name\"}})],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"用户类型：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-tooltip\",{attrs:{effect:\"dark\",content:\"拥有全部的管理权限\",placement:\"top-start\"}},[s(\"el-radio\",{attrs:{label:\"admin\"},model:{value:t.curUser.role,callback:function(e){t.$set(t.curUser,\"role\",e)},expression:\"curUser.role\"}},[t._v(\"管理员\")])],1),t._v(\" \"),s(\"el-tooltip\",{attrs:{effect:\"dark\",content:\"拥有风控权限\",placement:\"top-start\"}},[s(\"el-radio\",{attrs:{label:\"risker\"},model:{value:t.curUser.role,callback:function(e){t.$set(t.curUser,\"role\",e)},expression:\"curUser.role\"}},[t._v(\"风控员\")])],1)],1)],1),t._v(\" \"),s(\"el-row\",[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"登录密码：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{size:\"mini\",type:\"password\",\"show-password\":\"\",disabled:!t.addUser},model:{value:t.curUser.passwd,callback:function(e){t.$set(t.curUser,\"passwd\",e)},expression:\"curUser.passwd\"}})],1)],1),t._v(\" \"),s(\"el-row\",{staticStyle:{height:\"60px\"}},[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"IP限制：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{attrs:{type:\"textarea\",size:\"mini\"},model:{value:t.curUser.iplist,callback:function(e){t.$set(t.curUser,\"iplist\",e)},expression:\"curUser.iplist\"}})],1)],1),t._v(\" \"),s(\"el-row\",{staticStyle:{height:\"60px\"}},[s(\"el-col\",{attrs:{span:6}},[s(\"a\",[t._v(\"备注信息：\")])]),t._v(\" \"),s(\"el-col\",{attrs:{span:18}},[s(\"el-input\",{staticStyle:{\"min-height\":\"80px\"},attrs:{type:\"textarea\"},model:{value:t.curUser.remark,callback:function(e){t.$set(t.curUser,\"remark\",e)},expression:\"curUser.remark\"}})],1)],1),t._v(\" \"),s(\"span\",{staticClass:\"dialog-footer\",attrs:{slot:\"footer\"},slot:\"footer\"},[s(\"el-button\",{attrs:{type:\"primary\",plain:\"\",size:\"mini\"},on:{click:t.onCommitUser}},[t._v(\"提交数据\")])],1)],1)],1)},staticRenderFns:[]};var it=s(\"VU/8\")(st,at,!1,function(t){s(\"wpV1\")},\"data-v-c381bfac\",null).exports;a.default.use(o.a);var nt=new o.a({routes:[{path:\"/\",redirect:\"/login\"},{path:\"/login\",name:\"Login\",component:c},{path:\"/index\",name:\"Index\",component:h,redirect:\"/monitor\",children:[{path:\"/monitor\",name:\"monitor\",component:L},{path:\"/deploy\",name:\"deploy\",component:Z},{path:\"/backtest\",name:\"backtest\",component:W},{path:\"/schedule\",name:\"schedule\",component:et},{path:\"/admins\",name:\"admins\",component:it}]}]});a.default.use(p.a);var ot=new p.a.Store({state:{cache:{userinfo:{loginid:\"\",name:\"\",loginip:\"\",logintime:\"\"},isLogined:!1,loginid:\"\"},folders:[]},getters:{cache:function(t){return t.cache},folders:function(t){return t.folders}},modules:{},actions:{},mutations:{loginok:function(t,e){t.cache.userinfo=e.userinfo,t.cache.isLogined=!0,t.cache.loginid=e.loginid},logoutok:function(t){t.cache.userinfo={loginid:\"\",name:\"\",loginip:\"\",logintime:\"\"},t.cache.isLogined=!1,t.cache.loginid=\"\"},setfolders:function(t,e){t.folders=e.folders}}}),rt=s(\"HI0L\"),lt=s.n(rt),ct=s(\"zL8q\"),ut=s.n(ct),dt=(s(\"wLZQ\"),s(\"XLwt\")),pt=s.n(dt),ft=s(\"woOf\"),mt=s.n(ft),ht=s(\"pFYg\"),vt=s.n(ht),gt=s(\"7t+N\"),bt=s.n(gt),yt=s(\"NC6I\"),wt=s.n(yt);Date.prototype.format=function(t){var e={\"M+\":this.getMonth()+1,\"d+\":this.getDate(),\"h+\":this.getHours(),\"m+\":this.getMinutes(),\"s+\":this.getSeconds(),\"q+\":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};for(var s in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+\"\").substr(4-RegExp.$1.length))),e)new RegExp(\"(\"+s+\")\").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:(\"00\"+e[s]).substr((\"\"+e[s]).length)));return t},Date.prototype.addDays=function(t){var e=this.valueOf();return new Date(e+=864e5*t)},String.prototype.format=function(t){if(arguments.length>0){var e=this;if(1==arguments.length&&\"object\"==(void 0===t?\"undefined\":vt()(t)))for(var s in t){var a=new RegExp(\"({\"+s+\"})\",\"g\");e=e.replace(a,t[s])}else for(var i=0;i<arguments.length;i++){if(void 0==arguments[i])return\"\";a=new RegExp(\"({[\"+i+\"]})\",\"g\");e=e.replace(a,arguments[i])}return e}return this};a.default.prototype.$echarts=pt.a,a.default.config.productionTip=!1,a.default.use(ut.a),a.default.use(new lt.a({debug:!1,connection:\"http://\"+document.domain+\":\"+location.port,vuex:{}})),a.default.prototype.$api=new function(){this.setItem=function(t,e){return window.localStorage.setItem(t,e)},this.getItem=function(t){return window.localStorage.getItem(t)||\"\"},this.token=this.getItem(\"token\"),this.removeItem=function(t){return window.localStorage.removeItem(t)},this.login=function(t,e,s){var a={loginid:t,passwd:wt()(e)};bt.a.post(\"/mgr/login\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.modpwd=function(t,e,s){var a={oldpwd:wt()(t),newpwd:wt()(e)};bt.a.post(\"/mgr/modpwd\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.resetpwd=function(t,e,s){var a={loginid:t,passwd:wt()(e)};bt.a.post(\"/mgr/resetpwd\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getGroups=function(t){bt.a.post(\"/mgr/qrygrp\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.startGroup=function(t,e){var s={groupid:t||\"\"};bt.a.post(\"/mgr/startgrp\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.stopGroup=function(t,e){var s={groupid:t||\"\"};bt.a.post(\"/mgr/stopgrp\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.delGroup=function(t,e){var s={groupid:t||\"\"};bt.a.post(\"/mgr/delgrp\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getFolders=function(t){bt.a.post(\"/mgr/qrydir\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.commitGroup=function(t,e,s){var a=JSON.parse(g()(t));a.groupid=t.id,a.action=e,bt.a.post(\"/mgr/addgrp\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getGroupDir=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qrygrpdir\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getGroupFile=function(t,e,s){var a={groupid:t,path:e};bt.a.post(\"/mgr/qrygrpfile\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.commitGroupFile=function(t,e,s,a){var i={groupid:t,path:e,content:s};bt.a.post(\"/mgr/cmtgrpfile\",g()(i),function(t,e){a(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getLogs=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={id:t,type:e};bt.a.post(\"/mgr/qrylogs\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getMonCfg=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qrymon\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.commitMonCfg=function(t,e){var s=t;bt.a.post(\"/mgr/cfgmon\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getStrategies=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,type:e};bt.a.post(\"/mgr/qrystras\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getChannels=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qrychnls\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getTrades=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,strategyid:e};bt.a.post(\"/mgr/qrytrds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getSignals=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,strategyid:e};bt.a.post(\"/mgr/qrysigs\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getRounds=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,strategyid:e};bt.a.post(\"/mgr/qryrnds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getPositions=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,strategyid:e};bt.a.post(\"/mgr/qrypos\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getFunds=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,strategyid:e};bt.a.post(\"/mgr/qryfunds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getChnlOrders=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,channelid:e};bt.a.post(\"/mgr/qrychnlords\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getChnlTrades=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,channelid:e};bt.a.post(\"/mgr/qrychnltrds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getChnlPositions=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,channelid:e};bt.a.post(\"/mgr/qrychnlpos\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getChnlFunds=function(t,e,s){\"function\"==typeof e&&(s=e,e=\"\");var a={groupid:t,channelid:e};bt.a.post(\"/mgr/qrychnlfund\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getUsers=function(t){bt.a.post(\"/mgr/qryusers\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.commitUser=function(t,e,s){var a=mt()({},t);a.action=e||\"add\",\"********\"!=a.passwd&&(a.passwd=wt()(a.passwd)),bt.a.post(\"/mgr/cmtuser\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.delUser=function(t,e){var s={loginid:t};bt.a.post(\"/mgr/deluser\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getActions=function(t,e,s){var a={sdate:t,edate:e};bt.a.post(\"/mgr/qryacts\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getPythonPath=function(t){bt.a.post(\"/mgr/qryexec\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.getMonApps=function(t){bt.a.post(\"/mgr/qrymons\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.startApp=function(t,e){var s={appid:t||\"\"};bt.a.post(\"/mgr/startapp\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.stopApp=function(t,e){var s={appid:t||\"\"};bt.a.post(\"/mgr/stopapp\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getMonLogs=function(t){bt.a.post(\"/mgr/qrymonlog\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.delApp=function(t,e){var s={appid:t||\"\"};bt.a.post(\"/mgr/delapp\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getPortPositions=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qryportpos\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getPortFunds=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qryportfunds\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getPortPerfs=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qryportperfs\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getPortFilters=function(t,e){var s={groupid:t};bt.a.post(\"/mgr/qryportfilters\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.commitPortFilters=function(t,e,s){var a={groupid:t,filters:e};bt.a.post(\"/mgr/cmtgrpfilters\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getBtStrategies=function(t){bt.a.post(\"/bt/qrystras\",g()({}),function(e,s){t(\"success\"!=s?{result:-9999,message:s}:e)},\"json\")},this.addBtStrategy=function(t,e){var s={name:t};bt.a.post(\"/bt/addstra\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.delBtStrategy=function(t,e){var s={straid:t};bt.a.post(\"/bt/delstra\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getBtStraCode=function(t,e){var s={straid:t};bt.a.post(\"/bt/qrycode\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.commitBtStraCode=function(t,e,s){var a={straid:t,content:e};bt.a.post(\"/bt/setcode\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getBacktests=function(t,e){var s={straid:t};bt.a.post(\"/bt/qrystrabts\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.runBacktest=function(t,e,s,a,i,n){\"function\"==typeof i&&(n=i,i=0);var o={straid:t,stime:e,etime:s,capital:a,slippage:i};bt.a.post(\"/bt/runstrabt\",g()(o),function(t,e){n(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.delBacktest=function(t,e){var s={btid:t};bt.a.post(\"/bt/delstrabt\",g()(s),function(t,s){e(\"success\"!=s?{result:-9999,message:s}:t)},\"json\")},this.getBtSignals=function(t,e,s){var a={straid:t,btid:e};bt.a.post(\"/bt/qrybtsigs\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getBtTrades=function(t,e,s){var a={straid:t,btid:e};bt.a.post(\"/bt/qrybttrds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getBtRounds=function(t,e,s){var a={straid:t,btid:e};bt.a.post(\"/bt/qrybtrnds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getBtFunds=function(t,e,s){var a={straid:t,btid:e};bt.a.post(\"/bt/qrybtfunds\",g()(a),function(t,e){s(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")},this.getBtBars=function(t,e,s,a,i){var n={code:t,period:e,stime:s,etime:a};bt.a.post(\"/bt/qrybars\",g()(n),function(t,e){i(\"success\"!=e?{result:-9999,message:e}:t)},\"json\")}},new a.default({store:ot,el:\"#app\",router:nt,components:{App:n},template:\"<App/>\"})},SP1q:function(t,e){},Yokd:function(t,e){},b3w7:function(t,e){},g1Tk:function(t,e){},iP0y:function(t,e){},\"kk+i\":function(t,e){},\"n+8b\":function(t,e){},\"nZf+\":function(t,e){},pKwi:function(t,e){},tvDO:function(t,e){},wLZQ:function(t,e){},wpV1:function(t,e){},wx9h:function(t,e){}},[\"NHnr\"]);\n//# sourceMappingURL=app.d3652914f874ea570f72.js.map"
  },
  {
    "path": "wtpy/monitor/static/console/static/js/manifest.3ad1d5771e9b13dbdad2.js",
    "content": "!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a<e.length;a++)i=e[a],o[i]&&l.push(o[i][0]),o[i]=0;for(f in u)Object.prototype.hasOwnProperty.call(u,f)&&(r[f]=u[f]);for(n&&n(e,u,c);l.length;)l.shift()();if(c)for(a=0;a<c.length;a++)p=t(t.s=c[a]);return p};var e={},o={2:0};function t(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return r[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=r,t.c=e,t.d=function(r,n,e){t.o(r,n)||Object.defineProperty(r,n,{configurable:!1,enumerable:!0,get:e})},t.n=function(r){var n=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(n,\"a\",n),n},t.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},t.p=\"./\",t.oe=function(r){throw console.error(r),r}}([]);\n//# sourceMappingURL=manifest.3ad1d5771e9b13dbdad2.js.map"
  },
  {
    "path": "wtpy/monitor/static/console/static/js/vendor.cd39a6c53a9d7599c08c.js",
    "content": "webpackJsonp([0],{\"++K3\":function(e,t){var n,i,r,o,a,s,l,u,c,h,d,f,p,g,m,v=!1;function y(){if(!v){v=!0;var e=navigator.userAgent,t=/(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(e),y=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(f=/\\b(iPhone|iP[ao]d)/.exec(e),p=/\\b(iP[ao]d)/.exec(e),h=/Android/i.exec(e),g=/FBAN\\/\\w+;/i.exec(e),m=/Mobile/i.exec(e),d=!!/Win64/.exec(e),t){(n=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN)&&document&&document.documentMode&&(n=document.documentMode);var b=/(?:Trident\\/(\\d+.\\d+))/.exec(e);s=b?parseFloat(b[1])+4:n,i=t[2]?parseFloat(t[2]):NaN,r=t[3]?parseFloat(t[3]):NaN,(o=t[4]?parseFloat(t[4]):NaN)?(t=/(?:Chrome\\/(\\d+\\.\\d+))/.exec(e),a=t&&t[1]?parseFloat(t[1]):NaN):a=NaN}else n=i=r=a=o=NaN;if(y){if(y[1]){var x=/(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(e);l=!x||parseFloat(x[1].replace(\"_\",\".\"))}else l=!1;u=!!y[2],c=!!y[3]}else l=u=c=!1}}var b={ie:function(){return y()||n},ieCompatibilityMode:function(){return y()||s>n},ie64:function(){return b.ie()&&d},firefox:function(){return y()||i},opera:function(){return y()||r},webkit:function(){return y()||o},safari:function(){return b.webkit()},chrome:function(){return y()||a},windows:function(){return y()||u},osx:function(){return y()||l},linux:function(){return y()||c},iphone:function(){return y()||f},mobile:function(){return y()||f||p||h||m},nativeApp:function(){return y()||g},android:function(){return y()||h},ipad:function(){return y()||p}};e.exports=b},\"+2Ke\":function(e,t){t.SOURCE_FORMAT_ORIGINAL=\"original\",t.SOURCE_FORMAT_ARRAY_ROWS=\"arrayRows\",t.SOURCE_FORMAT_OBJECT_ROWS=\"objectRows\",t.SOURCE_FORMAT_KEYED_COLUMNS=\"keyedColumns\",t.SOURCE_FORMAT_UNKNOWN=\"unknown\",t.SOURCE_FORMAT_TYPED_ARRAY=\"typedArray\",t.SERIES_LAYOUT_BY_COLUMN=\"column\",t.SERIES_LAYOUT_BY_ROW=\"row\"},\"+Dgo\":function(e,t,n){var i=n(\"Y5nL\"),r=n(\"Pgdp\"),o=n(\"kdOt\").detectSourceFormat,a=n(\"+2Ke\").SERIES_LAYOUT_BY_COLUMN;i.extend({type:\"dataset\",defaultOption:{seriesLayoutBy:a,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){o(this)}}),r.extend({type:\"dataset\"})},\"+E39\":function(e,t,n){e.exports=!n(\"S82l\")(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},\"+K7g\":function(e,t,n){var i=n(\"Icdr\");i.registerAction({type:\"focusNodeAdjacency\",event:\"focusNodeAdjacency\",update:\"series:focusNodeAdjacency\"},function(){}),i.registerAction({type:\"unfocusNodeAdjacency\",event:\"unfocusNodeAdjacency\",update:\"series:unfocusNodeAdjacency\"},function(){})},\"+PQg\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"3h1/\"),a=n(\"dCQY\"),s=n(\"0sHC\"),l=n(\"Pdtn\"),u=n(\"1Hui\"),c=n(\"v/cD\"),h=i.extendComponentView({type:\"toolbox\",render:function(e,t,n,i){var h=this.group;if(h.removeAll(),e.get(\"show\")){var d=+e.get(\"itemSize\"),f=e.get(\"feature\")||{},p=this._features||(this._features={}),g=[];r.each(f,function(e,t){g.push(t)}),new u(this._featureNames||[],g).add(m).update(m).remove(r.curry(m,null)).execute(),this._featureNames=g,c.layout(h,e,n),h.add(c.makeBackground(h.getBoundingRect(),e)),h.eachChild(function(e){var t=e.__title,i=e.hoverStyle;if(i&&t){var r=o.getBoundingRect(t,o.makeFont(i)),a=e.position[0]+h.position[0],s=!1;e.position[1]+h.position[1]+d+r.height>n.getHeight()&&(i.textPosition=\"top\",s=!0);var l=s?-5-r.height:d+8;a+r.width/2>n.getWidth()?(i.textPosition=[\"100%\",l],i.textAlign=\"right\"):a-r.width/2<0&&(i.textPosition=[0,l],i.textAlign=\"left\")}})}function m(o,u){var c,m=g[o],v=g[u],y=f[m],b=new l(y,e,e.ecModel);if(i&&null!=i.newTitle&&i.featureName===m&&(y.title=i.newTitle),m&&!v){if(function(e){return 0===e.indexOf(\"my\")}(m))c={model:b,onclick:b.option.onclick,featureName:m};else{var x=a.get(m);if(!x)return;c=new x(b,t,n)}p[m]=c}else{if(!(c=p[v]))return;c.model=b,c.ecModel=t,c.api=n}m||!v?b.get(\"show\")&&!c.unusable?(!function(i,o,a){var l=i.getModel(\"iconStyle\"),u=i.getModel(\"emphasis.iconStyle\"),c=o.getIcons?o.getIcons():i.get(\"icon\"),f=i.get(\"title\")||{};if(\"string\"==typeof c){var p=c,g=f;f={},(c={})[a]=p,f[a]=g}var m=i.iconPaths={};r.each(c,function(a,c){var p=s.createIcon(a,{},{x:-d/2,y:-d/2,width:d,height:d});p.setStyle(l.getItemStyle()),p.hoverStyle=u.getItemStyle(),p.setStyle({text:f[c],textAlign:u.get(\"textAlign\"),textBorderRadius:u.get(\"textBorderRadius\"),textPadding:u.get(\"textPadding\"),textFill:null});var g=e.getModel(\"tooltip\");g&&g.get(\"show\")&&p.attr(\"tooltip\",r.extend({content:f[c],formatter:g.get(\"formatter\",!0)||function(){return f[c]},formatterParams:{componentType:\"toolbox\",name:c,title:f[c],$vars:[\"name\",\"title\"]},position:g.get(\"position\",!0)||\"bottom\"},g.option)),s.setHoverStyle(p),e.get(\"showTitle\")&&(p.__title=f[c],p.on(\"mouseover\",function(){var t=u.getItemStyle(),n=\"vertical\"===e.get(\"orient\")?null==e.get(\"right\")?\"right\":\"left\":null==e.get(\"bottom\")?\"bottom\":\"top\";p.setStyle({textFill:u.get(\"textFill\")||t.fill||t.stroke||\"#000\",textBackgroundColor:u.get(\"textBackgroundColor\"),textPosition:u.get(\"textPosition\")||n})}).on(\"mouseout\",function(){p.setStyle({textFill:null,textBackgroundColor:null})})),p.trigger(i.get(\"iconStatus.\"+c)||\"normal\"),h.add(p),p.on(\"click\",r.bind(o.onclick,o,t,n,c)),m[c]=p})}(b,c,m),b.setIconStatus=function(e,t){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[e]=t,i[e]&&i[e].trigger(t)},c.render&&c.render(b,t,n,i)):c.remove&&c.remove(t,n):c.dispose&&c.dispose(t,n)}},updateView:function(e,t,n,i){r.each(this._features,function(e){e.updateView&&e.updateView(e.model,t,n,i)})},remove:function(e,t){r.each(this._features,function(n){n.remove&&n.remove(e,t)}),this.group.removeAll()},dispose:function(e,t){r.each(this._features,function(n){n.dispose&&n.dispose(e,t)})}});e.exports=h},\"+UTs\":function(e,t,n){var i=n(\"GxVO\"),r=n(\"No7X\"),o=i.extend({type:\"polygon\",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(e,t){r.buildPath(e,t,!0)}});e.exports=o},\"+Y0c\":function(e,t,n){var i=new(n(\"zMj2\"))(50);function r(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var t=0;t<e.pending.length;t++){var n=e.pending[t],i=n.cb;i&&i(this,n.cbPayload),n.hostEl.dirty()}e.pending.length=0}function o(e){return e&&e.width&&e.height}t.findExistImage=function(e){if(\"string\"==typeof e){var t=i.get(e);return t&&t.image}return e},t.createOrUpdateImage=function(e,t,n,a,s){if(e){if(\"string\"==typeof e){if(t&&t.__zrImageSrc===e||!n)return t;var l=i.get(e),u={hostEl:n,cb:a,cbPayload:s};return l?!o(t=l.image)&&l.pending.push(u):((t=new Image).onload=t.onerror=r,i.put(e,t.__cachedImgObj={image:t,pending:[u]}),t.src=t.__zrImageSrc=e),t}return e}return t},t.isImageReady=o},\"+ZMJ\":function(e,t,n){var i=n(\"lOnJ\");e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},\"+bDV\":function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=i.createHashMap,a=n(\"EJsE\"),s=n(\"ao1T\"),l=a.extend({type:\"series.parallel\",dependencies:[\"parallel\"],visualColorAccessPath:\"lineStyle.color\",getInitialData:function(e,t){var n=this.getSource();return function(e,t){if(e.encodeDefine)return;var n=t.ecModel.getComponent(\"parallel\",t.get(\"parallelIndex\"));if(!n)return;var i=e.encodeDefine=o();r(n.dimensions,function(e){var t=+e.replace(\"dim\",\"\");i.set(e,t)})}(n,this),s(n,this)},getRawIndicesByActiveState:function(e){var t=this.coordinateSystem,n=this.getData(),i=[];return t.eachActiveState(n,function(t,r){e===t&&i.push(n.getRawIndex(r))}),i},defaultOption:{zlevel:0,z:2,coordinateSystem:\"parallel\",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:\"solid\"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:\"linear\"}});e.exports=l},\"+bS+\":function(e,t,n){var i=n(\"Ou7x\"),r=n(\"zAPJ\"),o=n(\"fzS+\"),a=n(\"43ae\"),s=[\"x\",\"y\"],l=[\"width\",\"height\"],u=i.extend({makeElOption:function(e,t,n,i,a){var s=n.axis,l=s.coordinateSystem,u=d(l,1-h(s)),f=l.dataToPoint(t)[0],p=i.get(\"type\");if(p&&\"none\"!==p){var g=r.buildElStyle(i),m=c[p](s,f,u);m.style=g,e.graphicKey=m.type,e.pointer=m}var v=o.layout(n);r.buildCartesianSingleLabelElOption(t,e,v,n,i,a)},getHandleTransform:function(e,t,n){var i=o.layout(t,{labelInside:!1});return i.labelMargin=n.get(\"handle.margin\"),{position:r.getTransformedPosition(t.axis,e,i),rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(e,t,n,i){var r=n.axis,o=r.coordinateSystem,a=h(r),s=d(o,a),l=e.position;l[a]+=t[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=d(o,1-a),c=(u[1]+u[0])/2,f=[c,c];return f[a]=l[a],{position:l,rotation:e.rotation,cursorPoint:f,tooltipOption:{verticalAlign:\"middle\"}}}}),c={line:function(e,t,n){return{type:\"Line\",subPixelOptimize:!0,shape:r.makeLineShape([t,n[0]],[t,n[1]],h(e))}},shadow:function(e,t,n){var i=e.getBandWidth(),o=n[1]-n[0];return{type:\"Rect\",shape:r.makeRectShape([t-i/2,n[0]],[i,o],h(e))}}};function h(e){return e.isHorizontal()?0:1}function d(e,t){var n=e.getRect();return[n[s[t]],n[s[t]]+n[l[t]]]}a.registerAxisPointerClass(\"SingleAxisPointer\",u);var f=u;e.exports=f},\"+jMe\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"Pdtn\"),o=n(\"NGRG\"),a=n(\"Rfu2\"),s=n(\"hcq/\"),l=function(e,t){this.name=e||\"\",this.depth=0,this.height=0,this.parentNode=null,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.hostTree=t};function u(e,t){this.root,this.data,this._nodes=[],this.hostModel=e,this.levelModels=i.map(t||[],function(t){return new r(t,e,e.ecModel)})}l.prototype={constructor:l,isRemoved:function(){return this.dataIndex<0},eachNode:function(e,t,n){\"function\"==typeof e&&(n=t,t=e,e=null),e=e||{},i.isString(e)&&(e={order:e});var r,o=e.order||\"preorder\",a=this[e.attr||\"children\"];\"preorder\"===o&&(r=t.call(n,this));for(var s=0;!r&&s<a.length;s++)a[s].eachNode(e,t,n);\"postorder\"===o&&t.call(n,this)},updateDepthAndHeight:function(e){var t=0;this.depth=e;for(var n=0;n<this.children.length;n++){var i=this.children[n];i.updateDepthAndHeight(e+1),i.height>t&&(t=i.height)}this.height=t+1},getNodeById:function(e){if(this.getId()===e)return this;for(var t=0,n=this.children,i=n.length;t<i;t++){var r=n[t].getNodeById(e);if(r)return r}},contains:function(e){if(e===this)return!0;for(var t=0,n=this.children,i=n.length;t<i;t++){var r=n[t].contains(e);if(r)return r}},getAncestors:function(e){for(var t=[],n=e?this:this.parentNode;n;)t.push(n),n=n.parentNode;return t.reverse(),t},getValue:function(e){var t=this.hostTree.data;return t.get(t.getDimension(e||\"value\"),this.dataIndex)},setLayout:function(e,t){this.dataIndex>=0&&this.hostTree.data.setItemLayout(this.dataIndex,e,t)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(e){if(!(this.dataIndex<0)){var t=this.hostTree.data.getItemModel(this.dataIndex),n=this.getLevelModel();return n?t.getModel(e,n.getModel(e)):t.getModel(e)}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},setVisual:function(e,t){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,e,t)},getVisual:function(e,t){return this.hostTree.data.getItemVisual(this.dataIndex,e,t)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(e){for(var t=e.parentNode;t;){if(t===this)return!0;t=t.parentNode}return!1},isDescendantOf:function(e){return e!==this&&e.isAncestorOf(this)}},u.prototype={constructor:u,type:\"tree\",eachNode:function(e,t,n){this.root.eachNode(e,t,n)},getNodeByDataIndex:function(e){var t=this.data.getRawIndex(e);return this._nodes[t]},getNodeByName:function(e){return this.root.getNodeByName(e)},update:function(){for(var e=this.data,t=this._nodes,n=0,i=t.length;n<i;n++)t[n].dataIndex=-1;for(n=0,i=e.count();n<i;n++)t[e.getRawIndex(n)].dataIndex=n},clearLayouts:function(){this.data.clearItemLayouts()}},u.createTree=function(e,t,n,r){var c=new u(t,n&&n.levels),h=[],d=1;!function e(t,n){var r=t.value;d=Math.max(d,i.isArray(r)?r.length:1);h.push(t);var o=new l(t.name,c);n?function(e,t){var n=t.children;if(e.parentNode===t)return;n.push(e),e.parentNode=t}(o,n):c.root=o;c._nodes.push(o);var a=t.children;if(a)for(var s=0;s<a.length;s++)e(a[s],o)}(e),c.root.updateDepthAndHeight(0);var f=s(h,{coordDimensions:[\"value\"],dimensionsCount:d}),p=new a(f,t);return p.initData(h),r&&r(p),o({mainData:p,struct:c,structAttr:\"tree\"}),c.update(),c};var c=u;e.exports=c},\"+pdh\":function(e,t,n){for(var i=n(\"Icdr\"),r=n(\"gOx9\"),o=function(){},a=[\"treemapZoomToNode\",\"treemapRender\",\"treemapMove\"],s=0;s<a.length;s++)i.registerAction({type:a[s],update:\"updateView\"},o);i.registerAction({type:\"treemapRootToNode\",update:\"updateView\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"treemap\",query:e},function(t,n){var i=r.retrieveTargetInfo(e,[\"treemapZoomToNode\",\"treemapRootToNode\"],t);if(i){var o=t.getViewRoot();o&&(e.direction=r.aboveViewRoot(o,i.node)?\"rollUp\":\"drillDown\"),t.resetViewRoot(i.node)}})})},\"+tPU\":function(e,t,n){n(\"xGkn\");for(var i=n(\"7KvD\"),r=n(\"hJx8\"),o=n(\"/bQp\"),a=n(\"dSzd\")(\"toStringTag\"),s=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),l=0;l<s.length;l++){var u=s[l],c=i[u],h=c&&c.prototype;h&&!h[a]&&r(h,a,u),o[u]=o.Array}},\"+u5N\":function(e,t,n){var i=n(\"EJsE\"),r=n(\"d1IL\"),o=n(\"HHfb\").encodeHTML,a=n(\"Pdtn\"),s=(n(\"4Nz2\").__DEV__,i.extend({type:\"series.sankey\",layoutInfo:null,levelModels:null,getInitialData:function(e,t){for(var n=e.edges||e.links,i=e.data||e.nodes,o=e.levels,s=this.levelModels={},l=0;l<o.length;l++)null!=o[l].depth&&o[l].depth>=0&&(s[o[l].depth]=new a(o[l],this,t));if(i&&n)return r(i,n,this,!0,function(e,t){e.wrapMethod(\"getItemModel\",function(e,t){return e.customizeGetParent(function(e){var n=this.parentModel,i=n.getData().getItemLayout(t).depth,r=n.levelModels[i];return r||this.parentModel}),e}),t.wrapMethod(\"getItemModel\",function(e,t){return e.customizeGetParent(function(e){var n=this.parentModel,i=n.getGraph().getEdgeByIndex(t),r=i.node1.getLayout().depth,o=n.levelModels[r];return o||this.parentModel}),e})}).data},setNodePosition:function(e,t){var n=this.option.data[e];n.localX=t[0],n.localY=t[1]},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},formatTooltip:function(e,t,n){if(\"edge\"===n){var i=this.getDataParams(e,n),r=i.data,a=r.source+\" -- \"+r.target;return i.value&&(a+=\" : \"+i.value),o(a)}if(\"node\"===n){var l=this.getGraph().getNodeByIndex(e).getLayout().value,u=this.getDataParams(e,n).data.name;if(l)a=u+\" : \"+l;return o(a)}return s.superCall(this,\"formatTooltip\",e,t)},optionUpdated:function(){var e=this.option;!0===e.focusNodeAdjacency&&(e.focusNodeAdjacency=\"allEdges\")},getDataParams:function(e,t){var n=s.superCall(this,\"getDataParams\",e,t);if(null==n.value&&\"node\"===t){var i=this.getGraph().getNodeByIndex(e).getLayout().value;n.value=i}return n},defaultOption:{zlevel:0,z:2,coordinateSystem:\"view\",layout:null,left:\"5%\",top:\"5%\",right:\"20%\",bottom:\"5%\",orient:\"horizontal\",nodeWidth:20,nodeGap:8,draggable:!0,focusNodeAdjacency:!1,layoutIterations:32,label:{show:!0,position:\"right\",color:\"#000\",fontSize:12},levels:[],nodeAlign:\"justify\",itemStyle:{borderWidth:1,borderColor:\"#333\"},lineStyle:{color:\"#314656\",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},animationEasing:\"linear\",animationDuration:1e3}})),l=s;e.exports=l},\"/+sa\":function(e,t,n){var i=n(\"BNYN\");function r(e){this._setting=e||{},this._extent=[1/0,-1/0],this._interval=0,this.init&&this.init.apply(this,arguments)}r.prototype.parse=function(e){return e},r.prototype.getSetting=function(e){return this._setting[e]},r.prototype.contain=function(e){var t=this._extent;return e>=t[0]&&e<=t[1]},r.prototype.normalize=function(e){var t=this._extent;return t[1]===t[0]?.5:(e-t[0])/(t[1]-t[0])},r.prototype.scale=function(e){var t=this._extent;return e*(t[1]-t[0])+t[0]},r.prototype.unionExtent=function(e){var t=this._extent;e[0]<t[0]&&(t[0]=e[0]),e[1]>t[1]&&(t[1]=e[1])},r.prototype.unionExtentFromData=function(e,t){this.unionExtent(e.getApproximateExtent(t))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(e,t){var n=this._extent;isNaN(e)||(n[0]=e),isNaN(t)||(n[1]=t)},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(e){this._isBlank=e},r.prototype.getLabel=null,i.enableClassExtend(r),i.enableClassManagement(r,{registerWhenExtend:!0});var o=r;e.exports=o},\"/86O\":function(e,t,n){var i=n(\"9qnA\"),r=n(\"/gxq\"),o=n(\"3h1/\"),a=n(\"qjrH\"),s=n(\"28kU\").ContextCachedBy,l=function(e){i.call(this,e)};l.prototype={constructor:l,type:\"text\",brush:function(e,t){var n=this.style;this.__dirty&&a.normalizeTextStyle(n,!0),n.fill=n.stroke=n.shadowBlur=n.shadowColor=n.shadowOffsetX=n.shadowOffsetY=null;var i=n.text;null!=i&&(i+=\"\"),a.needDrawText(i,n)?(this.setTransform(e),a.renderText(this,e,i,n,null,t),this.restoreTransform(e)):e.__attrCachedBy=s.NONE},getBoundingRect:function(){var e=this.style;if(this.__dirty&&a.normalizeTextStyle(e,!0),!this._rect){var t=e.text;null!=t?t+=\"\":t=\"\";var n=o.getBoundingRect(e.text+\"\",e.font,e.textAlign,e.textVerticalAlign,e.textPadding,e.textLineHeight,e.rich);if(n.x+=e.x||0,n.y+=e.y||0,a.getStroke(e.textStroke,e.textStrokeWidth)){var i=e.textStrokeWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect}},r.inherits(l,i);var u=l;e.exports=u},\"/99E\":function(e,t,n){n(\"0BOU\"),n(\"yEXw\"),n(\"w6Zv\")},\"/BOW\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"2HcM\"),o=function(e,t,n,i,o){r.call(this,e,t,n),this.type=i||\"value\",this.axisIndex=o};o.prototype={constructor:o,model:null,isHorizontal:function(){return\"horizontal\"!==this.coordinateSystem.getModel().get(\"layout\")}},i.inherits(o,r);var a=o;e.exports=a},\"/ZBO\":function(e,t,n){var i=n(\"dOVI\"),r=n(\"C7PF\"),o=i.identity,a=5e-5;function s(e){return e>a||e<-a}var l=function(e){(e=e||{}).position||(this.position=[0,0]),null==e.rotation&&(this.rotation=0),e.scale||(this.scale=[1,1]),this.origin=this.origin||null},u=l.prototype;u.transform=null,u.needLocalTransform=function(){return s(this.rotation)||s(this.position[0])||s(this.position[1])||s(this.scale[0]-1)||s(this.scale[1]-1)};var c=[];u.updateTransform=function(){var e=this.parent,t=e&&e.transform,n=this.needLocalTransform(),r=this.transform;if(n||t){r=r||i.create(),n?this.getLocalTransform(r):o(r),t&&(n?i.mul(r,e.transform,r):i.copy(r,e.transform)),this.transform=r;var a=this.globalScaleRatio;if(null!=a&&1!==a){this.getGlobalScale(c);var s=c[0]<0?-1:1,l=c[1]<0?-1:1,u=((c[0]-s)*a+s)/c[0]||0,h=((c[1]-l)*a+l)/c[1]||0;r[0]*=u,r[1]*=u,r[2]*=h,r[3]*=h}this.invTransform=this.invTransform||i.create(),i.invert(this.invTransform,r)}else r&&o(r)},u.getLocalTransform=function(e){return l.getLocalTransform(this,e)},u.setTransform=function(e){var t=this.transform,n=e.dpr||1;t?e.setTransform(n*t[0],n*t[1],n*t[2],n*t[3],n*t[4],n*t[5]):e.setTransform(n,0,0,n,0,0)},u.restoreTransform=function(e){var t=e.dpr||1;e.setTransform(t,0,0,t,0,0)};var h=[],d=i.create();u.setLocalTransform=function(e){if(e){var t=e[0]*e[0]+e[1]*e[1],n=e[2]*e[2]+e[3]*e[3],i=this.position,r=this.scale;s(t-1)&&(t=Math.sqrt(t)),s(n-1)&&(n=Math.sqrt(n)),e[0]<0&&(t=-t),e[3]<0&&(n=-n),i[0]=e[4],i[1]=e[5],r[0]=t,r[1]=n,this.rotation=Math.atan2(-e[1]/n,e[0]/t)}},u.decomposeTransform=function(){if(this.transform){var e=this.parent,t=this.transform;e&&e.transform&&(i.mul(h,e.invTransform,t),t=h);var n=this.origin;n&&(n[0]||n[1])&&(d[4]=n[0],d[5]=n[1],i.mul(h,t,d),h[4]-=n[0],h[5]-=n[1],t=h),this.setLocalTransform(t)}},u.getGlobalScale=function(e){var t=this.transform;return e=e||[],t?(e[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),e[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(e[0]=-e[0]),t[3]<0&&(e[1]=-e[1]),e):(e[0]=1,e[1]=1,e)},u.transformCoordToLocal=function(e,t){var n=[e,t],i=this.invTransform;return i&&r.applyTransform(n,n,i),n},u.transformCoordToGlobal=function(e,t){var n=[e,t],i=this.transform;return i&&r.applyTransform(n,n,i),n},l.getLocalTransform=function(e,t){o(t=t||[]);var n=e.origin,r=e.scale||[1,1],a=e.rotation||0,s=e.position||[0,0];return n&&(t[4]-=n[0],t[5]-=n[1]),i.scale(t,t,r),a&&i.rotate(t,t,a),n&&(t[4]+=n[0],t[5]+=n[1]),t[4]+=s[0],t[5]+=s[1],t};var f=l;e.exports=f},\"/bQp\":function(e,t){e.exports={}},\"/gZK\":function(e,t,n){var i=n(\"hcq/\"),r=n(\"Rfu2\"),o=n(\"/gxq\"),a=o.extend,s=o.isArray;e.exports=function(e,t,n){t=s(t)&&{coordDimensions:t}||a({},t);var o=e.getSource(),l=i(o,t),u=new r(l,e);return u.initData(o,n),u}},\"/gxq\":function(e,t){var n={\"[object Function]\":1,\"[object RegExp]\":1,\"[object Date]\":1,\"[object Error]\":1,\"[object CanvasGradient]\":1,\"[object CanvasPattern]\":1,\"[object Image]\":1,\"[object Canvas]\":1},i={\"[object Int8Array]\":1,\"[object Uint8Array]\":1,\"[object Uint8ClampedArray]\":1,\"[object Int16Array]\":1,\"[object Uint16Array]\":1,\"[object Int32Array]\":1,\"[object Uint32Array]\":1,\"[object Float32Array]\":1,\"[object Float64Array]\":1},r=Object.prototype.toString,o=Array.prototype,a=o.forEach,s=o.filter,l=o.slice,u=o.map,c=o.reduce,h={};function d(e){if(null==e||\"object\"!=typeof e)return e;var t=e,o=r.call(e);if(\"[object Array]\"===o){if(!S(e)){t=[];for(var a=0,s=e.length;a<s;a++)t[a]=d(e[a])}}else if(i[o]){if(!S(e)){var l=e.constructor;if(e.constructor.from)t=l.from(e);else{t=new l(e.length);for(a=0,s=e.length;a<s;a++)t[a]=d(e[a])}}}else if(!n[o]&&!S(e)&&!w(e))for(var u in t={},e)e.hasOwnProperty(u)&&(t[u]=d(e[u]));return t}function f(e,t,n){if(!x(t)||!x(e))return n?d(t):e;for(var i in t)if(t.hasOwnProperty(i)){var r=e[i],o=t[i];!x(o)||!x(r)||b(o)||b(r)||w(o)||w(r)||_(o)||_(r)||S(o)||S(r)?!n&&i in e||(e[i]=d(t[i])):f(r,o,n)}return e}function p(e,t,n){for(var i in t)t.hasOwnProperty(i)&&(n?null!=t[i]:null==e[i])&&(e[i]=t[i]);return e}var g,m=function(){return h.createCanvas()};function v(e,t,n){if(e&&t)if(e.forEach&&e.forEach===a)e.forEach(t,n);else if(e.length===+e.length)for(var i=0,r=e.length;i<r;i++)t.call(n,e[i],i,e);else for(var o in e)e.hasOwnProperty(o)&&t.call(n,e[o],o,e)}function y(e,t){var n=l.call(arguments,2);return function(){return e.apply(t,n.concat(l.call(arguments)))}}function b(e){return\"[object Array]\"===r.call(e)}function x(e){var t=typeof e;return\"function\"===t||!!e&&\"object\"===t}function _(e){return!!n[r.call(e)]}function w(e){return\"object\"==typeof e&&\"number\"==typeof e.nodeType&&\"object\"==typeof e.ownerDocument}h.createCanvas=function(){return document.createElement(\"canvas\")};var C=\"__ec_primitive__\";function S(e){return e[C]}function k(e){var t=b(e);this.data={};var n=this;function i(e,i){t?n.set(e,i):n.set(i,e)}e instanceof k?e.each(i):e&&v(e,i)}k.prototype={constructor:k,get:function(e){return this.data.hasOwnProperty(e)?this.data[e]:null},set:function(e,t){return this.data[e]=t},each:function(e,t){for(var n in void 0!==t&&(e=y(e,t)),this.data)this.data.hasOwnProperty(n)&&e(this.data[n],n)},removeKey:function(e){delete this.data[e]}},t.$override=function(e,t){\"createCanvas\"===e&&(g=null),h[e]=t},t.clone=d,t.merge=f,t.mergeAll=function(e,t){for(var n=e[0],i=1,r=e.length;i<r;i++)n=f(n,e[i],t);return n},t.extend=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t.defaults=p,t.createCanvas=m,t.getContext=function(){return g||(g=m().getContext(\"2d\")),g},t.indexOf=function(e,t){if(e){if(e.indexOf)return e.indexOf(t);for(var n=0,i=e.length;n<i;n++)if(e[n]===t)return n}return-1},t.inherits=function(e,t){var n=e.prototype;function i(){}for(var r in i.prototype=t.prototype,e.prototype=new i,n)n.hasOwnProperty(r)&&(e.prototype[r]=n[r]);e.prototype.constructor=e,e.superClass=t},t.mixin=function(e,t,n){p(e=\"prototype\"in e?e.prototype:e,t=\"prototype\"in t?t.prototype:t,n)},t.isArrayLike=function(e){if(e)return\"string\"!=typeof e&&\"number\"==typeof e.length},t.each=v,t.map=function(e,t,n){if(e&&t){if(e.map&&e.map===u)return e.map(t,n);for(var i=[],r=0,o=e.length;r<o;r++)i.push(t.call(n,e[r],r,e));return i}},t.reduce=function(e,t,n,i){if(e&&t){if(e.reduce&&e.reduce===c)return e.reduce(t,n,i);for(var r=0,o=e.length;r<o;r++)n=t.call(i,n,e[r],r,e);return n}},t.filter=function(e,t,n){if(e&&t){if(e.filter&&e.filter===s)return e.filter(t,n);for(var i=[],r=0,o=e.length;r<o;r++)t.call(n,e[r],r,e)&&i.push(e[r]);return i}},t.find=function(e,t,n){if(e&&t)for(var i=0,r=e.length;i<r;i++)if(t.call(n,e[i],i,e))return e[i]},t.bind=y,t.curry=function(e){var t=l.call(arguments,1);return function(){return e.apply(this,t.concat(l.call(arguments)))}},t.isArray=b,t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"[object String]\"===r.call(e)},t.isObject=x,t.isBuiltInObject=_,t.isTypedArray=function(e){return!!i[r.call(e)]},t.isDom=w,t.eqNaN=function(e){return e!=e},t.retrieve=function(e){for(var t=0,n=arguments.length;t<n;t++)if(null!=arguments[t])return arguments[t]},t.retrieve2=function(e,t){return null!=e?e:t},t.retrieve3=function(e,t,n){return null!=e?e:null!=t?t:n},t.slice=function(){return Function.call.apply(l,arguments)},t.normalizeCssArray=function(e){if(\"number\"==typeof e)return[e,e,e,e];var t=e.length;return 2===t?[e[0],e[1],e[0],e[1]]:3===t?[e[0],e[1],e[2],e[1]]:e},t.assert=function(e,t){if(!e)throw new Error(t)},t.trim=function(e){return null==e?null:\"function\"==typeof e.trim?e.trim():e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\")},t.setAsPrimitive=function(e){e[C]=!0},t.isPrimitive=S,t.createHashMap=function(e){return new k(e)},t.concatArray=function(e,t){for(var n=new e.constructor(e.length+t.length),i=0;i<e.length;i++)n[i]=e[i];var r=e.length;for(i=0;i<t.length;i++)n[i+r]=t[i];return n},t.noop=function(){}},\"/n1K\":function(e,t,n){var i=n(\"/gxq\"),r=i.createHashMap,o=i.each,a=i.isString,s=i.defaults,l=i.extend,u=i.isObject,c=i.clone,h=n(\"vXqC\").normalizeToArray,d=n(\"kdOt\"),f=d.guessOrdinal,p=d.BE_ORDINAL,g=n(\"rrAD\"),m=n(\"mvCM\").OTHER_DIMENSIONS,v=n(\"1DJE\");function y(e,t,n){if(n||null!=t.get(e)){for(var i=0;null!=t.get(e+i);)i++;e+=i}return t.set(e,!0),e}var b=function(e,t,n){g.isInstance(t)||(t=g.seriesDataToSource(t)),n=n||{},e=(e||[]).slice();for(var i=(n.dimsDef||[]).slice(),d=r(),b=r(),x=[],_=function(e,t,n,i){var r=Math.max(e.dimensionsDetectCount||1,t.length,n.length,i||0);return o(t,function(e){var t=e.dimsDef;t&&(r=Math.max(r,t.length))}),r}(t,e,i,n.dimCount),w=0;w<_;w++){var C=i[w]=l({},u(i[w])?i[w]:{name:i[w]}),S=C.name,k=x[w]=new v;null!=S&&null==d.get(S)&&(k.name=k.displayName=S,d.set(S,w)),null!=C.type&&(k.type=C.type),null!=C.displayName&&(k.displayName=C.displayName)}var T=n.encodeDef;!T&&n.encodeDefaulter&&(T=n.encodeDefaulter(t,_)),(T=r(T)).each(function(e,t){if(1===(e=h(e).slice()).length&&!a(e[0])&&e[0]<0)T.set(t,!1);else{var n=T.set(t,[]);o(e,function(e,i){a(e)&&(e=d.get(e)),null!=e&&e<_&&(n[i]=e,D(x[e],t,i))})}});var M=0;function D(e,t,n){null!=m.get(t)?e.otherDims[t]=n:(e.coordDim=t,e.coordDimIndex=n,b.set(t,!0))}o(e,function(e,t){var n,i,r;if(a(e))n=e,e={};else{n=e.name;var l=e.ordinalMeta;e.ordinalMeta=null,(e=c(e)).ordinalMeta=l,i=e.dimsDef,r=e.otherDims,e.name=e.coordDim=e.coordDimIndex=e.dimsDef=e.otherDims=null}if(!1!==(d=T.get(n))){var d;if(!(d=h(d)).length)for(var f=0;f<(i&&i.length||1);f++){for(;M<x.length&&null!=x[M].coordDim;)M++;M<x.length&&d.push(M++)}o(d,function(t,o){var a=x[t];if(D(s(a,e),n,o),null==a.name&&i){var l=i[o];!u(l)&&(l={name:l}),a.name=a.displayName=l.name,a.defaultTooltip=l.defaultTooltip}r&&s(a.otherDims,r)})}});var A=n.generateCoord,I=n.generateCoordCount,O=null!=I;I=A?I||1:0;for(var E=A||\"value\",L=0;L<_;L++)null==(k=x[L]=x[L]||new v).coordDim&&(k.coordDim=y(E,b,O),k.coordDimIndex=0,(!A||I<=0)&&(k.isExtraCoord=!0),I--),null==k.name&&(k.name=y(k.coordDim,d)),null!=k.type||f(t,L,k.name)!==p.Must&&(!k.isExtraCoord||null==k.otherDims.itemName&&null==k.otherDims.seriesName)||(k.type=\"ordinal\");return x};e.exports=b},\"/n6Q\":function(e,t,n){n(\"zQR9\"),n(\"+tPU\"),e.exports=n(\"Kh4W\").f(\"iterator\")},\"/ocq\":function(e,t,n){\"use strict\";\n/*!\n  * vue-router v3.3.4\n  * (c) 2020 Evan You\n  * @license MIT\n  */function i(e,t){0}function r(e){return Object.prototype.toString.call(e).indexOf(\"Error\")>-1}function o(e,t){return r(e)&&e._isRouter&&(null==t||e.type===t)}function a(e,t){for(var n in t)e[n]=t[n];return e}var s={name:\"RouterView\",functional:!0,props:{name:{type:String,default:\"default\"}},render:function(e,t){var n=t.props,i=t.children,r=t.parent,o=t.data;o.routerView=!0;for(var s=r.$createElement,u=n.name,c=r.$route,h=r._routerViewCache||(r._routerViewCache={}),d=0,f=!1;r&&r._routerRoot!==r;){var p=r.$vnode?r.$vnode.data:{};p.routerView&&d++,p.keepAlive&&r._directInactive&&r._inactive&&(f=!0),r=r.$parent}if(o.routerViewDepth=d,f){var g=h[u],m=g&&g.component;return m?(g.configProps&&l(m,o,g.route,g.configProps),s(m,o,i)):s()}var v=c.matched[d],y=v&&v.components[u];if(!v||!y)return h[u]=null,s();h[u]={component:y},o.registerRouteInstance=function(e,t){var n=v.instances[u];(t&&n!==e||!t&&n===e)&&(v.instances[u]=t)},(o.hook||(o.hook={})).prepatch=function(e,t){v.instances[u]=t.componentInstance},o.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==v.instances[u]&&(v.instances[u]=e.componentInstance)};var b=v.props&&v.props[u];return b&&(a(h[u],{route:c,configProps:b}),l(y,o,c,b)),s(y,o,i)}};function l(e,t,n,i){var r=t.props=function(e,t){switch(typeof t){case\"undefined\":return;case\"object\":return t;case\"function\":return t(e);case\"boolean\":return t?e.params:void 0;default:0}}(n,i);if(r){r=t.props=a({},r);var o=t.attrs=t.attrs||{};for(var s in r)e.props&&s in e.props||(o[s]=r[s],delete r[s])}}var u=/[!'()*]/g,c=function(e){return\"%\"+e.charCodeAt(0).toString(16)},h=/%2C/g,d=function(e){return encodeURIComponent(e).replace(u,c).replace(h,\",\")},f=decodeURIComponent;function p(e){var t={};return(e=e.trim().replace(/^(\\?|#|&)/,\"\"))?(e.split(\"&\").forEach(function(e){var n=e.replace(/\\+/g,\" \").split(\"=\"),i=f(n.shift()),r=n.length>0?f(n.join(\"=\")):null;void 0===t[i]?t[i]=r:Array.isArray(t[i])?t[i].push(r):t[i]=[t[i],r]}),t):t}function g(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void 0===n)return\"\";if(null===n)return d(t);if(Array.isArray(n)){var i=[];return n.forEach(function(e){void 0!==e&&(null===e?i.push(d(t)):i.push(d(t)+\"=\"+d(e)))}),i.join(\"&\")}return d(t)+\"=\"+d(n)}).filter(function(e){return e.length>0}).join(\"&\"):null;return t?\"?\"+t:\"\"}var m=/\\/?$/;function v(e,t,n,i){var r=i&&i.options.stringifyQuery,o=t.query||{};try{o=y(o)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||\"/\",hash:t.hash||\"\",query:o,params:t.params||{},fullPath:x(t,r),matched:e?function(e){var t=[];for(;e;)t.unshift(e),e=e.parent;return t}(e):[]};return n&&(a.redirectedFrom=x(n,r)),Object.freeze(a)}function y(e){if(Array.isArray(e))return e.map(y);if(e&&\"object\"==typeof e){var t={};for(var n in e)t[n]=y(e[n]);return t}return e}var b=v(null,{path:\"/\"});function x(e,t){var n=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;return void 0===r&&(r=\"\"),(n||\"/\")+(t||g)(i)+r}function _(e,t){return t===b?e===t:!!t&&(e.path&&t.path?e.path.replace(m,\"\")===t.path.replace(m,\"\")&&e.hash===t.hash&&w(e.query,t.query):!(!e.name||!t.name)&&(e.name===t.name&&e.hash===t.hash&&w(e.query,t.query)&&w(e.params,t.params)))}function w(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e),i=Object.keys(t);return n.length===i.length&&n.every(function(n){var i=e[n],r=t[n];return\"object\"==typeof i&&\"object\"==typeof r?w(i,r):String(i)===String(r)})}function C(e,t,n){var i=e.charAt(0);if(\"/\"===i)return e;if(\"?\"===i||\"#\"===i)return t+e;var r=t.split(\"/\");n&&r[r.length-1]||r.pop();for(var o=e.replace(/^\\//,\"\").split(\"/\"),a=0;a<o.length;a++){var s=o[a];\"..\"===s?r.pop():\".\"!==s&&r.push(s)}return\"\"!==r[0]&&r.unshift(\"\"),r.join(\"/\")}function S(e){return e.replace(/\\/\\//g,\"/\")}var k=Array.isArray||function(e){return\"[object Array]\"==Object.prototype.toString.call(e)},T=$,M=E,D=function(e,t){return P(E(e,t),t)},A=P,I=F,O=new RegExp([\"(\\\\\\\\.)\",\"([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))\"].join(\"|\"),\"g\");function E(e,t){for(var n,i=[],r=0,o=0,a=\"\",s=t&&t.delimiter||\"/\";null!=(n=O.exec(e));){var l=n[0],u=n[1],c=n.index;if(a+=e.slice(o,c),o=c+l.length,u)a+=u[1];else{var h=e[o],d=n[2],f=n[3],p=n[4],g=n[5],m=n[6],v=n[7];a&&(i.push(a),a=\"\");var y=null!=d&&null!=h&&h!==d,b=\"+\"===m||\"*\"===m,x=\"?\"===m||\"*\"===m,_=n[2]||s,w=p||g;i.push({name:f||r++,prefix:d||\"\",delimiter:_,optional:x,repeat:b,partial:y,asterisk:!!v,pattern:w?R(w):v?\".*\":\"[^\"+N(_)+\"]+?\"})}}return o<e.length&&(a+=e.substr(o)),a&&i.push(a),i}function L(e){return encodeURI(e).replace(/[\\/?#]/g,function(e){return\"%\"+e.charCodeAt(0).toString(16).toUpperCase()})}function P(e,t){for(var n=new Array(e.length),i=0;i<e.length;i++)\"object\"==typeof e[i]&&(n[i]=new RegExp(\"^(?:\"+e[i].pattern+\")$\",z(t)));return function(t,i){for(var r=\"\",o=t||{},a=(i||{}).pretty?L:encodeURIComponent,s=0;s<e.length;s++){var l=e[s];if(\"string\"!=typeof l){var u,c=o[l.name];if(null==c){if(l.optional){l.partial&&(r+=l.prefix);continue}throw new TypeError('Expected \"'+l.name+'\" to be defined')}if(k(c)){if(!l.repeat)throw new TypeError('Expected \"'+l.name+'\" to not repeat, but received `'+JSON.stringify(c)+\"`\");if(0===c.length){if(l.optional)continue;throw new TypeError('Expected \"'+l.name+'\" to not be empty')}for(var h=0;h<c.length;h++){if(u=a(c[h]),!n[s].test(u))throw new TypeError('Expected all \"'+l.name+'\" to match \"'+l.pattern+'\", but received `'+JSON.stringify(u)+\"`\");r+=(0===h?l.prefix:l.delimiter)+u}}else{if(u=l.asterisk?encodeURI(c).replace(/[?#]/g,function(e){return\"%\"+e.charCodeAt(0).toString(16).toUpperCase()}):a(c),!n[s].test(u))throw new TypeError('Expected \"'+l.name+'\" to match \"'+l.pattern+'\", but received \"'+u+'\"');r+=l.prefix+u}}else r+=l}return r}}function N(e){return e.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g,\"\\\\$1\")}function R(e){return e.replace(/([=!:$\\/()])/g,\"\\\\$1\")}function B(e,t){return e.keys=t,e}function z(e){return e&&e.sensitive?\"\":\"i\"}function F(e,t,n){k(t)||(n=t||n,t=[]);for(var i=(n=n||{}).strict,r=!1!==n.end,o=\"\",a=0;a<e.length;a++){var s=e[a];if(\"string\"==typeof s)o+=N(s);else{var l=N(s.prefix),u=\"(?:\"+s.pattern+\")\";t.push(s),s.repeat&&(u+=\"(?:\"+l+u+\")*\"),o+=u=s.optional?s.partial?l+\"(\"+u+\")?\":\"(?:\"+l+\"(\"+u+\"))?\":l+\"(\"+u+\")\"}}var c=N(n.delimiter||\"/\"),h=o.slice(-c.length)===c;return i||(o=(h?o.slice(0,-c.length):o)+\"(?:\"+c+\"(?=$))?\"),o+=r?\"$\":i&&h?\"\":\"(?=\"+c+\"|$)\",B(new RegExp(\"^\"+o,z(n)),t)}function $(e,t,n){return k(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\\((?!\\?)/g);if(n)for(var i=0;i<n.length;i++)t.push({name:i,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return B(e,t)}(e,t):k(e)?function(e,t,n){for(var i=[],r=0;r<e.length;r++)i.push($(e[r],t,n).source);return B(new RegExp(\"(?:\"+i.join(\"|\")+\")\",z(n)),t)}(e,t,n):function(e,t,n){return F(E(e,n),t,n)}(e,t,n)}T.parse=M,T.compile=D,T.tokensToFunction=A,T.tokensToRegExp=I;var V=Object.create(null);function j(e,t,n){t=t||{};try{var i=V[e]||(V[e]=T.compile(e));return\"string\"==typeof t.pathMatch&&(t[0]=t.pathMatch),i(t,{pretty:!0})}catch(e){return\"\"}finally{delete t[0]}}function H(e,t,n,i){var r=\"string\"==typeof e?{path:e}:e;if(r._normalized)return r;if(r.name){var o=(r=a({},e)).params;return o&&\"object\"==typeof o&&(r.params=a({},o)),r}if(!r.path&&r.params&&t){(r=a({},r))._normalized=!0;var s=a(a({},t.params),r.params);if(t.name)r.name=t.name,r.params=s;else if(t.matched.length){var l=t.matched[t.matched.length-1].path;r.path=j(l,s,t.path)}else 0;return r}var u=function(e){var t=\"\",n=\"\",i=e.indexOf(\"#\");i>=0&&(t=e.slice(i),e=e.slice(0,i));var r=e.indexOf(\"?\");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{path:e,query:n,hash:t}}(r.path||\"\"),c=t&&t.path||\"/\",h=u.path?C(u.path,c,n||r.append):c,d=function(e,t,n){void 0===t&&(t={});var i,r=n||p;try{i=r(e||\"\")}catch(e){i={}}for(var o in t)i[o]=t[o];return i}(u.query,r.query,i&&i.options.parseQuery),f=r.hash||u.hash;return f&&\"#\"!==f.charAt(0)&&(f=\"#\"+f),{_normalized:!0,path:h,query:d,hash:f}}var W,q=[String,Object],G=[String,Array],U=function(){},Y={name:\"RouterLink\",props:{to:{type:q,required:!0},tag:{type:String,default:\"a\"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:\"page\"},event:{type:G,default:\"click\"}},render:function(e){var t=this,n=this.$router,i=this.$route,r=n.resolve(this.to,i,this.append),o=r.location,s=r.route,l=r.href,u={},c=n.options.linkActiveClass,h=n.options.linkExactActiveClass,d=null==c?\"router-link-active\":c,f=null==h?\"router-link-exact-active\":h,p=null==this.activeClass?d:this.activeClass,g=null==this.exactActiveClass?f:this.exactActiveClass,y=s.redirectedFrom?v(null,H(s.redirectedFrom),null,n):s;u[g]=_(i,y),u[p]=this.exact?u[g]:function(e,t){return 0===e.path.replace(m,\"/\").indexOf(t.path.replace(m,\"/\"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(i,y);var b=u[g]?this.ariaCurrentValue:null,x=function(e){X(e)&&(t.replace?n.replace(o,U):n.push(o,U))},w={click:X};Array.isArray(this.event)?this.event.forEach(function(e){w[e]=x}):w[this.event]=x;var C={class:u},S=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:s,navigate:x,isActive:u[p],isExactActive:u[g]});if(S){if(1===S.length)return S[0];if(S.length>1||!S.length)return 0===S.length?e():e(\"span\",{},S)}if(\"a\"===this.tag)C.on=w,C.attrs={href:l,\"aria-current\":b};else{var k=function e(t){if(t)for(var n,i=0;i<t.length;i++){if(\"a\"===(n=t[i]).tag)return n;if(n.children&&(n=e(n.children)))return n}}(this.$slots.default);if(k){k.isStatic=!1;var T=k.data=a({},k.data);for(var M in T.on=T.on||{},T.on){var D=T.on[M];M in w&&(T.on[M]=Array.isArray(D)?D:[D])}for(var A in w)A in T.on?T.on[A].push(w[A]):T.on[A]=x;var I=k.data.attrs=a({},k.data.attrs);I.href=l,I[\"aria-current\"]=b}else C.on=w}return e(this.tag,C,this.$slots.default)}};function X(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){var t=e.currentTarget.getAttribute(\"target\");if(/\\b_blank\\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function K(e){if(!K.installed||W!==e){K.installed=!0,W=e;var t=function(e){return void 0!==e},n=function(e,n){var i=e.$options._parentVnode;t(i)&&t(i=i.data)&&t(i=i.registerRouteInstance)&&i(e,n)};e.mixin({beforeCreate:function(){t(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,\"_route\",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,\"$router\",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,\"$route\",{get:function(){return this._routerRoot._route}}),e.component(\"RouterView\",s),e.component(\"RouterLink\",Y);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}}var Z=\"undefined\"!=typeof window;function J(e,t,n,i){var r=t||[],o=n||Object.create(null),a=i||Object.create(null);e.forEach(function(e){!function e(t,n,i,r,o,a){var s=r.path;var l=r.name;0;var u=r.pathToRegexpOptions||{};var c=function(e,t,n){n||(e=e.replace(/\\/$/,\"\"));if(\"/\"===e[0])return e;if(null==t)return e;return S(t.path+\"/\"+e)}(s,o,u.strict);\"boolean\"==typeof r.caseSensitive&&(u.sensitive=r.caseSensitive);var h={path:c,regex:function(e,t){var n=T(e,[],t);return n}(c,u),components:r.components||{default:r.component},instances:{},name:l,parent:o,matchAs:a,redirect:r.redirect,beforeEnter:r.beforeEnter,meta:r.meta||{},props:null==r.props?{}:r.components?r.props:{default:r.props}};r.children&&r.children.forEach(function(r){var o=a?S(a+\"/\"+r.path):void 0;e(t,n,i,r,h,o)});n[h.path]||(t.push(h.path),n[h.path]=h);if(void 0!==r.alias)for(var d=Array.isArray(r.alias)?r.alias:[r.alias],f=0;f<d.length;++f){var p=d[f];0;var g={path:p,children:r.children};e(t,n,i,g,o,h.path||\"/\")}l&&(i[l]||(i[l]=h))}(r,o,a,e)});for(var s=0,l=r.length;s<l;s++)\"*\"===r[s]&&(r.push(r.splice(s,1)[0]),l--,s--);return{pathList:r,pathMap:o,nameMap:a}}function Q(e,t){var n=J(e),i=n.pathList,r=n.pathMap,o=n.nameMap;function a(e,n,a){var s=H(e,n,!1,t),u=s.name;if(u){var c=o[u];if(!c)return l(null,s);var h=c.regex.keys.filter(function(e){return!e.optional}).map(function(e){return e.name});if(\"object\"!=typeof s.params&&(s.params={}),n&&\"object\"==typeof n.params)for(var d in n.params)!(d in s.params)&&h.indexOf(d)>-1&&(s.params[d]=n.params[d]);return s.path=j(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var f=0;f<i.length;f++){var p=i[f],g=r[p];if(ee(g.regex,s.path,s.params))return l(g,s,a)}}return l(null,s)}function s(e,n){var i=e.redirect,r=\"function\"==typeof i?i(v(e,n,null,t)):i;if(\"string\"==typeof r&&(r={path:r}),!r||\"object\"!=typeof r)return l(null,n);var s=r,u=s.name,c=s.path,h=n.query,d=n.hash,f=n.params;if(h=s.hasOwnProperty(\"query\")?s.query:h,d=s.hasOwnProperty(\"hash\")?s.hash:d,f=s.hasOwnProperty(\"params\")?s.params:f,u){o[u];return a({_normalized:!0,name:u,query:h,hash:d,params:f},void 0,n)}if(c){var p=function(e,t){return C(e,t.parent?t.parent.path:\"/\",!0)}(c,e);return a({_normalized:!0,path:j(p,f),query:h,hash:d},void 0,n)}return l(null,n)}function l(e,n,i){return e&&e.redirect?s(e,i||n):e&&e.matchAs?function(e,t,n){var i=a({_normalized:!0,path:j(n,t.params)});if(i){var r=i.matched,o=r[r.length-1];return t.params=i.params,l(o,t)}return l(null,t)}(0,n,e.matchAs):v(e,n,i,t)}return{match:a,addRoutes:function(e){J(e,i,r,o)}}}function ee(e,t,n){var i=t.match(e);if(!i)return!1;if(!n)return!0;for(var r=1,o=i.length;r<o;++r){var a=e.keys[r-1],s=\"string\"==typeof i[r]?decodeURIComponent(i[r]):i[r];a&&(n[a.name||\"pathMatch\"]=s)}return!0}var te=Z&&window.performance&&window.performance.now?window.performance:Date;function ne(){return te.now().toFixed(3)}var ie=ne();function re(){return ie}function oe(e){return ie=e}var ae=Object.create(null);function se(){\"scrollRestoration\"in window.history&&(window.history.scrollRestoration=\"manual\");var e=window.location.protocol+\"//\"+window.location.host,t=window.location.href.replace(e,\"\"),n=a({},window.history.state);return n.key=re(),window.history.replaceState(n,\"\",t),window.addEventListener(\"popstate\",ce),function(){window.removeEventListener(\"popstate\",ce)}}function le(e,t,n,i){if(e.app){var r=e.options.scrollBehavior;r&&e.app.$nextTick(function(){var o=function(){var e=re();if(e)return ae[e]}(),a=r.call(e,t,n,i?o:null);a&&(\"function\"==typeof a.then?a.then(function(e){ge(e,o)}).catch(function(e){0}):ge(a,o))})}}function ue(){var e=re();e&&(ae[e]={x:window.pageXOffset,y:window.pageYOffset})}function ce(e){ue(),e.state&&e.state.key&&oe(e.state.key)}function he(e){return fe(e.x)||fe(e.y)}function de(e){return{x:fe(e.x)?e.x:window.pageXOffset,y:fe(e.y)?e.y:window.pageYOffset}}function fe(e){return\"number\"==typeof e}var pe=/^#\\d/;function ge(e,t){var n,i=\"object\"==typeof e;if(i&&\"string\"==typeof e.selector){var r=pe.test(e.selector)?document.getElementById(e.selector.slice(1)):document.querySelector(e.selector);if(r){var o=e.offset&&\"object\"==typeof e.offset?e.offset:{};t=function(e,t){var n=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{x:i.left-n.left-t.x,y:i.top-n.top-t.y}}(r,o={x:fe((n=o).x)?n.x:0,y:fe(n.y)?n.y:0})}else he(e)&&(t=de(e))}else i&&he(e)&&(t=de(e));t&&window.scrollTo(t.x,t.y)}var me,ve=Z&&((-1===(me=window.navigator.userAgent).indexOf(\"Android 2.\")&&-1===me.indexOf(\"Android 4.0\")||-1===me.indexOf(\"Mobile Safari\")||-1!==me.indexOf(\"Chrome\")||-1!==me.indexOf(\"Windows Phone\"))&&window.history&&\"function\"==typeof window.history.pushState);function ye(e,t){ue();var n=window.history;try{if(t){var i=a({},n.state);i.key=re(),n.replaceState(i,\"\",e)}else n.pushState({key:oe(ne())},\"\",e)}catch(n){window.location[t?\"replace\":\"assign\"](e)}}function be(e){ye(e,!0)}function xe(e,t,n){var i=function(r){r>=e.length?n():e[r]?t(e[r],function(){i(r+1)}):i(r+1)};i(0)}function _e(e){return function(t,n,i){var o=!1,a=0,s=null;we(e,function(e,t,n,l){if(\"function\"==typeof e&&void 0===e.cid){o=!0,a++;var u,c=ke(function(t){var r;((r=t).__esModule||Se&&\"Module\"===r[Symbol.toStringTag])&&(t=t.default),e.resolved=\"function\"==typeof t?t:W.extend(t),n.components[l]=t,--a<=0&&i()}),h=ke(function(e){var t=\"Failed to resolve async component \"+l+\": \"+e;s||(s=r(e)?e:new Error(t),i(s))});try{u=e(c,h)}catch(e){h(e)}if(u)if(\"function\"==typeof u.then)u.then(c,h);else{var d=u.component;d&&\"function\"==typeof d.then&&d.then(c,h)}}}),o||i()}}function we(e,t){return Ce(e.map(function(e){return Object.keys(e.components).map(function(n){return t(e.components[n],e.instances[n],e,n)})}))}function Ce(e){return Array.prototype.concat.apply([],e)}var Se=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.toStringTag;function ke(e){var t=!1;return function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(!t)return t=!0,e.apply(this,n)}}var Te={redirected:1,aborted:2,cancelled:3,duplicated:4};function Me(e,t){return Ae(e,t,Te.redirected,'Redirected when going from \"'+e.fullPath+'\" to \"'+function(e){if(\"string\"==typeof e)return e;if(\"path\"in e)return e.path;var t={};return Ie.forEach(function(n){n in e&&(t[n]=e[n])}),JSON.stringify(t,null,2)}(t)+'\" via a navigation guard.')}function De(e,t){return Ae(e,t,Te.cancelled,'Navigation cancelled from \"'+e.fullPath+'\" to \"'+t.fullPath+'\" with a new navigation.')}function Ae(e,t,n,i){var r=new Error(i);return r._isRouter=!0,r.from=e,r.to=t,r.type=n,r}var Ie=[\"params\",\"query\",\"hash\"];var Oe=function(e,t){this.router=e,this.base=function(e){if(!e)if(Z){var t=document.querySelector(\"base\");e=(e=t&&t.getAttribute(\"href\")||\"/\").replace(/^https?:\\/\\/[^\\/]+/,\"\")}else e=\"/\";\"/\"!==e.charAt(0)&&(e=\"/\"+e);return e.replace(/\\/$/,\"\")}(t),this.current=b,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ee(e,t,n,i){var r=we(e,function(e,i,r,o){var a=function(e,t){\"function\"!=typeof e&&(e=W.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map(function(e){return n(e,i,r,o)}):n(a,i,r,o)});return Ce(i?r.reverse():r)}function Le(e,t){if(t)return function(){return e.apply(t,arguments)}}Oe.prototype.listen=function(e){this.cb=e},Oe.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Oe.prototype.onError=function(e){this.errorCbs.push(e)},Oe.prototype.transitionTo=function(e,t,n){var i=this,r=this.router.match(e,this.current);this.confirmTransition(r,function(){var e=i.current;i.updateRoute(r),t&&t(r),i.ensureURL(),i.router.afterHooks.forEach(function(t){t&&t(r,e)}),i.ready||(i.ready=!0,i.readyCbs.forEach(function(e){e(r)}))},function(e){n&&n(e),e&&!i.ready&&(i.ready=!0,o(e,Te.redirected)?i.readyCbs.forEach(function(e){e(r)}):i.readyErrorCbs.forEach(function(t){t(e)}))})},Oe.prototype.confirmTransition=function(e,t,n){var a,s=this,l=this.current,u=function(e){!o(e)&&r(e)&&(s.errorCbs.length?s.errorCbs.forEach(function(t){t(e)}):(i(),console.error(e))),n&&n(e)},c=e.matched.length-1,h=l.matched.length-1;if(_(e,l)&&c===h&&e.matched[c]===l.matched[h])return this.ensureURL(),u(Ae(a=l,e,Te.duplicated,'Avoided redundant navigation to current location: \"'+a.fullPath+'\".'));var d=function(e,t){var n,i=Math.max(e.length,t.length);for(n=0;n<i&&e[n]===t[n];n++);return{updated:t.slice(0,n),activated:t.slice(n),deactivated:e.slice(n)}}(this.current.matched,e.matched),f=d.updated,p=d.deactivated,g=d.activated,m=[].concat(function(e){return Ee(e,\"beforeRouteLeave\",Le,!0)}(p),this.router.beforeHooks,function(e){return Ee(e,\"beforeRouteUpdate\",Le)}(f),g.map(function(e){return e.beforeEnter}),_e(g));this.pending=e;var v=function(t,n){if(s.pending!==e)return u(De(l,e));try{t(e,l,function(t){!1===t?(s.ensureURL(!0),u(function(e,t){return Ae(e,t,Te.aborted,'Navigation aborted from \"'+e.fullPath+'\" to \"'+t.fullPath+'\" via a navigation guard.')}(l,e))):r(t)?(s.ensureURL(!0),u(t)):\"string\"==typeof t||\"object\"==typeof t&&(\"string\"==typeof t.path||\"string\"==typeof t.name)?(u(Me(l,e)),\"object\"==typeof t&&t.replace?s.replace(t):s.push(t)):n(t)})}catch(e){u(e)}};xe(m,v,function(){var n=[];xe(function(e,t,n){return Ee(e,\"beforeRouteEnter\",function(e,i,r,o){return function(e,t,n,i,r){return function(o,a,s){return e(o,a,function(e){\"function\"==typeof e&&i.push(function(){!function e(t,n,i,r){n[i]&&!n[i]._isBeingDestroyed?t(n[i]):r()&&setTimeout(function(){e(t,n,i,r)},16)}(e,t.instances,n,r)}),s(e)})}}(e,r,o,t,n)})}(g,n,function(){return s.current===e}).concat(s.router.resolveHooks),v,function(){if(s.pending!==e)return u(De(l,e));s.pending=null,t(e),s.router.app&&s.router.app.$nextTick(function(){n.forEach(function(e){e()})})})})},Oe.prototype.updateRoute=function(e){this.current=e,this.cb&&this.cb(e)},Oe.prototype.setupListeners=function(){},Oe.prototype.teardownListeners=function(){this.listeners.forEach(function(e){e()}),this.listeners=[]};var Pe=function(e){function t(t,n){e.call(this,t,n),this._startLocation=Ne(this.base)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,n=t.options.scrollBehavior,i=ve&&n;i&&this.listeners.push(se());var r=function(){var n=e.current,r=Ne(e.base);e.current===b&&r===e._startLocation||e.transitionTo(r,function(e){i&&le(t,e,n,!0)})};window.addEventListener(\"popstate\",r),this.listeners.push(function(){window.removeEventListener(\"popstate\",r)})}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,function(e){ye(S(i.base+e.fullPath)),le(i.router,e,r,!1),t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,function(e){be(S(i.base+e.fullPath)),le(i.router,e,r,!1),t&&t(e)},n)},t.prototype.ensureURL=function(e){if(Ne(this.base)!==this.current.fullPath){var t=S(this.base+this.current.fullPath);e?ye(t):be(t)}},t.prototype.getCurrentLocation=function(){return Ne(this.base)},t}(Oe);function Ne(e){var t=decodeURI(window.location.pathname);return e&&0===t.toLowerCase().indexOf(e.toLowerCase())&&(t=t.slice(e.length)),(t||\"/\")+window.location.search+window.location.hash}var Re=function(e){function t(t,n,i){e.call(this,t,n),i&&function(e){var t=Ne(e);if(!/^\\/#/.test(t))return window.location.replace(S(e+\"/#\"+t)),!0}(this.base)||Be()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=ve&&t;n&&this.listeners.push(se());var i=function(){var t=e.current;Be()&&e.transitionTo(ze(),function(i){n&&le(e.router,i,t,!0),ve||Ve(i.fullPath)})},r=ve?\"popstate\":\"hashchange\";window.addEventListener(r,i),this.listeners.push(function(){window.removeEventListener(r,i)})}},t.prototype.push=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,function(e){$e(e.fullPath),le(i.router,e,r,!1),t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this,r=this.current;this.transitionTo(e,function(e){Ve(e.fullPath),le(i.router,e,r,!1),t&&t(e)},n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;ze()!==t&&(e?$e(t):Ve(t))},t.prototype.getCurrentLocation=function(){return ze()},t}(Oe);function Be(){var e=ze();return\"/\"===e.charAt(0)||(Ve(\"/\"+e),!1)}function ze(){var e=window.location.href,t=e.indexOf(\"#\");if(t<0)return\"\";var n=(e=e.slice(t+1)).indexOf(\"?\");if(n<0){var i=e.indexOf(\"#\");e=i>-1?decodeURI(e.slice(0,i))+e.slice(i):decodeURI(e)}else e=decodeURI(e.slice(0,n))+e.slice(n);return e}function Fe(e){var t=window.location.href,n=t.indexOf(\"#\");return(n>=0?t.slice(0,n):t)+\"#\"+e}function $e(e){ve?ye(Fe(e)):window.location.hash=e}function Ve(e){ve?be(Fe(e)):window.location.replace(Fe(e))}var je=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index+1).concat(e),i.index++,t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index).concat(e),t&&t(e)},n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var i=this.stack[n];this.confirmTransition(i,function(){t.index=n,t.updateRoute(i)},function(e){o(e,Te.duplicated)&&(t.index=n)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:\"/\"},t.prototype.ensureURL=function(){},t}(Oe),He=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Q(e.routes||[],this);var t=e.mode||\"hash\";switch(this.fallback=\"history\"===t&&!ve&&!1!==e.fallback,this.fallback&&(t=\"hash\"),Z||(t=\"abstract\"),this.mode=t,t){case\"history\":this.history=new Pe(this,e.base);break;case\"hash\":this.history=new Re(this,e.base,this.fallback);break;case\"abstract\":this.history=new je(this,e.base);break;default:0}},We={currentRoute:{configurable:!0}};function qe(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}He.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},We.currentRoute.get=function(){return this.history&&this.history.current},He.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once(\"hook:destroyed\",function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardownListeners()}),!this.app){this.app=e;var n=this.history;if(n instanceof Pe||n instanceof Re){var i=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),i,i)}n.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},He.prototype.beforeEach=function(e){return qe(this.beforeHooks,e)},He.prototype.beforeResolve=function(e){return qe(this.resolveHooks,e)},He.prototype.afterEach=function(e){return qe(this.afterHooks,e)},He.prototype.onReady=function(e,t){this.history.onReady(e,t)},He.prototype.onError=function(e){this.history.onError(e)},He.prototype.push=function(e,t,n){var i=this;if(!t&&!n&&\"undefined\"!=typeof Promise)return new Promise(function(t,n){i.history.push(e,t,n)});this.history.push(e,t,n)},He.prototype.replace=function(e,t,n){var i=this;if(!t&&!n&&\"undefined\"!=typeof Promise)return new Promise(function(t,n){i.history.replace(e,t,n)});this.history.replace(e,t,n)},He.prototype.go=function(e){this.history.go(e)},He.prototype.back=function(){this.go(-1)},He.prototype.forward=function(){this.go(1)},He.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},He.prototype.resolve=function(e,t,n){var i=H(e,t=t||this.history.current,n,this),r=this.match(i,t),o=r.redirectedFrom||r.fullPath;return{location:i,route:r,href:function(e,t,n){var i=\"hash\"===n?\"#\"+t:t;return e?S(e+\"/\"+i):i}(this.history.base,o,this.mode),normalizedTo:i,resolved:r}},He.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==b&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(He.prototype,We),He.install=K,He.version=\"3.3.4\",Z&&window.Vue&&window.Vue.use(He),t.a=He},\"/vN/\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gZK\"),o=n(\"/gxq\"),a=n(\"vXqC\"),s=n(\"wWR3\").getPercentWithPrecision,l=n(\"kQD9\"),u=n(\"5KBG\").retrieveRawAttr,c=n(\"kdOt\").makeSeriesEncodeForNameBased,h=n(\"FCaW\"),d=i.extendSeriesModel({type:\"series.pie\",init:function(e){d.superApply(this,\"init\",arguments),this.legendVisualProvider=new h(o.bind(this.getData,this),o.bind(this.getRawData,this)),this.updateSelectedMap(this._createSelectableList()),this._defaultLabelLine(e)},mergeOption:function(e){d.superCall(this,\"mergeOption\",e),this.updateSelectedMap(this._createSelectableList())},getInitialData:function(e,t){return r(this,{coordDimensions:[\"value\"],encodeDefaulter:o.curry(c,this)})},_createSelectableList:function(){for(var e=this.getRawData(),t=e.mapDimension(\"value\"),n=[],i=0,r=e.count();i<r;i++)n.push({name:e.getName(i),value:e.get(t,i),selected:u(e,i,\"selected\")});return n},getDataParams:function(e){var t=this.getData(),n=d.superCall(this,\"getDataParams\",e),i=[];return t.each(t.mapDimension(\"value\"),function(e){i.push(e)}),n.percent=s(i,e,t.hostModel.get(\"percentPrecision\")),n.$vars.push(\"percent\"),n},_defaultLabelLine:function(e){a.defaultEmphasis(e,\"labelLine\",[\"show\"]);var t=e.labelLine,n=e.emphasis.labelLine;t.show=t.show&&e.label.show,n.show=n.show&&e.emphasis.label.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:[\"50%\",\"50%\"],radius:[0,\"75%\"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,hoverOffset:10,avoidLabelOverlap:!0,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:!1,show:!0,position:\"outer\",alignTo:\"none\",margin:\"25%\",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:\"solid\"}},itemStyle:{borderWidth:1},animationType:\"expansion\",animationTypeUpdate:\"transition\",animationEasing:\"cubicOut\"}});o.mixin(d,l);var f=d;e.exports=f},\"/xsj\":function(e,t){var n=[\"#37A2DA\",\"#32C5E9\",\"#67E0E3\",\"#9FE6B8\",\"#FFDB5C\",\"#ff9f7f\",\"#fb7293\",\"#E062AE\",\"#E690D1\",\"#e7bcf3\",\"#9d96f5\",\"#8378EA\",\"#96BFFF\"],i={color:n,colorLayer:[[\"#37A2DA\",\"#ffd85c\",\"#fd7b5f\"],[\"#37A2DA\",\"#67E0E3\",\"#FFDB5C\",\"#ff9f7f\",\"#E062AE\",\"#9d96f5\"],[\"#37A2DA\",\"#32C5E9\",\"#9FE6B8\",\"#FFDB5C\",\"#ff9f7f\",\"#fb7293\",\"#e7bcf3\",\"#8378EA\",\"#96BFFF\"],n]};e.exports=i},\"02w1\":function(e,t,n){\"use strict\";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var i,r=n(\"z+gd\"),o=(i=r)&&i.__esModule?i:{default:i};var a=\"undefined\"==typeof window,s=function(e){var t=e,n=Array.isArray(t),i=0;for(t=n?t:t[Symbol.iterator]();;){var r;if(n){if(i>=t.length)break;r=t[i++]}else{if((i=t.next()).done)break;r=i.value}var o=r.target.__resizeListeners__||[];o.length&&o.forEach(function(e){e()})}};t.addResizeListener=function(e,t){a||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new o.default(s),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},\"06OY\":function(e,t,n){var i=n(\"3Eo+\")(\"meta\"),r=n(\"EqjI\"),o=n(\"D2L2\"),a=n(\"evD5\").f,s=0,l=Object.isExtensible||function(){return!0},u=!n(\"S82l\")(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,i,{value:{i:\"O\"+ ++s,w:{}}})},h=e.exports={KEY:i,NEED:!1,fastKey:function(e,t){if(!r(e))return\"symbol\"==typeof e?e:(\"string\"==typeof e?\"S\":\"P\")+e;if(!o(e,i)){if(!l(e))return\"F\";if(!t)return\"E\";c(e)}return e[i].i},getWeak:function(e,t){if(!o(e,i)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[i].w},onFreeze:function(e){return u&&h.NEED&&l(e)&&!o(e,i)&&c(e),e}}},\"0BNI\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"Pdtn\"),a=n(\"43ae\"),s=n(\"vjPX\"),l=[\"axisLine\",\"axisLabel\",\"axisTick\",\"minorTick\",\"splitLine\",\"minorSplitLine\",\"splitArea\"];function u(e,t,n){t[1]>t[0]&&(t=t.slice().reverse());var i=e.coordToPoint([t[0],n]),r=e.coordToPoint([t[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function c(e){return e.getRadiusAxis().inverse?0:1}function h(e){var t=e[0],n=e[e.length-1];t&&n&&Math.abs(Math.abs(t.coord-n.coord)-360)<1e-4&&e.pop()}var d=a.extend({type:\"angleAxis\",axisPointerClass:\"PolarAxisPointer\",render:function(e,t){if(this.group.removeAll(),e.get(\"show\")){var n=e.axis,r=n.polar,o=r.getRadiusAxis().getExtent(),a=n.getTicksCoords(),s=n.getMinorTicksCoords(),u=i.map(n.getViewLabels(),function(e){return(e=i.clone(e)).coord=n.dataToCoord(e.tickValue),e});h(u),h(a),i.each(l,function(t){!e.get(t+\".show\")||n.scale.isBlank()&&\"axisLine\"!==t||this[\"_\"+t](e,r,a,s,o,u)},this)}},_axisLine:function(e,t,n,i,o){var a,s=e.getModel(\"axisLine.lineStyle\"),l=c(t),u=l?0:1;(a=0===o[u]?new r.Circle({shape:{cx:t.cx,cy:t.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new r.Ring({shape:{cx:t.cx,cy:t.cy,r:o[l],r0:o[u]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,this.group.add(a)},_axisTick:function(e,t,n,o,a){var s=e.getModel(\"axisTick\"),l=(s.get(\"inside\")?-1:1)*s.get(\"length\"),h=a[c(t)],d=i.map(n,function(e){return new r.Line({shape:u(t,[h,h+l],e.coord)})});this.group.add(r.mergePath(d,{style:i.defaults(s.getModel(\"lineStyle\").getLineStyle(),{stroke:e.get(\"axisLine.lineStyle.color\")})}))},_minorTick:function(e,t,n,o,a){if(o.length){for(var s=e.getModel(\"axisTick\"),l=e.getModel(\"minorTick\"),h=(s.get(\"inside\")?-1:1)*l.get(\"length\"),d=a[c(t)],f=[],p=0;p<o.length;p++)for(var g=0;g<o[p].length;g++)f.push(new r.Line({shape:u(t,[d,d+h],o[p][g].coord)}));this.group.add(r.mergePath(f,{style:i.defaults(l.getModel(\"lineStyle\").getLineStyle(),i.defaults(s.getLineStyle(),{stroke:e.get(\"axisLine.lineStyle.color\")}))}))}},_axisLabel:function(e,t,n,a,l,u){var h=e.getCategories(!0),d=e.getModel(\"axisLabel\"),f=d.get(\"margin\"),p=e.get(\"triggerEvent\");i.each(u,function(n,i){var a=d,u=n.tickValue,g=l[c(t)],m=t.coordToPoint([g+f,n.coord]),v=t.cx,y=t.cy,b=Math.abs(m[0]-v)/g<.3?\"center\":m[0]>v?\"left\":\"right\",x=Math.abs(m[1]-y)/g<.3?\"middle\":m[1]>y?\"top\":\"bottom\";h&&h[u]&&h[u].textStyle&&(a=new o(h[u].textStyle,d,d.ecModel));var _=new r.Text({silent:s.isLabelSilent(e)});this.group.add(_),r.setTextStyle(_.style,a,{x:m[0],y:m[1],textFill:a.getTextColor()||e.get(\"axisLine.lineStyle.color\"),text:n.formattedLabel,textAlign:b,textVerticalAlign:x}),p&&(_.eventData=s.makeAxisEventDataBase(e),_.eventData.targetType=\"axisLabel\",_.eventData.value=n.rawLabel)},this)},_splitLine:function(e,t,n,o,a){var s=e.getModel(\"splitLine\").getModel(\"lineStyle\"),l=s.get(\"color\"),c=0;l=l instanceof Array?l:[l];for(var h=[],d=0;d<n.length;d++){var f=c++%l.length;h[f]=h[f]||[],h[f].push(new r.Line({shape:u(t,a,n[d].coord)}))}for(d=0;d<h.length;d++)this.group.add(r.mergePath(h[d],{style:i.defaults({stroke:l[d%l.length]},s.getLineStyle()),silent:!0,z:e.get(\"z\")}))},_minorSplitLine:function(e,t,n,i,o){if(i.length){for(var a=e.getModel(\"minorSplitLine\").getModel(\"lineStyle\"),s=[],l=0;l<i.length;l++)for(var c=0;c<i[l].length;c++)s.push(new r.Line({shape:u(t,o,i[l][c].coord)}));this.group.add(r.mergePath(s,{style:a.getLineStyle(),silent:!0,z:e.get(\"z\")}))}},_splitArea:function(e,t,n,o,a){if(n.length){var s=e.getModel(\"splitArea\").getModel(\"areaStyle\"),l=s.get(\"color\"),u=0;l=l instanceof Array?l:[l];for(var c=[],h=Math.PI/180,d=-n[0].coord*h,f=Math.min(a[0],a[1]),p=Math.max(a[0],a[1]),g=e.get(\"clockwise\"),m=1;m<n.length;m++){var v=u++%l.length;c[v]=c[v]||[],c[v].push(new r.Sector({shape:{cx:t.cx,cy:t.cy,r0:f,r:p,startAngle:d,endAngle:-n[m].coord*h,clockwise:g},silent:!0})),d=-n[m].coord*h}for(m=0;m<c.length;m++)this.group.add(r.mergePath(c[m],{style:i.defaults({fill:l[m%l.length]},s.getAreaStyle()),silent:!0}))}}});e.exports=d},\"0BOU\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"1Xuh\"),o=n(\"wWR3\"),a=n(\"rctg\");function s(e,t,n){this._model=e}function l(e,t,n,i){var r=n.calendarModel,o=n.seriesModel,a=r?r.coordinateSystem:o?o.coordinateSystem:null;return a===this?a[e](i):null}s.prototype={constructor:s,type:\"calendar\",dimensions:[\"time\",\"value\"],getDimensionsInfo:function(){return[{name:\"time\",type:\"time\"},\"value\"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(e){var t=(e=o.parseDate(e)).getFullYear(),n=e.getMonth()+1;n=n<10?\"0\"+n:n;var i=e.getDate();i=i<10?\"0\"+i:i;var r=e.getDay();return{y:t,m:n,d:i,day:r=Math.abs((r+7-this.getFirstDayOfWeek())%7),time:e.getTime(),formatedDate:t+\"-\"+n+\"-\"+i,date:e}},getNextNDay:function(e,t){return 0===(t=t||0)?this.getDateInfo(e):((e=new Date(this.getDateInfo(e).time)).setDate(e.getDate()+t),this.getDateInfo(e))},update:function(e,t){this._firstDayOfWeek=+this._model.getModel(\"dayLabel\").get(\"firstDay\"),this._orient=this._model.get(\"orient\"),this._lineWidth=this._model.getModel(\"itemStyle\").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=[\"width\",\"height\"],a=this._model.get(\"cellSize\").slice(),s=this._model.getBoxLayoutParams(),l=\"horizontal\"===this._orient?[n,7]:[7,n];i.each([0,1],function(e){h(a,e)&&(s[o[e]]=a[e]*l[e])});var u={width:t.getWidth(),height:t.getHeight()},c=this._rect=r.getLayoutRect(s,u);function h(e,t){return null!=e[t]&&\"auto\"!==e[t]}i.each([0,1],function(e){h(a,e)||(a[e]=c[o[e]]/l[e])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(e,t){i.isArray(e)&&(e=e[0]),null==t&&(t=!0);var n=this.getDateInfo(e),r=this._rangeInfo,o=n.formatedDate;if(t&&!(n.time>=r.start.time&&n.time<r.end.time+864e5))return[NaN,NaN];var a=n.day,s=this._getRangeInfo([r.start.time,o]).nthWeek;return\"vertical\"===this._orient?[this._rect.x+a*this._sw+this._sw/2,this._rect.y+s*this._sh+this._sh/2]:[this._rect.x+s*this._sw+this._sw/2,this._rect.y+a*this._sh+this._sh/2]},pointToData:function(e){var t=this.pointToDate(e);return t&&t.time},dataToRect:function(e,t){var n=this.dataToPoint(e,t);return{contentShape:{x:n[0]-(this._sw-this._lineWidth)/2,y:n[1]-(this._sh-this._lineWidth)/2,width:this._sw-this._lineWidth,height:this._sh-this._lineWidth},center:n,tl:[n[0]-this._sw/2,n[1]-this._sh/2],tr:[n[0]+this._sw/2,n[1]-this._sh/2],br:[n[0]+this._sw/2,n[1]+this._sh/2],bl:[n[0]-this._sw/2,n[1]+this._sh/2]}},pointToDate:function(e){var t=Math.floor((e[0]-this._rect.x)/this._sw)+1,n=Math.floor((e[1]-this._rect.y)/this._sh)+1,i=this._rangeInfo.range;return\"vertical\"===this._orient?this._getDateByWeeksAndDay(n,t-1,i):this._getDateByWeeksAndDay(t,n-1,i)},convertToPixel:i.curry(l,\"dataToPoint\"),convertFromPixel:i.curry(l,\"pointToData\"),_initRangeOption:function(){var e=this._model.get(\"range\"),t=e;if(i.isArray(t)&&1===t.length&&(t=t[0]),/^\\d{4}$/.test(t)&&(e=[t+\"-01-01\",t+\"-12-31\"]),/^\\d{4}[\\/|-]\\d{1,2}$/.test(t)){var n=this.getDateInfo(t),r=n.date;r.setMonth(r.getMonth()+1);var o=this.getNextNDay(r,-1);e=[n.formatedDate,o.formatedDate]}/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(t)&&(e=[t,t]);var a=this._getRangeInfo(e);return a.start.time>a.end.time&&e.reverse(),e},_getRangeInfo:function(e){var t;(e=[this.getDateInfo(e[0]),this.getDateInfo(e[1])])[0].time>e[1].time&&(t=!0,e.reverse());var n=Math.floor(e[1].time/864e5)-Math.floor(e[0].time/864e5)+1,i=new Date(e[0].time),r=i.getDate(),o=e[1].date.getDate();i.setDate(r+n-1);var a=i.getDate();if(a!==o)for(var s=i.getTime()-e[1].time>0?1:-1;(a=i.getDate())!==o&&(i.getTime()-e[1].time)*s>0;)n-=s,i.setDate(a-s);var l=Math.floor((n+e[0].day+6)/7),u=t?1-l:l-1;return t&&e.reverse(),{range:[e[0].formatedDate,e[1].formatedDate],start:e[0],end:e[1],allDay:n,weeks:l,nthWeek:u,fweek:e[0].day,lweek:e[1].day}},_getDateByWeeksAndDay:function(e,t,n){var i=this._getRangeInfo(n);if(e>i.weeks||0===e&&t<i.fweek||e===i.weeks&&t>i.lweek)return!1;var r=7*(e-1)-i.fweek+t,o=new Date(i.start.time);return o.setDate(i.start.d+r),this.getDateInfo(o)}},s.dimensions=s.prototype.dimensions,s.getDimensionsInfo=s.prototype.getDimensionsInfo,s.create=function(e,t){var n=[];return e.eachComponent(\"calendar\",function(i){var r=new s(i,e,t);n.push(r),i.coordinateSystem=r}),e.eachSeries(function(e){\"calendar\"===e.get(\"coordinateSystem\")&&(e.coordinateSystem=n[e.get(\"calendarIndex\")||0])}),n},a.register(\"calendar\",s);var u=s;e.exports=u},\"0MNY\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=i.createHashMap,o=i.isString,a=i.isArray,s=i.each,l=(i.assert,n(\"jDhh\").parseXML),u=r(),c={registerMap:function(e,t,n){var i;return a(t)?i=t:t.svg?i=[{type:\"svg\",source:t.svg,specialAreas:t.specialAreas}]:(t.geoJson&&!t.features&&(n=t.specialAreas,t=t.geoJson),i=[{type:\"geoJSON\",source:t,specialAreas:n}]),s(i,function(e){var t=e.type;\"geoJson\"===t&&(t=e.type=\"geoJSON\"),(0,h[t])(e)}),u.set(e,i)},retrieveMap:function(e){return u.get(e)}},h={geoJSON:function(e){var t=e.source;e.geoJSON=o(t)?\"undefined\"!=typeof JSON&&JSON.parse?JSON.parse(t):new Function(\"return (\"+t+\");\")():t},svg:function(e){e.svgXML=l(e.source)}};e.exports=c},\"0O1a\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"DZTl\");n(\"Osoq\"),n(\"w2H/\"),n(\"mlpt\"),n(\"XiVP\"),n(\"H4Wn\"),i.registerPreprocessor(r)},\"0fQF\":function(e,t){function n(){}function i(e,t,n,i){for(var r=0,o=t.length,a=0,s=0;r<o;r++){var l=t[r];if(l.removed){for(u=[],c=s;c<s+l.count;c++)u.push(c);l.indices=u,s+=l.count}else{for(var u=[],c=a;c<a+l.count;c++)u.push(c);l.indices=u,a+=l.count,l.added||(s+=l.count)}}return t}n.prototype={diff:function(e,t,n){n||(n=function(e,t){return e===t}),this.equals=n;var r=this;e=e.slice();var o=(t=t.slice()).length,a=e.length,s=1,l=o+a,u=[{newPos:-1,components:[]}],c=this.extractCommon(u[0],t,e,0);if(u[0].newPos+1>=o&&c+1>=a){for(var h=[],d=0;d<t.length;d++)h.push(d);return[{indices:h,count:t.length}]}function f(){for(var n=-1*s;n<=s;n+=2){var l,c=u[n-1],h=u[n+1],d=(h?h.newPos:0)-n;c&&(u[n-1]=void 0);var f=c&&c.newPos+1<o,p=h&&0<=d&&d<a;if(f||p){if(!f||p&&c.newPos<h.newPos?(l={newPos:(g=h).newPos,components:g.components.slice(0)},r.pushComponent(l.components,void 0,!0)):((l=c).newPos++,r.pushComponent(l.components,!0,void 0)),d=r.extractCommon(l,t,e,n),l.newPos+1>=o&&d+1>=a)return i(r,l.components,t,e);u[n]=l}else u[n]=void 0}var g;s++}for(;s<=l;){var p=f();if(p)return p}},pushComponent:function(e,t,n){var i=e[e.length-1];i&&i.added===t&&i.removed===n?e[e.length-1]={count:i.count+1,added:t,removed:n}:e.push({count:1,added:t,removed:n})},extractCommon:function(e,t,n,i){for(var r=t.length,o=n.length,a=e.newPos,s=a-i,l=0;a+1<r&&s+1<o&&this.equals(t[a+1],n[s+1]);)a++,s++,l++;return l&&e.components.push({count:l}),e.newPos=a,s},tokenize:function(e){return e.slice()},join:function(e){return e.slice()}};var r=new n;e.exports=function(e,t,n){return r.diff(e,t,n)}},\"0jKn\":function(e,t,n){var i=n(\"eZxa\"),r=n(\"cI6i\"),o=n(\"/gxq\").each;function a(e){return parseInt(e,10)}function s(e,t){r.initVML(),this.root=e,this.storage=t;var n=document.createElement(\"div\"),i=document.createElement(\"div\");n.style.cssText=\"display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;\",i.style.cssText=\"position:absolute;left:0;top:0;\",e.appendChild(n),this._vmlRoot=i,this._vmlViewport=n,this.resize();var o=t.delFromStorage,a=t.addToStorage;t.delFromStorage=function(e){o.call(t,e),e&&e.onRemove&&e.onRemove(i)},t.addToStorage=function(e){e.onAdd&&e.onAdd(i),a.call(t,e)},this._firstPaint=!0}s.prototype={constructor:s,getType:function(){return\"vml\"},getViewportRoot:function(){return this._vmlViewport},getViewportRootOffset:function(){var e=this.getViewportRoot();if(e)return{offsetLeft:e.offsetLeft||0,offsetTop:e.offsetTop||0}},refresh:function(){var e=this.storage.getDisplayList(!0,!0);this._paintList(e)},_paintList:function(e){for(var t=this._vmlRoot,n=0;n<e.length;n++){var i=e[n];i.invisible||i.ignore?(i.__alreadyNotVisible||i.onRemove(t),i.__alreadyNotVisible=!0):(i.__alreadyNotVisible&&i.onAdd(t),i.__alreadyNotVisible=!1,i.__dirty&&(i.beforeBrush&&i.beforeBrush(),(i.brushVML||i.brush).call(i,t),i.afterBrush&&i.afterBrush())),i.__dirty=!1}this._firstPaint&&(this._vmlViewport.appendChild(t),this._firstPaint=!1)},resize:function(e,t){e=null==e?this._getWidth():e,t=null==t?this._getHeight():t;if(this._width!==e||this._height!==t){this._width=e,this._height=t;var n=this._vmlViewport.style;n.width=e+\"px\",n.height=t+\"px\"}},dispose:function(){this.root.innerHTML=\"\",this._vmlRoot=this._vmlViewport=this.storage=null},getWidth:function(){return this._width},getHeight:function(){return this._height},clear:function(){this._vmlViewport&&this.root.removeChild(this._vmlViewport)},_getWidth:function(){var e=this.root,t=e.currentStyle;return(e.clientWidth||a(t.width))-a(t.paddingLeft)-a(t.paddingRight)|0},_getHeight:function(){var e=this.root,t=e.currentStyle;return(e.clientHeight||a(t.height))-a(t.paddingTop)-a(t.paddingBottom)|0}},o([\"getLayer\",\"insertLayer\",\"eachLayer\",\"eachBuiltinLayer\",\"eachOtherLayer\",\"getLayers\",\"modLayer\",\"delLayer\",\"clearLayer\",\"toDataURL\",\"pathToImage\"],function(e){var t;s.prototype[e]=(t=e,function(){i('In IE8.0 VML mode painter not support method \"'+t+'\"')})});var l=s;e.exports=l},\"0kY3\":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=114)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},10:function(e,t){e.exports=n(\"HJMx\")},114:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"el-input-number\",e.inputNumberSize?\"el-input-number--\"+e.inputNumberSize:\"\",{\"is-disabled\":e.inputNumberDisabled},{\"is-without-controls\":!e.controls},{\"is-controls-right\":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?n(\"span\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.decrease,expression:\"decrease\"}],staticClass:\"el-input-number__decrease\",class:{\"is-disabled\":e.minDisabled},attrs:{role:\"button\"},on:{keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.decrease(t):null}}},[n(\"i\",{class:\"el-icon-\"+(e.controlsAtRight?\"arrow-down\":\"minus\")})]):e._e(),e.controls?n(\"span\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.increase,expression:\"increase\"}],staticClass:\"el-input-number__increase\",class:{\"is-disabled\":e.maxDisabled},attrs:{role:\"button\"},on:{keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.increase(t):null}}},[n(\"i\",{class:\"el-icon-\"+(e.controlsAtRight?\"arrow-up\":\"plus\")})]):e._e(),n(\"el-input\",{ref:\"input\",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return\"button\"in t||!e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"])?(t.preventDefault(),e.increase(t)):null},function(t){return\"button\"in t||!e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};i._withStripped=!0;var r=n(10),o=n.n(r),a=n(22),s=n.n(a),l=n(30),u={name:\"ElInputNumber\",mixins:[s()(\"input\")],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},directives:{repeatClick:l.a},components:{ElInput:o.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:\"\"},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var n=this.getPrecision(this.step),i=Math.pow(10,n);t=Math.round(t/this.step)*i*this.step/i}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit(\"input\",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)<this.min},maxDisabled:function(){return this._increase(this.value,this.step)>this.max},numPrecision:function(){var e=this.value,t=this.step,n=this.getPrecision,i=this.precision,r=n(t);return void 0!==i?(r>i&&console.warn(\"[Element Warn][InputNumber]precision should not be less than the decimal places of step\"),i):Math.max(n(e),r)},controlsAtRight:function(){return this.controls&&\"right\"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if(\"number\"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),n=Math.pow(10,t);e=Math.round(e/this.step)*n*this.step/n}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),n=t.indexOf(\".\"),i=0;return-1!==n&&(i=t.length-n-1),i},_increase:function(e,t){if(\"number\"!=typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e+n*t)/n)},_decrease:function(e,t){if(\"number\"!=typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e-n*t)/n)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit(\"blur\",e)},handleFocus:function(e){this.$emit(\"focus\",e)},setCurrentValue:function(e){var t=this.currentValue;\"number\"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit(\"input\",e),this.$emit(\"change\",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=\"\"===e?void 0:Number(e);isNaN(t)&&\"\"!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute(\"role\",\"spinbutton\"),e.setAttribute(\"aria-valuemax\",this.max),e.setAttribute(\"aria-valuemin\",this.min),e.setAttribute(\"aria-valuenow\",this.currentValue),e.setAttribute(\"aria-disabled\",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute(\"aria-valuenow\",this.currentValue)}},c=n(0),h=Object(c.a)(u,i,[],!1,null,null,null);h.options.__file=\"packages/input-number/src/input-number.vue\";var d=h.exports;d.install=function(e){e.component(d.name,d)};t.default=d},2:function(e,t){e.exports=n(\"2kvA\")},22:function(e,t){e.exports=n(\"1oZe\")},30:function(e,t,n){\"use strict\";var i=n(2);t.a={bind:function(e,t,n){var r=null,o=void 0,a=function(){return n.context[t.expression].apply()},s=function(){Date.now()-o<100&&a(),clearInterval(r),r=null};Object(i.on)(e,\"mousedown\",function(e){0===e.button&&(o=Date.now(),Object(i.once)(document,\"mouseup\",s),clearInterval(r),r=setInterval(a,100))})}}}})},\"0nGg\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"dZZy\"),a=n(\"6n1D\"),s=n(\"5Mek\"),l=n(\"YpIy\"),u=n(\"NKek\").onIrrelevantElement,c=n(\"0sHC\"),h=n(\"Goha\"),d=n(\"hD/x\").getNodeGlobalScale,f=\"__focusNodeAdjacency\",p=[\"itemStyle\",\"opacity\"],g=[\"lineStyle\",\"opacity\"];function m(e,t){var n=e.getVisual(\"opacity\");return null!=n?n:e.getModel().get(t)}function v(e,t,n){var i=e.getGraphicEl(),r=m(e,t);null!=n&&(null==r&&(r=1),r*=n),i.downplay&&i.downplay(),i.traverse(function(e){if(!e.isGroup){var t=e.lineLabelOriginalOpacity;null!=t&&null==n||(t=r),e.setStyle(\"opacity\",t)}})}function y(e,t){var n=m(e,t),i=e.getGraphicEl();i.traverse(function(e){!e.isGroup&&e.setStyle(\"opacity\",n)}),i.highlight&&i.highlight()}var b=i.extendChartView({type:\"graph\",init:function(e,t){var n=new o,i=new a,r=this.group;this._controller=new s(t.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},render:function(e,t,n){var i=this,r=e.coordinateSystem;this._model=e;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(\"view\"===r.type){var l={position:r.position,scale:r.scale};this._firstRender?s.attr(l):c.updateProps(s,l,e)}h(e.getGraph(),d(e));var u=e.getData();o.updateData(u);var p=e.getEdgeData();a.updateData(p),this._updateNodeAndLinkScale(),this._updateController(e,t,n),clearTimeout(this._layoutTimeout);var g=e.forceLayout,m=e.get(\"force.layoutAnimation\");g&&this._startForceLayoutIteration(g,m),u.eachItemGraphicEl(function(t,r){var o=u.getItemModel(r);t.off(\"drag\").off(\"dragend\");var a=o.get(\"draggable\");a&&t.on(\"drag\",function(){g&&(g.warmUp(),!this._layouting&&this._startForceLayoutIteration(g,m),g.setFixed(r),u.setItemLayout(r,t.position))},this).on(\"dragend\",function(){g&&g.setUnfixed(r)},this),t.setDraggable(a&&g),t[f]&&t.off(\"mouseover\",t[f]),t.__unfocusNodeAdjacency&&t.off(\"mouseout\",t.__unfocusNodeAdjacency),o.get(\"focusNodeAdjacency\")&&(t.on(\"mouseover\",t[f]=function(){i._clearTimer(),n.dispatchAction({type:\"focusNodeAdjacency\",seriesId:e.id,dataIndex:t.dataIndex})}),t.on(\"mouseout\",t.__unfocusNodeAdjacency=function(){i._dispatchUnfocus(n)}))},this),u.graph.eachEdge(function(t){var r=t.getGraphicEl();r[f]&&r.off(\"mouseover\",r[f]),r.__unfocusNodeAdjacency&&r.off(\"mouseout\",r.__unfocusNodeAdjacency),t.getModel().get(\"focusNodeAdjacency\")&&(r.on(\"mouseover\",r[f]=function(){i._clearTimer(),n.dispatchAction({type:\"focusNodeAdjacency\",seriesId:e.id,edgeDataIndex:t.dataIndex})}),r.on(\"mouseout\",r.__unfocusNodeAdjacency=function(){i._dispatchUnfocus(n)}))});var v=\"circular\"===e.get(\"layout\")&&e.get(\"circular.rotateLabel\"),y=u.getLayout(\"cx\"),b=u.getLayout(\"cy\");u.eachItemGraphicEl(function(e,t){var n=u.getItemModel(t).get(\"label.rotate\")||0,i=e.getSymbolPath();if(v){var r=u.getItemLayout(t),o=Math.atan2(r[1]-b,r[0]-y);o<0&&(o=2*Math.PI+o);var a=r[0]<y;a&&(o-=Math.PI);var s=a?\"left\":\"right\";c.modifyLabelStyle(i,{textRotation:-o,textPosition:s,textOrigin:\"center\"},{textPosition:s})}else c.modifyLabelStyle(i,{textRotation:n*=Math.PI/180})}),this._firstRender=!1},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={},this._clearTimer()},_dispatchUnfocus:function(e,t){var n=this;this._clearTimer(),this._unfocusDelayTimer=setTimeout(function(){n._unfocusDelayTimer=null,e.dispatchAction({type:\"unfocusNodeAdjacency\",seriesId:n._model.id})},500)},_clearTimer:function(){this._unfocusDelayTimer&&(clearTimeout(this._unfocusDelayTimer),this._unfocusDelayTimer=null)},focusNodeAdjacency:function(e,t,n,i){var o=e.getData().graph,a=i.dataIndex,s=i.edgeDataIndex,l=o.getNodeByIndex(a),u=o.getEdgeByIndex(s);(l||u)&&(o.eachNode(function(e){v(e,p,.1)}),o.eachEdge(function(e){v(e,g,.1)}),l&&(y(l,p),r.each(l.edges,function(e){e.dataIndex<0||(y(e,g),y(e.node1,p),y(e.node2,p))})),u&&(y(u,g),y(u.node1,p),y(u.node2,p)))},unfocusNodeAdjacency:function(e,t,n,i){var r=e.getData().graph;r.eachNode(function(e){v(e,p)}),r.eachEdge(function(e){v(e,g)})},_startForceLayoutIteration:function(e,t){var n=this;!function i(){e.step(function(e){n.updateLayout(n._model),(n._layouting=!e)&&(t?n._layoutTimeout=setTimeout(i,16):i())})}()},_updateController:function(e,t,n){var i=this._controller,r=this._controllerHost,o=this.group;i.setPointerChecker(function(t,i,r){var a=o.getBoundingRect();return a.applyTransform(o.transform),a.contain(i,r)&&!u(t,n,e)}),\"view\"===e.coordinateSystem.type?(i.enable(e.get(\"roam\")),r.zoomLimit=e.get(\"scaleLimit\"),r.zoom=e.coordinateSystem.getZoom(),i.off(\"pan\").off(\"zoom\").on(\"pan\",function(t){l.updateViewOnPan(r,t.dx,t.dy),n.dispatchAction({seriesId:e.id,type:\"graphRoam\",dx:t.dx,dy:t.dy})}).on(\"zoom\",function(t){l.updateViewOnZoom(r,t.scale,t.originX,t.originY),n.dispatchAction({seriesId:e.id,type:\"graphRoam\",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(),h(e.getGraph(),d(e)),this._lineDraw.updateLayout()},this)):i.disable()},_updateNodeAndLinkScale:function(){var e=this._model,t=e.getData(),n=d(e),i=[n,n];t.eachItemGraphicEl(function(e,t){e.attr(\"scale\",i)})},updateLayout:function(e){h(e.getGraph(),d(e)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},remove:function(e,t){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()}});e.exports=b},\"0pMY\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"dCQY\"),o=n(\"FIAY\").toolbox.brush;function a(e,t,n){this.model=e,this.ecModel=t,this.api=n,this._brushType,this._brushMode}a.defaultOption={show:!0,type:[\"rect\",\"polygon\",\"lineX\",\"lineY\",\"keep\",\"clear\"],icon:{rect:\"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13\",polygon:\"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2\",lineX:\"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4\",lineY:\"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4\",keep:\"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z\",clear:\"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2\"},title:i.clone(o.title)};var s=a.prototype;s.render=s.updateView=function(e,t,n){var r,o,a;t.eachComponent({mainType:\"brush\"},function(e){r=e.brushType,o=e.brushOption.brushMode||\"single\",a|=e.areas.length}),this._brushType=r,this._brushMode=o,i.each(e.get(\"type\",!0),function(t){e.setIconStatus(t,(\"keep\"===t?\"multiple\"===o:\"clear\"===t?a:t===r)?\"emphasis\":\"normal\")})},s.getIcons=function(){var e=this.model,t=e.get(\"icon\",!0),n={};return i.each(e.get(\"type\",!0),function(e){t[e]&&(n[e]=t[e])}),n},s.onclick=function(e,t,n){var i=this._brushType,r=this._brushMode;\"clear\"===n?(t.dispatchAction({type:\"axisAreaSelect\",intervals:[]}),t.dispatchAction({type:\"brush\",command:\"clear\",areas:[]})):t.dispatchAction({type:\"takeGlobalCursor\",key:\"brush\",brushOption:{brushType:\"keep\"===n?i:i!==n&&n,brushMode:\"keep\"===n?\"multiple\"===r?\"single\":\"multiple\":r}})},r.register(\"brush\",a);var l=a;e.exports=l},\"0sHC\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"dE09\"),o=n(\"DRaW\"),a=n(\"dOVI\"),s=n(\"C7PF\"),l=n(\"GxVO\"),u=n(\"/ZBO\"),c=n(\"MAom\");t.Image=c;var h=n(\"AlhT\");t.Group=h;var d=n(\"/86O\");t.Text=d;var f=n(\"Of86\");t.Circle=f;var p=n(\"sRta\");t.Sector=p;var g=n(\"6Kqb\");t.Ring=g;var m=n(\"+UTs\");t.Polygon=m;var v=n(\"BeCT\");t.Polyline=v;var y=n(\"PD67\");t.Rect=y;var b=n(\"KsMi\");t.Line=b;var x=n(\"67nf\");t.BezierCurve=x;var _=n(\"46eW\");t.Arc=_;var w=n(\"me52\");t.CompoundPath=w;var C=n(\"Gw4f\");t.LinearGradient=C;var S=n(\"jHiU\");t.RadialGradient=S;var k=n(\"8b51\");t.BoundingRect=k;var T=n(\"thE4\");t.IncrementalDisplayable=T;var M=n(\"xr8J\"),D=Math.max,A=Math.min,I={},O=1,E=\"emphasis\",L=\"normal\",P=1,N={},R={};function B(e,t){R[e]=t}function z(e,t,n,i){var o=r.createFromString(e,t);return n&&(\"center\"===i&&(n=F(n,o.getBoundingRect())),V(o,n)),o}function F(e,t){var n,i=t.width/t.height,r=e.height*i;return n=r<=e.width?e.height:(r=e.width)/i,{x:e.x+e.width/2-r/2,y:e.y+e.height/2-n/2,width:r,height:n}}var $=r.mergePath;function V(e,t){if(e.applyTransform){var n=e.getBoundingRect().calculateTransform(t);e.applyTransform(n)}}var j=M.subPixelOptimize;function H(e){return null!=e&&\"none\"!==e}var W=i.createHashMap(),q=0;function G(e){var t=e.__hoverStl;if(t&&!e.__highlighted){var n=e.__zr,i=e.useHoverLayer&&n&&\"canvas\"===n.painter.type;if(e.__highlighted=i?\"layer\":\"plain\",!(e.isGroup||!n&&e.useHoverLayer)){var r=e,o=e.style;i&&(o=(r=n.addHover(e)).style),le(o),i||function(e){if(e.__hoverStlDirty){e.__hoverStlDirty=!1;var t=e.__hoverStl;if(t){var n=e.__cachedNormalStl={};e.__cachedNormalZ2=e.z2;var i=e.style;for(var r in t)null!=t[r]&&(n[r]=i[r]);n.fill=i.fill,n.stroke=i.stroke}else e.__cachedNormalStl=e.__cachedNormalZ2=null}}(r),o.extendFrom(t),U(o,t,\"fill\"),U(o,t,\"stroke\"),se(o),i||(e.dirty(!1),e.z2+=O)}}}function U(e,t,n){!H(t[n])&&H(e[n])&&(e[n]=function(e){if(\"string\"!=typeof e)return e;var t=W.get(e);return t||(t=o.lift(e,-.1),q<1e4&&(W.set(e,t),q++)),t}(e[n]))}function Y(e){var t=e.__highlighted;if(t&&(e.__highlighted=!1,!e.isGroup))if(\"layer\"===t)e.__zr&&e.__zr.removeHover(e);else{var n=e.style,i=e.__cachedNormalStl;i&&(le(n),e.setStyle(i),se(n));var r=e.__cachedNormalZ2;null!=r&&e.z2-r===O&&(e.z2=r)}}function X(e,t,n){var i,r=L,o=L;e.__highlighted&&(r=E,i=!0),t(e,n),e.__highlighted&&(o=E,i=!0),e.isGroup&&e.traverse(function(e){!e.isGroup&&t(e,n)}),i&&e.__highDownOnUpdate&&e.__highDownOnUpdate(r,o)}function K(e,t){t=e.__hoverStl=!1!==t&&(e.hoverStyle||t||{}),e.__hoverStlDirty=!0,e.__highlighted&&(e.__cachedNormalStl=null,Y(e),G(e))}function Z(e){!te(this,e)&&!this.__highByOuter&&X(this,G)}function J(e){!te(this,e)&&!this.__highByOuter&&X(this,Y)}function Q(e){this.__highByOuter|=1<<(e||0),X(this,G)}function ee(e){!(this.__highByOuter&=~(1<<(e||0)))&&X(this,Y)}function te(e,t){return e.__highDownSilentOnTouch&&t.zrByTouch}function ne(e,t){var n=!1===t;if(e.__highDownSilentOnTouch=e.highDownSilentOnTouch,e.__highDownOnUpdate=e.highDownOnUpdate,!n||e.__highDownDispatcher){var i=n?\"off\":\"on\";e[i](\"mouseover\",Z)[i](\"mouseout\",J),e[i](\"emphasis\",Q)[i](\"normal\",ee),e.__highByOuter=e.__highByOuter||0,e.__highDownDispatcher=!n}}function ie(e,t,n,r,o){return re(e,t,r,o),n&&i.extend(e,n),e}function re(e,t,n,r){if((n=n||I).isRectText){var o;n.getTextPosition?o=n.getTextPosition(t,r):\"outside\"===(o=t.getShallow(\"position\")||(r?null:\"inside\"))&&(o=\"top\"),e.textPosition=o,e.textOffset=t.getShallow(\"offset\");var a=t.getShallow(\"rotate\");null!=a&&(a*=Math.PI/180),e.textRotation=a,e.textDistance=i.retrieve2(t.getShallow(\"distance\"),r?null:5)}var s,l=t.ecModel,u=l&&l.option.textStyle,c=function(e){var t;for(;e&&e!==e.ecModel;){var n=(e.option||I).rich;if(n)for(var i in t=t||{},n)n.hasOwnProperty(i)&&(t[i]=1);e=e.parentModel}return t}(t);if(c)for(var h in s={},c)if(c.hasOwnProperty(h)){var d=t.getModel([\"rich\",h]);oe(s[h]={},d,u,n,r)}return e.rich=s,oe(e,t,u,n,r,!0),n.forceRich&&!n.textStyle&&(n.textStyle={}),e}function oe(e,t,n,r,o,a){n=!o&&n||I,e.textFill=ae(t.getShallow(\"color\"),r)||n.color,e.textStroke=ae(t.getShallow(\"textBorderColor\"),r)||n.textBorderColor,e.textStrokeWidth=i.retrieve2(t.getShallow(\"textBorderWidth\"),n.textBorderWidth),o||(a&&(e.insideRollbackOpt=r,se(e)),null==e.textFill&&(e.textFill=r.autoColor)),e.fontStyle=t.getShallow(\"fontStyle\")||n.fontStyle,e.fontWeight=t.getShallow(\"fontWeight\")||n.fontWeight,e.fontSize=t.getShallow(\"fontSize\")||n.fontSize,e.fontFamily=t.getShallow(\"fontFamily\")||n.fontFamily,e.textAlign=t.getShallow(\"align\"),e.textVerticalAlign=t.getShallow(\"verticalAlign\")||t.getShallow(\"baseline\"),e.textLineHeight=t.getShallow(\"lineHeight\"),e.textWidth=t.getShallow(\"width\"),e.textHeight=t.getShallow(\"height\"),e.textTag=t.getShallow(\"tag\"),a&&r.disableBox||(e.textBackgroundColor=ae(t.getShallow(\"backgroundColor\"),r),e.textPadding=t.getShallow(\"padding\"),e.textBorderColor=ae(t.getShallow(\"borderColor\"),r),e.textBorderWidth=t.getShallow(\"borderWidth\"),e.textBorderRadius=t.getShallow(\"borderRadius\"),e.textBoxShadowColor=t.getShallow(\"shadowColor\"),e.textBoxShadowBlur=t.getShallow(\"shadowBlur\"),e.textBoxShadowOffsetX=t.getShallow(\"shadowOffsetX\"),e.textBoxShadowOffsetY=t.getShallow(\"shadowOffsetY\")),e.textShadowColor=t.getShallow(\"textShadowColor\")||n.textShadowColor,e.textShadowBlur=t.getShallow(\"textShadowBlur\")||n.textShadowBlur,e.textShadowOffsetX=t.getShallow(\"textShadowOffsetX\")||n.textShadowOffsetX,e.textShadowOffsetY=t.getShallow(\"textShadowOffsetY\")||n.textShadowOffsetY}function ae(e,t){return\"auto\"!==e?e:t&&t.autoColor?t.autoColor:null}function se(e){var t,n=e.textPosition,i=e.insideRollbackOpt;if(i&&null==e.textFill){var r=i.autoColor,o=i.isRectText,a=i.useInsideStyle,s=!1!==a&&(!0===a||o&&n&&\"string\"==typeof n&&n.indexOf(\"inside\")>=0),l=!s&&null!=r;(s||l)&&(t={textFill:e.textFill,textStroke:e.textStroke,textStrokeWidth:e.textStrokeWidth}),s&&(e.textFill=\"#fff\",null==e.textStroke&&(e.textStroke=r,null==e.textStrokeWidth&&(e.textStrokeWidth=2))),l&&(e.textFill=r)}e.insideRollback=t}function le(e){var t=e.insideRollback;t&&(e.textFill=t.textFill,e.textStroke=t.textStroke,e.textStrokeWidth=t.textStrokeWidth,e.insideRollback=null)}function ue(e,t,n,i,r,o){if(\"function\"==typeof r&&(o=r,r=null),i&&i.isAnimationEnabled()){var a=e?\"Update\":\"\",s=i.getShallow(\"animationDuration\"+a),l=i.getShallow(\"animationEasing\"+a),u=i.getShallow(\"animationDelay\"+a);\"function\"==typeof u&&(u=u(r,i.getAnimationDelayParams?i.getAnimationDelayParams(t,r):null)),\"function\"==typeof s&&(s=s(r)),s>0?t.animateTo(n,s,u||0,l,o,!!o):(t.stopAnimation(),t.attr(n),o&&o())}else t.stopAnimation(),t.attr(n),o&&o()}function ce(e,t,n,i,r){ue(!0,e,t,n,i,r)}function he(e,t,n){return t&&!i.isArrayLike(t)&&(t=u.getLocalTransform(t)),n&&(t=a.invert([],t)),s.applyTransform([],e,t)}function de(e,t,n,i,r,o,a,s){var l,u=n-e,c=i-t,h=a-r,d=s-o,f=fe(h,d,u,c);if((l=f)<=1e-6&&l>=-1e-6)return!1;var p=e-r,g=t-o,m=fe(p,g,u,c)/f;if(m<0||m>1)return!1;var v=fe(p,g,h,d)/f;return!(v<0||v>1)}function fe(e,t,n,i){return e*i-n*t}B(\"circle\",f),B(\"sector\",p),B(\"ring\",g),B(\"polygon\",m),B(\"polyline\",v),B(\"rect\",y),B(\"line\",b),B(\"bezierCurve\",x),B(\"arc\",_),t.Z2_EMPHASIS_LIFT=O,t.CACHED_LABEL_STYLE_PROPERTIES={color:\"textFill\",textBorderColor:\"textStroke\",textBorderWidth:\"textStrokeWidth\"},t.extendShape=function(e){return l.extend(e)},t.extendPath=function(e,t){return r.extendFromString(e,t)},t.registerShape=B,t.getShapeClass=function(e){if(R.hasOwnProperty(e))return R[e]},t.makePath=z,t.makeImage=function(e,t,n){var i=new c({style:{image:e,x:t.x,y:t.y,width:t.width,height:t.height},onload:function(e){if(\"center\"===n){var r={width:e.width,height:e.height};i.setStyle(F(t,r))}}});return i},t.mergePath=$,t.resizePath=V,t.subPixelOptimizeLine=function(e){return M.subPixelOptimizeLine(e.shape,e.shape,e.style),e},t.subPixelOptimizeRect=function(e){return M.subPixelOptimizeRect(e.shape,e.shape,e.style),e},t.subPixelOptimize=j,t.setElementHoverStyle=K,t.setHoverStyle=function(e,t){ne(e,!0),X(e,K,t)},t.setAsHighDownDispatcher=ne,t.isHighDownDispatcher=function(e){return!(!e||!e.__highDownDispatcher)},t.getHighlightDigit=function(e){var t=N[e];return null==t&&P<=32&&(t=N[e]=P++),t},t.setLabelStyle=function(e,t,n,r,o,a,s){var l,u=(o=o||I).labelFetcher,c=o.labelDataIndex,h=o.labelDimIndex,d=o.labelProp,f=n.getShallow(\"show\"),p=r.getShallow(\"show\");(f||p)&&(u&&(l=u.getFormattedLabel(c,\"normal\",null,h,d)),null==l&&(l=i.isFunction(o.defaultText)?o.defaultText(c,o):o.defaultText));var g=f?l:null,m=p?i.retrieve2(u?u.getFormattedLabel(c,\"emphasis\",null,h,d):null,l):null;null==g&&null==m||(ie(e,n,a,o),ie(t,r,s,o,!0)),e.text=g,t.text=m},t.modifyLabelStyle=function(e,t,n){var r=e.style;t&&(le(r),e.setStyle(t),se(r)),r=e.__hoverStl,n&&r&&(le(r),i.extend(r,n),se(r))},t.setTextStyle=ie,t.setText=function(e,t,n){var i,r={isRectText:!0};!1===n?i=!0:r.autoColor=n,re(e,t,r,i)},t.getFont=function(e,t){var n=t&&t.getModel(\"textStyle\");return i.trim([e.fontStyle||n&&n.getShallow(\"fontStyle\")||\"\",e.fontWeight||n&&n.getShallow(\"fontWeight\")||\"\",(e.fontSize||n&&n.getShallow(\"fontSize\")||12)+\"px\",e.fontFamily||n&&n.getShallow(\"fontFamily\")||\"sans-serif\"].join(\" \"))},t.updateProps=ce,t.initProps=function(e,t,n,i,r){ue(!1,e,t,n,i,r)},t.getTransform=function(e,t){for(var n=a.identity([]);e&&e!==t;)a.mul(n,e.getLocalTransform(),n),e=e.parent;return n},t.applyTransform=he,t.transformDirection=function(e,t,n){var i=0===t[4]||0===t[5]||0===t[0]?1:Math.abs(2*t[4]/t[0]),r=0===t[4]||0===t[5]||0===t[2]?1:Math.abs(2*t[4]/t[2]),o=[\"left\"===e?-i:\"right\"===e?i:0,\"top\"===e?-r:\"bottom\"===e?r:0];return o=he(o,t,n),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?\"right\":\"left\":o[1]>0?\"bottom\":\"top\"},t.groupTransition=function(e,t,n,r){if(e&&t){var o,a=(o={},e.traverse(function(e){!e.isGroup&&e.anid&&(o[e.anid]=e)}),o);t.traverse(function(e){if(!e.isGroup&&e.anid){var t=a[e.anid];if(t){var i=l(e);e.attr(l(t)),ce(e,i,n,e.dataIndex)}}})}function l(e){var t={position:s.clone(e.position),rotation:e.rotation};return e.shape&&(t.shape=i.extend({},e.shape)),t}},t.clipPointsByRect=function(e,t){return i.map(e,function(e){var n=e[0];n=D(n,t.x),n=A(n,t.x+t.width);var i=e[1];return i=D(i,t.y),[n,i=A(i,t.y+t.height)]})},t.clipRectByRect=function(e,t){var n=D(e.x,t.x),i=A(e.x+e.width,t.x+t.width),r=D(e.y,t.y),o=A(e.y+e.height,t.y+t.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}},t.createIcon=function(e,t,n){var r=(t=i.extend({rectHover:!0},t)).style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},e)return 0===e.indexOf(\"image://\")?(r.image=e.slice(8),i.defaults(r,n),new c(t)):z(e.replace(\"path://\",\"\"),t,n,\"center\")},t.linePolygonIntersect=function(e,t,n,i,r){for(var o=0,a=r[r.length-1];o<r.length;o++){var s=r[o];if(de(e,t,n,i,s[0],s[1],a[0],a[1]))return!0;a=s}},t.lineLineIntersect=de},\"1A4n\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"Ylhr\");function a(e,t,n,i){var r=t.getData(),o=this.dataIndex,a=r.getName(o),l=t.get(\"selectedOffset\");i.dispatchAction({type:\"pieToggleSelect\",from:e,name:a,seriesId:t.id}),r.each(function(e){s(r.getItemGraphicEl(e),r.getItemLayout(e),t.isSelected(r.getName(e)),l,n)})}function s(e,t,n,i,r){var o=(t.startAngle+t.endAngle)/2,a=Math.cos(o),s=Math.sin(o),l=n?i:0,u=[a*l,s*l];r?e.animate().when(200,{position:u}).start(\"bounceOut\"):e.attr(\"position\",u)}function l(e,t){r.Group.call(this);var n=new r.Sector({z2:2}),i=new r.Polyline,o=new r.Text;this.add(n),this.add(i),this.add(o),this.updateData(e,t,!0)}var u=l.prototype;u.updateData=function(e,t,n){var o=this.childAt(0),a=this.childAt(1),l=this.childAt(2),u=e.hostModel,c=e.getItemModel(t),h=e.getItemLayout(t),d=i.extend({},h);d.label=null;var f=u.getShallow(\"animationTypeUpdate\");n?(o.setShape(d),\"scale\"===u.getShallow(\"animationType\")?(o.shape.r=h.r0,r.initProps(o,{shape:{r:h.r}},u,t)):(o.shape.endAngle=h.startAngle,r.updateProps(o,{shape:{endAngle:h.endAngle}},u,t))):\"expansion\"===f?o.setShape(d):r.updateProps(o,{shape:d},u,t);var p=e.getItemVisual(t,\"color\");o.useStyle(i.defaults({lineJoin:\"bevel\",fill:p},c.getModel(\"itemStyle\").getItemStyle())),o.hoverStyle=c.getModel(\"emphasis.itemStyle\").getItemStyle();var g=c.getShallow(\"cursor\");g&&o.attr(\"cursor\",g),s(this,e.getItemLayout(t),u.isSelected(e.getName(t)),u.get(\"selectedOffset\"),u.get(\"animation\"));var m=!n&&\"transition\"===f;this._updateLabel(e,t,m),this.highDownOnUpdate=u.get(\"silent\")?null:function(e,t){var n=u.isAnimationEnabled()&&c.get(\"hoverAnimation\");\"emphasis\"===t?(a.ignore=a.hoverIgnore,l.ignore=l.hoverIgnore,n&&(o.stopAnimation(!0),o.animateTo({shape:{r:h.r+u.get(\"hoverOffset\")}},300,\"elasticOut\"))):(a.ignore=a.normalIgnore,l.ignore=l.normalIgnore,n&&(o.stopAnimation(!0),o.animateTo({shape:{r:h.r}},300,\"elasticOut\")))},r.setHoverStyle(this)},u._updateLabel=function(e,t,n){var i=this.childAt(1),o=this.childAt(2),a=e.hostModel,s=e.getItemModel(t),l=e.getItemLayout(t).label,u=e.getItemVisual(t,\"color\");if(!l||isNaN(l.x)||isNaN(l.y))o.ignore=o.normalIgnore=o.hoverIgnore=i.ignore=i.normalIgnore=i.hoverIgnore=!0;else{var c={points:l.linePoints||[[l.x,l.y],[l.x,l.y],[l.x,l.y]]},h={x:l.x,y:l.y};n?(r.updateProps(i,{shape:c},a,t),r.updateProps(o,{style:h},a,t)):(i.attr({shape:c}),o.attr({style:h})),o.attr({rotation:l.rotation,origin:[l.x,l.y],z2:10});var d=s.getModel(\"label\"),f=s.getModel(\"emphasis.label\"),p=s.getModel(\"labelLine\"),g=s.getModel(\"emphasis.labelLine\");u=e.getItemVisual(t,\"color\");r.setLabelStyle(o.style,o.hoverStyle={},d,f,{labelFetcher:e.hostModel,labelDataIndex:t,defaultText:l.text,autoColor:u,useInsideStyle:!!l.inside},{textAlign:l.textAlign,textVerticalAlign:l.verticalAlign,opacity:e.getItemVisual(t,\"opacity\")}),o.ignore=o.normalIgnore=!d.get(\"show\"),o.hoverIgnore=!f.get(\"show\"),i.ignore=i.normalIgnore=!p.get(\"show\"),i.hoverIgnore=!g.get(\"show\"),i.setStyle({stroke:u,opacity:e.getItemVisual(t,\"opacity\")}),i.setStyle(p.getModel(\"lineStyle\").getLineStyle()),i.hoverStyle=g.getModel(\"lineStyle\").getLineStyle();var m=p.get(\"smooth\");m&&!0===m&&(m=.4),i.setShape({smooth:m})}},i.inherits(l,r.Group);var c=o.extend({type:\"pie\",init:function(){var e=new r.Group;this._sectorGroup=e},render:function(e,t,n,r){if(!r||r.from!==this.uid){var o=e.getData(),s=this._data,u=this.group,c=t.get(\"animation\"),h=!s,d=e.get(\"animationType\"),f=e.get(\"animationTypeUpdate\"),p=i.curry(a,this.uid,e,c,n),g=e.get(\"selectedMode\");if(o.diff(s).add(function(e){var t=new l(o,e);h&&\"scale\"!==d&&t.eachChild(function(e){e.stopAnimation(!0)}),g&&t.on(\"click\",p),o.setItemGraphicEl(e,t),u.add(t)}).update(function(e,t){var n=s.getItemGraphicEl(t);h||\"transition\"===f||n.eachChild(function(e){e.stopAnimation(!0)}),n.updateData(o,e),n.off(\"click\"),g&&n.on(\"click\",p),u.add(n),o.setItemGraphicEl(e,n)}).remove(function(e){var t=s.getItemGraphicEl(e);u.remove(t)}).execute(),c&&o.count()>0&&(h?\"scale\"!==d:\"transition\"!==f)){for(var m=o.getItemLayout(0),v=1;isNaN(m.startAngle)&&v<o.count();++v)m=o.getItemLayout(v);var y=Math.max(n.getWidth(),n.getHeight())/2,b=i.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(m.cx,m.cy,y,m.startAngle,m.clockwise,b,e,h))}else u.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(e,t,n,i,o,a,s,l){var u=new r.Sector({shape:{cx:e,cy:t,r0:0,r:n,startAngle:i,endAngle:i,clockwise:o}});return(l?r.initProps:r.updateProps)(u,{shape:{endAngle:i+(o?1:-1)*Math.PI*2}},s,a),u},containPoint:function(e,t){var n=t.getData().getItemLayout(0);if(n){var i=e[0]-n.cx,r=e[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}}});e.exports=c},\"1DJE\":function(e,t,n){var i=n(\"/gxq\");var r=function(e){null!=e&&i.extend(this,e),this.otherDims={}};e.exports=r},\"1FNb\":function(e,t,n){var i=n(\"Icdr\");n(\"z81E\"),n(\"0nGg\"),n(\"iZVd\");var r=n(\"T6W2\"),o=n(\"AjK0\"),a=n(\"akwy\"),s=n(\"TXKS\"),l=n(\"4RQY\"),u=n(\"NAKW\"),c=n(\"pzOI\"),h=n(\"KGuM\");i.registerProcessor(r),i.registerVisual(o(\"graph\",\"circle\",null)),i.registerVisual(a),i.registerVisual(s),i.registerLayout(l),i.registerLayout(i.PRIORITY.VISUAL.POST_CHART_LAYOUT,u),i.registerLayout(c),i.registerCoordinateSystem(\"graphView\",{create:h})},\"1Hui\":function(e,t){function n(e){return e}function i(e,t,i,r,o){this._old=e,this._new=t,this._oldKeyGetter=i||n,this._newKeyGetter=r||n,this.context=o}function r(e,t,n,i,r){for(var o=0;o<e.length;o++){var a=\"_ec_\"+r[i](e[o],o),s=t[a];null==s?(n.push(a),t[a]=o):(s.length||(t[a]=s=[s]),s.push(o))}}i.prototype={constructor:i,add:function(e){return this._add=e,this},update:function(e){return this._update=e,this},remove:function(e){return this._remove=e,this},execute:function(){var e=this._old,t=this._new,n={},i=[],o=[];for(r(e,{},i,\"_oldKeyGetter\",this),r(t,n,o,\"_newKeyGetter\",this),a=0;a<e.length;a++){if(null!=(l=n[s=i[a]]))(c=l.length)?(1===c&&(n[s]=null),l=l.shift()):n[s]=null,this._update&&this._update(l,a);else this._remove&&this._remove(a)}for(var a=0;a<o.length;a++){var s=o[a];if(n.hasOwnProperty(s)){var l;if(null==(l=n[s]))continue;if(l.length)for(var u=0,c=l.length;u<c;u++)this._add&&this._add(l[u]);else this._add&&this._add(l)}}}};var o=i;e.exports=o},\"1Nix\":function(e,t,n){var i=n(\"/gxq\").map,r=n(\"CqCN\"),o=n(\"qVJQ\").isDimensionStacked;e.exports=function(e){return{seriesType:e,plan:r(),reset:function(e){var t=e.getData(),n=e.coordinateSystem,r=e.pipelineContext.large;if(n){var a=i(n.dimensions,function(e){return t.mapDimension(e)}).slice(0,2),s=a.length,l=t.getCalculationInfo(\"stackResultDimension\");return o(t,a[0])&&(a[0]=l),o(t,a[1])&&(a[1]=l),s&&{progress:function(e,t){for(var i=e.end-e.start,o=r&&new Float32Array(i*s),l=e.start,u=0,c=[],h=[];l<e.end;l++){var d;if(1===s){var f=t.get(a[0],l);d=!isNaN(f)&&n.dataToPoint(f,null,h)}else{f=c[0]=t.get(a[0],l);var p=c[1]=t.get(a[1],l);d=!isNaN(f)&&!isNaN(p)&&n.dataToPoint(c,null,h)}r?(o[u++]=d?d[0]:NaN,o[u++]=d?d[1]:NaN):t.setItemLayout(l,d&&d.slice()||[NaN,NaN])}r&&t.setLayout(\"symbolPoints\",o)}}}}}}},\"1VkX\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"Ylhr\"),o=n(\"0sHC\"),a=n(\"GxVO\"),s=n(\"DDYI\").createClipPath,l=[\"itemStyle\"],u=[\"emphasis\",\"itemStyle\"],c=[\"color\",\"color0\",\"borderColor\",\"borderColor0\"],h=r.extend({type:\"candlestick\",render:function(e,t,n){this.group.removeClipPath(),this._updateDrawMode(e),this._isLargeDraw?this._renderLarge(e):this._renderNormal(e)},incrementalPrepareRender:function(e,t,n){this._clear(),this._updateDrawMode(e)},incrementalRender:function(e,t,n,i){this._isLargeDraw?this._incrementalRenderLarge(e,t):this._incrementalRenderNormal(e,t)},_updateDrawMode:function(e){var t=e.pipelineContext.large;(null==this._isLargeDraw||t^this._isLargeDraw)&&(this._isLargeDraw=t,this._clear())},_renderNormal:function(e){var t=e.getData(),n=this._data,i=this.group,r=t.getLayout(\"isSimpleBox\"),a=e.get(\"clip\",!0),s=e.coordinateSystem,l=s.getArea&&s.getArea();this._data||i.removeAll(),t.diff(n).add(function(n){if(t.hasValue(n)){var s,u=t.getItemLayout(n);if(a&&p(l,u))return;s=f(u,n,!0),o.initProps(s,{shape:{points:u.ends}},e,n),g(s,t,n,r),i.add(s),t.setItemGraphicEl(n,s)}}).update(function(s,u){var c=n.getItemGraphicEl(u);if(t.hasValue(s)){var h=t.getItemLayout(s);a&&p(l,h)?i.remove(c):(c?o.updateProps(c,{shape:{points:h.ends}},e,s):c=f(h,s),g(c,t,s,r),i.add(c),t.setItemGraphicEl(s,c))}else i.remove(c)}).remove(function(e){var t=n.getItemGraphicEl(e);t&&i.remove(t)}).execute(),this._data=t},_renderLarge:function(e){this._clear(),v(e,this.group);var t=e.get(\"clip\",!0)?s(e.coordinateSystem,!1,e):null;t?this.group.setClipPath(t):this.group.removeClipPath()},_incrementalRenderNormal:function(e,t){for(var n,i=t.getData(),r=i.getLayout(\"isSimpleBox\");null!=(n=e.next());){var o;g(o=f(i.getItemLayout(n),n),i,n,r),o.incremental=!0,this.group.add(o)}},_incrementalRenderLarge:function(e,t){v(t,this.group,!0)},remove:function(e){this._clear()},_clear:function(){this.group.removeAll(),this._data=null},dispose:i.noop}),d=a.extend({type:\"normalCandlestickBox\",shape:{},buildPath:function(e,t){var n=t.points;this.__simpleBox?(e.moveTo(n[4][0],n[4][1]),e.lineTo(n[6][0],n[6][1])):(e.moveTo(n[0][0],n[0][1]),e.lineTo(n[1][0],n[1][1]),e.lineTo(n[2][0],n[2][1]),e.lineTo(n[3][0],n[3][1]),e.closePath(),e.moveTo(n[4][0],n[4][1]),e.lineTo(n[5][0],n[5][1]),e.moveTo(n[6][0],n[6][1]),e.lineTo(n[7][0],n[7][1]))}});function f(e,t,n){var r=e.ends;return new d({shape:{points:n?function(e,t){return i.map(e,function(e){return(e=e.slice())[1]=t.initBaseline,e})}(r,e):r},z2:100})}function p(e,t){for(var n=!0,i=0;i<t.ends.length;i++)if(e.contain(t.ends[i][0],t.ends[i][1])){n=!1;break}return n}function g(e,t,n,i){var r=t.getItemModel(n),a=r.getModel(l),s=t.getItemVisual(n,\"color\"),h=t.getItemVisual(n,\"borderColor\")||s,d=a.getItemStyle(c);e.useStyle(d),e.style.strokeNoScale=!0,e.style.fill=s,e.style.stroke=h,e.__simpleBox=i;var f=r.getModel(u).getItemStyle();o.setHoverStyle(e,f)}var m=a.extend({type:\"largeCandlestickBox\",shape:{},buildPath:function(e,t){for(var n=t.points,i=0;i<n.length;)if(this.__sign===n[i++]){var r=n[i++];e.moveTo(r,n[i++]),e.lineTo(r,n[i++])}else i+=3}});function v(e,t,n){var i=e.getData(),r=i.getLayout(\"largePoints\"),o=new m({shape:{points:r},__sign:1});t.add(o);var a=new m({shape:{points:r},__sign:-1});t.add(a),y(1,o,e,i),y(-1,a,e,i),n&&(o.incremental=!0,a.incremental=!0)}function y(e,t,n,i){var r=e>0?\"P\":\"N\",o=i.getVisual(\"borderColor\"+r)||i.getVisual(\"color\"+r),a=n.getModel(l).getItemStyle(c);t.useStyle(a),t.style.fill=null,t.style.stroke=o}var b=h;e.exports=b},\"1Xuh\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"8b51\"),o=n(\"wWR3\").parsePercent,a=n(\"HHfb\"),s=i.each,l=[\"left\",\"right\",\"top\",\"bottom\",\"width\",\"height\"],u=[[\"width\",\"left\",\"right\"],[\"height\",\"top\",\"bottom\"]];function c(e,t,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;t.eachChild(function(l,u){var c,h,d=l.position,f=l.getBoundingRect(),p=t.childAt(u+1),g=p&&p.getBoundingRect();if(\"horizontal\"===e){var m=f.width+(g?-g.x+f.x:0);(c=o+m)>i||l.newline?(o=0,c=m,a+=s+n,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(h=a+v)>r||l.newline?(o+=s+n,a=0,h=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=o,d[1]=a,\"horizontal\"===e?o=c+n:a=h+n)})}var h=c,d=i.curry(c,\"vertical\"),f=i.curry(c,\"horizontal\");function p(e,t,n){n=a.normalizeCssArray(n||0);var i=t.width,s=t.height,l=o(e.left,i),u=o(e.top,s),c=o(e.right,i),h=o(e.bottom,s),d=o(e.width,i),f=o(e.height,s),p=n[2]+n[0],g=n[1]+n[3],m=e.aspect;switch(isNaN(d)&&(d=i-c-g-l),isNaN(f)&&(f=s-h-p-u),null!=m&&(isNaN(d)&&isNaN(f)&&(m>i/s?d=.8*i:f=.8*s),isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(l)&&(l=i-c-d-g),isNaN(u)&&(u=s-h-f-p),e.left||e.right){case\"center\":l=i/2-d/2-n[3];break;case\"right\":l=i-d-g}switch(e.top||e.bottom){case\"middle\":case\"center\":u=s/2-f/2-n[0];break;case\"bottom\":u=s-f-p}l=l||0,u=u||0,isNaN(d)&&(d=i-g-l-(c||0)),isNaN(f)&&(f=s-p-u-(h||0));var v=new r(l+n[3],u+n[0],d,f);return v.margin=n,v}function g(e,t){return t&&e&&s(l,function(n){t.hasOwnProperty(n)&&(e[n]=t[n])}),e}t.LOCATION_PARAMS=l,t.HV_NAMES=u,t.box=h,t.vbox=d,t.hbox=f,t.getAvailableSize=function(e,t,n){var i=t.width,r=t.height,s=o(e.x,i),l=o(e.y,r),u=o(e.x2,i),c=o(e.y2,r);return(isNaN(s)||isNaN(parseFloat(e.x)))&&(s=0),(isNaN(u)||isNaN(parseFloat(e.x2)))&&(u=i),(isNaN(l)||isNaN(parseFloat(e.y)))&&(l=0),(isNaN(c)||isNaN(parseFloat(e.y2)))&&(c=r),n=a.normalizeCssArray(n||0),{width:Math.max(u-s-n[1]-n[3],0),height:Math.max(c-l-n[0]-n[2],0)}},t.getLayoutRect=p,t.positionElement=function(e,t,n,o,a){var s=!a||!a.hv||a.hv[0],l=!a||!a.hv||a.hv[1],u=a&&a.boundingMode||\"all\";if(s||l){var c;if(\"raw\"===u)c=\"group\"===e.type?new r(0,0,+t.width||0,+t.height||0):e.getBoundingRect();else if(c=e.getBoundingRect(),e.needLocalTransform()){var h=e.getLocalTransform();(c=c.clone()).applyTransform(h)}t=p(i.defaults({width:c.width,height:c.height},t),n,o);var d=e.position,f=s?t.x-c.x:0,g=l?t.y-c.y:0;e.attr(\"position\",\"raw\"===u?[f,g]:[d[0]+f,d[1]+g])}},t.sizeCalculable=function(e,t){return null!=e[u[t][0]]||null!=e[u[t][1]]&&null!=e[u[t][2]]},t.mergeLayoutParam=function(e,t,n){!i.isObject(n)&&(n={});var r=n.ignoreSize;!i.isArray(r)&&(r=[r,r]);var o=l(u[0],0),a=l(u[1],1);function l(n,i){var o={},a=0,l={},u=0;if(s(n,function(t){l[t]=e[t]}),s(n,function(e){c(t,e)&&(o[e]=l[e]=t[e]),h(o,e)&&a++,h(l,e)&&u++}),r[i])return h(t,n[1])?l[n[2]]=null:h(t,n[2])&&(l[n[1]]=null),l;if(2!==u&&a){if(a>=2)return o;for(var d=0;d<n.length;d++){var f=n[d];if(!c(o,f)&&c(e,f)){o[f]=e[f];break}}return o}return l}function c(e,t){return e.hasOwnProperty(t)}function h(e,t){return null!=e[t]&&\"auto\"!==e[t]}function d(e,t,n){s(e,function(e){t[e]=n[e]})}d(u[0],e,o),d(u[1],e,a)},t.getLayoutParams=function(e){return g({},e)},t.copyLayoutParams=g},\"1bHA\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"kK7q\").createSymbol,o=n(\"0sHC\"),a=n(\"wWR3\").parsePercent,s=n(\"RjA7\").getDefaultLabel;function l(e,t,n){o.Group.call(this),this.updateData(e,t,n)}var u=l.prototype,c=l.getSymbolSize=function(e,t){var n=e.getItemVisual(t,\"symbolSize\");return n instanceof Array?n.slice():[+n,+n]};function h(e){return[e[0]/2,e[1]/2]}function d(e,t){this.parent.drift(e,t)}u._createSymbol=function(e,t,n,i,o){this.removeAll();var a=t.getItemVisual(n,\"color\"),s=r(e,-1,-1,2,2,a,o);s.attr({z2:100,culling:!0,scale:h(i)}),s.drift=d,this._symbolType=e,this.add(s)},u.stopSymbolAnimation=function(e){this.childAt(0).stopAnimation(e)},u.getSymbolPath=function(){return this.childAt(0)},u.getScale=function(){return this.childAt(0).scale},u.highlight=function(){this.childAt(0).trigger(\"emphasis\")},u.downplay=function(){this.childAt(0).trigger(\"normal\")},u.setZ=function(e,t){var n=this.childAt(0);n.zlevel=e,n.z=t},u.setDraggable=function(e){var t=this.childAt(0);t.draggable=e,t.cursor=e?\"move\":t.cursor},u.updateData=function(e,t,n){this.silent=!1;var i=e.getItemVisual(t,\"symbol\")||\"circle\",r=e.hostModel,a=c(e,t),s=i!==this._symbolType;if(s){var l=e.getItemVisual(t,\"symbolKeepAspect\");this._createSymbol(i,e,t,a,l)}else{(u=this.childAt(0)).silent=!1,o.updateProps(u,{scale:h(a)},r,t)}if(this._updateCommon(e,t,a,n),s){var u=this.childAt(0),d=n&&n.fadeIn,f={scale:u.scale.slice()};d&&(f.style={opacity:u.style.opacity}),u.scale=[0,0],d&&(u.style.opacity=0),o.initProps(u,f,r,t)}this._seriesModel=r};var f=[\"itemStyle\"],p=[\"emphasis\",\"itemStyle\"],g=[\"label\"],m=[\"emphasis\",\"label\"];function v(e,t){if(!this.incremental&&!this.useHoverLayer)if(\"emphasis\"===t){var n=this.__symbolOriginalScale,i=n[1]/n[0],r={scale:[Math.max(1.1*n[0],n[0]+3),Math.max(1.1*n[1],n[1]+3*i)]};this.animateTo(r,400,\"elasticOut\")}else\"normal\"===t&&this.animateTo({scale:this.__symbolOriginalScale},400,\"elasticOut\")}u._updateCommon=function(e,t,n,r){var l=this.childAt(0),u=e.hostModel,c=e.getItemVisual(t,\"color\");\"image\"!==l.type?l.useStyle({strokeNoScale:!0}):l.setStyle({opacity:null,shadowBlur:null,shadowOffsetX:null,shadowOffsetY:null,shadowColor:null});var d=r&&r.itemStyle,y=r&&r.hoverItemStyle,b=r&&r.symbolOffset,x=r&&r.labelModel,_=r&&r.hoverLabelModel,w=r&&r.hoverAnimation,C=r&&r.cursorStyle;if(!r||e.hasItemOption){var S=r&&r.itemModel?r.itemModel:e.getItemModel(t);d=S.getModel(f).getItemStyle([\"color\"]),y=S.getModel(p).getItemStyle(),b=S.getShallow(\"symbolOffset\"),x=S.getModel(g),_=S.getModel(m),w=S.getShallow(\"hoverAnimation\"),C=S.getShallow(\"cursor\")}else y=i.extend({},y);var k=l.style,T=e.getItemVisual(t,\"symbolRotate\");l.attr(\"rotation\",(T||0)*Math.PI/180||0),b&&l.attr(\"position\",[a(b[0],n[0]),a(b[1],n[1])]),C&&l.attr(\"cursor\",C),l.setColor(c,r&&r.symbolInnerColor),l.setStyle(d);var M=e.getItemVisual(t,\"opacity\");null!=M&&(k.opacity=M);var D=e.getItemVisual(t,\"liftZ\"),A=l.__z2Origin;null!=D?null==A&&(l.__z2Origin=l.z2,l.z2+=D):null!=A&&(l.z2=A,l.__z2Origin=null);var I=r&&r.useNameLabel;o.setLabelStyle(k,y,x,_,{labelFetcher:u,labelDataIndex:t,defaultText:function(t,n){return I?e.getName(t):s(e,t)},isRectText:!0,autoColor:c}),l.__symbolOriginalScale=h(n),l.hoverStyle=y,l.highDownOnUpdate=w&&u.isAnimationEnabled()?v:null,o.setHoverStyle(l)},u.fadeOut=function(e,t){var n=this.childAt(0);this.silent=n.silent=!0,(!t||!t.keepLabel)&&(n.style.text=null),o.updateProps(n,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,e)},i.inherits(l,o.Group);var y=l;e.exports=y},\"1bf2\":function(e,t,n){n(\"PBlc\"),n(\"rFvp\")},\"1kS7\":function(e,t){t.f=Object.getOwnPropertySymbols},\"1oZe\":function(e,t,n){\"use strict\";t.__esModule=!0,t.default=function(e){return{methods:{focus:function(){this.$refs[e].focus()}}}}},\"1uRk\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"BNYN\").enableClassCheck;function o(e){return\"_EC_\"+e}var a=function(e){this._directed=e||!1,this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this.data,this.edgeData},s=a.prototype;function l(e,t){this.id=null==e?\"\":e,this.inEdges=[],this.outEdges=[],this.edges=[],this.hostGraph,this.dataIndex=null==t?-1:t}function u(e,t,n){this.node1=e,this.node2=t,this.dataIndex=null==n?-1:n}s.type=\"graph\",s.isDirected=function(){return this._directed},s.addNode=function(e,t){e=null==e?\"\"+t:\"\"+e;var n=this._nodesMap;if(!n[o(e)]){var i=new l(e,t);return i.hostGraph=this,this.nodes.push(i),n[o(e)]=i,i}},s.getNodeByIndex=function(e){var t=this.data.getRawIndex(e);return this.nodes[t]},s.getNodeById=function(e){return this._nodesMap[o(e)]},s.addEdge=function(e,t,n){var i=this._nodesMap,r=this._edgesMap;if(\"number\"==typeof e&&(e=this.nodes[e]),\"number\"==typeof t&&(t=this.nodes[t]),l.isInstance(e)||(e=i[o(e)]),l.isInstance(t)||(t=i[o(t)]),e&&t){var a=e.id+\"-\"+t.id;if(!r[a]){var s=new u(e,t,n);return s.hostGraph=this,this._directed&&(e.outEdges.push(s),t.inEdges.push(s)),e.edges.push(s),e!==t&&t.edges.push(s),this.edges.push(s),r[a]=s,s}}},s.getEdgeByIndex=function(e){var t=this.edgeData.getRawIndex(e);return this.edges[t]},s.getEdge=function(e,t){l.isInstance(e)&&(e=e.id),l.isInstance(t)&&(t=t.id);var n=this._edgesMap;return this._directed?n[e+\"-\"+t]:n[e+\"-\"+t]||n[t+\"-\"+e]},s.eachNode=function(e,t){for(var n=this.nodes,i=n.length,r=0;r<i;r++)n[r].dataIndex>=0&&e.call(t,n[r],r)},s.eachEdge=function(e,t){for(var n=this.edges,i=n.length,r=0;r<i;r++)n[r].dataIndex>=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&e.call(t,n[r],r)},s.breadthFirstTraverse=function(e,t,n,i){if(l.isInstance(t)||(t=this._nodesMap[o(t)]),t){for(var r=\"out\"===n?\"outEdges\":\"in\"===n?\"inEdges\":\"edges\",a=0;a<this.nodes.length;a++)this.nodes[a].__visited=!1;if(!e.call(i,t,null))for(var s=[t];s.length;){var u=s.shift(),c=u[r];for(a=0;a<c.length;a++){var h=c[a],d=h.node1===u?h.node2:h.node1;if(!d.__visited){if(e.call(i,d,u))return;s.push(d),d.__visited=!0}}}}},s.update=function(){for(var e=this.data,t=this.edgeData,n=this.nodes,i=this.edges,r=0,o=n.length;r<o;r++)n[r].dataIndex=-1;for(r=0,o=e.count();r<o;r++)n[e.getRawIndex(r)].dataIndex=r;t.filterSelf(function(e){var n=i[t.getRawIndex(e)];return n.node1.dataIndex>=0&&n.node2.dataIndex>=0});for(r=0,o=i.length;r<o;r++)i[r].dataIndex=-1;for(r=0,o=t.count();r<o;r++)i[t.getRawIndex(r)].dataIndex=r},s.clone=function(){for(var e=new a(this._directed),t=this.nodes,n=this.edges,i=0;i<t.length;i++)e.addNode(t[i].id,t[i].dataIndex);for(i=0;i<n.length;i++){var r=n[i];e.addEdge(r.node1.id,r.node2.id,r.dataIndex)}return e},l.prototype={constructor:l,degree:function(){return this.edges.length},inDegree:function(){return this.inEdges.length},outDegree:function(){return this.outEdges.length},getModel:function(e){if(!(this.dataIndex<0))return this.hostGraph.data.getItemModel(this.dataIndex).getModel(e)}},u.prototype.getModel=function(e){if(!(this.dataIndex<0))return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(e)};var c=function(e,t){return{getValue:function(n){var i=this[e][t];return i.get(i.getDimension(n||\"value\"),this.dataIndex)},setVisual:function(n,i){this.dataIndex>=0&&this[e][t].setItemVisual(this.dataIndex,n,i)},getVisual:function(n,i){return this[e][t].getItemVisual(this.dataIndex,n,i)},setLayout:function(n,i){this.dataIndex>=0&&this[e][t].setItemLayout(this.dataIndex,n,i)},getLayout:function(){return this[e][t].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[e][t].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[e][t].getRawIndex(this.dataIndex)}}};i.mixin(l,c(\"hostGraph\",\"data\")),i.mixin(u,c(\"hostGraph\",\"edgeData\")),a.Node=l,a.Edge=u,r(l),r(u);var h=a;e.exports=h},\"28kU\":function(e,t){t.ContextCachedBy={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},t.WILL_BE_RESTORED=9},\"2HcM\":function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=i.map,a=n(\"wWR3\"),s=a.linearMap,l=a.getPixelPrecision,u=a.round,c=n(\"SiPa\"),h=c.createAxisTicks,d=c.createAxisLabels,f=c.calculateCategoryInterval,p=[0,1],g=function(e,t,n){this.dim=e,this.scale=t,this._extent=n||[0,0],this.inverse=!1,this.onBand=!1};function m(e,t){var n=(e[1]-e[0])/t/2;e[0]+=n,e[1]-=n}g.prototype={constructor:g,contain:function(e){var t=this._extent,n=Math.min(t[0],t[1]),i=Math.max(t[0],t[1]);return e>=n&&e<=i},containData:function(e){return this.scale.contain(e)},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(e){return l(e||this.scale.getExtent(),this._extent)},setExtent:function(e,t){var n=this._extent;n[0]=e,n[1]=t},dataToCoord:function(e,t){var n=this._extent,i=this.scale;return e=i.normalize(e),this.onBand&&\"ordinal\"===i.type&&m(n=n.slice(),i.count()),s(e,p,n,t)},coordToData:function(e,t){var n=this._extent,i=this.scale;this.onBand&&\"ordinal\"===i.type&&m(n=n.slice(),i.count());var r=s(e,n,p,t);return this.scale.scale(r)},pointToData:function(e,t){},getTicksCoords:function(e){var t=(e=e||{}).tickModel||this.getTickModel(),n=h(this,t).ticks,i=o(n,function(e){return{coord:this.dataToCoord(e),tickValue:e}},this);return function(e,t,n,i){var o=t.length;if(!e.onBand||n||!o)return;var a,s,l=e.getExtent();if(1===o)t[0].coord=l[0],a=t[1]={coord:l[0]};else{var c=t[o-1].tickValue-t[0].tickValue,h=(t[o-1].coord-t[0].coord)/c;r(t,function(e){e.coord-=h/2});var d=e.scale.getExtent();s=1+d[1]-t[o-1].tickValue,a={coord:t[o-1].coord+h*s},t.push(a)}var f=l[0]>l[1];p(t[0].coord,l[0])&&(i?t[0].coord=l[0]:t.shift());i&&p(l[0],t[0].coord)&&t.unshift({coord:l[0]});p(l[1],a.coord)&&(i?a.coord=l[1]:t.pop());i&&p(a.coord,l[1])&&t.push({coord:l[1]});function p(e,t){return e=u(e),t=u(t),f?e>t:e<t}}(this,i,t.get(\"alignWithLabel\"),e.clamp),i},getMinorTicksCoords:function(){if(\"ordinal\"===this.scale.type)return[];var e=this.model.getModel(\"minorTick\").get(\"splitNumber\");e>0&&e<100||(e=5);var t=this.scale.getMinorTicks(e);return o(t,function(e){return o(e,function(e){return{coord:this.dataToCoord(e),tickValue:e}},this)},this)},getViewLabels:function(){return d(this).labels},getLabelModel:function(){return this.model.getModel(\"axisLabel\")},getTickModel:function(){return this.model.getModel(\"axisTick\")},getBandWidth:function(){var e=this._extent,t=this.scale.getExtent(),n=t[1]-t[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(e[1]-e[0]);return Math.abs(i)/n},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return f(this)}};var v=g;e.exports=v},\"2I/p\":function(e,t,n){var i=n(\"ABnm\").normalizeRadian,r=2*Math.PI;t.containStroke=function(e,t,n,o,a,s,l,u,c){if(0===l)return!1;var h=l;u-=e,c-=t;var d=Math.sqrt(u*u+c*c);if(d-h>n||d+h<n)return!1;if(Math.abs(o-a)%r<1e-4)return!0;if(s){var f=o;o=i(a),a=i(f)}else o=i(o),a=i(a);o>a&&(a+=r);var p=Math.atan2(c,u);return p<0&&(p+=r),p>=o&&p<=a||p+r>=o&&p+r<=a}},\"2M5Q\":function(e,t,n){var i=n(\"moDv\"),r=n(\"u+XU\"),o=n(\"LICT\"),a=n(\"oBGI\"),s=n(\"2I/p\"),l=n(\"ABnm\").normalizeRadian,u=n(\"AAi1\"),c=n(\"QxFU\"),h=i.CMD,d=2*Math.PI,f=1e-4;var p=[-1,-1,-1],g=[-1,-1];function m(e,t,n,i,r,o,a,s,l,c){if(c>t&&c>i&&c>o&&c>s||c<t&&c<i&&c<o&&c<s)return 0;var h,d=u.cubicRootAt(t,i,o,s,c,p);if(0===d)return 0;for(var f,m,v=0,y=-1,b=0;b<d;b++){var x=p[b],_=0===x||1===x?.5:1;u.cubicAt(e,n,r,a,x)<l||(y<0&&(y=u.cubicExtrema(t,i,o,s,g),g[1]<g[0]&&y>1&&(void 0,h=g[0],g[0]=g[1],g[1]=h),f=u.cubicAt(t,i,o,s,g[0]),y>1&&(m=u.cubicAt(t,i,o,s,g[1]))),2===y?x<g[0]?v+=f<t?_:-_:x<g[1]?v+=m<f?_:-_:v+=s<m?_:-_:x<g[0]?v+=f<t?_:-_:v+=s<f?_:-_)}return v}function v(e,t,n,i,r,o,a,s){if(s>t&&s>i&&s>o||s<t&&s<i&&s<o)return 0;var l=u.quadraticRootAt(t,i,o,s,p);if(0===l)return 0;var c=u.quadraticExtremum(t,i,o);if(c>=0&&c<=1){for(var h=0,d=u.quadraticAt(t,i,o,c),f=0;f<l;f++){var g=0===p[f]||1===p[f]?.5:1;u.quadraticAt(e,n,r,p[f])<a||(p[f]<c?h+=d<t?g:-g:h+=o<d?g:-g)}return h}g=0===p[0]||1===p[0]?.5:1;return u.quadraticAt(e,n,r,p[0])<a?0:o<t?g:-g}function y(e,t,n,i,r,o,a,s){if((s-=t)>n||s<-n)return 0;var u=Math.sqrt(n*n-s*s);p[0]=-u,p[1]=u;var c=Math.abs(i-r);if(c<1e-4)return 0;if(c%d<1e-4){i=0,r=d;var h=o?1:-1;return a>=p[0]+e&&a<=p[1]+e?h:0}if(o){u=i;i=l(r),r=l(u)}else i=l(i),r=l(r);i>r&&(r+=d);for(var f=0,g=0;g<2;g++){var m=p[g];if(m+e>a){var v=Math.atan2(s,m);h=o?1:-1;v<0&&(v=d+v),(v>=i&&v<=r||v+d>=i&&v+d<=r)&&(v>Math.PI/2&&v<1.5*Math.PI&&(h=-h),f+=h)}}return f}function b(e,t,n,i,l){for(var u,d,p=0,g=0,b=0,x=0,_=0,w=0;w<e.length;){var C=e[w++];switch(C===h.M&&w>1&&(n||(p+=c(g,b,x,_,i,l))),1===w&&(x=g=e[w],_=b=e[w+1]),C){case h.M:g=x=e[w++],b=_=e[w++];break;case h.L:if(n){if(r.containStroke(g,b,e[w],e[w+1],t,i,l))return!0}else p+=c(g,b,e[w],e[w+1],i,l)||0;g=e[w++],b=e[w++];break;case h.C:if(n){if(o.containStroke(g,b,e[w++],e[w++],e[w++],e[w++],e[w],e[w+1],t,i,l))return!0}else p+=m(g,b,e[w++],e[w++],e[w++],e[w++],e[w],e[w+1],i,l)||0;g=e[w++],b=e[w++];break;case h.Q:if(n){if(a.containStroke(g,b,e[w++],e[w++],e[w],e[w+1],t,i,l))return!0}else p+=v(g,b,e[w++],e[w++],e[w],e[w+1],i,l)||0;g=e[w++],b=e[w++];break;case h.A:var S=e[w++],k=e[w++],T=e[w++],M=e[w++],D=e[w++],A=e[w++];w+=1;var I=1-e[w++],O=Math.cos(D)*T+S,E=Math.sin(D)*M+k;w>1?p+=c(g,b,O,E,i,l):(x=O,_=E);var L=(i-S)*M/T+S;if(n){if(s.containStroke(S,k,M,D,D+A,I,t,L,l))return!0}else p+=y(S,k,M,D,D+A,I,L,l);g=Math.cos(D+A)*T+S,b=Math.sin(D+A)*M+k;break;case h.R:x=g=e[w++],_=b=e[w++];O=x+e[w++],E=_+e[w++];if(n){if(r.containStroke(x,_,O,_,t,i,l)||r.containStroke(O,_,O,E,t,i,l)||r.containStroke(O,E,x,E,t,i,l)||r.containStroke(x,E,x,_,t,i,l))return!0}else p+=c(O,_,O,E,i,l),p+=c(x,E,x,_,i,l);break;case h.Z:if(n){if(r.containStroke(g,b,x,_,t,i,l))return!0}else p+=c(g,b,x,_,i,l);g=x,b=_}}return n||(u=b,d=_,Math.abs(u-d)<f)||(p+=c(g,b,x,_,i,l)||0),0!==p}t.contain=function(e,t,n){return b(e,0,!1,t,n)},t.containStroke=function(e,t,n,i){return b(e,t,!0,n,i)}},\"2Ow2\":function(e,t,n){var i=n(\"0sHC\"),r=.3;function o(e,t,n,i){for(var r,o=[],a=0;a<n.length;a++){var s=n[a],l=e.get(e.mapDimension(s),t);r=l,(\"category\"===i.getAxis(s).type?null==r:null==r||isNaN(r))||o.push(i.dataToPoint(l,s))}return o}function a(e,t,n,r,a){var s=o(e,n,r,a),l=new i.Polyline({shape:{points:s},silent:!0,z2:10});return t.add(l),e.setItemGraphicEl(n,l),l}function s(e){var t=e.get(\"smooth\",!0);return!0===t&&(t=r),{lineStyle:e.getModel(\"lineStyle\").getLineStyle(),smooth:null!=t?t:r}}function l(e,t,n,i){var r=i.lineStyle;t.hasItemOption&&(r=t.getItemModel(n).getModel(\"lineStyle\").getLineStyle());e.useStyle(r);var o=e.style;o.fill=null,o.stroke=t.getItemVisual(n,\"color\"),o.opacity=t.getItemVisual(n,\"opacity\"),i.smooth&&(e.shape.smooth=i.smooth)}var u=n(\"Ylhr\").extend({type:\"parallel\",init:function(){this._dataGroup=new i.Group,this.group.add(this._dataGroup),this._data,this._initialized},render:function(e,t,n,r){var u=this._dataGroup,c=e.getData(),h=this._data,d=e.coordinateSystem,f=d.dimensions,p=s(e);if(c.diff(h).add(function(e){l(a(c,u,e,f,d),c,e,p)}).update(function(t,n){var a=h.getItemGraphicEl(n),s=o(c,t,f,d);c.setItemGraphicEl(t,a);var u=r&&!1===r.animation?null:e;i.updateProps(a,{shape:{points:s}},u,t),l(a,c,t,p)}).remove(function(e){var t=h.getItemGraphicEl(e);u.remove(t)}).execute(),!this._initialized){this._initialized=!0;var g=function(e,t,n){var r=e.model,o=e.getRect(),a=new i.Rect({shape:{x:o.x,y:o.y,width:o.width,height:o.height}}),s=\"horizontal\"===r.get(\"layout\")?\"width\":\"height\";return a.setShape(s,0),i.initProps(a,{shape:{width:o.width,height:o.height}},t,n),a}(d,e,function(){setTimeout(function(){u.removeClipPath()})});u.setClipPath(g)}this._data=c},incrementalPrepareRender:function(e,t,n){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(e,t,n){for(var i=t.getData(),r=t.coordinateSystem,o=r.dimensions,u=s(t),c=e.start;c<e.end;c++){var h=a(i,this._dataGroup,c,o,r);h.incremental=!0,l(h,i,c,u)}},dispose:function(){},remove:function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null}});e.exports=u},\"2W4A\":function(e,t){e.exports=function(e){e.eachSeriesByType(\"map\",function(e){var t=e.get(\"color\"),n=e.getModel(\"itemStyle\"),i=n.get(\"areaColor\"),r=n.get(\"color\")||t[e.seriesIndex%t.length];e.getData().setVisual({areaColor:i,color:r})})}},\"2XvD\":function(e,t,n){var i=n(\"C7PF\").distance;function r(e,t,n,i,r,o,a){var s=.5*(n-e),l=.5*(i-t);return(2*(t-n)+s+l)*a+(-3*(t-n)-2*s-l)*o+s*r+t}e.exports=function(e,t){for(var n=e.length,o=[],a=0,s=1;s<n;s++)a+=i(e[s-1],e[s]);var l=a/2;for(l=l<n?n:l,s=0;s<l;s++){var u,c,h,d=s/(l-1)*(t?n:n-1),f=Math.floor(d),p=d-f,g=e[f%n];t?(u=e[(f-1+n)%n],c=e[(f+1)%n],h=e[(f+2)%n]):(u=e[0===f?f:f-1],c=e[f>n-2?n-1:f+1],h=e[f>n-3?n-1:f+2]);var m=p*p,v=p*m;o.push([r(u[0],g[0],c[0],h[0],p,m,v),r(u[1],g[1],c[1],h[1],p,m,v)])}return o}},\"2kvA\":function(e,t,n){\"use strict\";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.hasClass=p,t.addClass=function(e,t){if(!e)return;for(var n=e.className,i=(t||\"\").split(\" \"),r=0,o=i.length;r<o;r++){var a=i[r];a&&(e.classList?e.classList.add(a):p(e,a)||(n+=\" \"+a))}e.classList||(e.className=n)},t.removeClass=function(e,t){if(!e||!t)return;for(var n=t.split(\" \"),i=\" \"+e.className+\" \",r=0,o=n.length;r<o;r++){var a=n[r];a&&(e.classList?e.classList.remove(a):p(e,a)&&(i=i.replace(\" \"+a+\" \",\" \")))}e.classList||(e.className=c(i))},t.setStyle=function e(t,n,r){if(!t||!n)return;if(\"object\"===(void 0===n?\"undefined\":i(n)))for(var o in n)n.hasOwnProperty(o)&&e(t,o,n[o]);else\"opacity\"===(n=h(n))&&u<9?t.style.filter=isNaN(r)?\"\":\"alpha(opacity=\"+100*r+\")\":t.style[n]=r};var r,o=n(\"7+uW\");var a=((r=o)&&r.__esModule?r:{default:r}).default.prototype.$isServer,s=/([\\:\\-\\_]+(.))/g,l=/^moz([A-Z])/,u=a?0:Number(document.documentMode),c=function(e){return(e||\"\").replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g,\"\")},h=function(e){return e.replace(s,function(e,t,n,i){return i?n.toUpperCase():n}).replace(l,\"Moz$1\")},d=t.on=!a&&document.addEventListener?function(e,t,n){e&&t&&n&&e.addEventListener(t,n,!1)}:function(e,t,n){e&&t&&n&&e.attachEvent(\"on\"+t,n)},f=t.off=!a&&document.removeEventListener?function(e,t,n){e&&t&&e.removeEventListener(t,n,!1)}:function(e,t,n){e&&t&&e.detachEvent(\"on\"+t,n)};t.once=function(e,t,n){d(e,t,function i(){n&&n.apply(this,arguments),f(e,t,i)})};function p(e,t){if(!e||!t)return!1;if(-1!==t.indexOf(\" \"))throw new Error(\"className should not contain space.\");return e.classList?e.classList.contains(t):(\" \"+e.className+\" \").indexOf(\" \"+t+\" \")>-1}var g=t.getStyle=u<9?function(e,t){if(!a){if(!e||!t)return null;\"float\"===(t=h(t))&&(t=\"styleFloat\");try{switch(t){case\"opacity\":try{return e.filters.item(\"alpha\").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(n){return e.style[t]}}}:function(e,t){if(!a){if(!e||!t)return null;\"float\"===(t=h(t))&&(t=\"cssFloat\");try{var n=document.defaultView.getComputedStyle(e,\"\");return e.style[t]||n?n[t]:null}catch(n){return e.style[t]}}};var m=t.isScroll=function(e,t){if(!a)return g(e,null!==t||void 0!==t?t?\"overflow-y\":\"overflow-x\":\"overflow\").match(/(scroll|auto)/)};t.getScrollContainer=function(e,t){if(!a){for(var n=e;n;){if([window,document,document.documentElement].includes(n))return window;if(m(n,t))return n;n=n.parentNode}return n}},t.isInContainer=function(e,t){if(a||!e||!t)return!1;var n=e.getBoundingClientRect(),i=void 0;return i=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),n.top<i.bottom&&n.bottom>i.top&&n.right>i.left&&n.left<i.right}},\"2m1D\":function(e,t,n){var i=n(\"EJsE\"),r=n(\"ao1T\"),o=i.extend({type:\"series.__base_bar__\",getInitialData:function(e,t){return r(this.getSource(),this,{useEncodeDefaulter:!0})},getMarkerPosition:function(e){var t=this.coordinateSystem;if(t){var n=t.dataToPoint(t.clampData(e)),i=this.getData(),r=i.getLayout(\"offset\"),o=i.getLayout(\"size\");return n[t.getBaseAxis().isHorizontal()?0:1]+=r+o/2,n}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:\"cartesian2d\",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:\"mod\",itemStyle:{},emphasis:{}}});e.exports=o},\"2tOJ\":function(e,t,n){var i=n(\"Icdr\");n(\"orv6\"),n(\"vEM8\"),i.registerPreprocessor(function(e){e.markPoint=e.markPoint||{}})},\"2uoh\":function(e,t,n){var i=n(\"/gxq\"),r={getMin:function(e){var t=this.option,n=e||null==t.rangeStart?t.min:t.rangeStart;return this.axis&&null!=n&&\"dataMin\"!==n&&\"function\"!=typeof n&&!i.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getMax:function(e){var t=this.option,n=e||null==t.rangeEnd?t.max:t.rangeEnd;return this.axis&&null!=n&&\"dataMax\"!==n&&\"function\"!=typeof n&&!i.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getNeedCrossZero:function(){var e=this.option;return null==e.rangeStart&&null==e.rangeEnd&&!e.scale},getCoordSysModel:i.noop,setRange:function(e,t){this.option.rangeStart=e,this.option.rangeEnd=t},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}};e.exports=r},\"3Eo+\":function(e,t){var n=0,i=Math.random();e.exports=function(e){return\"Symbol(\".concat(void 0===e?\"\":e,\")_\",(++n+i).toString(36))}},\"3fo+\":function(e,t,n){e.exports=n(\"YAhB\")},\"3h1/\":function(e,t,n){var i=n(\"8b51\"),r=n(\"+Y0c\"),o=n(\"/gxq\"),a=o.getContext,s=o.extend,l=o.retrieve2,u=o.retrieve3,c=o.trim,h={},d=0,f=5e3,p=/\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g,g=\"12px sans-serif\",m={};function v(e,t){var n=e+\":\"+(t=t||g);if(h[n])return h[n];for(var i=(e+\"\").split(\"\\n\"),r=0,o=0,a=i.length;o<a;o++)r=Math.max(T(i[o],t).width,r);return d>f&&(d=0,h={}),d++,h[n]=r,r}function y(e,t,n){return\"right\"===n?e-=t:\"center\"===n&&(e-=t/2),e}function b(e,t,n){return\"middle\"===n?e-=t/2:\"bottom\"===n&&(e-=t),e}function x(e,t,n){var i=t.textPosition,r=t.textDistance,o=n.x,a=n.y;r=r||0;var s=n.height,l=n.width,u=s/2,c=\"left\",h=\"top\";switch(i){case\"left\":o-=r,a+=u,c=\"right\",h=\"middle\";break;case\"right\":o+=r+l,a+=u,h=\"middle\";break;case\"top\":o+=l/2,a-=r,c=\"center\",h=\"bottom\";break;case\"bottom\":o+=l/2,a+=s+r,c=\"center\";break;case\"inside\":o+=l/2,a+=u,c=\"center\",h=\"middle\";break;case\"insideLeft\":o+=r,a+=u,h=\"middle\";break;case\"insideRight\":o+=l-r,a+=u,c=\"right\",h=\"middle\";break;case\"insideTop\":o+=l/2,a+=r,c=\"center\";break;case\"insideBottom\":o+=l/2,a+=s-r,c=\"center\",h=\"bottom\";break;case\"insideTopLeft\":o+=r,a+=r;break;case\"insideTopRight\":o+=l-r,a+=r,c=\"right\";break;case\"insideBottomLeft\":o+=r,a+=s-r,h=\"bottom\";break;case\"insideBottomRight\":o+=l-r,a+=s-r,c=\"right\",h=\"bottom\"}return(e=e||{}).x=o,e.y=a,e.textAlign=c,e.textVerticalAlign=h,e}function _(e,t,n,i,r){if(!t)return\"\";var o=(e+\"\").split(\"\\n\");r=w(t,n,i,r);for(var a=0,s=o.length;a<s;a++)o[a]=C(o[a],r);return o.join(\"\\n\")}function w(e,t,n,i){(i=s({},i)).font=t;n=l(n,\"...\");i.maxIterations=l(i.maxIterations,2);var r=i.minChar=l(i.minChar,0);i.cnCharWidth=v(\"国\",t);var o=i.ascCharWidth=v(\"a\",t);i.placeholder=l(i.placeholder,\"\");for(var a=e=Math.max(0,e-1),u=0;u<r&&a>=o;u++)a-=o;var c=v(n,t);return c>a&&(n=\"\",c=0),a=e-c,i.ellipsis=n,i.ellipsisWidth=c,i.contentWidth=a,i.containerWidth=e,i}function C(e,t){var n=t.containerWidth,i=t.font,r=t.contentWidth;if(!n)return\"\";var o=v(e,i);if(o<=n)return e;for(var a=0;;a++){if(o<=r||a>=t.maxIterations){e+=t.ellipsis;break}var s=0===a?S(e,r,t.ascCharWidth,t.cnCharWidth):o>0?Math.floor(e.length*r/o):0;o=v(e=e.substr(0,s),i)}return\"\"===e&&(e=t.placeholder),e}function S(e,t,n,i){for(var r=0,o=0,a=e.length;o<a&&r<t;o++){var s=e.charCodeAt(o);r+=0<=s&&s<=127?n:i}return o}function k(e){return v(\"国\",e)}function T(e,t){return m.measureText(e,t)}function M(e,t,n,i,r){null!=e&&(e+=\"\");var o=l(i,k(t)),a=e?e.split(\"\\n\"):[],s=a.length*o,u=s,c=!0;if(n&&(u+=n[0]+n[2]),e&&r){c=!1;var h=r.outerHeight,d=r.outerWidth;if(null!=h&&u>h)e=\"\",a=[];else if(null!=d)for(var f=w(d-(n?n[1]+n[3]:0),t,r.ellipsis,{minChar:r.minChar,placeholder:r.placeholder}),p=0,g=a.length;p<g;p++)a[p]=C(a[p],f)}return{lines:a,height:s,outerHeight:u,lineHeight:o,canCacheByTextString:c}}function D(e,t){var n={lines:[],width:0,height:0};if(null!=e&&(e+=\"\"),!e)return n;for(var i,o=p.lastIndex=0;null!=(i=p.exec(e));){var a=i.index;a>o&&A(n,e.substring(o,a)),A(n,i[2],i[1]),o=p.lastIndex}o<e.length&&A(n,e.substring(o,e.length));var s=n.lines,c=0,h=0,d=[],f=t.textPadding,g=t.truncate,m=g&&g.outerWidth,y=g&&g.outerHeight;f&&(null!=m&&(m-=f[1]+f[3]),null!=y&&(y-=f[0]+f[2]));for(var b=0;b<s.length;b++){for(var x=s[b],w=0,C=0,S=0;S<x.tokens.length;S++){var T=(B=x.tokens[S]).styleName&&t.rich[B.styleName]||{},M=B.textPadding=T.textPadding,D=B.font=T.font||t.font,I=B.textHeight=l(T.textHeight,k(D));if(M&&(I+=M[0]+M[2]),B.height=I,B.lineHeight=u(T.textLineHeight,t.textLineHeight,I),B.textAlign=T&&T.textAlign||t.textAlign,B.textVerticalAlign=T&&T.textVerticalAlign||\"middle\",null!=y&&c+B.lineHeight>y)return{lines:[],width:0,height:0};B.textWidth=v(B.text,D);var O=T.textWidth,E=null==O||\"auto\"===O;if(\"string\"==typeof O&&\"%\"===O.charAt(O.length-1))B.percentWidth=O,d.push(B),O=0;else{if(E){O=B.textWidth;var L=T.textBackgroundColor,P=L&&L.image;P&&(P=r.findExistImage(P),r.isImageReady(P)&&(O=Math.max(O,P.width*I/P.height)))}var N=M?M[1]+M[3]:0;O+=N;var R=null!=m?m-C:null;null!=R&&R<O&&(!E||R<N?(B.text=\"\",B.textWidth=O=0):(B.text=_(B.text,R-N,D,g.ellipsis,{minChar:g.minChar}),B.textWidth=v(B.text,D),O=B.textWidth+N))}C+=B.width=O,T&&(w=Math.max(w,B.lineHeight))}x.width=C,x.lineHeight=w,c+=w,h=Math.max(h,C)}n.outerWidth=n.width=l(t.textWidth,h),n.outerHeight=n.height=l(t.textHeight,c),f&&(n.outerWidth+=f[1]+f[3],n.outerHeight+=f[0]+f[2]);for(b=0;b<d.length;b++){var B,z=(B=d[b]).percentWidth;B.width=parseInt(z,10)/100*h}return n}function A(e,t,n){for(var i=\"\"===t,r=t.split(\"\\n\"),o=e.lines,a=0;a<r.length;a++){var s=r[a],l={styleName:n,text:s,isLineHolder:!s&&!i};if(a)o.push({tokens:[l]});else{var u=(o[o.length-1]||(o[0]={tokens:[]})).tokens,c=u.length;1===c&&u[0].isLineHolder?u[0]=l:(s||!c||i)&&u.push(l)}}}m.measureText=function(e,t){var n=a();return n.font=t||g,n.measureText(e)},t.DEFAULT_FONT=g,t.$override=function(e,t){m[e]=t},t.getWidth=v,t.getBoundingRect=function(e,t,n,r,o,a,s,l){return s?function(e,t,n,r,o,a,s,l){var u=D(e,{rich:s,truncate:l,font:t,textAlign:n,textPadding:o,textLineHeight:a}),c=u.outerWidth,h=u.outerHeight,d=y(0,c,n),f=b(0,h,r);return new i(d,f,c,h)}(e,t,n,r,o,a,s,l):function(e,t,n,r,o,a,s){var l=M(e,t,o,a,s),u=v(e,t);o&&(u+=o[1]+o[3]);var c=l.outerHeight,h=y(0,u,n),d=b(0,c,r),f=new i(h,d,u,c);return f.lineHeight=l.lineHeight,f}(e,t,n,r,o,a,l)},t.adjustTextX=y,t.adjustTextY=b,t.calculateTextPosition=x,t.adjustTextPositionOnRect=function(e,t,n){return x({},{textPosition:e,textDistance:n},t)},t.truncateText=_,t.getLineHeight=k,t.measureText=T,t.parsePlainText=M,t.parseRichText=D,t.makeFont=function(e){var t=(e.fontSize||e.fontFamily)&&[e.fontStyle,e.fontWeight,(e.fontSize||12)+\"px\",e.fontFamily||\"sans-serif\"].join(\" \");return t&&c(t)||e.textFont||e.font}},\"3n/B\":function(e,t,n){n(\"PBlc\"),n(\"0BNI\")},\"3yJd\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"u5Nq\"),o=n(\"tBuv\"),a=n(\"/+sa\"),s=n(\"wWR3\"),l=n(\"m/6y\"),u=l.prepareLayoutBarSeries,c=l.makeColumnLayout,h=l.retrieveColumnLayout,d=n(\"8b51\");function f(e,t){var n,r,o,a=e.type,l=t.getMin(),d=t.getMax(),f=e.getExtent();\"ordinal\"===a?n=t.getCategories().length:(r=t.get(\"boundaryGap\"),i.isArray(r)||(r=[r||0,r||0]),\"boolean\"==typeof r[0]&&(r=[0,0]),r[0]=s.parsePercent(r[0],1),r[1]=s.parsePercent(r[1],1),o=f[1]-f[0]||Math.abs(f[0])),\"dataMin\"===l?l=f[0]:\"function\"==typeof l&&(l=l({min:f[0],max:f[1]})),\"dataMax\"===d?d=f[1]:\"function\"==typeof d&&(d=d({min:f[0],max:f[1]}));var p=null!=l,g=null!=d;null==l&&(l=\"ordinal\"===a?n?0:NaN:f[0]-r[0]*o),null==d&&(d=\"ordinal\"===a?n?n-1:NaN:f[1]+r[1]*o),(null==l||!isFinite(l))&&(l=NaN),(null==d||!isFinite(d))&&(d=NaN),e.setBlank(i.eqNaN(l)||i.eqNaN(d)||\"ordinal\"===a&&!e.getOrdinalMeta().categories.length),t.getNeedCrossZero()&&(l>0&&d>0&&!p&&(l=0),l<0&&d<0&&!g&&(d=0));var m=t.ecModel;if(m&&\"time\"===a){var v,y=u(\"bar\",m);if(i.each(y,function(e){v|=e.getBaseAxis()===t.axis}),v){var b=c(y),x=function(e,t,n,r){var o=n.axis.getExtent(),a=o[1]-o[0],s=h(r,n.axis);if(void 0===s)return{min:e,max:t};var l=1/0;i.each(s,function(e){l=Math.min(e.offset,l)});var u=-1/0;i.each(s,function(e){u=Math.max(e.offset+e.width,u)}),l=Math.abs(l),u=Math.abs(u);var c=l+u,d=t-e,f=d/(1-(l+u)/a)-d;return{min:e-=f*(l/c),max:t+=f*(u/c)}}(l,d,t,b);l=x.min,d=x.max}}return{extent:[l,d],fixMin:p,fixMax:g}}function p(e){var t,n=e.getLabelModel().get(\"formatter\"),i=\"category\"===e.type?e.scale.getExtent()[0]:null;return\"string\"==typeof n?(t=n,n=function(n){return n=e.scale.getLabel(n),t.replace(\"{value}\",null!=n?n:\"\")}):\"function\"==typeof n?function(t,r){return null!=i&&(r=t-i),n(g(e,t),r)}:function(t){return e.scale.getLabel(t)}}function g(e,t){return\"category\"===e.type?e.scale.getLabel(t):t}function m(e){var t=e.get(\"interval\");return null==t?\"auto\":t}n(\"dDRy\"),n(\"xCbH\"),t.getScaleExtent=f,t.niceScaleExtent=function(e,t){var n=f(e,t),i=n.extent,r=t.get(\"splitNumber\");\"log\"===e.type&&(e.base=t.get(\"logBase\"));var o=e.type;e.setExtent(i[0],i[1]),e.niceExtent({splitNumber:r,fixMin:n.fixMin,fixMax:n.fixMax,minInterval:\"interval\"===o||\"time\"===o?t.get(\"minInterval\"):null,maxInterval:\"interval\"===o||\"time\"===o?t.get(\"maxInterval\"):null});var a=t.get(\"interval\");null!=a&&e.setInterval&&e.setInterval(a)},t.createScaleByModel=function(e,t){if(t=t||e.get(\"type\"))switch(t){case\"category\":return new r(e.getOrdinalMeta?e.getOrdinalMeta():e.getCategories(),[1/0,-1/0]);case\"value\":return new o;default:return(a.getClass(t)||o).create(e)}},t.ifAxisCrossZero=function(e){var t=e.scale.getExtent(),n=t[0],i=t[1];return!(n>0&&i>0||n<0&&i<0)},t.makeLabelFormatter=p,t.getAxisRawValue=g,t.estimateLabelUnionRect=function(e){var t=e.model,n=e.scale;if(t.get(\"axisLabel.show\")&&!n.isBlank()){var i,r,o=\"category\"===e.type,a=n.getExtent();r=o?n.count():(i=n.getTicks()).length;var s,l,u,c,h,f,g,m,v,y=e.getLabelModel(),b=p(e),x=1;r>40&&(x=Math.ceil(r/40));for(var _=0;_<r;_+=x){var w=b(i?i[_]:a[0]+_),C=y.getTextRect(w),S=(l=C,u=y.get(\"rotate\")||0,c=u*Math.PI/180,h=l.plain(),f=h.width,g=h.height,m=f*Math.cos(c)+g*Math.sin(c),v=f*Math.sin(c)+g*Math.cos(c),new d(h.x,h.y,m,v));s?s.union(S):s=S}return s}},t.getOptionCategoryInterval=m,t.shouldShowAllLabels=function(e){return\"category\"===e.type&&0===m(e.getLabelModel())}},\"42YS\":function(e,t,n){var i=n(\"CCtz\"),r=n(\"eZxa\"),o=n(\"/gxq\"),a=o.isString,s=o.isFunction,l=o.isObject,u=o.isArrayLike,c=o.indexOf,h=function(){this.animators=[]};function d(e,t,n,i,r,o,c,h){a(i)?(o=r,r=i,i=0):s(r)?(o=r,r=\"linear\",i=0):s(i)?(o=i,i=0):s(n)?(o=n,n=500):n||(n=500),e.stopAnimation(),function e(t,n,i,r,o,a,s){var c={};var h=0;for(var d in r)r.hasOwnProperty(d)&&(null!=i[d]?l(r[d])&&!u(r[d])?e(t,n?n+\".\"+d:d,i[d],r[d],o,a,s):(s?(c[d]=i[d],f(t,n,d,r[d])):c[d]=r[d],h++):null==r[d]||s||f(t,n,d,r[d]));h>0&&t.animate(n,!1).when(null==o?500:o,c).delay(a||0)}(e,\"\",e,t,n,i,h);var d=e.animators.slice(),p=d.length;function g(){--p||o&&o()}p||o&&o();for(var m=0;m<d.length;m++)d[m].done(g).start(r,c)}function f(e,t,n,i){if(t){var r={};r[t]={},r[t][n]=i,e.attr(r)}else e.attr(n,i)}h.prototype={constructor:h,animate:function(e,t){var n,o=!1,a=this,s=this.__zr;if(e){var l=e.split(\".\"),u=a;o=\"shape\"===l[0];for(var h=0,d=l.length;h<d;h++)u&&(u=u[l[h]]);u&&(n=u)}else n=a;if(n){var f=a.animators,p=new i(n,t);return p.during(function(e){a.dirty(o)}).done(function(){f.splice(c(f,p),1)}),f.push(p),s&&s.animation.addAnimator(p),p}r('Property \"'+e+'\" is not existed in element '+a.id)},stopAnimation:function(e){for(var t=this.animators,n=t.length,i=0;i<n;i++)t[i].stop(e);return t.length=0,this},animateTo:function(e,t,n,i,r,o){d(this,e,t,n,i,r,o)},animateFrom:function(e,t,n,i,r,o){d(this,e,t,n,i,r,o,!0)}};var p=h;e.exports=p},\"43ae\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"QCrJ\"),o=i.extendComponentView({type:\"axis\",_axisPointer:null,axisPointerClass:null,render:function(e,t,n,i){this.axisPointerClass&&r.fixValue(e),o.superApply(this,\"render\",arguments),a(this,e,t,n,i,!0)},updateAxisPointer:function(e,t,n,i,r){a(this,e,t,n,i,!1)},remove:function(e,t){var n=this._axisPointer;n&&n.remove(t),o.superApply(this,\"remove\",arguments)},dispose:function(e,t){s(this,t),o.superApply(this,\"dispose\",arguments)}});function a(e,t,n,i,a,l){var u=o.getAxisPointerClass(e.axisPointerClass);if(u){var c=r.getAxisPointerModel(t);c?(e._axisPointer||(e._axisPointer=new u)).render(t,c,i,l):s(e,i)}}function s(e,t,n){var i=e._axisPointer;i&&i.dispose(t,n),e._axisPointer=null}var l=[];o.registerAxisPointerClass=function(e,t){l[e]=t},o.getAxisPointerClass=function(e){return e&&l[e]};var u=o;e.exports=u},\"46eW\":function(e,t,n){var i=n(\"GxVO\").extend({type:\"arc\",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:\"#000\",fill:null},buildPath:function(e,t){var n=t.cx,i=t.cy,r=Math.max(t.r,0),o=t.startAngle,a=t.endAngle,s=t.clockwise,l=Math.cos(o),u=Math.sin(o);e.moveTo(l*r+n,u*r+i),e.arc(n,i,r,o,a,!s)}});e.exports=i},\"4A6G\":function(e,t,n){var i={seriesType:\"lines\",plan:n(\"CqCN\")(),reset:function(e){var t=e.coordinateSystem,n=e.get(\"polyline\"),i=e.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s,l=r.end-r.start;if(n){for(var u=0,c=r.start;c<r.end;c++)u+=e.getLineCoordsCount(c);s=new Float32Array(l+2*u)}else s=new Float32Array(4*l);var h=0,d=[];for(c=r.start;c<r.end;c++){var f=e.getLineCoords(c,a);n&&(s[h++]=f);for(var p=0;p<f;p++)d=t.dataToPoint(a[p],!1,d),s[h++]=d[0],s[h++]=d[1]}o.setLayout(\"linesPoints\",s)}else for(c=r.start;c<r.end;c++){var g=o.getItemModel(c),m=(f=e.getLineCoords(c,a),[]);if(n)for(var v=0;v<f;v++)m.push(t.dataToPoint(a[v]));else{m[0]=t.dataToPoint(a[0]),m[1]=t.dataToPoint(a[1]);var y=g.get(\"lineStyle.curveness\");+y&&(m[2]=[(m[0][0]+m[1][0])/2-(m[0][1]-m[1][1])*y,(m[0][1]+m[1][1])/2-(m[1][0]-m[0][0])*y])}o.setItemLayout(c,m)}}}}};e.exports=i},\"4Nz2\":function(e,t,n){(function(e){var n;\"undefined\"!=typeof window?n=window.__DEV__:void 0!==e&&(n=e.__DEV__),void 0===n&&(n=!0);var i=n;t.__DEV__=i}).call(t,n(\"DuR2\"))},\"4RQY\":function(e,t,n){var i=n(\"/gxq\").each,r=n(\"rbn0\"),o=r.simpleLayout,a=r.simpleLayoutEdge;e.exports=function(e,t){e.eachSeriesByType(\"graph\",function(e){var t=e.get(\"layout\"),n=e.coordinateSystem;if(n&&\"view\"!==n.type){var r=e.getData(),s=[];i(n.dimensions,function(e){s=s.concat(r.mapDimension(e,!0))});for(var l=0;l<r.count();l++){for(var u=[],c=!1,h=0;h<s.length;h++){var d=r.get(s[h],l);isNaN(d)||(c=!0),u.push(d)}c?r.setItemLayout(l,n.dataToPoint(u)):r.setItemLayout(l,[NaN,NaN])}a(r.graph)}else t&&\"none\"!==t||o(e)})}},\"4SGL\":function(e,t,n){var i=n(\"wWR3\").parsePercent,r=n(\"/gxq\"),o=Math.PI/180;e.exports=function(e,t,n,a){t.eachSeriesByType(e,function(e){var t=e.get(\"center\"),a=e.get(\"radius\");r.isArray(a)||(a=[0,a]),r.isArray(t)||(t=[t,t]);var s=n.getWidth(),l=n.getHeight(),u=Math.min(s,l),c=i(t[0],s),h=i(t[1],l),d=i(a[0],u/2),f=i(a[1],u/2),p=-e.get(\"startAngle\")*o,g=e.get(\"minAngle\")*o,m=e.getData().tree.root,v=e.getViewRoot(),y=v.depth,b=e.get(\"sort\");null!=b&&function e(t,n){var i=t.children||[];t.children=function(e,t){if(\"function\"==typeof t)return e.sort(t);var n=\"asc\"===t;return e.sort(function(e,t){var i=(e.getValue()-t.getValue())*(n?1:-1);return 0===i?(e.dataIndex-t.dataIndex)*(n?-1:1):i})}(i,n),i.length&&r.each(t.children,function(t){e(t,n)})}(v,b);var x=0;r.each(v.children,function(e){!isNaN(e.getValue())&&x++});var _=v.getValue(),w=Math.PI/(_||x)*2,C=v.depth>0,S=v.height-(C?-1:1),k=(f-d)/(S||1),T=e.get(\"clockwise\"),M=e.get(\"stillShowZeroSum\"),D=T?1:-1,A=function(e,t){if(e){var n=t;if(e!==m){var o=e.getValue(),a=0===_&&M?w:o*w;a<g&&(a=g),n=t+D*a;var s=e.depth-y-(C?-1:1),l=d+k*s,f=d+k*(s+1),p=e.getModel();null!=p.get(\"r0\")&&(l=i(p.get(\"r0\"),u/2)),null!=p.get(\"r\")&&(f=i(p.get(\"r\"),u/2)),e.setLayout({angle:a,startAngle:t,endAngle:n,clockwise:T,cx:c,cy:h,r0:l,r:f})}if(e.children&&e.children.length){var v=0;r.each(e.children,function(e){v+=A(e,t+v)})}return n-t}};if(C){var I=d,O=d+k,E=2*Math.PI;m.setLayout({angle:E,startAngle:p,endAngle:p+E,clockwise:T,cx:c,cy:h,r0:I,r:O})}A(v,p)})}},\"4SW2\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"DZTl\");n(\"Osoq\"),n(\"w2H/\"),n(\"OlnU\"),n(\"gZam\"),n(\"H4Wn\"),i.registerPreprocessor(r)},\"4UDB\":function(e,t,n){var i=n(\"Icdr\");n(\"jMTz\"),n(\"cO/Q\");var r=n(\"AjK0\"),o=n(\"1Nix\"),a=n(\"PWa9\");n(\"UkNE\"),i.registerVisual(r(\"line\",\"circle\",\"line\")),i.registerLayout(o(\"line\")),i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC,a(\"line\"))},\"4V7L\":function(e,t,n){var i=n(\"Icdr\");n(\"ghha\"),n(\"oqQy\"),n(\"rwkR\"),n(\"AKXb\"),n(\"+bS+\"),i.extendComponentView({type:\"single\"})},\"4mcu\":function(e,t){e.exports=function(){}},\"4oYY\":function(e,t){var n=[\"#dd6b66\",\"#759aa0\",\"#e69d87\",\"#8dc1a9\",\"#ea7e53\",\"#eedd78\",\"#73a373\",\"#73b9bc\",\"#7289ab\",\"#91ca8c\",\"#f49f42\"],i={color:n,backgroundColor:\"#333\",tooltip:{axisPointer:{lineStyle:{color:\"#eee\"},crossStyle:{color:\"#eee\"},label:{color:\"#000\"}}},legend:{textStyle:{color:\"#eee\"}},textStyle:{color:\"#eee\"},title:{textStyle:{color:\"#eee\"}},toolbox:{iconStyle:{normal:{borderColor:\"#eee\"}}},dataZoom:{textStyle:{color:\"#eee\"}},visualMap:{textStyle:{color:\"#eee\"}},timeline:{lineStyle:{color:\"#eee\"},itemStyle:{normal:{color:n[1]}},label:{normal:{textStyle:{color:\"#eee\"}}},controlStyle:{normal:{color:\"#eee\",borderColor:\"#eee\"}}},timeAxis:{axisLine:{lineStyle:{color:\"#eee\"}},axisTick:{lineStyle:{color:\"#eee\"}},axisLabel:{textStyle:{color:\"#eee\"}},splitLine:{lineStyle:{type:\"dashed\",color:\"#aaa\"}},splitArea:{areaStyle:{color:\"#eee\"}}},logAxis:{axisLine:{lineStyle:{color:\"#eee\"}},axisTick:{lineStyle:{color:\"#eee\"}},axisLabel:{textStyle:{color:\"#eee\"}},splitLine:{lineStyle:{type:\"dashed\",color:\"#aaa\"}},splitArea:{areaStyle:{color:\"#eee\"}}},valueAxis:{axisLine:{lineStyle:{color:\"#eee\"}},axisTick:{lineStyle:{color:\"#eee\"}},axisLabel:{textStyle:{color:\"#eee\"}},splitLine:{lineStyle:{type:\"dashed\",color:\"#aaa\"}},splitArea:{areaStyle:{color:\"#eee\"}}},categoryAxis:{axisLine:{lineStyle:{color:\"#eee\"}},axisTick:{lineStyle:{color:\"#eee\"}},axisLabel:{textStyle:{color:\"#eee\"}},splitLine:{lineStyle:{type:\"dashed\",color:\"#aaa\"}},splitArea:{areaStyle:{color:\"#eee\"}}},line:{symbol:\"circle\"},graph:{color:n},gauge:{title:{textStyle:{color:\"#eee\"}}},candlestick:{itemStyle:{normal:{color:\"#FD1050\",color0:\"#0CF49B\",borderColor:\"#FD1050\",borderColor0:\"#0CF49B\"}}}};i.categoryAxis.splitLine.show=!1;var r=i;e.exports=r},\"4w1v\":function(e,t,n){var i=n(\"VewU\").createElement,r=n(\"moDv\"),o=n(\"8b51\"),a=n(\"dOVI\"),s=n(\"3h1/\"),l=n(\"qjrH\"),u=n(\"/86O\"),c=r.CMD,h=Array.prototype.join,d=\"none\",f=Math.round,p=Math.sin,g=Math.cos,m=Math.PI,v=2*Math.PI,y=180/m,b=1e-4;function x(e){return f(1e4*e)/1e4}function _(e){return e<b&&e>-b}function w(e,t){t&&C(e,\"transform\",\"matrix(\"+h.call(t,\",\")+\")\")}function C(e,t,n){(!n||\"linear\"!==n.type&&\"radial\"!==n.type)&&e.setAttribute(t,n)}function S(e,t,n,i){if(function(e,t){var n=t?e.textFill:e.fill;return null!=n&&n!==d}(t,n)){var r=n?t.textFill:t.fill;C(e,\"fill\",r=\"transparent\"===r?d:r),C(e,\"fill-opacity\",null!=t.fillOpacity?t.fillOpacity*t.opacity:t.opacity)}else C(e,\"fill\",d);if(function(e,t){var n=t?e.textStroke:e.stroke;return null!=n&&n!==d}(t,n)){var o=n?t.textStroke:t.stroke;C(e,\"stroke\",o=\"transparent\"===o?d:o),C(e,\"stroke-width\",(n?t.textStrokeWidth:t.lineWidth)/(!n&&t.strokeNoScale?i.getLineScale():1)),C(e,\"paint-order\",n?\"stroke\":\"fill\"),C(e,\"stroke-opacity\",null!=t.strokeOpacity?t.strokeOpacity:t.opacity),t.lineDash?(C(e,\"stroke-dasharray\",t.lineDash.join(\",\")),C(e,\"stroke-dashoffset\",f(t.lineDashOffset||0))):C(e,\"stroke-dasharray\",\"\"),t.lineCap&&C(e,\"stroke-linecap\",t.lineCap),t.lineJoin&&C(e,\"stroke-linejoin\",t.lineJoin),t.miterLimit&&C(e,\"stroke-miterlimit\",t.miterLimit)}else C(e,\"stroke\",d)}var k={};k.brush=function(e){var t=e.style,n=e.__svgEl;n||(n=i(\"path\"),e.__svgEl=n),e.path||e.createPathProxy();var r=e.path;if(e.__dirtyPath){r.beginPath(),r.subPixelOptimize=!1,e.buildPath(r,e.shape),e.__dirtyPath=!1;var o=function(e){for(var t=[],n=e.data,i=e.len(),r=0;r<i;){var o=\"\",a=0;switch(n[r++]){case c.M:o=\"M\",a=2;break;case c.L:o=\"L\",a=2;break;case c.Q:o=\"Q\",a=4;break;case c.C:o=\"C\",a=6;break;case c.A:var s=n[r++],l=n[r++],u=n[r++],h=n[r++],d=n[r++],b=n[r++],w=n[r++],C=n[r++],S=Math.abs(b),k=_(S-v)||(C?b>=v:-b>=v),T=b>0?b%v:b%v+v,M=!1;M=!!k||!_(S)&&T>=m==!!C;var D=x(s+u*g(d)),A=x(l+h*p(d));k&&(b=C?v-1e-4:1e-4-v,M=!0,9===r&&t.push(\"M\",D,A));var I=x(s+u*g(d+b)),O=x(l+h*p(d+b));t.push(\"A\",x(u),x(h),f(w*y),+M,+C,I,O);break;case c.Z:o=\"Z\";break;case c.R:I=x(n[r++]),O=x(n[r++]);var E=x(n[r++]),L=x(n[r++]);t.push(\"M\",I,O,\"L\",I+E,O,\"L\",I+E,O+L,\"L\",I,O+L,\"L\",I,O)}o&&t.push(o);for(var P=0;P<a;P++)t.push(x(n[r++]))}return t.join(\" \")}(r);o.indexOf(\"NaN\")<0&&C(n,\"d\",o)}S(n,t,!1,e),w(n,e.transform),null!=t.text?E(e,e.getBoundingRect()):P(e)};var T={brush:function(e){var t=e.style,n=t.image;n instanceof HTMLImageElement&&(n=n.src);if(n){var r=t.x||0,o=t.y||0,a=t.width,s=t.height,l=e.__svgEl;l||(l=i(\"image\"),e.__svgEl=l),n!==e.__imageSrc&&(!function(e,t,n){e.setAttributeNS(\"http://www.w3.org/1999/xlink\",t,n)}(l,\"href\",n),e.__imageSrc=n),C(l,\"width\",a),C(l,\"height\",s),C(l,\"x\",r),C(l,\"y\",o),w(l,e.transform),null!=t.text?E(e,e.getBoundingRect()):P(e)}}},M={},D=new o,A={},I=[],O={left:\"start\",right:\"end\",center:\"middle\",middle:\"middle\"},E=function(e,t){var n=e.style,r=e.transform,o=e instanceof u||n.transformText;e.__dirty&&l.normalizeTextStyle(n,!0);var c=n.text;if(null!=c&&(c+=\"\"),l.needDrawText(c,n)){null==c&&(c=\"\"),!o&&r&&(D.copy(t),D.applyTransform(r),t=D);var h=e.__textSvgEl;h||(h=i(\"text\"),e.__textSvgEl=h);var d=h.style,f=n.font||s.DEFAULT_FONT,p=h.__computedFont;f!==h.__styleFont&&(d.font=h.__styleFont=f,p=h.__computedFont=d.font);var g=n.textPadding,m=n.textLineHeight,v=e.__textCotentBlock;v&&!e.__dirtyText||(v=e.__textCotentBlock=s.parsePlainText(c,p,g,m,n.truncate));var y=v.outerHeight,b=v.lineHeight;l.getBoxPosition(A,e,n,t);var x=A.baseX,_=A.baseY,C=A.textAlign||\"left\",k=A.textVerticalAlign;!function(e,t,n,i,r,o,s){a.identity(I),t&&n&&a.copy(I,n);var l=i.textRotation;if(r&&l){var u=i.textOrigin;\"center\"===u?(o=r.width/2+r.x,s=r.height/2+r.y):u&&(o=u[0]+r.x,s=u[1]+r.y),I[4]-=o,I[5]-=s,a.rotate(I,I,l),I[4]+=o,I[5]+=s}w(e,I)}(h,o,r,n,t,x,_);var T=x,M=s.adjustTextY(_,y,k);g&&(T=function(e,t,n){return\"right\"===t?e-n[1]:\"center\"===t?e+n[3]/2-n[1]/2:e+n[3]}(x,C,g),M+=g[0]),M+=b/2,S(h,n,!0,e);var O=v.canCacheByTextString,E=e.__tspanList||(e.__tspanList=[]),P=E.length;if(O&&e.__canCacheByTextString&&e.__text===c){if(e.__dirtyText&&P)for(var N=0;N<P;++N)L(E[N],C,T,M+N*b)}else{e.__text=c,e.__canCacheByTextString=O;var R=v.lines,B=R.length;for(N=0;N<B;N++){var z=E[N],F=R[N];z?z.__zrText!==F&&(z.innerHTML=\"\",z.appendChild(document.createTextNode(F))):(z=E[N]=i(\"tspan\"),h.appendChild(z),z.appendChild(document.createTextNode(F))),L(z,C,T,M+N*b)}if(P>B){for(;N<P;N++)h.removeChild(E[N]);E.length=B}}}};function L(e,t,n,i){C(e,\"dominant-baseline\",\"middle\"),C(e,\"text-anchor\",O[t]),C(e,\"x\",n),C(e,\"y\",i)}function P(e){e&&e.__textSvgEl&&(e.__textSvgEl.parentNode&&e.__textSvgEl.parentNode.removeChild(e.__textSvgEl),e.__textSvgEl=null,e.__tspanList=[],e.__text=null)}M.drawRectText=E,M.brush=function(e){null!=e.style.text?E(e,!1):P(e)},t.path=k,t.image=T,t.text=M},\"4xrk\":function(e,t,n){var i=n(\"/gxq\");t.layout=function(e,t,n){n=n||{};var r=e.coordinateSystem,o=t.axis,a={},s=o.getAxesOnZeroOf()[0],l=o.position,u=s?\"onZero\":l,c=o.dim,h=r.getRect(),d=[h.x,h.x+h.width,h.y,h.y+h.height],f={left:0,right:1,top:0,bottom:1,onZero:2},p=t.get(\"offset\")||0,g=\"x\"===c?[d[2]-p,d[3]+p]:[d[0]-p,d[1]+p];if(s){var m=s.toGlobalCoord(s.dataToCoord(0));g[f.onZero]=Math.max(Math.min(m,g[1]),g[0])}a.position=[\"y\"===c?g[f[u]]:d[0],\"x\"===c?g[f[u]]:d[3]],a.rotation=Math.PI/2*(\"x\"===c?0:1),a.labelDirection=a.tickDirection=a.nameDirection={top:-1,bottom:1,left:-1,right:1}[l],a.labelOffset=s?g[f[l]]-g[f.onZero]:0,t.get(\"axisTick.inside\")&&(a.tickDirection=-a.tickDirection),i.retrieve(n.labelInside,t.get(\"axisLabel.inside\"))&&(a.labelDirection=-a.labelDirection);var v=t.get(\"axisLabel.rotate\");return a.labelRotate=\"top\"===u?-v:v,a.z2=1,a}},\"5/bM\":function(e,t,n){var i=n(\"Icdr\");n(\"eQYg\"),n(\"h4VJ\");var r=n(\"ri8f\"),o=n(\"UOrf\"),a=n(\"l4Op\");i.registerVisual(r(\"funnel\")),i.registerLayout(o),i.registerProcessor(a(\"funnel\"))},\"52gC\":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError(\"Can't call method on  \"+e);return e}},\"56C7\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"DpwM\"),o=i.extendComponentView({type:\"axisPointer\",render:function(e,t,n){var i=t.getComponent(\"tooltip\"),o=e.get(\"triggerOn\")||i&&i.get(\"triggerOn\")||\"mousemove|click\";r.register(\"axisPointer\",n,function(e,t,n){\"none\"!==o&&(\"leave\"===e||o.indexOf(e)>=0)&&n({type:\"updateAxisPointer\",currTrigger:e,x:t&&t.offsetX,y:t&&t.offsetY})})},remove:function(e,t){r.unregister(t.getZr(),\"axisPointer\"),o.superApply(this._model,\"remove\",arguments)},dispose:function(e,t){r.unregister(\"axisPointer\",t),o.superApply(this._model,\"dispose\",arguments)}}),a=o;e.exports=a},\"5Hn/\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"UAiw\"),o=n(\"0sHC\"),a=n(\"QD+P\"),s=n(\"ilLo\"),l=n(\"wWR3\"),u=n(\"1Xuh\"),c=n(\"og9+\"),h=o.Rect,d=l.linearMap,f=l.asc,p=i.bind,g=i.each,m=\"horizontal\",v=5,y=[\"line\",\"bar\",\"candlestick\",\"scatter\"],b=s.extend({type:\"dataZoom.slider\",init:function(e,t){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=t},render:function(e,t,n,i){b.superApply(this,\"render\",arguments),a.createOrUpdate(this,\"_dispatchZoomAction\",this.dataZoomModel.get(\"throttle\"),\"fixRate\"),this._orient=e.get(\"orient\"),!1!==this.dataZoomModel.get(\"show\")?(i&&\"dataZoom\"===i.type&&i.from===this.uid||this._buildView(),this._updateView()):this.group.removeAll()},remove:function(){b.superApply(this,\"remove\",arguments),a.clear(this,\"_dispatchZoomAction\")},dispose:function(){b.superApply(this,\"dispose\",arguments),a.clear(this,\"_dispatchZoomAction\")},_buildView:function(){var e=this.group;e.removeAll(),this._resetLocation(),this._resetInterval();var t=this._displayables.barGroup=new o.Group;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),e.add(t),this._positionGroup()},_resetLocation:function(){var e=this.dataZoomModel,t=this.api,n=this._findCoordRect(),r={width:t.getWidth(),height:t.getHeight()},o=this._orient===m?{right:r.width-n.x-n.width,top:r.height-30-7,width:n.width,height:30}:{right:7,top:n.y,width:30,height:n.height},a=u.getLayoutParams(e.option);i.each([\"right\",\"top\",\"width\",\"height\"],function(e){\"ph\"===a[e]&&(a[e]=o[e])});var s=u.getLayoutRect(a,r,e.padding);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],\"vertical\"===this._orient&&this._size.reverse()},_positionGroup:function(){var e=this.group,t=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get(\"inverse\"),o=this._displayables.barGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==m||r?n===m&&r?{scale:a?[-1,1]:[-1,-1]}:\"vertical\"!==n||r?{scale:a?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:a?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:a?[1,1]:[1,-1]});var s=e.getBoundingRect([o]);e.attr(\"position\",[t.x-s.x,t.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var e=this.dataZoomModel,t=this._size,n=this._displayables.barGroup;n.add(new h({silent:!0,shape:{x:0,y:0,width:t[0],height:t[1]},style:{fill:e.get(\"backgroundColor\")},z2:-40})),n.add(new h({shape:{x:0,y:0,width:t[0],height:t[1]},style:{fill:\"transparent\"},z2:0,onclick:i.bind(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var e=this._dataShadowInfo=this._prepareDataShadowInfo();if(e){var t=this._size,n=e.series,r=n.getRawData(),a=n.getShadowDim?n.getShadowDim():e.otherDim;if(null!=a){var s=r.getDataExtent(a),l=.3*(s[1]-s[0]);s=[s[0]-l,s[1]+l];var u,c=[0,t[1]],h=[0,t[0]],f=[[t[0],0],[0,0]],p=[],g=h[1]/(r.count()-1),m=0,v=Math.round(r.count()/t[0]);r.each([a],function(e,t){if(v>0&&t%v)m+=g;else{var n=null==e||isNaN(e)||\"\"===e,i=n?0:d(e,s,c,!0);n&&!u&&t?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!n&&u&&(f.push([m,0]),p.push([m,0])),f.push([m,i]),p.push([m,i]),m+=g,u=n}});var y=this.dataZoomModel;this._displayables.barGroup.add(new o.Polygon({shape:{points:f},style:i.defaults({fill:y.get(\"dataBackgroundColor\")},y.getModel(\"dataBackground.areaStyle\").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new o.Polyline({shape:{points:p},style:y.getModel(\"dataBackground.lineStyle\").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var e=this.dataZoomModel,t=e.get(\"showDataShadow\");if(!1!==t){var n,r=this.ecModel;return e.eachTargetAxis(function(o,a){var s=e.getAxisProxy(o.name,a).getTargetSeriesModels();i.each(s,function(e){if(!(n||!0!==t&&i.indexOf(y,e.get(\"type\"))<0)){var s,l=r.getComponent(o.axis,a).axis,u={x:\"y\",y:\"x\",radius:\"angle\",angle:\"radius\"}[o.name],c=e.coordinateSystem;null!=u&&c.getOtherAxis&&(s=c.getOtherAxis(l).inverse),u=e.getData().mapDimension(u),n={thisAxis:l,series:e,thisDim:o.name,otherDim:u,otherAxisInverse:s}}},this)},this),n}},_renderHandle:function(){var e=this._displayables,t=e.handles=[],n=e.handleLabels=[],i=this._displayables.barGroup,r=this._size,a=this.dataZoomModel;i.add(e.filler=new h({draggable:!0,cursor:x(this._orient),drift:p(this._onDragMove,this,\"all\"),ondragstart:p(this._showDataInfo,this,!0),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1),style:{fill:a.get(\"fillerColor\"),textPosition:\"inside\"}})),i.add(new h({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:r[0],height:r[1]},style:{stroke:a.get(\"dataBackgroundColor\")||a.get(\"borderColor\"),lineWidth:1,fill:\"rgba(0,0,0,0)\"}})),g([0,1],function(e){var r=o.createIcon(a.get(\"handleIcon\"),{cursor:x(this._orient),draggable:!0,drift:p(this._onDragMove,this,e),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),s=r.getBoundingRect();this._handleHeight=l.parsePercent(a.get(\"handleSize\"),this._size[1]),this._handleWidth=s.width/s.height*this._handleHeight,r.setStyle(a.getModel(\"handleStyle\").getItemStyle());var u=a.get(\"handleColor\");null!=u&&(r.style.fill=u),i.add(t[e]=r);var c=a.textStyleModel;this.group.add(n[e]=new o.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:\"\",textVerticalAlign:\"middle\",textAlign:\"center\",textFill:c.getTextColor(),textFont:c.getFont()},z2:10}))},this)},_resetInterval:function(){var e=this._range=this.dataZoomModel.getPercentRange(),t=this._getViewExtent();this._handleEnds=[d(e[0],[0,100],t,!0),d(e[1],[0,100],t,!0)]},_updateInterval:function(e,t){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];c(t,i,r,n.get(\"zoomLock\")?\"all\":e,null!=o.minSpan?d(o.minSpan,a,r,!0):null,null!=o.maxSpan?d(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=f([d(i[0],r,a,!0),d(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(e){var t=this._displayables,n=this._handleEnds,i=f(n.slice()),r=this._size;g([0,1],function(e){var i=t.handles[e],o=this._handleHeight;i.attr({scale:[o/2,o/2],position:[n[e],r[1]/2-o/2]})},this),t.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]}),this._updateDataInfo(e)},_updateDataInfo:function(e){var t=this.dataZoomModel,n=this._displayables,i=n.handleLabels,r=this._orient,a=[\"\",\"\"];if(t.get(\"showDetail\")){var s=t.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,c=e?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();a=[this._formatLabel(c[0],l),this._formatLabel(c[1],l)]}}var h=f(this._handleEnds.slice());function d(e){var t=o.getTransform(n.handles[e].parent,this.group),s=o.transformDirection(0===e?\"right\":\"left\",t),l=this._handleWidth/2+v,u=o.applyTransform([h[e]+(0===e?-l:l),this._size[1]/2],t);i[e].setStyle({x:u[0],y:u[1],textVerticalAlign:r===m?\"middle\":s,textAlign:r===m?s:\"center\",text:a[e]})}d.call(this,0),d.call(this,1)},_formatLabel:function(e,t){var n=this.dataZoomModel,r=n.get(\"labelFormatter\"),o=n.get(\"labelPrecision\");null!=o&&\"auto\"!==o||(o=t.getPixelPrecision());var a=null==e||isNaN(e)?\"\":\"category\"===t.type||\"time\"===t.type?t.scale.getLabel(Math.round(e)):e.toFixed(Math.min(o,20));return i.isFunction(r)?r(e,a):i.isString(r)?r.replace(\"{value}\",a):a},_showDataInfo:function(e){e=this._dragging||e;var t=this._displayables.handleLabels;t[0].attr(\"invisible\",!e),t[1].attr(\"invisible\",!e)},_onDragMove:function(e,t,n,i){this._dragging=!0,r.stop(i.event);var a=this._displayables.barGroup.getLocalTransform(),s=o.applyTransform([t,n],a,!0),l=this._updateInterval(e,s[0]),u=this.dataZoomModel.get(\"realtime\");this._updateView(!u),l&&u&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get(\"realtime\")&&this._dispatchZoomAction()},_onClickPanelClick:function(e){var t=this._size,n=this._displayables.barGroup.transformCoordToLocal(e.offsetX,e.offsetY);if(!(n[0]<0||n[0]>t[0]||n[1]<0||n[1]>t[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval(\"all\",n[0]-r);this._updateView(),o&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var e=this._range;this.api.dispatchAction({type:\"dataZoom\",from:this.uid,dataZoomId:this.dataZoomModel.id,start:e[0],end:e[1]})},_findCoordRect:function(){var e;if(g(this.getTargetCoordInfo(),function(t){if(!e&&t.length){var n=t[0].model.coordinateSystem;e=n.getRect&&n.getRect()}}),!e){var t=this.api.getWidth(),n=this.api.getHeight();e={x:.2*t,y:.2*n,width:.6*t,height:.6*n}}return e}});function x(e){return\"vertical\"===e?\"ns-resize\":\"ew-resize\"}var _=b;e.exports=_},\"5IAE\":function(e,t,n){(function(e){\"use strict\";e.defineMode(\"javascript\",function(t,n){var i,r,o=t.indentUnit,a=n.statementIndent,s=n.jsonld,l=n.json||s,u=n.typescript,c=n.wordCharacters||/[\\w$\\xa1-\\uffff]/,h=function(){function e(e){return{type:e,style:\"keyword\"}}var t=e(\"keyword a\"),n=e(\"keyword b\"),i=e(\"keyword c\"),r=e(\"keyword d\"),o=e(\"operator\"),a={type:\"atom\",style:\"atom\"};return{if:e(\"if\"),while:t,with:t,else:n,do:n,try:n,finally:n,return:r,break:r,continue:r,new:e(\"new\"),delete:i,void:i,throw:i,debugger:e(\"debugger\"),var:e(\"var\"),const:e(\"var\"),let:e(\"var\"),function:e(\"function\"),catch:e(\"catch\"),for:e(\"for\"),switch:e(\"switch\"),case:e(\"case\"),default:e(\"default\"),in:o,typeof:o,instanceof:o,true:a,false:a,null:a,undefined:a,NaN:a,Infinity:a,this:e(\"this\"),class:e(\"class\"),super:e(\"atom\"),yield:i,export:e(\"export\"),import:e(\"import\"),extends:i,await:i}}(),d=/[+\\-*&%=<>!?|~^@]/,f=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;function p(e,t,n){return i=e,r=n,t}function g(e,t){var n,i=e.next();if('\"'==i||\"'\"==i)return t.tokenize=(n=i,function(e,t){var i,r=!1;if(s&&\"@\"==e.peek()&&e.match(f))return t.tokenize=g,p(\"jsonld-keyword\",\"meta\");for(;null!=(i=e.next())&&(i!=n||r);)r=!r&&\"\\\\\"==i;return r||(t.tokenize=g),p(\"string\",\"string\")}),t.tokenize(e,t);if(\".\"==i&&e.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/))return p(\"number\",\"number\");if(\".\"==i&&e.match(\"..\"))return p(\"spread\",\"meta\");if(/[\\[\\]{}\\(\\),;\\:\\.]/.test(i))return p(i);if(\"=\"==i&&e.eat(\">\"))return p(\"=>\",\"operator\");if(\"0\"==i&&e.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return p(\"number\",\"number\");if(/\\d/.test(i))return e.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/),p(\"number\",\"number\");if(\"/\"==i)return e.eat(\"*\")?(t.tokenize=m,m(e,t)):e.eat(\"/\")?(e.skipToEnd(),p(\"comment\",\"comment\")):Xe(e,t,1)?(function(e){for(var t,n=!1,i=!1;null!=(t=e.next());){if(!n){if(\"/\"==t&&!i)return;\"[\"==t?i=!0:i&&\"]\"==t&&(i=!1)}n=!n&&\"\\\\\"==t}}(e),e.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/),p(\"regexp\",\"string-2\")):(e.eat(\"=\"),p(\"operator\",\"operator\",e.current()));if(\"`\"==i)return t.tokenize=v,v(e,t);if(\"#\"==i&&\"!\"==e.peek())return e.skipToEnd(),p(\"meta\",\"meta\");if(\"#\"==i&&e.eatWhile(c))return p(\"variable\",\"property\");if(\"<\"==i&&e.match(\"!--\")||\"-\"==i&&e.match(\"->\")&&!/\\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),p(\"comment\",\"comment\");if(d.test(i))return\">\"==i&&t.lexical&&\">\"==t.lexical.type||(e.eat(\"=\")?\"!\"!=i&&\"=\"!=i||e.eat(\"=\"):/[<>*+\\-|&?]/.test(i)&&(e.eat(i),\">\"==i&&e.eat(i))),\"?\"==i&&e.eat(\".\")?p(\".\"):p(\"operator\",\"operator\",e.current());if(c.test(i)){e.eatWhile(c);var r=e.current();if(\".\"!=t.lastType){if(h.propertyIsEnumerable(r)){var o=h[r];return p(o.type,o.style,r)}if(\"async\"==r&&e.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/,!1))return p(\"async\",\"keyword\",r)}return p(\"variable\",\"variable\",r)}}function m(e,t){for(var n,i=!1;n=e.next();){if(\"/\"==n&&i){t.tokenize=g;break}i=\"*\"==n}return p(\"comment\",\"comment\")}function v(e,t){for(var n,i=!1;null!=(n=e.next());){if(!i&&(\"`\"==n||\"$\"==n&&e.eat(\"{\"))){t.tokenize=g;break}i=!i&&\"\\\\\"==n}return p(\"quasi\",\"string-2\",e.current())}var y=\"([{}])\";function b(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var n=e.string.indexOf(\"=>\",e.start);if(!(n<0)){if(u){var i=/:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(e.string.slice(e.start,n));i&&(n=i.index)}for(var r=0,o=!1,a=n-1;a>=0;--a){var s=e.string.charAt(a),l=y.indexOf(s);if(l>=0&&l<3){if(!r){++a;break}if(0==--r){\"(\"==s&&(o=!0);break}}else if(l>=3&&l<6)++r;else if(c.test(s))o=!0;else if(/[\"'\\/`]/.test(s))for(;;--a){if(0==a)return;if(e.string.charAt(a-1)==s&&\"\\\\\"!=e.string.charAt(a-2)){a--;break}}else if(o&&!r){++a;break}}o&&!r&&(t.fatArrowAt=a)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,\"jsonld-keyword\":!0};function _(e,t,n,i,r,o){this.indented=e,this.column=t,this.type=n,this.prev=r,this.info=o,null!=i&&(this.align=i)}function w(e,t){for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var i=e.context;i;i=i.prev)for(n=i.vars;n;n=n.next)if(n.name==t)return!0}var C={state:null,column:null,marked:null,cc:null};function S(){for(var e=arguments.length-1;e>=0;e--)C.cc.push(arguments[e])}function k(){return S.apply(null,arguments),!0}function T(e,t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}function M(e){var t=C.state;if(C.marked=\"def\",t.context)if(\"var\"==t.lexical.info&&t.context&&t.context.block){var i=function e(t,n){if(n){if(n.block){var i=e(t,n.prev);return i?i==n.prev?n:new A(i,n.vars,!0):null}return T(t,n.vars)?n:new A(n.prev,new I(t,n.vars),!1)}return null}(e,t.context);if(null!=i)return void(t.context=i)}else if(!T(e,t.localVars))return void(t.localVars=new I(e,t.localVars));n.globalVars&&!T(e,t.globalVars)&&(t.globalVars=new I(e,t.globalVars))}function D(e){return\"public\"==e||\"private\"==e||\"protected\"==e||\"abstract\"==e||\"readonly\"==e}function A(e,t,n){this.prev=e,this.vars=t,this.block=n}function I(e,t){this.name=e,this.next=t}var O=new I(\"this\",new I(\"arguments\",null));function E(){C.state.context=new A(C.state.context,C.state.localVars,!1),C.state.localVars=O}function L(){C.state.context=new A(C.state.context,C.state.localVars,!0),C.state.localVars=null}function P(){C.state.localVars=C.state.context.vars,C.state.context=C.state.context.prev}function N(e,t){var n=function(){var n=C.state,i=n.indented;if(\"stat\"==n.lexical.type)i=n.lexical.indented;else for(var r=n.lexical;r&&\")\"==r.type&&r.align;r=r.prev)i=r.indented;n.lexical=new _(i,C.stream.column(),e,null,n.lexical,t)};return n.lex=!0,n}function R(){var e=C.state;e.lexical.prev&&(\")\"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function B(e){return function t(n){return n==e?k():\";\"==e||\"}\"==n||\")\"==n||\"]\"==n?S():k(t)}}function z(e,t){return\"var\"==e?k(N(\"vardef\",t),xe,B(\";\"),R):\"keyword a\"==e?k(N(\"form\"),j,z,R):\"keyword b\"==e?k(N(\"form\"),z,R):\"keyword d\"==e?C.stream.match(/^\\s*$/,!1)?k():k(N(\"stat\"),W,B(\";\"),R):\"debugger\"==e?k(B(\";\")):\"{\"==e?k(N(\"}\"),L,ae,R,P):\";\"==e?k():\"if\"==e?(\"else\"==C.state.lexical.info&&C.state.cc[C.state.cc.length-1]==R&&C.state.cc.pop()(),k(N(\"form\"),j,z,R,Te)):\"function\"==e?k(Ie):\"for\"==e?k(N(\"form\"),Me,z,R):\"class\"==e||u&&\"interface\"==t?(C.marked=\"keyword\",k(N(\"form\",\"class\"==e?e:t),Ne,R)):\"variable\"==e?u&&\"declare\"==t?(C.marked=\"keyword\",k(z)):u&&(\"module\"==t||\"enum\"==t||\"type\"==t)&&C.stream.match(/^\\s*\\w/,!1)?(C.marked=\"keyword\",\"enum\"==t?k(Ue):\"type\"==t?k(Ee,B(\"operator\"),he,B(\";\")):k(N(\"form\"),_e,B(\"{\"),N(\"}\"),ae,R,R)):u&&\"namespace\"==t?(C.marked=\"keyword\",k(N(\"form\"),$,z,R)):u&&\"abstract\"==t?(C.marked=\"keyword\",k(z)):k(N(\"stat\"),Q):\"switch\"==e?k(N(\"form\"),j,B(\"{\"),N(\"}\",\"switch\"),L,ae,R,R,P):\"case\"==e?k($,B(\":\")):\"default\"==e?k(B(\":\")):\"catch\"==e?k(N(\"form\"),E,F,z,R,P):\"export\"==e?k(N(\"stat\"),Fe,R):\"import\"==e?k(N(\"stat\"),Ve,R):\"async\"==e?k(z):\"@\"==t?k($,z):S(N(\"stat\"),$,B(\";\"),R)}function F(e){if(\"(\"==e)return k(Le,B(\")\"))}function $(e,t){return H(e,t,!1)}function V(e,t){return H(e,t,!0)}function j(e){return\"(\"!=e?S():k(N(\")\"),W,B(\")\"),R)}function H(e,t,n){if(C.state.fatArrowAt==C.stream.start){var i=n?K:X;if(\"(\"==e)return k(E,N(\")\"),re(Le,\")\"),R,B(\"=>\"),i,P);if(\"variable\"==e)return S(E,_e,B(\"=>\"),i,P)}var r=n?G:q;return x.hasOwnProperty(e)?k(r):\"function\"==e?k(Ie,r):\"class\"==e||u&&\"interface\"==t?(C.marked=\"keyword\",k(N(\"form\"),Pe,R)):\"keyword c\"==e||\"async\"==e?k(n?V:$):\"(\"==e?k(N(\")\"),W,B(\")\"),R,r):\"operator\"==e||\"spread\"==e?k(n?V:$):\"[\"==e?k(N(\"]\"),Ge,R,r):\"{\"==e?oe(te,\"}\",null,r):\"quasi\"==e?S(U,r):\"new\"==e?k(function(e){return function(t){return\".\"==t?k(e?J:Z):\"variable\"==t&&u?k(ve,e?G:q):S(e?V:$)}}(n)):\"import\"==e?k($):k()}function W(e){return e.match(/[;\\}\\)\\],]/)?S():S($)}function q(e,t){return\",\"==e?k(W):G(e,t,!1)}function G(e,t,n){var i=0==n?q:G,r=0==n?$:V;return\"=>\"==e?k(E,n?K:X,P):\"operator\"==e?/\\+\\+|--/.test(t)||u&&\"!\"==t?k(i):u&&\"<\"==t&&C.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/,!1)?k(N(\">\"),re(he,\">\"),R,i):\"?\"==t?k($,B(\":\"),r):k(r):\"quasi\"==e?S(U,i):\";\"!=e?\"(\"==e?oe(V,\")\",\"call\",i):\".\"==e?k(ee,i):\"[\"==e?k(N(\"]\"),W,B(\"]\"),R,i):u&&\"as\"==t?(C.marked=\"keyword\",k(he,i)):\"regexp\"==e?(C.state.lastType=C.marked=\"operator\",C.stream.backUp(C.stream.pos-C.stream.start-1),k(r)):void 0:void 0}function U(e,t){return\"quasi\"!=e?S():\"${\"!=t.slice(t.length-2)?k(U):k($,Y)}function Y(e){if(\"}\"==e)return C.marked=\"string-2\",C.state.tokenize=v,k(U)}function X(e){return b(C.stream,C.state),S(\"{\"==e?z:$)}function K(e){return b(C.stream,C.state),S(\"{\"==e?z:V)}function Z(e,t){if(\"target\"==t)return C.marked=\"keyword\",k(q)}function J(e,t){if(\"target\"==t)return C.marked=\"keyword\",k(G)}function Q(e){return\":\"==e?k(R,z):S(q,B(\";\"),R)}function ee(e){if(\"variable\"==e)return C.marked=\"property\",k()}function te(e,t){if(\"async\"==e)return C.marked=\"property\",k(te);if(\"variable\"==e||\"keyword\"==C.style){return C.marked=\"property\",\"get\"==t||\"set\"==t?k(ne):(u&&C.state.fatArrowAt==C.stream.start&&(n=C.stream.match(/^\\s*:\\s*/,!1))&&(C.state.fatArrowAt=C.stream.pos+n[0].length),k(ie));var n}else{if(\"number\"==e||\"string\"==e)return C.marked=s?\"property\":C.style+\" property\",k(ie);if(\"jsonld-keyword\"==e)return k(ie);if(u&&D(t))return C.marked=\"keyword\",k(te);if(\"[\"==e)return k($,se,B(\"]\"),ie);if(\"spread\"==e)return k(V,ie);if(\"*\"==t)return C.marked=\"keyword\",k(te);if(\":\"==e)return S(ie)}}function ne(e){return\"variable\"!=e?S(ie):(C.marked=\"property\",k(Ie))}function ie(e){return\":\"==e?k(V):\"(\"==e?S(Ie):void 0}function re(e,t,n){function i(r,o){if(n?n.indexOf(r)>-1:\",\"==r){var a=C.state.lexical;return\"call\"==a.info&&(a.pos=(a.pos||0)+1),k(function(n,i){return n==t||i==t?S():S(e)},i)}return r==t||o==t?k():n&&n.indexOf(\";\")>-1?S(e):k(B(t))}return function(n,r){return n==t||r==t?k():S(e,i)}}function oe(e,t,n){for(var i=3;i<arguments.length;i++)C.cc.push(arguments[i]);return k(N(t,n),re(e,t),R)}function ae(e){return\"}\"==e?k():S(z,ae)}function se(e,t){if(u){if(\":\"==e)return k(he);if(\"?\"==t)return k(se)}}function le(e,t){if(u&&(\":\"==e||\"in\"==t))return k(he)}function ue(e){if(u&&\":\"==e)return C.stream.match(/^\\s*\\w+\\s+is\\b/,!1)?k($,ce,he):k(he)}function ce(e,t){if(\"is\"==t)return C.marked=\"keyword\",k()}function he(e,t){return\"keyof\"==t||\"typeof\"==t||\"infer\"==t?(C.marked=\"keyword\",k(\"typeof\"==t?V:he)):\"variable\"==e||\"void\"==t?(C.marked=\"type\",k(me)):\"|\"==t||\"&\"==t?k(he):\"string\"==e||\"number\"==e||\"atom\"==e?k(me):\"[\"==e?k(N(\"]\"),re(he,\"]\",\",\"),R,me):\"{\"==e?k(N(\"}\"),fe,R,me):\"(\"==e?k(re(ge,\")\"),de,me):\"<\"==e?k(re(he,\">\"),he):void 0}function de(e){if(\"=>\"==e)return k(he)}function fe(e){return e.match(/[\\}\\)\\]]/)?k():\",\"==e||\";\"==e?k(fe):S(pe,fe)}function pe(e,t){return\"variable\"==e||\"keyword\"==C.style?(C.marked=\"property\",k(pe)):\"?\"==t||\"number\"==e||\"string\"==e?k(pe):\":\"==e?k(he):\"[\"==e?k(B(\"variable\"),le,B(\"]\"),pe):\"(\"==e?S(Oe,pe):e.match(/[;\\}\\)\\],]/)?void 0:k()}function ge(e,t){return\"variable\"==e&&C.stream.match(/^\\s*[?:]/,!1)||\"?\"==t?k(ge):\":\"==e?k(he):\"spread\"==e?k(ge):S(he)}function me(e,t){return\"<\"==t?k(N(\">\"),re(he,\">\"),R,me):\"|\"==t||\".\"==e||\"&\"==t?k(he):\"[\"==e?k(he,B(\"]\"),me):\"extends\"==t||\"implements\"==t?(C.marked=\"keyword\",k(he)):\"?\"==t?k(he,B(\":\"),he):void 0}function ve(e,t){if(\"<\"==t)return k(N(\">\"),re(he,\">\"),R,me)}function ye(){return S(he,be)}function be(e,t){if(\"=\"==t)return k(he)}function xe(e,t){return\"enum\"==t?(C.marked=\"keyword\",k(Ue)):S(_e,se,Se,ke)}function _e(e,t){return u&&D(t)?(C.marked=\"keyword\",k(_e)):\"variable\"==e?(M(t),k()):\"spread\"==e?k(_e):\"[\"==e?oe(Ce,\"]\"):\"{\"==e?oe(we,\"}\"):void 0}function we(e,t){return\"variable\"!=e||C.stream.match(/^\\s*:/,!1)?(\"variable\"==e&&(C.marked=\"property\"),\"spread\"==e?k(_e):\"}\"==e?S():\"[\"==e?k($,B(\"]\"),B(\":\"),we):k(B(\":\"),_e,Se)):(M(t),k(Se))}function Ce(){return S(_e,Se)}function Se(e,t){if(\"=\"==t)return k(V)}function ke(e){if(\",\"==e)return k(xe)}function Te(e,t){if(\"keyword b\"==e&&\"else\"==t)return k(N(\"form\",\"else\"),z,R)}function Me(e,t){return\"await\"==t?k(Me):\"(\"==e?k(N(\")\"),De,R):void 0}function De(e){return\"var\"==e?k(xe,Ae):\"variable\"==e?k(Ae):S(Ae)}function Ae(e,t){return\")\"==e?k():\";\"==e?k(Ae):\"in\"==t||\"of\"==t?(C.marked=\"keyword\",k($,Ae)):S($,Ae)}function Ie(e,t){return\"*\"==t?(C.marked=\"keyword\",k(Ie)):\"variable\"==e?(M(t),k(Ie)):\"(\"==e?k(E,N(\")\"),re(Le,\")\"),R,ue,z,P):u&&\"<\"==t?k(N(\">\"),re(ye,\">\"),R,Ie):void 0}function Oe(e,t){return\"*\"==t?(C.marked=\"keyword\",k(Oe)):\"variable\"==e?(M(t),k(Oe)):\"(\"==e?k(E,N(\")\"),re(Le,\")\"),R,ue,P):u&&\"<\"==t?k(N(\">\"),re(ye,\">\"),R,Oe):void 0}function Ee(e,t){return\"keyword\"==e||\"variable\"==e?(C.marked=\"type\",k(Ee)):\"<\"==t?k(N(\">\"),re(ye,\">\"),R):void 0}function Le(e,t){return\"@\"==t&&k($,Le),\"spread\"==e?k(Le):u&&D(t)?(C.marked=\"keyword\",k(Le)):u&&\"this\"==e?k(se,Se):S(_e,se,Se)}function Pe(e,t){return\"variable\"==e?Ne(e,t):Re(e,t)}function Ne(e,t){if(\"variable\"==e)return M(t),k(Re)}function Re(e,t){return\"<\"==t?k(N(\">\"),re(ye,\">\"),R,Re):\"extends\"==t||\"implements\"==t||u&&\",\"==e?(\"implements\"==t&&(C.marked=\"keyword\"),k(u?he:$,Re)):\"{\"==e?k(N(\"}\"),Be,R):void 0}function Be(e,t){return\"async\"==e||\"variable\"==e&&(\"static\"==t||\"get\"==t||\"set\"==t||u&&D(t))&&C.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/,!1)?(C.marked=\"keyword\",k(Be)):\"variable\"==e||\"keyword\"==C.style?(C.marked=\"property\",k(ze,Be)):\"number\"==e||\"string\"==e?k(ze,Be):\"[\"==e?k($,se,B(\"]\"),ze,Be):\"*\"==t?(C.marked=\"keyword\",k(Be)):u&&\"(\"==e?S(Oe,Be):\";\"==e||\",\"==e?k(Be):\"}\"==e?k():\"@\"==t?k($,Be):void 0}function ze(e,t){if(\"?\"==t)return k(ze);if(\":\"==e)return k(he,Se);if(\"=\"==t)return k(V);var n=C.state.lexical.prev;return S(n&&\"interface\"==n.info?Oe:Ie)}function Fe(e,t){return\"*\"==t?(C.marked=\"keyword\",k(qe,B(\";\"))):\"default\"==t?(C.marked=\"keyword\",k($,B(\";\"))):\"{\"==e?k(re($e,\"}\"),qe,B(\";\")):S(z)}function $e(e,t){return\"as\"==t?(C.marked=\"keyword\",k(B(\"variable\"))):\"variable\"==e?S(V,$e):void 0}function Ve(e){return\"string\"==e?k():\"(\"==e?S($):S(je,He,qe)}function je(e,t){return\"{\"==e?oe(je,\"}\"):(\"variable\"==e&&M(t),\"*\"==t&&(C.marked=\"keyword\"),k(We))}function He(e){if(\",\"==e)return k(je,He)}function We(e,t){if(\"as\"==t)return C.marked=\"keyword\",k(je)}function qe(e,t){if(\"from\"==t)return C.marked=\"keyword\",k($)}function Ge(e){return\"]\"==e?k():S(re(V,\"]\"))}function Ue(){return S(N(\"form\"),_e,B(\"{\"),N(\"}\"),re(Ye,\"}\"),R,R)}function Ye(){return S(_e,Se)}function Xe(e,t,n){return t.tokenize==g&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(t.lastType)||\"quasi\"==t.lastType&&/\\{\\s*$/.test(e.string.slice(0,e.pos-(n||0)))}return P.lex=!0,R.lex=!0,{startState:function(e){var t={tokenize:g,lastType:\"sof\",cc:[],lexical:new _((e||0)-o,0,\"block\",!1),localVars:n.localVars,context:n.localVars&&new A(null,null,!1),indented:e||0};return n.globalVars&&\"object\"==typeof n.globalVars&&(t.globalVars=n.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty(\"align\")||(t.lexical.align=!1),t.indented=e.indentation(),b(e,t)),t.tokenize!=m&&e.eatSpace())return null;var n=t.tokenize(e,t);return\"comment\"==i?n:(t.lastType=\"operator\"!=i||\"++\"!=r&&\"--\"!=r?i:\"incdec\",function(e,t,n,i,r){var o=e.cc;for(C.state=e,C.stream=r,C.marked=null,C.cc=o,C.style=t,e.lexical.hasOwnProperty(\"align\")||(e.lexical.align=!0);;)if((o.length?o.pop():l?$:z)(n,i)){for(;o.length&&o[o.length-1].lex;)o.pop()();return C.marked?C.marked:\"variable\"==n&&w(e,i)?\"variable-2\":t}}(t,n,i,r,e))},indent:function(t,i){if(t.tokenize==m||t.tokenize==v)return e.Pass;if(t.tokenize!=g)return 0;var r,s=i&&i.charAt(0),l=t.lexical;if(!/^\\s*else\\b/.test(i))for(var u=t.cc.length-1;u>=0;--u){var c=t.cc[u];if(c==R)l=l.prev;else if(c!=Te)break}for(;(\"stat\"==l.type||\"form\"==l.type)&&(\"}\"==s||(r=t.cc[t.cc.length-1])&&(r==q||r==G)&&!/^[,\\.=+\\-*:?[\\(]/.test(i));)l=l.prev;a&&\")\"==l.type&&\"stat\"==l.prev.type&&(l=l.prev);var h=l.type,f=s==h;return\"vardef\"==h?l.indented+(\"operator\"==t.lastType||\",\"==t.lastType?l.info.length+1:0):\"form\"==h&&\"{\"==s?l.indented:\"form\"==h?l.indented+o:\"stat\"==h?l.indented+(function(e,t){return\"operator\"==e.lastType||\",\"==e.lastType||d.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}(t,i)?a||o:0):\"switch\"!=l.info||f||0==n.doubleIndentSwitch?l.align?l.column+(f?0:1):l.indented+(f?0:o):l.indented+(/^(?:case|default)\\b/.test(i)?o:2*o)},electricInput:/^\\s*(?:case .*?:|default:|\\{|\\})$/,blockCommentStart:l?null:\"/*\",blockCommentEnd:l?null:\"*/\",blockCommentContinue:l?null:\" * \",lineComment:l?null:\"//\",fold:\"brace\",closeBrackets:\"()[]{}''\\\"\\\"``\",helperType:l?\"json\":\"javascript\",jsonldMode:s,jsonMode:l,expressionAllowed:Xe,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=$&&t!=V||e.cc.pop()}}}),e.registerHelper(\"wordChars\",\"javascript\",/[\\w$]/),e.defineMIME(\"text/javascript\",\"javascript\"),e.defineMIME(\"text/ecmascript\",\"javascript\"),e.defineMIME(\"application/javascript\",\"javascript\"),e.defineMIME(\"application/x-javascript\",\"javascript\"),e.defineMIME(\"application/ecmascript\",\"javascript\"),e.defineMIME(\"application/json\",{name:\"javascript\",json:!0}),e.defineMIME(\"application/x-json\",{name:\"javascript\",json:!0}),e.defineMIME(\"application/manifest+json\",{name:\"javascript\",json:!0}),e.defineMIME(\"application/ld+json\",{name:\"javascript\",jsonld:!0}),e.defineMIME(\"text/typescript\",{name:\"javascript\",typescript:!0}),e.defineMIME(\"application/typescript\",{name:\"javascript\",typescript:!0})})(n(\"8U58\"))},\"5KBG\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=(i.isTypedArray,i.extend),o=(i.assert,i.each),a=i.isObject,s=n(\"vXqC\"),l=s.getDataItemValue,u=s.isDataItemOption,c=n(\"wWR3\").parseDate,h=n(\"rrAD\"),d=n(\"+2Ke\"),f=d.SOURCE_FORMAT_TYPED_ARRAY,p=d.SOURCE_FORMAT_ARRAY_ROWS,g=d.SOURCE_FORMAT_ORIGINAL,m=d.SOURCE_FORMAT_OBJECT_ROWS;function v(e,t){h.isInstance(e)||(e=h.seriesDataToSource(e)),this._source=e;var n=this._data=e.data,i=e.sourceFormat;i===f&&(this._offset=0,this._dimSize=t,this._data=n);var o=b[i===p?i+\"_\"+e.seriesLayoutBy:i];r(this,o)}var y=v.prototype;y.pure=!1,y.persistent=!0,y.getSource=function(){return this._source};var b={arrayRows_column:{pure:!0,count:function(){return Math.max(0,this._data.length-this._source.startIndex)},getItem:function(e){return this._data[e+this._source.startIndex]},appendData:w},arrayRows_row:{pure:!0,count:function(){var e=this._data[0];return e?Math.max(0,e.length-this._source.startIndex):0},getItem:function(e){e+=this._source.startIndex;for(var t=[],n=this._data,i=0;i<n.length;i++){var r=n[i];t.push(r?r[e]:null)}return t},appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".')}},objectRows:{pure:!0,count:x,getItem:_,appendData:w},keyedColumns:{pure:!0,count:function(){var e=this._source.dimensionsDefine[0].name,t=this._data[e];return t?t.length:0},getItem:function(e){for(var t=[],n=this._source.dimensionsDefine,i=0;i<n.length;i++){var r=this._data[n[i].name];t.push(r?r[e]:null)}return t},appendData:function(e){var t=this._data;o(e,function(e,n){for(var i=t[n]||(t[n]=[]),r=0;r<(e||[]).length;r++)i.push(e[r])})}},original:{count:x,getItem:_,appendData:w},typedArray:{persistent:!1,pure:!0,count:function(){return this._data?this._data.length/this._dimSize:0},getItem:function(e,t){e-=this._offset,t=t||[];for(var n=this._dimSize*e,i=0;i<this._dimSize;i++)t[i]=this._data[n+i];return t},appendData:function(e){this._data=e},clean:function(){this._offset+=this.count(),this._data=null}}};function x(){return this._data.length}function _(e){return this._data[e]}function w(e){for(var t=0;t<e.length;t++)this._data.push(e[t])}var C={arrayRows:S,objectRows:function(e,t,n,i){return null!=n?e[i]:e},keyedColumns:S,original:function(e,t,n,i){var r=l(e);return null!=n&&r instanceof Array?r[n]:r},typedArray:S};function S(e,t,n,i){return null!=n?e[n]:e}var k={arrayRows:T,objectRows:function(e,t,n,i){return M(e[t],this._dimensionInfos[t])},keyedColumns:T,original:function(e,t,n,i){var r=e&&(null==e.value?e:e.value);return!this._rawData.pure&&u(e)&&(this.hasItemOption=!0),M(r instanceof Array?r[i]:r,this._dimensionInfos[t])},typedArray:function(e,t,n,i){return e[i]}};function T(e,t,n,i){return M(e[i],this._dimensionInfos[t])}function M(e,t){var n=t&&t.type;if(\"ordinal\"===n){var i=t&&t.ordinalMeta;return i?i.parseAndCollect(e):e}return\"time\"===n&&\"number\"!=typeof e&&null!=e&&\"-\"!==e&&(e=+c(e)),null==e||\"\"===e?NaN:+e}t.DefaultDataProvider=v,t.defaultDimValueGetters=k,t.retrieveRawValue=function(e,t,n){if(e){var i=e.getRawDataItem(t);if(null!=i){var r,o,a=e.getProvider().getSource().sourceFormat,s=e.getDimensionInfo(n);return s&&(r=s.name,o=s.index),C[a](i,t,o,r)}}},t.retrieveRawAttr=function(e,t,n){if(e){var i=e.getProvider().getSource().sourceFormat;if(i===g||i===m){var r=e.getRawDataItem(t);return i!==g||a(r)||(r=null),r?r[n]:void 0}}}},\"5KWC\":function(e,t){var n=[\"itemStyle\",\"borderColor\"];e.exports=function(e,t){var i=e.get(\"color\");e.eachRawSeriesByType(\"boxplot\",function(t){var r=i[t.seriesIndex%i.length],o=t.getData();o.setVisual({legendSymbol:\"roundRect\",color:t.get(n)||r}),e.isSeriesFiltered(t)||o.each(function(e){var t=o.getItemModel(e);o.setItemVisual(e,{color:t.get(n,!0)})})})}},\"5Mek\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"qjvV\"),o=n(\"UAiw\"),a=n(\"mcsk\");function s(e){this.pointerChecker,this._zr=e,this._opt={};var t=i.bind,n=t(l,this),o=t(u,this),a=t(c,this),s=t(h,this),f=t(d,this);r.call(this),this.setPointerChecker=function(e){this.pointerChecker=e},this.enable=function(t,r){this.disable(),this._opt=i.defaults(i.clone(r)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&\"move\"!==t&&\"pan\"!==t||(e.on(\"mousedown\",n),e.on(\"mousemove\",o),e.on(\"mouseup\",a)),!0!==t&&\"scale\"!==t&&\"zoom\"!==t||(e.on(\"mousewheel\",s),e.on(\"pinch\",f))},this.disable=function(){e.off(\"mousedown\",n),e.off(\"mousemove\",o),e.off(\"mouseup\",a),e.off(\"mousewheel\",s),e.off(\"pinch\",f)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function l(e){if(!(o.isMiddleOrRightButtonOnMouseUpDown(e)||e.target&&e.target.draggable)){var t=e.offsetX,n=e.offsetY;this.pointerChecker&&this.pointerChecker(e,t,n)&&(this._x=t,this._y=n,this._dragging=!0)}}function u(e){if(this._dragging&&g(\"moveOnMouseMove\",e,this._opt)&&\"pinch\"!==e.gestureEvent&&!a.isTaken(this._zr,\"globalPan\")){var t=e.offsetX,n=e.offsetY,i=this._x,r=this._y,s=t-i,l=n-r;this._x=t,this._y=n,this._opt.preventDefaultMouseMove&&o.stop(e.event),p(this,\"pan\",\"moveOnMouseMove\",e,{dx:s,dy:l,oldX:i,oldY:r,newX:t,newY:n})}}function c(e){o.isMiddleOrRightButtonOnMouseUpDown(e)||(this._dragging=!1)}function h(e){var t=g(\"zoomOnMouseWheel\",e,this._opt),n=g(\"moveOnMouseWheel\",e,this._opt),i=e.wheelDelta,r=Math.abs(i),o=e.offsetX,a=e.offsetY;if(0!==i&&(t||n)){if(t){var s=r>3?1.4:r>1?1.2:1.1;f(this,\"zoom\",\"zoomOnMouseWheel\",e,{scale:i>0?s:1/s,originX:o,originY:a})}if(n){var l=Math.abs(i);f(this,\"scrollMove\",\"moveOnMouseWheel\",e,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a})}}}function d(e){a.isTaken(this._zr,\"globalPan\")||f(this,\"zoom\",null,e,{scale:e.pinchScale>1?1.1:1/1.1,originX:e.pinchX,originY:e.pinchY})}function f(e,t,n,i,r){e.pointerChecker&&e.pointerChecker(i,r.originX,r.originY)&&(o.stop(i.event),p(e,t,n,i,r))}function p(e,t,n,r,o){o.isAvailableBehavior=i.bind(g,null,n,r),e.trigger(t,o)}function g(e,t,n){var r=n[e];return!e||r&&(!i.isString(r)||t.event[r+\"Key\"])}i.mixin(s,r);var m=s;e.exports=m},\"5QRV\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"ao1T\"),o=n(\"3yJd\"),a=n(\"2uoh\"),s=n(\"Pdtn\"),l=n(\"1Xuh\");l.getLayoutRect;t.getLayoutRect=l.getLayoutRect;var u=n(\"qVJQ\"),c=u.enableDataStack,h=u.isDimensionStacked,d=u.getStackedDimension,f=n(\"/n1K\");t.completeDimensions=f;var p=n(\"hcq/\");t.createDimensions=p;var g=n(\"kK7q\");t.createSymbol=g.createSymbol;var m={isDimensionStacked:h,enableDataStack:c,getStackedDimension:d};t.createList=function(e){return r(e.getSource(),e)},t.dataStack=m,t.createScale=function(e,t){var n=t;s.isInstance(t)||(n=new s(t),i.mixin(n,a));var r=o.createScaleByModel(n);return r.setExtent(e[0],e[1]),o.niceScaleExtent(r,n),r},t.mixinAxisModelCommonMethods=function(e){i.mixin(e,a)}},\"5QVw\":function(e,t,n){e.exports={default:n(\"BwfY\"),__esModule:!0}},\"5dr1\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"8b51\"),o=n(\"ct4P\");function a(e){o.call(this,e)}a.prototype={constructor:a,type:\"cartesian2d\",dimensions:[\"x\",\"y\"],getBaseAxis:function(){return this.getAxesByScale(\"ordinal\")[0]||this.getAxesByScale(\"time\")[0]||this.getAxis(\"x\")},containPoint:function(e){var t=this.getAxis(\"x\"),n=this.getAxis(\"y\");return t.contain(t.toLocalCoord(e[0]))&&n.contain(n.toLocalCoord(e[1]))},containData:function(e){return this.getAxis(\"x\").containData(e[0])&&this.getAxis(\"y\").containData(e[1])},dataToPoint:function(e,t,n){var i=this.getAxis(\"x\"),r=this.getAxis(\"y\");return(n=n||[])[0]=i.toGlobalCoord(i.dataToCoord(e[0])),n[1]=r.toGlobalCoord(r.dataToCoord(e[1])),n},clampData:function(e,t){var n=this.getAxis(\"x\").scale,i=this.getAxis(\"y\").scale,r=n.getExtent(),o=i.getExtent(),a=n.parse(e[0]),s=i.parse(e[1]);return(t=t||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),a),Math.max(r[0],r[1])),t[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),t},pointToData:function(e,t){var n=this.getAxis(\"x\"),i=this.getAxis(\"y\");return(t=t||[])[0]=n.coordToData(n.toLocalCoord(e[0])),t[1]=i.coordToData(i.toLocalCoord(e[1])),t},getOtherAxis:function(e){return this.getAxis(\"x\"===e.dim?\"y\":\"x\")},getArea:function(){var e=this.getAxis(\"x\").getGlobalExtent(),t=this.getAxis(\"y\").getGlobalExtent(),n=Math.min(e[0],e[1]),i=Math.min(t[0],t[1]),o=Math.max(e[0],e[1])-n,a=Math.max(t[0],t[1])-i;return new r(n,i,o,a)}},i.inherits(a,o);var s=a;e.exports=s},\"5vFd\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=i.isObject,o=i.each,a=i.map,s=i.indexOf,l=(i.retrieve,n(\"1Xuh\").getLayoutRect),u=n(\"3yJd\"),c=u.createScaleByModel,h=u.ifAxisCrossZero,d=u.niceScaleExtent,f=u.estimateLabelUnionRect,p=n(\"5dr1\"),g=n(\"RKzr\"),m=n(\"rctg\"),v=n(\"qVJQ\").getStackedDimension;function y(e,t,n){return e.getCoordSysModel()===t}function b(e,t,n){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(e,t,n),this.model=e}n(\"BuI2\");var x=b.prototype;function _(e,t,n,i){n.getAxesOnZeroOf=function(){return r?[r]:[]};var r,o=e[t],a=n.model,s=a.get(\"axisLine.onZero\"),l=a.get(\"axisLine.onZeroAxisIndex\");if(s){if(null!=l)w(o[l])&&(r=o[l]);else for(var u in o)if(o.hasOwnProperty(u)&&w(o[u])&&!i[c(o[u])]){r=o[u];break}r&&(i[c(r)]=!0)}function c(e){return e.dim+\"_\"+e.index}}function w(e){return e&&\"category\"!==e.type&&\"time\"!==e.type&&h(e)}x.type=\"grid\",x.axisPointerEnabled=!0,x.getRect=function(){return this._rect},x.update=function(e,t){var n=this._axesMap;this._updateScale(e,this.model),o(n.x,function(e){d(e.scale,e.model)}),o(n.y,function(e){d(e.scale,e.model)});var i={};o(n.x,function(e){_(n,\"y\",e,i)}),o(n.y,function(e){_(n,\"x\",e,i)}),this.resize(this.model,t)},x.resize=function(e,t,n){var i=l(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()});this._rect=i;var r=this._axesList;function a(){o(r,function(e){var t=e.isHorizontal(),n=t?[0,i.width]:[0,i.height],r=e.inverse?1:0;e.setExtent(n[r],n[1-r]),function(e,t){var n=e.getExtent(),i=n[0]+n[1];e.toGlobalCoord=\"x\"===e.dim?function(e){return e+t}:function(e){return i-e+t},e.toLocalCoord=\"x\"===e.dim?function(e){return e-t}:function(e){return i-e+t}}(e,t?i.x:i.y)})}a(),!n&&e.get(\"containLabel\")&&(o(r,function(e){if(!e.model.get(\"axisLabel.inside\")){var t=f(e);if(t){var n=e.isHorizontal()?\"height\":\"width\",r=e.model.get(\"axisLabel.margin\");i[n]-=t[n]+r,\"top\"===e.position?i.y+=t.height+r:\"left\"===e.position&&(i.x+=t.width+r)}}}),a())},x.getAxis=function(e,t){var n=this._axesMap[e];if(null!=n){if(null==t)for(var i in n)if(n.hasOwnProperty(i))return n[i];return n[t]}},x.getAxes=function(){return this._axesList.slice()},x.getCartesian=function(e,t){if(null!=e&&null!=t){var n=\"x\"+e+\"y\"+t;return this._coordsMap[n]}r(e)&&(t=e.yAxisIndex,e=e.xAxisIndex);for(var i=0,o=this._coordsList;i<o.length;i++)if(o[i].getAxis(\"x\").index===e||o[i].getAxis(\"y\").index===t)return o[i]},x.getCartesians=function(){return this._coordsList.slice()},x.convertToPixel=function(e,t,n){var i=this._findConvertTarget(e,t);return i.cartesian?i.cartesian.dataToPoint(n):i.axis?i.axis.toGlobalCoord(i.axis.dataToCoord(n)):null},x.convertFromPixel=function(e,t,n){var i=this._findConvertTarget(e,t);return i.cartesian?i.cartesian.pointToData(n):i.axis?i.axis.coordToData(i.axis.toLocalCoord(n)):null},x._findConvertTarget=function(e,t){var n,i,r=t.seriesModel,o=t.xAxisModel||r&&r.getReferringComponents(\"xAxis\")[0],a=t.yAxisModel||r&&r.getReferringComponents(\"yAxis\")[0],l=t.gridModel,u=this._coordsList;if(r)n=r.coordinateSystem,s(u,n)<0&&(n=null);else if(o&&a)n=this.getCartesian(o.componentIndex,a.componentIndex);else if(o)i=this.getAxis(\"x\",o.componentIndex);else if(a)i=this.getAxis(\"y\",a.componentIndex);else if(l){l.coordinateSystem===this&&(n=this._coordsList[0])}return{cartesian:n,axis:i}},x.containPoint=function(e){var t=this._coordsList[0];if(t)return t.containPoint(e)},x._initCartesian=function(e,t,n){var i={left:!1,right:!1,top:!1,bottom:!1},r={x:{},y:{}},a={x:0,y:0};if(t.eachComponent(\"xAxis\",s(\"x\"),this),t.eachComponent(\"yAxis\",s(\"y\"),this),!a.x||!a.y)return this._axesMap={},void(this._axesList=[]);function s(t){return function(n,o){if(y(n,e)){var s=n.get(\"position\");\"x\"===t?\"top\"!==s&&\"bottom\"!==s&&(s=i.bottom?\"top\":\"bottom\"):\"left\"!==s&&\"right\"!==s&&(s=i.left?\"right\":\"left\"),i[s]=!0;var l=new g(t,c(n),[0,0],n.get(\"type\"),s),u=\"category\"===l.type;l.onBand=u&&n.get(\"boundaryGap\"),l.inverse=n.get(\"inverse\"),n.axis=l,l.model=n,l.grid=this,l.index=o,this._axesList.push(l),r[t][o]=l,a[t]++}}}this._axesMap=r,o(r.x,function(t,n){o(r.y,function(i,r){var o=\"x\"+n+\"y\"+r,a=new p(o);a.grid=this,a.model=e,this._coordsMap[o]=a,this._coordsList.push(a),a.addAxis(t),a.addAxis(i)},this)},this)},x._updateScale=function(e,t){function n(e,t,n){o(e.mapDimension(t.dim,!0),function(n){t.scale.unionExtentFromData(e,v(e,n))})}o(this._axesList,function(e){e.scale.setExtent(1/0,-1/0)}),e.eachSeries(function(i){if(k(i)){var r=S(i,e),o=r[0],a=r[1];if(!y(o,t)||!y(a,t))return;var s=this.getCartesian(o.componentIndex,a.componentIndex),l=i.getData(),u=s.getAxis(\"x\"),c=s.getAxis(\"y\");\"list\"===l.type&&(n(l,u,i),n(l,c,i))}},this)},x.getTooltipAxes=function(e){var t=[],n=[];return o(this.getCartesians(),function(i){var r=null!=e&&\"auto\"!==e?i.getAxis(e):i.getBaseAxis(),o=i.getOtherAxis(r);s(t,r)<0&&t.push(r),s(n,o)<0&&n.push(o)}),{baseAxes:t,otherAxes:n}};var C=[\"xAxis\",\"yAxis\"];function S(e,t){return a(C,function(t){return e.getReferringComponents(t)[0]})}function k(e){return\"cartesian2d\"===e.get(\"coordinateSystem\")}b.create=function(e,t){var n=[];return e.eachComponent(\"grid\",function(i,r){var o=new b(i,e,t);o.name=\"grid_\"+r,o.resize(i,t,!0),i.coordinateSystem=o,n.push(o)}),e.eachSeries(function(e){if(k(e)){var t=S(e),n=t[0],i=t[1],r=n.getCoordSysModel().coordinateSystem;e.coordinateSystem=r.getCartesian(n.componentIndex,i.componentIndex)}}),n},b.dimensions=b.prototype.dimensions=p.prototype.dimensions,m.register(\"cartesian2d\",b);var T=b;e.exports=T},\"67nf\":function(e,t,n){var i=n(\"GxVO\"),r=n(\"C7PF\"),o=n(\"AAi1\"),a=o.quadraticSubdivide,s=o.cubicSubdivide,l=o.quadraticAt,u=o.cubicAt,c=o.quadraticDerivativeAt,h=o.cubicDerivativeAt,d=[];function f(e,t,n){var i=e.cpx2,r=e.cpy2;return null===i||null===r?[(n?h:u)(e.x1,e.cpx1,e.cpx2,e.x2,t),(n?h:u)(e.y1,e.cpy1,e.cpy2,e.y2,t)]:[(n?c:l)(e.x1,e.cpx1,e.x2,t),(n?c:l)(e.y1,e.cpy1,e.y2,t)]}var p=i.extend({type:\"bezier-curve\",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:\"#000\",fill:null},buildPath:function(e,t){var n=t.x1,i=t.y1,r=t.x2,o=t.y2,l=t.cpx1,u=t.cpy1,c=t.cpx2,h=t.cpy2,f=t.percent;0!==f&&(e.moveTo(n,i),null==c||null==h?(f<1&&(a(n,l,r,f,d),l=d[1],r=d[2],a(i,u,o,f,d),u=d[1],o=d[2]),e.quadraticCurveTo(l,u,r,o)):(f<1&&(s(n,l,c,r,f,d),l=d[1],c=d[2],r=d[3],s(i,u,h,o,f,d),u=d[1],h=d[2],o=d[3]),e.bezierCurveTo(l,u,c,h,r,o)))},pointAt:function(e){return f(this.shape,e,!1)},tangentAt:function(e){var t=f(this.shape,e,!0);return r.normalize(t,t)}});e.exports=p},\"6HcI\":function(e,t,n){var i=n(\"/gxq\");e.exports=function(e){var t=e.polar;if(t){i.isArray(t)||(t=[t]);var n=[];i.each(t,function(t,r){t.indicator?(t.type&&!t.shape&&(t.shape=t.type),e.radar=e.radar||[],i.isArray(e.radar)||(e.radar=[e.radar]),e.radar.push(t)):n.push(t)}),e.polar=n}i.each(e.series,function(e){e&&\"radar\"===e.type&&e.polarIndex&&(e.radarIndex=e.polarIndex)})}},\"6HoR\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"MXTC\").Polygon,o=n(\"0sHC\"),a=n(\"/gxq\"),s=a.bind,l=a.extend,u=n(\"1Hui\"),c=i.extendChartView({type:\"themeRiver\",init:function(){this._layers=[]},render:function(e,t,n){var i=e.getData(),a=this.group,c=e.getLayerSeries(),h=i.getLayout(\"layoutInfo\"),d=h.rect,f=h.boundaryGap;function p(e){return e.name}a.attr(\"position\",[0,d.y+f[0]]);var g={};function m(t,n,s){var u=this._layers;if(\"remove\"!==t){for(var h,d,f,p=[],m=[],v=c[n].indices,y=0;y<v.length;y++){var b=i.getItemLayout(v[y]),x=b.x,_=b.y0,w=b.y;p.push([x,_]),m.push([x,_+w]),h=i.getItemVisual(v[y],\"color\")}var C=i.getItemLayout(v[0]),S=i.getItemModel(v[y-1]),k=S.getModel(\"label\"),T=k.get(\"margin\");if(\"add\"===t){var M=g[n]=new o.Group;d=new r({shape:{points:p,stackedOnPoints:m,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),f=new o.Text({style:{x:C.x-T,y:C.y0+C.y/2}}),M.add(d),M.add(f),a.add(M),d.setClipPath(function(e,t,n){var i=new o.Rect({shape:{x:e.x-10,y:e.y-10,width:0,height:e.height+20}});return o.initProps(i,{shape:{width:e.width+20,height:e.height+20}},t,n),i}(d.getBoundingRect(),e,function(){d.removeClipPath()}))}else{M=u[s];d=M.childAt(0),f=M.childAt(1),a.add(M),g[n]=M,o.updateProps(d,{shape:{points:p,stackedOnPoints:m}},e),o.updateProps(f,{style:{x:C.x-T,y:C.y0+C.y/2}},e)}var D=S.getModel(\"emphasis.itemStyle\"),A=S.getModel(\"itemStyle\");o.setTextStyle(f.style,k,{text:k.get(\"show\")?e.getFormattedLabel(v[y-1],\"normal\")||i.getName(v[y-1]):null,textVerticalAlign:\"middle\"}),d.setStyle(l({fill:h},A.getItemStyle([\"color\"]))),o.setHoverStyle(d,D.getItemStyle())}else a.remove(u[n])}new u(this._layersSeries||[],c,p,p).add(s(m,this,\"add\")).update(s(m,this,\"update\")).remove(s(m,this,\"remove\")).execute(),this._layersSeries=c,this._layers=g},dispose:function(){}});e.exports=c},\"6JAQ\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"Pdtn\"),a=n(\"vXqC\").isNameSpecified,s=n(\"FIAY\").legend.selector,l={all:{type:\"all\",title:r.clone(s.all)},inverse:{type:\"inverse\",title:r.clone(s.inverse)}},u=i.extendComponentModel({type:\"legend.plain\",dependencies:[\"series\"],layoutMode:{type:\"box\",ignoreSize:!0},init:function(e,t,n){this.mergeDefaultAndTheme(e,n),e.selected=e.selected||{},this._updateSelector(e)},mergeOption:function(e){u.superCall(this,\"mergeOption\",e),this._updateSelector(e)},_updateSelector:function(e){var t=e.selector;!0===t&&(t=e.selector=[\"all\",\"inverse\"]),r.isArray(t)&&r.each(t,function(e,n){r.isString(e)&&(e={type:e}),t[n]=r.merge(e,l[e.type])})},optionUpdated:function(){this._updateData(this.ecModel);var e=this._data;if(e[0]&&\"single\"===this.get(\"selectedMode\")){for(var t=!1,n=0;n<e.length;n++){var i=e[n].get(\"name\");if(this.isSelected(i)){this.select(i),t=!0;break}}!t&&this.select(e[0].get(\"name\"))}},_updateData:function(e){var t=[],n=[];e.eachRawSeries(function(i){var r,o=i.name;if(n.push(o),i.legendVisualProvider){var s=i.legendVisualProvider.getAllNames();e.isSeriesFiltered(i)||(n=n.concat(s)),s.length?t=t.concat(s):r=!0}else r=!0;r&&a(i)&&t.push(i.name)}),this._availableNames=n;var i=this.get(\"data\")||t,s=r.map(i,function(e){return\"string\"!=typeof e&&\"number\"!=typeof e||(e={name:e}),new o(e,this,this.ecModel)},this);this._data=s},getData:function(){return this._data},select:function(e){var t=this.option.selected;if(\"single\"===this.get(\"selectedMode\")){var n=this._data;r.each(n,function(e){t[e.get(\"name\")]=!1})}t[e]=!0},unSelect:function(e){\"single\"!==this.get(\"selectedMode\")&&(this.option.selected[e]=!1)},toggleSelected:function(e){var t=this.option.selected;t.hasOwnProperty(e)||(t[e]=!0),this[t[e]?\"unSelect\":\"select\"](e)},allSelect:function(){var e=this._data,t=this.option.selected;r.each(e,function(e){t[e.get(\"name\",!0)]=!0})},inverseSelect:function(){var e=this._data,t=this.option.selected;r.each(e,function(e){var n=e.get(\"name\",!0);t.hasOwnProperty(n)||(t[n]=!0),t[n]=!t[n]})},isSelected:function(e){var t=this.option.selected;return!(t.hasOwnProperty(e)&&!t[e])&&r.indexOf(this._availableNames,e)>=0},getOrient:function(){return\"vertical\"===this.get(\"orient\")?{index:1,name:\"vertical\"}:{index:0,name:\"horizontal\"}},defaultOption:{zlevel:0,z:4,show:!0,orient:\"horizontal\",left:\"center\",top:0,align:\"auto\",backgroundColor:\"rgba(0,0,0,0)\",borderColor:\"#ccc\",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:\"#ccc\",inactiveBorderColor:\"#ccc\",itemStyle:{borderWidth:0},textStyle:{color:\"#333\"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:\" sans-serif\",color:\"#666\",borderWidth:1,borderColor:\"#666\"},emphasis:{selectorLabel:{show:!0,color:\"#eee\",backgroundColor:\"#666\"}},selectorPosition:\"auto\",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}}}),c=u;e.exports=c},\"6Kqb\":function(e,t,n){var i=n(\"GxVO\").extend({type:\"ring\",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(e,t){var n=t.cx,i=t.cy,r=2*Math.PI;e.moveTo(n+t.r,i),e.arc(n,i,t.r,0,r,!1),e.moveTo(n+t.r0,i),e.arc(n,i,t.r0,0,r,!0)}});e.exports=i},\"6MCj\":function(e,t,n){var i=n(\"YNzw\"),r=n(\"C7PF\").applyTransform,o=n(\"8b51\"),a=n(\"DRaW\"),s=n(\"3h1/\"),l=n(\"qjrH\"),u=n(\"taS8\"),c=n(\"9qnA\"),h=n(\"MAom\"),d=n(\"/86O\"),f=n(\"GxVO\"),p=n(\"moDv\"),g=n(\"wRzc\"),m=n(\"cI6i\"),v=p.CMD,y=Math.round,b=Math.sqrt,x=Math.abs,_=Math.cos,w=Math.sin,C=Math.max;if(!i.canvasSupported){var S=21600,k=S/2,T=function(e){e.style.cssText=\"position:absolute;left:0;top:0;width:1px;height:1px;\",e.coordsize=S+\",\"+S,e.coordorigin=\"0,0\"},M=function(e,t,n){return\"rgb(\"+[e,t,n].join(\",\")+\")\"},D=function(e,t){t&&e&&t.parentNode!==e&&e.appendChild(t)},A=function(e,t){t&&e&&t.parentNode===e&&e.removeChild(t)},I=function(e,t,n){return 1e5*(parseFloat(e)||0)+1e3*(parseFloat(t)||0)+n},O=l.parsePercent,E=function(e,t,n){var i=a.parse(t);n=+n,isNaN(n)&&(n=1),i&&(e.color=M(i[0],i[1],i[2]),e.opacity=n*i[3])},L=function(e,t,n,i){var o=\"fill\"===t,s=e.getElementsByTagName(t)[0];null!=n[t]&&\"none\"!==n[t]&&(o||!o&&n.lineWidth)?(e[o?\"filled\":\"stroked\"]=\"true\",n[t]instanceof g&&A(e,s),s||(s=m.createNode(t)),o?function(e,t,n){var i,o,s=t.fill;if(null!=s)if(s instanceof g){var l,u=0,c=[0,0],h=0,d=1,f=n.getBoundingRect(),p=f.width,m=f.height;if(\"linear\"===s.type){l=\"gradient\";var v=n.transform,y=[s.x*p,s.y*m],b=[s.x2*p,s.y2*m];v&&(r(y,y,v),r(b,b,v));var x=b[0]-y[0],_=b[1]-y[1];(u=180*Math.atan2(x,_)/Math.PI)<0&&(u+=360),u<1e-6&&(u=0)}else{l=\"gradientradial\",y=[s.x*p,s.y*m],v=n.transform;var w=n.scale,k=p,T=m;c=[(y[0]-f.x)/k,(y[1]-f.y)/T],v&&r(y,y,v),k/=w[0]*S,T/=w[1]*S;var D=C(k,T);h=0/D,d=2*s.r/D-h}var A=s.colorStops.slice();A.sort(function(e,t){return e.offset-t.offset});for(var I=A.length,O=[],L=[],P=0;P<I;P++){var N=A[P],R=(i=N.color,o=a.parse(i),[M(o[0],o[1],o[2]),o[3]]);L.push(N.offset*d+h+\" \"+R[0]),0!==P&&P!==I-1||O.push(R)}if(I>=2){var B=O[0][0],z=O[1][0],F=O[0][1]*t.opacity,$=O[1][1]*t.opacity;e.type=l,e.method=\"none\",e.focus=\"100%\",e.angle=u,e.color=B,e.color2=z,e.colors=L.join(\",\"),e.opacity=$,e.opacity2=F}\"radial\"===l&&(e.focusposition=c.join(\",\"))}else E(e,s,t.opacity)}(s,n,i):function(e,t){t.lineDash&&(e.dashstyle=t.lineDash.join(\" \")),null==t.stroke||t.stroke instanceof g||E(e,t.stroke,t.opacity)}(s,n),D(e,s)):(e[o?\"filled\":\"stroked\"]=\"false\",A(e,s))},P=[[],[],[]];f.prototype.brushVML=function(e){var t=this.style,n=this._vmlEl;n||(n=m.createNode(\"shape\"),T(n),this._vmlEl=n),L(n,\"fill\",t,this),L(n,\"stroke\",t,this);var i=this.transform,o=null!=i,a=n.getElementsByTagName(\"stroke\")[0];if(a){var s=t.lineWidth;if(o&&!t.strokeNoScale){var l=i[0]*i[3]-i[1]*i[2];s*=b(x(l))}a.weight=s+\"px\"}var u=this.path||(this.path=new p);this.__dirtyPath&&(u.beginPath(),u.subPixelOptimize=!1,this.buildPath(u,this.shape),u.toStatic(),this.__dirtyPath=!1),n.path=function(e,t){var n,i,o,a,s,l,u=v.M,c=v.C,h=v.L,d=v.A,f=v.Q,p=[],g=e.data,m=e.len();for(a=0;a<m;){switch(i=\"\",n=0,o=g[a++]){case u:i=\" m \",n=1,s=g[a++],l=g[a++],P[0][0]=s,P[0][1]=l;break;case h:i=\" l \",n=1,s=g[a++],l=g[a++],P[0][0]=s,P[0][1]=l;break;case f:case c:i=\" c \",n=3;var x,C,T=g[a++],M=g[a++],D=g[a++],A=g[a++];o===f?(x=D,C=A,D=(D+2*T)/3,A=(A+2*M)/3,T=(s+2*T)/3,M=(l+2*M)/3):(x=g[a++],C=g[a++]),P[0][0]=T,P[0][1]=M,P[1][0]=D,P[1][1]=A,P[2][0]=x,P[2][1]=C,s=x,l=C;break;case d:var I=0,O=0,E=1,L=1,N=0;t&&(I=t[4],O=t[5],E=b(t[0]*t[0]+t[1]*t[1]),L=b(t[2]*t[2]+t[3]*t[3]),N=Math.atan2(-t[1]/L,t[0]/E));var R=g[a++],B=g[a++],z=g[a++],F=g[a++],$=g[a++]+N,V=g[a++]+$+N;a++;var j=g[a++],H=R+_($)*z,W=B+w($)*F,q=(T=R+_(V)*z,M=B+w(V)*F,j?\" wa \":\" at \");Math.abs(H-T)<1e-4&&(Math.abs(V-$)>.01?j&&(H+=.0125):Math.abs(W-B)<1e-4?j&&H<R||!j&&H>R?M-=.0125:M+=.0125:j&&W<B||!j&&W>B?T+=.0125:T-=.0125),p.push(q,y(((R-z)*E+I)*S-k),\",\",y(((B-F)*L+O)*S-k),\",\",y(((R+z)*E+I)*S-k),\",\",y(((B+F)*L+O)*S-k),\",\",y((H*E+I)*S-k),\",\",y((W*L+O)*S-k),\",\",y((T*E+I)*S-k),\",\",y((M*L+O)*S-k)),s=T,l=M;break;case v.R:var G=P[0],U=P[1];G[0]=g[a++],G[1]=g[a++],U[0]=G[0]+g[a++],U[1]=G[1]+g[a++],t&&(r(G,G,t),r(U,U,t)),G[0]=y(G[0]*S-k),U[0]=y(U[0]*S-k),G[1]=y(G[1]*S-k),U[1]=y(U[1]*S-k),p.push(\" m \",G[0],\",\",G[1],\" l \",U[0],\",\",G[1],\" l \",U[0],\",\",U[1],\" l \",G[0],\",\",U[1]);break;case v.Z:p.push(\" x \")}if(n>0){p.push(i);for(var Y=0;Y<n;Y++){var X=P[Y];t&&r(X,X,t),p.push(y(X[0]*S-k),\",\",y(X[1]*S-k),Y<n-1?\",\":\"\")}}}return p.join(\"\")}(u,this.transform),n.style.zIndex=I(this.zlevel,this.z,this.z2),D(e,n),null!=t.text?this.drawRectText(e,this.getBoundingRect()):this.removeRectText(e)},f.prototype.onRemove=function(e){A(e,this._vmlEl),this.removeRectText(e)},f.prototype.onAdd=function(e){D(e,this._vmlEl),this.appendRectText(e)};h.prototype.brushVML=function(e){var t,n,i,o=this.style,a=o.image;if(\"object\"==typeof(i=a)&&i.tagName&&\"IMG\"===i.tagName.toUpperCase()){var s=a.src;if(s===this._imageSrc)t=this._imageWidth,n=this._imageHeight;else{var l=a.runtimeStyle,u=l.width,c=l.height;l.width=\"auto\",l.height=\"auto\",t=a.width,n=a.height,l.width=u,l.height=c,this._imageSrc=s,this._imageWidth=t,this._imageHeight=n}a=s}else a===this._imageSrc&&(t=this._imageWidth,n=this._imageHeight);if(a){var h=o.x||0,d=o.y||0,f=o.width,p=o.height,g=o.sWidth,v=o.sHeight,x=o.sx||0,_=o.sy||0,w=g&&v,S=this._vmlEl;S||(S=m.doc.createElement(\"div\"),T(S),this._vmlEl=S);var k,M=S.style,A=!1,O=1,E=1;if(this.transform&&(k=this.transform,O=b(k[0]*k[0]+k[1]*k[1]),E=b(k[2]*k[2]+k[3]*k[3]),A=k[1]||k[2]),A){var L=[h,d],P=[h+f,d],N=[h,d+p],R=[h+f,d+p];r(L,L,k),r(P,P,k),r(N,N,k),r(R,R,k);var B=C(L[0],P[0],N[0],R[0]),z=C(L[1],P[1],N[1],R[1]),F=[];F.push(\"M11=\",k[0]/O,\",\",\"M12=\",k[2]/E,\",\",\"M21=\",k[1]/O,\",\",\"M22=\",k[3]/E,\",\",\"Dx=\",y(h*O+k[4]),\",\",\"Dy=\",y(d*E+k[5])),M.padding=\"0 \"+y(B)+\"px \"+y(z)+\"px 0\",M.filter=\"progid:DXImageTransform.Microsoft.Matrix(\"+F.join(\"\")+\", SizingMethod=clip)\"}else k&&(h=h*O+k[4],d=d*E+k[5]),M.filter=\"\",M.left=y(h)+\"px\",M.top=y(d)+\"px\";var $=this._imageEl,V=this._cropEl;$||($=m.doc.createElement(\"div\"),this._imageEl=$);var j=$.style;if(w){if(t&&n)j.width=y(O*t*f/g)+\"px\",j.height=y(E*n*p/v)+\"px\";else{var H=new Image,W=this;H.onload=function(){H.onload=null,t=H.width,n=H.height,j.width=y(O*t*f/g)+\"px\",j.height=y(E*n*p/v)+\"px\",W._imageWidth=t,W._imageHeight=n,W._imageSrc=a},H.src=a}V||((V=m.doc.createElement(\"div\")).style.overflow=\"hidden\",this._cropEl=V);var q=V.style;q.width=y((f+x*f/g)*O),q.height=y((p+_*p/v)*E),q.filter=\"progid:DXImageTransform.Microsoft.Matrix(Dx=\"+-x*f/g*O+\",Dy=\"+-_*p/v*E+\")\",V.parentNode||S.appendChild(V),$.parentNode!==V&&V.appendChild($)}else j.width=y(O*f)+\"px\",j.height=y(E*p)+\"px\",S.appendChild($),V&&V.parentNode&&(S.removeChild(V),this._cropEl=null);var G=\"\",U=o.opacity;U<1&&(G+=\".Alpha(opacity=\"+y(100*U)+\") \"),G+=\"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\"+a+\", SizingMethod=scale)\",j.filter=G,S.style.zIndex=I(this.zlevel,this.z,this.z2),D(e,S),null!=o.text&&this.drawRectText(e,this.getBoundingRect())}},h.prototype.onRemove=function(e){A(e,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(e)},h.prototype.onAdd=function(e){D(e,this._vmlEl),this.appendRectText(e)};var N,R={},B=0,z=document.createElement(\"div\");s.$override(\"measureText\",function(e,t){var n=m.doc;N||((N=n.createElement(\"div\")).style.cssText=\"position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;\",m.doc.body.appendChild(N));try{N.style.font=t}catch(e){}return N.innerHTML=\"\",N.appendChild(n.createTextNode(e)),{width:N.offsetWidth}});for(var F=new o,$=function(e,t,n,i){var o=this.style;this.__dirty&&l.normalizeTextStyle(o,!0);var a=o.text;if(null!=a&&(a+=\"\"),a){if(o.rich){var u=s.parseRichText(a,o);a=[];for(var c=0;c<u.lines.length;c++){for(var h=u.lines[c].tokens,d=[],f=0;f<h.length;f++)d.push(h[f].text);a.push(d.join(\"\"))}a=a.join(\"\\n\")}var p,g,v=o.textAlign,b=o.textVerticalAlign,x=function(e){var t=R[e];if(!t){B>100&&(B=0,R={});var n,i=z.style;try{i.font=e,n=i.fontFamily.split(\",\")[0]}catch(e){}t={style:i.fontStyle||\"normal\",variant:i.fontVariant||\"normal\",weight:i.fontWeight||\"normal\",size:0|parseFloat(i.fontSize||12),family:n||\"Microsoft YaHei\"},R[e]=t,B++}return t}(o.font),_=x.style+\" \"+x.variant+\" \"+x.weight+\" \"+x.size+'px \"'+x.family+'\"';n=n||s.getBoundingRect(a,_,v,b,o.textPadding,o.textLineHeight);var w=this.transform;if(w&&!i&&(F.copy(t),F.applyTransform(w),t=F),i)p=t.x,g=t.y;else{var C=o.textPosition;if(C instanceof Array)p=t.x+O(C[0],t.width),g=t.y+O(C[1],t.height),v=v||\"left\";else{var S=this.calculateTextPosition?this.calculateTextPosition({},o,t):s.calculateTextPosition({},o,t);p=S.x,g=S.y,v=v||S.textAlign,b=b||S.textVerticalAlign}}p=s.adjustTextX(p,n.width,v),g=s.adjustTextY(g,n.height,b),g+=n.height/2;var k,M,A,E=m.createNode,P=this._textVmlEl;P?M=(k=(A=P.firstChild).nextSibling).nextSibling:(P=E(\"line\"),k=E(\"path\"),M=E(\"textpath\"),A=E(\"skew\"),M.style[\"v-text-align\"]=\"left\",T(P),k.textpathok=!0,M.on=!0,P.from=\"0 0\",P.to=\"1000 0.05\",D(P,A),D(P,k),D(P,M),this._textVmlEl=P);var N=[p,g],$=P.style;w&&i?(r(N,N,w),A.on=!0,A.matrix=w[0].toFixed(3)+\",\"+w[2].toFixed(3)+\",\"+w[1].toFixed(3)+\",\"+w[3].toFixed(3)+\",0,0\",A.offset=(y(N[0])||0)+\",\"+(y(N[1])||0),A.origin=\"0 0\",$.left=\"0px\",$.top=\"0px\"):(A.on=!1,$.left=y(p)+\"px\",$.top=y(g)+\"px\"),M.string=String(a).replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\");try{M.style.font=_}catch(e){}L(P,\"fill\",{fill:o.textFill,opacity:o.opacity},this),L(P,\"stroke\",{stroke:o.textStroke,opacity:o.opacity,lineDash:o.lineDash||null},this),P.style.zIndex=I(this.zlevel,this.z,this.z2),D(e,P)}},V=function(e){A(e,this._textVmlEl),this._textVmlEl=null},j=function(e){D(e,this._textVmlEl)},H=[u,c,h,f,d],W=0;W<H.length;W++){var q=H[W].prototype;q.drawRectText=$,q.removeRectText=V,q.appendRectText=j}d.prototype.brushVML=function(e){var t=this.style;null!=t.text?this.drawRectText(e,{x:t.x||0,y:t.y||0,width:0,height:0},this.getBoundingRect(),!0):this.removeRectText(e)},d.prototype.onRemove=function(e){this.removeRectText(e)},d.prototype.onAdd=function(e){this.appendRectText(e)}}},\"6NQ8\":function(e,t){var n=Math.log(2);function i(e,t,r,o,a,s){var l=o+\"-\"+a,u=e.length;if(s.hasOwnProperty(l))return s[l];if(1===t){var c=Math.round(Math.log((1<<u)-1&~a)/n);return e[r][c]}for(var h=o|1<<r,d=r+1;o&1<<d;)d++;for(var f=0,p=0,g=0;p<u;p++){var m=1<<p;m&a||(f+=(g%2?-1:1)*e[r][p]*i(e,t-1,d,h,a|m,s),g++)}return s[l]=f,f}t.buildTransformer=function(e,t){var n=[[e[0],e[1],1,0,0,0,-t[0]*e[0],-t[0]*e[1]],[0,0,0,e[0],e[1],1,-t[1]*e[0],-t[1]*e[1]],[e[2],e[3],1,0,0,0,-t[2]*e[2],-t[2]*e[3]],[0,0,0,e[2],e[3],1,-t[3]*e[2],-t[3]*e[3]],[e[4],e[5],1,0,0,0,-t[4]*e[4],-t[4]*e[5]],[0,0,0,e[4],e[5],1,-t[5]*e[4],-t[5]*e[5]],[e[6],e[7],1,0,0,0,-t[6]*e[6],-t[6]*e[7]],[0,0,0,e[6],e[7],1,-t[7]*e[6],-t[7]*e[7]]],r={},o=i(n,8,0,0,0,r);if(0!==o){for(var a=[],s=0;s<8;s++)for(var l=0;l<8;l++)null==a[l]&&(a[l]=0),a[l]+=((s+l)%2?-1:1)*i(n,7,0===s?1:0,1<<s,1<<l,r)/o*t[s];return function(e,t,n){var i=t*a[6]+n*a[7]+1;e[0]=(t*a[0]+n*a[1]+a[2])/i,e[1]=(t*a[3]+n*a[4]+a[5])/i}}}},\"6Twh\":function(e,t,n){\"use strict\";t.__esModule=!0,t.default=function(){if(o.default.prototype.$isServer)return 0;if(void 0!==a)return a;var e=document.createElement(\"div\");e.className=\"el-scrollbar__wrap\",e.style.visibility=\"hidden\",e.style.width=\"100px\",e.style.position=\"absolute\",e.style.top=\"-9999px\",document.body.appendChild(e);var t=e.offsetWidth;e.style.overflow=\"scroll\";var n=document.createElement(\"div\");n.style.width=\"100%\",e.appendChild(n);var i=n.offsetWidth;return e.parentNode.removeChild(e),a=t-i};var i,r=n(\"7+uW\"),o=(i=r)&&i.__esModule?i:{default:i};var a=void 0},\"6UfY\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"3h1/\"),o=n(\"2HcM\"),a=(0,n(\"vXqC\").makeInner)();function s(e,t){t=t||[0,360],o.call(this,\"angle\",e,t),this.type=\"category\"}s.prototype={constructor:s,pointToData:function(e,t){return this.polar.pointToData(e,t)[\"radius\"===this.dim?0:1]},dataToAngle:o.prototype.dataToCoord,angleToData:o.prototype.coordToData,calculateCategoryInterval:function(){var e=this.getLabelModel(),t=this.scale,n=t.getExtent(),i=t.count();if(n[1]-n[0]<1)return 0;var o=n[0],s=this.dataToCoord(o+1)-this.dataToCoord(o),l=Math.abs(s),u=r.getBoundingRect(o,e.getFont(),\"center\",\"top\"),c=Math.max(u.height,7)/l;isNaN(c)&&(c=1/0);var h=Math.max(0,Math.floor(c)),d=a(this.model),f=d.lastAutoInterval,p=d.lastTickCount;return null!=f&&null!=p&&Math.abs(f-h)<=1&&Math.abs(p-i)<=1&&f>h?h=f:(d.lastTickCount=i,d.lastAutoInterval=h),h}},i.inherits(s,o);var l=s;e.exports=l},\"6axr\":function(e,t,n){var i=n(\"YqdL\"),r=n(\"6UfY\"),o=function(e){this.name=e||\"\",this.cx=0,this.cy=0,this._radiusAxis=new i,this._angleAxis=new r,this._radiusAxis.polar=this._angleAxis.polar=this};o.prototype={type:\"polar\",axisPointerEnabled:!0,constructor:o,dimensions:[\"radius\",\"angle\"],model:null,containPoint:function(e){var t=this.pointToCoord(e);return this._radiusAxis.contain(t[0])&&this._angleAxis.contain(t[1])},containData:function(e){return this._radiusAxis.containData(e[0])&&this._angleAxis.containData(e[1])},getAxis:function(e){return this[\"_\"+e+\"Axis\"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(e){var t=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===e&&t.push(n),i.scale.type===e&&t.push(i),t},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(e){var t=this._angleAxis;return e===t?this._radiusAxis:t},getBaseAxis:function(){return this.getAxesByScale(\"ordinal\")[0]||this.getAxesByScale(\"time\")[0]||this.getAngleAxis()},getTooltipAxes:function(e){var t=null!=e&&\"auto\"!==e?this.getAxis(e):this.getBaseAxis();return{baseAxes:[t],otherAxes:[this.getOtherAxis(t)]}},dataToPoint:function(e,t){return this.coordToPoint([this._radiusAxis.dataToRadius(e[0],t),this._angleAxis.dataToAngle(e[1],t)])},pointToData:function(e,t){var n=this.pointToCoord(e);return[this._radiusAxis.radiusToData(n[0],t),this._angleAxis.angleToData(n[1],t)]},pointToCoord:function(e){var t=e[0]-this.cx,n=e[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(t*t+n*n);t/=s,n/=s;for(var l=Math.atan2(-n,t)/Math.PI*180,u=l<o?1:-1;l<o||l>a;)l+=360*u;return[s,l]},coordToPoint:function(e){var t=e[0],n=e[1]/180*Math.PI;return[Math.cos(n)*t+this.cx,-Math.sin(n)*t+this.cy]},getArea:function(){var e=this.getAngleAxis(),t=this.getRadiusAxis().getExtent().slice();t[0]>t[1]&&t.reverse();var n=e.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:t[0],r:t[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:e.inverse,contain:function(e,t){var n=e-this.cx,i=t-this.cy,r=n*n+i*i,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}}};var a=o;e.exports=a},\"6f6q\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");function o(e,t,n){var i,o={},a=\"toggleSelected\"===e;return n.eachComponent(\"legend\",function(n){a&&null!=i?n[i?\"select\":\"unSelect\"](t.name):\"allSelect\"===e||\"inverseSelect\"===e?n[e]():(n[e](t.name),i=n.isSelected(t.name));var s=n.getData();r.each(s,function(e){var t=e.get(\"name\");if(\"\\n\"!==t&&\"\"!==t){var i=n.isSelected(t);o.hasOwnProperty(t)?o[t]=o[t]&&i:o[t]=i}})}),\"allSelect\"===e||\"inverseSelect\"===e?{selected:o}:{name:t.name,selected:o}}i.registerAction(\"legendToggleSelect\",\"legendselectchanged\",r.curry(o,\"toggleSelected\")),i.registerAction(\"legendAllSelect\",\"legendselectall\",r.curry(o,\"allSelect\")),i.registerAction(\"legendInverseSelect\",\"legendinverseselect\",r.curry(o,\"inverseSelect\")),i.registerAction(\"legendSelect\",\"legendselected\",r.curry(o,\"select\")),i.registerAction(\"legendUnSelect\",\"legendunselected\",r.curry(o,\"unSelect\"))},\"6n1D\":function(e,t,n){var i=n(\"0sHC\"),r=n(\"bzOU\");function o(e){this._ctor=e||r,this.group=new i.Group}var a=o.prototype;function s(e){var t=e.hostModel;return{lineStyle:t.getModel(\"lineStyle\").getLineStyle(),hoverLineStyle:t.getModel(\"emphasis.lineStyle\").getLineStyle(),labelModel:t.getModel(\"label\"),hoverLabelModel:t.getModel(\"emphasis.label\")}}function l(e){return isNaN(e[0])||isNaN(e[1])}function u(e){return!l(e[0])&&!l(e[1])}a.isPersistent=function(){return!0},a.updateData=function(e){var t=this,n=t.group,i=t._lineData;t._lineData=e,i||n.removeAll();var r=s(e);e.diff(i).add(function(n){!function(e,t,n,i){if(!u(t.getItemLayout(n)))return;var r=new e._ctor(t,n,i);t.setItemGraphicEl(n,r),e.group.add(r)}(t,e,n,r)}).update(function(n,o){!function(e,t,n,i,r,o){var a=t.getItemGraphicEl(i);if(!u(n.getItemLayout(r)))return void e.group.remove(a);a?a.updateData(n,r,o):a=new e._ctor(n,r,o);n.setItemGraphicEl(r,a),e.group.add(a)}(t,i,e,o,n,r)}).remove(function(e){n.remove(i.getItemGraphicEl(e))}).execute()},a.updateLayout=function(){var e=this._lineData;e&&e.eachItemGraphicEl(function(t,n){t.updateLayout(e,n)},this)},a.incrementalPrepareUpdate=function(e){this._seriesScope=s(e),this._lineData=null,this.group.removeAll()},a.incrementalUpdate=function(e,t){function n(e){e.isGroup||function(e){return e.animators&&e.animators.length>0}(e)||(e.incremental=e.useHoverLayer=!0)}for(var i=e.start;i<e.end;i++){if(u(t.getItemLayout(i))){var r=new this._ctor(t,i,this._seriesScope);r.traverse(n),this.group.add(r),t.setItemGraphicEl(i,r)}}},a.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},a._clearIncremental=function(){var e=this._incremental;e&&e.clearDisplaybles()};var c=o;e.exports=c},\"7+uW\":function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){\n/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\nvar n=Object.freeze({});function i(e){return void 0===e||null===e}function r(e){return void 0!==e&&null!==e}function o(e){return!0===e}function a(e){return\"string\"==typeof e||\"number\"==typeof e||\"symbol\"==typeof e||\"boolean\"==typeof e}function s(e){return null!==e&&\"object\"==typeof e}var l=Object.prototype.toString;function u(e){return\"[object Object]\"===l.call(e)}function c(e){return\"[object RegExp]\"===l.call(e)}function h(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function d(e){return r(e)&&\"function\"==typeof e.then&&\"function\"==typeof e.catch}function f(e){return null==e?\"\":Array.isArray(e)||u(e)&&e.toString===l?JSON.stringify(e,null,2):String(e)}function p(e){var t=parseFloat(e);return isNaN(t)?e:t}function g(e,t){for(var n=Object.create(null),i=e.split(\",\"),r=0;r<i.length;r++)n[i[r]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var m=g(\"slot,component\",!0),v=g(\"key,ref,slot,slot-scope,is\");function y(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function x(e,t){return b.call(e,t)}function _(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var w=/-(\\w)/g,C=_(function(e){return e.replace(w,function(e,t){return t?t.toUpperCase():\"\"})}),S=_(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),k=/\\B([A-Z])/g,T=_(function(e){return e.replace(k,\"-$1\").toLowerCase()});var M=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function D(e,t){t=t||0;for(var n=e.length-t,i=new Array(n);n--;)i[n]=e[n+t];return i}function A(e,t){for(var n in t)e[n]=t[n];return e}function I(e){for(var t={},n=0;n<e.length;n++)e[n]&&A(t,e[n]);return t}function O(e,t,n){}var E=function(e,t,n){return!1},L=function(e){return e};function P(e,t){if(e===t)return!0;var n=s(e),i=s(t);if(!n||!i)return!n&&!i&&String(e)===String(t);try{var r=Array.isArray(e),o=Array.isArray(t);if(r&&o)return e.length===t.length&&e.every(function(e,n){return P(e,t[n])});if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(r||o)return!1;var a=Object.keys(e),l=Object.keys(t);return a.length===l.length&&a.every(function(n){return P(e[n],t[n])})}catch(e){return!1}}function N(e,t){for(var n=0;n<e.length;n++)if(P(e[n],t))return n;return-1}function R(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var B=\"data-server-rendered\",z=[\"component\",\"directive\",\"filter\"],F=[\"beforeCreate\",\"created\",\"beforeMount\",\"mounted\",\"beforeUpdate\",\"updated\",\"beforeDestroy\",\"destroyed\",\"activated\",\"deactivated\",\"errorCaptured\",\"serverPrefetch\"],$={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:E,isReservedAttr:E,isUnknownElement:E,getTagNamespace:O,parsePlatformTagName:L,mustUseProp:E,async:!0,_lifecycleHooks:F},V=/a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;function j(e){var t=(e+\"\").charCodeAt(0);return 36===t||95===t}function H(e,t,n,i){Object.defineProperty(e,t,{value:n,enumerable:!!i,writable:!0,configurable:!0})}var W=new RegExp(\"[^\"+V.source+\".$_\\\\d]\");var q,G=\"__proto__\"in{},U=\"undefined\"!=typeof window,Y=\"undefined\"!=typeof WXEnvironment&&!!WXEnvironment.platform,X=Y&&WXEnvironment.platform.toLowerCase(),K=U&&window.navigator.userAgent.toLowerCase(),Z=K&&/msie|trident/.test(K),J=K&&K.indexOf(\"msie 9.0\")>0,Q=K&&K.indexOf(\"edge/\")>0,ee=(K&&K.indexOf(\"android\"),K&&/iphone|ipad|ipod|ios/.test(K)||\"ios\"===X),te=(K&&/chrome\\/\\d+/.test(K),K&&/phantomjs/.test(K),K&&K.match(/firefox\\/(\\d+)/)),ne={}.watch,ie=!1;if(U)try{var re={};Object.defineProperty(re,\"passive\",{get:function(){ie=!0}}),window.addEventListener(\"test-passive\",null,re)}catch(e){}var oe=function(){return void 0===q&&(q=!U&&!Y&&void 0!==e&&(e.process&&\"server\"===e.process.env.VUE_ENV)),q},ae=U&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function se(e){return\"function\"==typeof e&&/native code/.test(e.toString())}var le,ue=\"undefined\"!=typeof Symbol&&se(Symbol)&&\"undefined\"!=typeof Reflect&&se(Reflect.ownKeys);le=\"undefined\"!=typeof Set&&se(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ce=O,he=0,de=function(){this.id=he++,this.subs=[]};de.prototype.addSub=function(e){this.subs.push(e)},de.prototype.removeSub=function(e){y(this.subs,e)},de.prototype.depend=function(){de.target&&de.target.addDep(this)},de.prototype.notify=function(){var e=this.subs.slice();for(var t=0,n=e.length;t<n;t++)e[t].update()},de.target=null;var fe=[];function pe(e){fe.push(e),de.target=e}function ge(){fe.pop(),de.target=fe[fe.length-1]}var me=function(e,t,n,i,r,o,a,s){this.tag=e,this.data=t,this.children=n,this.text=i,this.elm=r,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},ve={child:{configurable:!0}};ve.child.get=function(){return this.componentInstance},Object.defineProperties(me.prototype,ve);var ye=function(e){void 0===e&&(e=\"\");var t=new me;return t.text=e,t.isComment=!0,t};function be(e){return new me(void 0,void 0,void 0,String(e))}function xe(e){var t=new me(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var _e=Array.prototype,we=Object.create(_e);[\"push\",\"pop\",\"shift\",\"unshift\",\"splice\",\"sort\",\"reverse\"].forEach(function(e){var t=_e[e];H(we,e,function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];var r,o=t.apply(this,n),a=this.__ob__;switch(e){case\"push\":case\"unshift\":r=n;break;case\"splice\":r=n.slice(2)}return r&&a.observeArray(r),a.dep.notify(),o})});var Ce=Object.getOwnPropertyNames(we),Se=!0;function ke(e){Se=e}var Te=function(e){var t;this.value=e,this.dep=new de,this.vmCount=0,H(e,\"__ob__\",this),Array.isArray(e)?(G?(t=we,e.__proto__=t):function(e,t,n){for(var i=0,r=n.length;i<r;i++){var o=n[i];H(e,o,t[o])}}(e,we,Ce),this.observeArray(e)):this.walk(e)};function Me(e,t){var n;if(s(e)&&!(e instanceof me))return x(e,\"__ob__\")&&e.__ob__ instanceof Te?n=e.__ob__:Se&&!oe()&&(Array.isArray(e)||u(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Te(e)),t&&n&&n.vmCount++,n}function De(e,t,n,i,r){var o=new de,a=Object.getOwnPropertyDescriptor(e,t);if(!a||!1!==a.configurable){var s=a&&a.get,l=a&&a.set;s&&!l||2!==arguments.length||(n=e[t]);var u=!r&&Me(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=s?s.call(e):n;return de.target&&(o.depend(),u&&(u.dep.depend(),Array.isArray(t)&&function e(t){for(var n=void 0,i=0,r=t.length;i<r;i++)(n=t[i])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(t))),t},set:function(t){var i=s?s.call(e):n;t===i||t!=t&&i!=i||s&&!l||(l?l.call(e,t):n=t,u=!r&&Me(t),o.notify())}})}}function Ae(e,t,n){if(Array.isArray(e)&&h(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var i=e.__ob__;return e._isVue||i&&i.vmCount?n:i?(De(i.value,t,n),i.dep.notify(),n):(e[t]=n,n)}function Ie(e,t){if(Array.isArray(e)&&h(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||x(e,t)&&(delete e[t],n&&n.dep.notify())}}Te.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)De(e,t[n])},Te.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)Me(e[t])};var Oe=$.optionMergeStrategies;function Ee(e,t){if(!t)return e;for(var n,i,r,o=ue?Reflect.ownKeys(t):Object.keys(t),a=0;a<o.length;a++)\"__ob__\"!==(n=o[a])&&(i=e[n],r=t[n],x(e,n)?i!==r&&u(i)&&u(r)&&Ee(i,r):Ae(e,n,r));return e}function Le(e,t,n){return n?function(){var i=\"function\"==typeof t?t.call(n,n):t,r=\"function\"==typeof e?e.call(n,n):e;return i?Ee(i,r):r}:t?e?function(){return Ee(\"function\"==typeof t?t.call(this,this):t,\"function\"==typeof e?e.call(this,this):e)}:t:e}function Pe(e,t){var n=t?e?e.concat(t):Array.isArray(t)?t:[t]:e;return n?function(e){for(var t=[],n=0;n<e.length;n++)-1===t.indexOf(e[n])&&t.push(e[n]);return t}(n):n}function Ne(e,t,n,i){var r=Object.create(e||null);return t?A(r,t):r}Oe.data=function(e,t,n){return n?Le(e,t,n):t&&\"function\"!=typeof t?e:Le(e,t)},F.forEach(function(e){Oe[e]=Pe}),z.forEach(function(e){Oe[e+\"s\"]=Ne}),Oe.watch=function(e,t,n,i){if(e===ne&&(e=void 0),t===ne&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var r={};for(var o in A(r,e),t){var a=r[o],s=t[o];a&&!Array.isArray(a)&&(a=[a]),r[o]=a?a.concat(s):Array.isArray(s)?s:[s]}return r},Oe.props=Oe.methods=Oe.inject=Oe.computed=function(e,t,n,i){if(!e)return t;var r=Object.create(null);return A(r,e),t&&A(r,t),r},Oe.provide=Le;var Re=function(e,t){return void 0===t?e:t};function Be(e,t,n){if(\"function\"==typeof t&&(t=t.options),function(e,t){var n=e.props;if(n){var i,r,o={};if(Array.isArray(n))for(i=n.length;i--;)\"string\"==typeof(r=n[i])&&(o[C(r)]={type:null});else if(u(n))for(var a in n)r=n[a],o[C(a)]=u(r)?r:{type:r};e.props=o}}(t),function(e,t){var n=e.inject;if(n){var i=e.inject={};if(Array.isArray(n))for(var r=0;r<n.length;r++)i[n[r]]={from:n[r]};else if(u(n))for(var o in n){var a=n[o];i[o]=u(a)?A({from:o},a):{from:a}}}}(t),function(e){var t=e.directives;if(t)for(var n in t){var i=t[n];\"function\"==typeof i&&(t[n]={bind:i,update:i})}}(t),!t._base&&(t.extends&&(e=Be(e,t.extends,n)),t.mixins))for(var i=0,r=t.mixins.length;i<r;i++)e=Be(e,t.mixins[i],n);var o,a={};for(o in e)s(o);for(o in t)x(e,o)||s(o);function s(i){var r=Oe[i]||Re;a[i]=r(e[i],t[i],n,i)}return a}function ze(e,t,n,i){if(\"string\"==typeof n){var r=e[t];if(x(r,n))return r[n];var o=C(n);if(x(r,o))return r[o];var a=S(o);return x(r,a)?r[a]:r[n]||r[o]||r[a]}}function Fe(e,t,n,i){var r=t[e],o=!x(n,e),a=n[e],s=je(Boolean,r.type);if(s>-1)if(o&&!x(r,\"default\"))a=!1;else if(\"\"===a||a===T(e)){var l=je(String,r.type);(l<0||s<l)&&(a=!0)}if(void 0===a){a=function(e,t,n){if(!x(t,\"default\"))return;var i=t.default;0;if(e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n])return e._props[n];return\"function\"==typeof i&&\"Function\"!==$e(t.type)?i.call(e):i}(i,r,e);var u=Se;ke(!0),Me(a),ke(u)}return a}function $e(e){var t=e&&e.toString().match(/^\\s*function (\\w+)/);return t?t[1]:\"\"}function Ve(e,t){return $e(e)===$e(t)}function je(e,t){if(!Array.isArray(t))return Ve(t,e)?0:-1;for(var n=0,i=t.length;n<i;n++)if(Ve(t[n],e))return n;return-1}function He(e,t,n){pe();try{if(t)for(var i=t;i=i.$parent;){var r=i.$options.errorCaptured;if(r)for(var o=0;o<r.length;o++)try{if(!1===r[o].call(i,e,t,n))return}catch(e){qe(e,i,\"errorCaptured hook\")}}qe(e,t,n)}finally{ge()}}function We(e,t,n,i,r){var o;try{(o=n?e.apply(t,n):e.call(t))&&!o._isVue&&d(o)&&!o._handled&&(o.catch(function(e){return He(e,i,r+\" (Promise/async)\")}),o._handled=!0)}catch(e){He(e,i,r)}return o}function qe(e,t,n){if($.errorHandler)try{return $.errorHandler.call(null,e,t,n)}catch(t){t!==e&&Ge(t,null,\"config.errorHandler\")}Ge(e,t,n)}function Ge(e,t,n){if(!U&&!Y||\"undefined\"==typeof console)throw e;console.error(e)}var Ue,Ye=!1,Xe=[],Ke=!1;function Ze(){Ke=!1;var e=Xe.slice(0);Xe.length=0;for(var t=0;t<e.length;t++)e[t]()}if(\"undefined\"!=typeof Promise&&se(Promise)){var Je=Promise.resolve();Ue=function(){Je.then(Ze),ee&&setTimeout(O)},Ye=!0}else if(Z||\"undefined\"==typeof MutationObserver||!se(MutationObserver)&&\"[object MutationObserverConstructor]\"!==MutationObserver.toString())Ue=\"undefined\"!=typeof setImmediate&&se(setImmediate)?function(){setImmediate(Ze)}:function(){setTimeout(Ze,0)};else{var Qe=1,et=new MutationObserver(Ze),tt=document.createTextNode(String(Qe));et.observe(tt,{characterData:!0}),Ue=function(){Qe=(Qe+1)%2,tt.data=String(Qe)},Ye=!0}function nt(e,t){var n;if(Xe.push(function(){if(e)try{e.call(t)}catch(e){He(e,t,\"nextTick\")}else n&&n(t)}),Ke||(Ke=!0,Ue()),!e&&\"undefined\"!=typeof Promise)return new Promise(function(e){n=e})}var it=new le;function rt(e){!function e(t,n){var i,r;var o=Array.isArray(t);if(!o&&!s(t)||Object.isFrozen(t)||t instanceof me)return;if(t.__ob__){var a=t.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(o)for(i=t.length;i--;)e(t[i],n);else for(r=Object.keys(t),i=r.length;i--;)e(t[r[i]],n)}(e,it),it.clear()}var ot=_(function(e){var t=\"&\"===e.charAt(0),n=\"~\"===(e=t?e.slice(1):e).charAt(0),i=\"!\"===(e=n?e.slice(1):e).charAt(0);return{name:e=i?e.slice(1):e,once:n,capture:i,passive:t}});function at(e,t){function n(){var e=arguments,i=n.fns;if(!Array.isArray(i))return We(i,null,arguments,t,\"v-on handler\");for(var r=i.slice(),o=0;o<r.length;o++)We(r[o],null,e,t,\"v-on handler\")}return n.fns=e,n}function st(e,t,n,r,a,s){var l,u,c,h;for(l in e)u=e[l],c=t[l],h=ot(l),i(u)||(i(c)?(i(u.fns)&&(u=e[l]=at(u,s)),o(h.once)&&(u=e[l]=a(h.name,u,h.capture)),n(h.name,u,h.capture,h.passive,h.params)):u!==c&&(c.fns=u,e[l]=c));for(l in t)i(e[l])&&r((h=ot(l)).name,t[l],h.capture)}function lt(e,t,n){var a;e instanceof me&&(e=e.data.hook||(e.data.hook={}));var s=e[t];function l(){n.apply(this,arguments),y(a.fns,l)}i(s)?a=at([l]):r(s.fns)&&o(s.merged)?(a=s).fns.push(l):a=at([s,l]),a.merged=!0,e[t]=a}function ut(e,t,n,i,o){if(r(t)){if(x(t,n))return e[n]=t[n],o||delete t[n],!0;if(x(t,i))return e[n]=t[i],o||delete t[i],!0}return!1}function ct(e){return a(e)?[be(e)]:Array.isArray(e)?function e(t,n){var s=[];var l,u,c,h;for(l=0;l<t.length;l++)i(u=t[l])||\"boolean\"==typeof u||(c=s.length-1,h=s[c],Array.isArray(u)?u.length>0&&(ht((u=e(u,(n||\"\")+\"_\"+l))[0])&&ht(h)&&(s[c]=be(h.text+u[0].text),u.shift()),s.push.apply(s,u)):a(u)?ht(h)?s[c]=be(h.text+u):\"\"!==u&&s.push(be(u)):ht(u)&&ht(h)?s[c]=be(h.text+u.text):(o(t._isVList)&&r(u.tag)&&i(u.key)&&r(n)&&(u.key=\"__vlist\"+n+\"_\"+l+\"__\"),s.push(u)));return s}(e):void 0}function ht(e){return r(e)&&r(e.text)&&!1===e.isComment}function dt(e,t){if(e){for(var n=Object.create(null),i=ue?Reflect.ownKeys(e):Object.keys(e),r=0;r<i.length;r++){var o=i[r];if(\"__ob__\"!==o){for(var a=e[o].from,s=t;s;){if(s._provided&&x(s._provided,a)){n[o]=s._provided[a];break}s=s.$parent}if(!s)if(\"default\"in e[o]){var l=e[o].default;n[o]=\"function\"==typeof l?l.call(t):l}else 0}}return n}}function ft(e,t){if(!e||!e.length)return{};for(var n={},i=0,r=e.length;i<r;i++){var o=e[i],a=o.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,o.context!==t&&o.fnContext!==t||!a||null==a.slot)(n.default||(n.default=[])).push(o);else{var s=a.slot,l=n[s]||(n[s]=[]);\"template\"===o.tag?l.push.apply(l,o.children||[]):l.push(o)}}for(var u in n)n[u].every(pt)&&delete n[u];return n}function pt(e){return e.isComment&&!e.asyncFactory||\" \"===e.text}function gt(e,t,i){var r,o=Object.keys(t).length>0,a=e?!!e.$stable:!o,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(a&&i&&i!==n&&s===i.$key&&!o&&!i.$hasNormal)return i;for(var l in r={},e)e[l]&&\"$\"!==l[0]&&(r[l]=mt(t,l,e[l]))}else r={};for(var u in t)u in r||(r[u]=vt(t,u));return e&&Object.isExtensible(e)&&(e._normalized=r),H(r,\"$stable\",a),H(r,\"$key\",s),H(r,\"$hasNormal\",o),r}function mt(e,t,n){var i=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&\"object\"==typeof e&&!Array.isArray(e)?[e]:ct(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:i,enumerable:!0,configurable:!0}),i}function vt(e,t){return function(){return e[t]}}function yt(e,t){var n,i,o,a,l;if(Array.isArray(e)||\"string\"==typeof e)for(n=new Array(e.length),i=0,o=e.length;i<o;i++)n[i]=t(e[i],i);else if(\"number\"==typeof e)for(n=new Array(e),i=0;i<e;i++)n[i]=t(i+1,i);else if(s(e))if(ue&&e[Symbol.iterator]){n=[];for(var u=e[Symbol.iterator](),c=u.next();!c.done;)n.push(t(c.value,n.length)),c=u.next()}else for(a=Object.keys(e),n=new Array(a.length),i=0,o=a.length;i<o;i++)l=a[i],n[i]=t(e[l],l,i);return r(n)||(n=[]),n._isVList=!0,n}function bt(e,t,n,i){var r,o=this.$scopedSlots[e];o?(n=n||{},i&&(n=A(A({},i),n)),r=o(n)||t):r=this.$slots[e]||t;var a=n&&n.slot;return a?this.$createElement(\"template\",{slot:a},r):r}function xt(e){return ze(this.$options,\"filters\",e)||L}function _t(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function wt(e,t,n,i,r){var o=$.keyCodes[t]||n;return r&&i&&!$.keyCodes[t]?_t(r,i):o?_t(o,e):i?T(i)!==t:void 0}function Ct(e,t,n,i,r){if(n)if(s(n)){var o;Array.isArray(n)&&(n=I(n));var a=function(a){if(\"class\"===a||\"style\"===a||v(a))o=e;else{var s=e.attrs&&e.attrs.type;o=i||$.mustUseProp(t,s,a)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}var l=C(a),u=T(a);l in o||u in o||(o[a]=n[a],r&&((e.on||(e.on={}))[\"update:\"+a]=function(e){n[a]=e}))};for(var l in n)a(l)}else;return e}function St(e,t){var n=this._staticTrees||(this._staticTrees=[]),i=n[e];return i&&!t?i:(Tt(i=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),\"__static__\"+e,!1),i)}function kt(e,t,n){return Tt(e,\"__once__\"+t+(n?\"_\"+n:\"\"),!0),e}function Tt(e,t,n){if(Array.isArray(e))for(var i=0;i<e.length;i++)e[i]&&\"string\"!=typeof e[i]&&Mt(e[i],t+\"_\"+i,n);else Mt(e,t,n)}function Mt(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function Dt(e,t){if(t)if(u(t)){var n=e.on=e.on?A({},e.on):{};for(var i in t){var r=n[i],o=t[i];n[i]=r?[].concat(r,o):o}}else;return e}function At(e,t,n,i){t=t||{$stable:!n};for(var r=0;r<e.length;r++){var o=e[r];Array.isArray(o)?At(o,t,n):o&&(o.proxy&&(o.fn.proxy=!0),t[o.key]=o.fn)}return i&&(t.$key=i),t}function It(e,t){for(var n=0;n<t.length;n+=2){var i=t[n];\"string\"==typeof i&&i&&(e[t[n]]=t[n+1])}return e}function Ot(e,t){return\"string\"==typeof e?t+e:e}function Et(e){e._o=kt,e._n=p,e._s=f,e._l=yt,e._t=bt,e._q=P,e._i=N,e._m=St,e._f=xt,e._k=wt,e._b=Ct,e._v=be,e._e=ye,e._u=At,e._g=Dt,e._d=It,e._p=Ot}function Lt(e,t,i,r,a){var s,l=this,u=a.options;x(r,\"_uid\")?(s=Object.create(r))._original=r:(s=r,r=r._original);var c=o(u._compiled),h=!c;this.data=e,this.props=t,this.children=i,this.parent=r,this.listeners=e.on||n,this.injections=dt(u.inject,r),this.slots=function(){return l.$slots||gt(e.scopedSlots,l.$slots=ft(i,r)),l.$slots},Object.defineProperty(this,\"scopedSlots\",{enumerable:!0,get:function(){return gt(e.scopedSlots,this.slots())}}),c&&(this.$options=u,this.$slots=this.slots(),this.$scopedSlots=gt(e.scopedSlots,this.$slots)),u._scopeId?this._c=function(e,t,n,i){var o=jt(s,e,t,n,i,h);return o&&!Array.isArray(o)&&(o.fnScopeId=u._scopeId,o.fnContext=r),o}:this._c=function(e,t,n,i){return jt(s,e,t,n,i,h)}}function Pt(e,t,n,i,r){var o=xe(e);return o.fnContext=n,o.fnOptions=i,t.slot&&((o.data||(o.data={})).slot=t.slot),o}function Nt(e,t){for(var n in t)e[C(n)]=t[n]}Et(Lt.prototype);var Rt={init:function(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var n=e;Rt.prepatch(n,n)}else{(e.componentInstance=function(e,t){var n={_isComponent:!0,_parentVnode:e,parent:t},i=e.data.inlineTemplate;r(i)&&(n.render=i.render,n.staticRenderFns=i.staticRenderFns);return new e.componentOptions.Ctor(n)}(e,Jt)).$mount(t?e.elm:void 0,t)}},prepatch:function(e,t){var i=t.componentOptions;!function(e,t,i,r,o){0;var a=r.data.scopedSlots,s=e.$scopedSlots,l=!!(a&&!a.$stable||s!==n&&!s.$stable||a&&e.$scopedSlots.$key!==a.$key),u=!!(o||e.$options._renderChildren||l);e.$options._parentVnode=r,e.$vnode=r,e._vnode&&(e._vnode.parent=r);if(e.$options._renderChildren=o,e.$attrs=r.data.attrs||n,e.$listeners=i||n,t&&e.$options.props){ke(!1);for(var c=e._props,h=e.$options._propKeys||[],d=0;d<h.length;d++){var f=h[d],p=e.$options.props;c[f]=Fe(f,p,t,e)}ke(!0),e.$options.propsData=t}i=i||n;var g=e.$options._parentListeners;e.$options._parentListeners=i,Zt(e,i,g),u&&(e.$slots=ft(o,r.context),e.$forceUpdate());0}(t.componentInstance=e.componentInstance,i.propsData,i.listeners,t,i.children)},insert:function(e){var t,n=e.context,i=e.componentInstance;i._isMounted||(i._isMounted=!0,nn(i,\"mounted\")),e.data.keepAlive&&(n._isMounted?((t=i)._inactive=!1,on.push(t)):tn(i,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(n&&(t._directInactive=!0,en(t)))return;if(!t._inactive){t._inactive=!0;for(var i=0;i<t.$children.length;i++)e(t.$children[i]);nn(t,\"deactivated\")}}(t,!0):t.$destroy())}},Bt=Object.keys(Rt);function zt(e,t,a,l,u){if(!i(e)){var c=a.$options._base;if(s(e)&&(e=c.extend(e)),\"function\"==typeof e){var h;if(i(e.cid)&&void 0===(e=function(e,t){if(o(e.error)&&r(e.errorComp))return e.errorComp;if(r(e.resolved))return e.resolved;var n=Wt;n&&r(e.owners)&&-1===e.owners.indexOf(n)&&e.owners.push(n);if(o(e.loading)&&r(e.loadingComp))return e.loadingComp;if(n&&!r(e.owners)){var a=e.owners=[n],l=!0,u=null,c=null;n.$on(\"hook:destroyed\",function(){return y(a,n)});var h=function(e){for(var t=0,n=a.length;t<n;t++)a[t].$forceUpdate();e&&(a.length=0,null!==u&&(clearTimeout(u),u=null),null!==c&&(clearTimeout(c),c=null))},f=R(function(n){e.resolved=qt(n,t),l?a.length=0:h(!0)}),p=R(function(t){r(e.errorComp)&&(e.error=!0,h(!0))}),g=e(f,p);return s(g)&&(d(g)?i(e.resolved)&&g.then(f,p):d(g.component)&&(g.component.then(f,p),r(g.error)&&(e.errorComp=qt(g.error,t)),r(g.loading)&&(e.loadingComp=qt(g.loading,t),0===g.delay?e.loading=!0:u=setTimeout(function(){u=null,i(e.resolved)&&i(e.error)&&(e.loading=!0,h(!1))},g.delay||200)),r(g.timeout)&&(c=setTimeout(function(){c=null,i(e.resolved)&&p(null)},g.timeout)))),l=!1,e.loading?e.loadingComp:e.resolved}}(h=e,c)))return function(e,t,n,i,r){var o=ye();return o.asyncFactory=e,o.asyncMeta={data:t,context:n,children:i,tag:r},o}(h,t,a,l,u);t=t||{},kn(e),r(t.model)&&function(e,t){var n=e.model&&e.model.prop||\"value\",i=e.model&&e.model.event||\"input\";(t.attrs||(t.attrs={}))[n]=t.model.value;var o=t.on||(t.on={}),a=o[i],s=t.model.callback;r(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(o[i]=[s].concat(a)):o[i]=s}(e.options,t);var f=function(e,t,n){var o=t.options.props;if(!i(o)){var a={},s=e.attrs,l=e.props;if(r(s)||r(l))for(var u in o){var c=T(u);ut(a,l,u,c,!0)||ut(a,s,u,c,!1)}return a}}(t,e);if(o(e.options.functional))return function(e,t,i,o,a){var s=e.options,l={},u=s.props;if(r(u))for(var c in u)l[c]=Fe(c,u,t||n);else r(i.attrs)&&Nt(l,i.attrs),r(i.props)&&Nt(l,i.props);var h=new Lt(i,l,a,o,e),d=s.render.call(null,h._c,h);if(d instanceof me)return Pt(d,i,h.parent,s);if(Array.isArray(d)){for(var f=ct(d)||[],p=new Array(f.length),g=0;g<f.length;g++)p[g]=Pt(f[g],i,h.parent,s);return p}}(e,f,t,a,l);var p=t.on;if(t.on=t.nativeOn,o(e.options.abstract)){var g=t.slot;t={},g&&(t.slot=g)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<Bt.length;n++){var i=Bt[n],r=t[i],o=Rt[i];r===o||r&&r._merged||(t[i]=r?Ft(o,r):o)}}(t);var m=e.options.name||u;return new me(\"vue-component-\"+e.cid+(m?\"-\"+m:\"\"),t,void 0,void 0,void 0,a,{Ctor:e,propsData:f,listeners:p,tag:u,children:l},h)}}}function Ft(e,t){var n=function(n,i){e(n,i),t(n,i)};return n._merged=!0,n}var $t=1,Vt=2;function jt(e,t,n,l,u,c){return(Array.isArray(n)||a(n))&&(u=l,l=n,n=void 0),o(c)&&(u=Vt),function(e,t,n,a,l){if(r(n)&&r(n.__ob__))return ye();r(n)&&r(n.is)&&(t=n.is);if(!t)return ye();0;Array.isArray(a)&&\"function\"==typeof a[0]&&((n=n||{}).scopedSlots={default:a[0]},a.length=0);l===Vt?a=ct(a):l===$t&&(a=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(a));var u,c;if(\"string\"==typeof t){var h;c=e.$vnode&&e.$vnode.ns||$.getTagNamespace(t),u=$.isReservedTag(t)?new me($.parsePlatformTagName(t),n,a,void 0,void 0,e):n&&n.pre||!r(h=ze(e.$options,\"components\",t))?new me(t,n,a,void 0,void 0,e):zt(h,n,e,a,t)}else u=zt(t,n,e,a);return Array.isArray(u)?u:r(u)?(r(c)&&function e(t,n,a){t.ns=n;\"foreignObject\"===t.tag&&(n=void 0,a=!0);if(r(t.children))for(var s=0,l=t.children.length;s<l;s++){var u=t.children[s];r(u.tag)&&(i(u.ns)||o(a)&&\"svg\"!==u.tag)&&e(u,n,a)}}(u,c),r(n)&&function(e){s(e.style)&&rt(e.style);s(e.class)&&rt(e.class)}(n),u):ye()}(e,t,n,l,u)}var Ht,Wt=null;function qt(e,t){return(e.__esModule||ue&&\"Module\"===e[Symbol.toStringTag])&&(e=e.default),s(e)?t.extend(e):e}function Gt(e){return e.isComment&&e.asyncFactory}function Ut(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(r(n)&&(r(n.componentOptions)||Gt(n)))return n}}function Yt(e,t){Ht.$on(e,t)}function Xt(e,t){Ht.$off(e,t)}function Kt(e,t){var n=Ht;return function i(){null!==t.apply(null,arguments)&&n.$off(e,i)}}function Zt(e,t,n){Ht=e,st(t,n||{},Yt,Xt,Kt,e),Ht=void 0}var Jt=null;function Qt(e){var t=Jt;return Jt=e,function(){Jt=t}}function en(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function tn(e,t){if(t){if(e._directInactive=!1,en(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)tn(e.$children[n]);nn(e,\"activated\")}}function nn(e,t){pe();var n=e.$options[t],i=t+\" hook\";if(n)for(var r=0,o=n.length;r<o;r++)We(n[r],e,null,e,i);e._hasHookEvent&&e.$emit(\"hook:\"+t),ge()}var rn=[],on=[],an={},sn=!1,ln=!1,un=0;var cn=0,hn=Date.now;if(U&&!Z){var dn=window.performance;dn&&\"function\"==typeof dn.now&&hn()>document.createEvent(\"Event\").timeStamp&&(hn=function(){return dn.now()})}function fn(){var e,t;for(cn=hn(),ln=!0,rn.sort(function(e,t){return e.id-t.id}),un=0;un<rn.length;un++)(e=rn[un]).before&&e.before(),t=e.id,an[t]=null,e.run();var n=on.slice(),i=rn.slice();un=rn.length=on.length=0,an={},sn=ln=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,tn(e[t],!0)}(n),function(e){var t=e.length;for(;t--;){var n=e[t],i=n.vm;i._watcher===n&&i._isMounted&&!i._isDestroyed&&nn(i,\"updated\")}}(i),ae&&$.devtools&&ae.emit(\"flush\")}var pn=0,gn=function(e,t,n,i,r){this.vm=e,r&&(e._watcher=this),e._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync,this.before=i.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++pn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new le,this.newDepIds=new le,this.expression=\"\",\"function\"==typeof t?this.getter=t:(this.getter=function(e){if(!W.test(e)){var t=e.split(\".\");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}(t),this.getter||(this.getter=O)),this.value=this.lazy?void 0:this.get()};gn.prototype.get=function(){var e;pe(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;He(e,t,'getter for watcher \"'+this.expression+'\"')}finally{this.deep&&rt(e),ge(),this.cleanupDeps()}return e},gn.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},gn.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},gn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==an[t]){if(an[t]=!0,ln){for(var n=rn.length-1;n>un&&rn[n].id>e.id;)n--;rn.splice(n+1,0,e)}else rn.push(e);sn||(sn=!0,nt(fn))}}(this)},gn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||s(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){He(e,this.vm,'callback for watcher \"'+this.expression+'\"')}else this.cb.call(this.vm,e,t)}}},gn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},gn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},gn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var mn={enumerable:!0,configurable:!0,get:O,set:O};function vn(e,t,n){mn.get=function(){return this[t][n]},mn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,mn)}function yn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},i=e._props={},r=e.$options._propKeys=[],o=!e.$parent;o||ke(!1);var a=function(o){r.push(o);var a=Fe(o,t,n,e);De(i,o,a),o in e||vn(e,\"_props\",o)};for(var s in t)a(s);ke(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]=\"function\"!=typeof t[n]?O:M(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;u(t=e._data=\"function\"==typeof t?function(e,t){pe();try{return e.call(t,t)}catch(e){return He(e,t,\"data()\"),{}}finally{ge()}}(t,e):t||{})||(t={});var n=Object.keys(t),i=e.$options.props,r=(e.$options.methods,n.length);for(;r--;){var o=n[r];0,i&&x(i,o)||j(o)||vn(e,\"_data\",o)}Me(t,!0)}(e):Me(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),i=oe();for(var r in t){var o=t[r],a=\"function\"==typeof o?o:o.get;0,i||(n[r]=new gn(e,a||O,O,bn)),r in e||xn(e,r,o)}}(e,t.computed),t.watch&&t.watch!==ne&&function(e,t){for(var n in t){var i=t[n];if(Array.isArray(i))for(var r=0;r<i.length;r++)Cn(e,n,i[r]);else Cn(e,n,i)}}(e,t.watch)}var bn={lazy:!0};function xn(e,t,n){var i=!oe();\"function\"==typeof n?(mn.get=i?_n(t):wn(n),mn.set=O):(mn.get=n.get?i&&!1!==n.cache?_n(t):wn(n.get):O,mn.set=n.set||O),Object.defineProperty(e,t,mn)}function _n(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),de.target&&t.depend(),t.value}}function wn(e){return function(){return e.call(this,this)}}function Cn(e,t,n,i){return u(n)&&(i=n,n=n.handler),\"string\"==typeof n&&(n=e[n]),e.$watch(t,n,i)}var Sn=0;function kn(e){var t=e.options;if(e.super){var n=kn(e.super);if(n!==e.superOptions){e.superOptions=n;var i=function(e){var t,n=e.options,i=e.sealedOptions;for(var r in n)n[r]!==i[r]&&(t||(t={}),t[r]=n[r]);return t}(e);i&&A(e.extendOptions,i),(t=e.options=Be(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function Tn(e){this._init(e)}function Mn(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,i=n.cid,r=e._Ctor||(e._Ctor={});if(r[i])return r[i];var o=e.name||n.options.name;var a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Be(n.options,e),a.super=n,a.options.props&&function(e){var t=e.options.props;for(var n in t)vn(e.prototype,\"_props\",n)}(a),a.options.computed&&function(e){var t=e.options.computed;for(var n in t)xn(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,z.forEach(function(e){a[e]=n[e]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=A({},a.options),r[i]=a,a}}function Dn(e){return e&&(e.Ctor.options.name||e.tag)}function An(e,t){return Array.isArray(e)?e.indexOf(t)>-1:\"string\"==typeof e?e.split(\",\").indexOf(t)>-1:!!c(e)&&e.test(t)}function In(e,t){var n=e.cache,i=e.keys,r=e._vnode;for(var o in n){var a=n[o];if(a){var s=Dn(a.componentOptions);s&&!t(s)&&On(n,o,i,r)}}}function On(e,t,n,i){var r=e[t];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),e[t]=null,y(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=Sn++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),i=t._parentVnode;n.parent=t.parent,n._parentVnode=i;var r=i.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Be(kn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Zt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,i=e.$vnode=t._parentVnode,r=i&&i.context;e.$slots=ft(t._renderChildren,r),e.$scopedSlots=n,e._c=function(t,n,i,r){return jt(e,t,n,i,r,!1)},e.$createElement=function(t,n,i,r){return jt(e,t,n,i,r,!0)};var o=i&&i.data;De(e,\"$attrs\",o&&o.attrs||n,null,!0),De(e,\"$listeners\",t._parentListeners||n,null,!0)}(t),nn(t,\"beforeCreate\"),function(e){var t=dt(e.$options.inject,e);t&&(ke(!1),Object.keys(t).forEach(function(n){De(e,n,t[n])}),ke(!0))}(t),yn(t),function(e){var t=e.$options.provide;t&&(e._provided=\"function\"==typeof t?t.call(e):t)}(t),nn(t,\"created\"),t.$options.el&&t.$mount(t.$options.el)}}(Tn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,\"$data\",t),Object.defineProperty(e.prototype,\"$props\",n),e.prototype.$set=Ae,e.prototype.$delete=Ie,e.prototype.$watch=function(e,t,n){if(u(t))return Cn(this,e,t,n);(n=n||{}).user=!0;var i=new gn(this,e,t,n);if(n.immediate)try{t.call(this,i.value)}catch(e){He(e,this,'callback for immediate watcher \"'+i.expression+'\"')}return function(){i.teardown()}}}(Tn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var i=this;if(Array.isArray(e))for(var r=0,o=e.length;r<o;r++)i.$on(e[r],n);else(i._events[e]||(i._events[e]=[])).push(n),t.test(e)&&(i._hasHookEvent=!0);return i},e.prototype.$once=function(e,t){var n=this;function i(){n.$off(e,i),t.apply(n,arguments)}return i.fn=t,n.$on(e,i),n},e.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var i=0,r=e.length;i<r;i++)n.$off(e[i],t);return n}var o,a=n._events[e];if(!a)return n;if(!t)return n._events[e]=null,n;for(var s=a.length;s--;)if((o=a[s])===t||o.fn===t){a.splice(s,1);break}return n},e.prototype.$emit=function(e){var t=this,n=t._events[e];if(n){n=n.length>1?D(n):n;for(var i=D(arguments,1),r='event handler for \"'+e+'\"',o=0,a=n.length;o<a;o++)We(n[o],t,i,t,r)}return t}}(Tn),function(e){e.prototype._update=function(e,t){var n=this,i=n.$el,r=n._vnode,o=Qt(n);n._vnode=e,n.$el=r?n.__patch__(r,e):n.__patch__(n.$el,e,t,!1),o(),i&&(i.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){nn(e,\"beforeDestroy\"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||y(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),nn(e,\"destroyed\"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(Tn),function(e){Et(e.prototype),e.prototype.$nextTick=function(e){return nt(e,this)},e.prototype._render=function(){var e,t=this,n=t.$options,i=n.render,r=n._parentVnode;r&&(t.$scopedSlots=gt(r.data.scopedSlots,t.$slots,t.$scopedSlots)),t.$vnode=r;try{Wt=t,e=i.call(t._renderProxy,t.$createElement)}catch(n){He(n,t,\"render\"),e=t._vnode}finally{Wt=null}return Array.isArray(e)&&1===e.length&&(e=e[0]),e instanceof me||(e=ye()),e.parent=r,e}}(Tn);var En=[String,RegExp,Array],Ln={KeepAlive:{name:\"keep-alive\",abstract:!0,props:{include:En,exclude:En,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)On(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch(\"include\",function(t){In(e,function(e){return An(t,e)})}),this.$watch(\"exclude\",function(t){In(e,function(e){return!An(t,e)})})},render:function(){var e=this.$slots.default,t=Ut(e),n=t&&t.componentOptions;if(n){var i=Dn(n),r=this.include,o=this.exclude;if(r&&(!i||!An(r,i))||o&&i&&An(o,i))return t;var a=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?\"::\"+n.tag:\"\"):t.key;a[l]?(t.componentInstance=a[l].componentInstance,y(s,l),s.push(l)):(a[l]=t,s.push(l),this.max&&s.length>parseInt(this.max)&&On(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return $}};Object.defineProperty(e,\"config\",t),e.util={warn:ce,extend:A,mergeOptions:Be,defineReactive:De},e.set=Ae,e.delete=Ie,e.nextTick=nt,e.observable=function(e){return Me(e),e},e.options=Object.create(null),z.forEach(function(t){e.options[t+\"s\"]=Object.create(null)}),e.options._base=e,A(e.options.components,Ln),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=D(arguments,1);return n.unshift(this),\"function\"==typeof e.install?e.install.apply(e,n):\"function\"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Be(this.options,e),this}}(e),Mn(e),function(e){z.forEach(function(t){e[t]=function(e,n){return n?(\"component\"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),\"directive\"===t&&\"function\"==typeof n&&(n={bind:n,update:n}),this.options[t+\"s\"][e]=n,n):this.options[t+\"s\"][e]}})}(e)}(Tn),Object.defineProperty(Tn.prototype,\"$isServer\",{get:oe}),Object.defineProperty(Tn.prototype,\"$ssrContext\",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Tn,\"FunctionalRenderContext\",{value:Lt}),Tn.version=\"2.6.11\";var Pn=g(\"style,class\"),Nn=g(\"input,textarea,option,select,progress\"),Rn=function(e,t,n){return\"value\"===n&&Nn(e)&&\"button\"!==t||\"selected\"===n&&\"option\"===e||\"checked\"===n&&\"input\"===e||\"muted\"===n&&\"video\"===e},Bn=g(\"contenteditable,draggable,spellcheck\"),zn=g(\"events,caret,typing,plaintext-only\"),Fn=function(e,t){return Wn(t)||\"false\"===t?\"false\":\"contenteditable\"===e&&zn(t)?t:\"true\"},$n=g(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible\"),Vn=\"http://www.w3.org/1999/xlink\",jn=function(e){return\":\"===e.charAt(5)&&\"xlink\"===e.slice(0,5)},Hn=function(e){return jn(e)?e.slice(6,e.length):\"\"},Wn=function(e){return null==e||!1===e};function qn(e){for(var t=e.data,n=e,i=e;r(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=Gn(i.data,t));for(;r(n=n.parent);)n&&n.data&&(t=Gn(t,n.data));return function(e,t){if(r(e)||r(t))return Un(e,Yn(t));return\"\"}(t.staticClass,t.class)}function Gn(e,t){return{staticClass:Un(e.staticClass,t.staticClass),class:r(e.class)?[e.class,t.class]:t.class}}function Un(e,t){return e?t?e+\" \"+t:e:t||\"\"}function Yn(e){return Array.isArray(e)?function(e){for(var t,n=\"\",i=0,o=e.length;i<o;i++)r(t=Yn(e[i]))&&\"\"!==t&&(n&&(n+=\" \"),n+=t);return n}(e):s(e)?function(e){var t=\"\";for(var n in e)e[n]&&(t&&(t+=\" \"),t+=n);return t}(e):\"string\"==typeof e?e:\"\"}var Xn={svg:\"http://www.w3.org/2000/svg\",math:\"http://www.w3.org/1998/Math/MathML\"},Kn=g(\"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot\"),Zn=g(\"svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view\",!0),Jn=function(e){return Kn(e)||Zn(e)};function Qn(e){return Zn(e)?\"svg\":\"math\"===e?\"math\":void 0}var ei=Object.create(null);var ti=g(\"text,number,password,search,email,tel,url\");function ni(e){if(\"string\"==typeof e){var t=document.querySelector(e);return t||document.createElement(\"div\")}return e}var ii=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return\"select\"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute(\"multiple\",\"multiple\"),n)},createElementNS:function(e,t){return document.createElementNS(Xn[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,\"\")}}),ri={create:function(e,t){oi(t)},update:function(e,t){e.data.ref!==t.data.ref&&(oi(e,!0),oi(t))},destroy:function(e){oi(e,!0)}};function oi(e,t){var n=e.data.ref;if(r(n)){var i=e.context,o=e.componentInstance||e.elm,a=i.$refs;t?Array.isArray(a[n])?y(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])?a[n].indexOf(o)<0&&a[n].push(o):a[n]=[o]:a[n]=o}}var ai=new me(\"\",{},[]),si=[\"create\",\"activate\",\"update\",\"remove\",\"destroy\"];function li(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&r(e.data)===r(t.data)&&function(e,t){if(\"input\"!==e.tag)return!0;var n,i=r(n=e.data)&&r(n=n.attrs)&&n.type,o=r(n=t.data)&&r(n=n.attrs)&&n.type;return i===o||ti(i)&&ti(o)}(e,t)||o(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function ui(e,t,n){var i,o,a={};for(i=t;i<=n;++i)r(o=e[i].key)&&(a[o]=i);return a}var ci={create:hi,update:hi,destroy:function(e){hi(e,ai)}};function hi(e,t){(e.data.directives||t.data.directives)&&function(e,t){var n,i,r,o=e===ai,a=t===ai,s=fi(e.data.directives,e.context),l=fi(t.data.directives,t.context),u=[],c=[];for(n in l)i=s[n],r=l[n],i?(r.oldValue=i.value,r.oldArg=i.arg,gi(r,\"update\",t,e),r.def&&r.def.componentUpdated&&c.push(r)):(gi(r,\"bind\",t,e),r.def&&r.def.inserted&&u.push(r));if(u.length){var h=function(){for(var n=0;n<u.length;n++)gi(u[n],\"inserted\",t,e)};o?lt(t,\"insert\",h):h()}c.length&&lt(t,\"postpatch\",function(){for(var n=0;n<c.length;n++)gi(c[n],\"componentUpdated\",t,e)});if(!o)for(n in s)l[n]||gi(s[n],\"unbind\",e,e,a)}(e,t)}var di=Object.create(null);function fi(e,t){var n,i,r=Object.create(null);if(!e)return r;for(n=0;n<e.length;n++)(i=e[n]).modifiers||(i.modifiers=di),r[pi(i)]=i,i.def=ze(t.$options,\"directives\",i.name);return r}function pi(e){return e.rawName||e.name+\".\"+Object.keys(e.modifiers||{}).join(\".\")}function gi(e,t,n,i,r){var o=e.def&&e.def[t];if(o)try{o(n.elm,e,n,i,r)}catch(i){He(i,n.context,\"directive \"+e.name+\" \"+t+\" hook\")}}var mi=[ri,ci];function vi(e,t){var n=t.componentOptions;if(!(r(n)&&!1===n.Ctor.options.inheritAttrs||i(e.data.attrs)&&i(t.data.attrs))){var o,a,s=t.elm,l=e.data.attrs||{},u=t.data.attrs||{};for(o in r(u.__ob__)&&(u=t.data.attrs=A({},u)),u)a=u[o],l[o]!==a&&yi(s,o,a);for(o in(Z||Q)&&u.value!==l.value&&yi(s,\"value\",u.value),l)i(u[o])&&(jn(o)?s.removeAttributeNS(Vn,Hn(o)):Bn(o)||s.removeAttribute(o))}}function yi(e,t,n){e.tagName.indexOf(\"-\")>-1?bi(e,t,n):$n(t)?Wn(n)?e.removeAttribute(t):(n=\"allowfullscreen\"===t&&\"EMBED\"===e.tagName?\"true\":t,e.setAttribute(t,n)):Bn(t)?e.setAttribute(t,Fn(t,n)):jn(t)?Wn(n)?e.removeAttributeNS(Vn,Hn(t)):e.setAttributeNS(Vn,t,n):bi(e,t,n)}function bi(e,t,n){if(Wn(n))e.removeAttribute(t);else{if(Z&&!J&&\"TEXTAREA\"===e.tagName&&\"placeholder\"===t&&\"\"!==n&&!e.__ieph){var i=function(t){t.stopImmediatePropagation(),e.removeEventListener(\"input\",i)};e.addEventListener(\"input\",i),e.__ieph=!0}e.setAttribute(t,n)}}var xi={create:vi,update:vi};function _i(e,t){var n=t.elm,o=t.data,a=e.data;if(!(i(o.staticClass)&&i(o.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=qn(t),l=n._transitionClasses;r(l)&&(s=Un(s,Yn(l))),s!==n._prevClass&&(n.setAttribute(\"class\",s),n._prevClass=s)}}var wi,Ci,Si,ki,Ti,Mi,Di={create:_i,update:_i},Ai=/[\\w).+\\-_$\\]]/;function Ii(e){var t,n,i,r,o,a=!1,s=!1,l=!1,u=!1,c=0,h=0,d=0,f=0;for(i=0;i<e.length;i++)if(n=t,t=e.charCodeAt(i),a)39===t&&92!==n&&(a=!1);else if(s)34===t&&92!==n&&(s=!1);else if(l)96===t&&92!==n&&(l=!1);else if(u)47===t&&92!==n&&(u=!1);else if(124!==t||124===e.charCodeAt(i+1)||124===e.charCodeAt(i-1)||c||h||d){switch(t){case 34:s=!0;break;case 39:a=!0;break;case 96:l=!0;break;case 40:d++;break;case 41:d--;break;case 91:h++;break;case 93:h--;break;case 123:c++;break;case 125:c--}if(47===t){for(var p=i-1,g=void 0;p>=0&&\" \"===(g=e.charAt(p));p--);g&&Ai.test(g)||(u=!0)}}else void 0===r?(f=i+1,r=e.slice(0,i).trim()):m();function m(){(o||(o=[])).push(e.slice(f,i).trim()),f=i+1}if(void 0===r?r=e.slice(0,i).trim():0!==f&&m(),o)for(i=0;i<o.length;i++)r=Oi(r,o[i]);return r}function Oi(e,t){var n=t.indexOf(\"(\");if(n<0)return'_f(\"'+t+'\")('+e+\")\";var i=t.slice(0,n),r=t.slice(n+1);return'_f(\"'+i+'\")('+e+(\")\"!==r?\",\"+r:r)}function Ei(e,t){console.error(\"[Vue compiler]: \"+e)}function Li(e,t){return e?e.map(function(e){return e[t]}).filter(function(e){return e}):[]}function Pi(e,t,n,i,r){(e.props||(e.props=[])).push(Wi({name:t,value:n,dynamic:r},i)),e.plain=!1}function Ni(e,t,n,i,r){(r?e.dynamicAttrs||(e.dynamicAttrs=[]):e.attrs||(e.attrs=[])).push(Wi({name:t,value:n,dynamic:r},i)),e.plain=!1}function Ri(e,t,n,i){e.attrsMap[t]=n,e.attrsList.push(Wi({name:t,value:n},i))}function Bi(e,t,n,i,r,o,a,s){(e.directives||(e.directives=[])).push(Wi({name:t,rawName:n,value:i,arg:r,isDynamicArg:o,modifiers:a},s)),e.plain=!1}function zi(e,t,n){return n?\"_p(\"+t+',\"'+e+'\")':e+t}function Fi(e,t,i,r,o,a,s,l){var u;(r=r||n).right?l?t=\"(\"+t+\")==='click'?'contextmenu':(\"+t+\")\":\"click\"===t&&(t=\"contextmenu\",delete r.right):r.middle&&(l?t=\"(\"+t+\")==='click'?'mouseup':(\"+t+\")\":\"click\"===t&&(t=\"mouseup\")),r.capture&&(delete r.capture,t=zi(\"!\",t,l)),r.once&&(delete r.once,t=zi(\"~\",t,l)),r.passive&&(delete r.passive,t=zi(\"&\",t,l)),r.native?(delete r.native,u=e.nativeEvents||(e.nativeEvents={})):u=e.events||(e.events={});var c=Wi({value:i.trim(),dynamic:l},s);r!==n&&(c.modifiers=r);var h=u[t];Array.isArray(h)?o?h.unshift(c):h.push(c):u[t]=h?o?[c,h]:[h,c]:c,e.plain=!1}function $i(e,t){return e.rawAttrsMap[\":\"+t]||e.rawAttrsMap[\"v-bind:\"+t]||e.rawAttrsMap[t]}function Vi(e,t,n){var i=ji(e,\":\"+t)||ji(e,\"v-bind:\"+t);if(null!=i)return Ii(i);if(!1!==n){var r=ji(e,t);if(null!=r)return JSON.stringify(r)}}function ji(e,t,n){var i;if(null!=(i=e.attrsMap[t]))for(var r=e.attrsList,o=0,a=r.length;o<a;o++)if(r[o].name===t){r.splice(o,1);break}return n&&delete e.attrsMap[t],i}function Hi(e,t){for(var n=e.attrsList,i=0,r=n.length;i<r;i++){var o=n[i];if(t.test(o.name))return n.splice(i,1),o}}function Wi(e,t){return t&&(null!=t.start&&(e.start=t.start),null!=t.end&&(e.end=t.end)),e}function qi(e,t,n){var i=n||{},r=i.number,o=\"$$v\";i.trim&&(o=\"(typeof $$v === 'string'? $$v.trim(): $$v)\"),r&&(o=\"_n(\"+o+\")\");var a=Gi(t,o);e.model={value:\"(\"+t+\")\",expression:JSON.stringify(t),callback:\"function ($$v) {\"+a+\"}\"}}function Gi(e,t){var n=function(e){if(e=e.trim(),wi=e.length,e.indexOf(\"[\")<0||e.lastIndexOf(\"]\")<wi-1)return(ki=e.lastIndexOf(\".\"))>-1?{exp:e.slice(0,ki),key:'\"'+e.slice(ki+1)+'\"'}:{exp:e,key:null};Ci=e,ki=Ti=Mi=0;for(;!Yi();)Xi(Si=Ui())?Zi(Si):91===Si&&Ki(Si);return{exp:e.slice(0,Ti),key:e.slice(Ti+1,Mi)}}(e);return null===n.key?e+\"=\"+t:\"$set(\"+n.exp+\", \"+n.key+\", \"+t+\")\"}function Ui(){return Ci.charCodeAt(++ki)}function Yi(){return ki>=wi}function Xi(e){return 34===e||39===e}function Ki(e){var t=1;for(Ti=ki;!Yi();)if(Xi(e=Ui()))Zi(e);else if(91===e&&t++,93===e&&t--,0===t){Mi=ki;break}}function Zi(e){for(var t=e;!Yi()&&(e=Ui())!==t;);}var Ji,Qi=\"__r\",er=\"__c\";function tr(e,t,n){var i=Ji;return function r(){null!==t.apply(null,arguments)&&rr(e,r,n,i)}}var nr=Ye&&!(te&&Number(te[1])<=53);function ir(e,t,n,i){if(nr){var r=cn,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=r||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Ji.addEventListener(e,t,ie?{capture:n,passive:i}:n)}function rr(e,t,n,i){(i||Ji).removeEventListener(e,t._wrapper||t,n)}function or(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},o=e.data.on||{};Ji=t.elm,function(e){if(r(e[Qi])){var t=Z?\"change\":\"input\";e[t]=[].concat(e[Qi],e[t]||[]),delete e[Qi]}r(e[er])&&(e.change=[].concat(e[er],e.change||[]),delete e[er])}(n),st(n,o,ir,rr,tr,t.context),Ji=void 0}}var ar,sr={create:or,update:or};function lr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,o,a=t.elm,s=e.data.domProps||{},l=t.data.domProps||{};for(n in r(l.__ob__)&&(l=t.data.domProps=A({},l)),s)n in l||(a[n]=\"\");for(n in l){if(o=l[n],\"textContent\"===n||\"innerHTML\"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if(\"value\"===n&&\"PROGRESS\"!==a.tagName){a._value=o;var u=i(o)?\"\":String(o);ur(a,u)&&(a.value=u)}else if(\"innerHTML\"===n&&Zn(a.tagName)&&i(a.innerHTML)){(ar=ar||document.createElement(\"div\")).innerHTML=\"<svg>\"+o+\"</svg>\";for(var c=ar.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;c.firstChild;)a.appendChild(c.firstChild)}else if(o!==s[n])try{a[n]=o}catch(e){}}}}function ur(e,t){return!e.composing&&(\"OPTION\"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,i=e._vModifiers;if(r(i)){if(i.number)return p(n)!==p(t);if(i.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var cr={create:lr,update:lr},hr=_(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\\))/g).forEach(function(e){if(e){var i=e.split(n);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t});function dr(e){var t=fr(e.style);return e.staticStyle?A(e.staticStyle,t):t}function fr(e){return Array.isArray(e)?I(e):\"string\"==typeof e?hr(e):e}var pr,gr=/^--/,mr=/\\s*!important$/,vr=function(e,t,n){if(gr.test(t))e.style.setProperty(t,n);else if(mr.test(n))e.style.setProperty(T(t),n.replace(mr,\"\"),\"important\");else{var i=br(t);if(Array.isArray(n))for(var r=0,o=n.length;r<o;r++)e.style[i]=n[r];else e.style[i]=n}},yr=[\"Webkit\",\"Moz\",\"ms\"],br=_(function(e){if(pr=pr||document.createElement(\"div\").style,\"filter\"!==(e=C(e))&&e in pr)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<yr.length;n++){var i=yr[n]+t;if(i in pr)return i}});function xr(e,t){var n=t.data,o=e.data;if(!(i(n.staticStyle)&&i(n.style)&&i(o.staticStyle)&&i(o.style))){var a,s,l=t.elm,u=o.staticStyle,c=o.normalizedStyle||o.style||{},h=u||c,d=fr(t.data.style)||{};t.data.normalizedStyle=r(d.__ob__)?A({},d):d;var f=function(e,t){var n,i={};if(t)for(var r=e;r.componentInstance;)(r=r.componentInstance._vnode)&&r.data&&(n=dr(r.data))&&A(i,n);(n=dr(e.data))&&A(i,n);for(var o=e;o=o.parent;)o.data&&(n=dr(o.data))&&A(i,n);return i}(t,!0);for(s in h)i(f[s])&&vr(l,s,\"\");for(s in f)(a=f[s])!==h[s]&&vr(l,s,null==a?\"\":a)}}var _r={create:xr,update:xr},wr=/\\s+/;function Cr(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(wr).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \";n.indexOf(\" \"+t+\" \")<0&&e.setAttribute(\"class\",(n+t).trim())}}function Sr(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(wr).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute(\"class\");else{for(var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \",i=\" \"+t+\" \";n.indexOf(i)>=0;)n=n.replace(i,\" \");(n=n.trim())?e.setAttribute(\"class\",n):e.removeAttribute(\"class\")}}function kr(e){if(e){if(\"object\"==typeof e){var t={};return!1!==e.css&&A(t,Tr(e.name||\"v\")),A(t,e),t}return\"string\"==typeof e?Tr(e):void 0}}var Tr=_(function(e){return{enterClass:e+\"-enter\",enterToClass:e+\"-enter-to\",enterActiveClass:e+\"-enter-active\",leaveClass:e+\"-leave\",leaveToClass:e+\"-leave-to\",leaveActiveClass:e+\"-leave-active\"}}),Mr=U&&!J,Dr=\"transition\",Ar=\"animation\",Ir=\"transition\",Or=\"transitionend\",Er=\"animation\",Lr=\"animationend\";Mr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ir=\"WebkitTransition\",Or=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Er=\"WebkitAnimation\",Lr=\"webkitAnimationEnd\"));var Pr=U?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Nr(e){Pr(function(){Pr(e)})}function Rr(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),Cr(e,t))}function Br(e,t){e._transitionClasses&&y(e._transitionClasses,t),Sr(e,t)}function zr(e,t,n){var i=$r(e,t),r=i.type,o=i.timeout,a=i.propCount;if(!r)return n();var s=r===Dr?Or:Lr,l=0,u=function(){e.removeEventListener(s,c),n()},c=function(t){t.target===e&&++l>=a&&u()};setTimeout(function(){l<a&&u()},o+1),e.addEventListener(s,c)}var Fr=/\\b(transform|all)(,|$)/;function $r(e,t){var n,i=window.getComputedStyle(e),r=(i[Ir+\"Delay\"]||\"\").split(\", \"),o=(i[Ir+\"Duration\"]||\"\").split(\", \"),a=Vr(r,o),s=(i[Er+\"Delay\"]||\"\").split(\", \"),l=(i[Er+\"Duration\"]||\"\").split(\", \"),u=Vr(s,l),c=0,h=0;return t===Dr?a>0&&(n=Dr,c=a,h=o.length):t===Ar?u>0&&(n=Ar,c=u,h=l.length):h=(n=(c=Math.max(a,u))>0?a>u?Dr:Ar:null)?n===Dr?o.length:l.length:0,{type:n,timeout:c,propCount:h,hasTransform:n===Dr&&Fr.test(i[Ir+\"Property\"])}}function Vr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map(function(t,n){return jr(t)+jr(e[n])}))}function jr(e){return 1e3*Number(e.slice(0,-1).replace(\",\",\".\"))}function Hr(e,t){var n=e.elm;r(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var o=kr(e.data.transition);if(!i(o)&&!r(n._enterCb)&&1===n.nodeType){for(var a=o.css,l=o.type,u=o.enterClass,c=o.enterToClass,h=o.enterActiveClass,d=o.appearClass,f=o.appearToClass,g=o.appearActiveClass,m=o.beforeEnter,v=o.enter,y=o.afterEnter,b=o.enterCancelled,x=o.beforeAppear,_=o.appear,w=o.afterAppear,C=o.appearCancelled,S=o.duration,k=Jt,T=Jt.$vnode;T&&T.parent;)k=T.context,T=T.parent;var M=!k._isMounted||!e.isRootInsert;if(!M||_||\"\"===_){var D=M&&d?d:u,A=M&&g?g:h,I=M&&f?f:c,O=M&&x||m,E=M&&\"function\"==typeof _?_:v,L=M&&w||y,P=M&&C||b,N=p(s(S)?S.enter:S);0;var B=!1!==a&&!J,z=Gr(E),F=n._enterCb=R(function(){B&&(Br(n,I),Br(n,A)),F.cancelled?(B&&Br(n,D),P&&P(n)):L&&L(n),n._enterCb=null});e.data.show||lt(e,\"insert\",function(){var t=n.parentNode,i=t&&t._pending&&t._pending[e.key];i&&i.tag===e.tag&&i.elm._leaveCb&&i.elm._leaveCb(),E&&E(n,F)}),O&&O(n),B&&(Rr(n,D),Rr(n,A),Nr(function(){Br(n,D),F.cancelled||(Rr(n,I),z||(qr(N)?setTimeout(F,N):zr(n,l,F)))})),e.data.show&&(t&&t(),E&&E(n,F)),B||z||F()}}}function Wr(e,t){var n=e.elm;r(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var o=kr(e.data.transition);if(i(o)||1!==n.nodeType)return t();if(!r(n._leaveCb)){var a=o.css,l=o.type,u=o.leaveClass,c=o.leaveToClass,h=o.leaveActiveClass,d=o.beforeLeave,f=o.leave,g=o.afterLeave,m=o.leaveCancelled,v=o.delayLeave,y=o.duration,b=!1!==a&&!J,x=Gr(f),_=p(s(y)?y.leave:y);0;var w=n._leaveCb=R(function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),b&&(Br(n,c),Br(n,h)),w.cancelled?(b&&Br(n,u),m&&m(n)):(t(),g&&g(n)),n._leaveCb=null});v?v(C):C()}function C(){w.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),d&&d(n),b&&(Rr(n,u),Rr(n,h),Nr(function(){Br(n,u),w.cancelled||(Rr(n,c),x||(qr(_)?setTimeout(w,_):zr(n,l,w)))})),f&&f(n,w),b||x||w())}}function qr(e){return\"number\"==typeof e&&!isNaN(e)}function Gr(e){if(i(e))return!1;var t=e.fns;return r(t)?Gr(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ur(e,t){!0!==t.data.show&&Hr(t)}var Yr=function(e){var t,n,s={},l=e.modules,u=e.nodeOps;for(t=0;t<si.length;++t)for(s[si[t]]=[],n=0;n<l.length;++n)r(l[n][si[t]])&&s[si[t]].push(l[n][si[t]]);function c(e){var t=u.parentNode(e);r(t)&&u.removeChild(t,e)}function h(e,t,n,i,a,l,c){if(r(e.elm)&&r(l)&&(e=l[c]=xe(e)),e.isRootInsert=!a,!function(e,t,n,i){var a=e.data;if(r(a)){var l=r(e.componentInstance)&&a.keepAlive;if(r(a=a.hook)&&r(a=a.init)&&a(e,!1),r(e.componentInstance))return d(e,t),f(n,e.elm,i),o(l)&&function(e,t,n,i){for(var o,a=e;a.componentInstance;)if(a=a.componentInstance._vnode,r(o=a.data)&&r(o=o.transition)){for(o=0;o<s.activate.length;++o)s.activate[o](ai,a);t.push(a);break}f(n,e.elm,i)}(e,t,n,i),!0}}(e,t,n,i)){var h=e.data,g=e.children,m=e.tag;r(m)?(e.elm=e.ns?u.createElementNS(e.ns,m):u.createElement(m,e),y(e),p(e,g,t),r(h)&&v(e,t),f(n,e.elm,i)):o(e.isComment)?(e.elm=u.createComment(e.text),f(n,e.elm,i)):(e.elm=u.createTextNode(e.text),f(n,e.elm,i))}}function d(e,t){r(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,m(e)?(v(e,t),y(e)):(oi(e),t.push(e))}function f(e,t,n){r(e)&&(r(n)?u.parentNode(n)===e&&u.insertBefore(e,t,n):u.appendChild(e,t))}function p(e,t,n){if(Array.isArray(t))for(var i=0;i<t.length;++i)h(t[i],n,e.elm,null,!0,t,i);else a(e.text)&&u.appendChild(e.elm,u.createTextNode(String(e.text)))}function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return r(e.tag)}function v(e,n){for(var i=0;i<s.create.length;++i)s.create[i](ai,e);r(t=e.data.hook)&&(r(t.create)&&t.create(ai,e),r(t.insert)&&n.push(e))}function y(e){var t;if(r(t=e.fnScopeId))u.setStyleScope(e.elm,t);else for(var n=e;n;)r(t=n.context)&&r(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t),n=n.parent;r(t=Jt)&&t!==e.context&&t!==e.fnContext&&r(t=t.$options._scopeId)&&u.setStyleScope(e.elm,t)}function b(e,t,n,i,r,o){for(;i<=r;++i)h(n[i],o,e,t,!1,n,i)}function x(e){var t,n,i=e.data;if(r(i))for(r(t=i.hook)&&r(t=t.destroy)&&t(e),t=0;t<s.destroy.length;++t)s.destroy[t](e);if(r(t=e.children))for(n=0;n<e.children.length;++n)x(e.children[n])}function _(e,t,n){for(;t<=n;++t){var i=e[t];r(i)&&(r(i.tag)?(w(i),x(i)):c(i.elm))}}function w(e,t){if(r(t)||r(e.data)){var n,i=s.remove.length+1;for(r(t)?t.listeners+=i:t=function(e,t){function n(){0==--n.listeners&&c(e)}return n.listeners=t,n}(e.elm,i),r(n=e.componentInstance)&&r(n=n._vnode)&&r(n.data)&&w(n,t),n=0;n<s.remove.length;++n)s.remove[n](e,t);r(n=e.data.hook)&&r(n=n.remove)?n(e,t):t()}else c(e.elm)}function C(e,t,n,i){for(var o=n;o<i;o++){var a=t[o];if(r(a)&&li(e,a))return o}}function S(e,t,n,a,l,c){if(e!==t){r(t.elm)&&r(a)&&(t=a[l]=xe(t));var d=t.elm=e.elm;if(o(e.isAsyncPlaceholder))r(t.asyncFactory.resolved)?M(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(o(t.isStatic)&&o(e.isStatic)&&t.key===e.key&&(o(t.isCloned)||o(t.isOnce)))t.componentInstance=e.componentInstance;else{var f,p=t.data;r(p)&&r(f=p.hook)&&r(f=f.prepatch)&&f(e,t);var g=e.children,v=t.children;if(r(p)&&m(t)){for(f=0;f<s.update.length;++f)s.update[f](e,t);r(f=p.hook)&&r(f=f.update)&&f(e,t)}i(t.text)?r(g)&&r(v)?g!==v&&function(e,t,n,o,a){for(var s,l,c,d=0,f=0,p=t.length-1,g=t[0],m=t[p],v=n.length-1,y=n[0],x=n[v],w=!a;d<=p&&f<=v;)i(g)?g=t[++d]:i(m)?m=t[--p]:li(g,y)?(S(g,y,o,n,f),g=t[++d],y=n[++f]):li(m,x)?(S(m,x,o,n,v),m=t[--p],x=n[--v]):li(g,x)?(S(g,x,o,n,v),w&&u.insertBefore(e,g.elm,u.nextSibling(m.elm)),g=t[++d],x=n[--v]):li(m,y)?(S(m,y,o,n,f),w&&u.insertBefore(e,m.elm,g.elm),m=t[--p],y=n[++f]):(i(s)&&(s=ui(t,d,p)),i(l=r(y.key)?s[y.key]:C(y,t,d,p))?h(y,o,e,g.elm,!1,n,f):li(c=t[l],y)?(S(c,y,o,n,f),t[l]=void 0,w&&u.insertBefore(e,c.elm,g.elm)):h(y,o,e,g.elm,!1,n,f),y=n[++f]);d>p?b(e,i(n[v+1])?null:n[v+1].elm,n,f,v,o):f>v&&_(t,d,p)}(d,g,v,n,c):r(v)?(r(e.text)&&u.setTextContent(d,\"\"),b(d,null,v,0,v.length-1,n)):r(g)?_(g,0,g.length-1):r(e.text)&&u.setTextContent(d,\"\"):e.text!==t.text&&u.setTextContent(d,t.text),r(p)&&r(f=p.hook)&&r(f=f.postpatch)&&f(e,t)}}}function k(e,t,n){if(o(n)&&r(e.parent))e.parent.data.pendingInsert=t;else for(var i=0;i<t.length;++i)t[i].data.hook.insert(t[i])}var T=g(\"attrs,class,staticClass,staticStyle,key\");function M(e,t,n,i){var a,s=t.tag,l=t.data,u=t.children;if(i=i||l&&l.pre,t.elm=e,o(t.isComment)&&r(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(r(l)&&(r(a=l.hook)&&r(a=a.init)&&a(t,!0),r(a=t.componentInstance)))return d(t,n),!0;if(r(s)){if(r(u))if(e.hasChildNodes())if(r(a=l)&&r(a=a.domProps)&&r(a=a.innerHTML)){if(a!==e.innerHTML)return!1}else{for(var c=!0,h=e.firstChild,f=0;f<u.length;f++){if(!h||!M(h,u[f],n,i)){c=!1;break}h=h.nextSibling}if(!c||h)return!1}else p(t,u,n);if(r(l)){var g=!1;for(var m in l)if(!T(m)){g=!0,v(t,n);break}!g&&l.class&&rt(l.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,a){if(!i(t)){var l,c=!1,d=[];if(i(e))c=!0,h(t,d);else{var f=r(e.nodeType);if(!f&&li(e,t))S(e,t,d,null,null,a);else{if(f){if(1===e.nodeType&&e.hasAttribute(B)&&(e.removeAttribute(B),n=!0),o(n)&&M(e,t,d))return k(t,d,!0),e;l=e,e=new me(u.tagName(l).toLowerCase(),{},[],void 0,l)}var p=e.elm,g=u.parentNode(p);if(h(t,d,p._leaveCb?null:g,u.nextSibling(p)),r(t.parent))for(var v=t.parent,y=m(t);v;){for(var b=0;b<s.destroy.length;++b)s.destroy[b](v);if(v.elm=t.elm,y){for(var w=0;w<s.create.length;++w)s.create[w](ai,v);var C=v.data.hook.insert;if(C.merged)for(var T=1;T<C.fns.length;T++)C.fns[T]()}else oi(v);v=v.parent}r(g)?_([e],0,0):r(e.tag)&&x(e)}}return k(t,d,c),t.elm}r(e)&&x(e)}}({nodeOps:ii,modules:[xi,Di,sr,cr,_r,U?{create:Ur,activate:Ur,remove:function(e,t){!0!==e.data.show?Wr(e,t):t()}}:{}].concat(mi)});J&&document.addEventListener(\"selectionchange\",function(){var e=document.activeElement;e&&e.vmodel&&no(e,\"input\")});var Xr={inserted:function(e,t,n,i){\"select\"===n.tag?(i.elm&&!i.elm._vOptions?lt(n,\"postpatch\",function(){Xr.componentUpdated(e,t,n)}):Kr(e,t,n.context),e._vOptions=[].map.call(e.options,Qr)):(\"textarea\"===n.tag||ti(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener(\"compositionstart\",eo),e.addEventListener(\"compositionend\",to),e.addEventListener(\"change\",to),J&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if(\"select\"===n.tag){Kr(e,t,n.context);var i=e._vOptions,r=e._vOptions=[].map.call(e.options,Qr);if(r.some(function(e,t){return!P(e,i[t])}))(e.multiple?t.value.some(function(e){return Jr(e,r)}):t.value!==t.oldValue&&Jr(t.value,r))&&no(e,\"change\")}}};function Kr(e,t,n){Zr(e,t,n),(Z||Q)&&setTimeout(function(){Zr(e,t,n)},0)}function Zr(e,t,n){var i=t.value,r=e.multiple;if(!r||Array.isArray(i)){for(var o,a,s=0,l=e.options.length;s<l;s++)if(a=e.options[s],r)o=N(i,Qr(a))>-1,a.selected!==o&&(a.selected=o);else if(P(Qr(a),i))return void(e.selectedIndex!==s&&(e.selectedIndex=s));r||(e.selectedIndex=-1)}}function Jr(e,t){return t.every(function(t){return!P(t,e)})}function Qr(e){return\"_value\"in e?e._value:e.value}function eo(e){e.target.composing=!0}function to(e){e.target.composing&&(e.target.composing=!1,no(e.target,\"input\"))}function no(e,t){var n=document.createEvent(\"HTMLEvents\");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function io(e){return!e.componentInstance||e.data&&e.data.transition?e:io(e.componentInstance._vnode)}var ro={model:Xr,show:{bind:function(e,t,n){var i=t.value,r=(n=io(n)).data&&n.data.transition,o=e.__vOriginalDisplay=\"none\"===e.style.display?\"\":e.style.display;i&&r?(n.data.show=!0,Hr(n,function(){e.style.display=o})):e.style.display=i?o:\"none\"},update:function(e,t,n){var i=t.value;!i!=!t.oldValue&&((n=io(n)).data&&n.data.transition?(n.data.show=!0,i?Hr(n,function(){e.style.display=e.__vOriginalDisplay}):Wr(n,function(){e.style.display=\"none\"})):e.style.display=i?e.__vOriginalDisplay:\"none\")},unbind:function(e,t,n,i,r){r||(e.style.display=e.__vOriginalDisplay)}}},oo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ao(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?ao(Ut(t.children)):e}function so(e){var t={},n=e.$options;for(var i in n.propsData)t[i]=e[i];var r=n._parentListeners;for(var o in r)t[C(o)]=r[o];return t}function lo(e,t){if(/\\d-keep-alive$/.test(t.tag))return e(\"keep-alive\",{props:t.componentOptions.propsData})}var uo=function(e){return e.tag||Gt(e)},co=function(e){return\"show\"===e.name},ho={name:\"transition\",props:oo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(uo)).length){0;var i=this.mode;0;var r=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return r;var o=ao(r);if(!o)return r;if(this._leaving)return lo(e,r);var s=\"__transition-\"+this._uid+\"-\";o.key=null==o.key?o.isComment?s+\"comment\":s+o.tag:a(o.key)?0===String(o.key).indexOf(s)?o.key:s+o.key:o.key;var l=(o.data||(o.data={})).transition=so(this),u=this._vnode,c=ao(u);if(o.data.directives&&o.data.directives.some(co)&&(o.data.show=!0),c&&c.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,c)&&!Gt(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var h=c.data.transition=A({},l);if(\"out-in\"===i)return this._leaving=!0,lt(h,\"afterLeave\",function(){t._leaving=!1,t.$forceUpdate()}),lo(e,r);if(\"in-out\"===i){if(Gt(o))return u;var d,f=function(){d()};lt(l,\"afterEnter\",f),lt(l,\"enterCancelled\",f),lt(h,\"delayLeave\",function(e){d=e})}}return r}}},fo=A({tag:String,moveClass:String},oo);function po(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function go(e){e.data.newPos=e.elm.getBoundingClientRect()}function mo(e){var t=e.data.pos,n=e.data.newPos,i=t.left-n.left,r=t.top-n.top;if(i||r){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform=\"translate(\"+i+\"px,\"+r+\"px)\",o.transitionDuration=\"0s\"}}delete fo.mode;var vo={Transition:ho,TransitionGroup:{props:fo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,i){var r=Qt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,r(),t.call(e,n,i)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],a=so(this),s=0;s<r.length;s++){var l=r[s];if(l.tag)if(null!=l.key&&0!==String(l.key).indexOf(\"__vlist\"))o.push(l),n[l.key]=l,(l.data||(l.data={})).transition=a;else;}if(i){for(var u=[],c=[],h=0;h<i.length;h++){var d=i[h];d.data.transition=a,d.data.pos=d.elm.getBoundingClientRect(),n[d.key]?u.push(d):c.push(d)}this.kept=e(t,null,u),this.removed=c}return e(t,null,o)},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||\"v\")+\"-move\";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(po),e.forEach(go),e.forEach(mo),this._reflow=document.body.offsetHeight,e.forEach(function(e){if(e.data.moved){var n=e.elm,i=n.style;Rr(n,t),i.transform=i.WebkitTransform=i.transitionDuration=\"\",n.addEventListener(Or,n._moveCb=function e(i){i&&i.target!==n||i&&!/transform$/.test(i.propertyName)||(n.removeEventListener(Or,e),n._moveCb=null,Br(n,t))})}}))},methods:{hasMove:function(e,t){if(!Mr)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach(function(e){Sr(n,e)}),Cr(n,t),n.style.display=\"none\",this.$el.appendChild(n);var i=$r(n);return this.$el.removeChild(n),this._hasMove=i.hasTransform}}}};Tn.config.mustUseProp=Rn,Tn.config.isReservedTag=Jn,Tn.config.isReservedAttr=Pn,Tn.config.getTagNamespace=Qn,Tn.config.isUnknownElement=function(e){if(!U)return!0;if(Jn(e))return!1;if(e=e.toLowerCase(),null!=ei[e])return ei[e];var t=document.createElement(e);return e.indexOf(\"-\")>-1?ei[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:ei[e]=/HTMLUnknownElement/.test(t.toString())},A(Tn.options.directives,ro),A(Tn.options.components,vo),Tn.prototype.__patch__=U?Yr:O,Tn.prototype.$mount=function(e,t){return function(e,t,n){return e.$el=t,e.$options.render||(e.$options.render=ye),nn(e,\"beforeMount\"),new gn(e,function(){e._update(e._render(),n)},O,{before:function(){e._isMounted&&!e._isDestroyed&&nn(e,\"beforeUpdate\")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,nn(e,\"mounted\")),e}(this,e=e&&U?ni(e):void 0,t)},U&&setTimeout(function(){$.devtools&&ae&&ae.emit(\"init\",Tn)},0);var yo=/\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g,bo=/[-.*+?^${}()|[\\]\\/\\\\]/g,xo=_(function(e){var t=e[0].replace(bo,\"\\\\$&\"),n=e[1].replace(bo,\"\\\\$&\");return new RegExp(t+\"((?:.|\\\\n)+?)\"+n,\"g\")});function _o(e,t){var n=t?xo(t):yo;if(n.test(e)){for(var i,r,o,a=[],s=[],l=n.lastIndex=0;i=n.exec(e);){(r=i.index)>l&&(s.push(o=e.slice(l,r)),a.push(JSON.stringify(o)));var u=Ii(i[1].trim());a.push(\"_s(\"+u+\")\"),s.push({\"@binding\":u}),l=r+i[0].length}return l<e.length&&(s.push(o=e.slice(l)),a.push(JSON.stringify(o))),{expression:a.join(\"+\"),tokens:s}}}var wo={staticKeys:[\"staticClass\"],transformNode:function(e,t){t.warn;var n=ji(e,\"class\");n&&(e.staticClass=JSON.stringify(n));var i=Vi(e,\"class\",!1);i&&(e.classBinding=i)},genData:function(e){var t=\"\";return e.staticClass&&(t+=\"staticClass:\"+e.staticClass+\",\"),e.classBinding&&(t+=\"class:\"+e.classBinding+\",\"),t}};var Co,So={staticKeys:[\"staticStyle\"],transformNode:function(e,t){t.warn;var n=ji(e,\"style\");n&&(e.staticStyle=JSON.stringify(hr(n)));var i=Vi(e,\"style\",!1);i&&(e.styleBinding=i)},genData:function(e){var t=\"\";return e.staticStyle&&(t+=\"staticStyle:\"+e.staticStyle+\",\"),e.styleBinding&&(t+=\"style:(\"+e.styleBinding+\"),\"),t}},ko=function(e){return(Co=Co||document.createElement(\"div\")).innerHTML=e,Co.textContent},To=g(\"area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr\"),Mo=g(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source\"),Do=g(\"address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track\"),Ao=/^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,Io=/^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,Oo=\"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\"+V.source+\"]*\",Eo=\"((?:\"+Oo+\"\\\\:)?\"+Oo+\")\",Lo=new RegExp(\"^<\"+Eo),Po=/^\\s*(\\/?)>/,No=new RegExp(\"^<\\\\/\"+Eo+\"[^>]*>\"),Ro=/^<!DOCTYPE [^>]+>/i,Bo=/^<!\\--/,zo=/^<!\\[/,Fo=g(\"script,style,textarea\",!0),$o={},Vo={\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&amp;\":\"&\",\"&#10;\":\"\\n\",\"&#9;\":\"\\t\",\"&#39;\":\"'\"},jo=/&(?:lt|gt|quot|amp|#39);/g,Ho=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Wo=g(\"pre,textarea\",!0),qo=function(e,t){return e&&Wo(e)&&\"\\n\"===t[0]};function Go(e,t){var n=t?Ho:jo;return e.replace(n,function(e){return Vo[e]})}var Uo,Yo,Xo,Ko,Zo,Jo,Qo,ea,ta=/^@|^v-on:/,na=/^v-|^@|^:|^#/,ia=/([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/,ra=/,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/,oa=/^\\(|\\)$/g,aa=/^\\[.*\\]$/,sa=/:(.*)$/,la=/^:|^\\.|^v-bind:/,ua=/\\.[^.\\]]+(?=[^\\]]*$)/g,ca=/^v-slot(:|$)|^#/,ha=/[\\r\\n]/,da=/\\s+/g,fa=_(ko),pa=\"_empty_\";function ga(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:function(e){for(var t={},n=0,i=e.length;n<i;n++)t[e[n].name]=e[n].value;return t}(t),rawAttrsMap:{},parent:n,children:[]}}function ma(e,t){Uo=t.warn||Ei,Jo=t.isPreTag||E,Qo=t.mustUseProp||E,ea=t.getTagNamespace||E;var n=t.isReservedTag||E;(function(e){return!!e.component||!n(e.tag)}),Xo=Li(t.modules,\"transformNode\"),Ko=Li(t.modules,\"preTransformNode\"),Zo=Li(t.modules,\"postTransformNode\"),Yo=t.delimiters;var i,r,o=[],a=!1!==t.preserveWhitespace,s=t.whitespace,l=!1,u=!1;function c(e){if(h(e),l||e.processed||(e=va(e,t)),o.length||e===i||i.if&&(e.elseif||e.else)&&ba(i,{exp:e.elseif,block:e}),r&&!e.forbidden)if(e.elseif||e.else)a=e,(s=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(r.children))&&s.if&&ba(s,{exp:a.elseif,block:a});else{if(e.slotScope){var n=e.slotTarget||'\"default\"';(r.scopedSlots||(r.scopedSlots={}))[n]=e}r.children.push(e),e.parent=r}var a,s;e.children=e.children.filter(function(e){return!e.slotScope}),h(e),e.pre&&(l=!1),Jo(e.tag)&&(u=!1);for(var c=0;c<Zo.length;c++)Zo[c](e,t)}function h(e){if(!u)for(var t;(t=e.children[e.children.length-1])&&3===t.type&&\" \"===t.text;)e.children.pop()}return function(e,t){for(var n,i,r=[],o=t.expectHTML,a=t.isUnaryTag||E,s=t.canBeLeftOpenTag||E,l=0;e;){if(n=e,i&&Fo(i)){var u=0,c=i.toLowerCase(),h=$o[c]||($o[c]=new RegExp(\"([\\\\s\\\\S]*?)(</\"+c+\"[^>]*>)\",\"i\")),d=e.replace(h,function(e,n,i){return u=i.length,Fo(c)||\"noscript\"===c||(n=n.replace(/<!\\--([\\s\\S]*?)-->/g,\"$1\").replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g,\"$1\")),qo(c,n)&&(n=n.slice(1)),t.chars&&t.chars(n),\"\"});l+=e.length-d.length,e=d,T(c,l-u,l)}else{var f=e.indexOf(\"<\");if(0===f){if(Bo.test(e)){var p=e.indexOf(\"--\\x3e\");if(p>=0){t.shouldKeepComment&&t.comment(e.substring(4,p),l,l+p+3),C(p+3);continue}}if(zo.test(e)){var g=e.indexOf(\"]>\");if(g>=0){C(g+2);continue}}var m=e.match(Ro);if(m){C(m[0].length);continue}var v=e.match(No);if(v){var y=l;C(v[0].length),T(v[1],y,l);continue}var b=S();if(b){k(b),qo(b.tagName,e)&&C(1);continue}}var x=void 0,_=void 0,w=void 0;if(f>=0){for(_=e.slice(f);!(No.test(_)||Lo.test(_)||Bo.test(_)||zo.test(_)||(w=_.indexOf(\"<\",1))<0);)f+=w,_=e.slice(f);x=e.substring(0,f)}f<0&&(x=e),x&&C(x.length),t.chars&&x&&t.chars(x,l-x.length,l)}if(e===n){t.chars&&t.chars(e);break}}function C(t){l+=t,e=e.substring(t)}function S(){var t=e.match(Lo);if(t){var n,i,r={tagName:t[1],attrs:[],start:l};for(C(t[0].length);!(n=e.match(Po))&&(i=e.match(Io)||e.match(Ao));)i.start=l,C(i[0].length),i.end=l,r.attrs.push(i);if(n)return r.unarySlash=n[1],C(n[0].length),r.end=l,r}}function k(e){var n=e.tagName,l=e.unarySlash;o&&(\"p\"===i&&Do(n)&&T(i),s(n)&&i===n&&T(n));for(var u=a(n)||!!l,c=e.attrs.length,h=new Array(c),d=0;d<c;d++){var f=e.attrs[d],p=f[3]||f[4]||f[5]||\"\",g=\"a\"===n&&\"href\"===f[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;h[d]={name:f[1],value:Go(p,g)}}u||(r.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:h,start:e.start,end:e.end}),i=n),t.start&&t.start(n,h,u,e.start,e.end)}function T(e,n,o){var a,s;if(null==n&&(n=l),null==o&&(o=l),e)for(s=e.toLowerCase(),a=r.length-1;a>=0&&r[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=r.length-1;u>=a;u--)t.end&&t.end(r[u].tag,n,o);r.length=a,i=a&&r[a-1].tag}else\"br\"===s?t.start&&t.start(e,[],!0,n,o):\"p\"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}T()}(e,{warn:Uo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,n,a,s,h){var d=r&&r.ns||ea(e);Z&&\"svg\"===d&&(n=function(e){for(var t=[],n=0;n<e.length;n++){var i=e[n];wa.test(i.name)||(i.name=i.name.replace(Ca,\"\"),t.push(i))}return t}(n));var f,p=ga(e,n,r);d&&(p.ns=d),\"style\"!==(f=p).tag&&(\"script\"!==f.tag||f.attrsMap.type&&\"text/javascript\"!==f.attrsMap.type)||oe()||(p.forbidden=!0);for(var g=0;g<Ko.length;g++)p=Ko[g](p,t)||p;l||(!function(e){null!=ji(e,\"v-pre\")&&(e.pre=!0)}(p),p.pre&&(l=!0)),Jo(p.tag)&&(u=!0),l?function(e){var t=e.attrsList,n=t.length;if(n)for(var i=e.attrs=new Array(n),r=0;r<n;r++)i[r]={name:t[r].name,value:JSON.stringify(t[r].value)},null!=t[r].start&&(i[r].start=t[r].start,i[r].end=t[r].end);else e.pre||(e.plain=!0)}(p):p.processed||(ya(p),function(e){var t=ji(e,\"v-if\");if(t)e.if=t,ba(e,{exp:t,block:e});else{null!=ji(e,\"v-else\")&&(e.else=!0);var n=ji(e,\"v-else-if\");n&&(e.elseif=n)}}(p),function(e){null!=ji(e,\"v-once\")&&(e.once=!0)}(p)),i||(i=p),a?c(p):(r=p,o.push(p))},end:function(e,t,n){var i=o[o.length-1];o.length-=1,r=o[o.length-1],c(i)},chars:function(e,t,n){if(r&&(!Z||\"textarea\"!==r.tag||r.attrsMap.placeholder!==e)){var i,o,c,h=r.children;if(e=u||e.trim()?\"script\"===(i=r).tag||\"style\"===i.tag?e:fa(e):h.length?s?\"condense\"===s&&ha.test(e)?\"\":\" \":a?\" \":\"\":\"\")u||\"condense\"!==s||(e=e.replace(da,\" \")),!l&&\" \"!==e&&(o=_o(e,Yo))?c={type:2,expression:o.expression,tokens:o.tokens,text:e}:\" \"===e&&h.length&&\" \"===h[h.length-1].text||(c={type:3,text:e}),c&&h.push(c)}},comment:function(e,t,n){if(r){var i={type:3,text:e,isComment:!0};0,r.children.push(i)}}}),i}function va(e,t){var n,i;!function(e){var t=Vi(e,\"key\");if(t){e.key=t}}(e),e.plain=!e.key&&!e.scopedSlots&&!e.attrsList.length,(i=Vi(n=e,\"ref\"))&&(n.ref=i,n.refInFor=function(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(n)),function(e){var t;\"template\"===e.tag?(t=ji(e,\"scope\"),e.slotScope=t||ji(e,\"slot-scope\")):(t=ji(e,\"slot-scope\"))&&(e.slotScope=t);var n=Vi(e,\"slot\");n&&(e.slotTarget='\"\"'===n?'\"default\"':n,e.slotTargetDynamic=!(!e.attrsMap[\":slot\"]&&!e.attrsMap[\"v-bind:slot\"]),\"template\"===e.tag||e.slotScope||Ni(e,\"slot\",n,$i(e,\"slot\")));if(\"template\"===e.tag){var i=Hi(e,ca);if(i){0;var r=xa(i),o=r.name,a=r.dynamic;e.slotTarget=o,e.slotTargetDynamic=a,e.slotScope=i.value||pa}}else{var s=Hi(e,ca);if(s){0;var l=e.scopedSlots||(e.scopedSlots={}),u=xa(s),c=u.name,h=u.dynamic,d=l[c]=ga(\"template\",[],e);d.slotTarget=c,d.slotTargetDynamic=h,d.children=e.children.filter(function(e){if(!e.slotScope)return e.parent=d,!0}),d.slotScope=s.value||pa,e.children=[],e.plain=!1}}}(e),function(e){\"slot\"===e.tag&&(e.slotName=Vi(e,\"name\"))}(e),function(e){var t;(t=Vi(e,\"is\"))&&(e.component=t);null!=ji(e,\"inline-template\")&&(e.inlineTemplate=!0)}(e);for(var r=0;r<Xo.length;r++)e=Xo[r](e,t)||e;return function(e){var t,n,i,r,o,a,s,l,u=e.attrsList;for(t=0,n=u.length;t<n;t++){if(i=r=u[t].name,o=u[t].value,na.test(i))if(e.hasBindings=!0,(a=_a(i.replace(na,\"\")))&&(i=i.replace(ua,\"\")),la.test(i))i=i.replace(la,\"\"),o=Ii(o),(l=aa.test(i))&&(i=i.slice(1,-1)),a&&(a.prop&&!l&&\"innerHtml\"===(i=C(i))&&(i=\"innerHTML\"),a.camel&&!l&&(i=C(i)),a.sync&&(s=Gi(o,\"$event\"),l?Fi(e,'\"update:\"+('+i+\")\",s,null,!1,0,u[t],!0):(Fi(e,\"update:\"+C(i),s,null,!1,0,u[t]),T(i)!==C(i)&&Fi(e,\"update:\"+T(i),s,null,!1,0,u[t])))),a&&a.prop||!e.component&&Qo(e.tag,e.attrsMap.type,i)?Pi(e,i,o,u[t],l):Ni(e,i,o,u[t],l);else if(ta.test(i))i=i.replace(ta,\"\"),(l=aa.test(i))&&(i=i.slice(1,-1)),Fi(e,i,o,a,!1,0,u[t],l);else{var c=(i=i.replace(na,\"\")).match(sa),h=c&&c[1];l=!1,h&&(i=i.slice(0,-(h.length+1)),aa.test(h)&&(h=h.slice(1,-1),l=!0)),Bi(e,i,r,o,h,l,a,u[t])}else Ni(e,i,JSON.stringify(o),u[t]),!e.component&&\"muted\"===i&&Qo(e.tag,e.attrsMap.type,i)&&Pi(e,i,\"true\",u[t])}}(e),e}function ya(e){var t;if(t=ji(e,\"v-for\")){var n=function(e){var t=e.match(ia);if(!t)return;var n={};n.for=t[2].trim();var i=t[1].trim().replace(oa,\"\"),r=i.match(ra);r?(n.alias=i.replace(ra,\"\").trim(),n.iterator1=r[1].trim(),r[2]&&(n.iterator2=r[2].trim())):n.alias=i;return n}(t);n&&A(e,n)}}function ba(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function xa(e){var t=e.name.replace(ca,\"\");return t||\"#\"!==e.name[0]&&(t=\"default\"),aa.test(t)?{name:t.slice(1,-1),dynamic:!0}:{name:'\"'+t+'\"',dynamic:!1}}function _a(e){var t=e.match(ua);if(t){var n={};return t.forEach(function(e){n[e.slice(1)]=!0}),n}}var wa=/^xmlns:NS\\d+/,Ca=/^NS\\d+:/;function Sa(e){return ga(e.tag,e.attrsList.slice(),e.parent)}var ka=[wo,So,{preTransformNode:function(e,t){if(\"input\"===e.tag){var n,i=e.attrsMap;if(!i[\"v-model\"])return;if((i[\":type\"]||i[\"v-bind:type\"])&&(n=Vi(e,\"type\")),i.type||n||!i[\"v-bind\"]||(n=\"(\"+i[\"v-bind\"]+\").type\"),n){var r=ji(e,\"v-if\",!0),o=r?\"&&(\"+r+\")\":\"\",a=null!=ji(e,\"v-else\",!0),s=ji(e,\"v-else-if\",!0),l=Sa(e);ya(l),Ri(l,\"type\",\"checkbox\"),va(l,t),l.processed=!0,l.if=\"(\"+n+\")==='checkbox'\"+o,ba(l,{exp:l.if,block:l});var u=Sa(e);ji(u,\"v-for\",!0),Ri(u,\"type\",\"radio\"),va(u,t),ba(l,{exp:\"(\"+n+\")==='radio'\"+o,block:u});var c=Sa(e);return ji(c,\"v-for\",!0),Ri(c,\":type\",n),va(c,t),ba(l,{exp:r,block:c}),a?l.else=!0:s&&(l.elseif=s),l}}}}];var Ta,Ma,Da={expectHTML:!0,modules:ka,directives:{model:function(e,t,n){n;var i=t.value,r=t.modifiers,o=e.tag,a=e.attrsMap.type;if(e.component)return qi(e,i,r),!1;if(\"select\"===o)!function(e,t,n){var i='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return '+(n&&n.number?\"_n(val)\":\"val\")+\"});\";i=i+\" \"+Gi(t,\"$event.target.multiple ? $$selectedVal : $$selectedVal[0]\"),Fi(e,\"change\",i,null,!0)}(e,i,r);else if(\"input\"===o&&\"checkbox\"===a)!function(e,t,n){var i=n&&n.number,r=Vi(e,\"value\")||\"null\",o=Vi(e,\"true-value\")||\"true\",a=Vi(e,\"false-value\")||\"false\";Pi(e,\"checked\",\"Array.isArray(\"+t+\")?_i(\"+t+\",\"+r+\")>-1\"+(\"true\"===o?\":(\"+t+\")\":\":_q(\"+t+\",\"+o+\")\")),Fi(e,\"change\",\"var $$a=\"+t+\",$$el=$event.target,$$c=$$el.checked?(\"+o+\"):(\"+a+\");if(Array.isArray($$a)){var $$v=\"+(i?\"_n(\"+r+\")\":r)+\",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(\"+Gi(t,\"$$a.concat([$$v])\")+\")}else{$$i>-1&&(\"+Gi(t,\"$$a.slice(0,$$i).concat($$a.slice($$i+1))\")+\")}}else{\"+Gi(t,\"$$c\")+\"}\",null,!0)}(e,i,r);else if(\"input\"===o&&\"radio\"===a)!function(e,t,n){var i=n&&n.number,r=Vi(e,\"value\")||\"null\";Pi(e,\"checked\",\"_q(\"+t+\",\"+(r=i?\"_n(\"+r+\")\":r)+\")\"),Fi(e,\"change\",Gi(t,r),null,!0)}(e,i,r);else if(\"input\"===o||\"textarea\"===o)!function(e,t,n){var i=e.attrsMap.type,r=n||{},o=r.lazy,a=r.number,s=r.trim,l=!o&&\"range\"!==i,u=o?\"change\":\"range\"===i?Qi:\"input\",c=\"$event.target.value\";s&&(c=\"$event.target.value.trim()\"),a&&(c=\"_n(\"+c+\")\");var h=Gi(t,c);l&&(h=\"if($event.target.composing)return;\"+h),Pi(e,\"value\",\"(\"+t+\")\"),Fi(e,u,h,null,!0),(s||a)&&Fi(e,\"blur\",\"$forceUpdate()\")}(e,i,r);else if(!$.isReservedTag(o))return qi(e,i,r),!1;return!0},text:function(e,t){t.value&&Pi(e,\"textContent\",\"_s(\"+t.value+\")\",t)},html:function(e,t){t.value&&Pi(e,\"innerHTML\",\"_s(\"+t.value+\")\",t)}},isPreTag:function(e){return\"pre\"===e},isUnaryTag:To,mustUseProp:Rn,canBeLeftOpenTag:Mo,isReservedTag:Jn,getTagNamespace:Qn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(\",\")}(ka)},Aa=_(function(e){return g(\"type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap\"+(e?\",\"+e:\"\"))});function Ia(e,t){e&&(Ta=Aa(t.staticKeys||\"\"),Ma=t.isReservedTag||E,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||m(e.tag)||!Ma(e.tag)||function(e){for(;e.parent;){if(\"template\"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(Ta)))}(t);if(1===t.type){if(!Ma(t.tag)&&\"slot\"!==t.tag&&null==t.attrsMap[\"inline-template\"])return;for(var n=0,i=t.children.length;n<i;n++){var r=t.children[n];e(r),r.static||(t.static=!1)}if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++){var s=t.ifConditions[o].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var i=0,r=t.children.length;i<r;i++)e(t.children[i],n||!!t.for);if(t.ifConditions)for(var o=1,a=t.ifConditions.length;o<a;o++)e(t.ifConditions[o].block,n)}}(e,!1))}var Oa=/^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function(?:\\s+[\\w$]+)?\\s*\\(/,Ea=/\\([^)]*?\\);*$/,La=/^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/,Pa={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Na={esc:[\"Esc\",\"Escape\"],tab:\"Tab\",enter:\"Enter\",space:[\" \",\"Spacebar\"],up:[\"Up\",\"ArrowUp\"],left:[\"Left\",\"ArrowLeft\"],right:[\"Right\",\"ArrowRight\"],down:[\"Down\",\"ArrowDown\"],delete:[\"Backspace\",\"Delete\",\"Del\"]},Ra=function(e){return\"if(\"+e+\")return null;\"},Ba={stop:\"$event.stopPropagation();\",prevent:\"$event.preventDefault();\",self:Ra(\"$event.target !== $event.currentTarget\"),ctrl:Ra(\"!$event.ctrlKey\"),shift:Ra(\"!$event.shiftKey\"),alt:Ra(\"!$event.altKey\"),meta:Ra(\"!$event.metaKey\"),left:Ra(\"'button' in $event && $event.button !== 0\"),middle:Ra(\"'button' in $event && $event.button !== 1\"),right:Ra(\"'button' in $event && $event.button !== 2\")};function za(e,t){var n=t?\"nativeOn:\":\"on:\",i=\"\",r=\"\";for(var o in e){var a=Fa(e[o]);e[o]&&e[o].dynamic?r+=o+\",\"+a+\",\":i+='\"'+o+'\":'+a+\",\"}return i=\"{\"+i.slice(0,-1)+\"}\",r?n+\"_d(\"+i+\",[\"+r.slice(0,-1)+\"])\":n+i}function Fa(e){if(!e)return\"function(){}\";if(Array.isArray(e))return\"[\"+e.map(function(e){return Fa(e)}).join(\",\")+\"]\";var t=La.test(e.value),n=Oa.test(e.value),i=La.test(e.value.replace(Ea,\"\"));if(e.modifiers){var r=\"\",o=\"\",a=[];for(var s in e.modifiers)if(Ba[s])o+=Ba[s],Pa[s]&&a.push(s);else if(\"exact\"===s){var l=e.modifiers;o+=Ra([\"ctrl\",\"shift\",\"alt\",\"meta\"].filter(function(e){return!l[e]}).map(function(e){return\"$event.\"+e+\"Key\"}).join(\"||\"))}else a.push(s);return a.length&&(r+=function(e){return\"if(!$event.type.indexOf('key')&&\"+e.map($a).join(\"&&\")+\")return null;\"}(a)),o&&(r+=o),\"function($event){\"+r+(t?\"return \"+e.value+\"($event)\":n?\"return (\"+e.value+\")($event)\":i?\"return \"+e.value:e.value)+\"}\"}return t||n?e.value:\"function($event){\"+(i?\"return \"+e.value:e.value)+\"}\"}function $a(e){var t=parseInt(e,10);if(t)return\"$event.keyCode!==\"+t;var n=Pa[e],i=Na[e];return\"_k($event.keyCode,\"+JSON.stringify(e)+\",\"+JSON.stringify(n)+\",$event.key,\"+JSON.stringify(i)+\")\"}var Va={on:function(e,t){e.wrapListeners=function(e){return\"_g(\"+e+\",\"+t.value+\")\"}},bind:function(e,t){e.wrapData=function(n){return\"_b(\"+n+\",'\"+e.tag+\"',\"+t.value+\",\"+(t.modifiers&&t.modifiers.prop?\"true\":\"false\")+(t.modifiers&&t.modifiers.sync?\",true\":\"\")+\")\"}},cloak:O},ja=function(e){this.options=e,this.warn=e.warn||Ei,this.transforms=Li(e.modules,\"transformCode\"),this.dataGenFns=Li(e.modules,\"genData\"),this.directives=A(A({},Va),e.directives);var t=e.isReservedTag||E;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ha(e,t){var n=new ja(t);return{render:\"with(this){return \"+(e?Wa(e,n):'_c(\"div\")')+\"}\",staticRenderFns:n.staticRenderFns}}function Wa(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return qa(e,t);if(e.once&&!e.onceProcessed)return Ga(e,t);if(e.for&&!e.forProcessed)return Ya(e,t);if(e.if&&!e.ifProcessed)return Ua(e,t);if(\"template\"!==e.tag||e.slotTarget||t.pre){if(\"slot\"===e.tag)return function(e,t){var n=e.slotName||'\"default\"',i=Ja(e,t),r=\"_t(\"+n+(i?\",\"+i:\"\"),o=e.attrs||e.dynamicAttrs?ts((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:C(e.name),value:e.value,dynamic:e.dynamic}})):null,a=e.attrsMap[\"v-bind\"];!o&&!a||i||(r+=\",null\");o&&(r+=\",\"+o);a&&(r+=(o?\"\":\",null\")+\",\"+a);return r+\")\"}(e,t);var n;if(e.component)n=function(e,t,n){var i=t.inlineTemplate?null:Ja(t,n,!0);return\"_c(\"+e+\",\"+Xa(t,n)+(i?\",\"+i:\"\")+\")\"}(e.component,e,t);else{var i;(!e.plain||e.pre&&t.maybeComponent(e))&&(i=Xa(e,t));var r=e.inlineTemplate?null:Ja(e,t,!0);n=\"_c('\"+e.tag+\"'\"+(i?\",\"+i:\"\")+(r?\",\"+r:\"\")+\")\"}for(var o=0;o<t.transforms.length;o++)n=t.transforms[o](e,n);return n}return Ja(e,t)||\"void 0\"}function qa(e,t){e.staticProcessed=!0;var n=t.pre;return e.pre&&(t.pre=e.pre),t.staticRenderFns.push(\"with(this){return \"+Wa(e,t)+\"}\"),t.pre=n,\"_m(\"+(t.staticRenderFns.length-1)+(e.staticInFor?\",true\":\"\")+\")\"}function Ga(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return Ua(e,t);if(e.staticInFor){for(var n=\"\",i=e.parent;i;){if(i.for){n=i.key;break}i=i.parent}return n?\"_o(\"+Wa(e,t)+\",\"+t.onceId+++\",\"+n+\")\":Wa(e,t)}return qa(e,t)}function Ua(e,t,n,i){return e.ifProcessed=!0,function e(t,n,i,r){if(!t.length)return r||\"_e()\";var o=t.shift();return o.exp?\"(\"+o.exp+\")?\"+a(o.block)+\":\"+e(t,n,i,r):\"\"+a(o.block);function a(e){return i?i(e,n):e.once?Ga(e,n):Wa(e,n)}}(e.ifConditions.slice(),t,n,i)}function Ya(e,t,n,i){var r=e.for,o=e.alias,a=e.iterator1?\",\"+e.iterator1:\"\",s=e.iterator2?\",\"+e.iterator2:\"\";return e.forProcessed=!0,(i||\"_l\")+\"((\"+r+\"),function(\"+o+a+s+\"){return \"+(n||Wa)(e,t)+\"})\"}function Xa(e,t){var n=\"{\",i=function(e,t){var n=e.directives;if(!n)return;var i,r,o,a,s=\"directives:[\",l=!1;for(i=0,r=n.length;i<r;i++){o=n[i],a=!0;var u=t.directives[o.name];u&&(a=!!u(e,o,t.warn)),a&&(l=!0,s+='{name:\"'+o.name+'\",rawName:\"'+o.rawName+'\"'+(o.value?\",value:(\"+o.value+\"),expression:\"+JSON.stringify(o.value):\"\")+(o.arg?\",arg:\"+(o.isDynamicArg?o.arg:'\"'+o.arg+'\"'):\"\")+(o.modifiers?\",modifiers:\"+JSON.stringify(o.modifiers):\"\")+\"},\")}if(l)return s.slice(0,-1)+\"]\"}(e,t);i&&(n+=i+\",\"),e.key&&(n+=\"key:\"+e.key+\",\"),e.ref&&(n+=\"ref:\"+e.ref+\",\"),e.refInFor&&(n+=\"refInFor:true,\"),e.pre&&(n+=\"pre:true,\"),e.component&&(n+='tag:\"'+e.tag+'\",');for(var r=0;r<t.dataGenFns.length;r++)n+=t.dataGenFns[r](e);if(e.attrs&&(n+=\"attrs:\"+ts(e.attrs)+\",\"),e.props&&(n+=\"domProps:\"+ts(e.props)+\",\"),e.events&&(n+=za(e.events,!1)+\",\"),e.nativeEvents&&(n+=za(e.nativeEvents,!0)+\",\"),e.slotTarget&&!e.slotScope&&(n+=\"slot:\"+e.slotTarget+\",\"),e.scopedSlots&&(n+=function(e,t,n){var i=e.for||Object.keys(t).some(function(e){var n=t[e];return n.slotTargetDynamic||n.if||n.for||Ka(n)}),r=!!e.if;if(!i)for(var o=e.parent;o;){if(o.slotScope&&o.slotScope!==pa||o.for){i=!0;break}o.if&&(r=!0),o=o.parent}var a=Object.keys(t).map(function(e){return Za(t[e],n)}).join(\",\");return\"scopedSlots:_u([\"+a+\"]\"+(i?\",null,true\":\"\")+(!i&&r?\",null,false,\"+function(e){var t=5381,n=e.length;for(;n;)t=33*t^e.charCodeAt(--n);return t>>>0}(a):\"\")+\")\"}(e,e.scopedSlots,t)+\",\"),e.model&&(n+=\"model:{value:\"+e.model.value+\",callback:\"+e.model.callback+\",expression:\"+e.model.expression+\"},\"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];0;if(n&&1===n.type){var i=Ha(n,t.options);return\"inlineTemplate:{render:function(){\"+i.render+\"},staticRenderFns:[\"+i.staticRenderFns.map(function(e){return\"function(){\"+e+\"}\"}).join(\",\")+\"]}\"}}(e,t);o&&(n+=o+\",\")}return n=n.replace(/,$/,\"\")+\"}\",e.dynamicAttrs&&(n=\"_b(\"+n+',\"'+e.tag+'\",'+ts(e.dynamicAttrs)+\")\"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ka(e){return 1===e.type&&(\"slot\"===e.tag||e.children.some(Ka))}function Za(e,t){var n=e.attrsMap[\"slot-scope\"];if(e.if&&!e.ifProcessed&&!n)return Ua(e,t,Za,\"null\");if(e.for&&!e.forProcessed)return Ya(e,t,Za);var i=e.slotScope===pa?\"\":String(e.slotScope),r=\"function(\"+i+\"){return \"+(\"template\"===e.tag?e.if&&n?\"(\"+e.if+\")?\"+(Ja(e,t)||\"undefined\")+\":undefined\":Ja(e,t)||\"undefined\":Wa(e,t))+\"}\",o=i?\"\":\",proxy:true\";return\"{key:\"+(e.slotTarget||'\"default\"')+\",fn:\"+r+o+\"}\"}function Ja(e,t,n,i,r){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&\"template\"!==a.tag&&\"slot\"!==a.tag){var s=n?t.maybeComponent(a)?\",1\":\",0\":\"\";return\"\"+(i||Wa)(a,t)+s}var l=n?function(e,t){for(var n=0,i=0;i<e.length;i++){var r=e[i];if(1===r.type){if(Qa(r)||r.ifConditions&&r.ifConditions.some(function(e){return Qa(e.block)})){n=2;break}(t(r)||r.ifConditions&&r.ifConditions.some(function(e){return t(e.block)}))&&(n=1)}}return n}(o,t.maybeComponent):0,u=r||es;return\"[\"+o.map(function(e){return u(e,t)}).join(\",\")+\"]\"+(l?\",\"+l:\"\")}}function Qa(e){return void 0!==e.for||\"template\"===e.tag||\"slot\"===e.tag}function es(e,t){return 1===e.type?Wa(e,t):3===e.type&&e.isComment?(i=e,\"_e(\"+JSON.stringify(i.text)+\")\"):\"_v(\"+(2===(n=e).type?n.expression:ns(JSON.stringify(n.text)))+\")\";var n,i}function ts(e){for(var t=\"\",n=\"\",i=0;i<e.length;i++){var r=e[i],o=ns(r.value);r.dynamic?n+=r.name+\",\"+o+\",\":t+='\"'+r.name+'\":'+o+\",\"}return t=\"{\"+t.slice(0,-1)+\"}\",n?\"_d(\"+t+\",[\"+n.slice(0,-1)+\"])\":t}function ns(e){return e.replace(/\\u2028/g,\"\\\\u2028\").replace(/\\u2029/g,\"\\\\u2029\")}new RegExp(\"\\\\b\"+\"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments\".split(\",\").join(\"\\\\b|\\\\b\")+\"\\\\b\"),new RegExp(\"\\\\b\"+\"delete,typeof,void\".split(\",\").join(\"\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b\")+\"\\\\s*\\\\([^\\\\)]*\\\\)\");function is(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),O}}function rs(e){var t=Object.create(null);return function(n,i,r){(i=A({},i)).warn;delete i.warn;var o=i.delimiters?String(i.delimiters)+n:n;if(t[o])return t[o];var a=e(n,i);var s={},l=[];return s.render=is(a.render,l),s.staticRenderFns=a.staticRenderFns.map(function(e){return is(e,l)}),t[o]=s}}var os,as,ss=(os=function(e,t){var n=ma(e.trim(),t);!1!==t.optimize&&Ia(n,t);var i=Ha(n,t);return{ast:n,render:i.render,staticRenderFns:i.staticRenderFns}},function(e){function t(t,n){var i=Object.create(e),r=[],o=[],a=function(e,t,n){(n?o:r).push(e)};if(n)for(var s in n.modules&&(i.modules=(e.modules||[]).concat(n.modules)),n.directives&&(i.directives=A(Object.create(e.directives||null),n.directives)),n)\"modules\"!==s&&\"directives\"!==s&&(i[s]=n[s]);i.warn=a;var l=os(t.trim(),i);return l.errors=r,l.tips=o,l}return{compile:t,compileToFunctions:rs(t)}})(Da),ls=(ss.compile,ss.compileToFunctions);function us(e){return(as=as||document.createElement(\"div\")).innerHTML=e?'<a href=\"\\n\"/>':'<div a=\"\\n\"/>',as.innerHTML.indexOf(\"&#10;\")>0}var cs=!!U&&us(!1),hs=!!U&&us(!0),ds=_(function(e){var t=ni(e);return t&&t.innerHTML}),fs=Tn.prototype.$mount;Tn.prototype.$mount=function(e,t){if((e=e&&ni(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var i=n.template;if(i)if(\"string\"==typeof i)\"#\"===i.charAt(0)&&(i=ds(i));else{if(!i.nodeType)return this;i=i.innerHTML}else e&&(i=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement(\"div\");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(i){0;var r=ls(i,{outputSourceRange:!1,shouldDecodeNewlines:cs,shouldDecodeNewlinesForHref:hs,delimiters:n.delimiters,comments:n.comments},this),o=r.render,a=r.staticRenderFns;n.render=o,n.staticRenderFns=a}}return fs.call(this,e,t)},Tn.compile=ls,t.default=Tn}.call(t,n(\"DuR2\"))},\"77Pl\":function(e,t,n){var i=n(\"EqjI\");e.exports=function(e){if(!i(e))throw TypeError(e+\" is not an object!\");return e}},\"7J9s\":function(e,t,n){\"use strict\";t.__esModule=!0,t.PopupManager=void 0;var i=l(n(\"7+uW\")),r=l(n(\"jmaC\")),o=l(n(\"OAzY\")),a=l(n(\"6Twh\")),s=n(\"2kvA\");function l(e){return e&&e.__esModule?e:{default:e}}var u=1,c=void 0;t.default={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId=\"popup-\"+u++,o.default.register(this._popupId,this)},beforeDestroy:function(){o.default.deregister(this._popupId),o.default.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,i.default.nextTick(function(){t.open()}))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var n=(0,r.default)({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var i=Number(n.openDelay);i>0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(n)},i):this.doOpen(n)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,n=e.modal,i=e.zIndex;if(i&&(o.default.zIndex=i),n&&(this._closing&&(o.default.closeModal(this._popupId),this._closing=!1),o.default.openModal(this._popupId,o.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,s.hasClass)(document.body,\"el-popup-parent--hidden\"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,s.getStyle)(document.body,\"paddingRight\"),10)),c=(0,a.default)();var r=document.documentElement.clientHeight<document.body.scrollHeight,l=(0,s.getStyle)(document.body,\"overflowY\");c>0&&(r||\"scroll\"===l)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+c+\"px\"),(0,s.addClass)(document.body,\"el-popup-parent--hidden\")}\"static\"===getComputedStyle(t).position&&(t.style.position=\"absolute\"),t.style.zIndex=o.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){o.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,s.removeClass)(document.body,\"el-popup-parent--hidden\")),this.withoutHiddenClass=!0}}},t.PopupManager=o.default},\"7KvD\":function(e,t){var n=e.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},\"7UMu\":function(e,t,n){var i=n(\"R9M2\");e.exports=Array.isArray||function(e){return\"Array\"==i(e)}},\"7XrG\":function(e,t,n){var i=n(\"Icdr\").extendComponentModel({type:\"tooltip\",dependencies:[\"axisPointer\"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:\"item\",triggerOn:\"mousemove|click\",alwaysShowContent:!1,displayMode:\"single\",renderMode:\"auto\",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:\"rgba(50,50,50,0.7)\",borderColor:\"#333\",borderRadius:4,borderWidth:0,padding:5,extraCssText:\"\",axisPointer:{type:\"line\",axis:\"auto\",animation:\"auto\",animationDurationUpdate:200,animationEasingUpdate:\"exponentialOut\",crossStyle:{color:\"#999\",width:1,type:\"dashed\",textStyle:{}}},textStyle:{color:\"#fff\",fontSize:14}}});e.exports=i},\"7Xsf\":function(e,t,n){(function(e){\"use strict\";var t=e.commands,n=e.Pos;function i(t,i){t.extendSelectionsBy(function(r){return t.display.shift||t.doc.extend||r.empty()?function(t,i,r){if(r<0&&0==i.ch)return t.clipPos(n(i.line-1));var o=t.getLine(i.line);if(r>0&&i.ch>=o.length)return t.clipPos(n(i.line+1,0));for(var a,s=\"start\",l=i.ch,u=l,c=r<0?0:o.length,h=0;u!=c;u+=r,h++){var d=o.charAt(r<0?u-1:u),f=\"_\"!=d&&e.isWordChar(d)?\"w\":\"o\";if(\"w\"==f&&d.toUpperCase()==d&&(f=\"W\"),\"start\"==s)\"o\"!=f?(s=\"in\",a=f):l=u+r;else if(\"in\"==s&&a!=f){if(\"w\"==a&&\"W\"==f&&r<0&&u--,\"W\"==a&&\"w\"==f&&r>0){if(u==l+1){a=\"w\";continue}u--}break}}return n(i.line,u)}(t.doc,r.head,i):i<0?r.from():r.to()})}function r(t,i){if(t.isReadOnly())return e.Pass;t.operation(function(){for(var e=t.listSelections().length,r=[],o=-1,a=0;a<e;a++){var s=t.listSelections()[a].head;if(!(s.line<=o)){var l=n(s.line+(i?0:1),0);t.replaceRange(\"\\n\",l,null,\"+insertLine\"),t.indentLine(l.line,null,!0),r.push({head:l,anchor:l}),o=s.line+1}}t.setSelections(r)}),t.execCommand(\"indentAuto\")}function o(t,i){for(var r=i.ch,o=r,a=t.getLine(i.line);r&&e.isWordChar(a.charAt(r-1));)--r;for(;o<a.length&&e.isWordChar(a.charAt(o));)++o;return{from:n(i.line,r),to:n(i.line,o),word:a.slice(r,o)}}function a(e,t){for(var n=e.listSelections(),i=[],r=0;r<n.length;r++){var o=n[r],a=e.findPosV(o.anchor,t,\"line\",o.anchor.goalColumn),s=e.findPosV(o.head,t,\"line\",o.head.goalColumn);a.goalColumn=null!=o.anchor.goalColumn?o.anchor.goalColumn:e.cursorCoords(o.anchor,\"div\").left,s.goalColumn=null!=o.head.goalColumn?o.head.goalColumn:e.cursorCoords(o.head,\"div\").left;var l={anchor:a,head:s};i.push(o),i.push(l)}e.setSelections(i)}t.goSubwordLeft=function(e){i(e,-1)},t.goSubwordRight=function(e){i(e,1)},t.scrollLineUp=function(e){var t=e.getScrollInfo();if(!e.somethingSelected()){var n=e.lineAtHeight(t.top+t.clientHeight,\"local\");e.getCursor().line>=n&&e.execCommand(\"goLineUp\")}e.scrollTo(null,t.top-e.defaultTextHeight())},t.scrollLineDown=function(e){var t=e.getScrollInfo();if(!e.somethingSelected()){var n=e.lineAtHeight(t.top,\"local\")+1;e.getCursor().line<=n&&e.execCommand(\"goLineDown\")}e.scrollTo(null,t.top+e.defaultTextHeight())},t.splitSelectionByLine=function(e){for(var t=e.listSelections(),i=[],r=0;r<t.length;r++)for(var o=t[r].from(),a=t[r].to(),s=o.line;s<=a.line;++s)a.line>o.line&&s==a.line&&0==a.ch||i.push({anchor:s==o.line?o:n(s,0),head:s==a.line?a:n(s)});e.setSelections(i,0)},t.singleSelectionTop=function(e){var t=e.listSelections()[0];e.setSelection(t.anchor,t.head,{scroll:!1})},t.selectLine=function(e){for(var t=e.listSelections(),i=[],r=0;r<t.length;r++){var o=t[r];i.push({anchor:n(o.from().line,0),head:n(o.to().line+1,0)})}e.setSelections(i)},t.insertLineAfter=function(e){return r(e,!1)},t.insertLineBefore=function(e){return r(e,!0)},t.selectNextOccurrence=function(t){var i=t.getCursor(\"from\"),r=t.getCursor(\"to\"),a=t.state.sublimeFindFullWord==t.doc.sel;if(0==e.cmpPos(i,r)){var s=o(t,i);if(!s.word)return;t.setSelection(s.from,s.to),a=!0}else{var l=t.getRange(i,r),u=a?new RegExp(\"\\\\b\"+l+\"\\\\b\"):l,c=t.getSearchCursor(u,r),h=c.findNext();if(h||(h=(c=t.getSearchCursor(u,n(t.firstLine(),0))).findNext()),!h||function(t,n,i){for(var r=0;r<t.length;r++)if(0==e.cmpPos(t[r].from(),n)&&0==e.cmpPos(t[r].to(),i))return!0;return!1}(t.listSelections(),c.from(),c.to()))return;t.addSelection(c.from(),c.to())}a&&(t.state.sublimeFindFullWord=t.doc.sel)},t.skipAndSelectNextOccurrence=function(n){var i=n.getCursor(\"anchor\"),r=n.getCursor(\"head\");t.selectNextOccurrence(n),0!=e.cmpPos(i,r)&&n.doc.setSelections(n.doc.listSelections().filter(function(e){return e.anchor!=i||e.head!=r}))},t.addCursorToPrevLine=function(e){a(e,-1)},t.addCursorToNextLine=function(e){a(e,1)};var s=\"(){}[]\";function l(t){for(var i=t.listSelections(),r=[],o=0;o<i.length;o++){var a=i[o],l=a.head,u=t.scanForBracket(l,-1);if(!u)return!1;for(;;){var c=t.scanForBracket(l,1);if(!c)return!1;if(c.ch==s.charAt(s.indexOf(u.ch)+1)){var h=n(u.pos.line,u.pos.ch+1);if(0!=e.cmpPos(h,a.from())||0!=e.cmpPos(c.pos,a.to())){r.push({anchor:h,head:c.pos});break}if(!(u=t.scanForBracket(u.pos,-1)))return!1}l=n(c.pos.line,c.pos.ch+1)}}return t.setSelections(r),!0}function u(e){return e?/\\bpunctuation\\b/.test(e)?e:void 0:null}function c(t,i){if(t.isReadOnly())return e.Pass;for(var r,o=t.listSelections(),a=[],s=0;s<o.length;s++){var l=o[s];if(!l.empty()){for(var u=l.from().line,c=l.to().line;s<o.length-1&&o[s+1].from().line==c;)c=o[++s].to().line;o[s].to().ch||c--,a.push(u,c)}}a.length?r=!0:a.push(t.firstLine(),t.lastLine()),t.operation(function(){for(var e=[],o=0;o<a.length;o+=2){var s=a[o],l=a[o+1],u=n(s,0),c=n(l),h=t.getRange(u,c,!1);i?h.sort():h.sort(function(e,t){var n=e.toUpperCase(),i=t.toUpperCase();return n!=i&&(e=n,t=i),e<t?-1:e==t?0:1}),t.replaceRange(h,u,c),r&&e.push({anchor:u,head:n(l+1,0)})}r&&t.setSelections(e,0)})}function h(t,n){t.operation(function(){for(var i=t.listSelections(),r=[],a=[],s=0;s<i.length;s++){(u=i[s]).empty()?(r.push(s),a.push(\"\")):a.push(n(t.getRange(u.from(),u.to())))}t.replaceSelections(a,\"around\",\"case\");var l;for(s=r.length-1;s>=0;s--){var u=i[r[s]];if(!(l&&e.cmpPos(u.head,l)>0)){var c=o(t,u.head);l=c.from,t.replaceRange(n(c.word),c.from,c.to)}}})}function d(t){var n=t.getCursor(\"from\"),i=t.getCursor(\"to\");if(0==e.cmpPos(n,i)){var r=o(t,n);if(!r.word)return;n=r.from,i=r.to}return{from:n,to:i,query:t.getRange(n,i),word:r}}function f(e,t){var i=d(e);if(i){var r=i.query,o=e.getSearchCursor(r,t?i.to:i.from);(t?o.findNext():o.findPrevious())?e.setSelection(o.from(),o.to()):(o=e.getSearchCursor(r,t?n(e.firstLine(),0):e.clipPos(n(e.lastLine()))),(t?o.findNext():o.findPrevious())?e.setSelection(o.from(),o.to()):i.word&&e.setSelection(i.from,i.to))}}t.selectScope=function(e){l(e)||e.execCommand(\"selectAll\")},t.selectBetweenBrackets=function(t){if(!l(t))return e.Pass},t.goToBracket=function(t){t.extendSelectionsBy(function(i){var r=t.scanForBracket(i.head,1,u(t.getTokenTypeAt(i.head)));if(r&&0!=e.cmpPos(r.pos,i.head))return r.pos;var o=t.scanForBracket(i.head,-1,u(t.getTokenTypeAt(n(i.head.line,i.head.ch+1))));return o&&n(o.pos.line,o.pos.ch+1)||i.head})},t.swapLineUp=function(t){if(t.isReadOnly())return e.Pass;for(var i=t.listSelections(),r=[],o=t.firstLine()-1,a=[],s=0;s<i.length;s++){var l=i[s],u=l.from().line-1,c=l.to().line;a.push({anchor:n(l.anchor.line-1,l.anchor.ch),head:n(l.head.line-1,l.head.ch)}),0!=l.to().ch||l.empty()||--c,u>o?r.push(u,c):r.length&&(r[r.length-1]=c),o=c}t.operation(function(){for(var e=0;e<r.length;e+=2){var i=r[e],o=r[e+1],s=t.getLine(i);t.replaceRange(\"\",n(i,0),n(i+1,0),\"+swapLine\"),o>t.lastLine()?t.replaceRange(\"\\n\"+s,n(t.lastLine()),null,\"+swapLine\"):t.replaceRange(s+\"\\n\",n(o,0),null,\"+swapLine\")}t.setSelections(a),t.scrollIntoView()})},t.swapLineDown=function(t){if(t.isReadOnly())return e.Pass;for(var i=t.listSelections(),r=[],o=t.lastLine()+1,a=i.length-1;a>=0;a--){var s=i[a],l=s.to().line+1,u=s.from().line;0!=s.to().ch||s.empty()||l--,l<o?r.push(l,u):r.length&&(r[r.length-1]=u),o=u}t.operation(function(){for(var e=r.length-2;e>=0;e-=2){var i=r[e],o=r[e+1],a=t.getLine(i);i==t.lastLine()?t.replaceRange(\"\",n(i-1),n(i),\"+swapLine\"):t.replaceRange(\"\",n(i,0),n(i+1,0),\"+swapLine\"),t.replaceRange(a+\"\\n\",n(o,0),null,\"+swapLine\")}t.scrollIntoView()})},t.toggleCommentIndented=function(e){e.toggleComment({indent:!0})},t.joinLines=function(e){for(var t=e.listSelections(),i=[],r=0;r<t.length;r++){for(var o=t[r],a=o.from(),s=a.line,l=o.to().line;r<t.length-1&&t[r+1].from().line==l;)l=t[++r].to().line;i.push({start:s,end:l,anchor:!o.empty()&&a})}e.operation(function(){for(var t=0,r=[],o=0;o<i.length;o++){for(var a,s=i[o],l=s.anchor&&n(s.anchor.line-t,s.anchor.ch),u=s.start;u<=s.end;u++){var c=u-t;u==s.end&&(a=n(c,e.getLine(c).length+1)),c<e.lastLine()&&(e.replaceRange(\" \",n(c),n(c+1,/^\\s*/.exec(e.getLine(c+1))[0].length)),++t)}r.push({anchor:l||a,head:a})}e.setSelections(r,0)})},t.duplicateLine=function(e){e.operation(function(){for(var t=e.listSelections().length,i=0;i<t;i++){var r=e.listSelections()[i];r.empty()?e.replaceRange(e.getLine(r.head.line)+\"\\n\",n(r.head.line,0)):e.replaceRange(e.getRange(r.from(),r.to()),r.from())}e.scrollIntoView()})},t.sortLines=function(e){c(e,!0)},t.sortLinesInsensitive=function(e){c(e,!1)},t.nextBookmark=function(e){var t=e.state.sublimeBookmarks;if(t)for(;t.length;){var n=t.shift(),i=n.find();if(i)return t.push(n),e.setSelection(i.from,i.to)}},t.prevBookmark=function(e){var t=e.state.sublimeBookmarks;if(t)for(;t.length;){t.unshift(t.pop());var n=t[t.length-1].find();if(n)return e.setSelection(n.from,n.to);t.pop()}},t.toggleBookmark=function(e){for(var t=e.listSelections(),n=e.state.sublimeBookmarks||(e.state.sublimeBookmarks=[]),i=0;i<t.length;i++){for(var r=t[i].from(),o=t[i].to(),a=t[i].empty()?e.findMarksAt(r):e.findMarks(r,o),s=0;s<a.length;s++)if(a[s].sublimeBookmark){a[s].clear();for(var l=0;l<n.length;l++)n[l]==a[s]&&n.splice(l--,1);break}s==a.length&&n.push(e.markText(r,o,{sublimeBookmark:!0,clearWhenEmpty:!1}))}},t.clearBookmarks=function(e){var t=e.state.sublimeBookmarks;if(t)for(var n=0;n<t.length;n++)t[n].clear();t.length=0},t.selectBookmarks=function(e){var t=e.state.sublimeBookmarks,n=[];if(t)for(var i=0;i<t.length;i++){var r=t[i].find();r?n.push({anchor:r.from,head:r.to}):t.splice(i--,0)}n.length&&e.setSelections(n,0)},t.smartBackspace=function(t){if(t.somethingSelected())return e.Pass;t.operation(function(){for(var i=t.listSelections(),r=t.getOption(\"indentUnit\"),o=i.length-1;o>=0;o--){var a=i[o].head,s=t.getRange({line:a.line,ch:0},a),l=e.countColumn(s,null,t.getOption(\"tabSize\")),u=t.findPosH(a,-1,\"char\",!1);if(s&&!/\\S/.test(s)&&l%r==0){var c=new n(a.line,e.findColumn(s,l-r,r));c.ch!=a.ch&&(u=c)}t.replaceRange(\"\",u,a,\"+delete\")}})},t.delLineRight=function(e){e.operation(function(){for(var t=e.listSelections(),i=t.length-1;i>=0;i--)e.replaceRange(\"\",t[i].anchor,n(t[i].to().line),\"+delete\");e.scrollIntoView()})},t.upcaseAtCursor=function(e){h(e,function(e){return e.toUpperCase()})},t.downcaseAtCursor=function(e){h(e,function(e){return e.toLowerCase()})},t.setSublimeMark=function(e){e.state.sublimeMark&&e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor())},t.selectToSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&e.setSelection(e.getCursor(),t)},t.deleteToSublimeMark=function(t){var n=t.state.sublimeMark&&t.state.sublimeMark.find();if(n){var i=t.getCursor(),r=n;if(e.cmpPos(i,r)>0){var o=r;r=i,i=o}t.state.sublimeKilled=t.getRange(i,r),t.replaceRange(\"\",i,r)}},t.swapWithSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&(e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor()),e.setCursor(t))},t.sublimeYank=function(e){null!=e.state.sublimeKilled&&e.replaceSelection(e.state.sublimeKilled,null,\"paste\")},t.showInCenter=function(e){var t=e.cursorCoords(null,\"local\");e.scrollTo(null,(t.top+t.bottom)/2-e.getScrollInfo().clientHeight/2)},t.findUnder=function(e){f(e,!0)},t.findUnderPrevious=function(e){f(e,!1)},t.findAllUnder=function(e){var t=d(e);if(t){for(var n=e.getSearchCursor(t.query),i=[],r=-1;n.findNext();)i.push({anchor:n.from(),head:n.to()}),n.from().line<=t.from.line&&n.from().ch<=t.from.ch&&r++;e.setSelections(i,r)}};var p=e.keyMap;p.macSublime={\"Cmd-Left\":\"goLineStartSmart\",\"Shift-Tab\":\"indentLess\",\"Shift-Ctrl-K\":\"deleteLine\",\"Alt-Q\":\"wrapLines\",\"Ctrl-Left\":\"goSubwordLeft\",\"Ctrl-Right\":\"goSubwordRight\",\"Ctrl-Alt-Up\":\"scrollLineUp\",\"Ctrl-Alt-Down\":\"scrollLineDown\",\"Cmd-L\":\"selectLine\",\"Shift-Cmd-L\":\"splitSelectionByLine\",Esc:\"singleSelectionTop\",\"Cmd-Enter\":\"insertLineAfter\",\"Shift-Cmd-Enter\":\"insertLineBefore\",\"Cmd-D\":\"selectNextOccurrence\",\"Shift-Cmd-Space\":\"selectScope\",\"Shift-Cmd-M\":\"selectBetweenBrackets\",\"Cmd-M\":\"goToBracket\",\"Cmd-Ctrl-Up\":\"swapLineUp\",\"Cmd-Ctrl-Down\":\"swapLineDown\",\"Cmd-/\":\"toggleCommentIndented\",\"Cmd-J\":\"joinLines\",\"Shift-Cmd-D\":\"duplicateLine\",F5:\"sortLines\",\"Cmd-F5\":\"sortLinesInsensitive\",F2:\"nextBookmark\",\"Shift-F2\":\"prevBookmark\",\"Cmd-F2\":\"toggleBookmark\",\"Shift-Cmd-F2\":\"clearBookmarks\",\"Alt-F2\":\"selectBookmarks\",Backspace:\"smartBackspace\",\"Cmd-K Cmd-D\":\"skipAndSelectNextOccurrence\",\"Cmd-K Cmd-K\":\"delLineRight\",\"Cmd-K Cmd-U\":\"upcaseAtCursor\",\"Cmd-K Cmd-L\":\"downcaseAtCursor\",\"Cmd-K Cmd-Space\":\"setSublimeMark\",\"Cmd-K Cmd-A\":\"selectToSublimeMark\",\"Cmd-K Cmd-W\":\"deleteToSublimeMark\",\"Cmd-K Cmd-X\":\"swapWithSublimeMark\",\"Cmd-K Cmd-Y\":\"sublimeYank\",\"Cmd-K Cmd-C\":\"showInCenter\",\"Cmd-K Cmd-G\":\"clearBookmarks\",\"Cmd-K Cmd-Backspace\":\"delLineLeft\",\"Cmd-K Cmd-1\":\"foldAll\",\"Cmd-K Cmd-0\":\"unfoldAll\",\"Cmd-K Cmd-J\":\"unfoldAll\",\"Ctrl-Shift-Up\":\"addCursorToPrevLine\",\"Ctrl-Shift-Down\":\"addCursorToNextLine\",\"Cmd-F3\":\"findUnder\",\"Shift-Cmd-F3\":\"findUnderPrevious\",\"Alt-F3\":\"findAllUnder\",\"Shift-Cmd-[\":\"fold\",\"Shift-Cmd-]\":\"unfold\",\"Cmd-I\":\"findIncremental\",\"Shift-Cmd-I\":\"findIncrementalReverse\",\"Cmd-H\":\"replace\",F3:\"findNext\",\"Shift-F3\":\"findPrev\",fallthrough:\"macDefault\"},e.normalizeKeyMap(p.macSublime),p.pcSublime={\"Shift-Tab\":\"indentLess\",\"Shift-Ctrl-K\":\"deleteLine\",\"Alt-Q\":\"wrapLines\",\"Ctrl-T\":\"transposeChars\",\"Alt-Left\":\"goSubwordLeft\",\"Alt-Right\":\"goSubwordRight\",\"Ctrl-Up\":\"scrollLineUp\",\"Ctrl-Down\":\"scrollLineDown\",\"Ctrl-L\":\"selectLine\",\"Shift-Ctrl-L\":\"splitSelectionByLine\",Esc:\"singleSelectionTop\",\"Ctrl-Enter\":\"insertLineAfter\",\"Shift-Ctrl-Enter\":\"insertLineBefore\",\"Ctrl-D\":\"selectNextOccurrence\",\"Shift-Ctrl-Space\":\"selectScope\",\"Shift-Ctrl-M\":\"selectBetweenBrackets\",\"Ctrl-M\":\"goToBracket\",\"Shift-Ctrl-Up\":\"swapLineUp\",\"Shift-Ctrl-Down\":\"swapLineDown\",\"Ctrl-/\":\"toggleCommentIndented\",\"Ctrl-J\":\"joinLines\",\"Shift-Ctrl-D\":\"duplicateLine\",F9:\"sortLines\",\"Ctrl-F9\":\"sortLinesInsensitive\",F2:\"nextBookmark\",\"Shift-F2\":\"prevBookmark\",\"Ctrl-F2\":\"toggleBookmark\",\"Shift-Ctrl-F2\":\"clearBookmarks\",\"Alt-F2\":\"selectBookmarks\",Backspace:\"smartBackspace\",\"Ctrl-K Ctrl-D\":\"skipAndSelectNextOccurrence\",\"Ctrl-K Ctrl-K\":\"delLineRight\",\"Ctrl-K Ctrl-U\":\"upcaseAtCursor\",\"Ctrl-K Ctrl-L\":\"downcaseAtCursor\",\"Ctrl-K Ctrl-Space\":\"setSublimeMark\",\"Ctrl-K Ctrl-A\":\"selectToSublimeMark\",\"Ctrl-K Ctrl-W\":\"deleteToSublimeMark\",\"Ctrl-K Ctrl-X\":\"swapWithSublimeMark\",\"Ctrl-K Ctrl-Y\":\"sublimeYank\",\"Ctrl-K Ctrl-C\":\"showInCenter\",\"Ctrl-K Ctrl-G\":\"clearBookmarks\",\"Ctrl-K Ctrl-Backspace\":\"delLineLeft\",\"Ctrl-K Ctrl-1\":\"foldAll\",\"Ctrl-K Ctrl-0\":\"unfoldAll\",\"Ctrl-K Ctrl-J\":\"unfoldAll\",\"Ctrl-Alt-Up\":\"addCursorToPrevLine\",\"Ctrl-Alt-Down\":\"addCursorToNextLine\",\"Ctrl-F3\":\"findUnder\",\"Shift-Ctrl-F3\":\"findUnderPrevious\",\"Alt-F3\":\"findAllUnder\",\"Shift-Ctrl-[\":\"fold\",\"Shift-Ctrl-]\":\"unfold\",\"Ctrl-I\":\"findIncremental\",\"Shift-Ctrl-I\":\"findIncrementalReverse\",\"Ctrl-H\":\"replace\",F3:\"findNext\",\"Shift-F3\":\"findPrev\",fallthrough:\"pcDefault\"},e.normalizeKeyMap(p.pcSublime);var g=p.default==p.macDefault;p.sublime=g?p.macSublime:p.pcSublime})(n(\"8U58\"),n(\"c+I8\"),n(\"vq+x\"))},\"7bL3\":function(e,t,n){var i=n(\"Icdr\");n(\"4V7L\"),n(\"8DFW\"),n(\"6HoR\");var r=n(\"nQkE\"),o=n(\"h6Uy\"),a=n(\"l4Op\");i.registerLayout(r),i.registerVisual(o),i.registerProcessor(a(\"themeRiver\"))},\"7t+N\":function(e,t,n){var i;\n/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\n */\n/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\n */\n!function(t,n){\"use strict\";\"object\"==typeof e&&\"object\"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return n(e)}:n(t)}(\"undefined\"!=typeof window?window:this,function(n,r){\"use strict\";var o=[],a=Object.getPrototypeOf,s=o.slice,l=o.flat?function(e){return o.flat.call(e)}:function(e){return o.concat.apply([],e)},u=o.push,c=o.indexOf,h={},d=h.toString,f=h.hasOwnProperty,p=f.toString,g=p.call(Object),m={},v=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType},y=function(e){return null!=e&&e===e.window},b=n.document,x={type:!0,src:!0,nonce:!0,noModule:!0};function _(e,t,n){var i,r,o=(n=n||b).createElement(\"script\");if(o.text=e,t)for(i in x)(r=t[i]||t.getAttribute&&t.getAttribute(i))&&o.setAttribute(i,r);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?h[d.call(e)]||\"object\":typeof e}var C=function(e,t){return new C.fn.init(e,t)};function S(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!v(e)&&!y(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&t>0&&t-1 in e)}C.fn=C.prototype={jquery:\"3.5.1\",constructor:C,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=C.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return C.each(this,e)},map:function(e){return this.pushStack(C.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(C.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:o.sort,splice:o.splice},C.extend=C.fn.extend=function(){var e,t,n,i,r,o,a=arguments[0]||{},s=1,l=arguments.length,u=!1;for(\"boolean\"==typeof a&&(u=a,a=arguments[s]||{},s++),\"object\"==typeof a||v(a)||(a={}),s===l&&(a=this,s--);s<l;s++)if(null!=(e=arguments[s]))for(t in e)i=e[t],\"__proto__\"!==t&&a!==i&&(u&&i&&(C.isPlainObject(i)||(r=Array.isArray(i)))?(n=a[t],o=r&&!Array.isArray(n)?[]:r||C.isPlainObject(n)?n:{},r=!1,a[t]=C.extend(u,o,i)):void 0!==i&&(a[t]=i));return a},C.extend({expando:\"jQuery\"+(\"3.5.1\"+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==d.call(e))&&(!(t=a(e))||\"function\"==typeof(n=f.call(t,\"constructor\")&&t.constructor)&&p.call(n)===g)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){_(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,i=0;if(S(e))for(n=e.length;i<n&&!1!==t.call(e[i],i,e[i]);i++);else for(i in e)if(!1===t.call(e[i],i,e[i]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(S(Object(e))?C.merge(n,\"string\"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:c.call(t,e,n)},merge:function(e,t){for(var n=+t.length,i=0,r=e.length;i<n;i++)e[r++]=t[i];return e.length=r,e},grep:function(e,t,n){for(var i=[],r=0,o=e.length,a=!n;r<o;r++)!t(e[r],r)!==a&&i.push(e[r]);return i},map:function(e,t,n){var i,r,o=0,a=[];if(S(e))for(i=e.length;o<i;o++)null!=(r=t(e[o],o,n))&&a.push(r);else for(o in e)null!=(r=t(e[o],o,n))&&a.push(r);return l(a)},guid:1,support:m}),\"function\"==typeof Symbol&&(C.fn[Symbol.iterator]=o[Symbol.iterator]),C.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){h[\"[object \"+t+\"]\"]=t.toLowerCase()});var k=\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\nfunction(e){var t,n,i,r,o,a,s,l,u,c,h,d,f,p,g,m,v,y,b,x=\"sizzle\"+1*new Date,_=e.document,w=0,C=0,S=le(),k=le(),T=le(),M=le(),D=function(e,t){return e===t&&(h=!0),0},A={}.hasOwnProperty,I=[],O=I.pop,E=I.push,L=I.push,P=I.slice,N=function(e,t){for(var n=0,i=e.length;n<i;n++)if(e[n]===t)return n;return-1},R=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",B=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",z=\"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\"+B+\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",F=\"\\\\[\"+B+\"*(\"+z+\")(?:\"+B+\"*([*^$|!~]?=)\"+B+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+z+\"))|)\"+B+\"*\\\\]\",$=\":(\"+z+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+F+\")*)|.*)\\\\)|)\",V=new RegExp(B+\"+\",\"g\"),j=new RegExp(\"^\"+B+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+B+\"+$\",\"g\"),H=new RegExp(\"^\"+B+\"*,\"+B+\"*\"),W=new RegExp(\"^\"+B+\"*([>+~]|\"+B+\")\"+B+\"*\"),q=new RegExp(B+\"|>\"),G=new RegExp($),U=new RegExp(\"^\"+z+\"$\"),Y={ID:new RegExp(\"^#(\"+z+\")\"),CLASS:new RegExp(\"^\\\\.(\"+z+\")\"),TAG:new RegExp(\"^(\"+z+\"|[*])\"),ATTR:new RegExp(\"^\"+F),PSEUDO:new RegExp(\"^\"+$),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+B+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+B+\"*(?:([+-]|)\"+B+\"*(\\\\d+)|))\"+B+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+B+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+B+\"*((?:-\\\\d)?\\\\d*)\"+B+\"*\\\\)|)(?=[^-]|$)\",\"i\")},X=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,Z=/^h\\d$/i,J=/^[^{]+\\{\\s*\\[native \\w/,Q=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+B+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ie=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,re=function(e,t){return t?\"\\0\"===e?\"�\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){d()},ae=xe(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{L.apply(I=P.call(_.childNodes),_.childNodes),I[_.childNodes.length].nodeType}catch(e){L={apply:I.length?function(e,t){E.apply(e,P.call(t))}:function(e,t){for(var n=e.length,i=0;e[n++]=t[i++];);e.length=n-1}}}function se(e,t,i,r){var o,s,u,c,h,p,v,y=t&&t.ownerDocument,_=t?t.nodeType:9;if(i=i||[],\"string\"!=typeof e||!e||1!==_&&9!==_&&11!==_)return i;if(!r&&(d(t),t=t||f,g)){if(11!==_&&(h=Q.exec(e)))if(o=h[1]){if(9===_){if(!(u=t.getElementById(o)))return i;if(u.id===o)return i.push(u),i}else if(y&&(u=y.getElementById(o))&&b(t,u)&&u.id===o)return i.push(u),i}else{if(h[2])return L.apply(i,t.getElementsByTagName(e)),i;if((o=h[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(i,t.getElementsByClassName(o)),i}if(n.qsa&&!M[e+\" \"]&&(!m||!m.test(e))&&(1!==_||\"object\"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===_&&(q.test(e)||W.test(e))){for((y=ee.test(e)&&ve(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(ie,re):t.setAttribute(\"id\",c=x)),s=(p=a(e)).length;s--;)p[s]=(c?\"#\"+c:\":scope\")+\" \"+be(p[s]);v=p.join(\",\")}try{return L.apply(i,y.querySelectorAll(v)),i}catch(t){M(e,!0)}finally{c===x&&t.removeAttribute(\"id\")}}}return l(e.replace(j,\"$1\"),t,i,r)}function le(){var e=[];return function t(n,r){return e.push(n+\" \")>i.cacheLength&&delete t[e.shift()],t[n+\" \"]=r}}function ue(e){return e[x]=!0,e}function ce(e){var t=f.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function he(e,t){for(var n=e.split(\"|\"),r=n.length;r--;)i.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,i=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function me(e){return ue(function(t){return t=+t,ue(function(n,i){for(var r,o=e([],n.length,t),a=o.length;a--;)n[r=o[a]]&&(n[r]=!(i[r]=n[r]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!X.test(t||n&&n.nodeName||\"HTML\")},d=se.setDocument=function(e){var t,r,a=e?e.ownerDocument||e:_;return a!=f&&9===a.nodeType&&a.documentElement?(p=(f=a).documentElement,g=!o(f),_!=f&&(r=f.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener(\"unload\",oe,!1):r.attachEvent&&r.attachEvent(\"onunload\",oe)),n.scope=ce(function(e){return p.appendChild(e).appendChild(f.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length}),n.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ce(function(e){return e.appendChild(f.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=J.test(f.getElementsByClassName),n.getById=ce(function(e){return p.appendChild(e).id=x,!f.getElementsByName||!f.getElementsByName(x).length}),n.getById?(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(i.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},i.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,i,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(r=t.getElementsByName(e),i=0;o=r[i++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),i.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[r++];)1===n.nodeType&&i.push(n);return i}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],m=[],(n.qsa=J.test(f.querySelectorAll))&&(ce(function(e){var t;p.appendChild(e).innerHTML=\"<a id='\"+x+\"'></a><select id='\"+x+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&m.push(\"[*^$]=\"+B+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||m.push(\"\\\\[\"+B+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+x+\"-]\").length||m.push(\"~=\"),(t=f.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||m.push(\"\\\\[\"+B+\"*name\"+B+\"*=\"+B+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||m.push(\":checked\"),e.querySelectorAll(\"a#\"+x+\"+*\").length||m.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),m.push(\"[\\\\r\\\\n\\\\f]\")}),ce(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=f.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&m.push(\"name\"+B+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&m.push(\":enabled\",\":disabled\"),p.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&m.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),m.push(\",.*:\")})),(n.matchesSelector=J.test(y=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ce(function(e){n.disconnectedMatch=y.call(e,\"*\"),y.call(e,\"[s!='']:x\"),v.push(\"!=\",$)}),m=m.length&&new RegExp(m.join(\"|\")),v=v.length&&new RegExp(v.join(\"|\")),t=J.test(p.compareDocumentPosition),b=t||J.test(p.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return h=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i||(1&(i=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===i?e==f||e.ownerDocument==_&&b(_,e)?-1:t==f||t.ownerDocument==_&&b(_,t)?1:c?N(c,e)-N(c,t):0:4&i?-1:1)}:function(e,t){if(e===t)return h=!0,0;var n,i=0,r=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!r||!o)return e==f?-1:t==f?1:r?-1:o?1:c?N(c,e)-N(c,t):0;if(r===o)return de(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[i]===s[i];)i++;return i?de(a[i],s[i]):a[i]==_?-1:s[i]==_?1:0},f):f},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(d(e),n.matchesSelector&&g&&!M[t+\" \"]&&(!v||!v.test(t))&&(!m||!m.test(t)))try{var i=y.call(e,t);if(i||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){M(t,!0)}return se(t,f,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=f&&d(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=f&&d(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(ie,re)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,i=[],r=0,o=0;if(h=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),h){for(;t=e[o++];)t===e[o]&&(r=i.push(o));for(;r--;)e.splice(i[r],1)}return c=null,e},r=se.getText=function(e){var t,n=\"\",i=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=r(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[i++];)n+=r(t);return n},(i=se.selectors={cacheLength:50,createPseudo:ue,match:Y,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&G.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=S[e+\" \"];return t||(t=new RegExp(\"(^|\"+B+\")\"+e+\"(\"+B+\"|$)\"))&&S(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(i){var r=se.attr(i,e);return null==r?\"!=\"===t:!t||(r+=\"\",\"=\"===t?r===n:\"!=\"===t?r!==n:\"^=\"===t?n&&0===r.indexOf(n):\"*=\"===t?n&&r.indexOf(n)>-1:\"$=\"===t?n&&r.slice(-n.length)===n:\"~=\"===t?(\" \"+r.replace(V,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(r===n||r.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,i,r){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===i&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var u,c,h,d,f,p,g=o!==a?\"nextSibling\":\"previousSibling\",m=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=g=\"only\"===e&&!p&&\"nextSibling\"}return!0}if(p=[a?m.firstChild:m.lastChild],a&&y){for(b=(f=(u=(c=(h=(d=m)[x]||(d[x]={}))[d.uniqueID]||(h[d.uniqueID]={}))[e]||[])[0]===w&&u[1])&&u[2],d=f&&m.childNodes[f];d=++f&&d&&d[g]||(b=f=0)||p.pop();)if(1===d.nodeType&&++b&&d===t){c[e]=[w,f,b];break}}else if(y&&(b=f=(u=(c=(h=(d=t)[x]||(d[x]={}))[d.uniqueID]||(h[d.uniqueID]={}))[e]||[])[0]===w&&u[1]),!1===b)for(;(d=++f&&d&&d[g]||(b=f=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&((c=(h=d[x]||(d[x]={}))[d.uniqueID]||(h[d.uniqueID]={}))[e]=[w,b]),d!==t)););return(b-=r)===i||b%i==0&&b/i>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return r[x]?r(t):r.length>1?(n=[e,e,\"\",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)e[i=N(e,o[a])]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ue(function(e){var t=[],n=[],i=s(e.replace(j,\"$1\"));return i[x]?ue(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return se(e,t).length>0}}),contains:ue(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||r(t)).indexOf(e)>-1}}),lang:ue(function(e){return U.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===p},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Z.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:me(function(){return[0]}),last:me(function(e,t){return[t-1]}),eq:me(function(e,t,n){return[n<0?n+t:n]}),even:me(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:me(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:me(function(e,t,n){for(var i=n<0?n+t:n>t?t:n;--i>=0;)e.push(i);return e}),gt:me(function(e,t,n){for(var i=n<0?n+t:n;++i<t;)e.push(i);return e})}}).pseudos.nth=i.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=pe(t);function ye(){}function be(e){for(var t=0,n=e.length,i=\"\";t<n;t++)i+=e[t].value;return i}function xe(e,t,n){var i=t.dir,r=t.next,o=r||i,a=n&&\"parentNode\"===o,s=C++;return t.first?function(t,n,r){for(;t=t[i];)if(1===t.nodeType||a)return e(t,n,r);return!1}:function(t,n,l){var u,c,h,d=[w,s];if(l){for(;t=t[i];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[i];)if(1===t.nodeType||a)if(c=(h=t[x]||(t[x]={}))[t.uniqueID]||(h[t.uniqueID]={}),r&&r===t.nodeName.toLowerCase())t=t[i]||t;else{if((u=c[o])&&u[0]===w&&u[1]===s)return d[2]=u[2];if(c[o]=d,d[2]=e(t,n,l))return!0}return!1}}function _e(e){return e.length>1?function(t,n,i){for(var r=e.length;r--;)if(!e[r](t,n,i))return!1;return!0}:e[0]}function we(e,t,n,i,r){for(var o,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(o=e[s])&&(n&&!n(o,i,r)||(a.push(o),u&&t.push(s)));return a}function Ce(e,t,n,i,r,o){return i&&!i[x]&&(i=Ce(i)),r&&!r[x]&&(r=Ce(r,o)),ue(function(o,a,s,l){var u,c,h,d=[],f=[],p=a.length,g=o||function(e,t,n){for(var i=0,r=t.length;i<r;i++)se(e,t[i],n);return n}(t||\"*\",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:we(g,d,e,s,l),v=n?r||(o?e:p||i)?[]:a:m;if(n&&n(m,v,s,l),i)for(u=we(v,f),i(u,[],s,l),c=u.length;c--;)(h=u[c])&&(v[f[c]]=!(m[f[c]]=h));if(o){if(r||e){if(r){for(u=[],c=v.length;c--;)(h=v[c])&&u.push(m[c]=h);r(null,v=[],u,l)}for(c=v.length;c--;)(h=v[c])&&(u=r?N(o,h):d[c])>-1&&(o[u]=!(a[u]=h))}}else v=we(v===a?v.splice(p,v.length):v),r?r(null,a,v,l):L.apply(a,v)})}function Se(e){for(var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[\" \"],l=a?1:0,c=xe(function(e){return e===t},s,!0),h=xe(function(e){return N(t,e)>-1},s,!0),d=[function(e,n,i){var r=!a&&(i||n!==u)||((t=n).nodeType?c(e,n,i):h(e,n,i));return t=null,r}];l<o;l++)if(n=i.relative[e[l].type])d=[xe(_e(d),n)];else{if((n=i.filter[e[l].type].apply(null,e[l].matches))[x]){for(r=++l;r<o&&!i.relative[e[r].type];r++);return Ce(l>1&&_e(d),l>1&&be(e.slice(0,l-1).concat({value:\" \"===e[l-2].type?\"*\":\"\"})).replace(j,\"$1\"),n,l<r&&Se(e.slice(l,r)),r<o&&Se(e=e.slice(r)),r<o&&be(e))}d.push(n)}return _e(d)}return ye.prototype=i.filters=i.pseudos,i.setFilters=new ye,a=se.tokenize=function(e,t){var n,r,o,a,s,l,u,c=k[e+\" \"];if(c)return t?0:c.slice(0);for(s=e,l=[],u=i.preFilter;s;){for(a in n&&!(r=H.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),n=!1,(r=W.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(j,\" \")}),s=s.slice(n.length)),i.filter)!(r=Y[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):k(e,l).slice(0)},s=se.compile=function(e,t){var n,r=[],o=[],s=T[e+\" \"];if(!s){for(t||(t=a(e)),n=t.length;n--;)(s=Se(t[n]))[x]?r.push(s):o.push(s);(s=T(e,function(e,t){var n=t.length>0,r=e.length>0,o=function(o,a,s,l,c){var h,p,m,v=0,y=\"0\",b=o&&[],x=[],_=u,C=o||r&&i.find.TAG(\"*\",c),S=w+=null==_?1:Math.random()||.1,k=C.length;for(c&&(u=a==f||a||c);y!==k&&null!=(h=C[y]);y++){if(r&&h){for(p=0,a||h.ownerDocument==f||(d(h),s=!g);m=e[p++];)if(m(h,a||f,s)){l.push(h);break}c&&(w=S)}n&&((h=!m&&h)&&v--,o&&b.push(h))}if(v+=y,n&&y!==v){for(p=0;m=t[p++];)m(b,x,a,s);if(o){if(v>0)for(;y--;)b[y]||x[y]||(x[y]=O.call(l));x=we(x)}L.apply(l,x),c&&!o&&x.length>0&&v+t.length>1&&se.uniqueSort(l)}return c&&(w=S,u=_),b};return n?ue(o):o}(o,r))).selector=e}return s},l=se.select=function(e,t,n,r){var o,l,u,c,h,d=\"function\"==typeof e&&e,f=!r&&a(e=d.selector||e);if(n=n||[],1===f.length){if((l=f[0]=f[0].slice(0)).length>2&&\"ID\"===(u=l[0]).type&&9===t.nodeType&&g&&i.relative[l[1].type]){if(!(t=(i.find.ID(u.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(o=Y.needsContext.test(e)?0:l.length;o--&&(u=l[o],!i.relative[c=u.type]);)if((h=i.find[c])&&(r=h(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(o,1),!(e=r.length&&be(l)))return L.apply(n,r),n;break}}return(d||s(e,f))(r,t,!g,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=x.split(\"\").sort(D).join(\"\")===x,n.detectDuplicates=!!h,d(),n.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(f.createElement(\"fieldset\"))}),ce(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||he(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes&&ce(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||he(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||he(R,function(e,t,n){var i;if(!n)return!0===e[t]?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),se}(n);C.find=k,C.expr=k.selectors,C.expr[\":\"]=C.expr.pseudos,C.uniqueSort=C.unique=k.uniqueSort,C.text=k.getText,C.isXMLDoc=k.isXML,C.contains=k.contains,C.escapeSelector=k.escape;var T=function(e,t,n){for(var i=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&C(e).is(n))break;i.push(e)}return i},M=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=C.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var I=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function O(e,t,n){return v(t)?C.grep(e,function(e,i){return!!t.call(e,i,e)!==n}):t.nodeType?C.grep(e,function(e){return e===t!==n}):\"string\"!=typeof t?C.grep(e,function(e){return c.call(t,e)>-1!==n}):C.filter(t,e,n)}C.filter=function(e,t,n){var i=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===i.nodeType?C.find.matchesSelector(i,e)?[i]:[]:C.find.matches(e,C.grep(t,function(e){return 1===e.nodeType}))},C.fn.extend({find:function(e){var t,n,i=this.length,r=this;if(\"string\"!=typeof e)return this.pushStack(C(e).filter(function(){for(t=0;t<i;t++)if(C.contains(r[t],this))return!0}));for(n=this.pushStack([]),t=0;t<i;t++)C.find(e,r[t],n);return i>1?C.uniqueSort(n):n},filter:function(e){return this.pushStack(O(this,e||[],!1))},not:function(e){return this.pushStack(O(this,e||[],!0))},is:function(e){return!!O(this,\"string\"==typeof e&&D.test(e)?C(e):e||[],!1).length}});var E,L=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(C.fn.init=function(e,t,n){var i,r;if(!e)return this;if(n=n||E,\"string\"==typeof e){if(!(i=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:b,!0)),I.test(i[1])&&C.isPlainObject(t))for(i in t)v(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(r=b.getElementById(i[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(C):C.makeArray(e,this)}).prototype=C.fn,E=C(b);var P=/^(?:parents|prev(?:Until|All))/,N={children:!0,contents:!0,next:!0,prev:!0};function R(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t=C(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(C.contains(this,t[e]))return!0})},closest:function(e,t){var n,i=0,r=this.length,o=[],a=\"string\"!=typeof e&&C(e);if(!D.test(e))for(;i<r;i++)for(n=this[i];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&C.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?C.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?c.call(C(e),this[0]):c.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),C.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,\"parentNode\")},parentsUntil:function(e,t,n){return T(e,\"parentNode\",n)},next:function(e){return R(e,\"nextSibling\")},prev:function(e){return R(e,\"previousSibling\")},nextAll:function(e){return T(e,\"nextSibling\")},prevAll:function(e){return T(e,\"previousSibling\")},nextUntil:function(e,t,n){return T(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return T(e,\"previousSibling\",n)},siblings:function(e){return M((e.parentNode||{}).firstChild,e)},children:function(e){return M(e.firstChild)},contents:function(e){return null!=e.contentDocument&&a(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),C.merge([],e.childNodes))}},function(e,t){C.fn[e]=function(n,i){var r=C.map(this,t,n);return\"Until\"!==e.slice(-5)&&(i=n),i&&\"string\"==typeof i&&(r=C.filter(i,r)),this.length>1&&(N[e]||C.uniqueSort(r),P.test(e)&&r.reverse()),this.pushStack(r)}});var B=/[^\\x20\\t\\r\\n\\f]+/g;function z(e){return e}function F(e){throw e}function $(e,t,n,i){var r;try{e&&v(r=e.promise)?r.call(e).done(t).fail(n):e&&v(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(i))}catch(e){n.apply(void 0,[e])}}C.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return C.each(e.match(B)||[],function(e,n){t[n]=!0}),t}(e):C.extend({},e);var t,n,i,r,o=[],a=[],s=-1,l=function(){for(r=r||e.once,i=t=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:\"\")},u={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){C.each(n,function(n,i){v(i)?e.unique&&u.has(i)||o.push(i):i&&i.length&&\"string\"!==w(i)&&t(i)})}(arguments),n&&!t&&l()),this},remove:function(){return C.each(arguments,function(e,t){for(var n;(n=C.inArray(t,o,n))>-1;)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?C.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return r=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},C.extend({Deferred:function(e){var t=[[\"notify\",\"progress\",C.Callbacks(\"memory\"),C.Callbacks(\"memory\"),2],[\"resolve\",\"done\",C.Callbacks(\"once memory\"),C.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",C.Callbacks(\"once memory\"),C.Callbacks(\"once memory\"),1,\"rejected\"]],i=\"pending\",r={state:function(){return i},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return r.then(null,e)},pipe:function(){var e=arguments;return C.Deferred(function(n){C.each(t,function(t,i){var r=v(e[i[4]])&&e[i[4]];o[i[1]](function(){var e=r&&r.apply(this,arguments);e&&v(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+\"With\"](this,r?[e]:arguments)})}),e=null}).promise()},then:function(e,i,r){var o=0;function a(e,t,i,r){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e<o)){if((n=i.apply(s,l))===t.promise())throw new TypeError(\"Thenable self-resolution\");u=n&&(\"object\"==typeof n||\"function\"==typeof n)&&n.then,v(u)?r?u.call(n,a(o,t,z,r),a(o,t,F,r)):(o++,u.call(n,a(o,t,z,r),a(o,t,F,r),a(o,t,z,t.notifyWith))):(i!==z&&(s=void 0,l=[n]),(r||t.resolveWith)(s,l))}},c=r?u:function(){try{u()}catch(n){C.Deferred.exceptionHook&&C.Deferred.exceptionHook(n,c.stackTrace),e+1>=o&&(i!==F&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(C.Deferred.getStackHook&&(c.stackTrace=C.Deferred.getStackHook()),n.setTimeout(c))}}return C.Deferred(function(n){t[0][3].add(a(0,n,v(r)?r:z,n.notifyWith)),t[1][3].add(a(0,n,v(e)?e:z)),t[2][3].add(a(0,n,v(i)?i:F))}).promise()},promise:function(e){return null!=e?C.extend(e,r):r}},o={};return C.each(t,function(e,n){var a=n[2],s=n[5];r[n[1]]=a.add,s&&a.add(function(){i=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+\"With\"](this===o?void 0:this,arguments),this},o[n[0]+\"With\"]=a.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,i=Array(n),r=s.call(arguments),o=C.Deferred(),a=function(e){return function(n){i[e]=this,r[e]=arguments.length>1?s.call(arguments):n,--t||o.resolveWith(i,r)}};if(t<=1&&($(e,o.done(a(n)).resolve,o.reject,!t),\"pending\"===o.state()||v(r[n]&&r[n].then)))return o.then();for(;n--;)$(r[n],a(n),o.reject);return o.promise()}});var V=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&V.test(e.name)&&n.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},C.readyException=function(e){n.setTimeout(function(){throw e})};var j=C.Deferred();function H(){b.removeEventListener(\"DOMContentLoaded\",H),n.removeEventListener(\"load\",H),C.ready()}C.fn.ready=function(e){return j.then(e).catch(function(e){C.readyException(e)}),this},C.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==e&&--C.readyWait>0||j.resolveWith(b,[C]))}}),C.ready.then=j.then,\"complete\"===b.readyState||\"loading\"!==b.readyState&&!b.documentElement.doScroll?n.setTimeout(C.ready):(b.addEventListener(\"DOMContentLoaded\",H),n.addEventListener(\"load\",H));var W=function(e,t,n,i,r,o,a){var s=0,l=e.length,u=null==n;if(\"object\"===w(n))for(s in r=!0,n)W(e,t,s,n[s],!0,o,a);else if(void 0!==i&&(r=!0,v(i)||(a=!0),u&&(a?(t.call(e,i),t=null):(u=t,t=function(e,t,n){return u.call(C(e),n)})),t))for(;s<l;s++)t(e[s],n,a?i:i.call(e[s],s,t(e[s],n)));return r?e:u?t.call(e):l?t(e[0],n):o},q=/^-ms-/,G=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function Y(e){return e.replace(q,\"ms-\").replace(G,U)}var X=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function K(){this.expando=C.expando+K.uid++}K.uid=1,K.prototype={cache:function(e){var t=e[this.expando];return t||(t={},X(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var i,r=this.cache(e);if(\"string\"==typeof t)r[Y(t)]=n;else for(i in t)r[Y(i)]=t[i];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][Y(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,i=e[this.expando];if(void 0!==i){if(void 0!==t){n=(t=Array.isArray(t)?t.map(Y):(t=Y(t))in i?[t]:t.match(B)||[]).length;for(;n--;)delete i[t[n]]}(void 0===t||C.isEmptyObject(i))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!C.isEmptyObject(t)}};var Z=new K,J=new K,Q=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,ee=/[A-Z]/g;function te(e,t,n){var i;if(void 0===n&&1===e.nodeType)if(i=\"data-\"+t.replace(ee,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(i))){try{n=function(e){return\"true\"===e||\"false\"!==e&&(\"null\"===e?null:e===+e+\"\"?+e:Q.test(e)?JSON.parse(e):e)}(n)}catch(e){}J.set(e,t,n)}else n=void 0;return n}C.extend({hasData:function(e){return J.hasData(e)||Z.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Z.access(e,t,n)},_removeData:function(e,t){Z.remove(e,t)}}),C.fn.extend({data:function(e,t){var n,i,r,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(r=J.get(o),1===o.nodeType&&!Z.get(o,\"hasDataAttrs\"))){for(n=a.length;n--;)a[n]&&0===(i=a[n].name).indexOf(\"data-\")&&(i=Y(i.slice(5)),te(o,i,r[i]));Z.set(o,\"hasDataAttrs\",!0)}return r}return\"object\"==typeof e?this.each(function(){J.set(this,e)}):W(this,function(t){var n;if(o&&void 0===t)return void 0!==(n=J.get(o,e))?n:void 0!==(n=te(o,e))?n:void 0;this.each(function(){J.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),C.extend({queue:function(e,t,n){var i;if(e)return t=(t||\"fx\")+\"queue\",i=Z.get(e,t),n&&(!i||Array.isArray(n)?i=Z.access(e,t,C.makeArray(n)):i.push(n)),i||[]},dequeue:function(e,t){t=t||\"fx\";var n=C.queue(e,t),i=n.length,r=n.shift(),o=C._queueHooks(e,t);\"inprogress\"===r&&(r=n.shift(),i--),r&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,r.call(e,function(){C.dequeue(e,t)},o)),!i&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Z.get(e,n)||Z.access(e,n,{empty:C.Callbacks(\"once memory\").add(function(){Z.remove(e,[t+\"queue\",n])})})}}),C.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length<n?C.queue(this[0],e):void 0===t?this:this.each(function(){var n=C.queue(this,e,t);C._queueHooks(this,e),\"fx\"===e&&\"inprogress\"!==n[0]&&C.dequeue(this,e)})},dequeue:function(e){return this.each(function(){C.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,i=1,r=C.Deferred(),o=this,a=this.length,s=function(){--i||r.resolveWith(o,[o])};for(\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";a--;)(n=Z.get(o[a],e+\"queueHooks\"))&&n.empty&&(i++,n.empty.add(s));return s(),r.promise(t)}});var ne=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,ie=new RegExp(\"^(?:([+-])=|)(\"+ne+\")([a-z%]*)$\",\"i\"),re=[\"Top\",\"Right\",\"Bottom\",\"Left\"],oe=b.documentElement,ae=function(e){return C.contains(e.ownerDocument,e)},se={composed:!0};oe.getRootNode&&(ae=function(e){return C.contains(e.ownerDocument,e)||e.getRootNode(se)===e.ownerDocument});var le=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&ae(e)&&\"none\"===C.css(e,\"display\")};function ue(e,t,n,i){var r,o,a=20,s=i?function(){return i.cur()}:function(){return C.css(e,t,\"\")},l=s(),u=n&&n[3]||(C.cssNumber[t]?\"\":\"px\"),c=e.nodeType&&(C.cssNumber[t]||\"px\"!==u&&+l)&&ie.exec(C.css(e,t));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;a--;)C.style(e,t,c+u),(1-o)*(1-(o=s()/l||.5))<=0&&(a=0),c/=o;c*=2,C.style(e,t,c+u),n=n||[]}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],i&&(i.unit=u,i.start=c,i.end=r)),r}var ce={};function he(e){var t,n=e.ownerDocument,i=e.nodeName,r=ce[i];return r||(t=n.body.appendChild(n.createElement(i)),r=C.css(t,\"display\"),t.parentNode.removeChild(t),\"none\"===r&&(r=\"block\"),ce[i]=r,r)}function de(e,t){for(var n,i,r=[],o=0,a=e.length;o<a;o++)(i=e[o]).style&&(n=i.style.display,t?(\"none\"===n&&(r[o]=Z.get(i,\"display\")||null,r[o]||(i.style.display=\"\")),\"\"===i.style.display&&le(i)&&(r[o]=he(i))):\"none\"!==n&&(r[o]=\"none\",Z.set(i,\"display\",n)));for(o=0;o<a;o++)null!=r[o]&&(e[o].style.display=r[o]);return e}C.fn.extend({show:function(){return de(this,!0)},hide:function(){return de(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){le(this)?C(this).show():C(this).hide()})}});var fe,pe,ge=/^(?:checkbox|radio)$/i,me=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i,ve=/^$|^module$|\\/(?:java|ecma)script/i;fe=b.createDocumentFragment().appendChild(b.createElement(\"div\")),(pe=b.createElement(\"input\")).setAttribute(\"type\",\"radio\"),pe.setAttribute(\"checked\",\"checked\"),pe.setAttribute(\"name\",\"t\"),fe.appendChild(pe),m.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\"<textarea>x</textarea>\",m.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue,fe.innerHTML=\"<option></option>\",m.option=!!fe.lastChild;var ye={thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function be(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?C.merge([e],n):n}function xe(e,t){for(var n=0,i=e.length;n<i;n++)Z.set(e[n],\"globalEval\",!t||Z.get(t[n],\"globalEval\"))}ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td,m.option||(ye.optgroup=ye.option=[1,\"<select multiple='multiple'>\",\"</select>\"]);var _e=/<|&#?\\w+;/;function we(e,t,n,i,r){for(var o,a,s,l,u,c,h=t.createDocumentFragment(),d=[],f=0,p=e.length;f<p;f++)if((o=e[f])||0===o)if(\"object\"===w(o))C.merge(d,o.nodeType?[o]:o);else if(_e.test(o)){for(a=a||h.appendChild(t.createElement(\"div\")),s=(me.exec(o)||[\"\",\"\"])[1].toLowerCase(),l=ye[s]||ye._default,a.innerHTML=l[1]+C.htmlPrefilter(o)+l[2],c=l[0];c--;)a=a.lastChild;C.merge(d,a.childNodes),(a=h.firstChild).textContent=\"\"}else d.push(t.createTextNode(o));for(h.textContent=\"\",f=0;o=d[f++];)if(i&&C.inArray(o,i)>-1)r&&r.push(o);else if(u=ae(o),a=be(h.appendChild(o),\"script\"),u&&xe(a),n)for(c=0;o=a[c++];)ve.test(o.type||\"\")&&n.push(o);return h}var Ce=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ke=/^([^.]*)(?:\\.(.+)|)/;function Te(){return!0}function Me(){return!1}function De(e,t){return e===function(){try{return b.activeElement}catch(e){}}()==(\"focus\"===t)}function Ae(e,t,n,i,r,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(i=i||n,n=void 0),t)Ae(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&(\"string\"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),!1===r)r=Me;else if(!r)return e;return 1===o&&(a=r,(r=function(e){return C().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=C.guid++)),e.each(function(){C.event.add(this,t,r,i,n)})}function Ie(e,t,n){n?(Z.set(e,t,!1),C.event.add(e,t,{namespace:!1,handler:function(e){var i,r,o=Z.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(C.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=s.call(arguments),Z.set(this,t,o),i=n(this,t),this[t](),o!==(r=Z.get(this,t))||i?Z.set(this,t,!1):r={},o!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else o.length&&(Z.set(this,t,{value:C.event.trigger(C.extend(o[0],C.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Z.get(e,t)&&C.event.add(e,t,Te)}C.event={global:{},add:function(e,t,n,i,r){var o,a,s,l,u,c,h,d,f,p,g,m=Z.get(e);if(X(e))for(n.handler&&(n=(o=n).handler,r=o.selector),r&&C.find.matchesSelector(oe,r),n.guid||(n.guid=C.guid++),(l=m.events)||(l=m.events=Object.create(null)),(a=m.handle)||(a=m.handle=function(t){return void 0!==C&&C.event.triggered!==t.type?C.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||\"\").match(B)||[\"\"]).length;u--;)f=g=(s=ke.exec(t[u])||[])[1],p=(s[2]||\"\").split(\".\").sort(),f&&(h=C.event.special[f]||{},f=(r?h.delegateType:h.bindType)||f,h=C.event.special[f]||{},c=C.extend({type:f,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&C.expr.match.needsContext.test(r),namespace:p.join(\".\")},o),(d=l[f])||((d=l[f]=[]).delegateCount=0,h.setup&&!1!==h.setup.call(e,i,p,a)||e.addEventListener&&e.addEventListener(f,a)),h.add&&(h.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,c):d.push(c),C.event.global[f]=!0)},remove:function(e,t,n,i,r){var o,a,s,l,u,c,h,d,f,p,g,m=Z.hasData(e)&&Z.get(e);if(m&&(l=m.events)){for(u=(t=(t||\"\").match(B)||[\"\"]).length;u--;)if(f=g=(s=ke.exec(t[u])||[])[1],p=(s[2]||\"\").split(\".\").sort(),f){for(h=C.event.special[f]||{},d=l[f=(i?h.delegateType:h.bindType)||f]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+p.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=d.length;o--;)c=d[o],!r&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||i&&i!==c.selector&&(\"**\"!==i||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,h.remove&&h.remove.call(e,c));a&&!d.length&&(h.teardown&&!1!==h.teardown.call(e,p,m.handle)||C.removeEvent(e,f,m.handle),delete l[f])}else for(f in l)C.event.remove(e,f+t[u],n,i,!0);C.isEmptyObject(l)&&Z.remove(e,\"handle events\")}},dispatch:function(e){var t,n,i,r,o,a,s=new Array(arguments.length),l=C.event.fix(e),u=(Z.get(this,\"events\")||Object.create(null))[l.type]||[],c=C.event.special[l.type]||{};for(s[0]=l,t=1;t<arguments.length;t++)s[t]=arguments[t];if(l.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,l)){for(a=C.event.handlers.call(this,l,u),t=0;(r=a[t++])&&!l.isPropagationStopped();)for(l.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!l.isImmediatePropagationStopped();)l.rnamespace&&!1!==o.namespace&&!l.rnamespace.test(o.namespace)||(l.handleObj=o,l.data=o.data,void 0!==(i=((C.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,s))&&!1===(l.result=i)&&(l.preventDefault(),l.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,l),l.result}},handlers:function(e,t){var n,i,r,o,a,s=[],l=t.delegateCount,u=e.target;if(l&&u.nodeType&&!(\"click\"===e.type&&e.button>=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(\"click\"!==e.type||!0!==u.disabled)){for(o=[],a={},n=0;n<l;n++)void 0===a[r=(i=t[n]).selector+\" \"]&&(a[r]=i.needsContext?C(r,this).index(u)>-1:C.find(r,this,null,[u]).length),a[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return u=this,l<t.length&&s.push({elem:u,handlers:t.slice(l)}),s},addProp:function(e,t){Object.defineProperty(C.Event.prototype,e,{enumerable:!0,configurable:!0,get:v(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[C.expando]?e:new C.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return ge.test(t.type)&&t.click&&A(t,\"input\")&&Ie(t,\"click\",Te),!1},trigger:function(e){var t=this||e;return ge.test(t.type)&&t.click&&A(t,\"input\")&&Ie(t,\"click\"),!0},_default:function(e){var t=e.target;return ge.test(t.type)&&t.click&&A(t,\"input\")&&Z.get(t,\"click\")||A(t,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},C.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},C.Event=function(e,t){if(!(this instanceof C.Event))return new C.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Te:Me,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&C.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[C.expando]=!0},C.Event.prototype={constructor:C.Event,isDefaultPrevented:Me,isPropagationStopped:Me,isImmediatePropagationStopped:Me,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Te,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Te,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Te,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},C.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Ce.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Se.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},C.event.addProp),C.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){C.event.special[e]={setup:function(){return Ie(this,e,De),!1},trigger:function(){return Ie(this,e),!0},delegateType:t}}),C.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,t){C.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,i=e.relatedTarget,r=e.handleObj;return i&&(i===this||C.contains(this,i))||(e.type=r.origType,n=r.handler.apply(this,arguments),e.type=t),n}}}),C.fn.extend({on:function(e,t,n,i){return Ae(this,e,t,n,i)},one:function(e,t,n,i){return Ae(this,e,t,n,i,1)},off:function(e,t,n){var i,r;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,C(e.delegateTarget).off(i.namespace?i.origType+\".\"+i.namespace:i.origType,i.selector,i.handler),this;if(\"object\"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=Me),this.each(function(){C.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Ee=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Le=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function Pe(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&C(e).children(\"tbody\")[0]||e}function Ne(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Re(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Be(e,t){var n,i,r,o,a,s;if(1===t.nodeType){if(Z.hasData(e)&&(s=Z.get(e).events))for(r in Z.remove(t,\"handle events\"),s)for(n=0,i=s[r].length;n<i;n++)C.event.add(t,r,s[r][n]);J.hasData(e)&&(o=J.access(e),a=C.extend({},o),J.set(t,a))}}function ze(e,t,n,i){t=l(t);var r,o,a,s,u,c,h=0,d=e.length,f=d-1,p=t[0],g=v(p);if(g||d>1&&\"string\"==typeof p&&!m.checkClone&&Ee.test(p))return e.each(function(r){var o=e.eq(r);g&&(t[0]=p.call(this,r,o.html())),ze(o,t,n,i)});if(d&&(o=(r=we(t,e[0].ownerDocument,!1,e,i)).firstChild,1===r.childNodes.length&&(r=o),o||i)){for(s=(a=C.map(be(r,\"script\"),Ne)).length;h<d;h++)u=r,h!==f&&(u=C.clone(u,!0,!0),s&&C.merge(a,be(u,\"script\"))),n.call(e[h],u,h);if(s)for(c=a[a.length-1].ownerDocument,C.map(a,Re),h=0;h<s;h++)u=a[h],ve.test(u.type||\"\")&&!Z.access(u,\"globalEval\")&&C.contains(c,u)&&(u.src&&\"module\"!==(u.type||\"\").toLowerCase()?C._evalUrl&&!u.noModule&&C._evalUrl(u.src,{nonce:u.nonce||u.getAttribute(\"nonce\")},c):_(u.textContent.replace(Le,\"\"),u,c))}return e}function Fe(e,t,n){for(var i,r=t?C.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||C.cleanData(be(i)),i.parentNode&&(n&&ae(i)&&xe(be(i,\"script\")),i.parentNode.removeChild(i));return e}C.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var i,r,o,a,s,l,u,c=e.cloneNode(!0),h=ae(e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(a=be(c),i=0,r=(o=be(e)).length;i<r;i++)s=o[i],l=a[i],void 0,\"input\"===(u=l.nodeName.toLowerCase())&&ge.test(s.type)?l.checked=s.checked:\"input\"!==u&&\"textarea\"!==u||(l.defaultValue=s.defaultValue);if(t)if(n)for(o=o||be(e),a=a||be(c),i=0,r=o.length;i<r;i++)Be(o[i],a[i]);else Be(e,c);return(a=be(c,\"script\")).length>0&&xe(a,!h&&be(e,\"script\")),c},cleanData:function(e){for(var t,n,i,r=C.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[Z.expando]){if(t.events)for(i in t.events)r[i]?C.event.remove(n,i):C.removeEvent(n,i,t.handle);n[Z.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),C.fn.extend({detach:function(e){return Fe(this,e,!0)},remove:function(e){return Fe(this,e)},text:function(e){return W(this,function(e){return void 0===e?C.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return ze(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Pe(this,e).appendChild(e)})},prepend:function(){return ze(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Pe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return ze(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return ze(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(C.cleanData(be(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return W(this,function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Oe.test(e)&&!ye[(me.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n<i;n++)1===(t=this[n]||{}).nodeType&&(C.cleanData(be(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return ze(this,arguments,function(t){var n=this.parentNode;C.inArray(this,e)<0&&(C.cleanData(be(this)),n&&n.replaceChild(t,this))},e)}}),C.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){C.fn[e]=function(e){for(var n,i=[],r=C(e),o=r.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),C(r[a])[t](n),u.apply(i,n.get());return this.pushStack(i)}});var $e=new RegExp(\"^(\"+ne+\")(?!px)[a-z%]+$\",\"i\"),Ve=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},je=function(e,t,n){var i,r,o={};for(r in t)o[r]=e.style[r],e.style[r]=t[r];for(r in i=n.call(e),t)e.style[r]=o[r];return i},He=new RegExp(re.join(\"|\"),\"i\");function We(e,t,n){var i,r,o,a,s=e.style;return(n=n||Ve(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||ae(e)||(a=C.style(e,t)),!m.pixelBoxStyles()&&$e.test(a)&&He.test(t)&&(i=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=i,s.minWidth=r,s.maxWidth=o)),void 0!==a?a+\"\":a}function qe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(c){u.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",c.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",oe.appendChild(u).appendChild(c);var e=n.getComputedStyle(c);i=\"1%\"!==e.top,l=12===t(e.marginLeft),c.style.right=\"60%\",a=36===t(e.right),r=36===t(e.width),c.style.position=\"absolute\",o=12===t(c.offsetWidth/3),oe.removeChild(u),c=null}}function t(e){return Math.round(parseFloat(e))}var i,r,o,a,s,l,u=b.createElement(\"div\"),c=b.createElement(\"div\");c.style&&(c.style.backgroundClip=\"content-box\",c.cloneNode(!0).style.backgroundClip=\"\",m.clearCloneStyle=\"content-box\"===c.style.backgroundClip,C.extend(m,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),a},pixelPosition:function(){return e(),i},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),o},reliableTrDimensions:function(){var e,t,i,r;return null==s&&(e=b.createElement(\"table\"),t=b.createElement(\"tr\"),i=b.createElement(\"div\"),e.style.cssText=\"position:absolute;left:-11111px\",t.style.height=\"1px\",i.style.height=\"9px\",oe.appendChild(e).appendChild(t).appendChild(i),r=n.getComputedStyle(t),s=parseInt(r.height)>3,oe.removeChild(e)),s}}))}();var Ge=[\"Webkit\",\"Moz\",\"ms\"],Ue=b.createElement(\"div\").style,Ye={};function Xe(e){var t=C.cssProps[e]||Ye[e];return t||(e in Ue?e:Ye[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;n--;)if((e=Ge[n]+t)in Ue)return e}(e)||e)}var Ke=/^(none|table(?!-c[ea]).+)/,Ze=/^--/,Je={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Qe={letterSpacing:\"0\",fontWeight:\"400\"};function et(e,t,n){var i=ie.exec(t);return i?Math.max(0,i[2]-(n||0))+(i[3]||\"px\"):t}function tt(e,t,n,i,r,o){var a=\"width\"===t?1:0,s=0,l=0;if(n===(i?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(l+=C.css(e,n+re[a],!0,r)),i?(\"content\"===n&&(l-=C.css(e,\"padding\"+re[a],!0,r)),\"margin\"!==n&&(l-=C.css(e,\"border\"+re[a]+\"Width\",!0,r))):(l+=C.css(e,\"padding\"+re[a],!0,r),\"padding\"!==n?l+=C.css(e,\"border\"+re[a]+\"Width\",!0,r):s+=C.css(e,\"border\"+re[a]+\"Width\",!0,r));return!i&&o>=0&&(l+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function nt(e,t,n){var i=Ve(e),r=(!m.boxSizingReliable()||n)&&\"border-box\"===C.css(e,\"boxSizing\",!1,i),o=r,a=We(e,t,i),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a=\"auto\"}return(!m.boxSizingReliable()&&r||!m.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===C.css(e,\"display\",!1,i))&&e.getClientRects().length&&(r=\"border-box\"===C.css(e,\"boxSizing\",!1,i),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+tt(e,t,n||(r?\"border\":\"content\"),o,i,a)+\"px\"}function it(e,t,n,i,r){return new it.prototype.init(e,t,n,i,r)}C.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,a,s=Y(t),l=Ze.test(t),u=e.style;if(l||(t=Xe(s)),a=C.cssHooks[t]||C.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(r=a.get(e,!1,i))?r:u[t];\"string\"===(o=typeof n)&&(r=ie.exec(n))&&r[1]&&(n=ue(e,t,r),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||l||(n+=r&&r[3]||(C.cssNumber[s]?\"\":\"px\")),m.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(u[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,i))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,i){var r,o,a,s=Y(t);return Ze.test(t)||(t=Xe(s)),(a=C.cssHooks[t]||C.cssHooks[s])&&\"get\"in a&&(r=a.get(e,!0,n)),void 0===r&&(r=We(e,t,i)),\"normal\"===r&&t in Qe&&(r=Qe[t]),\"\"===n||n?(o=parseFloat(r),!0===n||isFinite(o)?o||0:r):r}}),C.each([\"height\",\"width\"],function(e,t){C.cssHooks[t]={get:function(e,n,i){if(n)return!Ke.test(C.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,t,i):je(e,Je,function(){return nt(e,t,i)})},set:function(e,n,i){var r,o=Ve(e),a=!m.scrollboxSize()&&\"absolute\"===o.position,s=(a||i)&&\"border-box\"===C.css(e,\"boxSizing\",!1,o),l=i?tt(e,t,i,s,o):0;return s&&a&&(l-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-tt(e,t,\"border\",!1,o)-.5)),l&&(r=ie.exec(n))&&\"px\"!==(r[3]||\"px\")&&(e.style[t]=n,n=C.css(e,t)),et(0,n,l)}}}),C.cssHooks.marginLeft=qe(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,\"marginLeft\"))||e.getBoundingClientRect().left-je(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),C.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){C.cssHooks[e+t]={expand:function(n){for(var i=0,r={},o=\"string\"==typeof n?n.split(\" \"):[n];i<4;i++)r[e+re[i]+t]=o[i]||o[i-2]||o[0];return r}},\"margin\"!==e&&(C.cssHooks[e+t].set=et)}),C.fn.extend({css:function(e,t){return W(this,function(e,t,n){var i,r,o={},a=0;if(Array.isArray(t)){for(i=Ve(e),r=t.length;a<r;a++)o[t[a]]=C.css(e,t[a],!1,i);return o}return void 0!==n?C.style(e,t,n):C.css(e,t)},e,t,arguments.length>1)}}),C.Tween=it,it.prototype={constructor:it,init:function(e,t,n,i,r,o){this.elem=e,this.prop=n,this.easing=r||C.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=o||(C.cssNumber[n]?\"\":\"px\")},cur:function(){var e=it.propHooks[this.prop];return e&&e.get?e.get(this):it.propHooks._default.get(this)},run:function(e){var t,n=it.propHooks[this.prop];return this.options.duration?this.pos=t=C.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):it.propHooks._default.set(this),this}},it.prototype.init.prototype=it.prototype,it.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=C.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){C.fx.step[e.prop]?C.fx.step[e.prop](e):1!==e.elem.nodeType||!C.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:C.style(e.elem,e.prop,e.now+e.unit)}}},it.propHooks.scrollTop=it.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},C.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},C.fx=it.prototype.init,C.fx.step={};var rt,ot,at=/^(?:toggle|show|hide)$/,st=/queueHooks$/;function lt(){ot&&(!1===b.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(lt):n.setTimeout(lt,C.fx.interval),C.fx.tick())}function ut(){return n.setTimeout(function(){rt=void 0}),rt=Date.now()}function ct(e,t){var n,i=0,r={height:e};for(t=t?1:0;i<4;i+=2-t)r[\"margin\"+(n=re[i])]=r[\"padding\"+n]=e;return t&&(r.opacity=r.width=e),r}function ht(e,t,n){for(var i,r=(dt.tweeners[t]||[]).concat(dt.tweeners[\"*\"]),o=0,a=r.length;o<a;o++)if(i=r[o].call(n,t,e))return i}function dt(e,t,n){var i,r,o=0,a=dt.prefilters.length,s=C.Deferred().always(function(){delete l.elem}),l=function(){if(r)return!1;for(var t=rt||ut(),n=Math.max(0,u.startTime+u.duration-t),i=1-(n/u.duration||0),o=0,a=u.tweens.length;o<a;o++)u.tweens[o].run(i);return s.notifyWith(e,[u,i,n]),i<1&&a?n:(a||s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:C.extend({},t),opts:C.extend(!0,{specialEasing:{},easing:C.easing._default},n),originalProperties:t,originalOptions:n,startTime:rt||ut(),duration:n.duration,tweens:[],createTween:function(t,n){var i=C.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(i),i},stop:function(t){var n=0,i=t?u.tweens.length:0;if(r)return this;for(r=!0;n<i;n++)u.tweens[n].run(1);return t?(s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u,t])):s.rejectWith(e,[u,t]),this}}),c=u.props;for(!function(e,t){var n,i,r,o,a;for(n in e)if(r=t[i=Y(n)],o=e[n],Array.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==i&&(e[i]=o,delete e[n]),(a=C.cssHooks[i])&&\"expand\"in a)for(n in o=a.expand(o),delete e[i],o)n in e||(e[n]=o[n],t[n]=r);else t[i]=r}(c,u.opts.specialEasing);o<a;o++)if(i=dt.prefilters[o].call(u,e,c,u.opts))return v(i.stop)&&(C._queueHooks(u.elem,u.opts.queue).stop=i.stop.bind(i)),i;return C.map(c,ht,u),v(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),C.fx.timer(C.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}C.Animation=C.extend(dt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=[\"*\"]):e=e.match(B);for(var n,i=0,r=e.length;i<r;i++)n=e[i],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var i,r,o,a,s,l,u,c,h=\"width\"in t||\"height\"in t,d=this,f={},p=e.style,g=e.nodeType&&le(e),m=Z.get(e,\"fxshow\");for(i in n.queue||(null==(a=C._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,C.queue(e,\"fx\").length||a.empty.fire()})})),t)if(r=t[i],at.test(r)){if(delete t[i],o=o||\"toggle\"===r,r===(g?\"hide\":\"show\")){if(\"show\"!==r||!m||void 0===m[i])continue;g=!0}f[i]=m&&m[i]||C.style(e,i)}if((l=!C.isEmptyObject(t))||!C.isEmptyObject(f))for(i in h&&1===e.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],null==(u=m&&m.display)&&(u=Z.get(e,\"display\")),\"none\"===(c=C.css(e,\"display\"))&&(u?c=u:(de([e],!0),u=e.style.display||u,c=C.css(e,\"display\"),de([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=u)&&\"none\"===C.css(e,\"float\")&&(l||(d.done(function(){p.display=u}),null==u&&(c=p.display,u=\"none\"===c?\"\":c)),p.display=\"inline-block\")),n.overflow&&(p.overflow=\"hidden\",d.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),l=!1,f)l||(m?\"hidden\"in m&&(g=m.hidden):m=Z.access(e,\"fxshow\",{display:u}),o&&(m.hidden=!g),g&&de([e],!0),d.done(function(){for(i in g||de([e]),Z.remove(e,\"fxshow\"),f)C.style(e,i,f[i])})),l=ht(g?m[i]:0,i,d),i in m||(m[i]=l.start,g&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),C.speed=function(e,t,n){var i=e&&\"object\"==typeof e?C.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return C.fx.off?i.duration=0:\"number\"!=typeof i.duration&&(i.duration in C.fx.speeds?i.duration=C.fx.speeds[i.duration]:i.duration=C.fx.speeds._default),null!=i.queue&&!0!==i.queue||(i.queue=\"fx\"),i.old=i.complete,i.complete=function(){v(i.old)&&i.old.call(this),i.queue&&C.dequeue(this,i.queue)},i},C.fn.extend({fadeTo:function(e,t,n,i){return this.filter(le).css(\"opacity\",0).show().end().animate({opacity:t},e,n,i)},animate:function(e,t,n,i){var r=C.isEmptyObject(e),o=C.speed(t,n,i),a=function(){var t=dt(this,C.extend({},e),o);(r||Z.get(this,\"finish\"))&&t.stop(!0)};return a.finish=a,r||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var i=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e&&(n=t,t=e,e=void 0),t&&this.queue(e||\"fx\",[]),this.each(function(){var t=!0,r=null!=e&&e+\"queueHooks\",o=C.timers,a=Z.get(this);if(r)a[r]&&a[r].stop&&i(a[r]);else for(r in a)a[r]&&a[r].stop&&st.test(r)&&i(a[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||C.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||\"fx\"),this.each(function(){var t,n=Z.get(this),i=n[e+\"queue\"],r=n[e+\"queueHooks\"],o=C.timers,a=i?i.length:0;for(n.finish=!0,C.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete n.finish})}}),C.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=C.fn[t];C.fn[t]=function(e,i,r){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(ct(t,!0),e,i,r)}}),C.each({slideDown:ct(\"show\"),slideUp:ct(\"hide\"),slideToggle:ct(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){C.fn[e]=function(e,n,i){return this.animate(t,e,n,i)}}),C.timers=[],C.fx.tick=function(){var e,t=0,n=C.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||C.fx.stop(),rt=void 0},C.fx.timer=function(e){C.timers.push(e),C.fx.start()},C.fx.interval=13,C.fx.start=function(){ot||(ot=!0,lt())},C.fx.stop=function(){ot=null},C.fx.speeds={slow:600,fast:200,_default:400},C.fn.delay=function(e,t){return e=C.fx&&C.fx.speeds[e]||e,t=t||\"fx\",this.queue(t,function(t,i){var r=n.setTimeout(t,e);i.stop=function(){n.clearTimeout(r)}})},function(){var e=b.createElement(\"input\"),t=b.createElement(\"select\").appendChild(b.createElement(\"option\"));e.type=\"checkbox\",m.checkOn=\"\"!==e.value,m.optSelected=t.selected,(e=b.createElement(\"input\")).value=\"t\",e.type=\"radio\",m.radioValue=\"t\"===e.value}();var ft,pt=C.expr.attrHandle;C.fn.extend({attr:function(e,t){return W(this,C.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){C.removeAttr(this,e)})}}),C.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?C.prop(e,t,n):(1===o&&C.isXMLDoc(e)||(r=C.attrHooks[t.toLowerCase()]||(C.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void C.removeAttr(e,t):r&&\"set\"in r&&void 0!==(i=r.set(e,n,t))?i:(e.setAttribute(t,n+\"\"),n):r&&\"get\"in r&&null!==(i=r.get(e,t))?i:null==(i=C.find.attr(e,t))?void 0:i)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,i=0,r=t&&t.match(B);if(r&&1===e.nodeType)for(;n=r[i++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?C.removeAttr(e,n):e.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=pt[t]||C.find.attr;pt[t]=function(e,t,i){var r,o,a=t.toLowerCase();return i||(o=pt[a],pt[a]=r,r=null!=n(e,t,i)?a:null,pt[a]=o),r}});var gt=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function vt(e){return(e.match(B)||[]).join(\" \")}function yt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function bt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(B)||[]}C.fn.extend({prop:function(e,t){return W(this,C.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[C.propFix[e]||e]})}}),C.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&C.isXMLDoc(e)||(t=C.propFix[t]||t,r=C.propHooks[t]),void 0!==n?r&&\"set\"in r&&void 0!==(i=r.set(e,n,t))?i:e[t]=n:r&&\"get\"in r&&null!==(i=r.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=C.find.attr(e,\"tabindex\");return t?parseInt(t,10):gt.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),m.optSelected||(C.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),C.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){C.propFix[this.toLowerCase()]=this}),C.fn.extend({addClass:function(e){var t,n,i,r,o,a,s,l=0;if(v(e))return this.each(function(t){C(this).addClass(e.call(this,t,yt(this)))});if((t=bt(e)).length)for(;n=this[l++];)if(r=yt(n),i=1===n.nodeType&&\" \"+vt(r)+\" \"){for(a=0;o=t[a++];)i.indexOf(\" \"+o+\" \")<0&&(i+=o+\" \");r!==(s=vt(i))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,i,r,o,a,s,l=0;if(v(e))return this.each(function(t){C(this).removeClass(e.call(this,t,yt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((t=bt(e)).length)for(;n=this[l++];)if(r=yt(n),i=1===n.nodeType&&\" \"+vt(r)+\" \"){for(a=0;o=t[a++];)for(;i.indexOf(\" \"+o+\" \")>-1;)i=i.replace(\" \"+o+\" \",\" \");r!==(s=vt(i))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,i=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&i?t?this.addClass(e):this.removeClass(e):v(e)?this.each(function(n){C(this).toggleClass(e.call(this,n,yt(this),t),t)}):this.each(function(){var t,r,o,a;if(i)for(r=0,o=C(this),a=bt(e);t=a[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=yt(this))&&Z.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Z.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,i=0;for(t=\" \"+e+\" \";n=this[i++];)if(1===n.nodeType&&(\" \"+vt(yt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var xt=/\\r/g;C.fn.extend({val:function(e){var t,n,i,r=this[0];return arguments.length?(i=v(e),this.each(function(n){var r;1===this.nodeType&&(null==(r=i?e.call(this,n,C(this).val()):e)?r=\"\":\"number\"==typeof r?r+=\"\":Array.isArray(r)&&(r=C.map(r,function(e){return null==e?\"\":e+\"\"})),(t=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,r,\"value\")||(this.value=r))})):r?(t=C.valHooks[r.type]||C.valHooks[r.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(r,\"value\"))?n:\"string\"==typeof(n=r.value)?n.replace(xt,\"\"):null==n?\"\":n:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,\"value\");return null!=t?t:vt(C.text(e))}},select:{get:function(e){var t,n,i,r=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],l=a?o+1:r.length;for(i=o<0?l:a?o:0;i<l;i++)if(((n=r[i]).selected||i===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,\"optgroup\"))){if(t=C(n).val(),a)return t;s.push(t)}return s},set:function(e,t){for(var n,i,r=e.options,o=C.makeArray(t),a=r.length;a--;)((i=r[a]).selected=C.inArray(C.valHooks.option.get(i),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),C.each([\"radio\",\"checkbox\"],function(){C.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=C.inArray(C(e).val(),t)>-1}},m.checkOn||(C.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),m.focusin=\"onfocusin\"in n;var _t=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};C.extend(C.event,{trigger:function(e,t,i,r){var o,a,s,l,u,c,h,d,p=[i||b],g=f.call(e,\"type\")?e.type:e,m=f.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(a=d=s=i=i||b,3!==i.nodeType&&8!==i.nodeType&&!_t.test(g+C.event.triggered)&&(g.indexOf(\".\")>-1&&(g=(m=g.split(\".\")).shift(),m.sort()),u=g.indexOf(\":\")<0&&\"on\"+g,(e=e[C.expando]?e:new C.Event(g,\"object\"==typeof e&&e)).isTrigger=r?2:3,e.namespace=m.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+m.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=i),t=null==t?[e]:C.makeArray(t,[e]),h=C.event.special[g]||{},r||!h.trigger||!1!==h.trigger.apply(i,t))){if(!r&&!h.noBubble&&!y(i)){for(l=h.delegateType||g,_t.test(l+g)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(i.ownerDocument||b)&&p.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=p[o++])&&!e.isPropagationStopped();)d=a,e.type=o>1?l:h.bindType||g,(c=(Z.get(a,\"events\")||Object.create(null))[e.type]&&Z.get(a,\"handle\"))&&c.apply(a,t),(c=u&&a[u])&&c.apply&&X(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=g,r||e.isDefaultPrevented()||h._default&&!1!==h._default.apply(p.pop(),t)||!X(i)||u&&v(i[g])&&!y(i)&&((s=i[u])&&(i[u]=null),C.event.triggered=g,e.isPropagationStopped()&&d.addEventListener(g,wt),i[g](),e.isPropagationStopped()&&d.removeEventListener(g,wt),C.event.triggered=void 0,s&&(i[u]=s)),e.result}},simulate:function(e,t,n){var i=C.extend(new C.Event,n,{type:e,isSimulated:!0});C.event.trigger(i,null,t)}}),C.fn.extend({trigger:function(e,t){return this.each(function(){C.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return C.event.trigger(e,t,n,!0)}}),m.focusin||C.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=function(e){C.event.simulate(t,e.target,C.event.fix(e))};C.event.special[t]={setup:function(){var i=this.ownerDocument||this.document||this,r=Z.access(i,t);r||i.addEventListener(e,n,!0),Z.access(i,t,(r||0)+1)},teardown:function(){var i=this.ownerDocument||this.document||this,r=Z.access(i,t)-1;r?Z.access(i,t,r):(i.removeEventListener(e,n,!0),Z.remove(i,t))}}});var Ct=n.location,St={guid:Date.now()},kt=/\\?/;C.parseXML=function(e){var t;if(!e||\"string\"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,\"text/xml\")}catch(e){t=void 0}return t&&!t.getElementsByTagName(\"parsererror\").length||C.error(\"Invalid XML: \"+e),t};var Tt=/\\[\\]$/,Mt=/\\r?\\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function It(e,t,n,i){var r;if(Array.isArray(t))C.each(t,function(t,r){n||Tt.test(e)?i(e,r):It(e+\"[\"+(\"object\"==typeof r&&null!=r?t:\"\")+\"]\",r,n,i)});else if(n||\"object\"!==w(t))i(e,t);else for(r in t)It(e+\"[\"+r+\"]\",t[r],n,i)}C.param=function(e,t){var n,i=[],r=function(e,t){var n=v(t)?t():t;i[i.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!C.isPlainObject(e))C.each(e,function(){r(this.name,this.value)});else for(n in e)It(n,e[n],t,r);return i.join(\"&\")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=C.prop(this,\"elements\");return e?C.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!C(this).is(\":disabled\")&&At.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!ge.test(e))}).map(function(e,t){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,function(e){return{name:t.name,value:e.replace(Mt,\"\\r\\n\")}}):{name:t.name,value:n.replace(Mt,\"\\r\\n\")}}).get()}});var Ot=/%20/g,Et=/#.*$/,Lt=/([?&])_=[^&]*/,Pt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,Rt=/^\\/\\//,Bt={},zt={},Ft=\"*/\".concat(\"*\"),$t=b.createElement(\"a\");function Vt(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var i,r=0,o=t.toLowerCase().match(B)||[];if(v(n))for(;i=o[r++];)\"+\"===i[0]?(i=i.slice(1)||\"*\",(e[i]=e[i]||[]).unshift(n)):(e[i]=e[i]||[]).push(n)}}function jt(e,t,n,i){var r={},o=e===zt;function a(s){var l;return r[s]=!0,C.each(e[s]||[],function(e,s){var u=s(t,n,i);return\"string\"!=typeof u||o||r[u]?o?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)}),l}return a(t.dataTypes[0])||!r[\"*\"]&&a(\"*\")}function Ht(e,t){var n,i,r=C.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:i||(i={}))[n]=t[n]);return i&&C.extend(!0,e,i),e}$t.href=Ct.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Ft,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ht(Ht(e,C.ajaxSettings),t):Ht(C.ajaxSettings,e)},ajaxPrefilter:Vt(Bt),ajaxTransport:Vt(zt),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var i,r,o,a,s,l,u,c,h,d,f=C.ajaxSetup({},t),p=f.context||f,g=f.context&&(p.nodeType||p.jquery)?C(p):C.event,m=C.Deferred(),v=C.Callbacks(\"once memory\"),y=f.statusCode||{},x={},_={},w=\"canceled\",S={readyState:0,getResponseHeader:function(e){var t;if(u){if(!a)for(a={};t=Pt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=_[e.toLowerCase()]=_[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==u&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)S.always(e[S.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||w;return i&&i.abort(t),k(0,t),this}};if(m.promise(S),f.url=((e||f.url||Ct.href)+\"\").replace(Rt,Ct.protocol+\"//\"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||\"*\").toLowerCase().match(B)||[\"\"],null==f.crossDomain){l=b.createElement(\"a\");try{l.href=f.url,l.href=l.href,f.crossDomain=$t.protocol+\"//\"+$t.host!=l.protocol+\"//\"+l.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&\"string\"!=typeof f.data&&(f.data=C.param(f.data,f.traditional)),jt(Bt,f,t,S),u)return S;for(h in(c=C.event&&f.global)&&0==C.active++&&C.event.trigger(\"ajaxStart\"),f.type=f.type.toUpperCase(),f.hasContent=!Nt.test(f.type),r=f.url.replace(Et,\"\"),f.hasContent?f.data&&f.processData&&0===(f.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(f.data=f.data.replace(Ot,\"+\")):(d=f.url.slice(r.length),f.data&&(f.processData||\"string\"==typeof f.data)&&(r+=(kt.test(r)?\"&\":\"?\")+f.data,delete f.data),!1===f.cache&&(r=r.replace(Lt,\"$1\"),d=(kt.test(r)?\"&\":\"?\")+\"_=\"+St.guid+++d),f.url=r+d),f.ifModified&&(C.lastModified[r]&&S.setRequestHeader(\"If-Modified-Since\",C.lastModified[r]),C.etag[r]&&S.setRequestHeader(\"If-None-Match\",C.etag[r])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&S.setRequestHeader(\"Content-Type\",f.contentType),S.setRequestHeader(\"Accept\",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(\"*\"!==f.dataTypes[0]?\", \"+Ft+\"; q=0.01\":\"\"):f.accepts[\"*\"]),f.headers)S.setRequestHeader(h,f.headers[h]);if(f.beforeSend&&(!1===f.beforeSend.call(p,S,f)||u))return S.abort();if(w=\"abort\",v.add(f.complete),S.done(f.success),S.fail(f.error),i=jt(zt,f,t,S)){if(S.readyState=1,c&&g.trigger(\"ajaxSend\",[S,f]),u)return S;f.async&&f.timeout>0&&(s=n.setTimeout(function(){S.abort(\"timeout\")},f.timeout));try{u=!1,i.send(x,k)}catch(e){if(u)throw e;k(-1,e)}}else k(-1,\"No Transport\");function k(e,t,a,l){var h,d,b,x,_,w=t;u||(u=!0,s&&n.clearTimeout(s),i=void 0,o=l||\"\",S.readyState=e>0?4:0,h=e>=200&&e<300||304===e,a&&(x=function(e,t,n){for(var i,r,o,a,s=e.contents,l=e.dataTypes;\"*\"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(i)for(r in s)if(s[r]&&s[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||e.converters[r+\" \"+l[0]]){o=r;break}a||(a=r)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,S,a)),!h&&C.inArray(\"script\",f.dataTypes)>-1&&(f.converters[\"text script\"]=function(){}),x=function(e,t,n,i){var r,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if(\"*\"===o)o=l;else if(\"*\"!==l&&l!==o){if(!(a=u[l+\" \"+o]||u[\"* \"+o]))for(r in u)if((s=r.split(\" \"))[1]===o&&(a=u[l+\" \"+s[0]]||u[\"* \"+s[0]])){!0===a?a=u[r]:!0!==u[r]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+l+\" to \"+o}}}return{state:\"success\",data:t}}(f,x,S,h),h?(f.ifModified&&((_=S.getResponseHeader(\"Last-Modified\"))&&(C.lastModified[r]=_),(_=S.getResponseHeader(\"etag\"))&&(C.etag[r]=_)),204===e||\"HEAD\"===f.type?w=\"nocontent\":304===e?w=\"notmodified\":(w=x.state,d=x.data,h=!(b=x.error))):(b=w,!e&&w||(w=\"error\",e<0&&(e=0))),S.status=e,S.statusText=(t||w)+\"\",h?m.resolveWith(p,[d,w,S]):m.rejectWith(p,[S,w,b]),S.statusCode(y),y=void 0,c&&g.trigger(h?\"ajaxSuccess\":\"ajaxError\",[S,f,h?d:b]),v.fireWith(p,[S,w]),c&&(g.trigger(\"ajaxComplete\",[S,f]),--C.active||C.event.trigger(\"ajaxStop\")))}return S},getJSON:function(e,t,n){return C.get(e,t,n,\"json\")},getScript:function(e,t){return C.get(e,void 0,t,\"script\")}}),C.each([\"get\",\"post\"],function(e,t){C[t]=function(e,n,i,r){return v(n)&&(r=r||i,i=n,n=void 0),C.ajax(C.extend({url:e,type:t,dataType:r,data:n,success:i},C.isPlainObject(e)&&e))}}),C.ajaxPrefilter(function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")}),C._evalUrl=function(e,t,n){return C.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){C.globalEval(e,t,n)}})},C.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=C(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return v(e)?this.each(function(t){C(this).wrapInner(e.call(this,t))}):this.each(function(){var t=C(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v(e);return this.each(function(n){C(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){C(this).replaceWith(this.childNodes)}),this}}),C.expr.pseudos.hidden=function(e){return!C.expr.pseudos.visible(e)},C.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},qt=C.ajaxSettings.xhr();m.cors=!!qt&&\"withCredentials\"in qt,m.ajax=qt=!!qt,C.ajaxTransport(function(e){var t,i;if(m.cors||qt&&!e.crossDomain)return{send:function(r,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r[\"X-Requested-With\"]||(r[\"X-Requested-With\"]=\"XMLHttpRequest\"),r)s.setRequestHeader(a,r[a]);t=function(e){return function(){t&&(t=i=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Wt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),i=s.onerror=s.ontimeout=t(\"error\"),void 0!==s.onabort?s.onabort=i:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&i()})},t=t(\"abort\");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),C.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),C.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return C.globalEval(e),e}}}),C.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),C.ajaxTransport(\"script\",function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(i,r){t=C(\"<script>\").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e&&r(\"error\"===e.type?404:200,e.type)}),b.head.appendChild(t[0])},abort:function(){n&&n()}}});var Gt,Ut=[],Yt=/(=)\\?(?=&|$)|\\?\\?/;C.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Ut.pop()||C.expando+\"_\"+St.guid++;return this[e]=!0,e}}),C.ajaxPrefilter(\"json jsonp\",function(e,t,i){var r,o,a,s=!1!==e.jsonp&&(Yt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Yt.test(e.data)&&\"data\");if(s||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Yt,\"$1\"+r):!1!==e.jsonp&&(e.url+=(kt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return a||C.error(r+\" was not called\"),a[0]},e.dataTypes[0]=\"json\",o=n[r],n[r]=function(){a=arguments},i.always(function(){void 0===o?C(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,Ut.push(r)),a&&v(o)&&o(a[0]),a=o=void 0}),\"script\"}),m.createHTMLDocument=((Gt=b.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===Gt.childNodes.length),C.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((i=(t=b.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=b.location.href,t.head.appendChild(i)):t=b),r=I.exec(e),o=!n&&[],r?[t.createElement(r[1])]:(r=we([e],t,o),o&&o.length&&C(o).remove(),C.merge([],r.childNodes)));var i,r,o},C.fn.load=function(e,t,n){var i,r,o,a=this,s=e.indexOf(\" \");return s>-1&&(i=vt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(r=\"POST\"),a.length>0&&C.ajax({url:e,type:r||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(i?C(\"<div>\").append(C.parseHTML(e)).find(i):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.expr.pseudos.animated=function(e){return C.grep(C.timers,function(t){return e===t.elem}).length},C.offset={setOffset:function(e,t,n){var i,r,o,a,s,l,u=C.css(e,\"position\"),c=C(e),h={};\"static\"===u&&(e.style.position=\"relative\"),s=c.offset(),o=C.css(e,\"top\"),l=C.css(e,\"left\"),(\"absolute\"===u||\"fixed\"===u)&&(o+l).indexOf(\"auto\")>-1?(a=(i=c.position()).top,r=i.left):(a=parseFloat(o)||0,r=parseFloat(l)||0),v(t)&&(t=t.call(e,n,C.extend({},s))),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+r),\"using\"in t?t.using.call(e,h):(\"number\"==typeof h.top&&(h.top+=\"px\"),\"number\"==typeof h.left&&(h.left+=\"px\"),c.css(h))}},C.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){C.offset.setOffset(this,e,t)});var t,n,i=this[0];return i?i.getClientRects().length?(t=i.getBoundingClientRect(),n=i.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,i=this[0],r={top:0,left:0};if(\"fixed\"===C.css(i,\"position\"))t=i.getBoundingClientRect();else{for(t=this.offset(),n=i.ownerDocument,e=i.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&\"static\"===C.css(e,\"position\");)e=e.parentNode;e&&e!==i&&1===e.nodeType&&((r=C(e).offset()).top+=C.css(e,\"borderTopWidth\",!0),r.left+=C.css(e,\"borderLeftWidth\",!0))}return{top:t.top-r.top-C.css(i,\"marginTop\",!0),left:t.left-r.left-C.css(i,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&\"static\"===C.css(e,\"position\");)e=e.offsetParent;return e||oe})}}),C.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,t){var n=\"pageYOffset\"===t;C.fn[e]=function(i){return W(this,function(e,i,r){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===r)return o?o[t]:e[i];o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):e[i]=r},e,i,arguments.length)}}),C.each([\"top\",\"left\"],function(e,t){C.cssHooks[t]=qe(m.pixelPosition,function(e,n){if(n)return n=We(e,t),$e.test(n)?C(e).position()[t]+\"px\":n})}),C.each({Height:\"height\",Width:\"width\"},function(e,t){C.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,i){C.fn[i]=function(r,o){var a=arguments.length&&(n||\"boolean\"!=typeof r),s=n||(!0===r||!0===o?\"margin\":\"border\");return W(this,function(t,n,r){var o;return y(t)?0===i.indexOf(\"outer\")?t[\"inner\"+e]:t.document.documentElement[\"client\"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===r?C.css(t,n,s):C.style(t,n,r,s)},t,a?r:void 0,a)}})}),C.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),C.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){C.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}});var Xt=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;C.proxy=function(e,t){var n,i,r;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),v(e))return i=s.call(arguments,2),(r=function(){return e.apply(t||this,i.concat(s.call(arguments)))}).guid=e.guid=e.guid||C.guid++,r},C.holdReady=function(e){e?C.readyWait++:C.ready(!0)},C.isArray=Array.isArray,C.parseJSON=JSON.parse,C.nodeName=A,C.isFunction=v,C.isWindow=y,C.camelCase=Y,C.type=w,C.now=Date.now,C.isNumeric=function(e){var t=C.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},C.trim=function(e){return null==e?\"\":(e+\"\").replace(Xt,\"\")},void 0===(i=function(){return C}.apply(t,[]))||(e.exports=i);var Kt=n.jQuery,Zt=n.$;return C.noConflict=function(e){return n.$===C&&(n.$=Zt),e&&n.jQuery===C&&(n.jQuery=Kt),C},void 0===r&&(n.jQuery=n.$=C),C})},\"80cc\":function(e,t,n){var i=n(\"Icdr\");n(\"6JAQ\"),n(\"6f6q\"),n(\"8RN9\");var r=n(\"JIsR\"),o=n(\"Y5nL\");i.registerProcessor(i.PRIORITY.PROCESSOR.SERIES_FILTER,r),o.registerSubTypeDefaulter(\"legend\",function(){return\"plain\"})},\"80zD\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");function o(e,t){t.update=\"updateView\",i.registerAction(t,function(t,n){var i={};return n.eachComponent({mainType:\"geo\",query:t},function(n){n[e](t.name);var o=n.coordinateSystem;r.each(o.regions,function(e){i[e.name]=n.isSelected(e.name)||!1})}),{selected:i,name:t.name}})}n(\"whrq\"),n(\"srbS\"),n(\"jpt2\"),n(\"FvdC\"),o(\"toggleSelected\",{type:\"geoToggleSelect\",event:\"geoselectchanged\"}),o(\"select\",{type:\"geoSelect\",event:\"geoselected\"}),o(\"unSelect\",{type:\"geoUnSelect\",event:\"geounselected\"})},\"835U\":function(e,t,n){\"use strict\";t.__esModule=!0,t.isString=function(e){return\"[object String]\"===Object.prototype.toString.call(e)},t.isObject=function(e){return\"[object Object]\"===Object.prototype.toString.call(e)},t.isHtmlElement=function(e){return e&&e.nodeType===Node.ELEMENT_NODE};t.isFunction=function(e){return e&&\"[object Function]\"==={}.toString.call(e)},t.isUndefined=function(e){return void 0===e},t.isDefined=function(e){return void 0!==e&&null!==e}},\"87tG\":function(e,t,n){n(\"JNWs\"),n(\"sTIA\")},\"880/\":function(e,t,n){e.exports=n(\"hJx8\")},\"8DFW\":function(e,t,n){var i=n(\"EJsE\"),r=n(\"hcq/\"),o=n(\"mvCM\").getDimensionTypeByAxis,a=n(\"Rfu2\"),s=n(\"/gxq\"),l=n(\"vXqC\").groupData,u=n(\"HHfb\").encodeHTML,c=n(\"FCaW\"),h=i.extend({type:\"series.themeRiver\",dependencies:[\"singleAxis\"],nameMap:null,init:function(e){h.superApply(this,\"init\",arguments),this.legendVisualProvider=new c(s.bind(this.getData,this),s.bind(this.getRawData,this))},fixData:function(e){var t=e.length,n=[];l(e,function(e){return e[2]}).buckets.each(function(e,t){n.push({name:t,dataList:e})});for(var i=n.length,r=-1,o=-1,a=0;a<i;++a){var s=n[a].dataList.length;s>r&&(r=s,o=a)}for(var u=0;u<i;++u)if(u!==o)for(var c=n[u].name,h=0;h<r;++h){for(var d=n[o].dataList[h][0],f=n[u].dataList.length,p=-1,g=0;g<f;++g){if(n[u].dataList[g][0]===d){p=g;break}}-1===p&&(e[t]=[],e[t][0]=d,e[t][1]=0,e[t][2]=c,t++)}return e},getInitialData:function(e,t){for(var n=t.queryComponents({mainType:\"singleAxis\",index:this.get(\"singleAxisIndex\"),id:this.get(\"singleAxisId\")})[0].get(\"type\"),i=s.filter(e.data,function(e){return void 0!==e[2]}),l=this.fixData(i||[]),u=[],c=this.nameMap=s.createHashMap(),h=0,d=0;d<l.length;++d)u.push(l[d][2]),c.get(l[d][2])||(c.set(l[d][2],h),h++);var f=r(l,{coordDimensions:[\"single\"],dimensionsDefine:[{name:\"time\",type:o(n)},{name:\"value\",type:\"float\"},{name:\"name\",type:\"ordinal\"}],encodeDefine:{single:0,value:1,itemName:2}}),p=new a(f,this);return p.initData(l),p},getLayerSeries:function(){for(var e=this.getData(),t=e.count(),n=[],i=0;i<t;++i)n[i]=i;var r=e.mapDimension(\"single\"),o=[];return l(n,function(t){return e.get(\"name\",t)}).buckets.each(function(t,n){t.sort(function(t,n){return e.get(r,t)-e.get(r,n)}),o.push({name:n,indices:t})}),o},getAxisTooltipData:function(e,t,n){s.isArray(e)||(e=e?[e]:[]);for(var i,r=this.getData(),o=this.getLayerSeries(),a=[],l=o.length,u=0;u<l;++u){for(var c=Number.MAX_VALUE,h=-1,d=o[u].indices.length,f=0;f<d;++f){var p=r.get(e[0],o[u].indices[f]),g=Math.abs(p-t);g<=c&&(i=p,c=g,h=o[u].indices[f])}a.push(h)}return{dataIndices:a,nestestValue:i}},formatTooltip:function(e){var t=this.getData(),n=t.getName(e),i=t.get(t.mapDimension(\"value\"),e);return(isNaN(i)||null==i)&&(i=\"-\"),u(n+\" : \"+i)},defaultOption:{zlevel:0,z:2,coordinateSystem:\"singleAxis\",boundaryGap:[\"10%\",\"10%\"],singleAxisIndex:0,animationEasing:\"linear\",label:{margin:4,show:!0,position:\"left\",color:\"#000\",fontSize:11},emphasis:{label:{show:!0}}}}),d=h;e.exports=d},\"8Mpj\":function(e,t,n){var i=n(\"sJ4e\").extend({type:\"dataZoom.inside\",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});e.exports=i},\"8RN9\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"kK7q\").createSymbol,a=n(\"0sHC\"),s=n(\"v/cD\").makeBackground,l=n(\"1Xuh\"),u=r.curry,c=r.each,h=a.Group,d=i.extendComponentView({type:\"legend.plain\",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new h),this._backgroundEl,this.group.add(this._selectorGroup=new h),this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},getSelectorGroup:function(){return this._selectorGroup},render:function(e,t,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),e.get(\"show\",!0)){var o=e.get(\"align\"),a=e.get(\"orient\");o&&\"auto\"!==o||(o=\"right\"===e.get(\"left\")&&\"vertical\"===a?\"right\":\"left\");var u=e.get(\"selector\",!0),c=e.get(\"selectorPosition\",!0);!u||c&&\"auto\"!==c||(c=\"horizontal\"===a?\"end\":\"start\"),this.renderInner(o,e,t,n,u,a,c);var h=e.getBoxLayoutParams(),d={width:n.getWidth(),height:n.getHeight()},f=e.get(\"padding\"),p=l.getLayoutRect(h,d,f),g=this.layoutInner(e,o,p,i,u,c),m=l.getLayoutRect(r.defaults({width:g.width,height:g.height},h),d,f);this.group.attr(\"position\",[m.x-g.x,m.y-g.y]),this.group.add(this._backgroundEl=s(g,e))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},renderInner:function(e,t,n,i,o,a,s){var l=this.getContentGroup(),d=r.createHashMap(),f=t.get(\"selectedMode\"),v=[];n.eachRawSeries(function(e){!e.get(\"legendHoverLink\")&&v.push(e.id)}),c(t.getData(),function(r,o){var a=r.get(\"name\");if(this.newlineDisabled||\"\"!==a&&\"\\n\"!==a){var s=n.getSeriesByName(a)[0];if(!d.get(a))if(s){var c=s.getData(),y=c.getVisual(\"color\"),b=c.getVisual(\"borderColor\");\"function\"==typeof y&&(y=y(s.getDataParams(0))),\"function\"==typeof b&&(b=b(s.getDataParams(0)));var x=c.getVisual(\"legendSymbol\")||\"roundRect\",_=c.getVisual(\"symbol\");this._createItem(a,o,r,t,x,_,e,y,b,f).on(\"click\",u(p,a,null,i,v)).on(\"mouseover\",u(g,s.name,null,i,v)).on(\"mouseout\",u(m,s.name,null,i,v)),d.set(a,!0)}else n.eachRawSeries(function(n){if(!d.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var l=s.indexOfName(a),c=s.getItemVisual(l,\"color\"),h=s.getItemVisual(l,\"borderColor\");this._createItem(a,o,r,t,\"roundRect\",null,e,c,h,f).on(\"click\",u(p,null,a,i,v)).on(\"mouseover\",u(g,null,a,i,v)).on(\"mouseout\",u(m,null,a,i,v)),d.set(a,!0)}},this)}else l.add(new h({newline:!0}))},this),o&&this._createSelector(o,t,i,a,s)},_createSelector:function(e,t,n,i,r){var o=this.getSelectorGroup();c(e,function(e){!function(e){var i=e.type,r=new a.Text({style:{x:0,y:0,align:\"center\",verticalAlign:\"middle\"},onclick:function(){n.dispatchAction({type:\"all\"===i?\"legendAllSelect\":\"legendInverseSelect\"})}});o.add(r);var s=t.getModel(\"selectorLabel\"),l=t.getModel(\"emphasis.selectorLabel\");a.setLabelStyle(r.style,r.hoverStyle={},s,l,{defaultText:e.title,isRectText:!1}),a.setHoverStyle(r)}(e)})},_createItem:function(e,t,n,i,s,l,u,c,d,p){var g=i.get(\"itemWidth\"),m=i.get(\"itemHeight\"),v=i.get(\"inactiveColor\"),y=i.get(\"inactiveBorderColor\"),b=i.get(\"symbolKeepAspect\"),x=i.getModel(\"itemStyle\"),_=i.isSelected(e),w=new h,C=n.getModel(\"textStyle\"),S=n.get(\"icon\"),k=n.getModel(\"tooltip\"),T=k.parentModel,M=o(s=S||s,0,0,g,m,_?c:v,null==b||b);if(w.add(f(M,s,x,d,y,_)),!S&&l&&(l!==s||\"none\"===l)){var D=.8*m;\"none\"===l&&(l=\"circle\");var A=o(l,(g-D)/2,(m-D)/2,D,D,_?c:v,null==b||b);w.add(f(A,l,x,d,y,_))}var I=\"left\"===u?g+5:-5,O=u,E=i.get(\"formatter\"),L=e;\"string\"==typeof E&&E?L=E.replace(\"{name}\",null!=e?e:\"\"):\"function\"==typeof E&&(L=E(e)),w.add(new a.Text({style:a.setTextStyle({},C,{text:L,x:I,y:m/2,textFill:_?C.getTextColor():v,textAlign:O,textVerticalAlign:\"middle\"})}));var P=new a.Rect({shape:w.getBoundingRect(),invisible:!0,tooltip:k.get(\"show\")?r.extend({content:e,formatter:T.get(\"formatter\",!0)||function(){return e},formatterParams:{componentType:\"legend\",legendIndex:i.componentIndex,name:e,$vars:[\"name\"]}},k.option):null});return w.add(P),w.eachChild(function(e){e.silent=!0}),P.silent=!p,this.getContentGroup().add(w),a.setHoverStyle(w),w.__legendDataIndex=t,w},layoutInner:function(e,t,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();l.box(e.get(\"orient\"),a,e.get(\"itemGap\"),n.width,n.height);var u=a.getBoundingRect(),c=[-u.x,-u.y];if(r){l.box(\"horizontal\",s,e.get(\"selectorItemGap\",!0));var h=s.getBoundingRect(),d=[-h.x,-h.y],f=e.get(\"selectorButtonGap\",!0),p=e.getOrient().index,g=0===p?\"width\":\"height\",m=0===p?\"height\":\"width\",v=0===p?\"y\":\"x\";\"end\"===o?d[p]+=u[g]+f:c[p]+=h[g]+f,d[1-p]+=u[m]/2-h[m]/2,s.attr(\"position\",d),a.attr(\"position\",c);var y={x:0,y:0};return y[g]=u[g]+f+h[g],y[m]=Math.max(u[m],h[m]),y[v]=Math.min(0,h[v]+d[1-p]),y}return a.attr(\"position\",c),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});function f(e,t,n,i,r,o){var a;return\"line\"!==t&&t.indexOf(\"empty\")<0?(a=n.getItemStyle(),e.style.stroke=i,o||(a.stroke=r)):a=n.getItemStyle([\"borderWidth\",\"borderColor\"]),e.setStyle(a)}function p(e,t,n,i){m(e,t,n,i),n.dispatchAction({type:\"legendToggleSelect\",name:null!=e?e:t}),g(e,t,n,i)}function g(e,t,n,i){var r=n.getZr().storage.getDisplayList()[0];r&&r.useHoverLayer||n.dispatchAction({type:\"highlight\",seriesName:e,name:t,excludeSeriesId:i})}function m(e,t,n,i){var r=n.getZr().storage.getDisplayList()[0];r&&r.useHoverLayer||n.dispatchAction({type:\"downplay\",seriesName:e,name:t,excludeSeriesId:i})}e.exports=d},\"8U58\":function(e,t,n){var i;i=function(){\"use strict\";var e=navigator.userAgent,t=navigator.platform,n=/gecko\\/\\d/i.test(e),i=/MSIE \\d/.test(e),r=/Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(e),o=/Edge\\/(\\d+)/.exec(e),a=i||r||o,s=a&&(i?document.documentMode||6:+(o||r)[1]),l=!o&&/WebKit\\//.test(e),u=l&&/Qt\\/\\d+\\.\\d+/.test(e),c=!o&&/Chrome\\//.test(e),h=/Opera\\//.test(e),d=/Apple Computer/.test(navigator.vendor),f=/Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(e),p=/PhantomJS/.test(e),g=d&&(/Mobile\\/\\w+/.test(e)||navigator.maxTouchPoints>2),m=/Android/.test(e),v=g||m||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\\bCrOS\\b/.test(e),x=/win/i.test(t),_=h&&e.match(/Version\\/(\\d*\\.\\d*)/);_&&(_=Number(_[1])),_&&_>=15&&(h=!1,l=!0);var w=y&&(u||h&&(null==_||_<12.11)),C=n||a&&s>=9;function S(e){return new RegExp(\"(^|\\\\s)\"+e+\"(?:$|\\\\s)\\\\s*\")}var k,T=function(e,t){var n=e.className,i=S(t).exec(n);if(i){var r=n.slice(i.index+i[0].length);e.className=n.slice(0,i.index)+(r?i[1]+r:\"\")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function D(e,t){return M(e).appendChild(t)}function A(e,t,n,i){var r=document.createElement(e);if(n&&(r.className=n),i&&(r.style.cssText=i),\"string\"==typeof t)r.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)r.appendChild(t[o]);return r}function I(e,t,n,i){var r=A(e,t,n,i);return r.setAttribute(\"role\",\"presentation\"),r}function O(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function E(){var e;try{e=document.activeElement}catch(t){e=document.body||null}for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}function L(e,t){var n=e.className;S(t).test(n)||(e.className+=(n?\" \":\"\")+t)}function P(e,t){for(var n=e.split(\" \"),i=0;i<n.length;i++)n[i]&&!S(n[i]).test(t)&&(t+=\" \"+n[i]);return t}k=document.createRange?function(e,t,n,i){var r=document.createRange();return r.setEnd(i||e,n),r.setStart(e,t),r}:function(e,t,n){var i=document.body.createTextRange();try{i.moveToElementText(e.parentNode)}catch(e){return i}return i.collapse(!0),i.moveEnd(\"character\",n),i.moveStart(\"character\",t),i};var N=function(e){e.select()};function R(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function B(e,t,n){for(var i in t||(t={}),e)!e.hasOwnProperty(i)||!1===n&&t.hasOwnProperty(i)||(t[i]=e[i]);return t}function z(e,t,n,i,r){null==t&&-1==(t=e.search(/[^\\s\\u00a0]/))&&(t=e.length);for(var o=i||0,a=r||0;;){var s=e.indexOf(\"\\t\",o);if(s<0||s>=t)return a+(t-o);a+=s-o,a+=n-a%n,o=s+1}}g?N=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:a&&(N=function(e){try{e.select()}catch(e){}});var F=function(){this.id=null,this.f=null,this.time=0,this.handler=R(this.onTimeout,this)};function $(e,t){for(var n=0;n<e.length;++n)if(e[n]==t)return n;return-1}F.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},F.prototype.set=function(e,t){this.f=t;var n=+new Date+e;(!this.id||n<this.time)&&(clearTimeout(this.id),this.id=setTimeout(this.handler,e),this.time=n)};var V=50,j={toString:function(){return\"CodeMirror.Pass\"}},H={scroll:!1},W={origin:\"*mouse\"},q={origin:\"+move\"};function G(e,t,n){for(var i=0,r=0;;){var o=e.indexOf(\"\\t\",i);-1==o&&(o=e.length);var a=o-i;if(o==e.length||r+a>=t)return i+Math.min(a,t-r);if(r+=o-i,i=o+1,(r+=n-r%n)>=t)return i}}var U=[\"\"];function Y(e){for(;U.length<=e;)U.push(X(U)+\" \");return U[e]}function X(e){return e[e.length-1]}function K(e,t){for(var n=[],i=0;i<e.length;i++)n[i]=t(e[i],i);return n}function Z(){}function J(e,t){var n;return Object.create?n=Object.create(e):(Z.prototype=e,n=new Z),t&&B(t,n),n}var Q=/[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;function ee(e){return/\\w/.test(e)||e>\"\"&&(e.toUpperCase()!=e.toLowerCase()||Q.test(e))}function te(e,t){return t?!!(t.source.indexOf(\"\\\\w\")>-1&&ee(e))||t.test(e):ee(e)}function ne(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ie=/[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;function re(e){return e.charCodeAt(0)>=768&&ie.test(e)}function oe(e,t,n){for(;(n<0?t>0:t<e.length)&&re(e.charAt(t));)t+=n;return t}function ae(e,t,n){for(var i=t>n?-1:1;;){if(t==n)return t;var r=(t+n)/2,o=i<0?Math.ceil(r):Math.floor(r);if(o==t)return e(o)?t:n;e(o)?n=o:t=o+i}}var se=null;function le(e,t,n){var i;se=null;for(var r=0;r<e.length;++r){var o=e[r];if(o.from<t&&o.to>t)return r;o.to==t&&(o.from!=o.to&&\"before\"==n?i=r:se=r),o.from==t&&(o.from!=o.to&&\"before\"!=n?i=r:se=r)}return null!=i?i:se}var ue=function(){var e=\"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\",t=\"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";var n=/[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/,i=/[stwN]/,r=/[LRr]/,o=/[Lb1n]/,a=/[1n]/;function s(e,t,n){this.level=e,this.from=t,this.to=n}return function(l,u){var c=\"ltr\"==u?\"L\":\"R\";if(0==l.length||\"ltr\"==u&&!n.test(l))return!1;for(var h,d=l.length,f=[],p=0;p<d;++p)f.push((h=l.charCodeAt(p))<=247?e.charAt(h):1424<=h&&h<=1524?\"R\":1536<=h&&h<=1785?t.charAt(h-1536):1774<=h&&h<=2220?\"r\":8192<=h&&h<=8203?\"w\":8204==h?\"b\":\"L\");for(var g=0,m=c;g<d;++g){var v=f[g];\"m\"==v?f[g]=m:m=v}for(var y=0,b=c;y<d;++y){var x=f[y];\"1\"==x&&\"r\"==b?f[y]=\"n\":r.test(x)&&(b=x,\"r\"==x&&(f[y]=\"R\"))}for(var _=1,w=f[0];_<d-1;++_){var C=f[_];\"+\"==C&&\"1\"==w&&\"1\"==f[_+1]?f[_]=\"1\":\",\"!=C||w!=f[_+1]||\"1\"!=w&&\"n\"!=w||(f[_]=w),w=C}for(var S=0;S<d;++S){var k=f[S];if(\",\"==k)f[S]=\"N\";else if(\"%\"==k){var T=void 0;for(T=S+1;T<d&&\"%\"==f[T];++T);for(var M=S&&\"!\"==f[S-1]||T<d&&\"1\"==f[T]?\"1\":\"N\",D=S;D<T;++D)f[D]=M;S=T-1}}for(var A=0,I=c;A<d;++A){var O=f[A];\"L\"==I&&\"1\"==O?f[A]=\"L\":r.test(O)&&(I=O)}for(var E=0;E<d;++E)if(i.test(f[E])){var L=void 0;for(L=E+1;L<d&&i.test(f[L]);++L);for(var P=\"L\"==(E?f[E-1]:c),N=P==(\"L\"==(L<d?f[L]:c))?P?\"L\":\"R\":c,R=E;R<L;++R)f[R]=N;E=L-1}for(var B,z=[],F=0;F<d;)if(o.test(f[F])){var $=F;for(++F;F<d&&o.test(f[F]);++F);z.push(new s(0,$,F))}else{var V=F,j=z.length,H=\"rtl\"==u?1:0;for(++F;F<d&&\"L\"!=f[F];++F);for(var W=V;W<F;)if(a.test(f[W])){V<W&&(z.splice(j,0,new s(1,V,W)),j+=H);var q=W;for(++W;W<F&&a.test(f[W]);++W);z.splice(j,0,new s(2,q,W)),j+=H,V=W}else++W;V<F&&z.splice(j,0,new s(1,V,F))}return\"ltr\"==u&&(1==z[0].level&&(B=l.match(/^\\s+/))&&(z[0].from=B[0].length,z.unshift(new s(0,0,B[0].length))),1==X(z).level&&(B=l.match(/\\s+$/))&&(X(z).to-=B[0].length,z.push(new s(0,d-B[0].length,d)))),\"rtl\"==u?z.reverse():z}}();function ce(e,t){var n=e.order;return null==n&&(n=e.order=ue(e.text,t)),n}var he=[],de=function(e,t,n){if(e.addEventListener)e.addEventListener(t,n,!1);else if(e.attachEvent)e.attachEvent(\"on\"+t,n);else{var i=e._handlers||(e._handlers={});i[t]=(i[t]||he).concat(n)}};function fe(e,t){return e._handlers&&e._handlers[t]||he}function pe(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1);else if(e.detachEvent)e.detachEvent(\"on\"+t,n);else{var i=e._handlers,r=i&&i[t];if(r){var o=$(r,n);o>-1&&(i[t]=r.slice(0,o).concat(r.slice(o+1)))}}}function ge(e,t){var n=fe(e,t);if(n.length)for(var i=Array.prototype.slice.call(arguments,2),r=0;r<n.length;++r)n[r].apply(null,i)}function me(e,t,n){return\"string\"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),ge(e,n||t.type,e,t),we(t)||t.codemirrorIgnore}function ve(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var n=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),i=0;i<t.length;++i)-1==$(n,t[i])&&n.push(t[i])}function ye(e,t){return fe(e,t).length>0}function be(e){e.prototype.on=function(e,t){de(this,e,t)},e.prototype.off=function(e,t){pe(this,e,t)}}function xe(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function _e(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function we(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Ce(e){xe(e),_e(e)}function Se(e){return e.target||e.srcElement}function ke(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var Te,Me,De=function(){if(a&&s<9)return!1;var e=A(\"div\");return\"draggable\"in e||\"dragDrop\"in e}();function Ae(e){if(null==Te){var t=A(\"span\",\"​\");D(e,A(\"span\",[t,document.createTextNode(\"x\")])),0!=e.firstChild.offsetHeight&&(Te=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&s<8))}var n=Te?A(\"span\",\"​\"):A(\"span\",\" \",null,\"display: inline-block; width: 1px; margin-right: -1px\");return n.setAttribute(\"cm-text\",\"\"),n}function Ie(e){if(null!=Me)return Me;var t=D(e,document.createTextNode(\"AخA\")),n=k(t,0,1).getBoundingClientRect(),i=k(t,1,2).getBoundingClientRect();return M(e),!(!n||n.left==n.right)&&(Me=i.right-n.right<3)}var Oe,Ee=3!=\"\\n\\nb\".split(/\\n/).length?function(e){for(var t=0,n=[],i=e.length;t<=i;){var r=e.indexOf(\"\\n\",t);-1==r&&(r=e.length);var o=e.slice(t,\"\\r\"==e.charAt(r-1)?r-1:r),a=o.indexOf(\"\\r\");-1!=a?(n.push(o.slice(0,a)),t+=a+1):(n.push(o),t=r+1)}return n}:function(e){return e.split(/\\r\\n?|\\n/)},Le=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints(\"StartToEnd\",t)},Pe=\"oncopy\"in(Oe=A(\"div\"))||(Oe.setAttribute(\"oncopy\",\"return;\"),\"function\"==typeof Oe.oncopy),Ne=null;var Re={},Be={};function ze(e){if(\"string\"==typeof e&&Be.hasOwnProperty(e))e=Be[e];else if(e&&\"string\"==typeof e.name&&Be.hasOwnProperty(e.name)){var t=Be[e.name];\"string\"==typeof t&&(t={name:t}),(e=J(t,e)).name=t.name}else{if(\"string\"==typeof e&&/^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(e))return ze(\"application/xml\");if(\"string\"==typeof e&&/^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(e))return ze(\"application/json\")}return\"string\"==typeof e?{name:e}:e||{name:\"null\"}}function Fe(e,t){t=ze(t);var n=Re[t.name];if(!n)return Fe(e,\"text/plain\");var i=n(e,t);if($e.hasOwnProperty(t.name)){var r=$e[t.name];for(var o in r)r.hasOwnProperty(o)&&(i.hasOwnProperty(o)&&(i[\"_\"+o]=i[o]),i[o]=r[o])}if(i.name=t.name,t.helperType&&(i.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)i[a]=t.modeProps[a];return i}var $e={};function Ve(e,t){B(t,$e.hasOwnProperty(e)?$e[e]:$e[e]={})}function je(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n={};for(var i in t){var r=t[i];r instanceof Array&&(r=r.concat([])),n[i]=r}return n}function He(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function We(e,t,n){return!e.startState||e.startState(t,n)}var qe=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function Ge(e,t){if((t-=e.first)<0||t>=e.size)throw new Error(\"There is no line \"+(t+e.first)+\" in the document.\");for(var n=e;!n.lines;)for(var i=0;;++i){var r=n.children[i],o=r.chunkSize();if(t<o){n=r;break}t-=o}return n.lines[t]}function Ue(e,t,n){var i=[],r=t.line;return e.iter(t.line,n.line+1,function(e){var o=e.text;r==n.line&&(o=o.slice(0,n.ch)),r==t.line&&(o=o.slice(t.ch)),i.push(o),++r}),i}function Ye(e,t,n){var i=[];return e.iter(t,n,function(e){i.push(e.text)}),i}function Xe(e,t){var n=t-e.height;if(n)for(var i=e;i;i=i.parent)i.height+=n}function Ke(e){if(null==e.parent)return null;for(var t=e.parent,n=$(t.lines,e),i=t.parent;i;t=i,i=i.parent)for(var r=0;i.children[r]!=t;++r)n+=i.children[r].chunkSize();return n+t.first}function Ze(e,t){var n=e.first;e:do{for(var i=0;i<e.children.length;++i){var r=e.children[i],o=r.height;if(t<o){e=r;continue e}t-=o,n+=r.chunkSize()}return n}while(!e.lines);for(var a=0;a<e.lines.length;++a){var s=e.lines[a].height;if(t<s)break;t-=s}return n+a}function Je(e,t){return t>=e.first&&t<e.first+e.size}function Qe(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function et(e,t,n){if(void 0===n&&(n=null),!(this instanceof et))return new et(e,t,n);this.line=e,this.ch=t,this.sticky=n}function tt(e,t){return e.line-t.line||e.ch-t.ch}function nt(e,t){return e.sticky==t.sticky&&0==tt(e,t)}function it(e){return et(e.line,e.ch)}function rt(e,t){return tt(e,t)<0?t:e}function ot(e,t){return tt(e,t)<0?e:t}function at(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function st(e,t){if(t.line<e.first)return et(e.first,0);var n=e.first+e.size-1;return t.line>n?et(n,Ge(e,n).text.length):function(e,t){var n=e.ch;return null==n||n>t?et(e.line,t):n<0?et(e.line,0):e}(t,Ge(e,t.line).text.length)}function lt(e,t){for(var n=[],i=0;i<t.length;i++)n[i]=st(e,t[i]);return n}qe.prototype.eol=function(){return this.pos>=this.string.length},qe.prototype.sol=function(){return this.pos==this.lineStart},qe.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},qe.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},qe.prototype.eat=function(e){var t=this.string.charAt(this.pos);if(\"string\"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},qe.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},qe.prototype.eatSpace=function(){for(var e=this.pos;/[\\s\\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},qe.prototype.skipToEnd=function(){this.pos=this.string.length},qe.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},qe.prototype.backUp=function(e){this.pos-=e},qe.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=z(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?z(this.string,this.lineStart,this.tabSize):0)},qe.prototype.indentation=function(){return z(this.string,null,this.tabSize)-(this.lineStart?z(this.string,this.lineStart,this.tabSize):0)},qe.prototype.match=function(e,t,n){if(\"string\"!=typeof e){var i=this.string.slice(this.pos).match(e);return i&&i.index>0?null:(i&&!1!==t&&(this.pos+=i[0].length),i)}var r=function(e){return n?e.toLowerCase():e};if(r(this.string.substr(this.pos,e.length))==r(e))return!1!==t&&(this.pos+=e.length),!0},qe.prototype.current=function(){return this.string.slice(this.start,this.pos)},qe.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},qe.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},qe.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var ut=function(e,t){this.state=e,this.lookAhead=t},ct=function(e,t,n,i){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=i||0,this.baseTokens=null,this.baseTokenPos=1};function ht(e,t,n,i){var r=[e.state.modeGen],o={};xt(e,t.text,e.doc.mode,n,function(e,t){return r.push(e,t)},o,i);for(var a=n.state,s=function(i){n.baseTokens=r;var s=e.state.overlays[i],l=1,u=0;n.state=!0,xt(e,t.text,s.mode,n,function(e,t){for(var n=l;u<e;){var i=r[l];i>e&&r.splice(l,1,e,r[l+1],i),l+=2,u=Math.min(e,i)}if(t)if(s.opaque)r.splice(n,l-n,e,\"overlay \"+t),l=n+2;else for(;n<l;n+=2){var o=r[n+1];r[n+1]=(o?o+\" \":\"\")+\"overlay \"+t}},o),n.state=a,n.baseTokens=null,n.baseTokenPos=1},l=0;l<e.state.overlays.length;++l)s(l);return{styles:r,classes:o.bgClass||o.textClass?o:null}}function dt(e,t,n){if(!t.styles||t.styles[0]!=e.state.modeGen){var i=ft(e,Ke(t)),r=t.text.length>e.options.maxHighlightLength&&je(e.doc.mode,i.state),o=ht(e,t,i);r&&(i.state=r),t.stateAfter=i.save(!r),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function ft(e,t,n){var i=e.doc,r=e.display;if(!i.mode.startState)return new ct(i,!0,t);var o=function(e,t,n){for(var i,r,o=e.doc,a=n?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>a;--s){if(s<=o.first)return o.first;var l=Ge(o,s-1),u=l.stateAfter;if(u&&(!n||s+(u instanceof ut?u.lookAhead:0)<=o.modeFrontier))return s;var c=z(l.text,null,e.options.tabSize);(null==r||i>c)&&(r=s-1,i=c)}return r}(e,t,n),a=o>i.first&&Ge(i,o-1).stateAfter,s=a?ct.fromSaved(i,a,o):new ct(i,We(i.mode),o);return i.iter(o,t,function(n){pt(e,n.text,s);var i=s.line;n.stateAfter=i==t-1||i%5==0||i>=r.viewFrom&&i<r.viewTo?s.save():null,s.nextLine()}),n&&(i.modeFrontier=s.line),s}function pt(e,t,n,i){var r=e.doc.mode,o=new qe(t,e.options.tabSize,n);for(o.start=o.pos=i||0,\"\"==t&&gt(r,n.state);!o.eol();)mt(r,o,n.state),o.start=o.pos}function gt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var n=He(e,t);return n.mode.blankLine?n.mode.blankLine(n.state):void 0}}function mt(e,t,n,i){for(var r=0;r<10;r++){i&&(i[0]=He(e,n).mode);var o=e.token(t,n);if(t.pos>t.start)return o}throw new Error(\"Mode \"+e.name+\" failed to advance stream.\")}ct.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ct.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,\"\"),size:this.baseTokens[this.baseTokenPos]-e}},ct.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ct.fromSaved=function(e,t,n){return t instanceof ut?new ct(e,je(e.mode,t.state),n,t.lookAhead):new ct(e,je(e.mode,t),n)},ct.prototype.save=function(e){var t=!1!==e?je(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ut(t,this.maxLookAhead):t};var vt=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function yt(e,t,n,i){var r,o,a=e.doc,s=a.mode,l=Ge(a,(t=st(a,t)).line),u=ft(e,t.line,n),c=new qe(l.text,e.options.tabSize,u);for(i&&(o=[]);(i||c.pos<t.ch)&&!c.eol();)c.start=c.pos,r=mt(s,c,u.state),i&&o.push(new vt(c,r,je(a.mode,u.state)));return i?o:new vt(c,r,u.state)}function bt(e,t){if(e)for(;;){var n=e.match(/(?:^|\\s+)line-(background-)?(\\S+)/);if(!n)break;e=e.slice(0,n.index)+e.slice(n.index+n[0].length);var i=n[1]?\"bgClass\":\"textClass\";null==t[i]?t[i]=n[2]:new RegExp(\"(?:^|\\\\s)\"+n[2]+\"(?:$|\\\\s)\").test(t[i])||(t[i]+=\" \"+n[2])}return e}function xt(e,t,n,i,r,o,a){var s=n.flattenSpans;null==s&&(s=e.options.flattenSpans);var l,u=0,c=null,h=new qe(t,e.options.tabSize,i),d=e.options.addModeClass&&[null];for(\"\"==t&&bt(gt(n,i.state),o);!h.eol();){if(h.pos>e.options.maxHighlightLength?(s=!1,a&&pt(e,t,i,h.pos),h.pos=t.length,l=null):l=bt(mt(n,h,i.state,d),o),d){var f=d[0].name;f&&(l=\"m-\"+(l?f+\" \"+l:f))}if(!s||c!=l){for(;u<h.start;)r(u=Math.min(h.start,u+5e3),c);c=l}h.start=h.pos}for(;u<h.pos;){var p=Math.min(h.pos,u+5e3);r(p,c),u=p}}var _t=!1,wt=!1;function Ct(e,t,n){this.marker=e,this.from=t,this.to=n}function St(e,t){if(e)for(var n=0;n<e.length;++n){var i=e[n];if(i.marker==t)return i}}function kt(e,t){for(var n,i=0;i<e.length;++i)e[i]!=t&&(n||(n=[])).push(e[i]);return n}function Tt(e,t){if(t.full)return null;var n=Je(e,t.from.line)&&Ge(e,t.from.line).markedSpans,i=Je(e,t.to.line)&&Ge(e,t.to.line).markedSpans;if(!n&&!i)return null;var r=t.from.ch,o=t.to.ch,a=0==tt(t.from,t.to),s=function(e,t,n){var i;if(e)for(var r=0;r<e.length;++r){var o=e[r],a=o.marker;if(null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&\"bookmark\"==a.type&&(!n||!o.marker.insertLeft)){var s=null==o.to||(a.inclusiveRight?o.to>=t:o.to>t);(i||(i=[])).push(new Ct(a,o.from,s?null:o.to))}}return i}(n,r,a),l=function(e,t,n){var i;if(e)for(var r=0;r<e.length;++r){var o=e[r],a=o.marker;if(null==o.to||(a.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&\"bookmark\"==a.type&&(!n||o.marker.insertLeft)){var s=null==o.from||(a.inclusiveLeft?o.from<=t:o.from<t);(i||(i=[])).push(new Ct(a,s?null:o.from-t,null==o.to?null:o.to-t))}}return i}(i,o,a),u=1==t.text.length,c=X(t.text).length+(u?r:0);if(s)for(var h=0;h<s.length;++h){var d=s[h];if(null==d.to){var f=St(l,d.marker);f?u&&(d.to=null==f.to?null:f.to+c):d.to=r}}if(l)for(var p=0;p<l.length;++p){var g=l[p];if(null!=g.to&&(g.to+=c),null==g.from)St(s,g.marker)||(g.from=c,u&&(s||(s=[])).push(g));else g.from+=c,u&&(s||(s=[])).push(g)}s&&(s=Mt(s)),l&&l!=s&&(l=Mt(l));var m=[s];if(!u){var v,y=t.text.length-2;if(y>0&&s)for(var b=0;b<s.length;++b)null==s[b].to&&(v||(v=[])).push(new Ct(s[b].marker,null,null));for(var x=0;x<y;++x)m.push(v);m.push(l)}return m}function Mt(e){for(var t=0;t<e.length;++t){var n=e[t];null!=n.from&&n.from==n.to&&!1!==n.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Dt(e){var t=e.markedSpans;if(t){for(var n=0;n<t.length;++n)t[n].marker.detachLine(e);e.markedSpans=null}}function At(e,t){if(t){for(var n=0;n<t.length;++n)t[n].marker.attachLine(e);e.markedSpans=t}}function It(e){return e.inclusiveLeft?-1:0}function Ot(e){return e.inclusiveRight?1:0}function Et(e,t){var n=e.lines.length-t.lines.length;if(0!=n)return n;var i=e.find(),r=t.find(),o=tt(i.from,r.from)||It(e)-It(t);if(o)return-o;var a=tt(i.to,r.to)||Ot(e)-Ot(t);return a||t.id-e.id}function Lt(e,t){var n,i=wt&&e.markedSpans;if(i)for(var r=void 0,o=0;o<i.length;++o)(r=i[o]).marker.collapsed&&null==(t?r.from:r.to)&&(!n||Et(n,r.marker)<0)&&(n=r.marker);return n}function Pt(e){return Lt(e,!0)}function Nt(e){return Lt(e,!1)}function Rt(e,t){var n,i=wt&&e.markedSpans;if(i)for(var r=0;r<i.length;++r){var o=i[r];o.marker.collapsed&&(null==o.from||o.from<t)&&(null==o.to||o.to>t)&&(!n||Et(n,o.marker)<0)&&(n=o.marker)}return n}function Bt(e,t,n,i,r){var o=Ge(e,t),a=wt&&o.markedSpans;if(a)for(var s=0;s<a.length;++s){var l=a[s];if(l.marker.collapsed){var u=l.marker.find(0),c=tt(u.from,n)||It(l.marker)-It(r),h=tt(u.to,i)||Ot(l.marker)-Ot(r);if(!(c>=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?tt(u.to,n)>=0:tt(u.to,n)>0)||c>=0&&(l.marker.inclusiveRight&&r.inclusiveLeft?tt(u.from,i)<=0:tt(u.from,i)<0)))return!0}}}function zt(e){for(var t;t=Pt(e);)e=t.find(-1,!0).line;return e}function Ft(e,t){var n=Ge(e,t),i=zt(n);return n==i?t:Ke(i)}function $t(e,t){if(t>e.lastLine())return t;var n,i=Ge(e,t);if(!Vt(e,i))return t;for(;n=Nt(i);)i=n.find(1,!0).line;return Ke(i)+1}function Vt(e,t){var n=wt&&t.markedSpans;if(n)for(var i=void 0,r=0;r<n.length;++r)if((i=n[r]).marker.collapsed){if(null==i.from)return!0;if(!i.marker.widgetNode&&0==i.from&&i.marker.inclusiveLeft&&jt(e,t,i))return!0}}function jt(e,t,n){if(null==n.to){var i=n.marker.find(1,!0);return jt(e,i.line,St(i.line.markedSpans,n.marker))}if(n.marker.inclusiveRight&&n.to==t.text.length)return!0;for(var r=void 0,o=0;o<t.markedSpans.length;++o)if((r=t.markedSpans[o]).marker.collapsed&&!r.marker.widgetNode&&r.from==n.to&&(null==r.to||r.to!=n.from)&&(r.marker.inclusiveLeft||n.marker.inclusiveRight)&&jt(e,t,r))return!0}function Ht(e){for(var t=0,n=(e=zt(e)).parent,i=0;i<n.lines.length;++i){var r=n.lines[i];if(r==e)break;t+=r.height}for(var o=n.parent;o;o=(n=o).parent)for(var a=0;a<o.children.length;++a){var s=o.children[a];if(s==n)break;t+=s.height}return t}function Wt(e){if(0==e.height)return 0;for(var t,n=e.text.length,i=e;t=Pt(i);){var r=t.find(0,!0);i=r.from.line,n+=r.from.ch-r.to.ch}for(i=e;t=Nt(i);){var o=t.find(0,!0);n-=i.text.length-o.from.ch,n+=(i=o.to.line).text.length-o.to.ch}return n}function qt(e){var t=e.display,n=e.doc;t.maxLine=Ge(n,n.first),t.maxLineLength=Wt(t.maxLine),t.maxLineChanged=!0,n.iter(function(e){var n=Wt(e);n>t.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}var Gt=function(e,t,n){this.text=e,At(this,t),this.height=n?n(this):1};function Ut(e){e.parent=null,Dt(e)}Gt.prototype.lineNo=function(){return Ke(this)},be(Gt);var Yt={},Xt={};function Kt(e,t){if(!e||/^\\s*$/.test(e))return null;var n=t.addModeClass?Xt:Yt;return n[e]||(n[e]=e.replace(/\\S+/g,\"cm-$&\"))}function Zt(e,t){var n=I(\"span\",null,null,l?\"padding-right: .1px\":null),i={pre:I(\"pre\",[n],\"CodeMirror-line\"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption(\"lineWrapping\")};t.measure={};for(var r=0;r<=(t.rest?t.rest.length:0);r++){var o=r?t.rest[r-1]:t.line,a=void 0;i.pos=0,i.addToken=Qt,Ie(e.display.measure)&&(a=ce(o,e.doc.direction))&&(i.addToken=en(i.addToken,a)),i.map=[],nn(o,i,dt(e,o,t!=e.display.externalMeasured&&Ke(o))),o.styleClasses&&(o.styleClasses.bgClass&&(i.bgClass=P(o.styleClasses.bgClass,i.bgClass||\"\")),o.styleClasses.textClass&&(i.textClass=P(o.styleClasses.textClass,i.textClass||\"\"))),0==i.map.length&&i.map.push(0,0,i.content.appendChild(Ae(e.display.measure))),0==r?(t.measure.map=i.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(i.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(l){var s=i.content.lastChild;(/\\bcm-tab\\b/.test(s.className)||s.querySelector&&s.querySelector(\".cm-tab\"))&&(i.content.className=\"cm-tab-wrap-hack\")}return ge(e,\"renderLine\",e,t.line,i.pre),i.pre.className&&(i.textClass=P(i.pre.className,i.textClass||\"\")),i}function Jt(e){var t=A(\"span\",\"•\",\"cm-invalidchar\");return t.title=\"\\\\u\"+e.charCodeAt(0).toString(16),t.setAttribute(\"aria-label\",t.title),t}function Qt(e,t,n,i,r,o,l){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/  /.test(e))return e;for(var n=t,i=\"\",r=0;r<e.length;r++){var o=e.charAt(r);\" \"!=o||!n||r!=e.length-1&&32!=e.charCodeAt(r+1)||(o=\" \"),i+=o,n=\" \"==o}return i}(t,e.trailingSpace):t,h=e.cm.state.specialChars,d=!1;if(h.test(t)){u=document.createDocumentFragment();for(var f=0;;){h.lastIndex=f;var p=h.exec(t),g=p?p.index-f:t.length-f;if(g){var m=document.createTextNode(c.slice(f,f+g));a&&s<9?u.appendChild(A(\"span\",[m])):u.appendChild(m),e.map.push(e.pos,e.pos+g,m),e.col+=g,e.pos+=g}if(!p)break;f+=g+1;var v=void 0;if(\"\\t\"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(v=u.appendChild(A(\"span\",Y(b),\"cm-tab\"))).setAttribute(\"role\",\"presentation\"),v.setAttribute(\"cm-text\",\"\\t\"),e.col+=b}else\"\\r\"==p[0]||\"\\n\"==p[0]?((v=u.appendChild(A(\"span\",\"\\r\"==p[0]?\"␍\":\"␤\",\"cm-invalidchar\"))).setAttribute(\"cm-text\",p[0]),e.col+=1):((v=e.cm.options.specialCharPlaceholder(p[0])).setAttribute(\"cm-text\",p[0]),a&&s<9?u.appendChild(A(\"span\",[v])):u.appendChild(v),e.col+=1);e.map.push(e.pos,e.pos+1,v),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),a&&s<9&&(d=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),n||i||r||d||o||l){var x=n||\"\";i&&(x+=i),r&&(x+=r);var _=A(\"span\",[u],x,o);if(l)for(var w in l)l.hasOwnProperty(w)&&\"style\"!=w&&\"class\"!=w&&_.setAttribute(w,l[w]);return e.content.appendChild(_)}e.content.appendChild(u)}}function en(e,t){return function(n,i,r,o,a,s,l){r=r?r+\" cm-force-border\":\"cm-force-border\";for(var u=n.pos,c=u+i.length;;){for(var h=void 0,d=0;d<t.length&&!((h=t[d]).to>u&&h.from<=u);d++);if(h.to>=c)return e(n,i,r,o,a,s,l);e(n,i.slice(0,h.to-u),r,o,null,s,l),o=null,i=i.slice(h.to-u),u=h.to}}}function tn(e,t,n,i){var r=!i&&n.widgetNode;r&&e.map.push(e.pos,e.pos+t,r),!i&&e.cm.display.input.needsContentAttribute&&(r||(r=e.content.appendChild(document.createElement(\"span\"))),r.setAttribute(\"cm-marker\",n.id)),r&&(e.cm.display.input.setUneditable(r),e.content.appendChild(r)),e.pos+=t,e.trailingSpace=!1}function nn(e,t,n){var i=e.markedSpans,r=e.text,o=0;if(i)for(var a,s,l,u,c,h,d,f=r.length,p=0,g=1,m=\"\",v=0;;){if(v==p){l=u=c=s=\"\",d=null,h=null,v=1/0;for(var y=[],b=void 0,x=0;x<i.length;++x){var _=i[x],w=_.marker;if(\"bookmark\"==w.type&&_.from==p&&w.widgetNode)y.push(w);else if(_.from<=p&&(null==_.to||_.to>p||w.collapsed&&_.to==p&&_.from==p)){if(null!=_.to&&_.to!=p&&v>_.to&&(v=_.to,u=\"\"),w.className&&(l+=\" \"+w.className),w.css&&(s=(s?s+\";\":\"\")+w.css),w.startStyle&&_.from==p&&(c+=\" \"+w.startStyle),w.endStyle&&_.to==v&&(b||(b=[])).push(w.endStyle,_.to),w.title&&((d||(d={})).title=w.title),w.attributes)for(var C in w.attributes)(d||(d={}))[C]=w.attributes[C];w.collapsed&&(!h||Et(h.marker,w)<0)&&(h=_)}else _.from>p&&v>_.from&&(v=_.from)}if(b)for(var S=0;S<b.length;S+=2)b[S+1]==v&&(u+=\" \"+b[S]);if(!h||h.from==p)for(var k=0;k<y.length;++k)tn(t,0,y[k]);if(h&&(h.from||0)==p){if(tn(t,(null==h.to?f+1:h.to)-p,h.marker,null==h.from),null==h.to)return;h.to==p&&(h=!1)}}if(p>=f)break;for(var T=Math.min(f,v);;){if(m){var M=p+m.length;if(!h){var D=M>T?m.slice(0,T-p):m;t.addToken(t,D,a?a+l:l,c,p+D.length==v?u:\"\",s,d)}if(M>=T){m=m.slice(T-p),p=T;break}p=M,c=\"\"}m=r.slice(o,o=n[g++]),a=Kt(n[g++],t.cm.options)}}else for(var A=1;A<n.length;A+=2)t.addToken(t,r.slice(o,o=n[A]),Kt(n[A+1],t.cm.options))}function rn(e,t,n){this.line=t,this.rest=function(e){for(var t,n;t=Nt(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}(t),this.size=this.rest?Ke(X(this.rest))-n+1:1,this.node=this.text=null,this.hidden=Vt(e,t)}function on(e,t,n){for(var i,r=[],o=t;o<n;o=i){var a=new rn(e.doc,Ge(e.doc,o),o);i=o+a.size,r.push(a)}return r}var an=null;var sn=null;function ln(e,t){var n=fe(e,t);if(n.length){var i,r=Array.prototype.slice.call(arguments,2);an?i=an.delayedCallbacks:sn?i=sn:(i=sn=[],setTimeout(un,0));for(var o=function(e){i.push(function(){return n[e].apply(null,r)})},a=0;a<n.length;++a)o(a)}}function un(){var e=sn;sn=null;for(var t=0;t<e.length;++t)e[t]()}function cn(e,t,n,i){for(var r=0;r<t.changes.length;r++){var o=t.changes[r];\"text\"==o?fn(e,t):\"gutter\"==o?gn(e,t,n,i):\"class\"==o?pn(e,t):\"widget\"==o&&mn(e,t,i)}t.changes=null}function hn(e){return e.node==e.text&&(e.node=A(\"div\",null,null,\"position: relative\"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),a&&s<8&&(e.node.style.zIndex=2)),e.node}function dn(e,t){var n=e.display.externalMeasured;return n&&n.line==t.line?(e.display.externalMeasured=null,t.measure=n.measure,n.built):Zt(e,t)}function fn(e,t){var n=t.text.className,i=dn(e,t);t.text==t.node&&(t.node=i.pre),t.text.parentNode.replaceChild(i.pre,t.text),t.text=i.pre,i.bgClass!=t.bgClass||i.textClass!=t.textClass?(t.bgClass=i.bgClass,t.textClass=i.textClass,pn(e,t)):n&&(t.text.className=n)}function pn(e,t){!function(e,t){var n=t.bgClass?t.bgClass+\" \"+(t.line.bgClass||\"\"):t.line.bgClass;if(n&&(n+=\" CodeMirror-linebackground\"),t.background)n?t.background.className=n:(t.background.parentNode.removeChild(t.background),t.background=null);else if(n){var i=hn(t);t.background=i.insertBefore(A(\"div\",null,n),i.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?hn(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className=\"\");var n=t.textClass?t.textClass+\" \"+(t.line.textClass||\"\"):t.line.textClass;t.text.className=n||\"\"}function gn(e,t,n,i){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var r=hn(t);t.gutterBackground=A(\"div\",null,\"CodeMirror-gutter-background \"+t.line.gutterClass,\"left: \"+(e.options.fixedGutter?i.fixedPos:-i.gutterTotalWidth)+\"px; width: \"+i.gutterTotalWidth+\"px\"),e.display.input.setUneditable(t.gutterBackground),r.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var a=hn(t),s=t.gutter=A(\"div\",null,\"CodeMirror-gutter-wrapper\",\"left: \"+(e.options.fixedGutter?i.fixedPos:-i.gutterTotalWidth)+\"px\");if(e.display.input.setUneditable(s),a.insertBefore(s,t.text),t.line.gutterClass&&(s.className+=\" \"+t.line.gutterClass),!e.options.lineNumbers||o&&o[\"CodeMirror-linenumbers\"]||(t.lineNumber=s.appendChild(A(\"div\",Qe(e.options,n),\"CodeMirror-linenumber CodeMirror-gutter-elt\",\"left: \"+i.gutterLeft[\"CodeMirror-linenumbers\"]+\"px; width: \"+e.display.lineNumInnerWidth+\"px\"))),o)for(var l=0;l<e.display.gutterSpecs.length;++l){var u=e.display.gutterSpecs[l].className,c=o.hasOwnProperty(u)&&o[u];c&&s.appendChild(A(\"div\",[c],\"CodeMirror-gutter-elt\",\"left: \"+i.gutterLeft[u]+\"px; width: \"+i.gutterWidth[u]+\"px\"))}}}function mn(e,t,n){t.alignable&&(t.alignable=null);for(var i=S(\"CodeMirror-linewidget\"),r=t.node.firstChild,o=void 0;r;r=o)o=r.nextSibling,i.test(r.className)&&t.node.removeChild(r);yn(e,t,n)}function vn(e,t,n,i){var r=dn(e,t);return t.text=t.node=r.pre,r.bgClass&&(t.bgClass=r.bgClass),r.textClass&&(t.textClass=r.textClass),pn(e,t),gn(e,t,n,i),yn(e,t,i),t.node}function yn(e,t,n){if(bn(e,t.line,t,n,!0),t.rest)for(var i=0;i<t.rest.length;i++)bn(e,t.rest[i],t,n,!1)}function bn(e,t,n,i,r){if(t.widgets)for(var o=hn(n),a=0,s=t.widgets;a<s.length;++a){var l=s[a],u=A(\"div\",[l.node],\"CodeMirror-linewidget\"+(l.className?\" \"+l.className:\"\"));l.handleMouseEvents||u.setAttribute(\"cm-ignore-events\",\"true\"),xn(l,u,n,i),e.display.input.setUneditable(u),r&&l.above?o.insertBefore(u,n.gutter||n.text):o.appendChild(u),ln(l,\"redraw\")}}function xn(e,t,n,i){if(e.noHScroll){(n.alignable||(n.alignable=[])).push(t);var r=i.wrapperWidth;t.style.left=i.fixedPos+\"px\",e.coverGutter||(r-=i.gutterTotalWidth,t.style.paddingLeft=i.gutterTotalWidth+\"px\"),t.style.width=r+\"px\"}e.coverGutter&&(t.style.zIndex=5,t.style.position=\"relative\",e.noHScroll||(t.style.marginLeft=-i.gutterTotalWidth+\"px\"))}function _n(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!O(document.body,e.node)){var n=\"position: relative;\";e.coverGutter&&(n+=\"margin-left: -\"+t.display.gutters.offsetWidth+\"px;\"),e.noHScroll&&(n+=\"width: \"+t.display.wrapper.clientWidth+\"px;\"),D(t.display.measure,A(\"div\",[e.node],null,n))}return e.height=e.node.parentNode.offsetHeight}function wn(e,t){for(var n=Se(t);n!=e.wrapper;n=n.parentNode)if(!n||1==n.nodeType&&\"true\"==n.getAttribute(\"cm-ignore-events\")||n.parentNode==e.sizer&&n!=e.mover)return!0}function Cn(e){return e.lineSpace.offsetTop}function Sn(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function kn(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=D(e.measure,A(\"pre\",\"x\",\"CodeMirror-line-like\")),n=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,i={left:parseInt(n.paddingLeft),right:parseInt(n.paddingRight)};return isNaN(i.left)||isNaN(i.right)||(e.cachedPaddingH=i),i}function Tn(e){return V-e.display.nativeBarWidth}function Mn(e){return e.display.scroller.clientWidth-Tn(e)-e.display.barWidth}function Dn(e){return e.display.scroller.clientHeight-Tn(e)-e.display.barHeight}function An(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var i=0;i<e.rest.length;i++)if(e.rest[i]==t)return{map:e.measure.maps[i],cache:e.measure.caches[i]};for(var r=0;r<e.rest.length;r++)if(Ke(e.rest[r])>n)return{map:e.measure.maps[r],cache:e.measure.caches[r],before:!0}}function In(e,t,n,i){return Ln(e,En(e,t),n,i)}function On(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[li(e,t)];var n=e.display.externalMeasured;return n&&t>=n.lineN&&t<n.lineN+n.size?n:void 0}function En(e,t){var n=Ke(t),i=On(e,n);i&&!i.text?i=null:i&&i.changes&&(cn(e,i,n,ii(e)),e.curOp.forceUpdate=!0),i||(i=function(e,t){var n=Ke(t=zt(t)),i=e.display.externalMeasured=new rn(e.doc,t,n);i.lineN=n;var r=i.built=Zt(e,i);return i.text=r.pre,D(e.display.lineMeasure,r.pre),i}(e,t));var r=An(i,t,n);return{line:t,view:i,rect:null,map:r.map,cache:r.cache,before:r.before,hasHeights:!1}}function Ln(e,t,n,i,r){t.before&&(n=-1);var o,l=n+(i||\"\");return t.cache.hasOwnProperty(l)?o=t.cache[l]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(!function(e,t,n){var i=e.options.lineWrapping,r=i&&Mn(e);if(!t.measure.heights||i&&t.measure.width!=r){var o=t.measure.heights=[];if(i){t.measure.width=r;for(var a=t.text.firstChild.getClientRects(),s=0;s<a.length-1;s++){var l=a[s],u=a[s+1];Math.abs(l.bottom-u.bottom)>2&&o.push((l.bottom+u.top)/2-n.top)}}o.push(n.bottom-n.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,n,i){var r,o=Rn(t.map,n,i),l=o.node,u=o.start,c=o.end,h=o.collapse;if(3==l.nodeType){for(var d=0;d<4;d++){for(;u&&re(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c<o.coverEnd&&re(t.line.text.charAt(o.coverStart+c));)++c;if((r=a&&s<9&&0==u&&c==o.coverEnd-o.coverStart?l.parentNode.getBoundingClientRect():Bn(k(l,u,c).getClientRects(),i)).left||r.right||0==u)break;c=u,u-=1,h=\"right\"}a&&s<11&&(r=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Ne)return Ne;var t=D(e,A(\"span\",\"x\")),n=t.getBoundingClientRect(),i=k(t,0,1).getBoundingClientRect();return Ne=Math.abs(n.left-i.left)>1}(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,i=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*i,bottom:t.bottom*i}}(e.display.measure,r))}else{var f;u>0&&(h=i=\"right\"),r=e.options.lineWrapping&&(f=l.getClientRects()).length>1?f[\"right\"==i?f.length-1:0]:l.getBoundingClientRect()}if(a&&s<9&&!u&&(!r||!r.left&&!r.right)){var p=l.parentNode.getClientRects()[0];r=p?{left:p.left,right:p.left+ni(e.display),top:p.top,bottom:p.bottom}:Nn}for(var g=r.top-t.rect.top,m=r.bottom-t.rect.top,v=(g+m)/2,y=t.view.measure.heights,b=0;b<y.length-1&&!(v<y[b]);b++);var x=b?y[b-1]:0,_=y[b],w={left:(\"right\"==h?r.right:r.left)-t.rect.left,right:(\"left\"==h?r.left:r.right)-t.rect.left,top:x,bottom:_};r.left||r.right||(w.bogus=!0);e.options.singleCursorHeightPerLine||(w.rtop=g,w.rbottom=m);return w}(e,t,n,i)).bogus||(t.cache[l]=o)),{left:o.left,right:o.right,top:r?o.rtop:o.top,bottom:r?o.rbottom:o.bottom}}var Pn,Nn={left:0,right:0,top:0,bottom:0};function Rn(e,t,n){for(var i,r,o,a,s,l,u=0;u<e.length;u+=3)if(s=e[u],l=e[u+1],t<s?(r=0,o=1,a=\"left\"):t<l?o=(r=t-s)+1:(u==e.length-3||t==l&&e[u+3]>t)&&(r=(o=l-s)-1,t>=l&&(a=\"right\")),null!=r){if(i=e[u+2],s==l&&n==(i.insertLeft?\"left\":\"right\")&&(a=n),\"left\"==n&&0==r)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)i=e[2+(u-=3)],a=\"left\";if(\"right\"==n&&r==l-s)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)i=e[(u+=3)+2],a=\"right\";break}return{node:i,start:r,end:o,collapse:a,coverStart:s,coverEnd:l}}function Bn(e,t){var n=Nn;if(\"left\"==t)for(var i=0;i<e.length&&(n=e[i]).left==n.right;i++);else for(var r=e.length-1;r>=0&&(n=e[r]).left==n.right;r--);return n}function zn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Fn(e){e.display.externalMeasure=null,M(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)zn(e.display.view[t])}function $n(e){Fn(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function Vn(){return c&&m?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function jn(){return c&&m?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Hn(e){var t=0;if(e.widgets)for(var n=0;n<e.widgets.length;++n)e.widgets[n].above&&(t+=_n(e.widgets[n]));return t}function Wn(e,t,n,i,r){if(!r){var o=Hn(t);n.top+=o,n.bottom+=o}if(\"line\"==i)return n;i||(i=\"local\");var a=Ht(t);if(\"local\"==i?a+=Cn(e.display):a-=e.display.viewOffset,\"page\"==i||\"window\"==i){var s=e.display.lineSpace.getBoundingClientRect();a+=s.top+(\"window\"==i?0:jn());var l=s.left+(\"window\"==i?0:Vn());n.left+=l,n.right+=l}return n.top+=a,n.bottom+=a,n}function qn(e,t,n){if(\"div\"==n)return t;var i=t.left,r=t.top;if(\"page\"==n)i-=Vn(),r-=jn();else if(\"local\"==n||!n){var o=e.display.sizer.getBoundingClientRect();i+=o.left,r+=o.top}var a=e.display.lineSpace.getBoundingClientRect();return{left:i-a.left,top:r-a.top}}function Gn(e,t,n,i,r){return i||(i=Ge(e.doc,t.line)),Wn(e,i,In(e,i,t.ch,r),n)}function Un(e,t,n,i,r,o){function a(t,a){var s=Ln(e,r,t,a?\"right\":\"left\",o);return a?s.left=s.right:s.right=s.left,Wn(e,i,s,n)}i=i||Ge(e.doc,t.line),r||(r=En(e,i));var s=ce(i,e.doc.direction),l=t.ch,u=t.sticky;if(l>=i.text.length?(l=i.text.length,u=\"before\"):l<=0&&(l=0,u=\"after\"),!s)return a(\"before\"==u?l-1:l,\"before\"==u);function c(e,t,n){var i=1==s[t].level;return a(n?e-1:e,i!=n)}var h=le(s,l,u),d=se,f=c(l,h,\"before\"==u);return null!=d&&(f.other=c(l,d,\"before\"!=u)),f}function Yn(e,t){var n=0;t=st(e.doc,t),e.options.lineWrapping||(n=ni(e.display)*t.ch);var i=Ge(e.doc,t.line),r=Ht(i)+Cn(e.display);return{left:n,right:n,top:r,bottom:r+i.height}}function Xn(e,t,n,i,r){var o=et(e,t,n);return o.xRel=r,i&&(o.outside=i),o}function Kn(e,t,n){var i=e.doc;if((n+=e.display.viewOffset)<0)return Xn(i.first,0,null,-1,-1);var r=Ze(i,n),o=i.first+i.size-1;if(r>o)return Xn(i.first+i.size-1,Ge(i,o).text.length,null,1,1);t<0&&(t=0);for(var a=Ge(i,r);;){var s=ei(e,a,r,t,n),l=Rt(a,s.ch+(s.xRel>0||s.outside>0?1:0));if(!l)return s;var u=l.find(1);if(u.line==r)return u;a=Ge(i,r=u.line)}}function Zn(e,t,n,i){i-=Hn(t);var r=t.text.length,o=ae(function(t){return Ln(e,n,t-1).bottom<=i},r,0);return{begin:o,end:r=ae(function(t){return Ln(e,n,t).top>i},o,r)}}function Jn(e,t,n,i){return n||(n=En(e,t)),Zn(e,t,n,Wn(e,t,Ln(e,n,i),\"line\").top)}function Qn(e,t,n,i){return!(e.bottom<=n)&&(e.top>n||(i?e.left:e.right)>t)}function ei(e,t,n,i,r){r-=Ht(t);var o=En(e,t),a=Hn(t),s=0,l=t.text.length,u=!0,c=ce(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?function(e,t,n,i,r,o,a){var s=Zn(e,t,i,a),l=s.begin,u=s.end;/\\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,d=0;d<r.length;d++){var f=r[d];if(!(f.from>=u||f.to<=l)){var p=1!=f.level,g=Ln(e,i,p?Math.min(u,f.to)-1:Math.max(l,f.from)).right,m=g<o?o-g+1e9:g-o;(!c||h>m)&&(c=f,h=m)}}c||(c=r[r.length-1]);c.from<l&&(c={from:l,to:c.to,level:c.level});c.to>u&&(c={from:c.from,to:u,level:c.level});return c}:function(e,t,n,i,r,o,a){var s=ae(function(s){var l=r[s],u=1!=l.level;return Qn(Un(e,et(n,u?l.to:l.from,u?\"before\":\"after\"),\"line\",t,i),o,a,!0)},0,r.length-1),l=r[s];if(s>0){var u=1!=l.level,c=Un(e,et(n,u?l.from:l.to,u?\"after\":\"before\"),\"line\",t,i);Qn(c,o,a,!0)&&c.top>a&&(l=r[s-1])}return l})(e,t,n,o,c,i,r);s=(u=1!=h.level)?h.from:h.to-1,l=u?h.to:h.from-1}var d,f,p=null,g=null,m=ae(function(t){var n=Ln(e,o,t);return n.top+=a,n.bottom+=a,!!Qn(n,i,r,!1)&&(n.top<=r&&n.left<=i&&(p=t,g=n),!0)},s,l),v=!1;if(g){var y=i-g.left<g.right-i,b=y==u;m=p+(b?0:1),f=b?\"after\":\"before\",d=y?g.left:g.right}else{u||m!=l&&m!=s||m++,f=0==m?\"after\":m==t.text.length?\"before\":Ln(e,o,m-(u?1:0)).bottom+a<=r==u?\"after\":\"before\";var x=Un(e,et(n,m,f),\"line\",t,o);d=x.left,v=r<x.top?-1:r>=x.bottom?1:0}return Xn(n,m=oe(t.text,m,1),f,v,i-d)}function ti(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Pn){Pn=A(\"pre\",null,\"CodeMirror-line-like\");for(var t=0;t<49;++t)Pn.appendChild(document.createTextNode(\"x\")),Pn.appendChild(A(\"br\"));Pn.appendChild(document.createTextNode(\"x\"))}D(e.measure,Pn);var n=Pn.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),M(e.measure),n||1}function ni(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=A(\"span\",\"xxxxxxxxxx\"),n=A(\"pre\",[t],\"CodeMirror-line-like\");D(e.measure,n);var i=t.getBoundingClientRect(),r=(i.right-i.left)/10;return r>2&&(e.cachedCharWidth=r),r||10}function ii(e){for(var t=e.display,n={},i={},r=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a){var s=e.display.gutterSpecs[a].className;n[s]=o.offsetLeft+o.clientLeft+r,i[s]=o.clientWidth}return{fixedPos:ri(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:i,wrapperWidth:t.wrapper.clientWidth}}function ri(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function oi(e){var t=ti(e.display),n=e.options.lineWrapping,i=n&&Math.max(5,e.display.scroller.clientWidth/ni(e.display)-3);return function(r){if(Vt(e.doc,r))return 0;var o=0;if(r.widgets)for(var a=0;a<r.widgets.length;a++)r.widgets[a].height&&(o+=r.widgets[a].height);return n?o+(Math.ceil(r.text.length/i)||1)*t:o+t}}function ai(e){var t=e.doc,n=oi(e);t.iter(function(e){var t=n(e);t!=e.height&&Xe(e,t)})}function si(e,t,n,i){var r=e.display;if(!n&&\"true\"==Se(t).getAttribute(\"cm-not-content\"))return null;var o,a,s=r.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,a=t.clientY-s.top}catch(e){return null}var l,u=Kn(e,o,a);if(i&&u.xRel>0&&(l=Ge(e.doc,u.line).text).length==u.ch){var c=z(l,l.length,e.options.tabSize)-l.length;u=et(u.line,Math.max(0,Math.round((o-kn(e.display).left)/ni(e.display))-c))}return u}function li(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,i=0;i<n.length;i++)if((t-=n[i].size)<0)return i}function ui(e,t,n,i){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.doc.size),i||(i=0);var r=e.display;if(i&&n<r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>t)&&(r.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=r.viewTo)wt&&Ft(e.doc,t)<r.viewTo&&hi(e);else if(n<=r.viewFrom)wt&&$t(e.doc,n+i)>r.viewFrom?hi(e):(r.viewFrom+=i,r.viewTo+=i);else if(t<=r.viewFrom&&n>=r.viewTo)hi(e);else if(t<=r.viewFrom){var o=di(e,n,n+i,1);o?(r.view=r.view.slice(o.index),r.viewFrom=o.lineN,r.viewTo+=i):hi(e)}else if(n>=r.viewTo){var a=di(e,t,t,-1);a?(r.view=r.view.slice(0,a.index),r.viewTo=a.lineN):hi(e)}else{var s=di(e,t,t,-1),l=di(e,n,n+i,1);s&&l?(r.view=r.view.slice(0,s.index).concat(on(e,s.lineN,l.lineN)).concat(r.view.slice(l.index)),r.viewTo+=i):hi(e)}var u=r.externalMeasured;u&&(n<u.lineN?u.lineN+=i:t<u.lineN+u.size&&(r.externalMeasured=null))}function ci(e,t,n){e.curOp.viewChanged=!0;var i=e.display,r=e.display.externalMeasured;if(r&&t>=r.lineN&&t<r.lineN+r.size&&(i.externalMeasured=null),!(t<i.viewFrom||t>=i.viewTo)){var o=i.view[li(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==$(a,n)&&a.push(n)}}}function hi(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function di(e,t,n,i){var r,o=li(e,t),a=e.display.view;if(!wt||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var s=e.display.viewFrom,l=0;l<o;l++)s+=a[l].size;if(s!=t){if(i>0){if(o==a.length-1)return null;r=s+a[o].size-t,o++}else r=s-t;t+=r,n+=r}for(;Ft(e.doc,n)!=n;){if(o==(i<0?0:a.length-1))return null;n+=i*a[o-(i<0?1:0)].size,o+=i}return{index:o,lineN:n}}function fi(e){for(var t=e.display.view,n=0,i=0;i<t.length;i++){var r=t[i];r.hidden||r.node&&!r.changes||++n}return n}function pi(e){e.display.input.showSelection(e.display.input.prepareSelection())}function gi(e,t){void 0===t&&(t=!0);for(var n=e.doc,i={},r=i.cursors=document.createDocumentFragment(),o=i.selection=document.createDocumentFragment(),a=0;a<n.sel.ranges.length;a++)if(t||a!=n.sel.primIndex){var s=n.sel.ranges[a];if(!(s.from().line>=e.display.viewTo||s.to().line<e.display.viewFrom)){var l=s.empty();(l||e.options.showCursorWhenSelecting)&&mi(e,s.head,r),l||yi(e,s,o)}}return i}function mi(e,t,n){var i=Un(e,t,\"div\",null,null,!e.options.singleCursorHeightPerLine),r=n.appendChild(A(\"div\",\" \",\"CodeMirror-cursor\"));if(r.style.left=i.left+\"px\",r.style.top=i.top+\"px\",r.style.height=Math.max(0,i.bottom-i.top)*e.options.cursorHeight+\"px\",i.other){var o=n.appendChild(A(\"div\",\" \",\"CodeMirror-cursor CodeMirror-secondarycursor\"));o.style.display=\"\",o.style.left=i.other.left+\"px\",o.style.top=i.other.top+\"px\",o.style.height=.85*(i.other.bottom-i.other.top)+\"px\"}}function vi(e,t){return e.top-t.top||e.left-t.left}function yi(e,t,n){var i=e.display,r=e.doc,o=document.createDocumentFragment(),a=kn(e.display),s=a.left,l=Math.max(i.sizerWidth,Mn(e)-i.sizer.offsetLeft)-a.right,u=\"ltr\"==r.direction;function c(e,t,n,i){t<0&&(t=0),t=Math.round(t),i=Math.round(i),o.appendChild(A(\"div\",null,\"CodeMirror-selected\",\"position: absolute; left: \"+e+\"px;\\n                             top: \"+t+\"px; width: \"+(null==n?l-e:n)+\"px;\\n                             height: \"+(i-t)+\"px\"))}function h(t,n,i){var o,a,h=Ge(r,t),d=h.text.length;function f(n,i){return Gn(e,et(t,n),\"div\",h,i)}function p(t,n,i){var r=Jn(e,h,null,t),o=\"ltr\"==n==(\"after\"==i)?\"left\":\"right\";return f(\"after\"==i?r.begin:r.end-(/\\s/.test(h.text.charAt(r.end-1))?2:1),o)[o]}var g=ce(h,r.direction);return function(e,t,n,i){if(!e)return i(t,n,\"ltr\",0);for(var r=!1,o=0;o<e.length;++o){var a=e[o];(a.from<n&&a.to>t||t==n&&a.to==t)&&(i(Math.max(a.from,t),Math.min(a.to,n),1==a.level?\"rtl\":\"ltr\",o),r=!0)}r||i(t,n,\"ltr\")}(g,n||0,null==i?d:i,function(e,t,r,h){var m=\"ltr\"==r,v=f(e,m?\"left\":\"right\"),y=f(t-1,m?\"right\":\"left\"),b=null==n&&0==e,x=null==i&&t==d,_=0==h,w=!g||h==g.length-1;if(y.top-v.top<=3){var C=(u?x:b)&&w,S=(u?b:x)&&_?s:(m?v:y).left,k=C?l:(m?y:v).right;c(S,v.top,k-S,v.bottom)}else{var T,M,D,A;m?(T=u&&b&&_?s:v.left,M=u?l:p(e,r,\"before\"),D=u?s:p(t,r,\"after\"),A=u&&x&&w?l:y.right):(T=u?p(e,r,\"before\"):s,M=!u&&b&&_?l:v.right,D=!u&&x&&w?s:y.left,A=u?p(t,r,\"after\"):l),c(T,v.top,M-T,v.bottom),v.bottom<y.top&&c(s,v.bottom,null,y.top),c(D,y.top,A-D,y.bottom)}(!o||vi(v,o)<0)&&(o=v),vi(y,o)<0&&(o=y),(!a||vi(v,a)<0)&&(a=v),vi(y,a)<0&&(a=y)}),{start:o,end:a}}var d=t.from(),f=t.to();if(d.line==f.line)h(d.line,d.ch,f.ch);else{var p=Ge(r,d.line),g=Ge(r,f.line),m=zt(p)==zt(g),v=h(d.line,d.ch,m?p.text.length+1:null).end,y=h(f.line,m?0:null,f.ch).start;m&&(v.top<y.top-2?(c(v.right,v.top,null,v.bottom),c(s,y.top,y.left,y.bottom)):c(v.right,v.top,y.left-v.right,v.bottom)),v.bottom<y.top&&c(s,v.bottom,null,y.top)}n.appendChild(o)}function bi(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var n=!0;t.cursorDiv.style.visibility=\"\",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){e.hasFocus()||Ci(e),t.cursorDiv.style.visibility=(n=!n)?\"\":\"hidden\"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility=\"hidden\")}}function xi(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||wi(e))}function _i(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Ci(e))},100)}function wi(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),\"nocursor\"!=e.options.readOnly&&(e.state.focused||(ge(e,\"focus\",e,t),e.state.focused=!0,L(e.display.wrapper,\"CodeMirror-focused\"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),l&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),bi(e))}function Ci(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ge(e,\"blur\",e,t),e.state.focused=!1,T(e.display.wrapper,\"CodeMirror-focused\")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function Si(e){for(var t=e.display,n=t.lineDiv.offsetTop,i=0;i<t.view.length;i++){var r=t.view[i],o=e.options.lineWrapping,l=void 0,u=0;if(!r.hidden){if(a&&s<8){var c=r.node.offsetTop+r.node.offsetHeight;l=c-n,n=c}else{var h=r.node.getBoundingClientRect();l=h.bottom-h.top,!o&&r.text.firstChild&&(u=r.text.firstChild.getBoundingClientRect().right-h.left-1)}var d=r.line.height-l;if((d>.005||d<-.005)&&(Xe(r.line,l),ki(r.line),r.rest))for(var f=0;f<r.rest.length;f++)ki(r.rest[f]);if(u>e.display.sizerWidth){var p=Math.ceil(u/ni(e.display));p>e.display.maxLineLength&&(e.display.maxLineLength=p,e.display.maxLine=r.line,e.display.maxLineChanged=!0)}}}}function ki(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var n=e.widgets[t],i=n.node.parentNode;i&&(n.height=i.offsetHeight)}}function Ti(e,t,n){var i=n&&null!=n.top?Math.max(0,n.top):e.scroller.scrollTop;i=Math.floor(i-Cn(e));var r=n&&null!=n.bottom?n.bottom:i+e.wrapper.clientHeight,o=Ze(t,i),a=Ze(t,r);if(n&&n.ensure){var s=n.ensure.from.line,l=n.ensure.to.line;s<o?(o=s,a=Ze(t,Ht(Ge(t,s))+e.wrapper.clientHeight)):Math.min(l,t.lastLine())>=a&&(o=Ze(t,Ht(Ge(t,l))-e.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function Mi(e,t){var n=e.display,i=ti(e.display);t.top<0&&(t.top=0);var r=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:n.scroller.scrollTop,o=Dn(e),a={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+Sn(n),l=t.top<i,u=t.bottom>s-i;if(t.top<r)a.scrollTop=l?0:t.top;else if(t.bottom>r+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=r&&(a.scrollTop=c)}var h=e.options.fixedGutter?0:n.gutters.offsetWidth,d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-h,f=Mn(e)-n.gutters.offsetWidth,p=t.right-t.left>f;return p&&(t.right=t.left+f),t.left<10?a.scrollLeft=0:t.left<d?a.scrollLeft=Math.max(0,t.left+h-(p?0:10)):t.right>f+d-3&&(a.scrollLeft=t.right+(p?0:10)-f),a}function Di(e,t){null!=t&&(Oi(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Ai(e){Oi(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Ii(e,t,n){null==t&&null==n||Oi(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Oi(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Ei(e,Yn(e,t.from),Yn(e,t.to),t.margin))}function Ei(e,t,n,i){var r=Mi(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-i,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+i});Ii(e,r.scrollLeft,r.scrollTop)}function Li(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||or(e,{top:t}),Pi(e,t,!0),n&&or(e),er(e,100))}function Pi(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Ni(e,t,n,i){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!i||(e.doc.scrollLeft=t,lr(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Ri(e){var t=e.display,n=t.gutters.offsetWidth,i=Math.round(e.doc.height+Sn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:i,scrollHeight:i+Tn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var Bi=function(e,t,n){this.cm=n;var i=this.vert=A(\"div\",[A(\"div\",null,null,\"min-width: 1px\")],\"CodeMirror-vscrollbar\"),r=this.horiz=A(\"div\",[A(\"div\",null,null,\"height: 100%; min-height: 1px\")],\"CodeMirror-hscrollbar\");i.tabIndex=r.tabIndex=-1,e(i),e(r),de(i,\"scroll\",function(){i.clientHeight&&t(i.scrollTop,\"vertical\")}),de(r,\"scroll\",function(){r.clientWidth&&t(r.scrollLeft,\"horizontal\")}),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth=\"18px\")};Bi.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,i=e.nativeBarWidth;if(n){this.vert.style.display=\"block\",this.vert.style.bottom=t?i+\"px\":\"0\";var r=e.viewHeight-(t?i:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+r)+\"px\"}else this.vert.style.display=\"\",this.vert.firstChild.style.height=\"0\";if(t){this.horiz.style.display=\"block\",this.horiz.style.right=n?i+\"px\":\"0\",this.horiz.style.left=e.barLeft+\"px\";var o=e.viewWidth-e.barLeft-(n?i:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+\"px\"}else this.horiz.style.display=\"\",this.horiz.firstChild.style.width=\"0\";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==i&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?i:0,bottom:t?i:0}},Bi.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,\"horiz\")},Bi.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,\"vert\")},Bi.prototype.zeroWidthHack=function(){var e=y&&!f?\"12px\":\"18px\";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents=\"none\",this.disableHoriz=new F,this.disableVert=new F},Bi.prototype.enableZeroWidthBar=function(e,t,n){e.style.pointerEvents=\"auto\",t.set(1e3,function i(){var r=e.getBoundingClientRect();(\"vert\"==n?document.elementFromPoint(r.right-1,(r.top+r.bottom)/2):document.elementFromPoint((r.right+r.left)/2,r.bottom-1))!=e?e.style.pointerEvents=\"none\":t.set(1e3,i)})},Bi.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var zi=function(){};function Fi(e,t){t||(t=Ri(e));var n=e.display.barWidth,i=e.display.barHeight;$i(e,t);for(var r=0;r<4&&n!=e.display.barWidth||i!=e.display.barHeight;r++)n!=e.display.barWidth&&e.options.lineWrapping&&Si(e),$i(e,Ri(e)),n=e.display.barWidth,i=e.display.barHeight}function $i(e,t){var n=e.display,i=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=i.right)+\"px\",n.sizer.style.paddingBottom=(n.barHeight=i.bottom)+\"px\",n.heightForcer.style.borderBottom=i.bottom+\"px solid transparent\",i.right&&i.bottom?(n.scrollbarFiller.style.display=\"block\",n.scrollbarFiller.style.height=i.bottom+\"px\",n.scrollbarFiller.style.width=i.right+\"px\"):n.scrollbarFiller.style.display=\"\",i.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display=\"block\",n.gutterFiller.style.height=i.bottom+\"px\",n.gutterFiller.style.width=t.gutterWidth+\"px\"):n.gutterFiller.style.display=\"\"}zi.prototype.update=function(){return{bottom:0,right:0}},zi.prototype.setScrollLeft=function(){},zi.prototype.setScrollTop=function(){},zi.prototype.clear=function(){};var Vi={native:Bi,null:zi};function ji(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Vi[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),de(t,\"mousedown\",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute(\"cm-not-content\",\"true\")},function(t,n){\"horizontal\"==n?Ni(e,t):Li(e,t)},e),e.display.scrollbars.addClass&&L(e.display.wrapper,e.display.scrollbars.addClass)}var Hi=0;function Wi(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Hi},t=e.curOp,an?an.ops.push(t):t.ownsGroup=an={ops:[t],delayedCallbacks:[]}}function qi(e){var t=e.curOp;t&&function(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n<t.length;n++)t[n].call(null);for(var i=0;i<e.ops.length;i++){var r=e.ops[i];if(r.cursorActivityHandlers)for(;r.cursorActivityCalled<r.cursorActivityHandlers.length;)r.cursorActivityHandlers[r.cursorActivityCalled++].call(null,r.cm)}}while(n<t.length)}(n)}finally{an=null,t(n)}}(t,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,n=0;n<t.length;n++)Gi(t[n]);for(var i=0;i<t.length;i++)(r=t[i]).updatedDisplay=r.mustUpdate&&ir(r.cm,r.update);var r;for(var o=0;o<t.length;o++)Ui(t[o]);for(var a=0;a<t.length;a++)Yi(t[a]);for(var s=0;s<t.length;s++)Xi(t[s])}(e)})}function Gi(e){var t=e.cm,n=t.display;!function(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=Tn(e)+\"px\",t.sizer.style.marginBottom=-t.nativeBarWidth+\"px\",t.sizer.style.borderRightWidth=Tn(e)+\"px\",t.scrollbarsClipped=!0)}(t),e.updateMaxLine&&qt(t),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<n.viewFrom||e.scrollToPos.to.line>=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new nr(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Ui(e){var t=e.cm,n=t.display;e.updatedDisplay&&Si(t),e.barMeasure=Ri(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=In(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+Tn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Mn(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Yi(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+\"px\",e.maxScrollLeft<t.doc.scrollLeft&&Ni(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var n=e.focus&&e.focus==E();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,n),(e.updatedDisplay||e.startHeight!=t.doc.height)&&Fi(t,e.barMeasure),e.updatedDisplay&&sr(t,e.barMeasure),e.selectionChanged&&bi(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),n&&xi(e.cm)}function Xi(e){var t=e.cm,n=t.display,i=t.doc;(e.updatedDisplay&&rr(t,e.update),null==n.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(n.wheelStartX=n.wheelStartY=null),null!=e.scrollTop&&Pi(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&Ni(t,e.scrollLeft,!0,!0),e.scrollToPos)&&function(e,t){if(!me(e,\"scrollCursorIntoView\")){var n=e.display,i=n.sizer.getBoundingClientRect(),r=null;if(t.top+i.top<0?r=!0:t.bottom+i.top>(window.innerHeight||document.documentElement.clientHeight)&&(r=!1),null!=r&&!p){var o=A(\"div\",\"​\",null,\"position: absolute;\\n                         top: \"+(t.top-n.viewOffset-Cn(e.display))+\"px;\\n                         height: \"+(t.bottom-t.top+Tn(e)+n.barHeight)+\"px;\\n                         left: \"+t.left+\"px; width: \"+Math.max(2,t.right-t.left)+\"px;\");e.display.lineSpace.appendChild(o),o.scrollIntoView(r),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,n,i){var r;null==i&&(i=0),e.options.lineWrapping||t!=n||(n=\"before\"==(t=t.ch?et(t.line,\"before\"==t.sticky?t.ch-1:t.ch,\"after\"):t).sticky?et(t.line,t.ch+1,\"before\"):t);for(var o=0;o<5;o++){var a=!1,s=Un(e,t),l=n&&n!=t?Un(e,n):s,u=Mi(e,r={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-i,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+i}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(Li(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(a=!0)),null!=u.scrollLeft&&(Ni(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(a=!0)),!a)break}return r}(t,st(i,e.scrollToPos.from),st(i,e.scrollToPos.to),e.scrollToPos.margin));var r=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(r)for(var a=0;a<r.length;++a)r[a].lines.length||ge(r[a],\"hide\");if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&ge(o[s],\"unhide\");n.wrapper.offsetHeight&&(i.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&ge(t,\"changes\",t,e.changeObjs),e.update&&e.update.finish()}function Ki(e,t){if(e.curOp)return t();Wi(e);try{return t()}finally{qi(e)}}function Zi(e,t){return function(){if(e.curOp)return t.apply(e,arguments);Wi(e);try{return t.apply(e,arguments)}finally{qi(e)}}}function Ji(e){return function(){if(this.curOp)return e.apply(this,arguments);Wi(this);try{return e.apply(this,arguments)}finally{qi(this)}}}function Qi(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);Wi(t);try{return e.apply(this,arguments)}finally{qi(t)}}}function er(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,R(tr,e))}function tr(e){var t=e.doc;if(!(t.highlightFrontier>=e.display.viewTo)){var n=+new Date+e.options.workTime,i=ft(e,t.highlightFrontier),r=[];t.iter(i.line,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(i.line>=e.display.viewFrom){var a=o.styles,s=o.text.length>e.options.maxHighlightLength?je(t.mode,i.state):null,l=ht(e,o,i,!0);s&&(i.state=s),o.styles=l.styles;var u=o.styleClasses,c=l.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!a||a.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),d=0;!h&&d<a.length;++d)h=a[d]!=o.styles[d];h&&r.push(i.line),o.stateAfter=i.save(),i.nextLine()}else o.text.length<=e.options.maxHighlightLength&&pt(e,o.text,i),o.stateAfter=i.line%5==0?i.save():null,i.nextLine();if(+new Date>n)return er(e,e.options.workDelay),!0}),t.highlightFrontier=i.line,t.modeFrontier=Math.max(t.modeFrontier,i.line),r.length&&Ki(e,function(){for(var t=0;t<r.length;t++)ci(e,r[t],\"text\")})}}var nr=function(e,t,n){var i=e.display;this.viewport=t,this.visible=Ti(i,e.doc,t),this.editorIsHidden=!i.wrapper.offsetWidth,this.wrapperHeight=i.wrapper.clientHeight,this.wrapperWidth=i.wrapper.clientWidth,this.oldDisplayWidth=Mn(e),this.force=n,this.dims=ii(e),this.events=[]};function ir(e,t){var n=e.display,i=e.doc;if(t.editorIsHidden)return hi(e),!1;if(!t.force&&t.visible.from>=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==fi(e))return!1;ur(e)&&(hi(e),t.dims=ii(e));var r=i.first+i.size,o=Math.max(t.visible.from-e.options.viewportMargin,i.first),a=Math.min(r,t.visible.to+e.options.viewportMargin);n.viewFrom<o&&o-n.viewFrom<20&&(o=Math.max(i.first,n.viewFrom)),n.viewTo>a&&n.viewTo-a<20&&(a=Math.min(r,n.viewTo)),wt&&(o=Ft(e.doc,o),a=$t(e.doc,a));var s=o!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;!function(e,t,n){var i=e.display;0==i.view.length||t>=i.viewTo||n<=i.viewFrom?(i.view=on(e,t,n),i.viewFrom=t):(i.viewFrom>t?i.view=on(e,t,i.viewFrom).concat(i.view):i.viewFrom<t&&(i.view=i.view.slice(li(e,t))),i.viewFrom=t,i.viewTo<n?i.view=i.view.concat(on(e,i.viewTo,n)):i.viewTo>n&&(i.view=i.view.slice(0,li(e,n)))),i.viewTo=n}(e,o,a),n.viewOffset=Ht(Ge(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+\"px\";var u=fi(e);if(!s&&0==u&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var c=function(e){if(e.hasFocus())return null;var t=E();if(!t||!O(e.display.lineDiv,t))return null;var n={activeElt:t};if(window.getSelection){var i=window.getSelection();i.anchorNode&&i.extend&&O(e.display.lineDiv,i.anchorNode)&&(n.anchorNode=i.anchorNode,n.anchorOffset=i.anchorOffset,n.focusNode=i.focusNode,n.focusOffset=i.focusOffset)}return n}(e);return u>4&&(n.lineDiv.style.display=\"none\"),function(e,t,n){var i=e.display,r=e.options.lineNumbers,o=i.lineDiv,a=o.firstChild;function s(t){var n=t.nextSibling;return l&&y&&e.display.currentWheelTarget==t?t.style.display=\"none\":t.parentNode.removeChild(t),n}for(var u=i.view,c=i.viewFrom,h=0;h<u.length;h++){var d=u[h];if(d.hidden);else if(d.node&&d.node.parentNode==o){for(;a!=d.node;)a=s(a);var f=r&&null!=t&&t<=c&&d.lineNumber;d.changes&&($(d.changes,\"gutter\")>-1&&(f=!1),cn(e,d,c,n)),f&&(M(d.lineNumber),d.lineNumber.appendChild(document.createTextNode(Qe(e.options,c)))),a=d.node.nextSibling}else{var p=vn(e,d,c,n);o.insertBefore(p,a)}c+=d.size}for(;a;)a=s(a)}(e,n.updateLineNumbers,t.dims),u>4&&(n.lineDiv.style.display=\"\"),n.renderedView=n.view,function(e){if(e&&e.activeElt&&e.activeElt!=E()&&(e.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName)&&e.anchorNode&&O(document.body,e.anchorNode)&&O(document.body,e.focusNode))){var t=window.getSelection(),n=document.createRange();n.setEnd(e.anchorNode,e.anchorOffset),n.collapse(!1),t.removeAllRanges(),t.addRange(n),t.extend(e.focusNode,e.focusOffset)}}(c),M(n.cursorDiv),M(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,er(e,400)),n.updateLineNumbers=null,!0}function rr(e,t){for(var n=t.viewport,i=!0;;i=!1){if(i&&e.options.lineWrapping&&t.oldDisplayWidth!=Mn(e))i&&(t.visible=Ti(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+Sn(e.display)-Dn(e),n.top)}),t.visible=Ti(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!ir(e,t))break;Si(e);var r=Ri(e);pi(e),Fi(e,r),sr(e,r),t.force=!1}t.signal(e,\"update\",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,\"viewportChange\",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function or(e,t){var n=new nr(e,t);if(ir(e,n)){Si(e),rr(e,n);var i=Ri(e);pi(e),Fi(e,i),sr(e,i),n.finish()}}function ar(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+\"px\"}function sr(e,t){e.display.sizer.style.minHeight=t.docHeight+\"px\",e.display.heightForcer.style.top=t.docHeight+\"px\",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Tn(e)+\"px\"}function lr(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var i=ri(t)-t.scroller.scrollLeft+e.doc.scrollLeft,r=t.gutters.offsetWidth,o=i+\"px\",a=0;a<n.length;a++)if(!n[a].hidden){e.options.fixedGutter&&(n[a].gutter&&(n[a].gutter.style.left=o),n[a].gutterBackground&&(n[a].gutterBackground.style.left=o));var s=n[a].alignable;if(s)for(var l=0;l<s.length;l++)s[l].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=i+r+\"px\")}}function ur(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=Qe(e.options,t.first+t.size-1),i=e.display;if(n.length!=i.lineNumChars){var r=i.measure.appendChild(A(\"div\",[A(\"div\",n)],\"CodeMirror-linenumber CodeMirror-gutter-elt\")),o=r.firstChild.offsetWidth,a=r.offsetWidth-o;return i.lineGutter.style.width=\"\",i.lineNumInnerWidth=Math.max(o,i.lineGutter.offsetWidth-a)+1,i.lineNumWidth=i.lineNumInnerWidth+a,i.lineNumChars=i.lineNumInnerWidth?n.length:-1,i.lineGutter.style.width=i.lineNumWidth+\"px\",ar(e.display),!0}return!1}function cr(e,t){for(var n=[],i=!1,r=0;r<e.length;r++){var o=e[r],a=null;if(\"string\"!=typeof o&&(a=o.style,o=o.className),\"CodeMirror-linenumbers\"==o){if(!t)continue;i=!0}n.push({className:o,style:a})}return t&&!i&&n.push({className:\"CodeMirror-linenumbers\",style:null}),n}function hr(e){var t=e.gutters,n=e.gutterSpecs;M(t),e.lineGutter=null;for(var i=0;i<n.length;++i){var r=n[i],o=r.className,a=r.style,s=t.appendChild(A(\"div\",null,\"CodeMirror-gutter \"+o));a&&(s.style.cssText=a),\"CodeMirror-linenumbers\"==o&&(e.lineGutter=s,s.style.width=(e.lineNumWidth||1)+\"px\")}t.style.display=n.length?\"\":\"none\",ar(e)}function dr(e){hr(e.display),ui(e),lr(e)}nr.prototype.signal=function(e,t){ye(e,t)&&this.events.push(arguments)},nr.prototype.finish=function(){for(var e=0;e<this.events.length;e++)ge.apply(null,this.events[e])};var fr=0,pr=null;function gr(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}}function mr(e){var t=gr(e);return t.x*=pr,t.y*=pr,t}function vr(e,t){var i=gr(t),r=i.x,o=i.y,a=e.display,s=a.scroller,u=s.scrollWidth>s.clientWidth,c=s.scrollHeight>s.clientHeight;if(r&&u||o&&c){if(o&&y&&l)e:for(var d=t.target,f=a.view;d!=s;d=d.parentNode)for(var p=0;p<f.length;p++)if(f[p].node==d){e.display.currentWheelTarget=d;break e}if(r&&!n&&!h&&null!=pr)return o&&c&&Li(e,Math.max(0,s.scrollTop+o*pr)),Ni(e,Math.max(0,s.scrollLeft+r*pr)),(!o||o&&c)&&xe(t),void(a.wheelStartX=null);if(o&&null!=pr){var g=o*pr,m=e.doc.scrollTop,v=m+a.wrapper.clientHeight;g<0?m=Math.max(0,m+g-50):v=Math.min(e.doc.height,v+g+50),or(e,{top:m,bottom:v})}fr<20&&(null==a.wheelStartX?(a.wheelStartX=s.scrollLeft,a.wheelStartY=s.scrollTop,a.wheelDX=r,a.wheelDY=o,setTimeout(function(){if(null!=a.wheelStartX){var e=s.scrollLeft-a.wheelStartX,t=s.scrollTop-a.wheelStartY,n=t&&a.wheelDY&&t/a.wheelDY||e&&a.wheelDX&&e/a.wheelDX;a.wheelStartX=a.wheelStartY=null,n&&(pr=(pr*fr+n)/(fr+1),++fr)}},200)):(a.wheelDX+=r,a.wheelDY+=o))}}a?pr=-.53:n?pr=15:c?pr=-.7:d&&(pr=-1/3);var yr=function(e,t){this.ranges=e,this.primIndex=t};yr.prototype.primary=function(){return this.ranges[this.primIndex]},yr.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var n=this.ranges[t],i=e.ranges[t];if(!nt(n.anchor,i.anchor)||!nt(n.head,i.head))return!1}return!0},yr.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new br(it(this.ranges[t].anchor),it(this.ranges[t].head));return new yr(e,this.primIndex)},yr.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},yr.prototype.contains=function(e,t){t||(t=e);for(var n=0;n<this.ranges.length;n++){var i=this.ranges[n];if(tt(t,i.from())>=0&&tt(e,i.to())<=0)return n}return-1};var br=function(e,t){this.anchor=e,this.head=t};function xr(e,t,n){var i=e&&e.options.selectionsMayTouch,r=t[n];t.sort(function(e,t){return tt(e.from(),t.from())}),n=$(t,r);for(var o=1;o<t.length;o++){var a=t[o],s=t[o-1],l=tt(s.to(),a.from());if(i&&!a.empty()?l>0:l>=0){var u=ot(s.from(),a.from()),c=rt(s.to(),a.to()),h=s.empty()?a.from()==a.head:s.from()==s.head;o<=n&&--n,t.splice(--o,2,new br(h?c:u,h?u:c))}}return new yr(t,n)}function _r(e,t){return new yr([new br(e,t||e)],0)}function wr(e){return e.text?et(e.from.line+e.text.length-1,X(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Cr(e,t){if(tt(e,t.from)<0)return e;if(tt(e,t.to)<=0)return wr(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,i=e.ch;return e.line==t.to.line&&(i+=wr(t).ch-t.to.ch),et(n,i)}function Sr(e,t){for(var n=[],i=0;i<e.sel.ranges.length;i++){var r=e.sel.ranges[i];n.push(new br(Cr(r.anchor,t),Cr(r.head,t)))}return xr(e.cm,n,e.sel.primIndex)}function kr(e,t,n){return e.line==t.line?et(n.line,e.ch-t.ch+n.ch):et(n.line+(e.line-t.line),e.ch)}function Tr(e){e.doc.mode=Fe(e.options,e.doc.modeOption),Mr(e)}function Mr(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,er(e,100),e.state.modeGen++,e.curOp&&ui(e)}function Dr(e,t){return 0==t.from.ch&&0==t.to.ch&&\"\"==X(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Ar(e,t,n,i){function r(e){return n?n[e]:null}function o(e,n,r){!function(e,t,n,i){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),Dt(e),At(e,n);var r=i?i(e):1;r!=e.height&&Xe(e,r)}(e,n,r,i),ln(e,\"change\",e,t)}function a(e,t){for(var n=[],o=e;o<t;++o)n.push(new Gt(u[o],r(o),i));return n}var s=t.from,l=t.to,u=t.text,c=Ge(e,s.line),h=Ge(e,l.line),d=X(u),f=r(u.length-1),p=l.line-s.line;if(t.full)e.insert(0,a(0,u.length)),e.remove(u.length,e.size-u.length);else if(Dr(e,t)){var g=a(0,u.length-1);o(h,h.text,f),p&&e.remove(s.line,p),g.length&&e.insert(s.line,g)}else if(c==h)if(1==u.length)o(c,c.text.slice(0,s.ch)+d+c.text.slice(l.ch),f);else{var m=a(1,u.length-1);m.push(new Gt(d+c.text.slice(l.ch),f,i)),o(c,c.text.slice(0,s.ch)+u[0],r(0)),e.insert(s.line+1,m)}else if(1==u.length)o(c,c.text.slice(0,s.ch)+u[0]+h.text.slice(l.ch),r(0)),e.remove(s.line+1,p);else{o(c,c.text.slice(0,s.ch)+u[0],r(0)),o(h,d+h.text.slice(l.ch),f);var v=a(1,u.length-1);p>1&&e.remove(s.line+1,p-1),e.insert(s.line+1,v)}ln(e,\"change\",e,t)}function Ir(e,t,n){!function e(i,r,o){if(i.linked)for(var a=0;a<i.linked.length;++a){var s=i.linked[a];if(s.doc!=r){var l=o&&s.sharedHist;n&&!l||(t(s.doc,l),e(s.doc,i,l))}}}(e,null,!0)}function Or(e,t){if(t.cm)throw new Error(\"This document is already in use.\");e.doc=t,t.cm=e,ai(e),Tr(e),Er(e),e.options.lineWrapping||qt(e),e.options.mode=t.modeOption,ui(e)}function Er(e){(\"rtl\"==e.doc.direction?L:T)(e.display.lineDiv,\"CodeMirror-rtl\")}function Lr(e){this.done=[],this.undone=[],this.undoDepth=1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e||1}function Pr(e,t){var n={from:it(t.from),to:wr(t),text:Ue(e,t.from,t.to)};return Fr(e,n,t.from.line,t.to.line+1),Ir(e,function(e){return Fr(e,n,t.from.line,t.to.line+1)},!0),n}function Nr(e){for(;e.length;){if(!X(e).ranges)break;e.pop()}}function Rr(e,t,n,i){var r=e.history;r.undone.length=0;var o,a,s=+new Date;if((r.lastOp==i||r.lastOrigin==t.origin&&t.origin&&(\"+\"==t.origin.charAt(0)&&r.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||\"*\"==t.origin.charAt(0)))&&(o=function(e,t){return t?(Nr(e.done),X(e.done)):e.done.length&&!X(e.done).ranges?X(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),X(e.done)):void 0}(r,r.lastOp==i)))a=X(o.changes),0==tt(t.from,t.to)&&0==tt(t.from,a.to)?a.to=wr(t):o.changes.push(Pr(e,t));else{var l=X(r.done);for(l&&l.ranges||zr(e.sel,r.done),o={changes:[Pr(e,t)],generation:r.generation},r.done.push(o);r.done.length>r.undoDepth;)r.done.shift(),r.done[0].ranges||r.done.shift()}r.done.push(n),r.generation=++r.maxGeneration,r.lastModTime=r.lastSelTime=s,r.lastOp=r.lastSelOp=i,r.lastOrigin=r.lastSelOrigin=t.origin,a||ge(e,\"historyAdded\")}function Br(e,t,n,i){var r=e.history,o=i&&i.origin;n==r.lastSelOp||o&&r.lastSelOrigin==o&&(r.lastModTime==r.lastSelTime&&r.lastOrigin==o||function(e,t,n,i){var r=t.charAt(0);return\"*\"==r||\"+\"==r&&n.ranges.length==i.ranges.length&&n.somethingSelected()==i.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,o,X(r.done),t))?r.done[r.done.length-1]=t:zr(t,r.done),r.lastSelTime=+new Date,r.lastSelOrigin=o,r.lastSelOp=n,i&&!1!==i.clearRedo&&Nr(r.undone)}function zr(e,t){var n=X(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Fr(e,t,n,i){var r=t[\"spans_\"+e.id],o=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,i),function(n){n.markedSpans&&((r||(r=t[\"spans_\"+e.id]={}))[o]=n.markedSpans),++o})}function $r(e){if(!e)return null;for(var t,n=0;n<e.length;++n)e[n].marker.explicitlyCleared?t||(t=e.slice(0,n)):t&&t.push(e[n]);return t?t.length?t:null:e}function Vr(e,t){var n=function(e,t){var n=t[\"spans_\"+e.id];if(!n)return null;for(var i=[],r=0;r<t.text.length;++r)i.push($r(n[r]));return i}(e,t),i=Tt(e,t);if(!n)return i;if(!i)return n;for(var r=0;r<n.length;++r){var o=n[r],a=i[r];if(o&&a)e:for(var s=0;s<a.length;++s){for(var l=a[s],u=0;u<o.length;++u)if(o[u].marker==l.marker)continue e;o.push(l)}else a&&(n[r]=a)}return n}function jr(e,t,n){for(var i=[],r=0;r<e.length;++r){var o=e[r];if(o.ranges)i.push(n?yr.prototype.deepCopy.call(o):o);else{var a=o.changes,s=[];i.push({changes:s});for(var l=0;l<a.length;++l){var u=a[l],c=void 0;if(s.push({from:u.from,to:u.to,text:u.text}),t)for(var h in u)(c=h.match(/^spans_(\\d+)$/))&&$(t,Number(c[1]))>-1&&(X(s)[h]=u[h],delete u[h])}}}return i}function Hr(e,t,n,i){if(i){var r=e.anchor;if(n){var o=tt(t,r)<0;o!=tt(n,r)<0?(r=t,t=n):o!=tt(t,n)<0&&(t=n)}return new br(r,t)}return new br(n||t,t)}function Wr(e,t,n,i,r){null==r&&(r=e.cm&&(e.cm.display.shift||e.extend)),Xr(e,new yr([Hr(e.sel.primary(),t,n,r)],0),i)}function qr(e,t,n){for(var i=[],r=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)i[o]=Hr(e.sel.ranges[o],t[o],null,r);Xr(e,xr(e.cm,i,e.sel.primIndex),n)}function Gr(e,t,n,i){var r=e.sel.ranges.slice(0);r[t]=n,Xr(e,xr(e.cm,r,e.sel.primIndex),i)}function Ur(e,t,n,i){Xr(e,_r(t,n),i)}function Yr(e,t,n){var i=e.history.done,r=X(i);r&&r.ranges?(i[i.length-1]=t,Kr(e,t,n)):Xr(e,t,n)}function Xr(e,t,n){Kr(e,t,n),Br(e,e.sel,e.cm?e.cm.curOp.id:NaN,n)}function Kr(e,t,n){(ye(e,\"beforeSelectionChange\")||e.cm&&ye(e.cm,\"beforeSelectionChange\"))&&(t=function(e,t,n){var i={ranges:t.ranges,update:function(t){this.ranges=[];for(var n=0;n<t.length;n++)this.ranges[n]=new br(st(e,t[n].anchor),st(e,t[n].head))},origin:n&&n.origin};return ge(e,\"beforeSelectionChange\",e,i),e.cm&&ge(e.cm,\"beforeSelectionChange\",e.cm,i),i.ranges!=t.ranges?xr(e.cm,i.ranges,i.ranges.length-1):t}(e,t,n)),Zr(e,Qr(e,t,n&&n.bias||(tt(t.primary().head,e.sel.primary().head)<0?-1:1),!0)),n&&!1===n.scroll||!e.cm||\"nocursor\"==e.cm.getOption(\"readOnly\")||Ai(e.cm)}function Zr(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=1,e.cm.curOp.selectionChanged=!0,ve(e.cm)),ln(e,\"cursorActivity\",e))}function Jr(e){Zr(e,Qr(e,e.sel,null,!1))}function Qr(e,t,n,i){for(var r,o=0;o<t.ranges.length;o++){var a=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],l=to(e,a.anchor,s&&s.anchor,n,i),u=to(e,a.head,s&&s.head,n,i);(r||l!=a.anchor||u!=a.head)&&(r||(r=t.ranges.slice(0,o)),r[o]=new br(l,u))}return r?xr(e.cm,r,t.primIndex):t}function eo(e,t,n,i,r){var o=Ge(e,t.line);if(o.markedSpans)for(var a=0;a<o.markedSpans.length;++a){var s=o.markedSpans[a],l=s.marker,u=\"selectLeft\"in l?!l.selectLeft:l.inclusiveLeft,c=\"selectRight\"in l?!l.selectRight:l.inclusiveRight;if((null==s.from||(u?s.from<=t.ch:s.from<t.ch))&&(null==s.to||(c?s.to>=t.ch:s.to>t.ch))){if(r&&(ge(l,\"beforeCursorEnter\"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var h=l.find(i<0?1:-1),d=void 0;if((i<0?c:u)&&(h=no(e,h,-i,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(d=tt(h,n))&&(i<0?d<0:d>0))return eo(e,h,t,i,r)}var f=l.find(i<0?-1:1);return(i<0?u:c)&&(f=no(e,f,i,f.line==t.line?o:null)),f?eo(e,f,t,i,r):null}}return t}function to(e,t,n,i,r){var o=i||1,a=eo(e,t,n,o,r)||!r&&eo(e,t,n,o,!0)||eo(e,t,n,-o,r)||!r&&eo(e,t,n,-o,!0);return a||(e.cantEdit=!0,et(e.first,0))}function no(e,t,n,i){return n<0&&0==t.ch?t.line>e.first?st(e,et(t.line-1)):null:n>0&&t.ch==(i||Ge(e,t.line)).text.length?t.line<e.first+e.size-1?et(t.line+1,0):null:new et(t.line,t.ch+n)}function io(e){e.setSelection(et(e.firstLine(),0),et(e.lastLine()),H)}function ro(e,t,n){var i={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){return i.canceled=!0}};return n&&(i.update=function(t,n,r,o){t&&(i.from=st(e,t)),n&&(i.to=st(e,n)),r&&(i.text=r),void 0!==o&&(i.origin=o)}),ge(e,\"beforeChange\",e,i),e.cm&&ge(e.cm,\"beforeChange\",e.cm,i),i.canceled?(e.cm&&(e.cm.curOp.updateInput=2),null):{from:i.from,to:i.to,text:i.text,origin:i.origin}}function oo(e,t,n){if(e.cm){if(!e.cm.curOp)return Zi(e.cm,oo)(e,t,n);if(e.cm.state.suppressEdits)return}if(!(ye(e,\"beforeChange\")||e.cm&&ye(e.cm,\"beforeChange\"))||(t=ro(e,t,!0))){var i=_t&&!n&&function(e,t,n){var i=null;if(e.iter(t.line,n.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var n=e.markedSpans[t].marker;!n.readOnly||i&&-1!=$(i,n)||(i||(i=[])).push(n)}}),!i)return null;for(var r=[{from:t,to:n}],o=0;o<i.length;++o)for(var a=i[o],s=a.find(0),l=0;l<r.length;++l){var u=r[l];if(!(tt(u.to,s.from)<0||tt(u.from,s.to)>0)){var c=[l,1],h=tt(u.from,s.from),d=tt(u.to,s.to);(h<0||!a.inclusiveLeft&&!h)&&c.push({from:u.from,to:s.from}),(d>0||!a.inclusiveRight&&!d)&&c.push({from:s.to,to:u.to}),r.splice.apply(r,c),l+=c.length-3}}return r}(e,t.from,t.to);if(i)for(var r=i.length-1;r>=0;--r)ao(e,{from:i[r].from,to:i[r].to,text:r?[\"\"]:t.text,origin:t.origin});else ao(e,t)}}function ao(e,t){if(1!=t.text.length||\"\"!=t.text[0]||0!=tt(t.from,t.to)){var n=Sr(e,t);Rr(e,t,n,e.cm?e.cm.curOp.id:NaN),uo(e,t,n,Tt(e,t));var i=[];Ir(e,function(e,n){n||-1!=$(i,e.history)||(po(e.history,t),i.push(e.history)),uo(e,t,null,Tt(e,t))})}}function so(e,t,n){var i=e.cm&&e.cm.state.suppressEdits;if(!i||n){for(var r,o=e.history,a=e.sel,s=\"undo\"==t?o.done:o.undone,l=\"undo\"==t?o.undone:o.done,u=0;u<s.length&&(r=s[u],n?!r.ranges||r.equals(e.sel):r.ranges);u++);if(u!=s.length){for(o.lastOrigin=o.lastSelOrigin=null;;){if(!(r=s.pop()).ranges){if(i)return void s.push(r);break}if(zr(r,l),n&&!r.equals(e.sel))return void Xr(e,r,{clearRedo:!1});a=r}var c=[];zr(a,l),l.push({changes:c,generation:o.generation}),o.generation=r.generation||++o.maxGeneration;for(var h=ye(e,\"beforeChange\")||e.cm&&ye(e.cm,\"beforeChange\"),d=function(n){var i=r.changes[n];if(i.origin=t,h&&!ro(e,i,!1))return s.length=0,{};c.push(Pr(e,i));var o=n?Sr(e,i):X(s);uo(e,i,o,Vr(e,i)),!n&&e.cm&&e.cm.scrollIntoView({from:i.from,to:wr(i)});var a=[];Ir(e,function(e,t){t||-1!=$(a,e.history)||(po(e.history,i),a.push(e.history)),uo(e,i,null,Vr(e,i))})},f=r.changes.length-1;f>=0;--f){var p=d(f);if(p)return p.v}}}}function lo(e,t){if(0!=t&&(e.first+=t,e.sel=new yr(K(e.sel.ranges,function(e){return new br(et(e.anchor.line+t,e.anchor.ch),et(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){ui(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,i=n.viewFrom;i<n.viewTo;i++)ci(e.cm,i,\"gutter\")}}function uo(e,t,n,i){if(e.cm&&!e.cm.curOp)return Zi(e.cm,uo)(e,t,n,i);if(t.to.line<e.first)lo(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var r=t.text.length-1-(e.first-t.from.line);lo(e,r),t={from:et(e.first,0),to:et(t.to.line+r,t.to.ch),text:[X(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:et(o,Ge(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ue(e,t.from,t.to),n||(n=Sr(e,t)),e.cm?function(e,t,n){var i=e.doc,r=e.display,o=t.from,a=t.to,s=!1,l=o.line;e.options.lineWrapping||(l=Ke(zt(Ge(i,o.line))),i.iter(l,a.line+1,function(e){if(e==r.maxLine)return s=!0,!0}));i.sel.contains(t.from,t.to)>-1&&ve(e);Ar(i,t,n,oi(e)),e.options.lineWrapping||(i.iter(l,o.line+t.text.length,function(e){var t=Wt(e);t>r.maxLineLength&&(r.maxLine=e,r.maxLineLength=t,r.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var n=e.first,i=t-1;i>n;i--){var r=Ge(e,i).stateAfter;if(r&&(!(r instanceof ut)||i+r.lookAhead<t)){n=i+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,n)}})(i,o.line),er(e,400);var u=t.text.length-(a.line-o.line)-1;t.full?ui(e):o.line!=a.line||1!=t.text.length||Dr(e.doc,t)?ui(e,o.line,a.line+1,u):ci(e,o.line,\"text\");var c=ye(e,\"changes\"),h=ye(e,\"change\");if(h||c){var d={from:o,to:a,text:t.text,removed:t.removed,origin:t.origin};h&&ln(e,\"change\",e,d),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(d)}e.display.selForContextMenu=null}(e.cm,t,i):Ar(e,t,i),Kr(e,n,H),e.cantEdit&&to(e,et(e.firstLine(),0))&&(e.cantEdit=!1)}}function co(e,t,n,i,r){var o;i||(i=n),tt(i,n)<0&&(n=(o=[i,n])[0],i=o[1]),\"string\"==typeof t&&(t=e.splitLines(t)),oo(e,{from:n,to:i,text:t,origin:r})}function ho(e,t,n,i){n<e.line?e.line+=i:t<e.line&&(e.line=t,e.ch=0)}function fo(e,t,n,i){for(var r=0;r<e.length;++r){var o=e[r],a=!0;if(o.ranges){o.copied||((o=e[r]=o.deepCopy()).copied=!0);for(var s=0;s<o.ranges.length;s++)ho(o.ranges[s].anchor,t,n,i),ho(o.ranges[s].head,t,n,i)}else{for(var l=0;l<o.changes.length;++l){var u=o.changes[l];if(n<u.from.line)u.from=et(u.from.line+i,u.from.ch),u.to=et(u.to.line+i,u.to.ch);else if(t<=u.to.line){a=!1;break}}a||(e.splice(0,r+1),r=0)}}}function po(e,t){var n=t.from.line,i=t.to.line,r=t.text.length-(i-n)-1;fo(e.done,n,i,r),fo(e.undone,n,i,r)}function go(e,t,n,i){var r=t,o=t;return\"number\"==typeof t?o=Ge(e,at(e,t)):r=Ke(t),null==r?null:(i(o,r)&&e.cm&&ci(e.cm,r,n),o)}function mo(e){this.lines=e,this.parent=null;for(var t=0,n=0;n<e.length;++n)e[n].parent=this,t+=e[n].height;this.height=t}function vo(e){this.children=e;for(var t=0,n=0,i=0;i<e.length;++i){var r=e[i];t+=r.chunkSize(),n+=r.height,r.parent=this}this.size=t,this.height=n,this.parent=null}br.prototype.from=function(){return ot(this.anchor,this.head)},br.prototype.to=function(){return rt(this.anchor,this.head)},br.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},mo.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=e,i=e+t;n<i;++n){var r=this.lines[n];this.height-=r.height,Ut(r),ln(r,\"delete\")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,n){this.height+=n,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var i=0;i<t.length;++i)t[i].parent=this},iterN:function(e,t,n){for(var i=e+t;e<i;++e)if(n(this.lines[e]))return!0}},vo.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var n=0;n<this.children.length;++n){var i=this.children[n],r=i.chunkSize();if(e<r){var o=Math.min(t,r-e),a=i.height;if(i.removeInner(e,o),this.height-=a-i.height,r==o&&(this.children.splice(n--,1),i.parent=null),0==(t-=o))break;e=0}else e-=r}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof mo))){var s=[];this.collapse(s),this.children=[new mo(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,n){this.size+=t.length,this.height+=n;for(var i=0;i<this.children.length;++i){var r=this.children[i],o=r.chunkSize();if(e<=o){if(r.insertInner(e,t,n),r.lines&&r.lines.length>50){for(var a=r.lines.length%25+25,s=a;s<r.lines.length;){var l=new mo(r.lines.slice(s,s+=25));r.height-=l.height,this.children.splice(++i,0,l),l.parent=this}r.lines=r.lines.slice(0,a),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new vo(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var n=$(e.parent.children,e);e.parent.children.splice(n+1,0,t)}else{var i=new vo(e.children);i.parent=e,e.children=[i,t],e=i}t.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var i=0;i<this.children.length;++i){var r=this.children[i],o=r.chunkSize();if(e<o){var a=Math.min(t,o-e);if(r.iterN(e,a,n))return!0;if(0==(t-=a))break;e=0}else e-=o}}};var yo=function(e,t,n){if(n)for(var i in n)n.hasOwnProperty(i)&&(this[i]=n[i]);this.doc=e,this.node=t};function bo(e,t,n){Ht(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Di(e,n)}yo.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,n=this.line,i=Ke(n);if(null!=i&&t){for(var r=0;r<t.length;++r)t[r]==this&&t.splice(r--,1);t.length||(n.widgets=null);var o=_n(this);Xe(n,Math.max(0,n.height-o)),e&&(Ki(e,function(){bo(e,n,-o),ci(e,i,\"widget\")}),ln(e,\"lineWidgetCleared\",e,this,i))}},yo.prototype.changed=function(){var e=this,t=this.height,n=this.doc.cm,i=this.line;this.height=null;var r=_n(this)-t;r&&(Vt(this.doc,i)||Xe(i,i.height+r),n&&Ki(n,function(){n.curOp.forceUpdate=!0,bo(n,i,r),ln(n,\"lineWidgetChanged\",n,e,Ke(i))}))},be(yo);var xo=0,_o=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++xo};function wo(e,t,n,i,r){if(i&&i.shared)return function(e,t,n,i,r){(i=B(i)).shared=!1;var o=[wo(e,t,n,i,r)],a=o[0],s=i.widgetNode;return Ir(e,function(e){s&&(i.widgetNode=s.cloneNode(!0)),o.push(wo(e,st(e,t),st(e,n),i,r));for(var l=0;l<e.linked.length;++l)if(e.linked[l].isParent)return;a=X(o)}),new Co(o,a)}(e,t,n,i,r);if(e.cm&&!e.cm.curOp)return Zi(e.cm,wo)(e,t,n,i,r);var o=new _o(e,r),a=tt(t,n);if(i&&B(i,o,!1),a>0||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=I(\"span\",[o.replacedWith],\"CodeMirror-widget\"),i.handleMouseEvents||o.widgetNode.setAttribute(\"cm-ignore-events\",\"true\"),i.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Bt(e,t.line,t,n,o)||t.line!=n.line&&Bt(e,n.line,t,n,o))throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");wt=!0}o.addToHistory&&Rr(e,{from:t,to:n,origin:\"markText\"},e.sel,NaN);var s,l=t.line,u=e.cm;if(e.iter(l,n.line+1,function(e){u&&o.collapsed&&!u.options.lineWrapping&&zt(e)==u.display.maxLine&&(s=!0),o.collapsed&&l!=t.line&&Xe(e,0),function(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}(e,new Ct(o,l==t.line?t.ch:null,l==n.line?n.ch:null)),++l}),o.collapsed&&e.iter(t.line,n.line+1,function(t){Vt(e,t)&&Xe(t,0)}),o.clearOnEnter&&de(o,\"beforeCursorEnter\",function(){return o.clear()}),o.readOnly&&(_t=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++xo,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)ui(u,t.line,n.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=t.line;c<=n.line;c++)ci(u,c,\"text\");o.atomic&&Jr(u.doc),ln(u,\"markerAdded\",u,o)}return o}_o.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Wi(e),ye(this,\"clear\")){var n=this.find();n&&ln(this,\"clear\",n.from,n.to)}for(var i=null,r=null,o=0;o<this.lines.length;++o){var a=this.lines[o],s=St(a.markedSpans,this);e&&!this.collapsed?ci(e,Ke(a),\"text\"):e&&(null!=s.to&&(r=Ke(a)),null!=s.from&&(i=Ke(a))),a.markedSpans=kt(a.markedSpans,s),null==s.from&&this.collapsed&&!Vt(this.doc,a)&&e&&Xe(a,ti(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var l=0;l<this.lines.length;++l){var u=zt(this.lines[l]),c=Wt(u);c>e.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=i&&e&&this.collapsed&&ui(e,i,r+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Jr(e.doc)),e&&ln(e,\"markerCleared\",e,this,i,r),t&&qi(e),this.parent&&this.parent.clear()}},_o.prototype.find=function(e,t){var n,i;null==e&&\"bookmark\"==this.type&&(e=1);for(var r=0;r<this.lines.length;++r){var o=this.lines[r],a=St(o.markedSpans,this);if(null!=a.from&&(n=et(t?o:Ke(o),a.from),-1==e))return n;if(null!=a.to&&(i=et(t?o:Ke(o),a.to),1==e))return i}return n&&{from:n,to:i}},_o.prototype.changed=function(){var e=this,t=this.find(-1,!0),n=this,i=this.doc.cm;t&&i&&Ki(i,function(){var r=t.line,o=Ke(t.line),a=On(i,o);if(a&&(zn(a),i.curOp.selectionChanged=i.curOp.forceUpdate=!0),i.curOp.updateMaxLine=!0,!Vt(n.doc,r)&&null!=n.height){var s=n.height;n.height=null;var l=_n(n)-s;l&&Xe(r,r.height+l)}ln(i,\"markerChanged\",i,e)})},_o.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=$(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},_o.prototype.detachLine=function(e){if(this.lines.splice($(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},be(_o);var Co=function(e,t){this.markers=e,this.primary=t;for(var n=0;n<e.length;++n)e[n].parent=this};function So(e){return e.findMarks(et(e.first,0),e.clipPos(et(e.lastLine())),function(e){return e.parent})}function ko(e){for(var t=function(t){var n=e[t],i=[n.primary.doc];Ir(n.primary.doc,function(e){return i.push(e)});for(var r=0;r<n.markers.length;r++){var o=n.markers[r];-1==$(i,o.doc)&&(o.parent=null,n.markers.splice(r--,1))}},n=0;n<e.length;n++)t(n)}Co.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();ln(this,\"clear\")}},Co.prototype.find=function(e,t){return this.primary.find(e,t)},be(Co);var To=0,Mo=function(e,t,n,i,r){if(!(this instanceof Mo))return new Mo(e,t,n,i,r);null==n&&(n=0),vo.call(this,[new mo([new Gt(\"\",null)])]),this.first=n,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=n;var o=et(n,0);this.sel=_r(o),this.history=new Lr(null),this.id=++To,this.modeOption=t,this.lineSep=i,this.direction=\"rtl\"==r?\"rtl\":\"ltr\",this.extend=!1,\"string\"==typeof e&&(e=this.splitLines(e)),Ar(this,{from:o,to:o,text:e}),Xr(this,_r(o),H)};Mo.prototype=J(vo.prototype,{constructor:Mo,iter:function(e,t,n){n?this.iterN(e-this.first,t-e,n):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var n=0,i=0;i<t.length;++i)n+=t[i].height;this.insertInner(e-this.first,t,n)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=Ye(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Qi(function(e){var t=et(this.first,0),n=this.first+this.size-1;oo(this,{from:t,to:et(n,Ge(this,n).text.length),text:this.splitLines(e),origin:\"setValue\",full:!0},!0),this.cm&&Ii(this.cm,0,0),Xr(this,_r(t),H)}),replaceRange:function(e,t,n,i){co(this,e,t=st(this,t),n=n?st(this,n):t,i)},getRange:function(e,t,n){var i=Ue(this,st(this,e),st(this,t));return!1===n?i:i.join(n||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(Je(this,e))return Ge(this,e)},getLineNumber:function(e){return Ke(e)},getLineHandleVisualStart:function(e){return\"number\"==typeof e&&(e=Ge(this,e)),zt(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return st(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||\"head\"==e?t.head:\"anchor\"==e?t.anchor:\"end\"==e||\"to\"==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Qi(function(e,t,n){Ur(this,st(this,\"number\"==typeof e?et(e,t||0):e),null,n)}),setSelection:Qi(function(e,t,n){Ur(this,st(this,e),st(this,t||e),n)}),extendSelection:Qi(function(e,t,n){Wr(this,st(this,e),t&&st(this,t),n)}),extendSelections:Qi(function(e,t){qr(this,lt(this,e),t)}),extendSelectionsBy:Qi(function(e,t){qr(this,lt(this,K(this.sel.ranges,e)),t)}),setSelections:Qi(function(e,t,n){if(e.length){for(var i=[],r=0;r<e.length;r++)i[r]=new br(st(this,e[r].anchor),st(this,e[r].head));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),Xr(this,xr(this.cm,i,t),n)}}),addSelection:Qi(function(e,t,n){var i=this.sel.ranges.slice(0);i.push(new br(st(this,e),st(this,t||e))),Xr(this,xr(this.cm,i,i.length-1),n)}),getSelection:function(e){for(var t,n=this.sel.ranges,i=0;i<n.length;i++){var r=Ue(this,n[i].from(),n[i].to());t=t?t.concat(r):r}return!1===e?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],n=this.sel.ranges,i=0;i<n.length;i++){var r=Ue(this,n[i].from(),n[i].to());!1!==e&&(r=r.join(e||this.lineSeparator())),t[i]=r}return t},replaceSelection:function(e,t,n){for(var i=[],r=0;r<this.sel.ranges.length;r++)i[r]=e;this.replaceSelections(i,t,n||\"+input\")},replaceSelections:Qi(function(e,t,n){for(var i=[],r=this.sel,o=0;o<r.ranges.length;o++){var a=r.ranges[o];i[o]={from:a.from(),to:a.to(),text:this.splitLines(e[o]),origin:n}}for(var s=t&&\"end\"!=t&&function(e,t,n){for(var i=[],r=et(e.first,0),o=r,a=0;a<t.length;a++){var s=t[a],l=kr(s.from,r,o),u=kr(wr(s),r,o);if(r=s.to,o=u,\"around\"==n){var c=e.sel.ranges[a],h=tt(c.head,c.anchor)<0;i[a]=new br(h?u:l,h?l:u)}else i[a]=new br(l,l)}return new yr(i,e.sel.primIndex)}(this,i,t),l=i.length-1;l>=0;l--)oo(this,i[l]);s?Yr(this,s):this.cm&&Ai(this.cm)}),undo:Qi(function(){so(this,\"undo\")}),redo:Qi(function(){so(this,\"redo\")}),undoSelection:Qi(function(){so(this,\"undo\",!0)}),redoSelection:Qi(function(){so(this,\"redo\",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,i=0;i<e.done.length;i++)e.done[i].ranges||++t;for(var r=0;r<e.undone.length;r++)e.undone[r].ranges||++n;return{undo:t,redo:n}},clearHistory:function(){var e=this;this.history=new Lr(this.history.maxGeneration),Ir(this,function(t){return t.history=e.history},!0)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:jr(this.history.done),undone:jr(this.history.undone)}},setHistory:function(e){var t=this.history=new Lr(this.history.maxGeneration);t.done=jr(e.done.slice(0),null,!0),t.undone=jr(e.undone.slice(0),null,!0)},setGutterMarker:Qi(function(e,t,n){return go(this,e,\"gutter\",function(e){var i=e.gutterMarkers||(e.gutterMarkers={});return i[t]=n,!n&&ne(i)&&(e.gutterMarkers=null),!0})}),clearGutter:Qi(function(e){var t=this;this.iter(function(n){n.gutterMarkers&&n.gutterMarkers[e]&&go(t,n,\"gutter\",function(){return n.gutterMarkers[e]=null,ne(n.gutterMarkers)&&(n.gutterMarkers=null),!0})})}),lineInfo:function(e){var t;if(\"number\"==typeof e){if(!Je(this,e))return null;if(t=e,!(e=Ge(this,e)))return null}else if(null==(t=Ke(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Qi(function(e,t,n){return go(this,e,\"gutter\"==t?\"gutter\":\"class\",function(e){var i=\"text\"==t?\"textClass\":\"background\"==t?\"bgClass\":\"gutter\"==t?\"gutterClass\":\"wrapClass\";if(e[i]){if(S(n).test(e[i]))return!1;e[i]+=\" \"+n}else e[i]=n;return!0})}),removeLineClass:Qi(function(e,t,n){return go(this,e,\"gutter\"==t?\"gutter\":\"class\",function(e){var i=\"text\"==t?\"textClass\":\"background\"==t?\"bgClass\":\"gutter\"==t?\"gutterClass\":\"wrapClass\",r=e[i];if(!r)return!1;if(null==n)e[i]=null;else{var o=r.match(S(n));if(!o)return!1;var a=o.index+o[0].length;e[i]=r.slice(0,o.index)+(o.index&&a!=r.length?\" \":\"\")+r.slice(a)||null}return!0})}),addLineWidget:Qi(function(e,t,n){return function(e,t,n,i){var r=new yo(e,n,i),o=e.cm;return o&&r.noHScroll&&(o.display.alignWidgets=!0),go(e,t,\"widget\",function(t){var n=t.widgets||(t.widgets=[]);if(null==r.insertAt?n.push(r):n.splice(Math.min(n.length,Math.max(0,r.insertAt)),0,r),r.line=t,o&&!Vt(e,t)){var i=Ht(t)<e.scrollTop;Xe(t,t.height+_n(r)),i&&Di(o,r.height),o.curOp.forceUpdate=!0}return!0}),o&&ln(o,\"lineWidgetAdded\",o,r,\"number\"==typeof t?t:Ke(t)),r}(this,e,t,n)}),removeLineWidget:function(e){e.clear()},markText:function(e,t,n){return wo(this,st(this,e),st(this,t),n,n&&n.type||\"range\")},setBookmark:function(e,t){var n={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return wo(this,e=st(this,e),e,n,\"bookmark\")},findMarksAt:function(e){var t=[],n=Ge(this,(e=st(this,e)).line).markedSpans;if(n)for(var i=0;i<n.length;++i){var r=n[i];(null==r.from||r.from<=e.ch)&&(null==r.to||r.to>=e.ch)&&t.push(r.marker.parent||r.marker)}return t},findMarks:function(e,t,n){e=st(this,e),t=st(this,t);var i=[],r=e.line;return this.iter(e.line,t.line+1,function(o){var a=o.markedSpans;if(a)for(var s=0;s<a.length;s++){var l=a[s];null!=l.to&&r==e.line&&e.ch>=l.to||null==l.from&&r!=e.line||null!=l.from&&r==t.line&&l.from>=t.ch||n&&!n(l.marker)||i.push(l.marker.parent||l.marker)}++r}),i},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var i=0;i<n.length;++i)null!=n[i].from&&e.push(n[i].marker)}),e},posFromIndex:function(e){var t,n=this.first,i=this.lineSeparator().length;return this.iter(function(r){var o=r.text.length+i;if(o>e)return t=e,!0;e-=o,++n}),st(this,et(n,t))},indexFromPos:function(e){var t=(e=st(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var n=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+n}),t},copy:function(e){var t=new Mo(Ye(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,n=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<n&&(n=e.to);var i=new Mo(Ye(this,t,n),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(i.history=this.history),(this.linked||(this.linked=[])).push({doc:i,sharedHist:e.sharedHist}),i.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var n=0;n<t.length;n++){var i=t[n],r=i.find(),o=e.clipPos(r.from),a=e.clipPos(r.to);if(tt(o,a)){var s=wo(e,o,a,i.primary,i.primary.type);i.markers.push(s),s.parent=i}}}(i,So(this)),i},unlinkDoc:function(e){if(e instanceof Ca&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t){if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),ko(So(this));break}}if(e.history==this.history){var n=[e.id];Ir(e,function(e){return n.push(e.id)},!0),e.history=new Lr(null),e.history.done=jr(this.history.done,n),e.history.undone=jr(this.history.undone,n)}},iterLinkedDocs:function(e){Ir(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):Ee(e)},lineSeparator:function(){return this.lineSep||\"\\n\"},setDirection:Qi(function(e){var t;(\"rtl\"!=e&&(e=\"ltr\"),e!=this.direction)&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&Ki(t=this.cm,function(){Er(t),ui(t)}))})}),Mo.prototype.eachLine=Mo.prototype.iter;var Do=0;function Ao(e){var t=this;if(Io(t),!me(t,e)&&!wn(t.display,e)){xe(e),a&&(Do=+new Date);var n=si(t,e,!0),i=e.dataTransfer.files;if(n&&!t.isReadOnly())if(i&&i.length&&window.FileReader&&window.File)for(var r=i.length,o=Array(r),s=0,l=function(){++s==r&&Zi(t,function(){var e={from:n=st(t.doc,n),to:n,text:t.doc.splitLines(o.filter(function(e){return null!=e}).join(t.doc.lineSeparator())),origin:\"paste\"};oo(t.doc,e),Yr(t.doc,_r(st(t.doc,n),st(t.doc,wr(e))))})()},u=function(e,n){if(t.options.allowDropFileTypes&&-1==$(t.options.allowDropFileTypes,e.type))l();else{var i=new FileReader;i.onerror=function(){return l()},i.onload=function(){var e=i.result;/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(e)?l():(o[n]=e,l())},i.readAsText(e)}},c=0;c<i.length;c++)u(i[c],c);else{if(t.state.draggingText&&t.doc.sel.contains(n)>-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var h=e.dataTransfer.getData(\"Text\");if(h){var d;if(t.state.draggingText&&!t.state.draggingText.copy&&(d=t.listSelections()),Kr(t.doc,_r(n,n)),d)for(var f=0;f<d.length;++f)co(t.doc,\"\",d[f].anchor,d[f].head,\"drag\");t.replaceSelection(h,\"around\",\"paste\"),t.display.input.focus()}}catch(e){}}}}function Io(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Oo(e){if(document.getElementsByClassName){for(var t=document.getElementsByClassName(\"CodeMirror\"),n=[],i=0;i<t.length;i++){var r=t[i].CodeMirror;r&&n.push(r)}n.length&&n[0].operation(function(){for(var t=0;t<n.length;t++)e(n[t])})}}var Eo=!1;function Lo(){var e;Eo||(de(window,\"resize\",function(){null==e&&(e=setTimeout(function(){e=null,Oo(Po)},100))}),de(window,\"blur\",function(){return Oo(Ci)}),Eo=!0)}function Po(e){var t=e.display;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize()}for(var No={3:\"Pause\",8:\"Backspace\",9:\"Tab\",13:\"Enter\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"Left\",38:\"Up\",39:\"Right\",40:\"Down\",44:\"PrintScrn\",45:\"Insert\",46:\"Delete\",59:\";\",61:\"=\",91:\"Mod\",92:\"Mod\",93:\"Mod\",106:\"*\",107:\"=\",109:\"-\",110:\".\",111:\"/\",145:\"ScrollLock\",173:\"-\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\",224:\"Mod\",63232:\"Up\",63233:\"Down\",63234:\"Left\",63235:\"Right\",63272:\"Delete\",63273:\"Home\",63275:\"End\",63276:\"PageUp\",63277:\"PageDown\",63302:\"Insert\"},Ro=0;Ro<10;Ro++)No[Ro+48]=No[Ro+96]=String(Ro);for(var Bo=65;Bo<=90;Bo++)No[Bo]=String.fromCharCode(Bo);for(var zo=1;zo<=12;zo++)No[zo+111]=No[zo+63235]=\"F\"+zo;var Fo={};function $o(e){var t,n,i,r,o=e.split(/-(?!$)/);e=o[o.length-1];for(var a=0;a<o.length-1;a++){var s=o[a];if(/^(cmd|meta|m)$/i.test(s))r=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))n=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error(\"Unrecognized modifier name: \"+s);i=!0}}return t&&(e=\"Alt-\"+e),n&&(e=\"Ctrl-\"+e),r&&(e=\"Cmd-\"+e),i&&(e=\"Shift-\"+e),e}function Vo(e){var t={};for(var n in e)if(e.hasOwnProperty(n)){var i=e[n];if(/^(name|fallthrough|(de|at)tach)$/.test(n))continue;if(\"...\"==i){delete e[n];continue}for(var r=K(n.split(\" \"),$o),o=0;o<r.length;o++){var a=void 0,s=void 0;o==r.length-1?(s=r.join(\" \"),a=i):(s=r.slice(0,o+1).join(\" \"),a=\"...\");var l=t[s];if(l){if(l!=a)throw new Error(\"Inconsistent bindings for \"+s)}else t[s]=a}delete e[n]}for(var u in t)e[u]=t[u];return e}function jo(e,t,n,i){var r=(t=Go(t)).call?t.call(e,i):t[e];if(!1===r)return\"nothing\";if(\"...\"===r)return\"multi\";if(null!=r&&n(r))return\"handled\";if(t.fallthrough){if(\"[object Array]\"!=Object.prototype.toString.call(t.fallthrough))return jo(e,t.fallthrough,n,i);for(var o=0;o<t.fallthrough.length;o++){var a=jo(e,t.fallthrough[o],n,i);if(a)return a}}}function Ho(e){var t=\"string\"==typeof e?e:No[e.keyCode];return\"Ctrl\"==t||\"Alt\"==t||\"Shift\"==t||\"Mod\"==t}function Wo(e,t,n){var i=e;return t.altKey&&\"Alt\"!=i&&(e=\"Alt-\"+e),(w?t.metaKey:t.ctrlKey)&&\"Ctrl\"!=i&&(e=\"Ctrl-\"+e),(w?t.ctrlKey:t.metaKey)&&\"Mod\"!=i&&(e=\"Cmd-\"+e),!n&&t.shiftKey&&\"Shift\"!=i&&(e=\"Shift-\"+e),e}function qo(e,t){if(h&&34==e.keyCode&&e.char)return!1;var n=No[e.keyCode];return null!=n&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(n=e.code),Wo(n,e,t))}function Go(e){return\"string\"==typeof e?Fo[e]:e}function Uo(e,t){for(var n=e.doc.sel.ranges,i=[],r=0;r<n.length;r++){for(var o=t(n[r]);i.length&&tt(o.from,X(i).to)<=0;){var a=i.pop();if(tt(a.from,o.from)<0){o.from=a.from;break}}i.push(o)}Ki(e,function(){for(var t=i.length-1;t>=0;t--)co(e.doc,\"\",i[t].from,i[t].to,\"+delete\");Ai(e)})}function Yo(e,t,n){var i=oe(e.text,t+n,n);return i<0||i>e.text.length?null:i}function Xo(e,t,n){var i=Yo(e,t.ch,n);return null==i?null:new et(t.line,i,n<0?\"after\":\"before\")}function Ko(e,t,n,i,r){if(e){\"rtl\"==t.doc.direction&&(r=-r);var o=ce(n,t.doc.direction);if(o){var a,s=r<0?X(o):o[0],l=r<0==(1==s.level)?\"after\":\"before\";if(s.level>0||\"rtl\"==t.doc.direction){var u=En(t,n);a=r<0?n.text.length-1:0;var c=Ln(t,u,a).top;a=ae(function(e){return Ln(t,u,e).top==c},r<0==(1==s.level)?s.from:s.to-1,a),\"before\"==l&&(a=Yo(n,a,1))}else a=r<0?s.to:s.from;return new et(i,a,l)}}return new et(i,r<0?n.text.length:0,r<0?\"before\":\"after\")}Fo.basic={Left:\"goCharLeft\",Right:\"goCharRight\",Up:\"goLineUp\",Down:\"goLineDown\",End:\"goLineEnd\",Home:\"goLineStartSmart\",PageUp:\"goPageUp\",PageDown:\"goPageDown\",Delete:\"delCharAfter\",Backspace:\"delCharBefore\",\"Shift-Backspace\":\"delCharBefore\",Tab:\"defaultTab\",\"Shift-Tab\":\"indentAuto\",Enter:\"newlineAndIndent\",Insert:\"toggleOverwrite\",Esc:\"singleSelection\"},Fo.pcDefault={\"Ctrl-A\":\"selectAll\",\"Ctrl-D\":\"deleteLine\",\"Ctrl-Z\":\"undo\",\"Shift-Ctrl-Z\":\"redo\",\"Ctrl-Y\":\"redo\",\"Ctrl-Home\":\"goDocStart\",\"Ctrl-End\":\"goDocEnd\",\"Ctrl-Up\":\"goLineUp\",\"Ctrl-Down\":\"goLineDown\",\"Ctrl-Left\":\"goGroupLeft\",\"Ctrl-Right\":\"goGroupRight\",\"Alt-Left\":\"goLineStart\",\"Alt-Right\":\"goLineEnd\",\"Ctrl-Backspace\":\"delGroupBefore\",\"Ctrl-Delete\":\"delGroupAfter\",\"Ctrl-S\":\"save\",\"Ctrl-F\":\"find\",\"Ctrl-G\":\"findNext\",\"Shift-Ctrl-G\":\"findPrev\",\"Shift-Ctrl-F\":\"replace\",\"Shift-Ctrl-R\":\"replaceAll\",\"Ctrl-[\":\"indentLess\",\"Ctrl-]\":\"indentMore\",\"Ctrl-U\":\"undoSelection\",\"Shift-Ctrl-U\":\"redoSelection\",\"Alt-U\":\"redoSelection\",fallthrough:\"basic\"},Fo.emacsy={\"Ctrl-F\":\"goCharRight\",\"Ctrl-B\":\"goCharLeft\",\"Ctrl-P\":\"goLineUp\",\"Ctrl-N\":\"goLineDown\",\"Alt-F\":\"goWordRight\",\"Alt-B\":\"goWordLeft\",\"Ctrl-A\":\"goLineStart\",\"Ctrl-E\":\"goLineEnd\",\"Ctrl-V\":\"goPageDown\",\"Shift-Ctrl-V\":\"goPageUp\",\"Ctrl-D\":\"delCharAfter\",\"Ctrl-H\":\"delCharBefore\",\"Alt-D\":\"delWordAfter\",\"Alt-Backspace\":\"delWordBefore\",\"Ctrl-K\":\"killLine\",\"Ctrl-T\":\"transposeChars\",\"Ctrl-O\":\"openLine\"},Fo.macDefault={\"Cmd-A\":\"selectAll\",\"Cmd-D\":\"deleteLine\",\"Cmd-Z\":\"undo\",\"Shift-Cmd-Z\":\"redo\",\"Cmd-Y\":\"redo\",\"Cmd-Home\":\"goDocStart\",\"Cmd-Up\":\"goDocStart\",\"Cmd-End\":\"goDocEnd\",\"Cmd-Down\":\"goDocEnd\",\"Alt-Left\":\"goGroupLeft\",\"Alt-Right\":\"goGroupRight\",\"Cmd-Left\":\"goLineLeft\",\"Cmd-Right\":\"goLineRight\",\"Alt-Backspace\":\"delGroupBefore\",\"Ctrl-Alt-Backspace\":\"delGroupAfter\",\"Alt-Delete\":\"delGroupAfter\",\"Cmd-S\":\"save\",\"Cmd-F\":\"find\",\"Cmd-G\":\"findNext\",\"Shift-Cmd-G\":\"findPrev\",\"Cmd-Alt-F\":\"replace\",\"Shift-Cmd-Alt-F\":\"replaceAll\",\"Cmd-[\":\"indentLess\",\"Cmd-]\":\"indentMore\",\"Cmd-Backspace\":\"delWrappedLineLeft\",\"Cmd-Delete\":\"delWrappedLineRight\",\"Cmd-U\":\"undoSelection\",\"Shift-Cmd-U\":\"redoSelection\",\"Ctrl-Up\":\"goDocStart\",\"Ctrl-Down\":\"goDocEnd\",fallthrough:[\"basic\",\"emacsy\"]},Fo.default=y?Fo.macDefault:Fo.pcDefault;var Zo={selectAll:io,singleSelection:function(e){return e.setSelection(e.getCursor(\"anchor\"),e.getCursor(\"head\"),H)},killLine:function(e){return Uo(e,function(t){if(t.empty()){var n=Ge(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line<e.lastLine()?{from:t.head,to:et(t.head.line+1,0)}:{from:t.head,to:et(t.head.line,n)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){return Uo(e,function(t){return{from:et(t.from().line,0),to:st(e.doc,et(t.to().line+1,0))}})},delLineLeft:function(e){return Uo(e,function(e){return{from:et(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){return Uo(e,function(t){var n=e.charCoords(t.head,\"div\").top+5;return{from:e.coordsChar({left:0,top:n},\"div\"),to:t.from()}})},delWrappedLineRight:function(e){return Uo(e,function(t){var n=e.charCoords(t.head,\"div\").top+5,i=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},\"div\");return{from:t.from(),to:i}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(et(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(et(e.lastLine()))},goLineStart:function(e){return e.extendSelectionsBy(function(t){return Jo(e,t.head.line)},{origin:\"+move\",bias:1})},goLineStartSmart:function(e){return e.extendSelectionsBy(function(t){return Qo(e,t.head)},{origin:\"+move\",bias:1})},goLineEnd:function(e){return e.extendSelectionsBy(function(t){return function(e,t){var n=Ge(e.doc,t),i=function(e){for(var t;t=Nt(e);)e=t.find(1,!0).line;return e}(n);i!=n&&(t=Ke(i));return Ko(!0,e,n,t,-1)}(e,t.head.line)},{origin:\"+move\",bias:-1})},goLineRight:function(e){return e.extendSelectionsBy(function(t){var n=e.cursorCoords(t.head,\"div\").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:n},\"div\")},q)},goLineLeft:function(e){return e.extendSelectionsBy(function(t){var n=e.cursorCoords(t.head,\"div\").top+5;return e.coordsChar({left:0,top:n},\"div\")},q)},goLineLeftSmart:function(e){return e.extendSelectionsBy(function(t){var n=e.cursorCoords(t.head,\"div\").top+5,i=e.coordsChar({left:0,top:n},\"div\");return i.ch<e.getLine(i.line).search(/\\S/)?Qo(e,t.head):i},q)},goLineUp:function(e){return e.moveV(-1,\"line\")},goLineDown:function(e){return e.moveV(1,\"line\")},goPageUp:function(e){return e.moveV(-1,\"page\")},goPageDown:function(e){return e.moveV(1,\"page\")},goCharLeft:function(e){return e.moveH(-1,\"char\")},goCharRight:function(e){return e.moveH(1,\"char\")},goColumnLeft:function(e){return e.moveH(-1,\"column\")},goColumnRight:function(e){return e.moveH(1,\"column\")},goWordLeft:function(e){return e.moveH(-1,\"word\")},goGroupRight:function(e){return e.moveH(1,\"group\")},goGroupLeft:function(e){return e.moveH(-1,\"group\")},goWordRight:function(e){return e.moveH(1,\"word\")},delCharBefore:function(e){return e.deleteH(-1,\"codepoint\")},delCharAfter:function(e){return e.deleteH(1,\"char\")},delWordBefore:function(e){return e.deleteH(-1,\"word\")},delWordAfter:function(e){return e.deleteH(1,\"word\")},delGroupBefore:function(e){return e.deleteH(-1,\"group\")},delGroupAfter:function(e){return e.deleteH(1,\"group\")},indentAuto:function(e){return e.indentSelection(\"smart\")},indentMore:function(e){return e.indentSelection(\"add\")},indentLess:function(e){return e.indentSelection(\"subtract\")},insertTab:function(e){return e.replaceSelection(\"\\t\")},insertSoftTab:function(e){for(var t=[],n=e.listSelections(),i=e.options.tabSize,r=0;r<n.length;r++){var o=n[r].from(),a=z(e.getLine(o.line),o.ch,i);t.push(Y(i-a%i))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection(\"add\"):e.execCommand(\"insertTab\")},transposeChars:function(e){return Ki(e,function(){for(var t=e.listSelections(),n=[],i=0;i<t.length;i++)if(t[i].empty()){var r=t[i].head,o=Ge(e.doc,r.line).text;if(o)if(r.ch==o.length&&(r=new et(r.line,r.ch-1)),r.ch>0)r=new et(r.line,r.ch+1),e.replaceRange(o.charAt(r.ch-1)+o.charAt(r.ch-2),et(r.line,r.ch-2),r,\"+transpose\");else if(r.line>e.doc.first){var a=Ge(e.doc,r.line-1).text;a&&(r=new et(r.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),et(r.line-1,a.length-1),r,\"+transpose\"))}n.push(new br(r,r))}e.setSelections(n)})},newlineAndIndent:function(e){return Ki(e,function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,\"+input\");t=e.listSelections();for(var i=0;i<t.length;i++)e.indentLine(t[i].from().line,null,!0);Ai(e)})},openLine:function(e){return e.replaceSelection(\"\\n\",\"start\")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function Jo(e,t){var n=Ge(e.doc,t),i=zt(n);return i!=n&&(t=Ke(i)),Ko(!0,e,i,t,1)}function Qo(e,t){var n=Jo(e,t.line),i=Ge(e.doc,n.line),r=ce(i,e.doc.direction);if(!r||0==r[0].level){var o=Math.max(n.ch,i.text.search(/\\S/)),a=t.line==n.line&&t.ch<=o&&t.ch;return et(n.line,a?0:o,n.sticky)}return n}function ea(e,t,n){if(\"string\"==typeof t&&!(t=Zo[t]))return!1;e.display.input.ensurePolled();var i=e.display.shift,r=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),r=t(e)!=j}finally{e.display.shift=i,e.state.suppressEdits=!1}return r}var ta=new F;function na(e,t,n,i){var r=e.state.keySeq;if(r){if(Ho(t))return\"handled\";if(/\\'$/.test(t)?e.state.keySeq=null:ta.set(50,function(){e.state.keySeq==r&&(e.state.keySeq=null,e.display.input.reset())}),ia(e,r+\" \"+t,n,i))return!0}return ia(e,t,n,i)}function ia(e,t,n,i){var r=function(e,t,n){for(var i=0;i<e.state.keyMaps.length;i++){var r=jo(t,e.state.keyMaps[i],n,e);if(r)return r}return e.options.extraKeys&&jo(t,e.options.extraKeys,n,e)||jo(t,e.options.keyMap,n,e)}(e,t,i);return\"multi\"==r&&(e.state.keySeq=t),\"handled\"==r&&ln(e,\"keyHandled\",e,t,n),\"handled\"!=r&&\"multi\"!=r||(xe(n),bi(e)),!!r}function ra(e,t){var n=qo(t,!0);return!!n&&(t.shiftKey&&!e.state.keySeq?na(e,\"Shift-\"+n,t,function(t){return ea(e,t,!0)})||na(e,n,t,function(t){if(\"string\"==typeof t?/^go[A-Z]/.test(t):t.motion)return ea(e,t)}):na(e,n,t,function(t){return ea(e,t)}))}var oa=null;function aa(e){var t=this;if(!(e.target&&e.target!=t.display.input.getField()||(t.curOp.focus=E(),me(t,e)))){a&&s<11&&27==e.keyCode&&(e.returnValue=!1);var i=e.keyCode;t.display.shift=16==i||e.shiftKey;var r=ra(t,e);h&&(oa=r?i:null,!r&&88==i&&!Pe&&(y?e.metaKey:e.ctrlKey)&&t.replaceSelection(\"\",null,\"cut\")),n&&!y&&!r&&46==i&&e.shiftKey&&!e.ctrlKey&&document.execCommand&&document.execCommand(\"cut\"),18!=i||/\\bCodeMirror-crosshair\\b/.test(t.display.lineDiv.className)||function(e){var t=e.display.lineDiv;function n(e){18!=e.keyCode&&e.altKey||(T(t,\"CodeMirror-crosshair\"),pe(document,\"keyup\",n),pe(document,\"mouseover\",n))}L(t,\"CodeMirror-crosshair\"),de(document,\"keyup\",n),de(document,\"mouseover\",n)}(t)}}function sa(e){16==e.keyCode&&(this.doc.sel.shift=!1),me(this,e)}function la(e){var t=this;if(!(e.target&&e.target!=t.display.input.getField()||wn(t.display,e)||me(t,e)||e.ctrlKey&&!e.altKey||y&&e.metaKey)){var n=e.keyCode,i=e.charCode;if(h&&n==oa)return oa=null,void xe(e);if(!h||e.which&&!(e.which<10)||!ra(t,e)){var r=String.fromCharCode(null==i?n:i);\"\\b\"!=r&&(function(e,t,n){return na(e,\"'\"+n+\"'\",t,function(t){return ea(e,t,!0)})}(t,e,r)||t.display.input.onKeyPress(e))}}}var ua,ca,ha=function(e,t,n){this.time=e,this.pos=t,this.button=n};function da(e){var t=this,n=t.display;if(!(me(t,e)||n.activeTouch&&n.input.supportsTouch()))if(n.input.ensurePolled(),n.shift=e.shiftKey,wn(n,e))l||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100));else if(!ga(t,e)){var i=si(t,e),r=ke(e),o=i?function(e,t){var n=+new Date;return ca&&ca.compare(n,e,t)?(ua=ca=null,\"triple\"):ua&&ua.compare(n,e,t)?(ca=new ha(n,e,t),ua=null,\"double\"):(ua=new ha(n,e,t),ca=null,\"single\")}(i,r):\"single\";window.focus(),1==r&&t.state.selectingText&&t.state.selectingText(e),i&&function(e,t,n,i,r){var o=\"Click\";\"double\"==i?o=\"Double\"+o:\"triple\"==i&&(o=\"Triple\"+o);return na(e,Wo(o=(1==t?\"Left\":2==t?\"Middle\":\"Right\")+o,r),r,function(t){if(\"string\"==typeof t&&(t=Zo[t]),!t)return!1;var i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),i=t(e,n)!=j}finally{e.state.suppressEdits=!1}return i})}(t,r,i,o,e)||(1==r?i?function(e,t,n,i){a?setTimeout(R(xi,e),0):e.curOp.focus=E();var r,o=function(e,t,n){var i=e.getOption(\"configureMouse\"),r=i?i(e,t,n):{};if(null==r.unit){var o=b?n.shiftKey&&n.metaKey:n.altKey;r.unit=o?\"rectangle\":\"single\"==t?\"char\":\"double\"==t?\"word\":\"line\"}(null==r.extend||e.doc.extend)&&(r.extend=e.doc.extend||n.shiftKey);null==r.addNew&&(r.addNew=y?n.metaKey:n.ctrlKey);null==r.moveOnDrag&&(r.moveOnDrag=!(y?n.altKey:n.ctrlKey));return r}(e,n,i),u=e.doc.sel;e.options.dragDrop&&De&&!e.isReadOnly()&&\"single\"==n&&(r=u.contains(t))>-1&&(tt((r=u.ranges[r]).from(),t)<0||t.xRel>0)&&(tt(r.to(),t)>0||t.xRel<0)?function(e,t,n,i){var r=e.display,o=!1,u=Zi(e,function(t){l&&(r.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:_i(e)),pe(r.wrapper.ownerDocument,\"mouseup\",u),pe(r.wrapper.ownerDocument,\"mousemove\",c),pe(r.scroller,\"dragstart\",h),pe(r.scroller,\"drop\",u),o||(xe(t),i.addNew||Wr(e.doc,n,null,null,i.extend),l&&!d||a&&9==s?setTimeout(function(){r.wrapper.ownerDocument.body.focus({preventScroll:!0}),r.input.focus()},20):r.input.focus())}),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},h=function(){return o=!0};l&&(r.scroller.draggable=!0);e.state.draggingText=u,u.copy=!i.moveOnDrag,de(r.wrapper.ownerDocument,\"mouseup\",u),de(r.wrapper.ownerDocument,\"mousemove\",c),de(r.scroller,\"dragstart\",h),de(r.scroller,\"drop\",u),e.state.delayingBlurEvent=!0,setTimeout(function(){return r.input.focus()},20),r.scroller.dragDrop&&r.scroller.dragDrop()}(e,i,t,o):function(e,t,n,i){a&&_i(e);var r=e.display,o=e.doc;xe(t);var s,l,u=o.sel,c=u.ranges;i.addNew&&!i.extend?(l=o.sel.contains(n),s=l>-1?c[l]:new br(n,n)):(s=o.sel.primary(),l=o.sel.primIndex);if(\"rectangle\"==i.unit)i.addNew||(s=new br(n,n)),n=si(e,t,!0,!0),l=-1;else{var h=fa(e,n,i.unit);s=i.extend?Hr(s,h.anchor,h.head,i.extend):h}i.addNew?-1==l?(l=c.length,Xr(o,xr(e,c.concat([s]),l),{scroll:!1,origin:\"*mouse\"})):c.length>1&&c[l].empty()&&\"char\"==i.unit&&!i.extend?(Xr(o,xr(e,c.slice(0,l).concat(c.slice(l+1)),0),{scroll:!1,origin:\"*mouse\"}),u=o.sel):Gr(o,l,s,W):(l=0,Xr(o,new yr([s],0),W),u=o.sel);var d=n;function f(t){if(0!=tt(d,t))if(d=t,\"rectangle\"==i.unit){for(var r=[],a=e.options.tabSize,c=z(Ge(o,n.line).text,n.ch,a),h=z(Ge(o,t.line).text,t.ch,a),f=Math.min(c,h),p=Math.max(c,h),g=Math.min(n.line,t.line),m=Math.min(e.lastLine(),Math.max(n.line,t.line));g<=m;g++){var v=Ge(o,g).text,y=G(v,f,a);f==p?r.push(new br(et(g,y),et(g,y))):v.length>y&&r.push(new br(et(g,y),et(g,G(v,p,a))))}r.length||r.push(new br(n,n)),Xr(o,xr(e,u.ranges.slice(0,l).concat(r),l),{origin:\"*mouse\",scroll:!1}),e.scrollIntoView(t)}else{var b,x=s,_=fa(e,t,i.unit),w=x.anchor;tt(_.anchor,w)>0?(b=_.head,w=ot(x.from(),_.anchor)):(b=_.anchor,w=rt(x.to(),_.head));var C=u.ranges.slice(0);C[l]=function(e,t){var n=t.anchor,i=t.head,r=Ge(e.doc,n.line);if(0==tt(n,i)&&n.sticky==i.sticky)return t;var o=ce(r);if(!o)return t;var a=le(o,n.ch,n.sticky),s=o[a];if(s.from!=n.ch&&s.to!=n.ch)return t;var l,u=a+(s.from==n.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(i.line!=n.line)l=(i.line-n.line)*(\"ltr\"==e.doc.direction?1:-1)>0;else{var c=le(o,i.ch,i.sticky),h=c-a||(i.ch-n.ch)*(1==s.level?-1:1);l=c==u-1||c==u?h<0:h>0}var d=o[u+(l?-1:0)],f=l==(1==d.level),p=f?d.from:d.to,g=f?\"after\":\"before\";return n.ch==p&&n.sticky==g?t:new br(new et(n.line,p,g),i)}(e,new br(st(o,w),b)),Xr(o,xr(e,C,l),W)}}var p=r.wrapper.getBoundingClientRect(),g=0;function m(t){e.state.selectingText=!1,g=1/0,t&&(xe(t),r.input.focus()),pe(r.wrapper.ownerDocument,\"mousemove\",v),pe(r.wrapper.ownerDocument,\"mouseup\",y),o.history.lastSelOrigin=null}var v=Zi(e,function(t){0!==t.buttons&&ke(t)?function t(n){var a=++g;var s=si(e,n,!0,\"rectangle\"==i.unit);if(!s)return;if(0!=tt(s,d)){e.curOp.focus=E(),f(s);var l=Ti(r,o);(s.line>=l.to||s.line<l.from)&&setTimeout(Zi(e,function(){g==a&&t(n)}),150)}else{var u=n.clientY<p.top?-20:n.clientY>p.bottom?20:0;u&&setTimeout(Zi(e,function(){g==a&&(r.scroller.scrollTop+=u,t(n))}),50)}}(t):m(t)}),y=Zi(e,m);e.state.selectingText=y,de(r.wrapper.ownerDocument,\"mousemove\",v),de(r.wrapper.ownerDocument,\"mouseup\",y)}(e,i,t,o)}(t,i,o,e):Se(e)==n.scroller&&xe(e):2==r?(i&&Wr(t.doc,i),setTimeout(function(){return n.input.focus()},20)):3==r&&(C?t.display.input.onContextMenu(e):_i(t)))}}function fa(e,t,n){if(\"char\"==n)return new br(t,t);if(\"word\"==n)return e.findWordAt(t);if(\"line\"==n)return new br(et(t.line,0),st(e.doc,et(t.line+1,0)));var i=n(e,t);return new br(i.from,i.to)}function pa(e,t,n,i){var r,o;if(t.touches)r=t.touches[0].clientX,o=t.touches[0].clientY;else try{r=t.clientX,o=t.clientY}catch(e){return!1}if(r>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;i&&xe(t);var a=e.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!ye(e,n))return we(t);o-=s.top-a.viewOffset;for(var l=0;l<e.display.gutterSpecs.length;++l){var u=a.gutters.childNodes[l];if(u&&u.getBoundingClientRect().right>=r)return ge(e,n,e,Ze(e.doc,o),e.display.gutterSpecs[l].className,t),we(t)}}function ga(e,t){return pa(e,t,\"gutterClick\",!0)}function ma(e,t){wn(e.display,t)||function(e,t){if(!ye(e,\"gutterContextMenu\"))return!1;return pa(e,t,\"gutterContextMenu\",!1)}(e,t)||me(e,t,\"contextmenu\")||C||e.display.input.onContextMenu(t)}function va(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\\s*cm-s-\\S+/g,\"\")+e.options.theme.replace(/(^|\\s)\\s*/g,\" cm-s-\"),$n(e)}ha.prototype.compare=function(e,t,n){return this.time+400>e&&0==tt(t,this.pos)&&n==this.button};var ya={toString:function(){return\"CodeMirror.Init\"}},ba={},xa={};function _a(e,t,n){if(!t!=!(n&&n!=ya)){var i=e.display.dragFunctions,r=t?de:pe;r(e.display.scroller,\"dragstart\",i.start),r(e.display.scroller,\"dragenter\",i.enter),r(e.display.scroller,\"dragover\",i.over),r(e.display.scroller,\"dragleave\",i.leave),r(e.display.scroller,\"drop\",i.drop)}}function wa(e){e.options.lineWrapping?(L(e.display.wrapper,\"CodeMirror-wrap\"),e.display.sizer.style.minWidth=\"\",e.display.sizerWidth=null):(T(e.display.wrapper,\"CodeMirror-wrap\"),qt(e)),ai(e),ui(e),$n(e),setTimeout(function(){return Fi(e)},100)}function Ca(e,t){var i=this;if(!(this instanceof Ca))return new Ca(e,t);this.options=t=t?B(t):{},B(ba,t,!1);var r=t.value;\"string\"==typeof r?r=new Mo(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var o=new Ca.inputStyles[t.inputStyle](this),u=this.display=new function(e,t,i,r){var o=this;this.input=i,o.scrollbarFiller=A(\"div\",null,\"CodeMirror-scrollbar-filler\"),o.scrollbarFiller.setAttribute(\"cm-not-content\",\"true\"),o.gutterFiller=A(\"div\",null,\"CodeMirror-gutter-filler\"),o.gutterFiller.setAttribute(\"cm-not-content\",\"true\"),o.lineDiv=I(\"div\",null,\"CodeMirror-code\"),o.selectionDiv=A(\"div\",null,null,\"position: relative; z-index: 1\"),o.cursorDiv=A(\"div\",null,\"CodeMirror-cursors\"),o.measure=A(\"div\",null,\"CodeMirror-measure\"),o.lineMeasure=A(\"div\",null,\"CodeMirror-measure\"),o.lineSpace=I(\"div\",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,\"position: relative; outline: none\");var u=I(\"div\",[o.lineSpace],\"CodeMirror-lines\");o.mover=A(\"div\",[u],null,\"position: relative\"),o.sizer=A(\"div\",[o.mover],\"CodeMirror-sizer\"),o.sizerWidth=null,o.heightForcer=A(\"div\",null,null,\"position: absolute; height: \"+V+\"px; width: 1px;\"),o.gutters=A(\"div\",null,\"CodeMirror-gutters\"),o.lineGutter=null,o.scroller=A(\"div\",[o.sizer,o.heightForcer,o.gutters],\"CodeMirror-scroll\"),o.scroller.setAttribute(\"tabIndex\",\"-1\"),o.wrapper=A(\"div\",[o.scrollbarFiller,o.gutterFiller,o.scroller],\"CodeMirror\"),a&&s<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),l||n&&v||(o.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(o.wrapper):e(o.wrapper)),o.viewFrom=o.viewTo=t.first,o.reportedViewFrom=o.reportedViewTo=t.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,o.gutterSpecs=cr(r.gutters,r.lineNumbers),hr(o),i.init(o)}(e,r,o,t);for(var c in u.wrapper.CodeMirror=this,va(this),t.lineWrapping&&(this.display.wrapper.className+=\" CodeMirror-wrap\"),ji(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new F,keySeq:null,specialChars:null},t.autofocus&&!v&&u.input.focus(),a&&s<11&&setTimeout(function(){return i.display.input.reset(!0)},20),function(e){var t=e.display;de(t.scroller,\"mousedown\",Zi(e,da)),de(t.scroller,\"dblclick\",a&&s<11?Zi(e,function(t){if(!me(e,t)){var n=si(e,t);if(n&&!ga(e,t)&&!wn(e.display,t)){xe(t);var i=e.findWordAt(n);Wr(e.doc,i.anchor,i.head)}}}):function(t){return me(e,t)||xe(t)});de(t.scroller,\"contextmenu\",function(t){return ma(e,t)}),de(t.input.getField(),\"contextmenu\",function(n){t.scroller.contains(n.target)||ma(e,n)});var n,i={end:0};function r(){t.activeTouch&&(n=setTimeout(function(){return t.activeTouch=null},1e3),(i=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var n=t.left-e.left,i=t.top-e.top;return n*n+i*i>400}de(t.scroller,\"touchstart\",function(r){if(!me(e,r)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(r)&&!ga(e,r)){t.input.ensurePolled(),clearTimeout(n);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-i.end<=300?i:null},1==r.touches.length&&(t.activeTouch.left=r.touches[0].pageX,t.activeTouch.top=r.touches[0].pageY)}}),de(t.scroller,\"touchmove\",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),de(t.scroller,\"touchend\",function(n){var i=t.activeTouch;if(i&&!wn(t,n)&&null!=i.left&&!i.moved&&new Date-i.start<300){var a,s=e.coordsChar(t.activeTouch,\"page\");a=!i.prev||o(i,i.prev)?new br(s,s):!i.prev.prev||o(i,i.prev.prev)?e.findWordAt(s):new br(et(s.line,0),st(e.doc,et(s.line+1,0))),e.setSelection(a.anchor,a.head),e.focus(),xe(n)}r()}),de(t.scroller,\"touchcancel\",r),de(t.scroller,\"scroll\",function(){t.scroller.clientHeight&&(Li(e,t.scroller.scrollTop),Ni(e,t.scroller.scrollLeft,!0),ge(e,\"scroll\",e))}),de(t.scroller,\"mousewheel\",function(t){return vr(e,t)}),de(t.scroller,\"DOMMouseScroll\",function(t){return vr(e,t)}),de(t.wrapper,\"scroll\",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){me(e,t)||Ce(t)},over:function(t){me(e,t)||(!function(e,t){var n=si(e,t);if(n){var i=document.createDocumentFragment();mi(e,n,i),e.display.dragCursor||(e.display.dragCursor=A(\"div\",null,\"CodeMirror-cursors CodeMirror-dragcursors\"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),D(e.display.dragCursor,i)}}(e,t),Ce(t))},start:function(t){return function(e,t){if(a&&(!e.state.draggingText||+new Date-Do<100))Ce(t);else if(!me(e,t)&&!wn(e.display,t)&&(t.dataTransfer.setData(\"Text\",e.getSelection()),t.dataTransfer.effectAllowed=\"copyMove\",t.dataTransfer.setDragImage&&!d)){var n=A(\"img\",null,null,\"position: fixed; left: 0; top: 0;\");n.src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\",h&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),h&&n.parentNode.removeChild(n)}}(e,t)},drop:Zi(e,Ao),leave:function(t){me(e,t)||Io(e)}};var l=t.input.getField();de(l,\"keyup\",function(t){return sa.call(e,t)}),de(l,\"keydown\",Zi(e,aa)),de(l,\"keypress\",Zi(e,la)),de(l,\"focus\",function(t){return wi(e,t)}),de(l,\"blur\",function(t){return Ci(e,t)})}(this),Lo(),Wi(this),this.curOp.forceUpdate=!0,Or(this,r),t.autofocus&&!v||this.hasFocus()?setTimeout(function(){i.hasFocus()&&!i.state.focused&&wi(i)},20):Ci(this),xa)xa.hasOwnProperty(c)&&xa[c](this,t[c],ya);ur(this),t.finishInit&&t.finishInit(this);for(var f=0;f<Sa.length;++f)Sa[f](this);qi(this),l&&t.lineWrapping&&\"optimizelegibility\"==getComputedStyle(u.lineDiv).textRendering&&(u.lineDiv.style.textRendering=\"auto\")}Ca.defaults=ba,Ca.optionHandlers=xa;var Sa=[];function ka(e,t,n,i){var r,o=e.doc;null==n&&(n=\"add\"),\"smart\"==n&&(o.mode.indent?r=ft(e,t).state:n=\"prev\");var a=e.options.tabSize,s=Ge(o,t),l=z(s.text,null,a);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\\s*/)[0];if(i||/\\S/.test(s.text)){if(\"smart\"==n&&((u=o.mode.indent(r,s.text.slice(c.length),s.text))==j||u>150)){if(!i)return;n=\"prev\"}}else u=0,n=\"not\";\"prev\"==n?u=t>o.first?z(Ge(o,t-1).text,null,a):0:\"add\"==n?u=l+e.options.indentUnit:\"subtract\"==n?u=l-e.options.indentUnit:\"number\"==typeof n&&(u=l+n),u=Math.max(0,u);var h=\"\",d=0;if(e.options.indentWithTabs)for(var f=Math.floor(u/a);f;--f)d+=a,h+=\"\\t\";if(d<u&&(h+=Y(u-d)),h!=c)return co(o,h,et(t,0),et(t,c.length),\"+input\"),s.stateAfter=null,!0;for(var p=0;p<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.length){var m=et(t,c.length);Gr(o,p,new br(m,m));break}}}Ca.defineInitHook=function(e){return Sa.push(e)};var Ta=null;function Ma(e){Ta=e}function Da(e,t,n,i,r){var o=e.doc;e.display.shift=!1,i||(i=o.sel);var a=+new Date-200,s=\"paste\"==r||e.state.pasteIncoming>a,l=Ee(t),u=null;if(s&&i.ranges.length>1)if(Ta&&Ta.text.join(\"\\n\")==t){if(i.ranges.length%Ta.text.length==0){u=[];for(var c=0;c<Ta.text.length;c++)u.push(o.splitLines(Ta.text[c]))}}else l.length==i.ranges.length&&e.options.pasteLinesPerSelection&&(u=K(l,function(e){return[e]}));for(var h=e.curOp.updateInput,d=i.ranges.length-1;d>=0;d--){var f=i.ranges[d],p=f.from(),g=f.to();f.empty()&&(n&&n>0?p=et(p.line,p.ch-n):e.state.overwrite&&!s?g=et(g.line,Math.min(Ge(o,g.line).text.length,g.ch+X(l).length)):s&&Ta&&Ta.lineWise&&Ta.text.join(\"\\n\")==l.join(\"\\n\")&&(p=g=et(p.line,0)));var m={from:p,to:g,text:u?u[d%u.length]:l,origin:r||(s?\"paste\":e.state.cutIncoming>a?\"cut\":\"+input\")};oo(e.doc,m),ln(e,\"inputRead\",e,m)}t&&!s&&Ia(e,t),Ai(e),e.curOp.updateInput<2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Aa(e,t){var n=e.clipboardData&&e.clipboardData.getData(\"Text\");if(n)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Ki(t,function(){return Da(t,n,0,null,\"paste\")}),!0}function Ia(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,i=n.ranges.length-1;i>=0;i--){var r=n.ranges[i];if(!(r.head.ch>100||i&&n.ranges[i-1].head.line==r.head.line)){var o=e.getModeAt(r.head),a=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(t.indexOf(o.electricChars.charAt(s))>-1){a=ka(e,r.head.line,\"smart\");break}}else o.electricInput&&o.electricInput.test(Ge(e.doc,r.head.line).text.slice(0,r.head.ch))&&(a=ka(e,r.head.line,\"smart\"));a&&ln(e,\"electricInput\",e,r.head.line)}}}function Oa(e){for(var t=[],n=[],i=0;i<e.doc.sel.ranges.length;i++){var r=e.doc.sel.ranges[i].head.line,o={anchor:et(r,0),head:et(r+1,0)};n.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:n}}function Ea(e,t,n,i){e.setAttribute(\"autocorrect\",n?\"\":\"off\"),e.setAttribute(\"autocapitalize\",i?\"\":\"off\"),e.setAttribute(\"spellcheck\",!!t)}function La(){var e=A(\"textarea\",null,null,\"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\"),t=A(\"div\",[e],null,\"overflow: hidden; position: relative; width: 3px; height: 0px;\");return l?e.style.width=\"1000px\":e.setAttribute(\"wrap\",\"off\"),g&&(e.style.border=\"1px solid black\"),Ea(e),t}function Pa(e,t,n,i,r){var o=t,a=n,s=Ge(e,t.line),l=r&&\"rtl\"==e.direction?-n:n;function u(o){var a,u;if(\"codepoint\"==i){var c=s.text.charCodeAt(t.ch+(n>0?0:-1));if(isNaN(c))a=null;else{var h=n>0?c>=55296&&c<56320:c>=56320&&c<57343;a=new et(t.line,Math.max(0,Math.min(s.text.length,t.ch+n*(h?2:1))),-n)}}else a=r?function(e,t,n,i){var r=ce(t,e.doc.direction);if(!r)return Xo(t,n,i);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky=\"before\"):n.ch<=0&&(n.ch=0,n.sticky=\"after\");var o=le(r,n.ch,n.sticky),a=r[o];if(\"ltr\"==e.doc.direction&&a.level%2==0&&(i>0?a.to>n.ch:a.from<n.ch))return Xo(t,n,i);var s,l=function(e,n){return Yo(t,e instanceof et?e.ch:e,n)},u=function(n){return e.options.lineWrapping?(s=s||En(e,t),Jn(e,t,s,n)):{begin:0,end:t.text.length}},c=u(\"before\"==n.sticky?l(n,-1):n.ch);if(\"rtl\"==e.doc.direction||1==a.level){var h=1==a.level==i<0,d=l(n,h?1:-1);if(null!=d&&(h?d<=a.to&&d<=c.end:d>=a.from&&d>=c.begin)){var f=h?\"before\":\"after\";return new et(n.line,d,f)}}var p=function(e,t,i){for(var o=function(e,t){return t?new et(n.line,l(e,1),\"before\"):new et(n.line,e,\"after\")};e>=0&&e<r.length;e+=t){var a=r[e],s=t>0==(1!=a.level),u=s?i.begin:l(i.end,-1);if(a.from<=u&&u<a.to)return o(u,s);if(u=s?a.from:l(a.to,-1),i.begin<=u&&u<i.end)return o(u,s)}},g=p(o+i,i,c);if(g)return g;var m=i>0?c.end:l(c.begin,-1);return null==m||i>0&&m==t.text.length||!(g=p(i>0?0:r.length-1,i,u(m)))?null:g}(e.cm,s,t,n):Xo(s,t,n);if(null==a){if(o||(u=t.line+l)<e.first||u>=e.first+e.size||(t=new et(u,t.ch,t.sticky),!(s=Ge(e,u))))return!1;t=Ko(r,e.cm,s,t.line,l)}else t=a;return!0}if(\"char\"==i||\"codepoint\"==i)u();else if(\"column\"==i)u(!0);else if(\"word\"==i||\"group\"==i)for(var c=null,h=\"group\"==i,d=e.cm&&e.cm.getHelper(t,\"wordChars\"),f=!0;!(n<0)||u(!f);f=!1){var p=s.text.charAt(t.ch)||\"\\n\",g=te(p,d)?\"w\":h&&\"\\n\"==p?\"n\":!h||/\\s/.test(p)?null:\"p\";if(!h||f||g||(g=\"s\"),c&&c!=g){n<0&&(n=1,u(),t.sticky=\"after\");break}if(g&&(c=g),n>0&&!u(!f))break}var m=to(e,t,o,a,!0);return nt(o,m)&&(m.hitSide=!0),m}function Na(e,t,n,i){var r,o,a=e.doc,s=t.left;if(\"page\"==i){var l=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(l-.5*ti(e.display),3);r=(n>0?t.bottom:t.top)+n*u}else\"line\"==i&&(r=n>0?t.bottom+3:t.top-3);for(;(o=Kn(e,s,r)).outside;){if(n<0?r<=0:r>=a.height){o.hitSide=!0;break}r+=5*n}return o}var Ra=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new F,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Ba(e,t){var n=On(e,t.line);if(!n||n.hidden)return null;var i=Ge(e.doc,t.line),r=An(n,i,t.line),o=ce(i,e.doc.direction),a=\"left\";o&&(a=le(o,t.ch)%2?\"right\":\"left\");var s=Rn(r.map,t.ch,a);return s.offset=\"right\"==s.collapse?s.end:s.start,s}function za(e,t){return t&&(e.bad=!0),e}function Fa(e,t,n){var i;if(t==e.display.lineDiv){if(!(i=e.display.lineDiv.childNodes[n]))return za(e.clipPos(et(e.display.viewTo-1)),!0);t=null,n=0}else for(i=t;;i=i.parentNode){if(!i||i==e.display.lineDiv)return null;if(i.parentNode&&i.parentNode==e.display.lineDiv)break}for(var r=0;r<e.display.view.length;r++){var o=e.display.view[r];if(o.node==i)return $a(o,t,n)}}function $a(e,t,n){var i=e.text.firstChild,r=!1;if(!t||!O(i,t))return za(et(Ke(e.line),0),!0);if(t==i&&(r=!0,t=i.childNodes[n],n=0,!t)){var o=e.rest?X(e.rest):e.line;return za(et(Ke(o),o.text.length),r)}var a=3==t.nodeType?t:null,s=t;for(a||1!=t.childNodes.length||3!=t.firstChild.nodeType||(a=t.firstChild,n&&(n=a.nodeValue.length));s.parentNode!=i;)s=s.parentNode;var l=e.measure,u=l.maps;function c(t,n,i){for(var r=-1;r<(u?u.length:0);r++)for(var o=r<0?l.map:u[r],a=0;a<o.length;a+=3){var s=o[a+2];if(s==t||s==n){var c=Ke(r<0?e.line:e.rest[r]),h=o[a]+i;return(i<0||s!=t)&&(h=o[a+(i?1:0)]),et(c,h)}}}var h=c(a,s,n);if(h)return za(h,r);for(var d=s.nextSibling,f=a?a.nodeValue.length-n:0;d;d=d.nextSibling){if(h=c(d,d.firstChild,0))return za(et(h.line,h.ch-f),r);f+=d.textContent.length}for(var p=s.previousSibling,g=n;p;p=p.previousSibling){if(h=c(p,p.firstChild,-1))return za(et(h.line,h.ch+g),r);g+=p.textContent.length}}Ra.prototype.init=function(e){var t=this,n=this,i=n.cm,r=n.div=e.lineDiv;function o(e){for(var t=e.target;t;t=t.parentNode){if(t==r)return!0;if(/\\bCodeMirror-(?:line)?widget\\b/.test(t.className))break}return!1}function a(e){if(o(e)&&!me(i,e)){if(i.somethingSelected())Ma({lineWise:!1,text:i.getSelections()}),\"cut\"==e.type&&i.replaceSelection(\"\",null,\"cut\");else{if(!i.options.lineWiseCopyCut)return;var t=Oa(i);Ma({lineWise:!0,text:t.text}),\"cut\"==e.type&&i.operation(function(){i.setSelections(t.ranges,0,H),i.replaceSelection(\"\",null,\"cut\")})}if(e.clipboardData){e.clipboardData.clearData();var a=Ta.text.join(\"\\n\");if(e.clipboardData.setData(\"Text\",a),e.clipboardData.getData(\"Text\")==a)return void e.preventDefault()}var s=La(),l=s.firstChild;i.display.lineSpace.insertBefore(s,i.display.lineSpace.firstChild),l.value=Ta.text.join(\"\\n\");var u=document.activeElement;N(l),setTimeout(function(){i.display.lineSpace.removeChild(s),u.focus(),u==r&&n.showPrimarySelection()},50)}}Ea(r,i.options.spellcheck,i.options.autocorrect,i.options.autocapitalize),de(r,\"paste\",function(e){!o(e)||me(i,e)||Aa(e,i)||s<=11&&setTimeout(Zi(i,function(){return t.updateFromDOM()}),20)}),de(r,\"compositionstart\",function(e){t.composing={data:e.data,done:!1}}),de(r,\"compositionupdate\",function(e){t.composing||(t.composing={data:e.data,done:!1})}),de(r,\"compositionend\",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),de(r,\"touchstart\",function(){return n.forceCompositionEnd()}),de(r,\"input\",function(){t.composing||t.readFromDOMSoon()}),de(r,\"copy\",a),de(r,\"cut\",a)},Ra.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute(\"aria-label\",e):this.div.removeAttribute(\"aria-label\")},Ra.prototype.prepareSelection=function(){var e=gi(this.cm,!1);return e.focus=document.activeElement==this.div,e},Ra.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Ra.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Ra.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,i=t.doc.sel.primary(),r=i.from(),o=i.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||o.line<t.display.viewFrom)e.removeAllRanges();else{var a=Fa(t,e.anchorNode,e.anchorOffset),s=Fa(t,e.focusNode,e.focusOffset);if(!a||a.bad||!s||s.bad||0!=tt(ot(a,s),r)||0!=tt(rt(a,s),o)){var l=t.display.view,u=r.line>=t.display.viewFrom&&Ba(t,r)||{node:l[0].measure.map[2],offset:0},c=o.line<t.display.viewTo&&Ba(t,o);if(!c){var h=l[l.length-1].measure,d=h.maps?h.maps[h.maps.length-1]:h.map;c={node:d[d.length-1],offset:d[d.length-2]-d[d.length-3]}}if(u&&c){var f,p=e.rangeCount&&e.getRangeAt(0);try{f=k(u.node,u.offset,c.offset,c.node)}catch(e){}f&&(!n&&t.state.focused?(e.collapse(u.node,u.offset),f.collapsed||(e.removeAllRanges(),e.addRange(f))):(e.removeAllRanges(),e.addRange(f)),p&&null==e.anchorNode?e.addRange(p):n&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},Ra.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},Ra.prototype.showMultipleSelections=function(e){D(this.cm.display.cursorDiv,e.cursors),D(this.cm.display.selectionDiv,e.selection)},Ra.prototype.rememberSelection=function(){var e=this.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},Ra.prototype.selectionInEditor=function(){var e=this.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return O(this.div,t)},Ra.prototype.focus=function(){\"nocursor\"!=this.cm.options.readOnly&&(this.selectionInEditor()&&document.activeElement==this.div||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Ra.prototype.blur=function(){this.div.blur()},Ra.prototype.getField=function(){return this.div},Ra.prototype.supportsTouch=function(){return!0},Ra.prototype.receivedFocus=function(){var e=this;this.selectionInEditor()?this.pollSelection():Ki(this.cm,function(){return e.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function t(){e.cm.state.focused&&(e.pollSelection(),e.polling.set(e.cm.options.pollInterval,t))})},Ra.prototype.selectionChanged=function(){var e=this.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},Ra.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e=this.getSelection(),t=this.cm;if(m&&c&&this.cm.display.gutterSpecs.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(e.anchorNode))return this.cm.triggerOnKeyDown({type:\"keydown\",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var n=Fa(t,e.anchorNode,e.anchorOffset),i=Fa(t,e.focusNode,e.focusOffset);n&&i&&Ki(t,function(){Xr(t.doc,_r(n,i),H),(n.bad||i.bad)&&(t.curOp.selectionChanged=!0)})}}},Ra.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t,n,i=this.cm,r=i.display,o=i.doc.sel.primary(),a=o.from(),s=o.to();if(0==a.ch&&a.line>i.firstLine()&&(a=et(a.line-1,Ge(i.doc,a.line-1).length)),s.ch==Ge(i.doc,s.line).text.length&&s.line<i.lastLine()&&(s=et(s.line+1,0)),a.line<r.viewFrom||s.line>r.viewTo-1)return!1;a.line==r.viewFrom||0==(e=li(i,a.line))?(t=Ke(r.view[0].line),n=r.view[0].node):(t=Ke(r.view[e].line),n=r.view[e-1].node.nextSibling);var l,u,c=li(i,s.line);if(c==r.view.length-1?(l=r.viewTo-1,u=r.lineDiv.lastChild):(l=Ke(r.view[c+1].line)-1,u=r.view[c+1].node.previousSibling),!n)return!1;for(var h=i.doc.splitLines(function(e,t,n,i,r){var o=\"\",a=!1,s=e.doc.lineSeparator(),l=!1;function u(){a&&(o+=s,l&&(o+=s),a=l=!1)}function c(e){e&&(u(),o+=e)}function h(t){if(1==t.nodeType){var n=t.getAttribute(\"cm-text\");if(n)return void c(n);var o,d=t.getAttribute(\"cm-marker\");if(d){var f=e.findMarks(et(i,0),et(r+1,0),(m=+d,function(e){return e.id==m}));return void(f.length&&(o=f[0].find(0))&&c(Ue(e.doc,o.from,o.to).join(s)))}if(\"false\"==t.getAttribute(\"contenteditable\"))return;var p=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;p&&u();for(var g=0;g<t.childNodes.length;g++)h(t.childNodes[g]);/^(pre|p)$/i.test(t.nodeName)&&(l=!0),p&&(a=!0)}else 3==t.nodeType&&c(t.nodeValue.replace(/\\u200b/g,\"\").replace(/\\u00a0/g,\" \"));var m}for(;h(t),t!=n;)t=t.nextSibling,l=!1;return o}(i,n,u,t,l)),d=Ue(i.doc,et(t,0),et(l,Ge(i.doc,l).text.length));h.length>1&&d.length>1;)if(X(h)==X(d))h.pop(),d.pop(),l--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),t++}for(var f=0,p=0,g=h[0],m=d[0],v=Math.min(g.length,m.length);f<v&&g.charCodeAt(f)==m.charCodeAt(f);)++f;for(var y=X(h),b=X(d),x=Math.min(y.length-(1==h.length?f:0),b.length-(1==d.length?f:0));p<x&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==d.length&&t==a.line)for(;f&&f>a.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\\u200b+/,\"\"),h[0]=h[0].slice(f).replace(/\\u200b+$/,\"\");var _=et(t,f),w=et(l,d.length?X(d).length-p:0);return h.length>1||h[0]||tt(_,w)?(co(i.doc,h,_,w,\"+input\"),!0):void 0},Ra.prototype.ensurePolled=function(){this.forceCompositionEnd()},Ra.prototype.reset=function(){this.forceCompositionEnd()},Ra.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Ra.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},Ra.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Ki(this.cm,function(){return ui(e.cm)})},Ra.prototype.setUneditable=function(e){e.contentEditable=\"false\"},Ra.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Zi(this.cm,Da)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Ra.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(\"nocursor\"!=e)},Ra.prototype.onContextMenu=function(){},Ra.prototype.resetPosition=function(){},Ra.prototype.needsContentAttribute=!0;var Va=function(e){this.cm=e,this.prevInput=\"\",this.pollingFast=!1,this.polling=new F,this.hasSelection=!1,this.composing=null};Va.prototype.init=function(e){var t=this,n=this,i=this.cm;this.createField(e);var r=this.textarea;function o(e){if(!me(i,e)){if(i.somethingSelected())Ma({lineWise:!1,text:i.getSelections()});else{if(!i.options.lineWiseCopyCut)return;var t=Oa(i);Ma({lineWise:!0,text:t.text}),\"cut\"==e.type?i.setSelections(t.ranges,null,H):(n.prevInput=\"\",r.value=t.text.join(\"\\n\"),N(r))}\"cut\"==e.type&&(i.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(r.style.width=\"0px\"),de(r,\"input\",function(){a&&s>=9&&t.hasSelection&&(t.hasSelection=null),n.poll()}),de(r,\"paste\",function(e){me(i,e)||Aa(e,i)||(i.state.pasteIncoming=+new Date,n.fastPoll())}),de(r,\"cut\",o),de(r,\"copy\",o),de(e.scroller,\"paste\",function(t){if(!wn(e,t)&&!me(i,t)){if(!r.dispatchEvent)return i.state.pasteIncoming=+new Date,void n.focus();var o=new Event(\"paste\");o.clipboardData=t.clipboardData,r.dispatchEvent(o)}}),de(e.lineSpace,\"selectstart\",function(t){wn(e,t)||xe(t)}),de(r,\"compositionstart\",function(){var e=i.getCursor(\"from\");n.composing&&n.composing.range.clear(),n.composing={start:e,range:i.markText(e,i.getCursor(\"to\"),{className:\"CodeMirror-composing\"})}}),de(r,\"compositionend\",function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},Va.prototype.createField=function(e){this.wrapper=La(),this.textarea=this.wrapper.firstChild},Va.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute(\"aria-label\",e):this.textarea.removeAttribute(\"aria-label\")},Va.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,i=gi(e);if(e.options.moveInputWithCursor){var r=Un(e,n.sel.primary().head,\"div\"),o=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();i.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,r.top+a.top-o.top)),i.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,r.left+a.left-o.left))}return i},Va.prototype.showSelection=function(e){var t=this.cm.display;D(t.cursorDiv,e.cursors),D(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+\"px\",this.wrapper.style.left=e.teLeft+\"px\")},Va.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput=\"\";var n=t.getSelection();this.textarea.value=n,t.state.focused&&N(this.textarea),a&&s>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value=\"\",a&&s>=9&&(this.hasSelection=null))}},Va.prototype.getField=function(){return this.textarea},Va.prototype.supportsTouch=function(){return!1},Va.prototype.focus=function(){if(\"nocursor\"!=this.cm.options.readOnly&&(!v||E()!=this.textarea))try{this.textarea.focus()}catch(e){}},Va.prototype.blur=function(){this.textarea.blur()},Va.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Va.prototype.receivedFocus=function(){this.slowPoll()},Va.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Va.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function n(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,n))})},Va.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,i=this.prevInput;if(this.contextMenuPending||!t.state.focused||Le(n)&&!i&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var r=n.value;if(r==i&&!t.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===r||y&&/[\\uf700-\\uf7ff]/.test(r))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=r.charCodeAt(0);if(8203!=o||i||(i=\"​\"),8666==o)return this.reset(),this.cm.execCommand(\"undo\")}for(var l=0,u=Math.min(i.length,r.length);l<u&&i.charCodeAt(l)==r.charCodeAt(l);)++l;return Ki(t,function(){Da(t,r.slice(l),i.length-l,null,e.composing?\"*compose\":null),r.length>1e3||r.indexOf(\"\\n\")>-1?n.value=e.prevInput=\"\":e.prevInput=r,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor(\"to\"),{className:\"CodeMirror-composing\"}))}),!0},Va.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Va.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},Va.prototype.onContextMenu=function(e){var t=this,n=t.cm,i=n.display,r=t.textarea;t.contextMenuPending&&t.contextMenuPending();var o=si(n,e),u=i.scroller.scrollTop;if(o&&!h){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(o)&&Zi(n,Xr)(n.doc,_r(o),H);var c,d=r.style.cssText,f=t.wrapper.style.cssText,p=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText=\"position: static\",r.style.cssText=\"position: absolute; width: 30px; height: 30px;\\n      top: \"+(e.clientY-p.top-5)+\"px; left: \"+(e.clientX-p.left-5)+\"px;\\n      z-index: 1000; background: \"+(a?\"rgba(255, 255, 255, .05)\":\"transparent\")+\";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\",l&&(c=window.scrollY),i.input.focus(),l&&window.scrollTo(null,c),i.input.reset(),n.somethingSelected()||(r.value=t.prevInput=\" \"),t.contextMenuPending=v,i.selForContextMenu=n.doc.sel,clearTimeout(i.detectingSelectAll),a&&s>=9&&m(),C){Ce(e);var g=function(){pe(window,\"mouseup\",g),setTimeout(v,20)};de(window,\"mouseup\",g)}else setTimeout(v,50)}function m(){if(null!=r.selectionStart){var e=n.somethingSelected(),o=\"​\"+(e?r.value:\"\");r.value=\"⇚\",r.value=o,t.prevInput=e?\"\":\"​\",r.selectionStart=1,r.selectionEnd=o.length,i.selForContextMenu=n.doc.sel}}function v(){if(t.contextMenuPending==v&&(t.contextMenuPending=!1,t.wrapper.style.cssText=f,r.style.cssText=d,a&&s<9&&i.scrollbars.setScrollTop(i.scroller.scrollTop=u),null!=r.selectionStart)){(!a||a&&s<9)&&m();var e=0,o=function(){i.selForContextMenu==n.doc.sel&&0==r.selectionStart&&r.selectionEnd>0&&\"​\"==t.prevInput?Zi(n,io)(n):e++<10?i.detectingSelectAll=setTimeout(o,500):(i.selForContextMenu=null,i.input.reset())};i.detectingSelectAll=setTimeout(o,200)}}},Va.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=\"nocursor\"==e,this.textarea.readOnly=!!e},Va.prototype.setUneditable=function(){},Va.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function n(n,i,r,o){e.defaults[n]=i,r&&(t[n]=o?function(e,t,n){n!=ya&&r(e,t,n)}:r)}e.defineOption=n,e.Init=ya,n(\"value\",\"\",function(e,t){return e.setValue(t)},!0),n(\"mode\",null,function(e,t){e.doc.modeOption=t,Tr(e)},!0),n(\"indentUnit\",2,Tr,!0),n(\"indentWithTabs\",!1),n(\"smartIndent\",!0),n(\"tabSize\",4,function(e){Mr(e),$n(e),ui(e)},!0),n(\"lineSeparator\",null,function(e,t){if(e.doc.lineSep=t,t){var n=[],i=e.doc.first;e.doc.iter(function(e){for(var r=0;;){var o=e.text.indexOf(t,r);if(-1==o)break;r=o+t.length,n.push(et(i,o))}i++});for(var r=n.length-1;r>=0;r--)co(e.doc,t,n[r],et(n[r].line,n[r].ch+t.length))}}),n(\"specialChars\",/[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200c\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test(\"\\t\")?\"\":\"|\\t\"),\"g\"),n!=ya&&e.refresh()}),n(\"specialCharPlaceholder\",Jt,function(e){return e.refresh()},!0),n(\"electricChars\",!0),n(\"inputStyle\",v?\"contenteditable\":\"textarea\",function(){throw new Error(\"inputStyle can not (yet) be changed in a running editor\")},!0),n(\"spellcheck\",!1,function(e,t){return e.getInputField().spellcheck=t},!0),n(\"autocorrect\",!1,function(e,t){return e.getInputField().autocorrect=t},!0),n(\"autocapitalize\",!1,function(e,t){return e.getInputField().autocapitalize=t},!0),n(\"rtlMoveVisually\",!x),n(\"wholeLineUpdateBefore\",!0),n(\"theme\",\"default\",function(e){va(e),dr(e)},!0),n(\"keyMap\",\"default\",function(e,t,n){var i=Go(t),r=n!=ya&&Go(n);r&&r.detach&&r.detach(e,i),i.attach&&i.attach(e,r||null)}),n(\"extraKeys\",null),n(\"configureMouse\",null),n(\"lineWrapping\",!1,wa,!0),n(\"gutters\",[],function(e,t){e.display.gutterSpecs=cr(t,e.options.lineNumbers),dr(e)},!0),n(\"fixedGutter\",!0,function(e,t){e.display.gutters.style.left=t?ri(e.display)+\"px\":\"0\",e.refresh()},!0),n(\"coverGutterNextToScrollbar\",!1,function(e){return Fi(e)},!0),n(\"scrollbarStyle\",\"native\",function(e){ji(e),Fi(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),n(\"lineNumbers\",!1,function(e,t){e.display.gutterSpecs=cr(e.options.gutters,t),dr(e)},!0),n(\"firstLineNumber\",1,dr,!0),n(\"lineNumberFormatter\",function(e){return e},dr,!0),n(\"showCursorWhenSelecting\",!1,pi,!0),n(\"resetSelectionOnContextMenu\",!0),n(\"lineWiseCopyCut\",!0),n(\"pasteLinesPerSelection\",!0),n(\"selectionsMayTouch\",!1),n(\"readOnly\",!1,function(e,t){\"nocursor\"==t&&(Ci(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),n(\"screenReaderLabel\",null,function(e,t){t=\"\"===t?null:t,e.display.input.screenReaderLabelChanged(t)}),n(\"disableInput\",!1,function(e,t){t||e.display.input.reset()},!0),n(\"dragDrop\",!0,_a),n(\"allowDropFileTypes\",null),n(\"cursorBlinkRate\",530),n(\"cursorScrollMargin\",0),n(\"cursorHeight\",1,pi,!0),n(\"singleCursorHeightPerLine\",!0,pi,!0),n(\"workTime\",100),n(\"workDelay\",100),n(\"flattenSpans\",!0,Mr,!0),n(\"addModeClass\",!1,Mr,!0),n(\"pollInterval\",100),n(\"undoDepth\",200,function(e,t){return e.doc.history.undoDepth=t}),n(\"historyEventDelay\",1250),n(\"viewportMargin\",10,function(e){return e.refresh()},!0),n(\"maxHighlightLength\",1e4,Mr,!0),n(\"moveInputWithCursor\",!0,function(e,t){t||e.display.input.resetPosition()}),n(\"tabindex\",null,function(e,t){return e.display.input.getField().tabIndex=t||\"\"}),n(\"autofocus\",null),n(\"direction\",\"ltr\",function(e,t){return e.doc.setDirection(t)},!0),n(\"phrases\",null)}(Ca),function(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,n){var i=this.options,r=i[e];i[e]==n&&\"mode\"!=e||(i[e]=n,t.hasOwnProperty(e)&&Zi(this,t[e])(this,n,r),ge(this,\"optionChange\",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?\"push\":\"unshift\"](Go(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;n<t.length;++n)if(t[n]==e||t[n].name==e)return t.splice(n,1),!0},addOverlay:Ji(function(t,n){var i=t.token?t:e.getMode(this.options,t);if(i.startState)throw new Error(\"Overlays may not be stateful.\");!function(e,t,n){for(var i=0,r=n(t);i<e.length&&n(e[i])<=r;)i++;e.splice(i,0,t)}(this.state.overlays,{mode:i,modeSpec:t,opaque:n&&n.opaque,priority:n&&n.priority||0},function(e){return e.priority}),this.state.modeGen++,ui(this)}),removeOverlay:Ji(function(e){for(var t=this.state.overlays,n=0;n<t.length;++n){var i=t[n].modeSpec;if(i==e||\"string\"==typeof e&&i.name==e)return t.splice(n,1),this.state.modeGen++,void ui(this)}}),indentLine:Ji(function(e,t,n){\"string\"!=typeof t&&\"number\"!=typeof t&&(t=null==t?this.options.smartIndent?\"smart\":\"prev\":t?\"add\":\"subtract\"),Je(this.doc,e)&&ka(this,e,t,n)}),indentSelection:Ji(function(e){for(var t=this.doc.sel.ranges,n=-1,i=0;i<t.length;i++){var r=t[i];if(r.empty())r.head.line>n&&(ka(this,r.head.line,e,!0),n=r.head.line,i==this.doc.sel.primIndex&&Ai(this));else{var o=r.from(),a=r.to(),s=Math.max(n,o.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var l=s;l<n;++l)ka(this,l,e);var u=this.doc.sel.ranges;0==o.ch&&t.length==u.length&&u[i].from().ch>0&&Gr(this.doc,i,new br(o,u[i].to()),H)}}}),getTokenAt:function(e,t){return yt(this,e,t)},getLineTokens:function(e,t){return yt(this,et(e),t,!0)},getTokenTypeAt:function(e){e=st(this.doc,e);var t,n=dt(this,Ge(this.doc,e.line)),i=0,r=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var a=i+r>>1;if((a?n[2*a-1]:0)>=o)r=a;else{if(!(n[2*a+1]<o)){t=n[2*a+2];break}i=a+1}}var s=t?t.indexOf(\"overlay \"):-1;return s<0?t:0==s?null:t.slice(0,s-1)},getModeAt:function(t){var n=this.doc.mode;return n.innerMode?e.innerMode(n,this.getTokenAt(t).state).mode:n},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var i=[];if(!n.hasOwnProperty(t))return i;var r=n[t],o=this.getModeAt(e);if(\"string\"==typeof o[t])r[o[t]]&&i.push(r[o[t]]);else if(o[t])for(var a=0;a<o[t].length;a++){var s=r[o[t][a]];s&&i.push(s)}else o.helperType&&r[o.helperType]?i.push(r[o.helperType]):r[o.name]&&i.push(r[o.name]);for(var l=0;l<r._global.length;l++){var u=r._global[l];u.pred(o,this)&&-1==$(i,u.val)&&i.push(u.val)}return i},getStateAfter:function(e,t){var n=this.doc;return ft(this,(e=at(n,null==e?n.first+n.size-1:e))+1,t).state},cursorCoords:function(e,t){var n=this.doc.sel.primary();return Un(this,null==e?n.head:\"object\"==typeof e?st(this.doc,e):e?n.from():n.to(),t||\"page\")},charCoords:function(e,t){return Gn(this,st(this.doc,e),t||\"page\")},coordsChar:function(e,t){return Kn(this,(e=qn(this,e,t||\"page\")).left,e.top)},lineAtHeight:function(e,t){return e=qn(this,{top:e,left:0},t||\"page\").top,Ze(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,n){var i,r=!1;if(\"number\"==typeof e){var o=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>o&&(e=o,r=!0),i=Ge(this.doc,e)}else i=e;return Wn(this,i,{top:0,left:0},t||\"page\",n||r).top+(r?this.doc.height-Ht(i):0)},defaultTextHeight:function(){return ti(this.display)},defaultCharWidth:function(){return ni(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,i,r){var o,a,s,l=this.display,u=(e=Un(this,st(this.doc,e))).bottom,c=e.left;if(t.style.position=\"absolute\",t.setAttribute(\"cm-ignore-events\",\"true\"),this.display.input.setUneditable(t),l.sizer.appendChild(t),\"over\"==i)u=e.top;else if(\"above\"==i||\"near\"==i){var h=Math.max(l.wrapper.clientHeight,this.doc.height),d=Math.max(l.sizer.clientWidth,l.lineSpace.clientWidth);(\"above\"==i||e.bottom+t.offsetHeight>h)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=h&&(u=e.bottom),c+t.offsetWidth>d&&(c=d-t.offsetWidth)}t.style.top=u+\"px\",t.style.left=t.style.right=\"\",\"right\"==r?(c=l.sizer.clientWidth-t.offsetWidth,t.style.right=\"0px\"):(\"left\"==r?c=0:\"middle\"==r&&(c=(l.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+\"px\"),n&&(o=this,a={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=Mi(o,a)).scrollTop&&Li(o,s.scrollTop),null!=s.scrollLeft&&Ni(o,s.scrollLeft))},triggerOnKeyDown:Ji(aa),triggerOnKeyPress:Ji(la),triggerOnKeyUp:sa,triggerOnMouseDown:Ji(da),execCommand:function(e){if(Zo.hasOwnProperty(e))return Zo[e].call(null,this)},triggerElectric:Ji(function(e){Ia(this,e)}),findPosH:function(e,t,n,i){var r=1;t<0&&(r=-1,t=-t);for(var o=st(this.doc,e),a=0;a<t&&!(o=Pa(this.doc,o,r,n,i)).hitSide;++a);return o},moveH:Ji(function(e,t){var n=this;this.extendSelectionsBy(function(i){return n.display.shift||n.doc.extend||i.empty()?Pa(n.doc,i.head,e,t,n.options.rtlMoveVisually):e<0?i.from():i.to()},q)}),deleteH:Ji(function(e,t){var n=this.doc.sel,i=this.doc;n.somethingSelected()?i.replaceSelection(\"\",null,\"+delete\"):Uo(this,function(n){var r=Pa(i,n.head,e,t,!1);return e<0?{from:r,to:n.head}:{from:n.head,to:r}})}),findPosV:function(e,t,n,i){var r=1,o=i;t<0&&(r=-1,t=-t);for(var a=st(this.doc,e),s=0;s<t;++s){var l=Un(this,a,\"div\");if(null==o?o=l.left:l.left=o,(a=Na(this,l,r,n)).hitSide)break}return a},moveV:Ji(function(e,t){var n=this,i=this.doc,r=[],o=!this.display.shift&&!i.extend&&i.sel.somethingSelected();if(i.extendSelectionsBy(function(a){if(o)return e<0?a.from():a.to();var s=Un(n,a.head,\"div\");null!=a.goalColumn&&(s.left=a.goalColumn),r.push(s.left);var l=Na(n,s,e,t);return\"page\"==t&&a==i.sel.primary()&&Di(n,Gn(n,l,\"div\").top-s.top),l},q),r.length)for(var a=0;a<i.sel.ranges.length;a++)i.sel.ranges[a].goalColumn=r[a]}),findWordAt:function(e){var t=Ge(this.doc,e.line).text,n=e.ch,i=e.ch;if(t){var r=this.getHelper(e,\"wordChars\");\"before\"!=e.sticky&&i!=t.length||!n?++i:--n;for(var o=t.charAt(n),a=te(o,r)?function(e){return te(e,r)}:/\\s/.test(o)?function(e){return/\\s/.test(e)}:function(e){return!/\\s/.test(e)&&!te(e)};n>0&&a(t.charAt(n-1));)--n;for(;i<t.length&&a(t.charAt(i));)++i}return new br(et(e.line,n),et(e.line,i))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?L(this.display.cursorDiv,\"CodeMirror-overwrite\"):T(this.display.cursorDiv,\"CodeMirror-overwrite\"),ge(this,\"overwriteToggle\",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==E()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Ji(function(e,t){Ii(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-Tn(this)-this.display.barHeight,width:e.scrollWidth-Tn(this)-this.display.barWidth,clientHeight:Dn(this),clientWidth:Mn(this)}},scrollIntoView:Ji(function(e,t){null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):\"number\"==typeof e?e={from:et(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?function(e,t){Oi(e),e.curOp.scrollToPos=t}(this,e):Ei(this,e.from,e.to,e.margin)}),setSize:Ji(function(e,t){var n=this,i=function(e){return\"number\"==typeof e||/^\\d+$/.test(String(e))?e+\"px\":e};null!=e&&(this.display.wrapper.style.width=i(e)),null!=t&&(this.display.wrapper.style.height=i(t)),this.options.lineWrapping&&Fn(this);var r=this.display.viewFrom;this.doc.iter(r,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){ci(n,r,\"widget\");break}++r}),this.curOp.forceUpdate=!0,ge(this,\"refresh\",this)}),operation:function(e){return Ki(this,e)},startOperation:function(){return Wi(this)},endOperation:function(){return qi(this)},refresh:Ji(function(){var e=this.display.cachedTextHeight;ui(this),this.curOp.forceUpdate=!0,$n(this),Ii(this,this.doc.scrollLeft,this.doc.scrollTop),ar(this.display),(null==e||Math.abs(e-ti(this.display))>.5||this.options.lineWrapping)&&ai(this),ge(this,\"refresh\",this)}),swapDoc:Ji(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Or(this,e),$n(this),this.display.input.reset(),Ii(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,ln(this,\"swapDoc\",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},be(e),e.registerHelper=function(t,i,r){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][i]=r},e.registerGlobalHelper=function(t,i,r,o){e.registerHelper(t,i,o),n[t]._global.push({pred:r,val:o})}}(Ca);var ja=\"iter insert remove copy getEditor constructor\".split(\" \");for(var Ha in Mo.prototype)Mo.prototype.hasOwnProperty(Ha)&&$(ja,Ha)<0&&(Ca.prototype[Ha]=function(e){return function(){return e.apply(this.doc,arguments)}}(Mo.prototype[Ha]));return be(Mo),Ca.inputStyles={textarea:Va,contenteditable:Ra},Ca.defineMode=function(e){Ca.defaults.mode||\"null\"==e||(Ca.defaults.mode=e),function(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Re[e]=t}.apply(this,arguments)},Ca.defineMIME=function(e,t){Be[e]=t},Ca.defineMode(\"null\",function(){return{token:function(e){return e.skipToEnd()}}}),Ca.defineMIME(\"text/plain\",\"null\"),Ca.defineExtension=function(e,t){Ca.prototype[e]=t},Ca.defineDocExtension=function(e,t){Mo.prototype[e]=t},Ca.fromTextArea=function(e,t){if((t=t?B(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var n=E();t.autofocus=n==e||null!=e.getAttribute(\"autofocus\")&&n==document.body}function i(){e.value=s.getValue()}var r;if(e.form&&(de(e.form,\"submit\",i),!t.leaveSubmitMethodAlone)){var o=e.form;r=o.submit;try{var a=o.submit=function(){i(),o.submit=r,o.submit(),o.submit=a}}catch(e){}}t.finishInit=function(n){n.save=i,n.getTextArea=function(){return e},n.toTextArea=function(){n.toTextArea=isNaN,i(),e.parentNode.removeChild(n.getWrapperElement()),e.style.display=\"\",e.form&&(pe(e.form,\"submit\",i),t.leaveSubmitMethodAlone||\"function\"!=typeof e.form.submit||(e.form.submit=r))}},e.style.display=\"none\";var s=Ca(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},function(e){e.off=pe,e.on=de,e.wheelEventPixels=mr,e.Doc=Mo,e.splitLines=Ee,e.countColumn=z,e.findColumn=G,e.isWordChar=ee,e.Pass=j,e.signal=ge,e.Line=Gt,e.changeEnd=wr,e.scrollbarModel=Vi,e.Pos=et,e.cmpPos=tt,e.modes=Re,e.mimeModes=Be,e.resolveMode=ze,e.getMode=Fe,e.modeExtensions=$e,e.extendMode=Ve,e.copyState=je,e.startState=We,e.innerMode=He,e.commands=Zo,e.keyMap=Fo,e.keyName=qo,e.isModifierKey=Ho,e.lookupKey=jo,e.normalizeKeyMap=Vo,e.StringStream=qe,e.SharedTextMarker=Co,e.TextMarker=_o,e.LineWidget=yo,e.e_preventDefault=xe,e.e_stopPropagation=_e,e.e_stop=Ce,e.addClass=L,e.contains=O,e.rmClass=T,e.keyNames=No}(Ca),Ca.version=\"5.59.2\",Ca},e.exports=i()},\"8UWf\":function(e,t,n){var i=n(\"Icdr\");n(\"LGKB\"),n(\"CUwD\"),n(\"PYc7\");var r=n(\"AjK0\"),o=n(\"iDGQ\");i.registerVisual(r(\"tree\",\"circle\")),i.registerLayout(o)},\"8V5i\":function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=i.isArray,a=i.isObject,s=n(\"xb/I\"),l=n(\"vXqC\").normalizeToArray;function u(e){r(c,function(t){t[0]in e&&!(t[1]in e)&&(e[t[1]]=e[t[0]])})}var c=[[\"x\",\"left\"],[\"y\",\"top\"],[\"x2\",\"right\"],[\"y2\",\"bottom\"]],h=[\"grid\",\"geo\",\"parallel\",\"legend\",\"toolbox\",\"title\",\"visualMap\",\"dataZoom\",\"timeline\"];e.exports=function(e,t){s(e,t),e.series=l(e.series),r(e.series,function(e){if(a(e)){var t=e.type;if(\"line\"===t)null!=e.clipOverflow&&(e.clip=e.clipOverflow);else if(\"pie\"===t||\"gauge\"===t)null!=e.clockWise&&(e.clockwise=e.clockWise);else if(\"gauge\"===t){var n=function(e,t){t=t.split(\",\");for(var n=e,i=0;i<t.length&&null!=(n=n&&n[t[i]]);i++);return n}(e,\"pointer.color\");null!=n&&function(e,t,n,i){t=t.split(\",\");for(var r,o=e,a=0;a<t.length-1;a++)null==o[r=t[a]]&&(o[r]={}),o=o[r];(i||null==o[t[a]])&&(o[t[a]]=n)}(e,\"itemStyle.color\",n)}u(e)}}),e.dataRange&&(e.visualMap=e.dataRange),r(h,function(t){var n=e[t];n&&(o(n)||(n=[n]),r(n,function(e){u(e)}))})}},\"8YpK\":function(e,t,n){var i=n(\"/gxq\");function r(e,t){var n=this.getAxis(),i=t instanceof Array?t[0]:t,r=(e instanceof Array?e[0]:e)/2;return\"category\"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}e.exports=function(e){var t=e.getRect();return{coordSys:{type:\"singleAxis\",x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:i.bind(r,e)}}}},\"8b51\":function(e,t,n){var i,r,o,a,s=n(\"C7PF\"),l=n(\"dOVI\"),u=s.applyTransform,c=Math.min,h=Math.max;function d(e,t,n,i){n<0&&(e+=n,n=-n),i<0&&(t+=i,i=-i),this.x=e,this.y=t,this.width=n,this.height=i}d.prototype={constructor:d,union:function(e){var t=c(e.x,this.x),n=c(e.y,this.y);this.width=h(e.x+e.width,this.x+this.width)-t,this.height=h(e.y+e.height,this.y+this.height)-n,this.x=t,this.y=n},applyTransform:(i=[],r=[],o=[],a=[],function(e){if(e){i[0]=o[0]=this.x,i[1]=a[1]=this.y,r[0]=a[0]=this.x+this.width,r[1]=o[1]=this.y+this.height,u(i,i,e),u(r,r,e),u(o,o,e),u(a,a,e),this.x=c(i[0],r[0],o[0],a[0]),this.y=c(i[1],r[1],o[1],a[1]);var t=h(i[0],r[0],o[0],a[0]),n=h(i[1],r[1],o[1],a[1]);this.width=t-this.x,this.height=n-this.y}}),calculateTransform:function(e){var t=this,n=e.width/t.width,i=e.height/t.height,r=l.create();return l.translate(r,r,[-t.x,-t.y]),l.scale(r,r,[n,i]),l.translate(r,r,[e.x,e.y]),r},intersect:function(e){if(!e)return!1;e instanceof d||(e=d.create(e));var t=this,n=t.x,i=t.x+t.width,r=t.y,o=t.y+t.height,a=e.x,s=e.x+e.width,l=e.y,u=e.y+e.height;return!(i<a||s<n||o<l||u<r)},contain:function(e,t){return e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height},clone:function(){return new d(this.x,this.y,this.width,this.height)},copy:function(e){this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},d.create=function(e){return new d(e.x,e.y,e.width,e.height)};var f=d;e.exports=f},\"94VQ\":function(e,t,n){\"use strict\";var i=n(\"Yobk\"),r=n(\"X8DO\"),o=n(\"e6n0\"),a={};n(\"hJx8\")(a,n(\"dSzd\")(\"iterator\"),function(){return this}),e.exports=function(e,t,n){e.prototype=i(a,{next:r(1,n)}),o(e,t+\" Iterator\")}},\"997V\":function(e,t,n){n(\"jJrn\"),n(\"xLO3\"),n(\"lVde\")},\"9N6q\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"YNzw\"),o=n(\"AlhT\"),a=n(\"HKuw\");function s(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e.zlevel-t.zlevel}var l=function(){this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,traverse:function(e,t){for(var n=0;n<this._roots.length;n++)this._roots[n].traverse(e,t)},getDisplayList:function(e,t){return t=t||!1,e&&this.updateDisplayList(t),this._displayList},updateDisplayList:function(e){this._displayListLen=0;for(var t=this._roots,n=this._displayList,i=0,o=t.length;i<o;i++)this._updateAndAddDisplayable(t[i],null,e);n.length=this._displayListLen,r.canvasSupported&&a(n,s)},_updateAndAddDisplayable:function(e,t,n){if(!e.ignore||n){e.beforeUpdate(),e.__dirty&&e.update(),e.afterUpdate();var i=e.clipPath;if(i){t=t?t.slice():[];for(var r=i,o=e;r;)r.parent=o,r.updateTransform(),t.push(r),o=r,r=r.clipPath}if(e.isGroup){for(var a=e._children,s=0;s<a.length;s++){var l=a[s];e.__dirty&&(l.__dirty=!0),this._updateAndAddDisplayable(l,t,n)}e.__dirty=!1}else e.__clipPaths=t,this._displayList[this._displayListLen++]=e}},addRoot:function(e){e.__storage!==this&&(e instanceof o&&e.addChildrenToStorage(this),this.addToStorage(e),this._roots.push(e))},delRoot:function(e){if(null==e){for(var t=0;t<this._roots.length;t++){var n=this._roots[t];n instanceof o&&n.delChildrenFromStorage(this)}return this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(e instanceof Array){t=0;for(var r=e.length;t<r;t++)this.delRoot(e[t])}else{var a=i.indexOf(this._roots,e);a>=0&&(this.delFromStorage(e),this._roots.splice(a,1),e instanceof o&&e.delChildrenFromStorage(this))}},addToStorage:function(e){return e&&(e.__storage=this,e.dirty(!1)),this},delFromStorage:function(e){return e&&(e.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:s};var u=l;e.exports=u},\"9Owa\":function(e,t,n){var i=n(\"/gxq\").each,r=\"\\0_ec_hist_store\";function o(e){var t=e[r];return t||(t=e[r]=[{}]),t}t.push=function(e,t){var n=o(e);i(t,function(t,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=e.queryComponents({mainType:\"dataZoom\",subType:\"select\",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}}),n.push(t)},t.pop=function(e){var t=o(e),n=t[t.length-1];t.length>1&&t.pop();var r={};return i(n,function(e,n){for(var i=t.length-1;i>=0;i--)if(e=t[i][n]){r[n]=e;break}}),r},t.clear=function(e){e[r]=null},t.count=function(e){return o(e).length}},\"9Z3y\":function(e,t,n){var i=n(\"wWR3\"),r=i.parsePercent,o=i.linearMap,a=n(\"1Xuh\"),s=n(\"XhgW\"),l=n(\"/gxq\"),u=2*Math.PI,c=Math.PI/180;e.exports=function(e,t,n,i){t.eachSeriesByType(e,function(e){var t=e.getData(),i=t.mapDimension(\"value\"),h=function(e,t){return a.getLayoutRect(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}(e,n),d=e.get(\"center\"),f=e.get(\"radius\");l.isArray(f)||(f=[0,f]),l.isArray(d)||(d=[d,d]);var p=r(h.width,n.getWidth()),g=r(h.height,n.getHeight()),m=Math.min(p,g),v=r(d[0],p)+h.x,y=r(d[1],g)+h.y,b=r(f[0],m/2),x=r(f[1],m/2),_=-e.get(\"startAngle\")*c,w=e.get(\"minAngle\")*c,C=0;t.each(i,function(e){!isNaN(e)&&C++});var S=t.getSum(i),k=Math.PI/(S||C)*2,T=e.get(\"clockwise\"),M=e.get(\"roseType\"),D=e.get(\"stillShowZeroSum\"),A=t.getDataExtent(i);A[0]=0;var I=u,O=0,E=_,L=T?1:-1;if(t.each(i,function(e,n){var i;if(isNaN(e))t.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:T,cx:v,cy:y,r0:b,r:M?NaN:x,viewRect:h});else{(i=\"area\"!==M?0===S&&D?k:e*k:u/C)<w?(i=w,I-=w):O+=e;var r=E+L*i;t.setItemLayout(n,{angle:i,startAngle:E,endAngle:r,clockwise:T,cx:v,cy:y,r0:b,r:M?o(e,A,[b,x]):x,viewRect:h}),E=r}}),I<u&&C)if(I<=.001){var P=u/C;t.each(i,function(e,n){if(!isNaN(e)){var i=t.getItemLayout(n);i.angle=P,i.startAngle=_+L*n*P,i.endAngle=_+L*(n+1)*P}})}else k=I/O,E=_,t.each(i,function(e,n){if(!isNaN(e)){var i=t.getItemLayout(n),r=i.angle===w?w:e*k;i.startAngle=E,i.endAngle=E+L*r,E+=L*r}});s(e,x,h.width,h.height,h.x,h.y)})}},\"9b8q\":function(e,t){var n={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1};e.exports=function(e,t,i){return n.hasOwnProperty(t)?i*e.dpr:i}},\"9bBU\":function(e,t,n){n(\"mClu\");var i=n(\"FeBl\").Object;e.exports=function(e,t,n){return i.defineProperty(e,t,n)}},\"9cSo\":function(e,t,n){var i=n(\"Icdr\");n(\"a1DW\"),n(\"1VkX\");var r=n(\"g8A/\"),o=n(\"fAbo\"),a=n(\"vxwL\");i.registerPreprocessor(r),i.registerVisual(o),i.registerLayout(a)},\"9qnA\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"d8Tt\"),o=n(\"avYi\"),a=n(\"taS8\");function s(e){for(var t in e=e||{},o.call(this,e),e)e.hasOwnProperty(t)&&\"style\"!==t&&(this[t]=e[t]);this.style=new r(e.style,this),this._rect=null,this.__clipPaths=null}s.prototype={constructor:s,type:\"displayable\",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:\"pointer\",rectHover:!1,progressive:!1,incremental:!1,globalScaleRatio:1,beforeBrush:function(e){},afterBrush:function(e){},brush:function(e,t){},getBoundingRect:function(){},contain:function(e,t){return this.rectContain(e,t)},traverse:function(e,t){e.call(t,this)},rectContain:function(e,t){var n=this.transformCoordToLocal(e,t);return this.getBoundingRect().contain(n[0],n[1])},dirty:function(){this.__dirty=this.__dirtyText=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(e){return this.animate(\"style\",e)},attrKV:function(e,t){\"style\"!==e?o.prototype.attrKV.call(this,e,t):this.style.set(t)},setStyle:function(e,t){return this.style.set(e,t),this.dirty(!1),this},useStyle:function(e){return this.style=new r(e,this),this.dirty(!1),this},calculateTextPosition:null},i.inherits(s,o),i.mixin(s,a);var l=s;e.exports=l},A6Kt:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");n(\"qBny\"),n(\"DnWC\"),n(\"C6b9\");var o=n(\"ri8f\"),a=n(\"4SGL\"),s=n(\"l4Op\");i.registerVisual(r.curry(o,\"sunburst\")),i.registerLayout(r.curry(a,\"sunburst\")),i.registerProcessor(r.curry(s,\"sunburst\"))},AAi1:function(e,t,n){var i=n(\"C7PF\"),r=i.create,o=i.distSquare,a=Math.pow,s=Math.sqrt,l=1e-8,u=1e-4,c=s(3),h=1/3,d=r(),f=r(),p=r();function g(e){return e>-l&&e<l}function m(e){return e>l||e<-l}function v(e,t,n,i,r){var o=1-r;return o*o*(o*e+3*r*t)+r*r*(r*i+3*o*n)}function y(e,t,n,i){var r=1-i;return r*(r*e+2*i*t)+i*i*n}t.cubicAt=v,t.cubicDerivativeAt=function(e,t,n,i,r){var o=1-r;return 3*(((t-e)*o+2*(n-t)*r)*o+(i-n)*r*r)},t.cubicRootAt=function(e,t,n,i,r,o){var l=i+3*(t-n)-e,u=3*(n-2*t+e),d=3*(t-e),f=e-r,p=u*u-3*l*d,m=u*d-9*l*f,v=d*d-3*u*f,y=0;if(g(p)&&g(m))g(u)?o[0]=0:(A=-d/u)>=0&&A<=1&&(o[y++]=A);else{var b=m*m-4*p*v;if(g(b)){var x=m/p,_=-x/2;(A=-u/l+x)>=0&&A<=1&&(o[y++]=A),_>=0&&_<=1&&(o[y++]=_)}else if(b>0){var w=s(b),C=p*u+1.5*l*(-m+w),S=p*u+1.5*l*(-m-w);(A=(-u-((C=C<0?-a(-C,h):a(C,h))+(S=S<0?-a(-S,h):a(S,h))))/(3*l))>=0&&A<=1&&(o[y++]=A)}else{var k=(2*p*u-3*l*m)/(2*s(p*p*p)),T=Math.acos(k)/3,M=s(p),D=Math.cos(T),A=(-u-2*M*D)/(3*l),I=(_=(-u+M*(D+c*Math.sin(T)))/(3*l),(-u+M*(D-c*Math.sin(T)))/(3*l));A>=0&&A<=1&&(o[y++]=A),_>=0&&_<=1&&(o[y++]=_),I>=0&&I<=1&&(o[y++]=I)}}return y},t.cubicExtrema=function(e,t,n,i,r){var o=6*n-12*t+6*e,a=9*t+3*i-3*e-9*n,l=3*t-3*e,u=0;if(g(a))m(o)&&(h=-l/o)>=0&&h<=1&&(r[u++]=h);else{var c=o*o-4*a*l;if(g(c))r[0]=-o/(2*a);else if(c>0){var h,d=s(c),f=(-o-d)/(2*a);(h=(-o+d)/(2*a))>=0&&h<=1&&(r[u++]=h),f>=0&&f<=1&&(r[u++]=f)}}return u},t.cubicSubdivide=function(e,t,n,i,r,o){var a=(t-e)*r+e,s=(n-t)*r+t,l=(i-n)*r+n,u=(s-a)*r+a,c=(l-s)*r+s,h=(c-u)*r+u;o[0]=e,o[1]=a,o[2]=u,o[3]=h,o[4]=h,o[5]=c,o[6]=l,o[7]=i},t.cubicProjectPoint=function(e,t,n,i,r,a,l,c,h,g,m){var y,b,x,_,w,C=.005,S=1/0;d[0]=h,d[1]=g;for(var k=0;k<1;k+=.05)f[0]=v(e,n,r,l,k),f[1]=v(t,i,a,c,k),(_=o(d,f))<S&&(y=k,S=_);S=1/0;for(var T=0;T<32&&!(C<u);T++)b=y-C,x=y+C,f[0]=v(e,n,r,l,b),f[1]=v(t,i,a,c,b),_=o(f,d),b>=0&&_<S?(y=b,S=_):(p[0]=v(e,n,r,l,x),p[1]=v(t,i,a,c,x),w=o(p,d),x<=1&&w<S?(y=x,S=w):C*=.5);return m&&(m[0]=v(e,n,r,l,y),m[1]=v(t,i,a,c,y)),s(S)},t.quadraticAt=y,t.quadraticDerivativeAt=function(e,t,n,i){return 2*((1-i)*(t-e)+i*(n-t))},t.quadraticRootAt=function(e,t,n,i,r){var o=e-2*t+n,a=2*(t-e),l=e-i,u=0;if(g(o))m(a)&&(h=-l/a)>=0&&h<=1&&(r[u++]=h);else{var c=a*a-4*o*l;if(g(c))(h=-a/(2*o))>=0&&h<=1&&(r[u++]=h);else if(c>0){var h,d=s(c),f=(-a-d)/(2*o);(h=(-a+d)/(2*o))>=0&&h<=1&&(r[u++]=h),f>=0&&f<=1&&(r[u++]=f)}}return u},t.quadraticExtremum=function(e,t,n){var i=e+n-2*t;return 0===i?.5:(e-t)/i},t.quadraticSubdivide=function(e,t,n,i,r){var o=(t-e)*i+e,a=(n-t)*i+t,s=(a-o)*i+o;r[0]=e,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=n},t.quadraticProjectPoint=function(e,t,n,i,r,a,l,c,h){var g,m=.005,v=1/0;d[0]=l,d[1]=c;for(var b=0;b<1;b+=.05)f[0]=y(e,n,r,b),f[1]=y(t,i,a,b),(C=o(d,f))<v&&(g=b,v=C);v=1/0;for(var x=0;x<32&&!(m<u);x++){var _=g-m,w=g+m;f[0]=y(e,n,r,_),f[1]=y(t,i,a,_);var C=o(f,d);if(_>=0&&C<v)g=_,v=C;else{p[0]=y(e,n,r,w),p[1]=y(t,i,a,w);var S=o(p,d);w<=1&&S<v?(g=w,v=S):m*=.5}}return h&&(h[0]=y(e,n,r,g),h[1]=y(t,i,a,g)),s(v)}},ABnm:function(e,t){var n=2*Math.PI;t.normalizeRadian=function(e){return(e%=n)<0&&(e+=n),e}},AKXb:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"QCrJ\"),a=n(\"dtW/\");n(\"TCXJ\"),n(\"56C7\"),n(\"D7EH\"),i.registerPreprocessor(function(e){if(e){(!e.axisPointer||0===e.axisPointer.length)&&(e.axisPointer={});var t=e.axisPointer.link;t&&!r.isArray(t)&&(e.axisPointer.link=[t])}}),i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC,function(e,t){e.getComponent(\"axisPointer\").coordSysAxesInfo=o.collect(e,t)}),i.registerAction({type:\"updateAxisPointer\",event:\"updateAxisPointer\",update:\":updateAxisPointer\"},a)},AMCD:function(e,t,n){\"use strict\";t.__esModule=!0,t.validateRangeInOneMonth=t.extractTimeFormat=t.extractDateFormat=t.nextYear=t.prevYear=t.nextMonth=t.prevMonth=t.changeYearMonthAndClampDate=t.timeWithinRange=t.limitTimeRange=t.clearMilliseconds=t.clearTime=t.modifyWithTimeString=t.modifyTime=t.modifyDate=t.range=t.getRangeMinutes=t.getMonthDays=t.getPrevMonthLastDays=t.getRangeHours=t.getWeekNumber=t.getStartDateOfMonth=t.nextDate=t.prevDate=t.getFirstDayOfMonth=t.getDayCountOfYear=t.getDayCountOfMonth=t.parseDate=t.formatDate=t.isDateObject=t.isDate=t.toDate=t.getI18nSettings=void 0;var i,r=n(\"eNfa\"),o=(i=r)&&i.__esModule?i:{default:i},a=n(\"urW8\");var s=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"],l=[\"jan\",\"feb\",\"mar\",\"apr\",\"may\",\"jun\",\"jul\",\"aug\",\"sep\",\"oct\",\"nov\",\"dec\"],u=t.getI18nSettings=function(){return{dayNamesShort:s.map(function(e){return(0,a.t)(\"el.datepicker.weeks.\"+e)}),dayNames:s.map(function(e){return(0,a.t)(\"el.datepicker.weeks.\"+e)}),monthNamesShort:l.map(function(e){return(0,a.t)(\"el.datepicker.months.\"+e)}),monthNames:l.map(function(e,t){return(0,a.t)(\"el.datepicker.month\"+(t+1))}),amPm:[\"am\",\"pm\"]}},c=t.toDate=function(e){return h(e)?new Date(e):null},h=t.isDate=function(e){return null!==e&&void 0!==e&&(!isNaN(new Date(e).getTime())&&!Array.isArray(e))},d=(t.isDateObject=function(e){return e instanceof Date},t.formatDate=function(e,t){return(e=c(e))?o.default.format(e,t||\"yyyy-MM-dd\",u()):\"\"},t.parseDate=function(e,t){return o.default.parse(e,t||\"yyyy-MM-dd\",u())}),f=t.getDayCountOfMonth=function(e,t){return 3===t||5===t||8===t||10===t?30:1===t?e%4==0&&e%100!=0||e%400==0?29:28:31},p=(t.getDayCountOfYear=function(e){return e%400==0||e%100!=0&&e%4==0?366:365},t.getFirstDayOfMonth=function(e){var t=new Date(e.getTime());return t.setDate(1),t.getDay()},t.prevDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var n=new Date(e,t,1),i=n.getDay();return p(n,0===i?7:i)},t.getWeekNumber=function(e){if(!h(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],n=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});n=n.concat(function(e,t){for(var n=[],i=e;i<=t;i++)n.push(i);return n}(t[0],t[1]))}),n.length)for(var i=0;i<24;i++)t[i]=-1===n.indexOf(i);else for(var r=0;r<24;r++)t[r]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var n=new Date(e.getTime());n.setDate(0);var i=n.getDate();return m(t).map(function(e,n){return i-(t-n-1)})},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return m(t).map(function(e,t){return t+1})};function g(e,t,n,i){for(var r=t;r<n;r++)e[r]=i}t.getRangeMinutes=function(e,t){var n=new Array(60);return e.length>0?e.forEach(function(e){var i=e[0],r=e[1],o=i.getHours(),a=i.getMinutes(),s=r.getHours(),l=r.getMinutes();o===t&&s!==t?g(n,a,60,!0):o===t&&s===t?g(n,a,l+1,!0):o!==t&&s===t?g(n,0,l+1,!0):o<t&&s>t&&g(n,0,60,!0)}):g(n,0,60,!0),n};var m=t.range=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},v=t.modifyDate=function(e,t,n,i){return new Date(t,n,i,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},y=t.modifyTime=function(e,t,n,i){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,n,i,e.getMilliseconds())},b=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=d(t,\"HH:mm:ss\"),y(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"HH:mm:ss\";if(0===t.length)return e;var i=function(e){return o.default.parse(o.default.format(e,n),n)},r=i(e),a=t.map(function(e){return e.map(i)});if(a.some(function(e){return r>=e[0]&&r<=e[1]}))return e;var s=a[0][0],l=a[0][0];return a.forEach(function(e){s=new Date(Math.min(e[0],s)),l=new Date(Math.max(e[1],s))}),v(r<s?s:l,e.getFullYear(),e.getMonth(),e.getDate())}),x=(t.timeWithinRange=function(e,t,n){return b(e,t,n).getTime()===e.getTime()},t.changeYearMonthAndClampDate=function(e,t,n){var i=Math.min(e.getDate(),f(t,n));return v(e,t,n,i)});t.prevMonth=function(e){var t=e.getFullYear(),n=e.getMonth();return 0===n?x(e,t-1,11):x(e,t,n-1)},t.nextMonth=function(e){var t=e.getFullYear(),n=e.getMonth();return 11===n?x(e,t+1,0):x(e,t,n+1)},t.prevYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e.getFullYear(),i=e.getMonth();return x(e,n-t,i)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e.getFullYear(),i=e.getMonth();return x(e,n+t,i)},t.extractDateFormat=function(e){return e.replace(/\\W?m{1,2}|\\W?ZZ/g,\"\").replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi,\"\").trim()},t.extractTimeFormat=function(e){return e.replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?y{2,4}/g,\"\").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},ARaV:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Rfu2\"),o=n(\"wWR3\"),a=n(\"vx1D\"),s=n(\"6n1D\"),l=n(\"SZjP\"),u=n(\"qVJQ\").getStackedDimension,c=function(e,t,n,r){var o=e.getData(),s=r.type;if(!i.isArray(r)&&(\"min\"===s||\"max\"===s||\"average\"===s||\"median\"===s||null!=r.xAxis||null!=r.yAxis)){var l,c;if(null!=r.yAxis||null!=r.xAxis)l=t.getAxis(null!=r.yAxis?\"y\":\"x\"),c=i.retrieve(r.yAxis,r.xAxis);else{var h=a.getAxisInfo(r,o,t,e);l=h.valueAxis;var d=u(o,h.valueDataDim);c=a.numCalculate(o,d,s)}var f=\"x\"===l.dim?0:1,p=1-f,g=i.clone(r),m={};g.type=null,g.coord=[],m.coord=[],g.coord[p]=-1/0,m.coord[p]=1/0;var v=n.get(\"precision\");v>=0&&\"number\"==typeof c&&(c=+c.toFixed(Math.min(v,20))),g.coord[f]=m.coord[f]=c,r=[g,m,{type:s,valueIndex:r.valueIndex,value:c}]}return(r=[a.dataTransform(e,r[0]),a.dataTransform(e,r[1]),i.extend({},r[2])])[2].type=r[2].type||\"\",i.merge(r[2],r[0]),i.merge(r[2],r[1]),r};function h(e){return!isNaN(e)&&!isFinite(e)}function d(e,t,n,i){var r=1-e,o=i.dimensions[e];return h(t[r])&&h(n[r])&&t[e]===n[e]&&i.getAxis(o).containData(t[e])}function f(e,t){if(\"cartesian2d\"===e.type){var n=t[0].coord,i=t[1].coord;if(n&&i&&(d(1,n,i,e)||d(0,n,i,e)))return!0}return a.dataFilter(e,t[0])&&a.dataFilter(e,t[1])}function p(e,t,n,i,r){var a,s=i.coordinateSystem,l=e.getItemModel(t),u=o.parsePercent(l.get(\"x\"),r.getWidth()),c=o.parsePercent(l.get(\"y\"),r.getHeight());if(isNaN(u)||isNaN(c)){if(i.getMarkerPosition)a=i.getMarkerPosition(e.getValues(e.dimensions,t));else{var d=s.dimensions,f=e.get(d[0],t),p=e.get(d[1],t);a=s.dataToPoint([f,p])}if(\"cartesian2d\"===s.type){var g=s.getAxis(\"x\"),m=s.getAxis(\"y\");d=s.dimensions;h(e.get(d[0],t))?a[0]=g.toGlobalCoord(g.getExtent()[n?0:1]):h(e.get(d[1],t))&&(a[1]=m.toGlobalCoord(m.getExtent()[n?0:1]))}isNaN(u)||(a[0]=u),isNaN(c)||(a[1]=c)}else a=[u,c];e.setItemLayout(t,a)}var g=l.extend({type:\"markLine\",updateTransform:function(e,t,n){t.eachSeries(function(e){var t=e.markLineModel;if(t){var i=t.getData(),r=t.__from,o=t.__to;r.each(function(t){p(r,t,!0,e,n),p(o,t,!1,e,n)}),i.each(function(e){i.setItemLayout(e,[r.getItemLayout(e),o.getItemLayout(e)])}),this.markerGroupMap.get(e.id).updateLayout()}},this)},renderSeries:function(e,t,n,o){var l=e.coordinateSystem,u=e.id,h=e.getData(),d=this.markerGroupMap,g=d.get(u)||d.set(u,new s);this.group.add(g.group);var m=function(e,t,n){var o;o=e?i.map(e&&e.dimensions,function(e){var n=t.getData().getDimensionInfo(t.getData().mapDimension(e))||{};return i.defaults({name:e},n)}):[{name:\"value\",type:\"float\"}];var s=new r(o,n),l=new r(o,n),u=new r([],n),h=i.map(n.get(\"data\"),i.curry(c,t,e,n));e&&(h=i.filter(h,i.curry(f,e)));var d=e?a.dimValueGetter:function(e){return e.value};return s.initData(i.map(h,function(e){return e[0]}),null,d),l.initData(i.map(h,function(e){return e[1]}),null,d),u.initData(i.map(h,function(e){return e[2]})),u.hasItemOption=!0,{from:s,to:l,line:u}}(l,e,t),v=m.from,y=m.to,b=m.line;t.__from=v,t.__to=y,t.setData(b);var x=t.get(\"symbol\"),_=t.get(\"symbolSize\");function w(t,n,i){var r=t.getItemModel(n);p(t,n,i,e,o),t.setItemVisual(n,{symbolSize:r.get(\"symbolSize\")||_[i?0:1],symbol:r.get(\"symbol\",!0)||x[i?0:1],color:r.get(\"itemStyle.color\")||h.getVisual(\"color\")})}i.isArray(x)||(x=[x,x]),\"number\"==typeof _&&(_=[_,_]),m.from.each(function(e){w(v,e,!0),w(y,e,!1)}),b.each(function(e){var t=b.getItemModel(e).get(\"lineStyle.color\");b.setItemVisual(e,{color:t||v.getItemVisual(e,\"color\")}),b.setItemLayout(e,[v.getItemLayout(e),y.getItemLayout(e)]),b.setItemVisual(e,{fromSymbolSize:v.getItemVisual(e,\"symbolSize\"),fromSymbol:v.getItemVisual(e,\"symbol\"),toSymbolSize:y.getItemVisual(e,\"symbolSize\"),toSymbol:y.getItemVisual(e,\"symbol\")})}),g.updateData(b),m.line.eachItemGraphicEl(function(e,n){e.traverse(function(e){e.dataModel=t})}),g.__keep=!0,g.group.silent=t.get(\"silent\")||e.get(\"silent\")}});e.exports=g},AbHi:function(e,t,n){var i=n(\"YNzw\"),r=n(\"FIAY\"),o=n(\"dCQY\"),a=r.toolbox.saveAsImage;function s(e){this.model=e}s.defaultOption={show:!0,icon:\"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0\",title:a.title,type:\"png\",connectedBackgroundColor:\"#fff\",name:\"\",excludeComponents:[\"toolbox\"],pixelRatio:1,lang:a.lang.slice()},s.prototype.unusable=!i.canvasSupported,s.prototype.onclick=function(e,t){var n=this.model,r=n.get(\"name\")||e.get(\"title.0.text\")||\"echarts\",o=\"svg\"===t.getZr().painter.getType()?\"svg\":n.get(\"type\",!0)||\"png\",a=t.getConnectedDataURL({type:o,backgroundColor:n.get(\"backgroundColor\",!0)||e.get(\"backgroundColor\")||\"#fff\",connectedBackgroundColor:n.get(\"connectedBackgroundColor\"),excludeComponents:n.get(\"excludeComponents\"),pixelRatio:n.get(\"pixelRatio\")});if(\"function\"!=typeof MouseEvent||i.browser.ie||i.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(a.split(\",\")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var c=new Blob([u]);window.navigator.msSaveOrOpenBlob(c,r+\".\"+o)}else{var h=n.get(\"lang\"),d='<body style=\"margin:0;\"><img src=\"'+a+'\" style=\"max-width:100%;\" title=\"'+(h&&h[0]||\"\")+'\" /></body>';window.open().document.write(d)}else{var f=document.createElement(\"a\");f.download=r+\".\"+o,f.target=\"_blank\",f.href=a;var p=new MouseEvent(\"click\",{view:window,bubbles:!0,cancelable:!1});f.dispatchEvent(p)}},o.register(\"saveAsImage\",s);var l=s;e.exports=l},AjK0:function(e,t,n){var i=n(\"/gxq\").isFunction;e.exports=function(e,t,n){return{seriesType:e,performRawSeries:!0,reset:function(e,r,o){var a=e.getData(),s=e.get(\"symbol\"),l=e.get(\"symbolSize\"),u=e.get(\"symbolKeepAspect\"),c=e.get(\"symbolRotate\"),h=i(s),d=i(l),f=i(c),p=h||d||f,g=!h&&s?s:t,m=d?null:l;if(a.setVisual({legendSymbol:n||g,symbol:g,symbolSize:m,symbolKeepAspect:u,symbolRotate:c}),!r.isSeriesFiltered(e))return{dataEach:a.hasItemOption||p?function(t,n){if(p){var i=e.getRawValue(n),r=e.getDataParams(n);h&&t.setItemVisual(n,\"symbol\",s(i,r)),d&&t.setItemVisual(n,\"symbolSize\",l(i,r)),f&&t.setItemVisual(n,\"symbolRotate\",c(i,r))}if(t.hasItemOption){var o=t.getItemModel(n),a=o.getShallow(\"symbol\",!0),u=o.getShallow(\"symbolSize\",!0),g=o.getShallow(\"symbolRotate\",!0),m=o.getShallow(\"symbolKeepAspect\",!0);null!=a&&t.setItemVisual(n,\"symbol\",a),null!=u&&t.setItemVisual(n,\"symbolSize\",u),null!=g&&t.setItemVisual(n,\"symbolRotate\",g),null!=m&&t.setItemVisual(n,\"symbolKeepAspect\",m)}}:null}}}}},AjST:function(e,t,n){var i=n(\"Icdr\");n(\"Po+l\"),n(\"MsVc\");var r=n(\"5KWC\"),o=n(\"YbE0\");i.registerVisual(r),i.registerLayout(o)},AlF5:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=i.each,o=i.createHashMap,a=n(\"0MNY\"),s=n(\"s/PG\"),l=n(\"mvkK\"),u=n(\"8b51\"),c={geoJSON:s,svg:l},h={load:function(e,t,n){var i,a=[],s=o(),l=o(),h=f(e);return r(h,function(o){var u=c[o.type].load(e,o,n);r(u.regions,function(e){var n=e.name;t&&t.hasOwnProperty(n)&&(e=e.cloneShallow(n=t[n])),a.push(e),s.set(n,e),l.set(n,e.center)});var h=u.boundingRect;h&&(i?i.union(h):i=h.clone())}),{regions:a,regionsMap:s,nameCoordMap:l,boundingRect:i||new u(0,0,0,0)}},makeGraphic:d(\"makeGraphic\"),removeGraphic:d(\"removeGraphic\")};function d(e){return function(t,n){var i=f(t),o=[];return r(i,function(i){var r=c[i.type][e];r&&o.push(r(t,i,n))}),o}}function f(e){return a.retrieveMap(e)||[]}e.exports=h},AlhT:function(e,t,n){var i=n(\"/gxq\"),r=n(\"avYi\"),o=n(\"8b51\"),a=function(e){for(var t in e=e||{},r.call(this,e),e)e.hasOwnProperty(t)&&(this[t]=e[t]);this._children=[],this.__storage=null,this.__dirty=!0};a.prototype={constructor:a,isGroup:!0,type:\"group\",silent:!1,children:function(){return this._children.slice()},childAt:function(e){return this._children[e]},childOfName:function(e){for(var t=this._children,n=0;n<t.length;n++)if(t[n].name===e)return t[n]},childCount:function(){return this._children.length},add:function(e){return e&&e!==this&&e.parent!==this&&(this._children.push(e),this._doAdd(e)),this},addBefore:function(e,t){if(e&&e!==this&&e.parent!==this&&t&&t.parent===this){var n=this._children,i=n.indexOf(t);i>=0&&(n.splice(i,0,e),this._doAdd(e))}return this},_doAdd:function(e){e.parent&&e.parent.remove(e),e.parent=this;var t=this.__storage,n=this.__zr;t&&t!==e.__storage&&(t.addToStorage(e),e instanceof a&&e.addChildrenToStorage(t)),n&&n.refresh()},remove:function(e){var t=this.__zr,n=this.__storage,r=this._children,o=i.indexOf(r,e);return o<0?this:(r.splice(o,1),e.parent=null,n&&(n.delFromStorage(e),e instanceof a&&e.delChildrenFromStorage(n)),t&&t.refresh(),this)},removeAll:function(){var e,t,n=this._children,i=this.__storage;for(t=0;t<n.length;t++)e=n[t],i&&(i.delFromStorage(e),e instanceof a&&e.delChildrenFromStorage(i)),e.parent=null;return n.length=0,this},eachChild:function(e,t){for(var n=this._children,i=0;i<n.length;i++){var r=n[i];e.call(t,r,i)}return this},traverse:function(e,t){for(var n=0;n<this._children.length;n++){var i=this._children[n];e.call(t,i),\"group\"===i.type&&i.traverse(e,t)}return this},addChildrenToStorage:function(e){for(var t=0;t<this._children.length;t++){var n=this._children[t];e.addToStorage(n),n instanceof a&&n.addChildrenToStorage(e)}},delChildrenFromStorage:function(e){for(var t=0;t<this._children.length;t++){var n=this._children[t];e.delFromStorage(n),n instanceof a&&n.delChildrenFromStorage(e)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(e){for(var t=null,n=new o(0,0,0,0),i=e||this._children,r=[],a=0;a<i.length;a++){var s=i[a];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),u=s.getLocalTransform(r);u?(n.copy(l),n.applyTransform(u),(t=t||n.clone()).union(n)):(t=t||l.clone()).union(l)}}return t||n}},i.inherits(a,r);var s=a;e.exports=s},Axyt:function(e,t,n){var i=n(\"/gxq\"),r=n(\"B33o\");function o(e,t,n){for(var i=[],r=t[0],o=t[1],a=0;a<e.length;a+=2){var s=e.charCodeAt(a)-64,l=e.charCodeAt(a+1)-64;s=s>>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}e.exports=function(e,t){return function(e){if(!e.UTF8Encoding)return e;var t=e.UTF8Scale;null==t&&(t=1024);for(var n=e.features,i=0;i<n.length;i++)for(var r=n[i].geometry,a=r.coordinates,s=r.encodeOffsets,l=0;l<a.length;l++){var u=a[l];if(\"Polygon\"===r.type)a[l]=o(u,s[l],t);else if(\"MultiPolygon\"===r.type)for(var c=0;c<u.length;c++){var h=u[c];u[c]=o(h,s[l][c],t)}}e.UTF8Encoding=!1}(e),i.map(i.filter(e.features,function(e){return e.geometry&&e.properties&&e.geometry.coordinates.length>0}),function(e){var n=e.properties,o=e.geometry,a=o.coordinates,s=[];\"Polygon\"===o.type&&s.push({type:\"polygon\",exterior:a[0],interiors:a.slice(1)}),\"MultiPolygon\"===o.type&&i.each(a,function(e){e[0]&&s.push({type:\"polygon\",exterior:e[0],interiors:e.slice(1)})});var l=new r(n[t||\"name\"],s,n.cp);return l.properties=n,l})}},B123:function(e,t,n){var i=n(\"/gxq\"),r={get:function(e,t,n){var r=i.clone((o[e]||{})[t]);return n&&i.isArray(r)?r[r.length-1]:r}},o={color:{active:[\"#006edd\",\"#e0ffff\"],inactive:[\"rgba(0,0,0,0)\"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:[\"circle\",\"roundRect\",\"diamond\"],inactive:[\"none\"]},symbolSize:{active:[10,50],inactive:[0,0]}},a=r;e.exports=a},B33o:function(e,t,n){var i=n(\"8b51\"),r=n(\"wUOi\"),o=n(\"C7PF\"),a=n(\"N1qP\");function s(e,t,n){if(this.name=e,this.geometries=t,n)n=[n[0],n[1]];else{var i=this.getBoundingRect();n=[i.x+i.width/2,i.y+i.height/2]}this.center=n}s.prototype={constructor:s,properties:null,getBoundingRect:function(){var e=this._rect;if(e)return e;for(var t=Number.MAX_VALUE,n=[t,t],a=[-t,-t],s=[],l=[],u=this.geometries,c=0;c<u.length;c++)if(\"polygon\"===u[c].type){var h=u[c].exterior;r.fromPoints(h,s,l),o.min(n,n,s),o.max(a,a,l)}return 0===c&&(n[0]=n[1]=a[0]=a[1]=0),this._rect=new i(n[0],n[1],a[0]-n[0],a[1]-n[1])},contain:function(e){var t=this.getBoundingRect(),n=this.geometries;if(!t.contain(e[0],e[1]))return!1;e:for(var i=0,r=n.length;i<r;i++)if(\"polygon\"===n[i].type){var o=n[i].exterior,s=n[i].interiors;if(a.contain(o,e[0],e[1])){for(var l=0;l<(s?s.length:0);l++)if(a.contain(s[l]))continue e;return!0}}return!1},transformTo:function(e,t,n,r){var a=this.getBoundingRect(),s=a.width/a.height;n?r||(r=n/s):n=s*r;for(var l=new i(e,t,n,r),u=a.calculateTransform(l),c=this.geometries,h=0;h<c.length;h++)if(\"polygon\"===c[h].type){for(var d=c[h].exterior,f=c[h].interiors,p=0;p<d.length;p++)o.applyTransform(d[p],d[p],u);for(var g=0;g<(f?f.length:0);g++)for(p=0;p<f[g].length;p++)o.applyTransform(f[g][p],f[g][p],u)}(a=this._rect).copy(l),this.center=[a.x+a.width/2,a.y+a.height/2]},cloneShallow:function(e){null==e&&(e=this.name);var t=new s(e,this.geometries,this.center);return t._rect=this._rect,t.transformTo=null,t}};var l=s;e.exports=l},BNYN:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=\".\",o=\"___EC__COMPONENT__CONTAINER___\";function a(e){var t={main:\"\",sub:\"\"};return e&&(e=e.split(r),t.main=e[0]||\"\",t.sub=e[1]||\"\"),t}var s=0;function l(e,t){var n=i.slice(arguments,2);return this.superClass.prototype[t].apply(e,n)}function u(e,t,n){return this.superClass.prototype[t].apply(e,n)}t.parseClassType=a,t.enableClassExtend=function(e,t){e.$constructor=e,e.extend=function(e){var t=this,n=function(){e.$constructor?e.$constructor.apply(this,arguments):t.apply(this,arguments)};return i.extend(n.prototype,e),n.extend=this.extend,n.superCall=l,n.superApply=u,i.inherits(n,this),n.superClass=t,n}},t.enableClassCheck=function(e){var t=[\"__\\0is_clz\",s++,Math.random().toFixed(3)].join(\"_\");e.prototype[t]=!0,e.isInstance=function(e){return!(!e||!e[t])}},t.enableClassManagement=function(e,t){t=t||{};var n={};if(e.registerClass=function(e,t){return t&&(function(e){i.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e),'componentType \"'+e+'\" illegal')}(t),(t=a(t)).sub?t.sub!==o&&((function(e){var t=n[e.main];return t&&t[o]||((t=n[e.main]={})[o]=!0),t}(t))[t.sub]=e):n[t.main]=e),e},e.getClass=function(e,t,i){var r=n[e];if(r&&r[o]&&(r=t?r[t]:null),i&&!r)throw new Error(t?\"Component \"+e+\".\"+(t||\"\")+\" not exists. Load it first.\":e+\".type should be specified.\");return r},e.getClassesByMainType=function(e){e=a(e);var t=[],r=n[e.main];return r&&r[o]?i.each(r,function(e,n){n!==o&&t.push(e)}):t.push(r),t},e.hasClass=function(e){return e=a(e),!!n[e.main]},e.getAllClassMainTypes=function(){var e=[];return i.each(n,function(t,n){e.push(n)}),e},e.hasSubTypes=function(e){e=a(e);var t=n[e.main];return t&&t[o]},e.parseClassType=a,t.registerWhenExtend){var r=e.extend;r&&(e.extend=function(t){var n=r.call(this,t);return e.registerClass(n,t.type)})}return e},t.setReadOnly=function(e,t){}},BeCT:function(e,t,n){var i=n(\"GxVO\"),r=n(\"No7X\"),o=i.extend({type:\"polyline\",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:\"#000\",fill:null},buildPath:function(e,t){r.buildPath(e,t,!1)}});e.exports=o},BqCv:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"vjPX\"),a=n(\"oDOe\"),s=n(\"ZJ+T\"),l=n(\"0sHC\"),u=[\"axisLine\",\"axisTickLabel\",\"axisName\"],c=i.extendComponentView({type:\"parallelAxis\",init:function(e,t){c.superApply(this,\"init\",arguments),(this._brushController=new a(t.getZr())).on(\"brush\",r.bind(this._onBrush,this))},render:function(e,t,n,i){if(!function(e,t,n){return n&&\"axisAreaSelect\"===n.type&&t.findComponents({mainType:\"parallelAxis\",query:n})[0]===e}(e,t,i)){this.axisModel=e,this.api=n,this.group.removeAll();var a=this._axisGroup;if(this._axisGroup=new l.Group,this.group.add(this._axisGroup),e.get(\"show\")){var s=function(e,t){return t.getComponent(\"parallel\",e.get(\"parallelIndex\"))}(e,t),c=s.coordinateSystem,h=e.getAreaSelectStyle(),d=h.width,f=e.axis.dim,p=c.getAxisLayout(f),g=r.extend({strokeContainThreshold:d},p),m=new o(e,g);r.each(u,m.add,m),this._axisGroup.add(m.getGroup()),this._refreshBrushController(g,h,e,s,d,n);var v=i&&!1===i.animation?null:e;l.groupTransition(a,this._axisGroup,v)}}},_refreshBrushController:function(e,t,n,i,o,a){var u=n.axis.getExtent(),c=u[1]-u[0],h=Math.min(30,.1*Math.abs(c)),d=l.BoundingRect.create({x:u[0],y:-o/2,width:c,height:o});d.x-=h,d.width+=2*h,this._brushController.mount({enableGlobalPan:!0,rotation:e.rotation,position:e.position}).setPanels([{panelId:\"pl\",clipPath:s.makeRectPanelClipPath(d),isTargetByCursor:s.makeRectIsTargetByCursor(d,a,i),getLinearBrushOtherExtent:s.makeLinearBrushOtherExtent(d,0)}]).enableBrush({brushType:\"lineX\",brushStyle:t,removeOnClick:!0}).updateCovers(function(e){var t=e.axis;return r.map(e.activeIntervals,function(e){return{brushType:\"lineX\",panelId:\"pl\",range:[t.dataToCoord(e[0],!0),t.dataToCoord(e[1],!0)]}})}(n))},_onBrush:function(e,t){var n=this.axisModel,i=n.axis,o=r.map(e,function(e){return[i.coordToData(e.range[0],!0),i.coordToData(e.range[1],!0)]});(!n.option.realtime===t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:\"axisAreaSelect\",parallelAxisId:n.id,intervals:o})},dispose:function(){this._brushController.dispose()}});var h=c;e.exports=h},BuI2:function(e,t,n){n(\"ecfp\");var i=n(\"Y5nL\").extend({type:\"grid\",dependencies:[\"xAxis\",\"yAxis\"],layoutMode:\"box\",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:\"10%\",top:60,right:\"10%\",bottom:60,containLabel:!1,backgroundColor:\"rgba(0,0,0,0)\",borderWidth:1,borderColor:\"#ccc\"}});e.exports=i},BwZ6:function(e,t,n){var i=n(\"RYbJ\")([[\"lineWidth\",\"width\"],[\"stroke\",\"color\"],[\"opacity\"],[\"shadowBlur\"],[\"shadowOffsetX\"],[\"shadowOffsetY\"],[\"shadowColor\"]]),r={getLineStyle:function(e){var t=i(this,e);return t.lineDash=this.getLineDash(t.lineWidth),t},getLineDash:function(e){null==e&&(e=1);var t=this.get(\"type\"),n=Math.max(e,2),i=4*e;return\"solid\"!==t&&null!=t&&(\"dashed\"===t?[i,i]:[n,n])}};e.exports=r},BwfY:function(e,t,n){n(\"fWfb\"),n(\"M6a0\"),n(\"OYls\"),n(\"QWe/\"),e.exports=n(\"FeBl\").Symbol},\"C1+n\":function(e,t,n){var i=n(\"moDv\"),r=n(\"C7PF\").applyTransform,o=i.CMD,a=[[],[],[]],s=Math.sqrt,l=Math.atan2;e.exports=function(e,t){var n,i,u,c,h,d=e.data,f=o.M,p=o.C,g=o.L,m=o.R,v=o.A,y=o.Q;for(u=0,c=0;u<d.length;){switch(n=d[u++],c=u,i=0,n){case f:case g:i=1;break;case p:i=3;break;case y:i=2;break;case v:var b=t[4],x=t[5],_=s(t[0]*t[0]+t[1]*t[1]),w=s(t[2]*t[2]+t[3]*t[3]),C=l(-t[1]/w,t[0]/_);d[u]*=_,d[u++]+=b,d[u]*=w,d[u++]+=x,d[u++]*=_,d[u++]*=w,d[u++]+=C,d[u++]+=C,c=u+=2;break;case m:S[0]=d[u++],S[1]=d[u++],r(S,S,t),d[c++]=S[0],d[c++]=S[1],S[0]+=d[u++],S[1]+=d[u++],r(S,S,t),d[c++]=S[0],d[c++]=S[1]}for(h=0;h<i;h++){var S;(S=a[h])[0]=d[u++],S[1]=d[u++],r(S,S,t),d[c++]=S[0],d[c++]=S[1]}}}},C3Vi:function(e,t,n){var i=n(\"YNzw\"),r=n(\"6NQ8\").buildTransformer,o=\"___zrEVENTSAVED\",a=[];function s(e,t,n,a,s){if(t.getBoundingClientRect&&i.domSupported&&!l(t)){var u=t[o]||(t[o]={}),c=function(e,t,n){for(var i=n?\"invTrans\":\"trans\",o=t[i],a=t.srcCoords,s=!0,l=[],u=[],c=0;c<4;c++){var h=e[c].getBoundingClientRect(),d=2*c,f=h.left,p=h.top;l.push(f,p),s=s&&a&&f===a[d]&&p===a[d+1],u.push(e[c].offsetLeft,e[c].offsetTop)}return s&&o?o:(t.srcCoords=l,t[i]=n?r(u,l):r(l,u))}(function(e,t){var n=t.markers;if(n)return n;n=t.markers=[];for(var i=[\"left\",\"right\"],r=[\"top\",\"bottom\"],o=0;o<4;o++){var a=document.createElement(\"div\"),s=a.style,l=o%2,u=(o>>1)%2;s.cssText=[\"position: absolute\",\"visibility: hidden\",\"padding: 0\",\"margin: 0\",\"border-width: 0\",\"user-select: none\",\"width:0\",\"height:0\",i[l]+\":0\",r[u]+\":0\",i[1-l]+\":auto\",r[1-u]+\":auto\",\"\"].join(\"!important;\"),e.appendChild(a),n.push(a)}return n}(t,u),u,s);if(c)return c(e,n,a),!0}return!1}function l(e){return\"CANVAS\"===e.nodeName.toUpperCase()}t.transformLocalCoord=function(e,t,n,i,r){return s(a,t,i,r,!0)&&s(e,n,a[0],a[1])},t.transformCoordWithViewport=s,t.isCanvasEl=l},C4MV:function(e,t,n){e.exports={default:n(\"9bBU\"),__esModule:!0}},C6b9:function(e,t,n){var i=n(\"Icdr\"),r=n(\"gOx9\"),o=\"sunburstRootToNode\";i.registerAction({type:o,update:\"updateView\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"sunburst\",query:e},function(t,n){var i=r.retrieveTargetInfo(e,[o],t);if(i){var a=t.getViewRoot();a&&(e.direction=r.aboveViewRoot(a,i.node)?\"rollUp\":\"drillDown\"),t.resetViewRoot(i.node)}})});var a=\"sunburstHighlight\";i.registerAction({type:a,update:\"updateView\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"sunburst\",query:e},function(t,n){var i=r.retrieveTargetInfo(e,[a],t);i&&(e.highlight=i.node)})});i.registerAction({type:\"sunburstUnhighlight\",update:\"updateView\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"sunburst\",query:e},function(t,n){e.unhighlight=!0})})},C7PF:function(e,t){var n=\"undefined\"==typeof Float32Array?Array:Float32Array;function i(e){return Math.sqrt(o(e))}var r=i;function o(e){return e[0]*e[0]+e[1]*e[1]}var a=o;function s(e,t){return Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1]))}var l=s;function u(e,t){return(e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])}var c=u;t.create=function(e,t){var i=new n(2);return null==e&&(e=0),null==t&&(t=0),i[0]=e,i[1]=t,i},t.copy=function(e,t){return e[0]=t[0],e[1]=t[1],e},t.clone=function(e){var t=new n(2);return t[0]=e[0],t[1]=e[1],t},t.set=function(e,t,n){return e[0]=t,e[1]=n,e},t.add=function(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e},t.scaleAndAdd=function(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e},t.sub=function(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e},t.len=i,t.length=r,t.lenSquare=o,t.lengthSquare=a,t.mul=function(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e},t.div=function(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e},t.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]},t.scale=function(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e},t.normalize=function(e,t){var n=i(t);return 0===n?(e[0]=0,e[1]=0):(e[0]=t[0]/n,e[1]=t[1]/n),e},t.distance=s,t.dist=l,t.distanceSquare=u,t.distSquare=c,t.negate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e},t.lerp=function(e,t,n,i){return e[0]=t[0]+i*(n[0]-t[0]),e[1]=t[1]+i*(n[1]-t[1]),e},t.applyTransform=function(e,t,n){var i=t[0],r=t[1];return e[0]=n[0]*i+n[2]*r+n[4],e[1]=n[1]*i+n[3]*r+n[5],e},t.min=function(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e},t.max=function(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e}},CCtz:function(e,t,n){var i=n(\"yt/B\"),r=n(\"DRaW\"),o=n(\"/gxq\").isArrayLike,a=Array.prototype.slice;function s(e,t){return e[t]}function l(e,t,n){e[t]=n}function u(e,t,n){return(t-e)*n+e}function c(e,t,n){return n>.5?t:e}function h(e,t,n,i,r){var o=e.length;if(1===r)for(var a=0;a<o;a++)i[a]=u(e[a],t[a],n);else{var s=o&&e[0].length;for(a=0;a<o;a++)for(var l=0;l<s;l++)i[a][l]=u(e[a][l],t[a][l],n)}}function d(e,t,n){var i=e.length,r=t.length;if(i!==r)if(i>r)e.length=r;else for(var o=i;o<r;o++)e.push(1===n?t[o]:a.call(t[o]));var s=e[0]&&e[0].length;for(o=0;o<e.length;o++)if(1===n)isNaN(e[o])&&(e[o]=t[o]);else for(var l=0;l<s;l++)isNaN(e[o][l])&&(e[o][l]=t[o][l])}function f(e,t,n){if(e===t)return!0;var i=e.length;if(i!==t.length)return!1;if(1===n){for(var r=0;r<i;r++)if(e[r]!==t[r])return!1}else{var o=e[0].length;for(r=0;r<i;r++)for(var a=0;a<o;a++)if(e[r][a]!==t[r][a])return!1}return!0}function p(e,t,n,i,r,o,a,s,l){var u=e.length;if(1===l)for(var c=0;c<u;c++)s[c]=g(e[c],t[c],n[c],i[c],r,o,a);else{var h=e[0].length;for(c=0;c<u;c++)for(var d=0;d<h;d++)s[c][d]=g(e[c][d],t[c][d],n[c][d],i[c][d],r,o,a)}}function g(e,t,n,i,r,o,a){var s=.5*(n-e),l=.5*(i-t);return(2*(t-n)+s+l)*a+(-3*(t-n)-2*s-l)*o+s*r+t}function m(e){if(o(e)){var t=e.length;if(o(e[0])){for(var n=[],i=0;i<t;i++)n.push(a.call(e[i]));return n}return a.call(e)}return e}function v(e){return e[0]=Math.floor(e[0]),e[1]=Math.floor(e[1]),e[2]=Math.floor(e[2]),\"rgba(\"+e.join(\",\")+\")\"}function y(e,t,n,a,s,l){var m=e._getter,y=e._setter,b=\"spline\"===t,x=a.length;if(x){var _,w=a[0].value,C=o(w),S=!1,k=!1,T=C?function(e){var t=e[e.length-1].value;return o(t&&t[0])?2:1}(a):0;a.sort(function(e,t){return e.time-t.time}),_=a[x-1].time;for(var M=[],D=[],A=a[0].value,I=!0,O=0;O<x;O++){M.push(a[O].time/_);var E=a[O].value;if(C&&f(E,A,T)||!C&&E===A||(I=!1),A=E,\"string\"==typeof E){var L=r.parse(E);L?(E=L,S=!0):k=!0}D.push(E)}if(l||!I){var P=D[x-1];for(O=0;O<x-1;O++)C?d(D[O],P,T):!isNaN(D[O])||isNaN(P)||k||S||(D[O]=P);C&&d(m(e._target,s),P,T);var N,R,B,z,F,$=0,V=0;if(S)var j=[0,0,0,0];var H=new i({target:e._target,life:_,loop:e._loop,delay:e._delay,onframe:function(e,t){var n;if(t<0)n=0;else if(t<V){for(n=Math.min($+1,x-1);n>=0&&!(M[n]<=t);n--);n=Math.min(n,x-2)}else{for(n=$;n<x&&!(M[n]>t);n++);n=Math.min(n-1,x-2)}$=n,V=t;var i=M[n+1]-M[n];if(0!==i)if(N=(t-M[n])/i,b)if(B=D[n],R=D[0===n?n:n-1],z=D[n>x-2?x-1:n+1],F=D[n>x-3?x-1:n+2],C)p(R,B,z,F,N,N*N,N*N*N,m(e,s),T);else{if(S)r=p(R,B,z,F,N,N*N,N*N*N,j,1),r=v(j);else{if(k)return c(B,z,N);r=g(R,B,z,F,N,N*N,N*N*N)}y(e,s,r)}else if(C)h(D[n],D[n+1],N,m(e,s),T);else{var r;if(S)h(D[n],D[n+1],N,j,1),r=v(j);else{if(k)return c(D[n],D[n+1],N);r=u(D[n],D[n+1],N)}y(e,s,r)}},ondestroy:n});return t&&\"spline\"!==t&&(H.easing=t),H}}}var b=function(e,t,n,i){this._tracks={},this._target=e,this._loop=t||!1,this._getter=n||s,this._setter=i||l,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};b.prototype={when:function(e,t){var n=this._tracks;for(var i in t)if(t.hasOwnProperty(i)){if(!n[i]){n[i]=[];var r=this._getter(this._target,i);if(null==r)continue;0!==e&&n[i].push({time:0,value:m(r)})}n[i].push({time:e,value:t[i]})}return this},during:function(e){return this._onframeList.push(e),this},pause:function(){for(var e=0;e<this._clipList.length;e++)this._clipList[e].pause();this._paused=!0},resume:function(){for(var e=0;e<this._clipList.length;e++)this._clipList[e].resume();this._paused=!1},isPaused:function(){return!!this._paused},_doneCallback:function(){this._tracks={},this._clipList.length=0;for(var e=this._doneList,t=e.length,n=0;n<t;n++)e[n].call(this)},start:function(e,t){var n,i=this,r=0,o=function(){--r||i._doneCallback()};for(var a in this._tracks)if(this._tracks.hasOwnProperty(a)){var s=y(this,e,o,this._tracks[a],a,t);s&&(this._clipList.push(s),r++,this.animation&&this.animation.addClip(s),n=s)}if(n){var l=n.onframe;n.onframe=function(e,t){l(e,t);for(var n=0;n<i._onframeList.length;n++)i._onframeList[n](e,t)}}return r||this._doneCallback(),this},stop:function(e){for(var t=this._clipList,n=this.animation,i=0;i<t.length;i++){var r=t[i];e&&r.onframe(this._target,1),n&&n.removeClip(r)}t.length=0},delay:function(e){return this._delay=e,this},done:function(e){return e&&this._doneList.push(e),this},getClips:function(){return this._clipList}};var x=b;e.exports=x},CK2l:function(e,t,n){(function(e){\"use strict\";function t(e){return e.state.search||(e.state.search=new function(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null})}function n(e){return\"string\"==typeof e&&e==e.toLowerCase()}function i(e,t,i){return e.getSearchCursor(t,i,{caseFold:n(t),multiline:!0})}function r(e,t,n,i,r){e.openDialog?e.openDialog(t,r,{value:i,selectValueOnOpen:!0,bottom:e.options.search.bottom}):r(prompt(n,i))}function o(e){return e.replace(/\\\\([nrt\\\\])/g,function(e,t){return\"n\"==t?\"\\n\":\"r\"==t?\"\\r\":\"t\"==t?\"\\t\":\"\\\\\"==t?\"\\\\\":e})}function a(e){var t=e.match(/^\\/(.*)\\/([a-z]*)$/);if(t)try{e=new RegExp(t[1],-1==t[2].indexOf(\"i\")?\"\":\"i\")}catch(e){}else e=o(e);return(\"string\"==typeof e?\"\"==e:e.test(\"\"))&&(e=/x^/),e}function s(e,t,i){t.queryText=i,t.query=a(i),e.removeOverlay(t.overlay,n(t.query)),t.overlay=function(e,t){return\"string\"==typeof e?e=new RegExp(e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),t?\"gi\":\"g\"):e.global||(e=new RegExp(e.source,e.ignoreCase?\"gi\":\"g\")),{token:function(t){e.lastIndex=t.pos;var n=e.exec(t.string);if(n&&n.index==t.pos)return t.pos+=n[0].length||1,\"searching\";n?t.pos=n.index:t.skipToEnd()}}}(t.query,n(t.query)),e.addOverlay(t.overlay),e.showMatchesOnScrollbar&&(t.annotate&&(t.annotate.clear(),t.annotate=null),t.annotate=e.showMatchesOnScrollbar(t.query,n(t.query)))}function l(n,i,o,a){var l=t(n);if(l.query)return u(n,i);var d=n.getSelection()||l.lastQuery;if(d instanceof RegExp&&\"x^\"==d.source&&(d=null),o&&n.openDialog){var f=null,p=function(t,i){e.e_stop(i),t&&(t!=l.queryText&&(s(n,l,t),l.posFrom=l.posTo=n.getCursor()),f&&(f.style.opacity=1),u(n,i.shiftKey,function(e,t){var i;t.line<3&&document.querySelector&&(i=n.display.wrapper.querySelector(\".CodeMirror-dialog\"))&&i.getBoundingClientRect().bottom-4>n.cursorCoords(t,\"window\").top&&((f=i).style.opacity=.4)}))};!function(e,t,n,i,r){e.openDialog(t,i,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){c(e)},onKeyDown:r,bottom:e.options.search.bottom})}(n,h(n),d,p,function(i,r){var o=e.keyName(i),a=n.getOption(\"extraKeys\"),l=a&&a[o]||e.keyMap[n.getOption(\"keyMap\")][o];\"findNext\"==l||\"findPrev\"==l||\"findPersistentNext\"==l||\"findPersistentPrev\"==l?(e.e_stop(i),s(n,t(n),r),n.execCommand(l)):\"find\"!=l&&\"findPersistent\"!=l||(e.e_stop(i),p(r,i))}),a&&d&&(s(n,l,d),u(n,i))}else r(n,h(n),\"Search for:\",d,function(e){e&&!l.query&&n.operation(function(){s(n,l,e),l.posFrom=l.posTo=n.getCursor(),u(n,i)})})}function u(n,r,o){n.operation(function(){var a=t(n),s=i(n,a.query,r?a.posFrom:a.posTo);(s.find(r)||(s=i(n,a.query,r?e.Pos(n.lastLine()):e.Pos(n.firstLine(),0))).find(r))&&(n.setSelection(s.from(),s.to()),n.scrollIntoView({from:s.from(),to:s.to()},20),a.posFrom=s.from(),a.posTo=s.to(),o&&o(s.from(),s.to()))})}function c(e){e.operation(function(){var n=t(e);n.lastQuery=n.query,n.query&&(n.query=n.queryText=null,e.removeOverlay(n.overlay),n.annotate&&(n.annotate.clear(),n.annotate=null))})}function h(e){return'<span class=\"CodeMirror-search-label\">'+e.phrase(\"Search:\")+'</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">'+e.phrase(\"(Use /re/ syntax for regexp search)\")+\"</span>\"}function d(e,t,n){e.operation(function(){for(var r=i(e,t);r.findNext();)if(\"string\"!=typeof t){var o=e.getRange(r.from(),r.to()).match(t);r.replace(n.replace(/\\$(\\d)/g,function(e,t){return o[t]}))}else r.replace(n)})}function f(e,n){if(!e.getOption(\"readOnly\")){var s=e.getSelection()||t(e).lastQuery,l='<span class=\"CodeMirror-search-label\">'+(n?e.phrase(\"Replace all:\"):e.phrase(\"Replace:\"))+\"</span>\";r(e,l+function(e){return' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">'+e.phrase(\"(Use /re/ syntax for regexp search)\")+\"</span>\"}(e),l,s,function(t){t&&(t=a(t),r(e,function(e){return'<span class=\"CodeMirror-search-label\">'+e.phrase(\"With:\")+'</span> <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/>'}(e),e.phrase(\"Replace with:\"),\"\",function(r){if(r=o(r),n)d(e,t,r);else{c(e);var a=i(e,t,e.getCursor(\"from\")),s=function(){var n,o=a.from();!(n=a.findNext())&&(a=i(e,t),!(n=a.findNext())||o&&a.from().line==o.line&&a.from().ch==o.ch)||(e.setSelection(a.from(),a.to()),e.scrollIntoView({from:a.from(),to:a.to()}),function(e,t,n,i){e.openConfirm?e.openConfirm(t,i):confirm(n)&&i[0]()}(e,function(e){return'<span class=\"CodeMirror-search-label\">'+e.phrase(\"Replace?\")+\"</span> <button>\"+e.phrase(\"Yes\")+\"</button> <button>\"+e.phrase(\"No\")+\"</button> <button>\"+e.phrase(\"All\")+\"</button> <button>\"+e.phrase(\"Stop\")+\"</button> \"}(e),e.phrase(\"Replace?\"),[function(){l(n)},s,function(){d(e,t,r)}]))},l=function(e){a.replace(\"string\"==typeof t?r:r.replace(/\\$(\\d)/g,function(t,n){return e[n]})),s()};s()}}))})}}e.defineOption(\"search\",{bottom:!1}),e.commands.find=function(e){c(e),l(e)},e.commands.findPersistent=function(e){c(e),l(e,!1,!0)},e.commands.findPersistentNext=function(e){l(e,!1,!0,!0)},e.commands.findPersistentPrev=function(e){l(e,!0,!0,!0)},e.commands.findNext=l,e.commands.findPrev=function(e){l(e,!0)},e.commands.clearSearch=c,e.commands.replace=f,e.commands.replaceAll=function(e){f(e,!0)}})(n(\"8U58\"),n(\"c+I8\"),n(\"RkhK\"))},CUwD:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"1bHA\"),a=n(\"ERCD\").radialCoordinate,s=n(\"Icdr\"),l=n(\"wUOi\"),u=n(\"H4Od\"),c=n(\"YpIy\"),h=n(\"5Mek\"),d=n(\"NKek\").onIrrelevantElement,f=(n(\"4Nz2\").__DEV__,n(\"wWR3\").parsePercent),p=r.extendShape({shape:{parentPoint:[],childPoints:[],orient:\"\",forkPosition:\"\"},style:{stroke:\"#000\",fill:null},buildPath:function(e,t){var n=t.childPoints,i=n.length,r=t.parentPoint,o=n[0],a=n[i-1];if(1===i)return e.moveTo(r[0],r[1]),void e.lineTo(o[0],o[1]);var s=t.orient,l=\"TB\"===s||\"BT\"===s?0:1,u=1-l,c=f(t.forkPosition,1),h=[];h[l]=r[l],h[u]=r[u]+(a[u]-r[u])*c,e.moveTo(r[0],r[1]),e.lineTo(h[0],h[1]),e.moveTo(o[0],o[1]),h[l]=o[l],e.lineTo(h[0],h[1]),h[l]=a[l],e.lineTo(h[0],h[1]),e.lineTo(a[0],a[1]);for(var d=1;d<i-1;d++){var p=n[d];e.moveTo(p[0],p[1]),h[l]=p[l],e.lineTo(h[0],h[1])}}}),g=s.extendChartView({type:\"tree\",init:function(e,t){this._oldTree,this._mainGroup=new r.Group,this._controller=new h(t.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(e,t,n,i){var r=e.getData(),o=e.layoutInfo,a=this._mainGroup,s=e.get(\"layout\");\"radial\"===s?a.attr(\"position\",[o.x+o.width/2,o.y+o.height/2]):a.attr(\"position\",[o.x,o.y]),this._updateViewCoordSys(e,o,s),this._updateController(e,t,n);var l=this._data,u={expandAndCollapse:e.get(\"expandAndCollapse\"),layout:s,edgeShape:e.get(\"edgeShape\"),edgeForkPosition:e.get(\"edgeForkPosition\"),orient:e.getOrient(),curvature:e.get(\"lineStyle.curveness\"),symbolRotate:e.get(\"symbolRotate\"),symbolOffset:e.get(\"symbolOffset\"),hoverAnimation:e.get(\"hoverAnimation\"),useNameLabel:!0,fadeIn:!0};r.diff(l).add(function(t){m(r,t)&&y(r,t,null,a,e,u)}).update(function(t,n){var i=l.getItemGraphicEl(n);m(r,t)?y(r,t,i,a,e,u):i&&b(l,n,i,a,e,u)}).remove(function(t){var n=l.getItemGraphicEl(t);n&&b(l,t,n,a,e,u)}).execute(),this._nodeScaleRatio=e.get(\"nodeScaleRatio\"),this._updateNodeAndLinkScale(e),!0===u.expandAndCollapse&&r.eachItemGraphicEl(function(t,i){t.off(\"click\").on(\"click\",function(){n.dispatchAction({type:\"treeExpandAndCollapse\",seriesId:e.id,dataIndex:i})})}),this._data=r},_updateViewCoordSys:function(e){var t=e.getData(),n=[];t.each(function(e){var i=t.getItemLayout(e);!i||isNaN(i.x)||isNaN(i.y)||n.push([+i.x,+i.y])});var i=[],r=[];l.fromPoints(n,i,r);var o=this._min,a=this._max;r[0]-i[0]==0&&(i[0]=o?o[0]:i[0]-1,r[0]=a?a[0]:r[0]+1),r[1]-i[1]==0&&(i[1]=o?o[1]:i[1]-1,r[1]=a?a[1]:r[1]+1);var s=e.coordinateSystem=new u;s.zoomLimit=e.get(\"scaleLimit\"),s.setBoundingRect(i[0],i[1],r[0]-i[0],r[1]-i[1]),s.setCenter(e.get(\"center\")),s.setZoom(e.get(\"zoom\")),this.group.attr({position:s.position,scale:s.scale}),this._viewCoordSys=s,this._min=i,this._max=r},_updateController:function(e,t,n){var i=this._controller,r=this._controllerHost,o=this.group;i.setPointerChecker(function(t,i,r){var a=o.getBoundingRect();return a.applyTransform(o.transform),a.contain(i,r)&&!d(t,n,e)}),i.enable(e.get(\"roam\")),r.zoomLimit=e.get(\"scaleLimit\"),r.zoom=e.coordinateSystem.getZoom(),i.off(\"pan\").off(\"zoom\").on(\"pan\",function(t){c.updateViewOnPan(r,t.dx,t.dy),n.dispatchAction({seriesId:e.id,type:\"treeRoam\",dx:t.dx,dy:t.dy})},this).on(\"zoom\",function(t){c.updateViewOnZoom(r,t.scale,t.originX,t.originY),n.dispatchAction({seriesId:e.id,type:\"treeRoam\",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(e)},this)},_updateNodeAndLinkScale:function(e){var t=e.getData(),n=this._getNodeGlobalScale(e),i=[n,n];t.eachItemGraphicEl(function(e,t){e.attr(\"scale\",i)})},_getNodeGlobalScale:function(e){var t=e.coordinateSystem;if(\"view\"!==t.type)return 1;var n=this._nodeScaleRatio,i=t.scale,r=i&&i[0]||1;return((t.getZoom()-1)*n+1)/r},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}});function m(e,t){var n=e.getItemLayout(t);return n&&!isNaN(n.x)&&!isNaN(n.y)&&\"none\"!==e.getItemVisual(t,\"symbol\")}function v(e,t,n){return n.itemModel=t,n.itemStyle=t.getModel(\"itemStyle\").getItemStyle(),n.hoverItemStyle=t.getModel(\"emphasis.itemStyle\").getItemStyle(),n.lineStyle=t.getModel(\"lineStyle\").getLineStyle(),n.labelModel=t.getModel(\"label\"),n.hoverLabelModel=t.getModel(\"emphasis.label\"),!1===e.isExpand&&0!==e.children.length?n.symbolInnerColor=n.itemStyle.fill:n.symbolInnerColor=\"#fff\",n}function y(e,t,n,a,s,l){var u=!n,c=e.tree.getNodeByDataIndex(t),h=(l=v(c,c.getModel(),l),e.tree.root),d=c.parentNode===h?c:c.parentNode||c,f=e.getItemGraphicEl(d.dataIndex),g=d.getLayout(),m=f?{x:f.position[0],y:f.position[1],rawX:f.__radialOldRawX,rawY:f.__radialOldRawY}:g,y=c.getLayout();u?(n=new o(e,t,l)).attr(\"position\",[m.x,m.y]):n.updateData(e,t,l),n.__radialOldRawX=n.__radialRawX,n.__radialOldRawY=n.__radialRawY,n.__radialRawX=y.rawX,n.__radialRawY=y.rawY,a.add(n),e.setItemGraphicEl(t,n),r.updateProps(n,{position:[y.x,y.y]},s);var b=n.getSymbolPath();if(\"radial\"===l.layout){var _,w,C=h.children[0],S=C.getLayout(),k=C.children.length;if(y.x===S.x&&!0===c.isExpand){var T={};T.x=(C.children[0].getLayout().x+C.children[k-1].getLayout().x)/2,T.y=(C.children[0].getLayout().y+C.children[k-1].getLayout().y)/2,(_=Math.atan2(T.y-S.y,T.x-S.x))<0&&(_=2*Math.PI+_),(w=T.x<S.x)&&(_-=Math.PI)}else(_=Math.atan2(y.y-S.y,y.x-S.x))<0&&(_=2*Math.PI+_),0===c.children.length||0!==c.children.length&&!1===c.isExpand?(w=y.x<S.x)&&(_-=Math.PI):(w=y.x>S.x)||(_-=Math.PI);var M=w?\"left\":\"right\",D=l.labelModel.get(\"rotate\"),A=D*(Math.PI/180);b.setStyle({textPosition:l.labelModel.get(\"position\")||M,textRotation:null==D?-_:A,textOrigin:\"center\",verticalAlign:\"middle\"})}!function(e,t,n,o,a,s,l,u,c){var h=c.edgeShape,d=o.__edge;if(\"curve\"===h)t.parentNode&&t.parentNode!==n&&(d||(d=o.__edge=new r.BezierCurve({shape:x(c,a,a),style:i.defaults({opacity:0,strokeNoScale:!0},c.lineStyle)})),r.updateProps(d,{shape:x(c,s,l),style:{opacity:1}},e));else if(\"polyline\"===h&&\"orthogonal\"===c.layout&&t!==n&&t.children&&0!==t.children.length&&!0===t.isExpand){for(var f=t.children,g=[],m=0;m<f.length;m++){var v=f[m].getLayout();g.push([v.x,v.y])}d||(d=o.__edge=new p({shape:{parentPoint:[l.x,l.y],childPoints:[[l.x,l.y]],orient:c.orient,forkPosition:c.edgeForkPosition},style:i.defaults({opacity:0,strokeNoScale:!0},c.lineStyle)})),r.updateProps(d,{shape:{parentPoint:[l.x,l.y],childPoints:g},style:{opacity:1}},e)}u.add(d)}(s,c,h,n,m,g,y,a,l)}function b(e,t,n,i,o,a){for(var s,l=e.tree.getNodeByDataIndex(t),u=e.tree.root,c=(a=v(l,l.getModel(),a),l.parentNode===u?l:l.parentNode||l),h=a.edgeShape;null==(s=c.getLayout());)c=c.parentNode===u?c:c.parentNode||c;r.updateProps(n,{position:[s.x+1,s.y+1]},o,function(){i.remove(n),e.setItemGraphicEl(t,null)}),n.fadeOut(null,{keepLabel:!0});var d=e.getItemGraphicEl(c.dataIndex).__edge,f=n.__edge||(!1===c.isExpand||1===c.children.length?d:void 0);h=a.edgeShape;f&&(\"curve\"===h?r.updateProps(f,{shape:x(a,s,s),style:{opacity:0}},o,function(){i.remove(f)}):\"polyline\"===h&&\"orthogonal\"===a.layout&&r.updateProps(f,{shape:{parentPoint:[s.x,s.y],childPoints:[[s.x,s.y]]},style:{opacity:0}},o,function(){i.remove(f)}))}function x(e,t,n){var i,r,o,s,l,u,c,h,d=e.orient;if(\"radial\"===e.layout){l=t.rawX,c=t.rawY,u=n.rawX,h=n.rawY;var f=a(l,c),p=a(l,c+(h-c)*e.curvature),g=a(u,h+(c-h)*e.curvature),m=a(u,h);return{x1:f.x,y1:f.y,x2:m.x,y2:m.y,cpx1:p.x,cpy1:p.y,cpx2:g.x,cpy2:g.y}}return l=t.x,c=t.y,u=n.x,h=n.y,\"LR\"!==d&&\"RL\"!==d||(i=l+(u-l)*e.curvature,r=c,o=u+(l-u)*e.curvature,s=h),\"TB\"!==d&&\"BT\"!==d||(i=l,r=c+(h-c)*e.curvature,o=u,s=h+(c-h)*e.curvature),{x1:l,y1:c,x2:u,y2:h,cpx1:i,cpy1:r,cpx2:o,cpy2:s}}e.exports=g},CWSg:function(e,t){var n=[\"lineStyle\",\"normal\",\"opacity\"],i={seriesType:\"parallel\",reset:function(e,t,i){var r=e.getModel(\"itemStyle\"),o=e.getModel(\"lineStyle\"),a=t.get(\"color\"),s=o.get(\"color\")||r.get(\"color\")||a[e.seriesIndex%a.length],l=e.get(\"inactiveOpacity\"),u=e.get(\"activeOpacity\"),c=e.getModel(\"lineStyle\").getLineStyle(),h=e.coordinateSystem,d=e.getData(),f={normal:c.opacity,active:u,inactive:l};return d.setVisual(\"color\",s),{progress:function(e,t){h.eachActiveState(t,function(e,i){var r=f[e];if(\"normal\"===e&&t.hasItemOption){var o=t.getItemModel(i).get(n,!0);null!=o&&(r=o)}t.setItemVisual(i,\"opacity\",r)},e.start,e.end)}}}};e.exports=i},Cdx3:function(e,t,n){var i=n(\"sB3e\"),r=n(\"lktj\");n(\"uqUo\")(\"keys\",function(){return function(e){return r(i(e))}})},CqCN:function(e,t,n){var i=n(\"vXqC\").makeInner;e.exports=function(){var e=i();return function(t){var n=e(t),i=t.pipelineContext,r=n.large,o=n.progressiveRender,a=n.large=i&&i.large,s=n.progressiveRender=i&&i.progressiveRender;return!!(r^a||o^s)&&\"reset\"}}},Cuh7:function(e,t,n){var i=n(\"0sHC\"),r=n(\"Icdr\"),o=n(\"/gxq\"),a=[\"itemStyle\",\"opacity\"],s=[\"emphasis\",\"itemStyle\",\"opacity\"],l=[\"lineStyle\",\"opacity\"],u=[\"emphasis\",\"lineStyle\",\"opacity\"];function c(e,t){return e.getVisual(\"opacity\")||e.getModel().get(t)}function h(e,t,n){var i=e.getGraphicEl(),r=c(e,t);null!=n&&(null==r&&(r=1),r*=n),i.downplay&&i.downplay(),i.traverse(function(e){\"group\"!==e.type&&e.setStyle(\"opacity\",r)})}function d(e,t){var n=c(e,t),i=e.getGraphicEl();i.traverse(function(e){\"group\"!==e.type&&e.setStyle(\"opacity\",n)}),i.highlight&&i.highlight()}var f=i.extendShape({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0,orient:\"\"},buildPath:function(e,t){var n=t.extent;e.moveTo(t.x1,t.y1),e.bezierCurveTo(t.cpx1,t.cpy1,t.cpx2,t.cpy2,t.x2,t.y2),\"vertical\"===t.orient?(e.lineTo(t.x2+n,t.y2),e.bezierCurveTo(t.cpx2+n,t.cpy2,t.cpx1+n,t.cpy1,t.x1+n,t.y1)):(e.lineTo(t.x2,t.y2+n),e.bezierCurveTo(t.cpx2,t.cpy2+n,t.cpx1,t.cpy1+n,t.x1,t.y1+n)),e.closePath()},highlight:function(){this.trigger(\"emphasis\")},downplay:function(){this.trigger(\"normal\")}}),p=r.extendChartView({type:\"sankey\",_model:null,_focusAdjacencyDisabled:!1,render:function(e,t,n){var r=this,o=e.getGraph(),a=this.group,s=e.layoutInfo,l=s.width,u=s.height,c=e.getData(),h=e.getData(\"edge\"),d=e.get(\"orient\");this._model=e,a.removeAll(),a.attr(\"position\",[s.x,s.y]),o.eachEdge(function(t){var n=new f;n.dataIndex=t.dataIndex,n.seriesIndex=e.seriesIndex,n.dataType=\"edge\";var r,o,s,c,p,g,m,v,y=t.getModel(\"lineStyle\"),b=y.get(\"curveness\"),x=t.node1.getLayout(),_=t.node1.getModel(),w=_.get(\"localX\"),C=_.get(\"localY\"),S=t.node2.getLayout(),k=t.node2.getModel(),T=k.get(\"localX\"),M=k.get(\"localY\"),D=t.getLayout();switch(n.shape.extent=Math.max(1,D.dy),n.shape.orient=d,\"vertical\"===d?(r=(null!=w?w*l:x.x)+D.sy,o=(null!=C?C*u:x.y)+x.dy,s=(null!=T?T*l:S.x)+D.ty,p=r,g=o*(1-b)+(c=null!=M?M*u:S.y)*b,m=s,v=o*b+c*(1-b)):(r=(null!=w?w*l:x.x)+x.dx,o=(null!=C?C*u:x.y)+D.sy,p=r*(1-b)+(s=null!=T?T*l:S.x)*b,g=o,m=r*b+s*(1-b),v=c=(null!=M?M*u:S.y)+D.ty),n.setShape({x1:r,y1:o,x2:s,y2:c,cpx1:p,cpy1:g,cpx2:m,cpy2:v}),n.setStyle(y.getItemStyle()),n.style.fill){case\"source\":n.style.fill=t.node1.getVisual(\"color\");break;case\"target\":n.style.fill=t.node2.getVisual(\"color\")}i.setHoverStyle(n,t.getModel(\"emphasis.lineStyle\").getItemStyle()),a.add(n),h.setItemGraphicEl(t.dataIndex,n)}),o.eachNode(function(t){var n=t.getLayout(),r=t.getModel(),o=r.get(\"localX\"),s=r.get(\"localY\"),h=r.getModel(\"label\"),d=r.getModel(\"emphasis.label\"),f=new i.Rect({shape:{x:null!=o?o*l:n.x,y:null!=s?s*u:n.y,width:n.dx,height:n.dy},style:r.getModel(\"itemStyle\").getItemStyle()}),p=t.getModel(\"emphasis.itemStyle\").getItemStyle();i.setLabelStyle(f.style,p,h,d,{labelFetcher:e,labelDataIndex:t.dataIndex,defaultText:t.id,isRectText:!0}),f.setStyle(\"fill\",t.getVisual(\"color\")),i.setHoverStyle(f,p),a.add(f),c.setItemGraphicEl(t.dataIndex,f),f.dataType=\"node\"}),c.eachItemGraphicEl(function(t,i){var o=c.getItemModel(i);o.get(\"draggable\")&&(t.drift=function(t,o){r._focusAdjacencyDisabled=!0,this.shape.x+=t,this.shape.y+=o,this.dirty(),n.dispatchAction({type:\"dragNode\",seriesId:e.id,dataIndex:c.getRawIndex(i),localX:this.shape.x/l,localY:this.shape.y/u})},t.ondragend=function(){r._focusAdjacencyDisabled=!1},t.draggable=!0,t.cursor=\"move\"),t.highlight=function(){this.trigger(\"emphasis\")},t.downplay=function(){this.trigger(\"normal\")},t.focusNodeAdjHandler&&t.off(\"mouseover\",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off(\"mouseout\",t.unfocusNodeAdjHandler),o.get(\"focusNodeAdjacency\")&&(t.on(\"mouseover\",t.focusNodeAdjHandler=function(){r._focusAdjacencyDisabled||(r._clearTimer(),n.dispatchAction({type:\"focusNodeAdjacency\",seriesId:e.id,dataIndex:t.dataIndex}))}),t.on(\"mouseout\",t.unfocusNodeAdjHandler=function(){r._focusAdjacencyDisabled||r._dispatchUnfocus(n)}))}),h.eachItemGraphicEl(function(t,i){var o=h.getItemModel(i);t.focusNodeAdjHandler&&t.off(\"mouseover\",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off(\"mouseout\",t.unfocusNodeAdjHandler),o.get(\"focusNodeAdjacency\")&&(t.on(\"mouseover\",t.focusNodeAdjHandler=function(){r._focusAdjacencyDisabled||(r._clearTimer(),n.dispatchAction({type:\"focusNodeAdjacency\",seriesId:e.id,edgeDataIndex:t.dataIndex}))}),t.on(\"mouseout\",t.unfocusNodeAdjHandler=function(){r._focusAdjacencyDisabled||r._dispatchUnfocus(n)}))}),!this._data&&e.get(\"animation\")&&a.setClipPath(function(e,t,n){var r=new i.Rect({shape:{x:e.x-10,y:e.y-10,width:0,height:e.height+20}});return i.initProps(r,{shape:{width:e.width+20}},t,n),r}(a.getBoundingRect(),e,function(){a.removeClipPath()})),this._data=e.getData()},dispose:function(){this._clearTimer()},_dispatchUnfocus:function(e){var t=this;this._clearTimer(),this._unfocusDelayTimer=setTimeout(function(){t._unfocusDelayTimer=null,e.dispatchAction({type:\"unfocusNodeAdjacency\",seriesId:t._model.id})},500)},_clearTimer:function(){this._unfocusDelayTimer&&(clearTimeout(this._unfocusDelayTimer),this._unfocusDelayTimer=null)},focusNodeAdjacency:function(e,t,n,i){var r=e.getData(),c=r.graph,f=i.dataIndex,p=r.getItemModel(f),g=i.edgeDataIndex;if(null!=f||null!=g){var m=c.getNodeByIndex(f),v=c.getEdgeByIndex(g);if(c.eachNode(function(e){h(e,a,.1)}),c.eachEdge(function(e){h(e,l,.1)}),m){d(m,s);var y=p.get(\"focusNodeAdjacency\");\"outEdges\"===y?o.each(m.outEdges,function(e){e.dataIndex<0||(d(e,u),d(e.node2,s))}):\"inEdges\"===y?o.each(m.inEdges,function(e){e.dataIndex<0||(d(e,u),d(e.node1,s))}):\"allEdges\"===y&&o.each(m.edges,function(e){e.dataIndex<0||(d(e,u),e.node1!==m&&d(e.node1,s),e.node2!==m&&d(e.node2,s))})}v&&(d(v,u),d(v.node1,s),d(v.node2,s))}},unfocusNodeAdjacency:function(e,t,n,i){var r=e.getGraph();r.eachNode(function(e){h(e,a)}),r.eachEdge(function(e){h(e,l)})}});e.exports=p},D2L2:function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},D7EH:function(e,t,n){var i=n(\"Ou7x\"),r=n(\"zAPJ\"),o=n(\"4xrk\"),a=n(\"43ae\"),s=i.extend({makeElOption:function(e,t,n,i,a){var s=n.axis,c=s.grid,h=i.get(\"type\"),d=l(c,s).getOtherAxis(s).getGlobalExtent(),f=s.toGlobalCoord(s.dataToCoord(t,!0));if(h&&\"none\"!==h){var p=r.buildElStyle(i),g=u[h](s,f,d);g.style=p,e.graphicKey=g.type,e.pointer=g}var m=o.layout(c.model,n);r.buildCartesianSingleLabelElOption(t,e,m,n,i,a)},getHandleTransform:function(e,t,n){var i=o.layout(t.axis.grid.model,t,{labelInside:!1});return i.labelMargin=n.get(\"handle.margin\"),{position:r.getTransformedPosition(t.axis,e,i),rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(e,t,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=l(o,r).getOtherAxis(r).getGlobalExtent(),u=\"x\"===r.dim?0:1,c=e.position;c[u]+=t[u],c[u]=Math.min(a[1],c[u]),c[u]=Math.max(a[0],c[u]);var h=(s[1]+s[0])/2,d=[h,h];d[u]=c[u];return{position:c,rotation:e.rotation,cursorPoint:d,tooltipOption:[{verticalAlign:\"middle\"},{align:\"center\"}][u]}}});function l(e,t){var n={};return n[t.dim+\"AxisIndex\"]=t.index,e.getCartesian(n)}var u={line:function(e,t,n){return{type:\"Line\",subPixelOptimize:!0,shape:r.makeLineShape([t,n[0]],[t,n[1]],c(e))}},shadow:function(e,t,n){var i=Math.max(1,e.getBandWidth()),o=n[1]-n[0];return{type:\"Rect\",shape:r.makeRectShape([t-i/2,n[0]],[i,o],c(e))}}};function c(e){return\"x\"===e.dim?0:1}a.registerAxisPointerClass(\"CartesianAxisPointer\",s);var h=s;e.exports=h},DDYI:function(e,t,n){var i=n(\"0sHC\"),r=n(\"wWR3\").round;function o(e,t,n){var r=e.getArea(),o=e.getBaseAxis().isHorizontal(),a=r.x,s=r.y,l=r.width,u=r.height,c=n.get(\"lineStyle.width\")||2;a-=c/2,s-=c/2,l+=c,u+=c,a=Math.floor(a),l=Math.round(l);var h=new i.Rect({shape:{x:a,y:s,width:l,height:u}});return t&&(h.shape[o?\"width\":\"height\"]=0,i.initProps(h,{shape:{width:l,height:u}},n)),h}function a(e,t,n){var o=e.getArea(),a=new i.Sector({shape:{cx:r(e.cx,1),cy:r(e.cy,1),r0:r(o.r0,1),r:r(o.r,1),startAngle:o.startAngle,endAngle:o.endAngle,clockwise:o.clockwise}});return t&&(a.shape.endAngle=o.startAngle,i.initProps(a,{shape:{endAngle:o.endAngle}},n)),a}t.createGridClipPath=o,t.createPolarClipPath=a,t.createClipPath=function(e,t,n){return e?\"polar\"===e.type?a(e,t,n):\"cartesian2d\"===e.type?o(e,t,n):null:null}},DHpS:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\"),o=n(\"RYbJ\"),a=n(\"eH0a\"),s=n(\"wWR3\"),l=n(\"2uoh\"),u=r.extend({type:\"baseParallelAxis\",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return o([[\"fill\",\"color\"],[\"lineWidth\",\"borderWidth\"],[\"stroke\",\"borderColor\"],[\"width\",\"width\"],[\"opacity\",\"opacity\"]])(this.getModel(\"areaSelectStyle\"))},setActiveIntervals:function(e){var t=this.activeIntervals=i.clone(e);if(t)for(var n=t.length-1;n>=0;n--)s.asc(t[n])},getActiveState:function(e){var t=this.activeIntervals;if(!t.length)return\"normal\";if(null==e||isNaN(e))return\"inactive\";if(1===t.length){var n=t[0];if(n[0]<=e&&e<=n[1])return\"active\"}else for(var i=0,r=t.length;i<r;i++)if(t[i][0]<=e&&e<=t[i][1])return\"active\";return\"inactive\"}});i.merge(u.prototype,l),a(\"parallel\",u,function(e,t){return t.type||(t.data?\"category\":\"value\")},{type:\"value\",dim:null,areaSelectStyle:{width:20,borderWidth:1,borderColor:\"rgba(160,197,232)\",color:\"rgba(160,197,232)\",opacity:.3},realtime:!0,z:10});var c=u;e.exports=c},\"DPh+\":function(e,t,n){var i=n(\"2m1D\").extend({type:\"series.bar\",dependencies:[\"grid\",\"polar\"],brushSelector:\"rect\",getProgressive:function(){return!!this.get(\"large\")&&this.get(\"progressive\")},getProgressiveThreshold:function(){var e=this.get(\"progressiveThreshold\"),t=this.get(\"largeThreshold\");return t>e&&(e=t),e},defaultOption:{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:\"rgba(180, 180, 180, 0.2)\",borderColor:null,borderWidth:0,borderType:\"solid\",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1}}});e.exports=i},DQJY:function(e,t,n){\"use strict\";t.__esModule=!0;var i,r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},o=n(\"hyEB\"),a=(i=o)&&i.__esModule?i:{default:i};var s,l=l||{};l.Dialog=function(e,t,n){var i=this;if(this.dialogNode=e,null===this.dialogNode||\"dialog\"!==this.dialogNode.getAttribute(\"role\"))throw new Error(\"Dialog() requires a DOM element with ARIA role of dialog.\");\"string\"==typeof t?this.focusAfterClosed=document.getElementById(t):\"object\"===(void 0===t?\"undefined\":r(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,\"string\"==typeof n?this.focusFirst=document.getElementById(n):\"object\"===(void 0===n?\"undefined\":r(n))?this.focusFirst=n:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():a.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,s=function(e){i.trapFocus(e)},this.addListeners()},l.Dialog.prototype.addListeners=function(){document.addEventListener(\"focus\",s,!0)},l.Dialog.prototype.removeListeners=function(){document.removeEventListener(\"focus\",s,!0)},l.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout(function(){e.focusAfterClosed.focus()})},l.Dialog.prototype.trapFocus=function(e){a.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(a.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&a.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=l.Dialog},DRaW:function(e,t,n){var i={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function r(e){return(e=Math.round(e))<0?0:e>255?255:e}function o(e){return e<0?0:e>1?1:e}function a(e){return e.length&&\"%\"===e.charAt(e.length-1)?r(parseFloat(e)/100*255):r(parseInt(e,10))}function s(e){return e.length&&\"%\"===e.charAt(e.length-1)?o(parseFloat(e)/100):o(parseFloat(e))}function l(e,t,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?e+(t-e)*n*6:2*n<1?t:3*n<2?e+(t-e)*(2/3-n)*6:e}function u(e,t,n){return e+(t-e)*n}function c(e,t,n,i,r){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e}function h(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var d=new(n(\"zMj2\"))(20),f=null;function p(e,t){f&&h(f,t),f=d.put(e,f||t.slice())}function g(e,t){if(e){t=t||[];var n=d.get(e);if(n)return h(t,n);var r,o=(e+=\"\").replace(/ /g,\"\").toLowerCase();if(o in i)return h(t,i[o]),p(e,t),t;if(\"#\"===o.charAt(0))return 4===o.length?(r=parseInt(o.substr(1),16))>=0&&r<=4095?(c(t,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,1),p(e,t),t):void c(t,0,0,0,1):7===o.length?(r=parseInt(o.substr(1),16))>=0&&r<=16777215?(c(t,(16711680&r)>>16,(65280&r)>>8,255&r,1),p(e,t),t):void c(t,0,0,0,1):void 0;var l=o.indexOf(\"(\"),u=o.indexOf(\")\");if(-1!==l&&u+1===o.length){var f=o.substr(0,l),g=o.substr(l+1,u-(l+1)).split(\",\"),v=1;switch(f){case\"rgba\":if(4!==g.length)return void c(t,0,0,0,1);v=s(g.pop());case\"rgb\":return 3!==g.length?void c(t,0,0,0,1):(c(t,a(g[0]),a(g[1]),a(g[2]),v),p(e,t),t);case\"hsla\":return 4!==g.length?void c(t,0,0,0,1):(g[3]=s(g[3]),m(g,t),p(e,t),t);case\"hsl\":return 3!==g.length?void c(t,0,0,0,1):(m(g,t),p(e,t),t);default:return}}c(t,0,0,0,1)}}function m(e,t){var n=(parseFloat(e[0])%360+360)%360/360,i=s(e[1]),o=s(e[2]),a=o<=.5?o*(i+1):o+i-o*i,u=2*o-a;return c(t=t||[],r(255*l(u,a,n+1/3)),r(255*l(u,a,n)),r(255*l(u,a,n-1/3)),1),4===e.length&&(t[3]=e[3]),t}function v(e,t,n){if(t&&t.length&&e>=0&&e<=1){n=n||[];var i=e*(t.length-1),a=Math.floor(i),s=Math.ceil(i),l=t[a],c=t[s],h=i-a;return n[0]=r(u(l[0],c[0],h)),n[1]=r(u(l[1],c[1],h)),n[2]=r(u(l[2],c[2],h)),n[3]=o(u(l[3],c[3],h)),n}}var y=v;function b(e,t,n){if(t&&t.length&&e>=0&&e<=1){var i=e*(t.length-1),a=Math.floor(i),s=Math.ceil(i),l=g(t[a]),c=g(t[s]),h=i-a,d=_([r(u(l[0],c[0],h)),r(u(l[1],c[1],h)),r(u(l[2],c[2],h)),o(u(l[3],c[3],h))],\"rgba\");return n?{color:d,leftIndex:a,rightIndex:s,value:i}:d}}var x=b;function _(e,t){if(e&&e.length){var n=e[0]+\",\"+e[1]+\",\"+e[2];return\"rgba\"!==t&&\"hsva\"!==t&&\"hsla\"!==t||(n+=\",\"+e[3]),t+\"(\"+n+\")\"}}t.parse=g,t.lift=function(e,t){var n=g(e);if(n){for(var i=0;i<3;i++)n[i]=t<0?n[i]*(1-t)|0:(255-n[i])*t+n[i]|0,n[i]>255?n[i]=255:e[i]<0&&(n[i]=0);return _(n,4===n.length?\"rgba\":\"rgb\")}},t.toHex=function(e){var t=g(e);if(t)return((1<<24)+(t[0]<<16)+(t[1]<<8)+ +t[2]).toString(16).slice(1)},t.fastLerp=v,t.fastMapToColor=y,t.lerp=b,t.mapToColor=x,t.modifyHSL=function(e,t,n,i){if(e=g(e))return e=function(e){if(e){var t,n,i=e[0]/255,r=e[1]/255,o=e[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)t=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var c=((s-i)/6+l/2)/l,h=((s-r)/6+l/2)/l,d=((s-o)/6+l/2)/l;i===s?t=d-h:r===s?t=1/3+c-d:o===s&&(t=2/3+h-c),t<0&&(t+=1),t>1&&(t-=1)}var f=[360*t,n,u];return null!=e[3]&&f.push(e[3]),f}}(e),null!=t&&(e[0]=(r=t,(r=Math.round(r))<0?0:r>360?360:r)),null!=n&&(e[1]=s(n)),null!=i&&(e[2]=s(i)),_(m(e),\"rgba\");var r},t.modifyAlpha=function(e,t){if((e=g(e))&&null!=t)return e[3]=o(t),_(e,\"rgba\")},t.stringify=_},DZTl:function(e,t,n){var i=n(\"/gxq\"),r=i.each;function o(e,t){return e&&e.hasOwnProperty&&e.hasOwnProperty(t)}e.exports=function(e){var t=e&&e.visualMap;i.isArray(t)||(t=t?[t]:[]),r(t,function(e){if(e){o(e,\"splitList\")&&!o(e,\"pieces\")&&(e.pieces=e.splitList,delete e.splitList);var t=e.pieces;t&&i.isArray(t)&&r(t,function(e){i.isObject(e)&&(o(e,\"start\")&&!o(e,\"min\")&&(e.min=e.start),o(e,\"end\")&&!o(e,\"max\")&&(e.max=e.end))})}})}},Dd8w:function(e,t,n){\"use strict\";t.__esModule=!0;var i,r=n(\"woOf\"),o=(i=r)&&i.__esModule?i:{default:i};t.default=o.default||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}},DknX:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"oDOe\"),a=n(\"XCrL\"),s=n(\"9Owa\"),l=n(\"og9+\"),u=n(\"FIAY\"),c=n(\"dCQY\");n(\"l2wH\");var h=u.toolbox.dataZoom,d=r.each,f=\"\\0_ec_\\0toolbox-dataZoom_\";function p(e,t,n){(this._brushController=new o(n.getZr())).on(\"brush\",r.bind(this._onBrush,this)).mount(),this._isZoomActive}p.defaultOption={show:!0,filterMode:\"filter\",icon:{zoom:\"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1\",back:\"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26\"},title:r.clone(h.title)};var g=p.prototype;g.render=function(e,t,n,i){this.model=e,this.ecModel=t,this.api=n,function(e,t,n,i,r){var o=n._isZoomActive;i&&\"takeGlobalCursor\"===i.type&&(o=\"dataZoomSelect\"===i.key&&i.dataZoomSelectActive);n._isZoomActive=o,e.setIconStatus(\"zoom\",o?\"emphasis\":\"normal\");var s=new a(v(e.option),t,{include:[\"grid\"]});n._brushController.setPanels(s.makePanelOpts(r,function(e){return e.xAxisDeclared&&!e.yAxisDeclared?\"lineX\":!e.xAxisDeclared&&e.yAxisDeclared?\"lineY\":\"rect\"})).enableBrush(!!o&&{brushType:\"auto\",brushStyle:{lineWidth:0,fill:\"rgba(0,0,0,0.2)\"}})}(e,t,this,i,n),function(e,t){e.setIconStatus(\"back\",s.count(t)>1?\"emphasis\":\"normal\")}(e,t)},g.onclick=function(e,t,n){m[n].call(this)},g.remove=function(e,t){this._brushController.unmount()},g.dispose=function(e,t){this._brushController.dispose()};var m={zoom:function(){var e=!this._isZoomActive;this.api.dispatchAction({type:\"takeGlobalCursor\",key:\"dataZoomSelect\",dataZoomSelectActive:e})},back:function(){this._dispatchZoomAction(s.pop(this.ecModel))}};function v(e){var t={};return r.each([\"xAxisIndex\",\"yAxisIndex\"],function(n){t[n]=e[n],null==t[n]&&(t[n]=\"all\"),(!1===t[n]||\"none\"===t[n])&&(t[n]=[])}),t}g._onBrush=function(e,t){if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new a(v(this.model.option),i,{include:[\"grid\"]}).matchOutputRanges(e,i,function(e,t,n){if(\"cartesian2d\"===n.type){var i=e.brushType;\"rect\"===i?(r(\"x\",n,t[0]),r(\"y\",n,t[1])):r({lineX:\"x\",lineY:\"y\"}[i],n,t)}}),s.push(i,n),this._dispatchZoomAction(n)}function r(e,t,r){var o=t.getAxis(e),a=o.model,s=function(e,t,n){var i;return n.eachComponent({mainType:\"dataZoom\",subType:\"select\"},function(n){n.getAxisModel(e,t.componentIndex)&&(i=n)}),i}(e,a,i),u=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(r=l(0,r.slice(),o.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},g._dispatchZoomAction=function(e){var t=[];d(e,function(e,n){t.push(r.clone(e))}),t.length&&this.api.dispatchAction({type:\"dataZoom\",from:this.uid,batch:t})},c.register(\"dataZoom\",p),i.registerPreprocessor(function(e){if(e){var t=e.dataZoom||(e.dataZoom=[]);r.isArray(t)||(e.dataZoom=t=[t]);var n=e.toolbox;if(n&&(r.isArray(n)&&(n=n[0]),n&&n.feature)){var i=n.feature.dataZoom;o(\"xAxis\",i),o(\"yAxis\",i)}}function o(n,i){if(i){var o=n+\"Index\",a=i[o];null==a||\"all\"===a||r.isArray(a)||(a=!1===a||\"none\"===a?[]:[a]),function(t,n){var i=e[t];r.isArray(i)||(i=i?[i]:[]);d(i,n)}(n,function(e,s){if(null==a||\"all\"===a||-1!==r.indexOf(a,s)){var l={type:\"select\",$fromToolbox:!0,filterMode:i.filterMode||\"filter\",id:f+n+s};l[o]=s,t.push(l)}})}}});var y=p;e.exports=y},DnWC:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Ylhr\"),o=n(\"pSwa\"),a=n(\"1Hui\"),s=n(\"HHfb\").windowOpen,l=r.extend({type:\"sunburst\",init:function(){},render:function(e,t,n,r){var s=this;this.seriesModel=e,this.api=n,this.ecModel=t;var l=e.getData(),u=l.tree.root,c=e.getViewRoot(),h=this.group,d=e.get(\"renderLabelForZeroData\"),f=[];c.eachNode(function(e){f.push(e)});var p=this._oldChildren||[];if(function(n,r){if(0===n.length&&0===r.length)return;function s(e){return e.getId()}function c(i,a){var s=null==i?null:n[i],c=null==a?null:r[a];!function(n,i){d||!n||n.getValue()||(n=null);if(n!==u&&i!==u)if(i&&i.piece)n?(i.piece.updateData(!1,n,\"normal\",e,t),l.setItemGraphicEl(n.dataIndex,i.piece)):function(e){if(!e)return;e.piece&&(h.remove(e.piece),e.piece=null)}(i);else if(n){var r=new o(n,e,t);h.add(r),l.setItemGraphicEl(n.dataIndex,r)}}(s,c)}new a(r,n,s,s).add(c).update(c).remove(i.curry(c,null)).execute()}(f,p),function(n,i){if(i.depth>0){s.virtualPiece?s.virtualPiece.updateData(!1,n,\"normal\",e,t):(s.virtualPiece=new o(n,e,t),h.add(s.virtualPiece)),i.piece._onclickEvent&&i.piece.off(\"click\",i.piece._onclickEvent);var r=function(e){s._rootToNode(i.parentNode)};i.piece._onclickEvent=r,s.virtualPiece.on(\"click\",r)}else s.virtualPiece&&(h.remove(s.virtualPiece),s.virtualPiece=null)}(u,c),r&&r.highlight&&r.highlight.piece){var g=e.getShallow(\"highlightPolicy\");r.highlight.piece.onEmphasis(g)}else if(r&&r.unhighlight){var m=this.virtualPiece;!m&&u.children.length&&(m=u.children[0].piece),m&&m.onNormal()}this._initEvents(),this._oldChildren=f},dispose:function(){},_initEvents:function(){var e=this,t=function(t){var n=!1;e.seriesModel.getViewRoot().eachNode(function(i){if(!n&&i.piece&&i.piece.childAt(0)===t.target){var r=i.getModel().get(\"nodeClick\");if(\"rootToNode\"===r)e._rootToNode(i);else if(\"link\"===r){var o=i.getModel(),a=o.get(\"link\");if(a){var l=o.get(\"target\",!0)||\"_blank\";s(a,l)}}n=!0}})};this.group._onclickEvent&&this.group.off(\"click\",this.group._onclickEvent),this.group.on(\"click\",t),this.group._onclickEvent=t},_rootToNode:function(e){e!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:\"sunburstRootToNode\",from:this.uid,seriesId:this.seriesModel.id,targetNode:e})},containPoint:function(e,t){var n=t.getData().getItemLayout(0);if(n){var i=e[0]-n.cx,r=e[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}}});e.exports=l},DpwM:function(e,t,n){var i=n(\"/gxq\"),r=n(\"YNzw\"),o=(0,n(\"vXqC\").makeInner)(),a=i.each;function s(e,t,n){e.handler(\"leave\",null,n)}function l(e,t,n,i){t.handler(e,n,i)}t.register=function(e,t,n){if(!r.node){var u=t.getZr();o(u).records||(o(u).records={}),function(e,t){function n(n,i){e.on(n,function(n){var r=function(e){var t={showTip:[],hideTip:[]},n=function(i){var r=t[i.type];r?r.push(i):(i.dispatchAction=n,e.dispatchAction(i))};return{dispatchAction:n,pendings:t}}(t);a(o(e).records,function(e){e&&i(e,n,r.dispatchAction)}),function(e,t){var n,i=e.showTip.length,r=e.hideTip.length;i?n=e.showTip[i-1]:r&&(n=e.hideTip[r-1]),n&&(n.dispatchAction=null,t.dispatchAction(n))}(r.pendings,t)})}o(e).initialized||(o(e).initialized=!0,n(\"click\",i.curry(l,\"click\")),n(\"mousemove\",i.curry(l,\"mousemove\")),n(\"globalout\",s))}(u,t),(o(u).records[e]||(o(u).records[e]={})).handler=n}},t.unregister=function(e,t){if(!r.node){var n=t.getZr();(o(n).records||{})[e]&&(o(n).records[e]=null)}}},DuR2:function(e,t){var n;n=function(){return this}();try{n=n||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(n=window)}e.exports=n},\"E/in\":function(e,t,n){\"use strict\";t.__esModule=!0,t.isDef=function(e){return void 0!==e&&null!==e},t.isKorean=function(e){return/([(\\uAC00-\\uD7AF)|(\\u3130-\\u318F)])+/gi.test(e)}},E5Az:function(e,t,n){var i;i=function(e){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(n(0)),r=window.CodeMirror||i.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])}return n},writable:!0,configurable:!0}),t.default={name:\"codemirror\",data:function(){return{content:\"\",codemirror:null,cminstance:null}},props:{code:String,value:String,marker:Function,unseenLines:Array,name:{type:String,default:\"codemirror\"},placeholder:{type:String,default:\"\"},merge:{type:Boolean,default:!1},options:{type:Object,default:function(){return{}}},events:{type:Array,default:function(){return[]}},globalOptions:{type:Object,default:function(){return{}}},globalEvents:{type:Array,default:function(){return[]}}},watch:{options:{deep:!0,handler:function(e){for(var t in e)this.cminstance.setOption(t,e[t])}},merge:function(){this.$nextTick(this.switchMerge)},code:function(e){this.handerCodeChange(e)},value:function(e){this.handerCodeChange(e)}},methods:{initialize:function(){var e=this,t=Object.assign({},this.globalOptions,this.options);this.merge?(this.codemirror=r.MergeView(this.$refs.mergeview,t),this.cminstance=this.codemirror.edit):(this.codemirror=r.fromTextArea(this.$refs.textarea,t),this.cminstance=this.codemirror,this.cminstance.setValue(this.code||this.value||this.content)),this.cminstance.on(\"change\",function(t){e.content=t.getValue(),e.$emit&&e.$emit(\"input\",e.content)});var n={};[\"scroll\",\"changes\",\"beforeChange\",\"cursorActivity\",\"keyHandled\",\"inputRead\",\"electricInput\",\"beforeSelectionChange\",\"viewportChange\",\"swapDoc\",\"gutterClick\",\"gutterContextMenu\",\"focus\",\"blur\",\"refresh\",\"optionChange\",\"scrollCursorIntoView\",\"update\"].concat(this.events).concat(this.globalEvents).filter(function(e){return!n[e]&&(n[e]=!0)}).forEach(function(t){e.cminstance.on(t,function(){for(var n=arguments.length,i=Array(n),r=0;r<n;r++)i[r]=arguments[r];e.$emit.apply(e,[t].concat(i));var o=t.replace(/([A-Z])/g,\"-$1\").toLowerCase();o!==t&&e.$emit.apply(e,[o].concat(i))})}),this.$emit(\"ready\",this.codemirror),this.unseenLineMarkers(),this.refresh()},refresh:function(){var e=this;this.$nextTick(function(){e.cminstance.refresh()})},destroy:function(){var e=this.cminstance.doc.cm.getWrapperElement();e&&e.remove&&e.remove()},handerCodeChange:function(e){if(e!==this.cminstance.getValue()){var t=this.cminstance.getScrollInfo();this.cminstance.setValue(e),this.content=e,this.cminstance.scrollTo(t.left,t.top)}this.unseenLineMarkers()},unseenLineMarkers:function(){var e=this;void 0!==this.unseenLines&&void 0!==this.marker&&this.unseenLines.forEach(function(t){var n=e.cminstance.lineInfo(t);e.cminstance.setGutterMarker(t,\"breakpoints\",n.gutterMarkers?null:e.marker())})},switchMerge:function(){var e=this.cminstance.doc.history,t=this.cminstance.doc.cleanGeneration;this.options.value=this.cminstance.getValue(),this.destroy(),this.initialize(),this.cminstance.doc.history=e,this.cminstance.doc.cleanGeneration=t}},mounted:function(){this.initialize()},beforeDestroy:function(){this.destroy()}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(1),r=n.n(i);for(var o in i)[\"default\",\"default\"].indexOf(o)<0&&function(e){n.d(t,e,function(){return i[e]})}(o);var a=n(5),s=n(4)(r.a,a.a,!1,null,null,null);t.default=s.exports},function(e,t,n){\"use strict\";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.install=t.codemirror=t.CodeMirror=void 0;var r=i(n(0)),o=i(n(2)),a=window.CodeMirror||r.default,s=function(e,t){t&&(t.options&&(o.default.props.globalOptions.default=function(){return t.options}),t.events&&(o.default.props.globalEvents.default=function(){return t.events})),e.component(o.default.name,o.default)},l={CodeMirror:a,codemirror:o.default,install:s};t.default=l,t.CodeMirror=a,t.codemirror=o.default,t.install=s},function(e,t){e.exports=function(e,t,n,i,r,o){var a,s=e=e||{},l=typeof e.default;\"object\"!==l&&\"function\"!==l||(a=e,s=e.default);var u,c=\"function\"==typeof s?s.options:s;if(t&&(c.render=t.render,c.staticRenderFns=t.staticRenderFns,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId=r),o?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=u):i&&(u=i),u){var h=c.functional,d=h?c.render:c.beforeCreate;h?(c._injectStyles=u,c.render=function(e,t){return u.call(t),d(e,t)}):c.beforeCreate=d?[].concat(d,u):[u]}return{esModule:a,exports:s,options:c}}},function(e,t,n){\"use strict\";var i={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"vue-codemirror\",class:{merge:e.merge}},[e.merge?n(\"div\",{ref:\"mergeview\"}):n(\"textarea\",{ref:\"textarea\",attrs:{name:e.name,placeholder:e.placeholder}})])},staticRenderFns:[]};t.a=i}])},e.exports=i(n(\"8U58\"))},E7aA:function(e,t,n){var i=n(\"/gxq\"),r=n(\"5Mek\"),o=n(\"QD+P\"),a=\"\\0_ec_dataZoom_roams\";function s(e){var t=e.getZr();return t[a]||(t[a]={})}function l(e){i.each(e,function(t,n){t.count||(t.controller.dispose(),delete e[n])})}function u(e,t){e.dispatchAction({type:\"dataZoom\",batch:t})}t.register=function(e,t){var n=s(e),a=t.dataZoomId,c=t.coordId;i.each(n,function(e,n){var r=e.dataZoomInfos;r[a]&&i.indexOf(t.allCoordIds,c)<0&&(delete r[a],e.count--)}),l(n);var h=n[c];h||((h=n[c]={coordId:c,dataZoomInfos:{},count:0}).controller=function(e,t){var n=new r(e.getZr());return i.each([\"pan\",\"zoom\",\"scrollMove\"],function(e){n.on(e,function(n){var r=[];i.each(t.dataZoomInfos,function(i){if(n.isAvailableBehavior(i.dataZoomModel.option)){var o=(i.getRange||{})[e],a=o&&o(t.controller,n);!i.dataZoomModel.get(\"disabled\",!0)&&a&&r.push({dataZoomId:i.dataZoomId,start:a[0],end:a[1]})}}),r.length&&t.dispatchAction(r)})}),n}(e,h),h.dispatchAction=i.curry(u,e)),!h.dataZoomInfos[a]&&h.count++,h.dataZoomInfos[a]=t;var d,f,p,g,m=(d=h.dataZoomInfos,p={type_true:2,type_move:1,type_false:0,type_undefined:-1},g=!0,i.each(d,function(e){var t=e.dataZoomModel,n=!t.get(\"disabled\",!0)&&(!t.get(\"zoomLock\",!0)||\"move\");p[\"type_\"+n]>p[\"type_\"+f]&&(f=n),g&=t.get(\"preventDefaultMouseMove\",!0)}),{controlType:f,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!g}});h.controller.enable(m.controlType,m.opt),h.controller.setPointerChecker(t.containsPoint),o.createOrUpdate(h,\"dispatchAction\",t.dataZoomModel.get(\"throttle\",!0),\"fixRate\")},t.unregister=function(e,t){var n=s(e);i.each(n,function(e){e.controller.dispose();var n=e.dataZoomInfos;n[t]&&(delete n[t],e.count--)}),l(n)},t.generateCoordId=function(e){return e.type+\"\\0_\"+e.id}},E8YU:function(e,t,n){var i=n(\"/gxq\"),r=n(\"1Xuh\").getLayoutRect;t.getItemAlign=function(e,t,n){var i=e.option,o=i.align;if(null!=o&&\"auto\"!==o)return o;for(var a={width:t.getWidth(),height:t.getHeight()},s=\"horizontal\"===i.orient?1:0,l=[[\"left\",\"right\",\"width\"],[\"top\",\"bottom\",\"height\"]],u=l[s],c=[0,null,10],h={},d=0;d<3;d++)h[l[1-s][d]]=c[d],h[u[d]]=2===d?n[0]:i[u[d]];var f=[[\"x\",\"width\",3],[\"y\",\"height\",0]][s],p=r(h,a,i.padding);return u[(p.margin[f[2]]||0)+p[f[0]]+.5*p[f[1]]<.5*a[f[1]]?0:1]},t.makeHighDownBatch=function(e,t){return i.each(e||[],function(e){null!=e.dataIndex&&(e.dataIndexInside=e.dataIndex,e.dataIndex=null),e.highlightKey=\"visualMap\"+(t?t.componentIndex:\"\")}),e}},EGZi:function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},EJsE:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"YNzw\"),o=n(\"HHfb\"),a=o.formatTime,s=o.encodeHTML,l=o.addCommas,u=o.getTooltipMarker,c=n(\"vXqC\"),h=n(\"Y5nL\"),d=n(\"MyoG\"),f=n(\"bBvJ\"),p=n(\"1Xuh\"),g=p.getLayoutParams,m=p.mergeLayoutParam,v=n(\"gV7x\").createTask,y=n(\"kdOt\"),b=y.prepareSource,x=y.getSource,_=n(\"5KBG\").retrieveRawValue,w=c.makeInner(),C=h.extend({type:\"series.__base__\",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendVisualProvider:null,visualColorAccessPath:\"itemStyle.color\",visualBorderColorAccessPath:\"itemStyle.borderColor\",layoutMode:null,init:function(e,t,n,i){this.seriesIndex=this.componentIndex,this.dataTask=v({count:k,reset:T}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(e,n),b(this);var r=this.getInitialData(e,n);D(r,this),this.dataTask.context.data=r,w(this).dataBeforeProcessed=r,S(this)},mergeDefaultAndTheme:function(e,t){var n=this.layoutMode,r=n?g(e):{},o=this.subType;h.hasClass(o)&&(o+=\"Series\"),i.merge(e,t.getTheme().get(this.subType)),i.merge(e,this.getDefaultOption()),c.defaultEmphasis(e,\"label\",[\"show\"]),this.fillDataTextStyle(e.data),n&&m(e,r,n)},mergeOption:function(e,t){e=i.merge(this.option,e,!0),this.fillDataTextStyle(e.data);var n=this.layoutMode;n&&m(this.option,e,n),b(this);var r=this.getInitialData(e,t);D(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,w(this).dataBeforeProcessed=r,S(this)},fillDataTextStyle:function(e){if(e&&!i.isTypedArray(e))for(var t=[\"show\"],n=0;n<e.length;n++)e[n]&&e[n].label&&c.defaultEmphasis(e[n],\"label\",t)},getInitialData:function(){},appendData:function(e){this.getRawData().appendData(e.data)},getData:function(e){var t=I(this);if(t){var n=t.context.data;return null==e?n:n.getLinkedData(e)}return w(this).data},setData:function(e){var t=I(this);if(t){var n=t.context;n.data!==e&&t.modifyOutputEnd&&t.setOutputEnd(e.count()),n.outputData=e,t!==this.dataTask&&(n.data=e)}w(this).data=e},getSource:function(){return x(this)},getRawData:function(){return w(this).dataBeforeProcessed},getBaseAxis:function(){var e=this.coordinateSystem;return e&&e.getBaseAxis&&e.getBaseAxis()},formatTooltip:function(e,t,n,r){var o=this,h=\"html\"===(r=r||\"html\")?\"<br/>\":\"\\n\",d=\"richText\"===r,f={},p=0;function g(e){return{renderMode:r,content:s(l(e)),style:f}}var m=this.getData(),v=m.mapDimension(\"defaultedTooltip\",!0),y=v.length,b=this.getRawValue(e),x=i.isArray(b),w=m.getItemVisual(e,\"color\");i.isObject(w)&&w.colorStops&&(w=(w.colorStops[0]||{}).color),w=w||\"transparent\";var C=(y>1||x&&!y?function(n){var c=i.reduce(n,function(e,t,n){var i=m.getDimensionInfo(n);return e|(i&&!1!==i.tooltip&&null!=i.displayName)},0),h=[];function g(e,n){var i=m.getDimensionInfo(n);if(i&&!1!==i.otherDims.tooltip){var g=i.type,v=\"sub\"+o.seriesIndex+\"at\"+p,y=u({color:w,type:\"subItem\",renderMode:r,markerId:v}),b=\"string\"==typeof y?y:y.content,x=(c?b+s(i.displayName||\"-\")+\": \":\"\")+s(\"ordinal\"===g?e+\"\":\"time\"===g?t?\"\":a(\"yyyy/MM/dd hh:mm:ss\",e):l(e));x&&h.push(x),d&&(f[v]=w,++p)}}v.length?i.each(v,function(t){g(_(m,e,t),t)}):i.each(n,g);var y=c?d?\"\\n\":\"<br/>\":\"\",b=y+h.join(y||\", \");return{renderMode:r,content:b,style:f}}(b):g(y?_(m,e,v[0]):x?b[0]:b)).content,S=o.seriesIndex+\"at\"+p,k=u({color:w,type:\"item\",renderMode:r,markerId:S});f[S]=w,++p;var T=m.getName(e),M=this.name;c.isNameSpecified(this)||(M=\"\"),M=M?s(M)+(t?\": \":h):\"\";var D=\"string\"==typeof k?k:k.content;return{html:t?D+M+C:M+D+(T?s(T)+\": \"+C:C),markers:f}},isAnimationEnabled:function(){if(r.node)return!1;var e=this.getShallow(\"animation\");return e&&this.getData().count()>this.getShallow(\"animationThreshold\")&&(e=!1),e},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(e,t,n){var i=this.ecModel,r=d.getColorFromPalette.call(this,e,t,n);return r||(r=i.getColorFromPalette(e,t,n)),r},coordDimToDataDim:function(e){return this.getRawData().mapDimension(e,!0)},getProgressive:function(){return this.get(\"progressive\")},getProgressiveThreshold:function(){return this.get(\"progressiveThreshold\")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});function S(e){var t=e.name;c.isNameSpecified(e)||(e.name=function(e){var t=e.getRawData(),n=t.mapDimension(\"seriesName\",!0),r=[];return i.each(n,function(e){var n=t.getDimensionInfo(e);n.displayName&&r.push(n.displayName)}),r.join(\" \")}(e)||t)}function k(e){return e.model.getRawData().count()}function T(e){var t=e.model;return t.setData(t.getRawData().cloneShallow()),M}function M(e,t){t.outputData&&e.end>t.outputData.count()&&t.model.getRawData().cloneShallow(t.outputData)}function D(e,t){i.each(e.CHANGABLE_METHODS,function(n){e.wrapMethod(n,i.curry(A,t))})}function A(e){var t=I(e);t&&t.setOutputEnd(this.count())}function I(e){var t=(e.ecModel||{}).scheduler,n=t&&t.getPipeline(e.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(e.uid))}return i}}i.mixin(C,f),i.mixin(C,d);var O=C;e.exports=O},EKTV:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=83)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},4:function(e,t){e.exports=n(\"fPll\")},83:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"label\",{staticClass:\"el-checkbox\",class:[e.border&&e.checkboxSize?\"el-checkbox--\"+e.checkboxSize:\"\",{\"is-disabled\":e.isDisabled},{\"is-bordered\":e.border},{\"is-checked\":e.isChecked}],attrs:{id:e.id}},[n(\"span\",{staticClass:\"el-checkbox__input\",class:{\"is-disabled\":e.isDisabled,\"is-checked\":e.isChecked,\"is-indeterminate\":e.indeterminate,\"is-focus\":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&\"checkbox\",\"aria-checked\":!!e.indeterminate&&\"mixed\"}},[n(\"span\",{staticClass:\"el-checkbox__inner\"}),e.trueLabel||e.falseLabel?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],staticClass:\"el-checkbox__original\",attrs:{type:\"checkbox\",\"aria-hidden\":e.indeterminate?\"true\":\"false\",name:e.name,disabled:e.isDisabled,\"true-value\":e.trueLabel,\"false-value\":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var n=e.model,i=t.target,r=i.checked?e.trueLabel:e.falseLabel;if(Array.isArray(n)){var o=e._i(n,null);i.checked?o<0&&(e.model=n.concat([null])):o>-1&&(e.model=n.slice(0,o).concat(n.slice(o+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],staticClass:\"el-checkbox__original\",attrs:{type:\"checkbox\",\"aria-hidden\":e.indeterminate?\"true\":\"false\",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var n=e.model,i=t.target,r=!!i.checked;if(Array.isArray(n)){var o=e.label,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?n(\"span\",{staticClass:\"el-checkbox__label\"},[e._t(\"default\"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};i._withStripped=!0;var r=n(4),o={name:\"ElCheckbox\",mixins:[n.n(r).a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},componentName:\"ElCheckbox\",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch(\"ElCheckboxGroup\",\"input\",[e])):(this.$emit(\"input\",e),this.selfModel=e)}},isChecked:function(){return\"[object Boolean]\"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if(\"ElCheckboxGroup\"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,n=e.min;return!(!t&&!n)&&this.model.length>=t&&!this.isChecked||this.model.length<=n&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var n=void 0;n=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit(\"change\",n,e),this.$nextTick(function(){t.isGroup&&t.dispatch(\"ElCheckboxGroup\",\"change\",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute(\"aria-controls\",this.controls)},watch:{value:function(e){this.dispatch(\"ElFormItem\",\"el.form.change\",e)}}},a=n(0),s=Object(a.a)(o,i,[],!1,null,null,null);s.options.__file=\"packages/checkbox/src/checkbox.vue\";var l=s.exports;l.install=function(e){e.component(l.name,l)};t.default=l}})},ERCD:function(e,t,n){var i=n(\"1Xuh\");function r(e){var t=e.children;return t.length&&e.isExpand?t[t.length-1]:e.hierNode.thread}function o(e){var t=e.children;return t.length&&e.isExpand?t[0]:e.hierNode.thread}function a(e,t,n){return e.hierNode.ancestor.parentNode===t.parentNode?e.hierNode.ancestor:n}function s(e,t,n){var i=n/(t.hierNode.i-e.hierNode.i);t.hierNode.change-=i,t.hierNode.shift+=n,t.hierNode.modifier+=n,t.hierNode.prelim+=n,e.hierNode.change+=i}function l(e,t){return e.parentNode===t.parentNode?1:2}t.init=function(e){e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var t,n,i=[e];t=i.pop();)if(n=t.children,t.isExpand&&n.length)for(var r=n.length-1;r>=0;r--){var o=n[r];o.hierNode={defaultAncestor:null,ancestor:o,prelim:0,modifier:0,change:0,shift:0,i:r,thread:null},i.push(o)}},t.firstWalk=function(e,t){var n=e.isExpand?e.children:[],i=e.parentNode.children,l=e.hierNode.i?i[e.hierNode.i-1]:null;if(n.length){!function(e){for(var t=e.children,n=t.length,i=0,r=0;--n>=0;){var o=t[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(e);var u=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;l?(e.hierNode.prelim=l.hierNode.prelim+t(e,l),e.hierNode.modifier=e.hierNode.prelim-u):e.hierNode.prelim=u}else l&&(e.hierNode.prelim=l.hierNode.prelim+t(e,l));e.parentNode.hierNode.defaultAncestor=function(e,t,n,i){if(t){for(var l=e,u=e,c=u.parentNode.children[0],h=t,d=l.hierNode.modifier,f=u.hierNode.modifier,p=c.hierNode.modifier,g=h.hierNode.modifier;h=r(h),u=o(u),h&&u;){l=r(l),c=o(c),l.hierNode.ancestor=e;var m=h.hierNode.prelim+g-u.hierNode.prelim-f+i(h,u);m>0&&(s(a(h,e,n),e,m),f+=m,d+=m),g+=h.hierNode.modifier,f+=u.hierNode.modifier,d+=l.hierNode.modifier,p+=c.hierNode.modifier}h&&!r(l)&&(l.hierNode.thread=h,l.hierNode.modifier+=g-d),u&&!o(c)&&(c.hierNode.thread=u,c.hierNode.modifier+=f-p,n=e)}return n}(e,l,e.parentNode.hierNode.defaultAncestor||i[0],t)},t.secondWalk=function(e){var t=e.hierNode.prelim+e.parentNode.hierNode.modifier;e.setLayout({x:t},!0),e.hierNode.modifier+=e.parentNode.hierNode.modifier},t.separation=function(e){return arguments.length?e:l},t.radialCoordinate=function(e,t){var n={};return e-=Math.PI/2,n.x=t*Math.cos(e),n.y=t*Math.sin(e),n},t.getViewRect=function(e,t){return i.getLayoutRect(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}},EqjI:function(e,t){e.exports=function(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}},F8oC:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\"),o=n(\"Rfu2\"),a=n(\"vXqC\"),s=r.extend({type:\"timeline\",layoutMode:\"box\",defaultOption:{zlevel:0,z:4,show:!0,axisType:\"time\",realtime:!0,left:\"20%\",top:null,right:\"20%\",bottom:0,width:null,height:40,padding:5,controlPosition:\"left\",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:\"#000\"},data:[]},init:function(e,t,n){this._data,this._names,this.mergeDefaultAndTheme(e,n),this._initData()},mergeOption:function(e){s.superApply(this,\"mergeOption\",arguments),this._initData()},setCurrentIndex:function(e){null==e&&(e=this.option.currentIndex);var t=this._data.count();this.option.loop?e=(e%t+t)%t:(e>=t&&(e=t-1),e<0&&(e=0)),this.option.currentIndex=e},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(e){this.option.autoPlay=!!e},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var e=this.option,t=e.data||[],n=e.axisType,r=this._names=[];if(\"category\"===n){var s=[];i.each(t,function(e,t){var n,o=a.getDataItemValue(e);i.isObject(e)?(n=i.clone(e)).value=t:n=t,s.push(n),i.isString(o)||null!=o&&!isNaN(o)||(o=\"\"),r.push(o+\"\")}),t=s}var l={category:\"ordinal\",time:\"time\"}[n]||\"number\";(this._data=new o([{name:\"value\",type:l}],this)).initData(t,r)},getData:function(){return this._data},getCategories:function(){if(\"category\"===this.get(\"axisType\"))return this._names.slice()}}),l=s;e.exports=l},FCaW:function(e,t){var n=function(e,t){this.getAllNames=function(){var e=t();return e.mapArray(e.getName)},this.containName=function(e){return t().indexOfName(e)>=0},this.indexOfName=function(t){return e().indexOfName(t)},this.getItemVisual=function(t,n){return e().getItemVisual(t,n)}};e.exports=n},FIAY:function(e,t){e.exports={legend:{selector:{all:\"全选\",inverse:\"反选\"}},toolbox:{brush:{title:{rect:\"矩形选择\",polygon:\"圈选\",lineX:\"横向选择\",lineY:\"纵向选择\",keep:\"保持选择\",clear:\"清除选择\"}},dataView:{title:\"数据视图\",lang:[\"数据视图\",\"关闭\",\"刷新\"]},dataZoom:{title:{zoom:\"区域缩放\",back:\"区域缩放还原\"}},magicType:{title:{line:\"切换为折线图\",bar:\"切换为柱状图\",stack:\"切换为堆叠\",tiled:\"切换为平铺\"}},restore:{title:\"还原\"},saveAsImage:{title:\"保存为图片\",lang:[\"右键另存为图片\"]}},series:{typeNames:{pie:\"饼图\",bar:\"柱状图\",line:\"折线图\",scatter:\"散点图\",effectScatter:\"涟漪散点图\",radar:\"雷达图\",tree:\"树图\",treemap:\"矩形树图\",boxplot:\"箱型图\",candlestick:\"K线图\",k:\"K线图\",heatmap:\"热力图\",map:\"地图\",parallel:\"平行坐标图\",lines:\"线图\",graph:\"关系图\",sankey:\"桑基图\",funnel:\"漏斗图\",gauge:\"仪表盘图\",pictorialBar:\"象形柱图\",themeRiver:\"主题河流图\",sunburst:\"旭日图\"}},aria:{general:{withTitle:\"这是一个关于“{title}”的图表。\",withoutTitle:\"这是一个图表，\"},series:{single:{prefix:\"\",withName:\"图表类型是{seriesType}，表示{seriesName}。\",withoutName:\"图表类型是{seriesType}。\"},multiple:{prefix:\"它由{seriesCount}个图表系列组成。\",withName:\"第{seriesId}个系列是一个表示{seriesName}的{seriesType}，\",withoutName:\"第{seriesId}个系列是一个{seriesType}，\",separator:{middle:\"；\",end:\"。\"}}},data:{allData:\"其数据是——\",partialData:\"其中，前{displayCnt}项是——\",withName:\"{name}的数据是{value}\",withoutName:\"{value}\",separator:{middle:\"，\",end:\"\"}}}}},FeBl:function(e,t){var n=e.exports={version:\"2.6.11\"};\"number\"==typeof __e&&(__e=n)},Fkmw:function(e,t,n){var i=n(\"/gxq\"),r=n(\"DRaW\"),o=n(\"Rfu2\"),a=n(\"wWR3\"),s=n(\"0sHC\"),l=n(\"vx1D\"),u=function(e,t,n,r){var o=l.dataTransform(e,r[0]),a=l.dataTransform(e,r[1]),s=i.retrieve,u=o.coord,c=a.coord;u[0]=s(u[0],-1/0),u[1]=s(u[1],-1/0),c[0]=s(c[0],1/0),c[1]=s(c[1],1/0);var h=i.mergeAll([{},o,a]);return h.coord=[o.coord,a.coord],h.x0=o.x,h.y0=o.y,h.x1=a.x,h.y1=a.y,h};function c(e){return!isNaN(e)&&!isFinite(e)}function h(e,t,n,i){var r=1-e;return c(t[r])&&c(n[r])}function d(e,t){var n=t.coord[0],i=t.coord[1];return!(\"cartesian2d\"!==e.type||!n||!i||!h(1,n,i)&&!h(0,n,i))||(l.dataFilter(e,{coord:n,x:t.x0,y:t.y0})||l.dataFilter(e,{coord:i,x:t.x1,y:t.y1}))}function f(e,t,n,i,r){var o,s=i.coordinateSystem,l=e.getItemModel(t),u=a.parsePercent(l.get(n[0]),r.getWidth()),h=a.parsePercent(l.get(n[1]),r.getHeight());if(isNaN(u)||isNaN(h)){if(i.getMarkerPosition)o=i.getMarkerPosition(e.getValues(n,t));else{var d=[g=e.get(n[0],t),m=e.get(n[1],t)];s.clampData&&s.clampData(d,d),o=s.dataToPoint(d,!0)}if(\"cartesian2d\"===s.type){var f=s.getAxis(\"x\"),p=s.getAxis(\"y\"),g=e.get(n[0],t),m=e.get(n[1],t);c(g)?o[0]=f.toGlobalCoord(f.getExtent()[\"x0\"===n[0]?0:1]):c(m)&&(o[1]=p.toGlobalCoord(p.getExtent()[\"y0\"===n[1]?0:1]))}isNaN(u)||(o[0]=u),isNaN(h)||(o[1]=h)}else o=[u,h];return o}var p=[[\"x0\",\"y0\"],[\"x1\",\"y0\"],[\"x1\",\"y1\"],[\"x0\",\"y1\"]];n(\"SZjP\").extend({type:\"markArea\",updateTransform:function(e,t,n){t.eachSeries(function(e){var t=e.markAreaModel;if(t){var r=t.getData();r.each(function(t){var o=i.map(p,function(i){return f(r,t,i,e,n)});r.setItemLayout(t,o),r.getItemGraphicEl(t).setShape(\"points\",o)})}},this)},renderSeries:function(e,t,n,a){var l=e.coordinateSystem,c=e.id,h=e.getData(),g=this.markerGroupMap,m=g.get(c)||g.set(c,{group:new s.Group});this.group.add(m.group),m.__keep=!0;var v=function(e,t,n){var r,a;e?(r=i.map(e&&e.dimensions,function(e){var n=t.getData(),r=n.getDimensionInfo(n.mapDimension(e))||{};return i.defaults({name:e},r)}),a=new o(i.map([\"x0\",\"y0\",\"x1\",\"y1\"],function(e,t){return{name:e,type:r[t%2].type}}),n)):a=new o(r=[{name:\"value\",type:\"float\"}],n);var s=i.map(n.get(\"data\"),i.curry(u,t,e,n));e&&(s=i.filter(s,i.curry(d,e)));var l=e?function(e,t,n,i){return e.coord[Math.floor(i/2)][i%2]}:function(e){return e.value};return a.initData(s,null,l),a.hasItemOption=!0,a}(l,e,t);t.setData(v),v.each(function(t){v.setItemLayout(t,i.map(p,function(n){return f(v,t,n,e,a)})),v.setItemVisual(t,{color:h.getVisual(\"color\")})}),v.diff(m.__data).add(function(e){var t=new s.Polygon({shape:{points:v.getItemLayout(e)}});v.setItemGraphicEl(e,t),m.group.add(t)}).update(function(e,n){var i=m.__data.getItemGraphicEl(n);s.updateProps(i,{shape:{points:v.getItemLayout(e)}},t,e),m.group.add(i),v.setItemGraphicEl(e,i)}).remove(function(e){var t=m.__data.getItemGraphicEl(e);m.group.remove(t)}).execute(),v.eachItemGraphicEl(function(e,n){var o=v.getItemModel(n),a=o.getModel(\"label\"),l=o.getModel(\"emphasis.label\"),u=v.getItemVisual(n,\"color\");e.useStyle(i.defaults(o.getModel(\"itemStyle\").getItemStyle(),{fill:r.modifyAlpha(u,.4),stroke:u})),e.hoverStyle=o.getModel(\"emphasis.itemStyle\").getItemStyle(),s.setLabelStyle(e.style,e.hoverStyle,a,l,{labelFetcher:t,labelDataIndex:n,defaultText:v.getName(n)||\"\",isRectText:!0,autoColor:u}),s.setHoverStyle(e,{}),e.dataModel=t}),m.__data=v,m.group.silent=t.get(\"silent\")||e.get(\"silent\")}})},FlXs:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"QD+P\"),a=n(\"i6Ks\");n(\"qSkD\"),n(\"KjPy\"),n(\"LjPz\");i.extendComponentView({type:\"parallel\",render:function(e,t,n){this._model=e,this._api=n,this._handlers||(this._handlers={},r.each(s,function(e,t){n.getZr().on(t,this._handlers[t]=r.bind(e,this))},this)),o.createOrUpdate(this,\"_throttledDispatchExpand\",e.get(\"axisExpandRate\"),\"fixRate\")},dispose:function(e,t){r.each(this._handlers,function(e,n){t.getZr().off(n,e)}),this._handlers=null},_throttledDispatchExpand:function(e){this._dispatchExpand(e)},_dispatchExpand:function(e){e&&this._api.dispatchAction(r.extend({type:\"parallelAxisExpand\"},e))}});var s={mousedown:function(e){l(this,\"click\")&&(this._mouseDownPoint=[e.offsetX,e.offsetY])},mouseup:function(e){var t=this._mouseDownPoint;if(l(this,\"click\")&&t){var n=[e.offsetX,e.offsetY];if(Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2)>5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX,e.offsetY]);\"none\"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(e){if(!this._mouseDownPoint&&l(this,\"mousemove\")){var t=this._model,n=t.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX,e.offsetY]),i=n.behavior;\"jump\"===i&&this._throttledDispatchExpand.debounceNextCall(t.get(\"axisExpandDebounce\")),this._throttledDispatchExpand(\"none\"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:\"jump\"===i&&null})}}};function l(e,t){var n=e._model;return n.get(\"axisExpandable\")&&n.get(\"axisExpandTriggerOn\")===t}i.registerPreprocessor(a)},FvdC:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"ii60\").updateCenterAndZoom;i.registerAction({type:\"geoRoam\",event:\"geoRoam\",update:\"updateTransform\"},function(e,t){var n=e.componentType||\"series\";t.eachComponent({mainType:n,query:e},function(t){var i=t.coordinateSystem;if(\"geo\"===i.type){var a=o(i,e,t.get(\"scaleLimit\"));t.setCenter&&t.setCenter(a.center),t.setZoom&&t.setZoom(a.zoom),\"series\"===n&&r.each(t.seriesGroup,function(e){e.setCenter(a.center),e.setZoom(a.zoom)})}})})},GQGX:function(e,t,n){var i=n(\"/gxq\");function r(e){var t=e.itemStyle||(e.itemStyle={}),n=t.emphasis||(t.emphasis={}),r=e.label||e.label||{},a=r.normal||(r.normal={}),s={normal:1,emphasis:1};i.each(r,function(e,t){s[t]||o(a,t)||(a[t]=e)}),n.label&&!o(r,\"emphasis\")&&(r.emphasis=n.label,delete n.label)}function o(e,t){return e.hasOwnProperty(t)}e.exports=function(e){var t=e&&e.timeline;i.isArray(t)||(t=t?[t]:[]),i.each(t,function(e){e&&function(e){var t=e.type,n={number:\"value\",time:\"time\"};if(n[t]&&(e.axisType=n[t],delete e.type),r(e),o(e,\"controlPosition\")){var a=e.controlStyle||(e.controlStyle={});o(a,\"position\")||(a.position=e.controlPosition),\"none\"!==a.position||o(a,\"show\")||(a.show=!1,delete a.position),delete e.controlPosition}i.each(e.data||[],function(e){i.isObject(e)&&!i.isArray(e)&&(!o(e,\"value\")&&o(e,\"name\")&&(e.value=e.name),r(e))})}(e)})}},GWV8:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\"),o=n(\"s1Aj\"),a=n(\"og9+\"),s=i.each,l=r.asc,u=function(e,t,n,i){this._dimName=e,this._axisIndex=t,this._valueWindow,this._percentWindow,this._dataExtent,this._minMaxSpan,this.ecModel=i,this._dataZoomModel=n};function c(e,t){var n=e.getAxisModel(),i=e._percentWindow,o=e._valueWindow;if(i){var a=r.getPixelPrecision(o,[0,500]);a=Math.min(a,20);var s=t||0===i[0]&&100===i[1];n.setRange(s?null:+o[0].toFixed(a),s?null:+o[1].toFixed(a))}}u.prototype={constructor:u,hostedBy:function(e){return this._dataZoomModel===e},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var e=[],t=this.ecModel;return t.eachSeries(function(n){if(o.isCoordSupported(n.get(\"coordinateSystem\"))){var i=this._dimName,r=t.queryComponents({mainType:i+\"Axis\",index:n.get(i+\"AxisIndex\"),id:n.get(i+\"AxisId\")})[0];this._axisIndex===(r&&r.componentIndex)&&e.push(n)}},this),e},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+\"Axis\",this._axisIndex)},getOtherAxisModel:function(){var e,t,n,i=this._dimName,r=this.ecModel,o=this.getAxisModel();return\"x\"===i||\"y\"===i?(t=\"gridIndex\",e=\"x\"===i?\"y\":\"x\"):(t=\"polarIndex\",e=\"angle\"===i?\"radius\":\"angle\"),r.eachComponent(e+\"Axis\",function(e){(e.get(t)||0)===(o.get(t)||0)&&(n=e)}),n},getMinMaxSpan:function(){return i.clone(this._minMaxSpan)},calculateDataWindow:function(e){var t,n=this._dataExtent,i=this.getAxisModel().axis.scale,o=this._dataZoomModel.getRangePropMode(),u=[0,100],c=[],h=[];s([\"start\",\"end\"],function(a,s){var l=e[a],d=e[a+\"Value\"];\"percent\"===o[s]?(null==l&&(l=u[s]),d=i.parse(r.linearMap(l,u,n))):(t=!0,d=null==d?n[s]:i.parse(d),l=r.linearMap(d,n,u)),h[s]=d,c[s]=l}),l(h),l(c);var d=this._minMaxSpan;function f(e,t,n,o,s){var l=s?\"Span\":\"ValueSpan\";a(0,e,n,\"all\",d[\"min\"+l],d[\"max\"+l]);for(var u=0;u<2;u++)t[u]=r.linearMap(e[u],n,o,!0),s&&(t[u]=i.parse(t[u]))}return t?f(h,c,n,u,!1):f(c,h,u,n,!0),{valueWindow:h,percentWindow:c}},reset:function(e){if(e===this._dataZoomModel){var t=this.getTargetSeriesModels();this._dataExtent=function(e,t,n){var i=[1/0,-1/0];s(n,function(e){var n=e.getData();n&&s(n.mapDimension(t,!0),function(e){var t=n.getApproximateExtent(e);t[0]<i[0]&&(i[0]=t[0]),t[1]>i[1]&&(i[1]=t[1])})}),i[1]<i[0]&&(i=[NaN,NaN]);return function(e,t){var n=e.getAxisModel(),i=n.getMin(!0),r=\"category\"===n.get(\"type\"),o=r&&n.getCategories().length;null!=i&&\"dataMin\"!==i&&\"function\"!=typeof i?t[0]=i:r&&(t[0]=o>0?0:NaN);var a=n.getMax(!0);null!=a&&\"dataMax\"!==a&&\"function\"!=typeof a?t[1]=a:r&&(t[1]=o>0?o-1:NaN),n.get(\"scale\",!0)||(t[0]>0&&(t[0]=0),t[1]<0&&(t[1]=0))}(e,i),i}(this,this._dimName,t),function(e){var t=e._minMaxSpan={},n=e._dataZoomModel,i=e._dataExtent;s([\"min\",\"max\"],function(o){var a=n.get(o+\"Span\"),s=n.get(o+\"ValueSpan\");null!=s&&(s=e.getAxisModel().axis.scale.parse(s)),null!=s?a=r.linearMap(i[0]+s,i,[0,100],!0):null!=a&&(s=r.linearMap(a,[0,100],i,!0)-i[0]),t[o+\"Span\"]=a,t[o+\"ValueSpan\"]=s})}(this);var n=this.calculateDataWindow(e.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,c(this)}},restore:function(e){e===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,c(this,!0))},filterData:function(e,t){if(e===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=e.get(\"filterMode\"),o=this._valueWindow;\"none\"!==r&&s(i,function(e){var t=e.getData(),i=t.mapDimension(n,!0);i.length&&(\"weakFilter\"===r?t.filterSelf(function(e){for(var n,r,a,s=0;s<i.length;s++){var l=t.get(i[s],e),u=!isNaN(l),c=l<o[0],h=l>o[1];if(u&&!c&&!h)return!0;u&&(a=!0),c&&(n=!0),h&&(r=!0)}return a&&n&&r}):s(i,function(n){if(\"empty\"===r)e.setData(t=t.map(n,function(e){return function(e){return e>=o[0]&&e<=o[1]}(e)?e:NaN}));else{var i={};i[n]=o,t.selectRange(i)}}),s(i,function(e){t.setApproximateExtent(o,e)}))})}}};var h=u;e.exports=h},GbHy:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"m/6y\"),a=o.layout,s=o.largeLayout;n(\"5vFd\"),n(\"DPh+\"),n(\"eHPu\"),n(\"UkNE\"),i.registerLayout(i.PRIORITY.VISUAL.LAYOUT,r.curry(a,\"bar\")),i.registerLayout(i.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,s),i.registerVisual({seriesType:\"bar\",reset:function(e){e.getData().setVisual(\"legendSymbol\",\"roundRect\")}})},GegP:function(e,t){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=119)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},119:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-progress\",class:[\"el-progress--\"+e.type,e.status?\"is-\"+e.status:\"\",{\"el-progress--without-text\":!e.showText,\"el-progress--text-inside\":e.textInside}],attrs:{role:\"progressbar\",\"aria-valuenow\":e.percentage,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"}},[\"line\"===e.type?n(\"div\",{staticClass:\"el-progress-bar\"},[n(\"div\",{staticClass:\"el-progress-bar__outer\",style:{height:e.strokeWidth+\"px\"}},[n(\"div\",{staticClass:\"el-progress-bar__inner\",style:e.barStyle},[e.showText&&e.textInside?n(\"div\",{staticClass:\"el-progress-bar__innerText\"},[e._v(e._s(e.content))]):e._e()])])]):n(\"div\",{staticClass:\"el-progress-circle\",style:{height:e.width+\"px\",width:e.width+\"px\"}},[n(\"svg\",{attrs:{viewBox:\"0 0 100 100\"}},[n(\"path\",{staticClass:\"el-progress-circle__track\",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:\"#e5e9f2\",\"stroke-width\":e.relativeStrokeWidth,fill:\"none\"}}),n(\"path\",{staticClass:\"el-progress-circle__path\",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:\"none\",\"stroke-linecap\":e.strokeLinecap,\"stroke-width\":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?n(\"div\",{staticClass:\"el-progress__text\",style:{fontSize:e.progressTextSize+\"px\"}},[e.status?n(\"i\",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};i._withStripped=!0;var r={name:\"ElProgress\",props:{type:{type:String,default:\"line\",validator:function(e){return[\"line\",\"circle\",\"dashboard\"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return[\"success\",\"exception\",\"warning\"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:\"round\"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:\"\"},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+\"%\",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return\"circle\"===this.type||\"dashboard\"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t=\"dashboard\"===this.type;return\"\\n        M 50 50\\n        m 0 \"+(t?\"\":\"-\")+e+\"\\n        a \"+e+\" \"+e+\" 0 1 1 0 \"+(t?\"-\":\"\")+2*e+\"\\n        a \"+e+\" \"+e+\" 0 1 1 0 \"+(t?\"\":\"-\")+2*e+\"\\n        \"},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return\"dashboard\"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+\"px\"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+\"px, \"+this.perimeter+\"px\",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+\"px, \"+this.perimeter+\"px\",strokeDashoffset:this.strokeDashoffset,transition:\"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease\"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case\"success\":e=\"#13ce66\";break;case\"exception\":e=\"#ff4949\";break;case\"warning\":e=\"#e6a23c\";break;default:e=\"#20a0ff\"}return e},iconClass:function(){return\"warning\"===this.status?\"el-icon-warning\":\"line\"===this.type?\"success\"===this.status?\"el-icon-circle-check\":\"el-icon-circle-close\":\"success\"===this.status?\"el-icon-check\":\"el-icon-close\"},progressTextSize:function(){return\"line\"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return\"function\"==typeof this.format?this.format(this.percentage)||\"\":this.percentage+\"%\"}},methods:{getCurrentColor:function(e){return\"function\"==typeof this.color?this.color(e):\"string\"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),n=0;n<t.length;n++)if(t[n].percentage>e)return t[n].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,n){return\"string\"==typeof e?{color:e,progress:(n+1)*t}:e})}}},o=n(0),a=Object(o.a)(r,i,[],!1,null,null,null);a.options.__file=\"packages/progress/src/progress.vue\";var s=a.exports;s.install=function(e){e.component(s.name,s)};t.default=s}})},Gevp:function(e,t,n){var i=n(\"EJsE\"),r=n(\"/gZK\"),o=n(\"/gxq\"),a=n(\"HHfb\").encodeHTML,s=n(\"FCaW\"),l=i.extend({type:\"series.radar\",dependencies:[\"radar\"],init:function(e){l.superApply(this,\"init\",arguments),this.legendVisualProvider=new s(o.bind(this.getData,this),o.bind(this.getRawData,this))},getInitialData:function(e,t){return r(this,{generateCoord:\"indicator_\",generateCoordCount:1/0})},formatTooltip:function(e){var t=this.getData(),n=this.coordinateSystem.getIndicatorAxes(),i=this.getData().getName(e);return a(\"\"===i?this.name:i)+\"<br/>\"+o.map(n,function(n,i){var r=t.get(t.mapDimension(n.dim),e);return a(n.name+\" : \"+r)}).join(\"<br />\")},getTooltipPosition:function(e){if(null!=e)for(var t=this.getData(),n=this.coordinateSystem,i=t.getValues(o.map(n.dimensions,function(e){return t.mapDimension(e)}),e,!0),r=0,a=i.length;r<a;r++)if(!isNaN(i[r])){var s=n.getIndicatorAxes();return n.coordToPoint(s[r].dataToCoord(i[r]),r)}},defaultOption:{zlevel:0,z:2,coordinateSystem:\"radar\",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:\"solid\"},label:{position:\"top\"},symbol:\"emptyCircle\",symbolSize:4}}),u=l;e.exports=u},GnMB:function(e,t,n){var i=n(\"/gxq\"),r=n(\"kK7q\").createSymbol,o=n(\"0sHC\").Group,a=n(\"wWR3\").parsePercent,s=n(\"1bHA\");function l(e,t){var n=t.rippleEffectColor||t.color;e.eachChild(function(e){e.attr({z:t.z,zlevel:t.zlevel,style:{stroke:\"stroke\"===t.brushType?n:null,fill:\"fill\"===t.brushType?n:null}})})}function u(e,t){o.call(this);var n=new s(e,t),i=new o;this.add(n),this.add(i),i.beforeUpdate=function(){this.attr(n.getScale())},this.updateData(e,t)}var c=u.prototype;c.stopEffectAnimation=function(){this.childAt(1).removeAll()},c.startEffectAnimation=function(e){for(var t=e.symbolType,n=e.color,i=this.childAt(1),o=0;o<3;o++){var a=r(t,-1,-1,2,2,n);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var s=-o/3*e.period+e.effectOffset;a.animate(\"\",!0).when(e.period,{scale:[e.rippleScale/2,e.rippleScale/2]}).delay(s).start(),a.animateStyle(!0).when(e.period,{opacity:0}).delay(s).start(),i.add(a)}l(i,e)},c.updateEffectAnimation=function(e){for(var t=this._effectCfg,n=this.childAt(1),i=[\"symbolType\",\"period\",\"rippleScale\"],r=0;r<i.length;r++){var o=i[r];if(t[o]!==e[o])return this.stopEffectAnimation(),void this.startEffectAnimation(e)}l(n,e)},c.highlight=function(){this.trigger(\"emphasis\")},c.downplay=function(){this.trigger(\"normal\")},c.updateData=function(e,t){var n=e.hostModel;this.childAt(0).updateData(e,t);var r=this.childAt(1),o=e.getItemModel(t),s=e.getItemVisual(t,\"symbol\"),l=function(e){return i.isArray(e)||(e=[+e,+e]),e}(e.getItemVisual(t,\"symbolSize\")),u=e.getItemVisual(t,\"color\");r.attr(\"scale\",l),r.traverse(function(e){e.attr({fill:u})});var c=o.getShallow(\"symbolOffset\");if(c){var h=r.position;h[0]=a(c[0],l[0]),h[1]=a(c[1],l[1])}var d=e.getItemVisual(t,\"symbolRotate\");r.rotation=(d||0)*Math.PI/180||0;var f={};if(f.showEffectOn=n.get(\"showEffectOn\"),f.rippleScale=o.get(\"rippleEffect.scale\"),f.brushType=o.get(\"rippleEffect.brushType\"),f.period=1e3*o.get(\"rippleEffect.period\"),f.effectOffset=t/e.count(),f.z=o.getShallow(\"z\")||0,f.zlevel=o.getShallow(\"zlevel\")||0,f.symbolType=s,f.color=u,f.rippleEffectColor=o.get(\"rippleEffect.color\"),this.off(\"mouseover\").off(\"mouseout\").off(\"emphasis\").off(\"normal\"),\"render\"===f.showEffectOn)this._effectCfg?this.updateEffectAnimation(f):this.startEffectAnimation(f),this._effectCfg=f;else{this._effectCfg=null,this.stopEffectAnimation();var p=this.childAt(0),g=function(){p.highlight(),\"render\"!==f.showEffectOn&&this.startEffectAnimation(f)},m=function(){p.downplay(),\"render\"!==f.showEffectOn&&this.stopEffectAnimation()};this.on(\"mouseover\",g,this).on(\"mouseout\",m,this).on(\"emphasis\",g,this).on(\"normal\",m,this)}this._effectCfg=f},c.fadeOut=function(e){this.off(\"mouseover\").off(\"mouseout\").off(\"emphasis\").off(\"normal\"),e&&e()},i.inherits(u,o);var h=u;e.exports=h},Goha:function(e,t,n){var i=n(\"AAi1\"),r=n(\"C7PF\"),o=n(\"hD/x\").getSymbolSize,a=[],s=[],l=[],u=i.quadraticAt,c=r.distSquare,h=Math.abs;function d(e,t,n){for(var i,r=e[0],o=e[1],d=e[2],f=1/0,p=n*n,g=.1,m=.1;m<=.9;m+=.1){a[0]=u(r[0],o[0],d[0],m),a[1]=u(r[1],o[1],d[1],m),(b=h(c(a,t)-p))<f&&(f=b,i=m)}for(var v=0;v<32;v++){var y=i+g;s[0]=u(r[0],o[0],d[0],i),s[1]=u(r[1],o[1],d[1],i),l[0]=u(r[0],o[0],d[0],y),l[1]=u(r[1],o[1],d[1],y);var b=c(s,t)-p;if(h(b)<.01)break;var x=c(l,t)-p;g/=2,b<0?x>=0?i+=g:i-=g:x>=0?i-=g:i+=g}return i}e.exports=function(e,t){var n=[],a=i.quadraticSubdivide,s=[[],[],[]],l=[[],[]],u=[];t/=2,e.eachEdge(function(e,i){var c=e.getLayout(),h=e.getVisual(\"fromSymbol\"),f=e.getVisual(\"toSymbol\");c.__original||(c.__original=[r.clone(c[0]),r.clone(c[1])],c[2]&&c.__original.push(r.clone(c[2])));var p=c.__original;if(null!=c[2]){if(r.copy(s[0],p[0]),r.copy(s[1],p[2]),r.copy(s[2],p[1]),h&&\"none\"!==h){var g=o(e.node1),m=d(s,p[0],g*t);a(s[0][0],s[1][0],s[2][0],m,n),s[0][0]=n[3],s[1][0]=n[4],a(s[0][1],s[1][1],s[2][1],m,n),s[0][1]=n[3],s[1][1]=n[4]}f&&\"none\"!==f&&(g=o(e.node2),m=d(s,p[1],g*t),a(s[0][0],s[1][0],s[2][0],m,n),s[1][0]=n[1],s[2][0]=n[2],a(s[0][1],s[1][1],s[2][1],m,n),s[1][1]=n[1],s[2][1]=n[2]),r.copy(c[0],s[0]),r.copy(c[1],s[2]),r.copy(c[2],s[1])}else r.copy(l[0],p[0]),r.copy(l[1],p[1]),r.sub(u,l[1],l[0]),r.normalize(u,u),h&&\"none\"!==h&&(g=o(e.node1),r.scaleAndAdd(l[0],l[0],u,g*t)),f&&\"none\"!==f&&(g=o(e.node2),r.scaleAndAdd(l[1],l[1],u,-g*t)),r.copy(c[0],l[0]),r.copy(c[1],l[1])})}},Gp87:function(e,t,n){var i=n(\"Pgdp\").extend({type:\"timeline\"});e.exports=i},Gw4f:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wRzc\"),o=function(e,t,n,i,o,a){this.x=null==e?0:e,this.y=null==t?0:t,this.x2=null==n?1:n,this.y2=null==i?0:i,this.type=\"linear\",this.global=a||!1,r.call(this,o)};o.prototype={constructor:o},i.inherits(o,r);var a=o;e.exports=a},GxVO:function(e,t,n){var i=n(\"9qnA\"),r=n(\"/gxq\"),o=n(\"moDv\"),a=n(\"2M5Q\"),s=n(\"dZ2L\").prototype.getCanvasPattern,l=Math.abs,u=new o(!0);function c(e){i.call(this,e),this.path=null}c.prototype={constructor:c,type:\"path\",__dirtyPath:!0,strokeContainThreshold:5,segmentIgnoreThreshold:0,subPixelOptimize:!1,brush:function(e,t){var n,i=this.style,r=this.path||u,o=i.hasStroke(),a=i.hasFill(),l=i.fill,c=i.stroke,h=a&&!!l.colorStops,d=o&&!!c.colorStops,f=a&&!!l.image,p=o&&!!c.image;(i.bind(e,this,t),this.setTransform(e),this.__dirty)&&(h&&(n=n||this.getBoundingRect(),this._fillGradient=i.getGradient(e,l,n)),d&&(n=n||this.getBoundingRect(),this._strokeGradient=i.getGradient(e,c,n)));h?e.fillStyle=this._fillGradient:f&&(e.fillStyle=s.call(l,e)),d?e.strokeStyle=this._strokeGradient:p&&(e.strokeStyle=s.call(c,e));var g=i.lineDash,m=i.lineDashOffset,v=!!e.setLineDash,y=this.getGlobalScale();if(r.setScale(y[0],y[1],this.segmentIgnoreThreshold),this.__dirtyPath||g&&!v&&o?(r.beginPath(e),g&&!v&&(r.setLineDash(g),r.setLineDashOffset(m)),this.buildPath(r,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(e.beginPath(),this.path.rebuildPath(e)),a)if(null!=i.fillOpacity){var b=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,r.fill(e),e.globalAlpha=b}else r.fill(e);if(g&&v&&(e.setLineDash(g),e.lineDashOffset=m),o)if(null!=i.strokeOpacity){b=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,r.stroke(e),e.globalAlpha=b}else r.stroke(e);g&&v&&e.setLineDash([]),null!=i.text&&(this.restoreTransform(e),this.drawRectText(e,this.getBoundingRect()))},buildPath:function(e,t,n){},createPathProxy:function(){this.path=new o},getBoundingRect:function(){var e=this._rect,t=this.style,n=!e;if(n){var i=this.path;i||(i=this.path=new o),this.__dirtyPath&&(i.beginPath(),this.buildPath(i,this.shape,!1)),e=i.getBoundingRect()}if(this._rect=e,t.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=e.clone());if(this.__dirty||n){r.copy(e);var a=t.lineWidth,s=t.strokeNoScale?this.getLineScale():1;t.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),s>1e-10&&(r.width+=a/s,r.height+=a/s,r.x-=a/s/2,r.y-=a/s/2)}return r}return e},contain:function(e,t){var n=this.transformCoordToLocal(e,t),i=this.getBoundingRect(),r=this.style;if(e=n[0],t=n[1],i.contain(e,t)){var o=this.path.data;if(r.hasStroke()){var s=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(s=Math.max(s,this.strokeContainThreshold)),a.containStroke(o,s/l,e,t)))return!0}if(r.hasFill())return a.contain(o,e,t)}return!1},dirty:function(e){null==e&&(e=!0),e&&(this.__dirtyPath=e,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(e){return this.animate(\"shape\",e)},attrKV:function(e,t){\"shape\"===e?(this.setShape(t),this.__dirtyPath=!0,this._rect=null):i.prototype.attrKV.call(this,e,t)},setShape:function(e,t){var n=this.shape;if(n){if(r.isObject(e))for(var i in e)e.hasOwnProperty(i)&&(n[i]=e[i]);else n[e]=t;this.dirty(!0)}return this},getLineScale:function(){var e=this.transform;return e&&l(e[0]-1)>1e-10&&l(e[3]-1)>1e-10?Math.sqrt(l(e[0]*e[3]-e[2]*e[1])):1}},c.extend=function(e){var t=function(t){c.call(this,t),e.style&&this.style.extendFrom(e.style,!1);var n=e.shape;if(n){this.shape=this.shape||{};var i=this.shape;for(var r in n)!i.hasOwnProperty(r)&&n.hasOwnProperty(r)&&(i[r]=n[r])}e.init&&e.init.call(this,t)};for(var n in r.inherits(t,c),e)\"style\"!==n&&\"shape\"!==n&&(t.prototype[n]=e[n]);return t},r.inherits(c,i);var h=c;e.exports=h},H4Od:function(e,t,n){var i=n(\"/gxq\"),r=n(\"C7PF\"),o=n(\"dOVI\"),a=n(\"8b51\"),s=n(\"/ZBO\"),l=r.applyTransform;function u(){s.call(this)}function c(e){this.name=e,this.zoomLimit,s.call(this),this._roamTransformable=new u,this._rawTransformable=new u,this._center,this._zoom}function h(e,t,n,i){var r=n.seriesModel,o=r?r.coordinateSystem:null;return o===this?o[e](i):null}i.mixin(u,s),c.prototype={constructor:c,type:\"view\",dimensions:[\"x\",\"y\"],setBoundingRect:function(e,t,n,i){return this._rect=new a(e,t,n,i),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(e,t,n,i){this.transformTo(e,t,n,i),this._viewRect=new a(e,t,n,i)},transformTo:function(e,t,n,i){var r=this.getBoundingRect(),o=this._rawTransformable;o.transform=r.calculateTransform(new a(e,t,n,i)),o.decomposeTransform(),this._updateTransform()},setCenter:function(e){e&&(this._center=e,this._updateCenterAndZoom())},setZoom:function(e){e=e||1;var t=this.zoomLimit;t&&(null!=t.max&&(e=Math.min(t.max,e)),null!=t.min&&(e=Math.max(t.min,e))),this._zoom=e,this._updateCenterAndZoom()},getDefaultCenter:function(){var e=this.getBoundingRect();return[e.x+e.width/2,e.y+e.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var e=this._rawTransformable.getLocalTransform(),t=this._roamTransformable,n=this.getDefaultCenter(),i=this.getCenter(),o=this.getZoom();i=r.applyTransform([],i,e),n=r.applyTransform([],n,e),t.origin=i,t.position=[n[0]-i[0],n[1]-i[1]],t.scale=[o,o],this._updateTransform()},_updateTransform:function(){var e=this._roamTransformable,t=this._rawTransformable;t.parent=e,e.updateTransform(),t.updateTransform(),o.copy(this.transform||(this.transform=[]),t.transform||o.create()),this._rawTransform=t.getLocalTransform(),this.invTransform=this.invTransform||[],o.invert(this.invTransform,this.transform),this.decomposeTransform()},getTransformInfo:function(){var e=this._roamTransformable.transform,t=this._rawTransformable;return{roamTransform:e?i.slice(e):o.create(),rawScale:i.slice(t.scale),rawPosition:i.slice(t.position)}},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var e=this.getBoundingRect().clone();return e.applyTransform(this.transform),e},dataToPoint:function(e,t,n){var i=t?this._rawTransform:this.transform;return n=n||[],i?l(n,e,i):r.copy(n,e)},pointToData:function(e){var t=this.invTransform;return t?l([],e,t):[e[0],e[1]]},convertToPixel:i.curry(h,\"dataToPoint\"),convertFromPixel:i.curry(h,\"pointToData\"),containPoint:function(e){return this.getViewRectAfterRoam().contain(e[0],e[1])}},i.mixin(c,s);var d=c;e.exports=d},H4Wn:function(e,t,n){n(\"Icdr\").registerAction({type:\"selectDataRange\",event:\"dataRangeSelected\",update:\"update\"},function(e,t){t.eachComponent({mainType:\"visualMap\",query:e},function(t){t.setSelected(e.selected)})})},H8dH:function(e,t,n){\"use strict\";t.__esModule=!0,t.default=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error(\"instance & callback is required\");var r=!1,o=function(){r||(r=!0,t&&t.apply(null,arguments))};i?e.$once(\"after-leave\",o):e.$on(\"after-leave\",o),setTimeout(function(){o()},n+100)}},HGSA:function(e,t,n){var i=n(\"/gxq\"),r=n(\"DRaW\"),o=n(\"wWR3\").linearMap,a=i.each,s=i.isObject,l=-1,u=function(e){var t=e.mappingMethod,n=e.type,r=this.option=i.clone(e);this.type=n,this.mappingMethod=t,this._normalizeData=x[t];var o=c[n];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._doMap=o._doMap[t],\"piecewise\"===t?(h(r),function(e){var t=e.pieceList;e.hasSpecialVisual=!1,i.each(t,function(t,n){t.originIndex=n,null!=t.visual&&(e.hasSpecialVisual=!0)})}(r)):\"category\"===t?r.categories?function(e){var t=e.categories,n=e.visual,r=e.categoryMap={};if(a(t,function(e,t){r[e]=t}),!i.isArray(n)){var o=[];i.isObject(n)?a(n,function(e,t){var n=r[t];o[null!=n?n:l]=e}):o[l]=n,n=b(e,o)}for(var s=t.length-1;s>=0;s--)null==n[s]&&(delete r[t[s]],t.pop())}(r):h(r,!0):(i.assert(\"linear\"!==t||r.dataExtent),h(r))};u.prototype={constructor:u,mapValueToVisual:function(e){var t=this._normalizeData(e);return this._doMap(t,e)},getNormalizer:function(){return i.bind(this._normalizeData,this)}};var c=u.visualHandlers={color:{applyVisual:p(\"color\"),getColorMapper:function(){var e=this.option;return i.bind(\"category\"===e.mappingMethod?function(e,t){return!t&&(e=this._normalizeData(e)),g.call(this,e)}:function(t,n,i){var o=!!i;return!n&&(t=this._normalizeData(t)),i=r.fastLerp(t,e.parsedVisual,i),o?i:r.stringify(i,\"rgba\")},this)},_doMap:{linear:function(e){return r.stringify(r.fastLerp(e,this.option.parsedVisual),\"rgba\")},category:g,piecewise:function(e,t){var n=y.call(this,t);return null==n&&(n=r.stringify(r.fastLerp(e,this.option.parsedVisual),\"rgba\")),n},fixed:m}},colorHue:d(function(e,t){return r.modifyHSL(e,t)}),colorSaturation:d(function(e,t){return r.modifyHSL(e,null,t)}),colorLightness:d(function(e,t){return r.modifyHSL(e,null,null,t)}),colorAlpha:d(function(e,t){return r.modifyAlpha(e,t)}),opacity:{applyVisual:p(\"opacity\"),_doMap:v([0,1])},liftZ:{applyVisual:p(\"liftZ\"),_doMap:{linear:m,category:m,piecewise:m,fixed:m}},symbol:{applyVisual:function(e,t,n){var r=this.mapValueToVisual(e);if(i.isString(r))n(\"symbol\",r);else if(s(r))for(var o in r)r.hasOwnProperty(o)&&n(o,r[o])},_doMap:{linear:f,category:g,piecewise:function(e,t){var n=y.call(this,t);return null==n&&(n=f.call(this,e)),n},fixed:m}},symbolSize:{applyVisual:p(\"symbolSize\"),_doMap:v([0,1])}};function h(e,t){var n=e.visual,r=[];i.isObject(n)?a(n,function(e){r.push(e)}):null!=n&&r.push(n);t||1!==r.length||{color:1,symbol:1}.hasOwnProperty(e.type)||(r[1]=r[0]),b(e,r)}function d(e){return{applyVisual:function(t,n,i){t=this.mapValueToVisual(t),i(\"color\",e(n(\"color\"),t))},_doMap:v([0,1])}}function f(e){var t=this.option.visual;return t[Math.round(o(e,[0,1],[0,t.length-1],!0))]||{}}function p(e){return function(t,n,i){i(e,this.mapValueToVisual(t))}}function g(e){var t=this.option.visual;return t[this.option.loop&&e!==l?e%t.length:e]}function m(){return this.option.visual[0]}function v(e){return{linear:function(t){return o(t,e,this.option.visual,!0)},category:g,piecewise:function(t,n){var i=y.call(this,n);return null==i&&(i=o(t,e,this.option.visual,!0)),i},fixed:m}}function y(e){var t=this.option,n=t.pieceList;if(t.hasSpecialVisual){var i=n[u.findPieceIndex(e,n)];if(i&&i.visual)return i.visual[this.type]}}function b(e,t){return e.visual=t,\"color\"===e.type&&(e.parsedVisual=i.map(t,function(e){return r.parse(e)})),t}var x={linear:function(e){return o(e,this.option.dataExtent,[0,1],!0)},piecewise:function(e){var t=this.option.pieceList,n=u.findPieceIndex(e,t,!0);if(null!=n)return o(n,[0,t.length-1],[0,1],!0)},category:function(e){var t=this.option.categories?this.option.categoryMap[e]:e;return null==t?l:t},fixed:i.noop};function _(e,t,n){return e?t<=n:t<n}u.listVisualTypes=function(){var e=[];return i.each(c,function(t,n){e.push(n)}),e},u.addVisualHandler=function(e,t){c[e]=t},u.isValidType=function(e){return c.hasOwnProperty(e)},u.eachVisual=function(e,t,n){i.isObject(e)?i.each(e,t,n):t.call(n,e)},u.mapVisual=function(e,t,n){var r,o=i.isArray(e)?[]:i.isObject(e)?{}:(r=!0,null);return u.eachVisual(e,function(e,i){var a=t.call(n,e,i);r?o=a:o[i]=a}),o},u.retrieveVisuals=function(e){var t,n={};return e&&a(c,function(i,r){e.hasOwnProperty(r)&&(n[r]=e[r],t=!0)}),t?n:null},u.prepareVisualTypes=function(e){if(s(e)){var t=[];a(e,function(e,n){t.push(n)}),e=t}else{if(!i.isArray(e))return[];e=e.slice()}return e.sort(function(e,t){return\"color\"===t&&\"color\"!==e&&0===e.indexOf(\"color\")?1:-1}),e},u.dependsOn=function(e,t){return\"color\"===t?!(!e||0!==e.indexOf(t)):e===t},u.findPieceIndex=function(e,t,n){for(var i,r=1/0,o=0,a=t.length;o<a;o++){var s=t[o].value;if(null!=s){if(s===e||\"string\"==typeof s&&s===e+\"\")return o;n&&h(s,o)}}for(o=0,a=t.length;o<a;o++){var l=t[o],u=l.interval,c=l.close;if(u){if(u[0]===-1/0){if(_(c[1],e,u[1]))return o}else if(u[1]===1/0){if(_(c[0],u[0],e))return o}else if(_(c[0],u[0],e)&&_(c[1],e,u[1]))return o;n&&h(u[0],o),n&&h(u[1],o)}}if(n)return e===1/0?t.length-1:e===-1/0?0:i;function h(t,n){var o=Math.abs(t-e);o<r&&(r=o,i=n)}};var w=u;e.exports=w},HHfb:function(e,t,n){var i=n(\"/gxq\"),r=n(\"3h1/\"),o=n(\"wWR3\");var a=i.normalizeCssArray,s=/([&<>\"'])/g,l={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"};function u(e){return null==e?\"\":(e+\"\").replace(s,function(e,t){return l[t]})}var c=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\"],h=function(e,t){return\"{\"+e+(null==t?\"\":t)+\"}\"};function d(e,t){return\"0000\".substr(0,t-(e+=\"\").length)+e}var f=r.truncateText;t.addCommas=function(e){return isNaN(e)?\"-\":(e=(e+\"\").split(\".\"))[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g,\"$1,\")+(e.length>1?\".\"+e[1]:\"\")},t.toCamelCase=function(e,t){return e=(e||\"\").toLowerCase().replace(/-(.)/g,function(e,t){return t.toUpperCase()}),t&&e&&(e=e.charAt(0).toUpperCase()+e.slice(1)),e},t.normalizeCssArray=a,t.encodeHTML=u,t.formatTpl=function(e,t,n){i.isArray(t)||(t=[t]);var r=t.length;if(!r)return\"\";for(var o=t[0].$vars||[],a=0;a<o.length;a++){var s=c[a];e=e.replace(h(s),h(s,0))}for(var l=0;l<r;l++)for(var d=0;d<o.length;d++){var f=t[l][o[d]];e=e.replace(h(c[d],l),n?u(f):f)}return e},t.formatTplSimple=function(e,t,n){return i.each(t,function(t,i){e=e.replace(\"{\"+i+\"}\",n?u(t):t)}),e},t.getTooltipMarker=function(e,t){var n=(e=i.isString(e)?{color:e,extraCssText:t}:e||{}).color,r=e.type,o=(t=e.extraCssText,e.renderMode||\"html\"),a=e.markerId||\"X\";return n?\"html\"===o?\"subItem\"===r?'<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:'+u(n)+\";\"+(t||\"\")+'\"></span>':'<span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:'+u(n)+\";\"+(t||\"\")+'\"></span>':{renderMode:o,content:\"{marker\"+a+\"|}  \",style:{color:n}}:\"\"},t.formatTime=function(e,t,n){\"week\"!==e&&\"month\"!==e&&\"quarter\"!==e&&\"half-year\"!==e&&\"year\"!==e||(e=\"MM-dd\\nyyyy\");var i=o.parseDate(t),r=n?\"UTC\":\"\",a=i[\"get\"+r+\"FullYear\"](),s=i[\"get\"+r+\"Month\"]()+1,l=i[\"get\"+r+\"Date\"](),u=i[\"get\"+r+\"Hours\"](),c=i[\"get\"+r+\"Minutes\"](),h=i[\"get\"+r+\"Seconds\"](),f=i[\"get\"+r+\"Milliseconds\"]();return e=e.replace(\"MM\",d(s,2)).replace(\"M\",s).replace(\"yyyy\",a).replace(\"yy\",a%100).replace(\"dd\",d(l,2)).replace(\"d\",l).replace(\"hh\",d(u,2)).replace(\"h\",u).replace(\"mm\",d(c,2)).replace(\"m\",c).replace(\"ss\",d(h,2)).replace(\"s\",h).replace(\"SSS\",d(f,3))},t.capitalFirst=function(e){return e?e.charAt(0).toUpperCase()+e.substr(1):e},t.truncateText=f,t.getTextBoundingRect=function(e){return r.getBoundingRect(e.text,e.font,e.textAlign,e.textVerticalAlign,e.textPadding,e.textLineHeight,e.rich,e.truncate)},t.getTextRect=function(e,t,n,i,o,a,s,l){return r.getBoundingRect(e,t,n,i,o,l,a,s)},t.windowOpen=function(e,t){if(\"_blank\"===t||\"blank\"===t){var n=window.open();n.opener=null,n.location=e}else window.open(e,t)}},HI0L:function(e,t,n){var i;\"undefined\"!=typeof self&&self,i=function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=23)}([function(e,t,n){(function(i){function r(){var e;try{e=t.storage.debug}catch(e){}return!e&&void 0!==i&&\"env\"in i&&(e=i.env.DEBUG),e}(t=e.exports=n(26)).log=function(){return\"object\"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(e){var n=this.useColors;if(e[0]=(n?\"%c\":\"\")+this.namespace+(n?\" %c\":\" \")+e[0]+(n?\"%c \":\" \")+\"+\"+t.humanize(this.diff),n){var i=\"color: \"+this.color;e.splice(1,0,i,\"color: inherit\");var r=0,o=0;e[0].replace(/%[a-zA-Z%]/g,function(e){\"%%\"!==e&&(\"%c\"===e&&(o=++r))}),e.splice(o,0,i)}},t.save=function(e){try{null==e?t.storage.removeItem(\"debug\"):t.storage.debug=e}catch(e){}},t.load=r,t.useColors=function(){return!(\"undefined\"==typeof window||!window.process||\"renderer\"!==window.process.type)||(\"undefined\"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))&&(\"undefined\"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||\"undefined\"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))},t.storage=\"undefined\"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}},t.enable(r())}).call(this,n(25))},function(e,t,n){function i(e){if(e)return function(e){for(var t in i.prototype)e[t]=i.prototype[t];return e}(e)}e.exports=i,i.prototype.on=i.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[\"$\"+e]=this._callbacks[\"$\"+e]||[]).push(t),this},i.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,i=this._callbacks[\"$\"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks[\"$\"+e],this;for(var r=0;r<i.length;r++)if((n=i[r])===t||n.fn===t){i.splice(r,1);break}return this},i.prototype.emit=function(e){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),n=this._callbacks[\"$\"+e];if(n)for(var i=0,r=(n=n.slice(0)).length;i<r;++i)n[i].apply(this,t);return this},i.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks[\"$\"+e]||[]},i.prototype.hasListeners=function(e){return!!this.listeners(e).length}},function(e,t,n){var i,r=n(36),o=n(16),a=n(37),s=n(38),l=n(39);\"undefined\"!=typeof ArrayBuffer&&(i=n(40));var u=\"undefined\"!=typeof navigator&&/Android/i.test(navigator.userAgent),c=\"undefined\"!=typeof navigator&&/PhantomJS/i.test(navigator.userAgent),h=u||c;t.protocol=3;var d=t.packets={open:0,close:1,ping:2,pong:3,message:4,upgrade:5,noop:6},f=r(d),p={type:\"error\",data:\"parser error\"},g=n(41);function m(e,t,n){for(var i=new Array(e.length),r=s(e.length,n),o=function(e,n,r){t(n,function(t,n){i[e]=n,r(t,i)})},a=0;a<e.length;a++)o(a,e[a],r)}t.encodePacket=function(e,n,i,r){\"function\"==typeof n&&(r=n,n=!1),\"function\"==typeof i&&(r=i,i=null);var o=void 0===e.data?void 0:e.data.buffer||e.data;if(\"undefined\"!=typeof ArrayBuffer&&o instanceof ArrayBuffer)return function(e,n,i){if(!n)return t.encodeBase64Packet(e,i);var r=e.data,o=new Uint8Array(r),a=new Uint8Array(1+r.byteLength);a[0]=d[e.type];for(var s=0;s<o.length;s++)a[s+1]=o[s];return i(a.buffer)}(e,n,r);if(void 0!==g&&o instanceof g)return function(e,n,i){if(!n)return t.encodeBase64Packet(e,i);if(h)return function(e,n,i){if(!n)return t.encodeBase64Packet(e,i);var r=new FileReader;return r.onload=function(){t.encodePacket({type:e.type,data:r.result},n,!0,i)},r.readAsArrayBuffer(e.data)}(e,n,i);var r=new Uint8Array(1);return r[0]=d[e.type],i(new g([r.buffer,e.data]))}(e,n,r);if(o&&o.base64)return function(e,n){return r(\"b\"+t.packets[e.type]+e.data.data)}(e);var a=d[e.type];return void 0!==e.data&&(a+=i?l.encode(String(e.data),{strict:!1}):String(e.data)),r(\"\"+a)},t.encodeBase64Packet=function(e,n){var i,r=\"b\"+t.packets[e.type];if(void 0!==g&&e.data instanceof g){var o=new FileReader;return o.onload=function(){var e=o.result.split(\",\")[1];n(r+e)},o.readAsDataURL(e.data)}try{i=String.fromCharCode.apply(null,new Uint8Array(e.data))}catch(t){for(var a=new Uint8Array(e.data),s=new Array(a.length),l=0;l<a.length;l++)s[l]=a[l];i=String.fromCharCode.apply(null,s)}return r+=btoa(i),n(r)},t.decodePacket=function(e,n,i){if(void 0===e)return p;if(\"string\"==typeof e){if(\"b\"===e.charAt(0))return t.decodeBase64Packet(e.substr(1),n);if(i&&!1===(e=function(e){try{e=l.decode(e,{strict:!1})}catch(e){return!1}return e}(e)))return p;var r=e.charAt(0);return Number(r)==r&&f[r]?e.length>1?{type:f[r],data:e.substring(1)}:{type:f[r]}:p}r=new Uint8Array(e)[0];var o=a(e,1);return g&&\"blob\"===n&&(o=new g([o])),{type:f[r],data:o}},t.decodeBase64Packet=function(e,t){var n=f[e.charAt(0)];if(!i)return{type:n,data:{base64:!0,data:e.substr(1)}};var r=i.decode(e.substr(1));return\"blob\"===t&&g&&(r=new g([r])),{type:n,data:r}},t.encodePayload=function(e,n,i){\"function\"==typeof n&&(i=n,n=null);var r=o(e);return n&&r?g&&!h?t.encodePayloadAsBlob(e,i):t.encodePayloadAsArrayBuffer(e,i):e.length?void m(e,function(e,i){t.encodePacket(e,!!r&&n,!1,function(e){i(null,function(e){return e.length+\":\"+e}(e))})},function(e,t){return i(t.join(\"\"))}):i(\"0:\")},t.decodePayload=function(e,n,i){if(\"string\"!=typeof e)return t.decodePayloadAsBinary(e,n,i);var r;if(\"function\"==typeof n&&(i=n,n=null),\"\"===e)return i(p,0,1);for(var o,a,s=\"\",l=0,u=e.length;l<u;l++){var c=e.charAt(l);if(\":\"===c){if(\"\"===s||s!=(o=Number(s)))return i(p,0,1);if(s!=(a=e.substr(l+1,o)).length)return i(p,0,1);if(a.length){if(r=t.decodePacket(a,n,!1),p.type===r.type&&p.data===r.data)return i(p,0,1);if(!1===i(r,l+o,u))return}l+=o,s=\"\"}else s+=c}return\"\"!==s?i(p,0,1):void 0},t.encodePayloadAsArrayBuffer=function(e,n){if(!e.length)return n(new ArrayBuffer(0));m(e,function(e,n){t.encodePacket(e,!0,!0,function(e){return n(null,e)})},function(e,t){var i=t.reduce(function(e,t){var n;return e+(n=\"string\"==typeof t?t.length:t.byteLength).toString().length+n+2},0),r=new Uint8Array(i),o=0;return t.forEach(function(e){var t=\"string\"==typeof e,n=e;if(t){for(var i=new Uint8Array(e.length),a=0;a<e.length;a++)i[a]=e.charCodeAt(a);n=i.buffer}r[o++]=t?0:1;var s=n.byteLength.toString();for(a=0;a<s.length;a++)r[o++]=parseInt(s[a]);for(r[o++]=255,i=new Uint8Array(n),a=0;a<i.length;a++)r[o++]=i[a]}),n(r.buffer)})},t.encodePayloadAsBlob=function(e,n){m(e,function(e,n){t.encodePacket(e,!0,!0,function(e){var t=new Uint8Array(1);if(t[0]=1,\"string\"==typeof e){for(var i=new Uint8Array(e.length),r=0;r<e.length;r++)i[r]=e.charCodeAt(r);e=i.buffer,t[0]=0}var o=(e instanceof ArrayBuffer?e.byteLength:e.size).toString(),a=new Uint8Array(o.length+1);for(r=0;r<o.length;r++)a[r]=parseInt(o[r]);if(a[o.length]=255,g){var s=new g([t.buffer,a.buffer,e]);n(null,s)}})},function(e,t){return n(new g(t))})},t.decodePayloadAsBinary=function(e,n,i){\"function\"==typeof n&&(i=n,n=null);for(var r=e,o=[];r.byteLength>0;){for(var s=new Uint8Array(r),l=0===s[0],u=\"\",c=1;255!==s[c];c++){if(u.length>310)return i(p,0,1);u+=s[c]}r=a(r,2+u.length),u=parseInt(u);var h=a(r,0,u);if(l)try{h=String.fromCharCode.apply(null,new Uint8Array(h))}catch(e){var d=new Uint8Array(h);for(h=\"\",c=0;c<d.length;c++)h+=String.fromCharCode(d[c])}o.push(h),r=a(r,u)}var f=o.length;o.forEach(function(e,r){i(t.decodePacket(e,n,!0),r,f)})}},function(e,t){t.encode=function(e){var t=\"\";for(var n in e)e.hasOwnProperty(n)&&(t.length&&(t+=\"&\"),t+=encodeURIComponent(n)+\"=\"+encodeURIComponent(e[n]));return t},t.decode=function(e){for(var t={},n=e.split(\"&\"),i=0,r=n.length;i<r;i++){var o=n[i].split(\"=\");t[decodeURIComponent(o[0])]=decodeURIComponent(o[1])}return t}},function(e,t){e.exports=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var i=n(0)(\"socket.io-parser\"),r=n(1),o=n(28),a=n(6),s=n(11);function l(){}t.protocol=4,t.types=[\"CONNECT\",\"DISCONNECT\",\"EVENT\",\"ACK\",\"ERROR\",\"BINARY_EVENT\",\"BINARY_ACK\"],t.CONNECT=0,t.DISCONNECT=1,t.EVENT=2,t.ACK=3,t.ERROR=4,t.BINARY_EVENT=5,t.BINARY_ACK=6,t.Encoder=l,t.Decoder=h;var u=t.ERROR+'\"encode error\"';function c(e){var n=\"\"+e.type;if(t.BINARY_EVENT!==e.type&&t.BINARY_ACK!==e.type||(n+=e.attachments+\"-\"),e.nsp&&\"/\"!==e.nsp&&(n+=e.nsp+\",\"),null!=e.id&&(n+=e.id),null!=e.data){var r=function(e){try{return JSON.stringify(e)}catch(e){return!1}}(e.data);if(!1===r)return u;n+=r}return i(\"encoded %j as %s\",e,n),n}function h(){this.reconstructor=null}function d(e){this.reconPack=e,this.buffers=[]}function f(e){return{type:t.ERROR,data:\"parser error: \"+e}}l.prototype.encode=function(e,n){i(\"encoding packet %j\",e),t.BINARY_EVENT===e.type||t.BINARY_ACK===e.type?function(e,t){o.removeBlobs(e,function(e){var n=o.deconstructPacket(e),i=c(n.packet),r=n.buffers;r.unshift(i),t(r)})}(e,n):n([c(e)])},r(h.prototype),h.prototype.add=function(e){var n;if(\"string\"==typeof e)n=function(e){var n=0,r={type:Number(e.charAt(0))};if(null==t.types[r.type])return f(\"unknown packet type \"+r.type);if(t.BINARY_EVENT===r.type||t.BINARY_ACK===r.type){for(var o=\"\";\"-\"!==e.charAt(++n)&&(o+=e.charAt(n),n!=e.length););if(o!=Number(o)||\"-\"!==e.charAt(n))throw new Error(\"Illegal attachments\");r.attachments=Number(o)}if(\"/\"===e.charAt(n+1))for(r.nsp=\"\";++n;){if(\",\"===(l=e.charAt(n)))break;if(r.nsp+=l,n===e.length)break}else r.nsp=\"/\";var s=e.charAt(n+1);if(\"\"!==s&&Number(s)==s){for(r.id=\"\";++n;){var l;if(null==(l=e.charAt(n))||Number(l)!=l){--n;break}if(r.id+=e.charAt(n),n===e.length)break}r.id=Number(r.id)}if(e.charAt(++n)){var u=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(n));if(!(!1!==u&&(r.type===t.ERROR||a(u))))return f(\"invalid payload\");r.data=u}return i(\"decoded %s as %j\",e,r),r}(e),t.BINARY_EVENT===n.type||t.BINARY_ACK===n.type?(this.reconstructor=new d(n),0===this.reconstructor.reconPack.attachments&&this.emit(\"decoded\",n)):this.emit(\"decoded\",n);else{if(!s(e)&&!e.base64)throw new Error(\"Unknown type: \"+e);if(!this.reconstructor)throw new Error(\"got binary data when not reconstructing a packet\");(n=this.reconstructor.takeBinaryData(e))&&(this.reconstructor=null,this.emit(\"decoded\",n))}},h.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},d.prototype.takeBinaryData=function(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){var t=o.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null},d.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==n.call(e)}},function(e,t,n){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nvar i=n(29),r=n(30),o=n(31);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(a()<t)throw new RangeError(\"Invalid typed array length\");return l.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=l.prototype:(null===e&&(e=new l(t)),e.length=t),e}function l(e,t,n){if(!(l.TYPED_ARRAY_SUPPORT||this instanceof l))return new l(e,t,n);if(\"number\"==typeof e){if(\"string\"==typeof t)throw new Error(\"If encoding is specified then the first argument must be a string\");return h(this,e)}return u(this,e,t,n)}function u(e,t,n,i){if(\"number\"==typeof t)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,i){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError(\"'offset' is out of bounds\");if(t.byteLength<n+(i||0))throw new RangeError(\"'length' is out of bounds\");return t=void 0===n&&void 0===i?new Uint8Array(t):void 0===i?new Uint8Array(t,n):new Uint8Array(t,n,i),l.TYPED_ARRAY_SUPPORT?(e=t).__proto__=l.prototype:e=d(e,t),e}(e,t,n,i):\"string\"==typeof t?function(e,t,n){if(\"string\"==typeof n&&\"\"!==n||(n=\"utf8\"),!l.isEncoding(n))throw new TypeError('\"encoding\" must be a valid string encoding');var i=0|p(t,n),r=(e=s(e,i)).write(t,n);return r!==i&&(e=e.slice(0,r)),e}(e,t,n):function(e,t){if(l.isBuffer(t)){var n=0|f(t.length);return 0===(e=s(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if(\"undefined\"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||\"length\"in t)return\"number\"!=typeof t.length||(i=t.length)!=i?s(e,0):d(e,t);if(\"Buffer\"===t.type&&o(t.data))return d(e,t.data)}var i;throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(e,t)}function c(e){if(\"number\"!=typeof e)throw new TypeError('\"size\" argument must be a number');if(e<0)throw new RangeError('\"size\" argument must not be negative')}function h(e,t){if(c(t),e=s(e,t<0?0:0|f(t)),!l.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function d(e,t){var n=t.length<0?0:0|f(t.length);e=s(e,n);for(var i=0;i<n;i+=1)e[i]=255&t[i];return e}function f(e){if(e>=a())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+a().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return n;case\"utf8\":case\"utf-8\":case void 0:return $(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*n;case\"hex\":return n>>>1;case\"base64\":return V(e).length;default:if(i)return $(e).length;t=(\"\"+t).toLowerCase(),i=!0}}function g(e,t,n){var i=e[t];e[t]=e[n],e[n]=i}function m(e,t,n,i,r){if(0===e.length)return-1;if(\"string\"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if(\"string\"==typeof t&&(t=l.from(t,i)),l.isBuffer(t))return 0===t.length?-1:v(e,t,n,i,r);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):v(e,[t],n,i,r);throw new TypeError(\"val must be string, number or Buffer\")}function v(e,t,n,i,r){var o,a=1,s=e.length,l=t.length;if(void 0!==i&&(\"ucs2\"===(i=String(i).toLowerCase())||\"ucs-2\"===i||\"utf16le\"===i||\"utf-16le\"===i)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(r){var c=-1;for(o=n;o<s;o++)if(u(e,o)===u(t,-1===c?0:o-c)){if(-1===c&&(c=o),o-c+1===l)return c*a}else-1!==c&&(o-=o-c),c=-1}else for(n+l>s&&(n=s-l),o=n;o>=0;o--){for(var h=!0,d=0;d<l;d++)if(u(e,o+d)!==u(t,d)){h=!1;break}if(h)return o}return-1}function y(e,t,n,i){n=Number(n)||0;var r=e.length-n;i?(i=Number(i))>r&&(i=r):i=r;var o=t.length;if(o%2!=0)throw new TypeError(\"Invalid hex string\");i>o/2&&(i=o/2);for(var a=0;a<i;++a){var s=parseInt(t.substr(2*a,2),16);if(isNaN(s))return a;e[n+a]=s}return a}function b(e,t,n,i){return j($(t,e.length-n),e,n,i)}function x(e,t,n,i){return j(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,i)}function _(e,t,n,i){return x(e,t,n,i)}function w(e,t,n,i){return j(V(t),e,n,i)}function C(e,t,n,i){return j(function(e,t){for(var n,i,r,o=[],a=0;a<e.length&&!((t-=2)<0);++a)i=(n=e.charCodeAt(a))>>8,r=n%256,o.push(r),o.push(i);return o}(t,e.length-n),e,n,i)}function S(e,t,n){return 0===t&&n===e.length?i.fromByteArray(e):i.fromByteArray(e.slice(t,n))}function k(e,t,n){n=Math.min(e.length,n);for(var i=[],r=t;r<n;){var o,a,s,l,u=e[r],c=null,h=u>239?4:u>223?3:u>191?2:1;if(r+h<=n)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=e[r+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=e[r+1],a=e[r+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=e[r+1],a=e[r+2],s=e[r+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,i.push(c>>>10&1023|55296),c=56320|1023&c),i.push(c),r+=h}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);for(var n=\"\",i=0;i<t;)n+=String.fromCharCode.apply(String,e.slice(i,i+=T));return n}(i)}t.Buffer=l,t.SlowBuffer=function(e){return+e!=e&&(e=0),l.alloc(+e)},t.INSPECT_MAX_BYTES=50,l.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&\"function\"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=a(),l.poolSize=8192,l._augment=function(e){return e.__proto__=l.prototype,e},l.from=function(e,t,n){return u(null,e,t,n)},l.TYPED_ARRAY_SUPPORT&&(l.prototype.__proto__=Uint8Array.prototype,l.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&l[Symbol.species]===l&&Object.defineProperty(l,Symbol.species,{value:null,configurable:!0})),l.alloc=function(e,t,n){return function(e,t,n,i){return c(t),t<=0?s(e,t):void 0!==n?\"string\"==typeof i?s(e,t).fill(n,i):s(e,t).fill(n):s(e,t)}(null,e,t,n)},l.allocUnsafe=function(e){return h(null,e)},l.allocUnsafeSlow=function(e){return h(null,e)},l.isBuffer=function(e){return!(null==e||!e._isBuffer)},l.compare=function(e,t){if(!l.isBuffer(e)||!l.isBuffer(t))throw new TypeError(\"Arguments must be Buffers\");if(e===t)return 0;for(var n=e.length,i=t.length,r=0,o=Math.min(n,i);r<o;++r)if(e[r]!==t[r]){n=e[r],i=t[r];break}return n<i?-1:i<n?1:0},l.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},l.concat=function(e,t){if(!o(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return l.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var i=l.allocUnsafe(t),r=0;for(n=0;n<e.length;++n){var a=e[n];if(!l.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(i,r),r+=a.length}return i},l.byteLength=p,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},l.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},l.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},l.prototype.toString=function(){var e=0|this.length;return 0===e?\"\":0===arguments.length?k(this,0,e):function(e,t,n){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return\"\";if((n>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return A(this,t,n);case\"utf8\":case\"utf-8\":return k(this,t,n);case\"ascii\":return M(this,t,n);case\"latin1\":case\"binary\":return D(this,t,n);case\"base64\":return S(this,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return I(this,t,n);default:if(i)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),i=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(e+=\" ... \")),\"<Buffer \"+e+\">\"},l.prototype.compare=function(e,t,n,i,r){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError(\"out of range index\");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(r>>>=0)-(i>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(i,r),c=e.slice(t,n),h=0;h<s;++h)if(u[h]!==c[h]){o=u[h],a=c[h];break}return o<a?-1:a<o?1:0},l.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},l.prototype.indexOf=function(e,t,n){return m(this,e,t,n,!0)},l.prototype.lastIndexOf=function(e,t,n){return m(this,e,t,n,!1)},l.prototype.write=function(e,t,n,i){if(void 0===t)i=\"utf8\",n=this.length,t=0;else if(void 0===n&&\"string\"==typeof t)i=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");t|=0,isFinite(n)?(n|=0,void 0===i&&(i=\"utf8\")):(i=n,n=void 0)}var r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");i||(i=\"utf8\");for(var o=!1;;)switch(i){case\"hex\":return y(this,e,t,n);case\"utf8\":case\"utf-8\":return b(this,e,t,n);case\"ascii\":return x(this,e,t,n);case\"latin1\":case\"binary\":return _(this,e,t,n);case\"base64\":return w(this,e,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return C(this,e,t,n);default:if(o)throw new TypeError(\"Unknown encoding: \"+i);i=(\"\"+i).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function M(e,t,n){var i=\"\";n=Math.min(e.length,n);for(var r=t;r<n;++r)i+=String.fromCharCode(127&e[r]);return i}function D(e,t,n){var i=\"\";n=Math.min(e.length,n);for(var r=t;r<n;++r)i+=String.fromCharCode(e[r]);return i}function A(e,t,n){var i=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>i)&&(n=i);for(var r=\"\",o=t;o<n;++o)r+=F(e[o]);return r}function I(e,t,n){for(var i=e.slice(t,n),r=\"\",o=0;o<i.length;o+=2)r+=String.fromCharCode(i[o]+256*i[o+1]);return r}function O(e,t,n){if(e%1!=0||e<0)throw new RangeError(\"offset is not uint\");if(e+t>n)throw new RangeError(\"Trying to access beyond buffer length\")}function E(e,t,n,i,r,o){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>r||t<o)throw new RangeError('\"value\" argument is out of bounds');if(n+i>e.length)throw new RangeError(\"Index out of range\")}function L(e,t,n,i){t<0&&(t=65535+t+1);for(var r=0,o=Math.min(e.length-n,2);r<o;++r)e[n+r]=(t&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function P(e,t,n,i){t<0&&(t=4294967295+t+1);for(var r=0,o=Math.min(e.length-n,4);r<o;++r)e[n+r]=t>>>8*(i?r:3-r)&255}function N(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"Index out of range\")}function R(e,t,n,i,o){return o||N(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function B(e,t,n,i,o){return o||N(e,0,n,8),r.write(e,t,n,i,52,8),n+8}l.prototype.slice=function(e,t){var n,i=this.length;if((e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t<e&&(t=e),l.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=l.prototype;else{var r=t-e;n=new l(r,void 0);for(var o=0;o<r;++o)n[o]=this[o+e]}return n},l.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||O(e,t,this.length);for(var i=this[e],r=1,o=0;++o<t&&(r*=256);)i+=this[e+o]*r;return i},l.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||O(e,t,this.length);for(var i=this[e+--t],r=1;t>0&&(r*=256);)i+=this[e+--t]*r;return i},l.prototype.readUInt8=function(e,t){return t||O(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||O(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||O(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||O(e,t,this.length);for(var i=this[e],r=1,o=0;++o<t&&(r*=256);)i+=this[e+o]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||O(e,t,this.length);for(var i=t,r=1,o=this[e+--i];i>0&&(r*=256);)o+=this[e+--i]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||O(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||O(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||O(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||O(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||O(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||O(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,i){e=+e,t|=0,n|=0,i||E(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,o=0;for(this[t]=255&e;++o<n&&(r*=256);)this[t+o]=e/r&255;return t+n},l.prototype.writeUIntBE=function(e,t,n,i){e=+e,t|=0,n|=0,i||E(this,e,t,n,Math.pow(2,8*n)-1,0);var r=n-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):P(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);E(this,e,t,n,r-1,-r)}var o=0,a=1,s=0;for(this[t]=255&e;++o<n&&(a*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*n-1);E(this,e,t,n,r-1,-r)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):P(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||E(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return R(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return R(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return B(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return B(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,i){if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-t<i-n&&(i=e.length-t+n);var r,o=i-n;if(this===e&&n<t&&t<i)for(r=o-1;r>=0;--r)e[r+t]=this[r+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r<o;++r)e[r+t]=this[r+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},l.prototype.fill=function(e,t,n,i){if(\"string\"==typeof e){if(\"string\"==typeof t?(i=t,t=0,n=this.length):\"string\"==typeof n&&(i=n,n=this.length),1===e.length){var r=e.charCodeAt(0);r<256&&(e=r)}if(void 0!==i&&\"string\"!=typeof i)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof i&&!l.isEncoding(i))throw new TypeError(\"Unknown encoding: \"+i)}else\"number\"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError(\"Out of range index\");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var a=l.isBuffer(e)?e:$(new l(e,i).toString()),s=a.length;for(o=0;o<n-t;++o)this[o+t]=a[o%s]}return this};var z=/[^+\\/0-9A-Za-z-_]/g;function F(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function $(e,t){var n;t=t||1/0;for(var i=e.length,r=null,o=[],a=0;a<i;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function V(e){return i.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(z,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function j(e,t,n,i){for(var r=0;r<i&&!(r+n>=t.length||r>=e.length);++r)t[r+n]=e[r];return r}}).call(this,n(12))},function(e,t,n){var i=n(34);e.exports=function(e){var t=e.xdomain,n=e.xscheme,r=e.enablesXDR;try{if(\"undefined\"!=typeof XMLHttpRequest&&(!t||i))return new XMLHttpRequest}catch(e){}try{if(\"undefined\"!=typeof XDomainRequest&&!n&&r)return new XDomainRequest}catch(e){}if(!t)try{return new(self[[\"Active\"].concat(\"Object\").join(\"X\")])(\"Microsoft.XMLHTTP\")}catch(e){}}},function(e,t,n){var i=n(2),r=n(1);function o(e){this.path=e.path,this.hostname=e.hostname,this.port=e.port,this.secure=e.secure,this.query=e.query,this.timestampParam=e.timestampParam,this.timestampRequests=e.timestampRequests,this.readyState=\"\",this.agent=e.agent||!1,this.socket=e.socket,this.enablesXDR=e.enablesXDR,this.pfx=e.pfx,this.key=e.key,this.passphrase=e.passphrase,this.cert=e.cert,this.ca=e.ca,this.ciphers=e.ciphers,this.rejectUnauthorized=e.rejectUnauthorized,this.forceNode=e.forceNode,this.isReactNative=e.isReactNative,this.extraHeaders=e.extraHeaders,this.localAddress=e.localAddress}e.exports=o,r(o.prototype),o.prototype.onError=function(e,t){var n=new Error(e);return n.type=\"TransportError\",n.description=t,this.emit(\"error\",n),this},o.prototype.open=function(){return\"closed\"!==this.readyState&&\"\"!==this.readyState||(this.readyState=\"opening\",this.doOpen()),this},o.prototype.close=function(){return\"opening\"!==this.readyState&&\"open\"!==this.readyState||(this.doClose(),this.onClose()),this},o.prototype.send=function(e){if(\"open\"!==this.readyState)throw new Error(\"Transport not open\");this.write(e)},o.prototype.onOpen=function(){this.readyState=\"open\",this.writable=!0,this.emit(\"open\")},o.prototype.onData=function(e){var t=i.decodePacket(e,this.socket.binaryType);this.onPacket(t)},o.prototype.onPacket=function(e){this.emit(\"packet\",e)},o.prototype.onClose=function(){this.readyState=\"closed\",this.emit(\"close\")}},function(e,t){var n=/^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/,i=[\"source\",\"protocol\",\"authority\",\"userInfo\",\"user\",\"password\",\"host\",\"port\",\"relative\",\"path\",\"directory\",\"file\",\"query\",\"anchor\"];e.exports=function(e){var t=e,r=e.indexOf(\"[\"),o=e.indexOf(\"]\");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,\";\")+e.substring(o,e.length));for(var a=n.exec(e||\"\"),s={},l=14;l--;)s[i[l]]=a[l]||\"\";return-1!=r&&-1!=o&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,\":\"),s.authority=s.authority.replace(\"[\",\"\").replace(\"]\",\"\").replace(/;/g,\":\"),s.ipv6uri=!0),s}},function(e,t,n){(function(t){e.exports=function(e){return n&&t.isBuffer(e)||i&&(e instanceof ArrayBuffer||r(e))};var n=\"function\"==typeof t&&\"function\"==typeof t.isBuffer,i=\"function\"==typeof ArrayBuffer,r=function(e){return\"function\"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer}}).call(this,n(7).Buffer)},function(e,t){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var i=n(32),r=n(19),o=n(1),a=n(5),s=n(20),l=n(21),u=n(0)(\"socket.io-client:manager\"),c=n(18),h=n(46),d=Object.prototype.hasOwnProperty;function f(e,t){if(!(this instanceof f))return new f(e,t);e&&\"object\"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||\"/socket.io\",this.nsps={},this.subs=[],this.opts=t,this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(t.randomizationFactor||.5),this.backoff=new h({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this.readyState=\"closed\",this.uri=e,this.connecting=[],this.lastPing=null,this.encoding=!1,this.packetBuffer=[];var n=t.parser||a;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this.autoConnect=!1!==t.autoConnect,this.autoConnect&&this.open()}e.exports=f,f.prototype.emitAll=function(){for(var e in this.emit.apply(this,arguments),this.nsps)d.call(this.nsps,e)&&this.nsps[e].emit.apply(this.nsps[e],arguments)},f.prototype.updateSocketIds=function(){for(var e in this.nsps)d.call(this.nsps,e)&&(this.nsps[e].id=this.generateId(e))},f.prototype.generateId=function(e){return(\"/\"===e?\"\":e+\"#\")+this.engine.id},o(f.prototype),f.prototype.reconnection=function(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection},f.prototype.reconnectionAttempts=function(e){return arguments.length?(this._reconnectionAttempts=e,this):this._reconnectionAttempts},f.prototype.reconnectionDelay=function(e){return arguments.length?(this._reconnectionDelay=e,this.backoff&&this.backoff.setMin(e),this):this._reconnectionDelay},f.prototype.randomizationFactor=function(e){return arguments.length?(this._randomizationFactor=e,this.backoff&&this.backoff.setJitter(e),this):this._randomizationFactor},f.prototype.reconnectionDelayMax=function(e){return arguments.length?(this._reconnectionDelayMax=e,this.backoff&&this.backoff.setMax(e),this):this._reconnectionDelayMax},f.prototype.timeout=function(e){return arguments.length?(this._timeout=e,this):this._timeout},f.prototype.maybeReconnectOnOpen=function(){!this.reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()},f.prototype.open=f.prototype.connect=function(e,t){if(u(\"readyState %s\",this.readyState),~this.readyState.indexOf(\"open\"))return this;u(\"opening %s\",this.uri),this.engine=i(this.uri,this.opts);var n=this.engine,r=this;this.readyState=\"opening\",this.skipReconnect=!1;var o=s(n,\"open\",function(){r.onopen(),e&&e()}),a=s(n,\"error\",function(t){if(u(\"connect_error\"),r.cleanup(),r.readyState=\"closed\",r.emitAll(\"connect_error\",t),e){var n=new Error(\"Connection error\");n.data=t,e(n)}else r.maybeReconnectOnOpen()});if(!1!==this._timeout){var l=this._timeout;u(\"connect attempt will timeout after %d\",l);var c=setTimeout(function(){u(\"connect attempt timed out after %d\",l),o.destroy(),n.close(),n.emit(\"error\",\"timeout\"),r.emitAll(\"connect_timeout\",l)},l);this.subs.push({destroy:function(){clearTimeout(c)}})}return this.subs.push(o),this.subs.push(a),this},f.prototype.onopen=function(){u(\"open\"),this.cleanup(),this.readyState=\"open\",this.emit(\"open\");var e=this.engine;this.subs.push(s(e,\"data\",l(this,\"ondata\"))),this.subs.push(s(e,\"ping\",l(this,\"onping\"))),this.subs.push(s(e,\"pong\",l(this,\"onpong\"))),this.subs.push(s(e,\"error\",l(this,\"onerror\"))),this.subs.push(s(e,\"close\",l(this,\"onclose\"))),this.subs.push(s(this.decoder,\"decoded\",l(this,\"ondecoded\")))},f.prototype.onping=function(){this.lastPing=new Date,this.emitAll(\"ping\")},f.prototype.onpong=function(){this.emitAll(\"pong\",new Date-this.lastPing)},f.prototype.ondata=function(e){this.decoder.add(e)},f.prototype.ondecoded=function(e){this.emit(\"packet\",e)},f.prototype.onerror=function(e){u(\"error\",e),this.emitAll(\"error\",e)},f.prototype.socket=function(e,t){var n=this.nsps[e];if(!n){n=new r(this,e,t),this.nsps[e]=n;var i=this;n.on(\"connecting\",o),n.on(\"connect\",function(){n.id=i.generateId(e)}),this.autoConnect&&o()}function o(){~c(i.connecting,n)||i.connecting.push(n)}return n},f.prototype.destroy=function(e){var t=c(this.connecting,e);~t&&this.connecting.splice(t,1),this.connecting.length||this.close()},f.prototype.packet=function(e){u(\"writing packet %j\",e);var t=this;e.query&&0===e.type&&(e.nsp+=\"?\"+e.query),t.encoding?t.packetBuffer.push(e):(t.encoding=!0,this.encoder.encode(e,function(n){for(var i=0;i<n.length;i++)t.engine.write(n[i],e.options);t.encoding=!1,t.processPacketQueue()}))},f.prototype.processPacketQueue=function(){if(this.packetBuffer.length>0&&!this.encoding){var e=this.packetBuffer.shift();this.packet(e)}},f.prototype.cleanup=function(){u(\"cleanup\");for(var e=this.subs.length,t=0;t<e;t++)this.subs.shift().destroy();this.packetBuffer=[],this.encoding=!1,this.lastPing=null,this.decoder.destroy()},f.prototype.close=f.prototype.disconnect=function(){u(\"disconnect\"),this.skipReconnect=!0,this.reconnecting=!1,\"opening\"===this.readyState&&this.cleanup(),this.backoff.reset(),this.readyState=\"closed\",this.engine&&this.engine.close()},f.prototype.onclose=function(e){u(\"onclose\"),this.cleanup(),this.backoff.reset(),this.readyState=\"closed\",this.emit(\"close\",e),this._reconnection&&!this.skipReconnect&&this.reconnect()},f.prototype.reconnect=function(){if(this.reconnecting||this.skipReconnect)return this;var e=this;if(this.backoff.attempts>=this._reconnectionAttempts)u(\"reconnect failed\"),this.backoff.reset(),this.emitAll(\"reconnect_failed\"),this.reconnecting=!1;else{var t=this.backoff.duration();u(\"will wait %dms before reconnect attempt\",t),this.reconnecting=!0;var n=setTimeout(function(){e.skipReconnect||(u(\"attempting reconnect\"),e.emitAll(\"reconnect_attempt\",e.backoff.attempts),e.emitAll(\"reconnecting\",e.backoff.attempts),e.skipReconnect||e.open(function(t){t?(u(\"reconnect attempt error\"),e.reconnecting=!1,e.reconnect(),e.emitAll(\"reconnect_error\",t.data)):(u(\"reconnect success\"),e.onreconnect())}))},t);this.subs.push({destroy:function(){clearTimeout(n)}})}},f.prototype.onreconnect=function(){var e=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll(\"reconnect\",e)}},function(e,t,n){var i=n(8),r=n(35),o=n(42),a=n(43);t.polling=function(e){var t=!1,n=!1,a=!1!==e.jsonp;if(\"undefined\"!=typeof location){var s=\"https:\"===location.protocol,l=location.port;l||(l=s?443:80),t=e.hostname!==location.hostname||l!==e.port,n=e.secure!==s}if(e.xdomain=t,e.xscheme=n,\"open\"in new i(e)&&!e.forceJSONP)return new r(e);if(!a)throw new Error(\"JSONP disabled\");return new o(e)},t.websocket=a},function(e,t,n){var i=n(9),r=n(3),o=n(2),a=n(4),s=n(17),l=n(0)(\"engine.io-client:polling\");e.exports=c;var u=null!=new(n(8))({xdomain:!1}).responseType;function c(e){var t=e&&e.forceBase64;u&&!t||(this.supportsBinary=!1),i.call(this,e)}a(c,i),c.prototype.name=\"polling\",c.prototype.doOpen=function(){this.poll()},c.prototype.pause=function(e){var t=this;function n(){l(\"paused\"),t.readyState=\"paused\",e()}if(this.readyState=\"pausing\",this.polling||!this.writable){var i=0;this.polling&&(l(\"we are currently polling - waiting to pause\"),i++,this.once(\"pollComplete\",function(){l(\"pre-pause polling complete\"),--i||n()})),this.writable||(l(\"we are currently writing - waiting to pause\"),i++,this.once(\"drain\",function(){l(\"pre-pause writing complete\"),--i||n()}))}else n()},c.prototype.poll=function(){l(\"polling\"),this.polling=!0,this.doPoll(),this.emit(\"poll\")},c.prototype.onData=function(e){var t=this;l(\"polling got data %s\",e),o.decodePayload(e,this.socket.binaryType,function(e,n,i){if(\"opening\"===t.readyState&&t.onOpen(),\"close\"===e.type)return t.onClose(),!1;t.onPacket(e)}),\"closed\"!==this.readyState&&(this.polling=!1,this.emit(\"pollComplete\"),\"open\"===this.readyState?this.poll():l('ignoring poll - transport state \"%s\"',this.readyState))},c.prototype.doClose=function(){var e=this;function t(){l(\"writing close packet\"),e.write([{type:\"close\"}])}\"open\"===this.readyState?(l(\"transport open - closing\"),t()):(l(\"transport not open - deferring close\"),this.once(\"open\",t))},c.prototype.write=function(e){var t=this;this.writable=!1;var n=function(){t.writable=!0,t.emit(\"drain\")};o.encodePayload(e,this.supportsBinary,function(e){t.doWrite(e,n)})},c.prototype.uri=function(){var e=this.query||{},t=this.secure?\"https\":\"http\",n=\"\";return!1!==this.timestampRequests&&(e[this.timestampParam]=s()),this.supportsBinary||e.sid||(e.b64=1),e=r.encode(e),this.port&&(\"https\"===t&&443!==Number(this.port)||\"http\"===t&&80!==Number(this.port))&&(n=\":\"+this.port),e.length&&(e=\"?\"+e),t+\"://\"+(-1!==this.hostname.indexOf(\":\")?\"[\"+this.hostname+\"]\":this.hostname)+n+this.path+e}},function(e,t,n){(function(t){var i=n(6),r=Object.prototype.toString,o=\"function\"==typeof Blob||\"undefined\"!=typeof Blob&&\"[object BlobConstructor]\"===r.call(Blob),a=\"function\"==typeof File||\"undefined\"!=typeof File&&\"[object FileConstructor]\"===r.call(File);e.exports=function e(n){if(!n||\"object\"!=typeof n)return!1;if(i(n)){for(var r=0,s=n.length;r<s;r++)if(e(n[r]))return!0;return!1}if(\"function\"==typeof t&&t.isBuffer&&t.isBuffer(n)||\"function\"==typeof ArrayBuffer&&n instanceof ArrayBuffer||o&&n instanceof Blob||a&&n instanceof File)return!0;if(n.toJSON&&\"function\"==typeof n.toJSON&&1===arguments.length)return e(n.toJSON(),!0);for(var l in n)if(Object.prototype.hasOwnProperty.call(n,l)&&e(n[l]))return!0;return!1}}).call(this,n(7).Buffer)},function(e,t,n){\"use strict\";var i,r=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\".split(\"\"),o=64,a={},s=0,l=0;function u(e){var t=\"\";do{t=r[e%o]+t,e=Math.floor(e/o)}while(e>0);return t}function c(){var e=u(+new Date);return e!==i?(s=0,i=e):e+\".\"+u(s++)}for(;l<o;l++)a[r[l]]=l;c.encode=u,c.decode=function(e){var t=0;for(l=0;l<e.length;l++)t=t*o+a[e.charAt(l)];return t},e.exports=c},function(e,t){var n=[].indexOf;e.exports=function(e,t){if(n)return e.indexOf(t);for(var i=0;i<e.length;++i)if(e[i]===t)return i;return-1}},function(e,t,n){var i=n(5),r=n(1),o=n(45),a=n(20),s=n(21),l=n(0)(\"socket.io-client:socket\"),u=n(3),c=n(16);e.exports=f;var h={connect:1,connect_error:1,connect_timeout:1,connecting:1,disconnect:1,error:1,reconnect:1,reconnect_attempt:1,reconnect_failed:1,reconnect_error:1,reconnecting:1,ping:1,pong:1},d=r.prototype.emit;function f(e,t,n){this.io=e,this.nsp=t,this.json=this,this.ids=0,this.acks={},this.receiveBuffer=[],this.sendBuffer=[],this.connected=!1,this.disconnected=!0,this.flags={},n&&n.query&&(this.query=n.query),this.io.autoConnect&&this.open()}r(f.prototype),f.prototype.subEvents=function(){if(!this.subs){var e=this.io;this.subs=[a(e,\"open\",s(this,\"onopen\")),a(e,\"packet\",s(this,\"onpacket\")),a(e,\"close\",s(this,\"onclose\"))]}},f.prototype.open=f.prototype.connect=function(){return this.connected?this:(this.subEvents(),this.io.open(),\"open\"===this.io.readyState&&this.onopen(),this.emit(\"connecting\"),this)},f.prototype.send=function(){var e=o(arguments);return e.unshift(\"message\"),this.emit.apply(this,e),this},f.prototype.emit=function(e){if(h.hasOwnProperty(e))return d.apply(this,arguments),this;var t=o(arguments),n={type:(void 0!==this.flags.binary?this.flags.binary:c(t))?i.BINARY_EVENT:i.EVENT,data:t,options:{}};return n.options.compress=!this.flags||!1!==this.flags.compress,\"function\"==typeof t[t.length-1]&&(l(\"emitting packet with ack id %d\",this.ids),this.acks[this.ids]=t.pop(),n.id=this.ids++),this.connected?this.packet(n):this.sendBuffer.push(n),this.flags={},this},f.prototype.packet=function(e){e.nsp=this.nsp,this.io.packet(e)},f.prototype.onopen=function(){if(l(\"transport is open - connecting\"),\"/\"!==this.nsp)if(this.query){var e=\"object\"==typeof this.query?u.encode(this.query):this.query;l(\"sending connect packet with query %s\",e),this.packet({type:i.CONNECT,query:e})}else this.packet({type:i.CONNECT})},f.prototype.onclose=function(e){l(\"close (%s)\",e),this.connected=!1,this.disconnected=!0,delete this.id,this.emit(\"disconnect\",e)},f.prototype.onpacket=function(e){var t=e.nsp===this.nsp,n=e.type===i.ERROR&&\"/\"===e.nsp;if(t||n)switch(e.type){case i.CONNECT:this.onconnect();break;case i.EVENT:case i.BINARY_EVENT:this.onevent(e);break;case i.ACK:case i.BINARY_ACK:this.onack(e);break;case i.DISCONNECT:this.ondisconnect();break;case i.ERROR:this.emit(\"error\",e.data)}},f.prototype.onevent=function(e){var t=e.data||[];l(\"emitting event %j\",t),null!=e.id&&(l(\"attaching ack callback to event\"),t.push(this.ack(e.id))),this.connected?d.apply(this,t):this.receiveBuffer.push(t)},f.prototype.ack=function(e){var t=this,n=!1;return function(){if(!n){n=!0;var r=o(arguments);l(\"sending ack %j\",r),t.packet({type:c(r)?i.BINARY_ACK:i.ACK,id:e,data:r})}}},f.prototype.onack=function(e){var t=this.acks[e.id];\"function\"==typeof t?(l(\"calling ack %s with %j\",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):l(\"bad ack %s\",e.id)},f.prototype.onconnect=function(){this.connected=!0,this.disconnected=!1,this.emit(\"connect\"),this.emitBuffered()},f.prototype.emitBuffered=function(){var e;for(e=0;e<this.receiveBuffer.length;e++)d.apply(this,this.receiveBuffer[e]);for(this.receiveBuffer=[],e=0;e<this.sendBuffer.length;e++)this.packet(this.sendBuffer[e]);this.sendBuffer=[]},f.prototype.ondisconnect=function(){l(\"server disconnect (%s)\",this.nsp),this.destroy(),this.onclose(\"io server disconnect\")},f.prototype.destroy=function(){if(this.subs){for(var e=0;e<this.subs.length;e++)this.subs[e].destroy();this.subs=null}this.io.destroy(this)},f.prototype.close=f.prototype.disconnect=function(){return this.connected&&(l(\"performing disconnect (%s)\",this.nsp),this.packet({type:i.DISCONNECT})),this.destroy(),this.connected&&this.onclose(\"io client disconnect\"),this},f.prototype.compress=function(e){return this.flags.compress=e,this},f.prototype.binary=function(e){return this.flags.binary=e,this}},function(e,t){e.exports=function(e,t,n){return e.on(t,n),{destroy:function(){e.removeListener(t,n)}}}},function(e,t){var n=[].slice;e.exports=function(e,t){if(\"string\"==typeof t&&(t=e[t]),\"function\"!=typeof t)throw new Error(\"bind() requires a function\");var i=n.call(arguments,2);return function(){return t.apply(e,i.concat(n.call(arguments)))}}},function(e,t,n){var i=n(24),r=n(5),o=n(13),a=n(0)(\"socket.io-client\");e.exports=t=l;var s=t.managers={};function l(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var n,r=i(e),l=r.source,u=r.id,c=r.path,h=s[u]&&c in s[u].nsps;return t.forceNew||t[\"force new connection\"]||!1===t.multiplex||h?(a(\"ignoring socket cache for %s\",l),n=o(l,t)):(s[u]||(a(\"new io instance for %s\",l),s[u]=o(l,t)),n=s[u]),r.query&&!t.query&&(t.query=r.query),n.socket(r.path,t)}t.protocol=r.protocol,t.connect=l,t.Manager=n(13),t.Socket=n(19)},function(e,t,n){e.exports=n(47)},function(e,t,n){var i=n(10),r=n(0)(\"socket.io-client:url\");e.exports=function(e,t){var n=e;t=t||\"undefined\"!=typeof location&&location,null==e&&(e=t.protocol+\"//\"+t.host),\"string\"==typeof e&&(\"/\"===e.charAt(0)&&(e=\"/\"===e.charAt(1)?t.protocol+e:t.host+e),/^(https?|wss?):\\/\\//.test(e)||(r(\"protocol-less url %s\",e),e=void 0!==t?t.protocol+\"//\"+e:\"https://\"+e),r(\"parse %s\",e),n=i(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port=\"80\":/^(http|ws)s$/.test(n.protocol)&&(n.port=\"443\")),n.path=n.path||\"/\";var o=-1!==n.host.indexOf(\":\")?\"[\"+n.host+\"]\":n.host;return n.id=n.protocol+\"://\"+o+\":\"+n.port,n.href=n.protocol+\"://\"+o+(t&&t.port===n.port?\"\":\":\"+n.port),n}},function(e,t){var n,i,r=e.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{i=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){i=a}}();var l,u=[],c=!1,h=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):h=-1,u.length&&f())}function f(){if(!c){var e=s(d);c=!0;for(var t=u.length;t;){for(l=u,u=[];++h<t;)l&&l[h].run();h=-1,t=u.length}l=null,c=!1,function(e){if(i===clearTimeout)return clearTimeout(e);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function g(){}r.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new p(e,t)),1!==u.length||c||s(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},r.title=\"browser\",r.browser=!0,r.env={},r.argv=[],r.version=\"\",r.versions={},r.on=g,r.addListener=g,r.once=g,r.off=g,r.removeListener=g,r.removeAllListeners=g,r.emit=g,r.prependListener=g,r.prependOnceListener=g,r.listeners=function(e){return[]},r.binding=function(e){throw new Error(\"process.binding is not supported\")},r.cwd=function(){return\"/\"},r.chdir=function(e){throw new Error(\"process.chdir is not supported\")},r.umask=function(){return 0}},function(e,t,n){function i(e){var n;function i(){if(i.enabled){var e=i,r=+new Date,o=r-(n||r);e.diff=o,e.prev=n,e.curr=r,n=r;for(var a=new Array(arguments.length),s=0;s<a.length;s++)a[s]=arguments[s];a[0]=t.coerce(a[0]),\"string\"!=typeof a[0]&&a.unshift(\"%O\");var l=0;a[0]=a[0].replace(/%([a-zA-Z%])/g,function(n,i){if(\"%%\"===n)return n;l++;var r=t.formatters[i];if(\"function\"==typeof r){var o=a[l];n=r.call(e,o),a.splice(l,1),l--}return n}),t.formatArgs.call(e,a),(i.log||t.log||console.log.bind(console)).apply(e,a)}}return i.namespace=e,i.enabled=t.enabled(e),i.useColors=t.useColors(),i.color=function(e){var n,i=0;for(n in e)i=(i<<5)-i+e.charCodeAt(n),i|=0;return t.colors[Math.abs(i)%t.colors.length]}(e),i.destroy=r,\"function\"==typeof t.init&&t.init(i),t.instances.push(i),i}function r(){var e=t.instances.indexOf(this);return-1!==e&&(t.instances.splice(e,1),!0)}(t=e.exports=i.debug=i.default=i).coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){t.enable(\"\")},t.enable=function(e){var n;t.save(e),t.names=[],t.skips=[];var i=(\"string\"==typeof e?e:\"\").split(/[\\s,]+/),r=i.length;for(n=0;n<r;n++)i[n]&&(\"-\"===(e=i[n].replace(/\\*/g,\".*?\"))[0]?t.skips.push(new RegExp(\"^\"+e.substr(1)+\"$\")):t.names.push(new RegExp(\"^\"+e+\"$\")));for(n=0;n<t.instances.length;n++){var o=t.instances[n];o.enabled=t.enabled(o.namespace)}},t.enabled=function(e){if(\"*\"===e[e.length-1])return!0;var n,i;for(n=0,i=t.skips.length;n<i;n++)if(t.skips[n].test(e))return!1;for(n=0,i=t.names.length;n<i;n++)if(t.names[n].test(e))return!0;return!1},t.humanize=n(27),t.instances=[],t.names=[],t.skips=[],t.formatters={}},function(e,t){var n=1e3,i=6e4,r=36e5,o=24*r;function a(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+\" \"+n:Math.ceil(e/t)+\" \"+n+\"s\"}e.exports=function(e,t){t=t||{};var s,l=typeof e;if(\"string\"===l&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var t=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var a=parseFloat(t[1]);switch((t[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return 315576e5*a;case\"days\":case\"day\":case\"d\":return a*o;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return a*r;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return a*i;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return a*n;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return a;default:return}}}}(e);if(\"number\"===l&&!1===isNaN(e))return t.long?a(s=e,o,\"day\")||a(s,r,\"hour\")||a(s,i,\"minute\")||a(s,n,\"second\")||s+\" ms\":function(e){return e>=o?Math.round(e/o)+\"d\":e>=r?Math.round(e/r)+\"h\":e>=i?Math.round(e/i)+\"m\":e>=n?Math.round(e/n)+\"s\":e+\"ms\"}(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))}},function(e,t,n){var i=n(6),r=n(11),o=Object.prototype.toString,a=\"function\"==typeof Blob||\"undefined\"!=typeof Blob&&\"[object BlobConstructor]\"===o.call(Blob),s=\"function\"==typeof File||\"undefined\"!=typeof File&&\"[object FileConstructor]\"===o.call(File);t.deconstructPacket=function(e){var t=[],n=e.data,o=e;return o.data=function e(t,n){if(!t)return t;if(r(t)){var o={_placeholder:!0,num:n.length};return n.push(t),o}if(i(t)){for(var a=new Array(t.length),s=0;s<t.length;s++)a[s]=e(t[s],n);return a}if(\"object\"==typeof t&&!(t instanceof Date)){a={};for(var l in t)a[l]=e(t[l],n);return a}return t}(n,t),o.attachments=t.length,{packet:o,buffers:t}},t.reconstructPacket=function(e,t){return e.data=function e(t,n){if(!t)return t;if(t&&t._placeholder)return n[t.num];if(i(t))for(var r=0;r<t.length;r++)t[r]=e(t[r],n);else if(\"object\"==typeof t)for(var o in t)t[o]=e(t[o],n);return t}(e.data,t),e.attachments=void 0,e},t.removeBlobs=function(e,t){var n=0,o=e;!function e(l,u,c){if(!l)return l;if(a&&l instanceof Blob||s&&l instanceof File){n++;var h=new FileReader;h.onload=function(){c?c[u]=this.result:o=this.result,--n||t(o)},h.readAsArrayBuffer(l)}else if(i(l))for(var d=0;d<l.length;d++)e(l[d],d,l);else if(\"object\"==typeof l&&!r(l))for(var f in l)e(l[f],f,l)}(o),n||t(o)}},function(e,t,n){\"use strict\";t.byteLength=function(e){var t=u(e),n=t[0],i=t[1];return 3*(n+i)/4-i},t.toByteArray=function(e){for(var t,n=u(e),i=n[0],a=n[1],s=new o(3*(i+a)/4-a),l=0,c=a>0?i-4:i,h=0;h<c;h+=4)t=r[e.charCodeAt(h)]<<18|r[e.charCodeAt(h+1)]<<12|r[e.charCodeAt(h+2)]<<6|r[e.charCodeAt(h+3)],s[l++]=t>>16&255,s[l++]=t>>8&255,s[l++]=255&t;return 2===a&&(t=r[e.charCodeAt(h)]<<2|r[e.charCodeAt(h+1)]>>4,s[l++]=255&t),1===a&&(t=r[e.charCodeAt(h)]<<10|r[e.charCodeAt(h+1)]<<4|r[e.charCodeAt(h+2)]>>2,s[l++]=t>>8&255,s[l++]=255&t),s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,o=[],a=0,s=n-r;a<s;a+=16383)o.push(c(e,a,a+16383>s?s:a+16383));return 1===r?(t=e[n-1],o.push(i[t>>2]+i[t<<4&63]+\"==\")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+\"=\")),o.join(\"\")};for(var i=[],r=[],o=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=a.length;s<l;++s)i[s]=a[s],r[a.charCodeAt(s)]=s;function u(e){var t=e.length;if(t%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var n=e.indexOf(\"=\");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,n){for(var r,o,a=[],s=t;s<n;s+=3)r=(e[s]<<16&16711680)+(e[s+1]<<8&65280)+(255&e[s+2]),a.push(i[(o=r)>>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return a.join(\"\")}r[\"-\".charCodeAt(0)]=62,r[\"_\".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,i,r){var o,a,s=8*r-i-1,l=(1<<s)-1,u=l>>1,c=-7,h=n?r-1:0,d=n?-1:1,f=e[t+h];for(h+=d,o=f&(1<<-c)-1,f>>=-c,c+=s;c>0;o=256*o+e[t+h],h+=d,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=i;c>0;a=256*a+e[t+h],h+=d,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,i),o-=u}return(f?-1:1)*a*Math.pow(2,o-i)},t.write=function(e,t,n,i,r,o){var a,s,l,u=8*o-r-1,c=(1<<u)-1,h=c>>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,p=i?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(s=0,a=c):a+h>=1?(s=(t*l-1)*Math.pow(2,r),a+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,r),a=0));r>=8;e[n+f]=255&s,f+=p,s/=256,r-=8);for(a=a<<r|s,u+=r;u>0;e[n+f]=255&a,f+=p,a/=256,u-=8);e[n+f-p]|=128*g}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==n.call(e)}},function(e,t,n){e.exports=n(33),e.exports.parser=n(2)},function(e,t,n){var i=n(14),r=n(1),o=n(0)(\"engine.io-client:socket\"),a=n(18),s=n(2),l=n(10),u=n(3);function c(e,t){if(!(this instanceof c))return new c(e,t);t=t||{},e&&\"object\"==typeof e&&(t=e,e=null),e?(e=l(e),t.hostname=e.host,t.secure=\"https\"===e.protocol||\"wss\"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=l(t.host).host),this.secure=null!=t.secure?t.secure:\"undefined\"!=typeof location&&\"https:\"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?\"443\":\"80\"),this.agent=t.agent||!1,this.hostname=t.hostname||(\"undefined\"!=typeof location?location.hostname:\"localhost\"),this.port=t.port||(\"undefined\"!=typeof location&&location.port?location.port:this.secure?443:80),this.query=t.query||{},\"string\"==typeof this.query&&(this.query=u.decode(this.query)),this.upgrade=!1!==t.upgrade,this.path=(t.path||\"/engine.io\").replace(/\\/$/,\"\")+\"/\",this.forceJSONP=!!t.forceJSONP,this.jsonp=!1!==t.jsonp,this.forceBase64=!!t.forceBase64,this.enablesXDR=!!t.enablesXDR,this.timestampParam=t.timestampParam||\"t\",this.timestampRequests=t.timestampRequests,this.transports=t.transports||[\"polling\",\"websocket\"],this.transportOptions=t.transportOptions||{},this.readyState=\"\",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=t.policyPort||843,this.rememberUpgrade=t.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=t.onlyBinaryUpgrades,this.perMessageDeflate=!1!==t.perMessageDeflate&&(t.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=t.pfx||null,this.key=t.key||null,this.passphrase=t.passphrase||null,this.cert=t.cert||null,this.ca=t.ca||null,this.ciphers=t.ciphers||null,this.rejectUnauthorized=void 0===t.rejectUnauthorized||t.rejectUnauthorized,this.forceNode=!!t.forceNode,this.isReactNative=\"undefined\"!=typeof navigator&&\"string\"==typeof navigator.product&&\"reactnative\"===navigator.product.toLowerCase(),(\"undefined\"==typeof self||this.isReactNative)&&(t.extraHeaders&&Object.keys(t.extraHeaders).length>0&&(this.extraHeaders=t.extraHeaders),t.localAddress&&(this.localAddress=t.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}e.exports=c,c.priorWebsocketSuccess=!1,r(c.prototype),c.protocol=s.protocol,c.Socket=c,c.Transport=n(9),c.transports=n(14),c.parser=n(2),c.prototype.createTransport=function(e){o('creating transport \"%s\"',e);var t=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}(this.query);t.EIO=s.protocol,t.transport=e;var n=this.transportOptions[e]||{};return this.id&&(t.sid=this.id),new i[e]({query:t,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative})},c.prototype.open=function(){var e;if(this.rememberUpgrade&&c.priorWebsocketSuccess&&-1!==this.transports.indexOf(\"websocket\"))e=\"websocket\";else{if(0===this.transports.length){var t=this;return void setTimeout(function(){t.emit(\"error\",\"No transports available\")},0)}e=this.transports[0]}this.readyState=\"opening\";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)},c.prototype.setTransport=function(e){o(\"setting transport %s\",e.name);var t=this;this.transport&&(o(\"clearing existing transport %s\",this.transport.name),this.transport.removeAllListeners()),this.transport=e,e.on(\"drain\",function(){t.onDrain()}).on(\"packet\",function(e){t.onPacket(e)}).on(\"error\",function(e){t.onError(e)}).on(\"close\",function(){t.onClose(\"transport close\")})},c.prototype.probe=function(e){o('probing transport \"%s\"',e);var t=this.createTransport(e,{probe:1}),n=!1,i=this;function r(){if(i.onlyBinaryUpgrades){var r=!this.supportsBinary&&i.transport.supportsBinary;n=n||r}n||(o('probe transport \"%s\" opened',e),t.send([{type:\"ping\",data:\"probe\"}]),t.once(\"packet\",function(r){if(!n)if(\"pong\"===r.type&&\"probe\"===r.data){if(o('probe transport \"%s\" pong',e),i.upgrading=!0,i.emit(\"upgrading\",t),!t)return;c.priorWebsocketSuccess=\"websocket\"===t.name,o('pausing current transport \"%s\"',i.transport.name),i.transport.pause(function(){n||\"closed\"!==i.readyState&&(o(\"changing transport and sending upgrade packet\"),d(),i.setTransport(t),t.send([{type:\"upgrade\"}]),i.emit(\"upgrade\",t),t=null,i.upgrading=!1,i.flush())})}else{o('probe transport \"%s\" failed',e);var a=new Error(\"probe error\");a.transport=t.name,i.emit(\"upgradeError\",a)}}))}function a(){n||(n=!0,d(),t.close(),t=null)}function s(n){var r=new Error(\"probe error: \"+n);r.transport=t.name,a(),o('probe transport \"%s\" failed because of error: %s',e,n),i.emit(\"upgradeError\",r)}function l(){s(\"transport closed\")}function u(){s(\"socket closed\")}function h(e){t&&e.name!==t.name&&(o('\"%s\" works - aborting \"%s\"',e.name,t.name),a())}function d(){t.removeListener(\"open\",r),t.removeListener(\"error\",s),t.removeListener(\"close\",l),i.removeListener(\"close\",u),i.removeListener(\"upgrading\",h)}c.priorWebsocketSuccess=!1,t.once(\"open\",r),t.once(\"error\",s),t.once(\"close\",l),this.once(\"close\",u),this.once(\"upgrading\",h),t.open()},c.prototype.onOpen=function(){if(o(\"socket open\"),this.readyState=\"open\",c.priorWebsocketSuccess=\"websocket\"===this.transport.name,this.emit(\"open\"),this.flush(),\"open\"===this.readyState&&this.upgrade&&this.transport.pause){o(\"starting upgrade probes\");for(var e=0,t=this.upgrades.length;e<t;e++)this.probe(this.upgrades[e])}},c.prototype.onPacket=function(e){if(\"opening\"===this.readyState||\"open\"===this.readyState||\"closing\"===this.readyState)switch(o('socket receive: type \"%s\", data \"%s\"',e.type,e.data),this.emit(\"packet\",e),this.emit(\"heartbeat\"),e.type){case\"open\":this.onHandshake(JSON.parse(e.data));break;case\"pong\":this.setPing(),this.emit(\"pong\");break;case\"error\":var t=new Error(\"server error\");t.code=e.data,this.onError(t);break;case\"message\":this.emit(\"data\",e.data),this.emit(\"message\",e.data)}else o('packet received with socket readyState \"%s\"',this.readyState)},c.prototype.onHandshake=function(e){this.emit(\"handshake\",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),\"closed\"!==this.readyState&&(this.setPing(),this.removeListener(\"heartbeat\",this.onHeartbeat),this.on(\"heartbeat\",this.onHeartbeat))},c.prototype.onHeartbeat=function(e){clearTimeout(this.pingTimeoutTimer);var t=this;t.pingTimeoutTimer=setTimeout(function(){\"closed\"!==t.readyState&&t.onClose(\"ping timeout\")},e||t.pingInterval+t.pingTimeout)},c.prototype.setPing=function(){var e=this;clearTimeout(e.pingIntervalTimer),e.pingIntervalTimer=setTimeout(function(){o(\"writing ping packet - expecting pong within %sms\",e.pingTimeout),e.ping(),e.onHeartbeat(e.pingTimeout)},e.pingInterval)},c.prototype.ping=function(){var e=this;this.sendPacket(\"ping\",function(){e.emit(\"ping\")})},c.prototype.onDrain=function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emit(\"drain\"):this.flush()},c.prototype.flush=function(){\"closed\"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(o(\"flushing %d packets in socket\",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit(\"flush\"))},c.prototype.write=c.prototype.send=function(e,t,n){return this.sendPacket(\"message\",e,t,n),this},c.prototype.sendPacket=function(e,t,n,i){if(\"function\"==typeof t&&(i=t,t=void 0),\"function\"==typeof n&&(i=n,n=null),\"closing\"!==this.readyState&&\"closed\"!==this.readyState){(n=n||{}).compress=!1!==n.compress;var r={type:e,data:t,options:n};this.emit(\"packetCreate\",r),this.writeBuffer.push(r),i&&this.once(\"flush\",i),this.flush()}},c.prototype.close=function(){if(\"opening\"===this.readyState||\"open\"===this.readyState){this.readyState=\"closing\";var e=this;this.writeBuffer.length?this.once(\"drain\",function(){this.upgrading?i():t()}):this.upgrading?i():t()}function t(){e.onClose(\"forced close\"),o(\"socket closing - telling transport to close\"),e.transport.close()}function n(){e.removeListener(\"upgrade\",n),e.removeListener(\"upgradeError\",n),t()}function i(){e.once(\"upgrade\",n),e.once(\"upgradeError\",n)}return this},c.prototype.onError=function(e){o(\"socket error %j\",e),c.priorWebsocketSuccess=!1,this.emit(\"error\",e),this.onClose(\"transport error\",e)},c.prototype.onClose=function(e,t){\"opening\"!==this.readyState&&\"open\"!==this.readyState&&\"closing\"!==this.readyState||(o('socket close with reason: \"%s\"',e),clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners(\"close\"),this.transport.close(),this.transport.removeAllListeners(),this.readyState=\"closed\",this.id=null,this.emit(\"close\",e,t),this.writeBuffer=[],this.prevBufferLen=0)},c.prototype.filterUpgrades=function(e){for(var t=[],n=0,i=e.length;n<i;n++)~a(this.transports,e[n])&&t.push(e[n]);return t}},function(e,t){try{e.exports=\"undefined\"!=typeof XMLHttpRequest&&\"withCredentials\"in new XMLHttpRequest}catch(t){e.exports=!1}},function(e,t,n){var i=n(8),r=n(15),o=n(1),a=n(4),s=n(0)(\"engine.io-client:polling-xhr\");function l(){}function u(e){if(r.call(this,e),this.requestTimeout=e.requestTimeout,this.extraHeaders=e.extraHeaders,\"undefined\"!=typeof location){var t=\"https:\"===location.protocol,n=location.port;n||(n=t?443:80),this.xd=\"undefined\"!=typeof location&&e.hostname!==location.hostname||n!==e.port,this.xs=e.secure!==t}}function c(e){this.method=e.method||\"GET\",this.uri=e.uri,this.xd=!!e.xd,this.xs=!!e.xs,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.agent=e.agent,this.isBinary=e.isBinary,this.supportsBinary=e.supportsBinary,this.enablesXDR=e.enablesXDR,this.requestTimeout=e.requestTimeout,this.pfx=e.pfx,this.key=e.key,this.passphrase=e.passphrase,this.cert=e.cert,this.ca=e.ca,this.ciphers=e.ciphers,this.rejectUnauthorized=e.rejectUnauthorized,this.extraHeaders=e.extraHeaders,this.create()}if(e.exports=u,e.exports.Request=c,a(u,r),u.prototype.supportsBinary=!0,u.prototype.request=function(e){return(e=e||{}).uri=this.uri(),e.xd=this.xd,e.xs=this.xs,e.agent=this.agent||!1,e.supportsBinary=this.supportsBinary,e.enablesXDR=this.enablesXDR,e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized,e.requestTimeout=this.requestTimeout,e.extraHeaders=this.extraHeaders,new c(e)},u.prototype.doWrite=function(e,t){var n=\"string\"!=typeof e&&void 0!==e,i=this.request({method:\"POST\",data:e,isBinary:n}),r=this;i.on(\"success\",t),i.on(\"error\",function(e){r.onError(\"xhr post error\",e)}),this.sendXhr=i},u.prototype.doPoll=function(){s(\"xhr poll\");var e=this.request(),t=this;e.on(\"data\",function(e){t.onData(e)}),e.on(\"error\",function(e){t.onError(\"xhr poll error\",e)}),this.pollXhr=e},o(c.prototype),c.prototype.create=function(){var e={agent:this.agent,xdomain:this.xd,xscheme:this.xs,enablesXDR:this.enablesXDR};e.pfx=this.pfx,e.key=this.key,e.passphrase=this.passphrase,e.cert=this.cert,e.ca=this.ca,e.ciphers=this.ciphers,e.rejectUnauthorized=this.rejectUnauthorized;var t=this.xhr=new i(e),n=this;try{s(\"xhr open %s: %s\",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.extraHeaders)for(var r in t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0),this.extraHeaders)this.extraHeaders.hasOwnProperty(r)&&t.setRequestHeader(r,this.extraHeaders[r])}catch(e){}if(\"POST\"===this.method)try{this.isBinary?t.setRequestHeader(\"Content-type\",\"application/octet-stream\"):t.setRequestHeader(\"Content-type\",\"text/plain;charset=UTF-8\")}catch(e){}try{t.setRequestHeader(\"Accept\",\"*/*\")}catch(e){}\"withCredentials\"in t&&(t.withCredentials=!0),this.requestTimeout&&(t.timeout=this.requestTimeout),this.hasXDR()?(t.onload=function(){n.onLoad()},t.onerror=function(){n.onError(t.responseText)}):t.onreadystatechange=function(){if(2===t.readyState)try{var e=t.getResponseHeader(\"Content-Type\");n.supportsBinary&&\"application/octet-stream\"===e&&(t.responseType=\"arraybuffer\")}catch(e){}4===t.readyState&&(200===t.status||1223===t.status?n.onLoad():setTimeout(function(){n.onError(t.status)},0))},s(\"xhr data %s\",this.data),t.send(this.data)}catch(e){return void setTimeout(function(){n.onError(e)},0)}\"undefined\"!=typeof document&&(this.index=c.requestsCount++,c.requests[this.index]=this)},c.prototype.onSuccess=function(){this.emit(\"success\"),this.cleanup()},c.prototype.onData=function(e){this.emit(\"data\",e),this.onSuccess()},c.prototype.onError=function(e){this.emit(\"error\",e),this.cleanup(!0)},c.prototype.cleanup=function(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=l:this.xhr.onreadystatechange=l,e)try{this.xhr.abort()}catch(e){}\"undefined\"!=typeof document&&delete c.requests[this.index],this.xhr=null}},c.prototype.onLoad=function(){var e;try{var t;try{t=this.xhr.getResponseHeader(\"Content-Type\")}catch(e){}e=\"application/octet-stream\"===t&&this.xhr.response||this.xhr.responseText}catch(e){this.onError(e)}null!=e&&this.onData(e)},c.prototype.hasXDR=function(){return\"undefined\"!=typeof XDomainRequest&&!this.xs&&this.enablesXDR},c.prototype.abort=function(){this.cleanup()},c.requestsCount=0,c.requests={},\"undefined\"!=typeof document)if(\"function\"==typeof attachEvent)attachEvent(\"onunload\",d);else if(\"function\"==typeof addEventListener){var h=\"onpagehide\"in self?\"pagehide\":\"unload\";addEventListener(h,d,!1)}function d(){for(var e in c.requests)c.requests.hasOwnProperty(e)&&c.requests[e].abort()}},function(e,t){e.exports=Object.keys||function(e){var t=[],n=Object.prototype.hasOwnProperty;for(var i in e)n.call(e,i)&&t.push(i);return t}},function(e,t){e.exports=function(e,t,n){var i=e.byteLength;if(t=t||0,n=n||i,e.slice)return e.slice(t,n);if(t<0&&(t+=i),n<0&&(n+=i),n>i&&(n=i),t>=i||t>=n||0===i)return new ArrayBuffer(0);for(var r=new Uint8Array(e),o=new Uint8Array(n-t),a=t,s=0;a<n;a++,s++)o[s]=r[a];return o.buffer}},function(e,t){function n(){}e.exports=function(e,t,i){var r=!1;return i=i||n,o.count=e,0===e?t():o;function o(e,n){if(o.count<=0)throw new Error(\"after called too many times\");--o.count,e?(r=!0,t(e),t=i):0!==o.count||r||t(null,n)}}},function(e,t){\n/*! https://mths.be/utf8js v2.1.2 by @mathias */\nvar n,i,r,o=String.fromCharCode;function a(e){for(var t,n,i=[],r=0,o=e.length;r<o;)(t=e.charCodeAt(r++))>=55296&&t<=56319&&r<o?56320==(64512&(n=e.charCodeAt(r++)))?i.push(((1023&t)<<10)+(1023&n)+65536):(i.push(t),r--):i.push(t);return i}function s(e,t){if(e>=55296&&e<=57343){if(t)throw Error(\"Lone surrogate U+\"+e.toString(16).toUpperCase()+\" is not a scalar value\");return!1}return!0}function l(e,t){return o(e>>t&63|128)}function u(e,t){if(0==(4294967168&e))return o(e);var n=\"\";return 0==(4294965248&e)?n=o(e>>6&31|192):0==(4294901760&e)?(s(e,t)||(e=65533),n=o(e>>12&15|224),n+=l(e,6)):0==(4292870144&e)&&(n=o(e>>18&7|240),n+=l(e,12),n+=l(e,6)),n+o(63&e|128)}function c(){if(r>=i)throw Error(\"Invalid byte index\");var e=255&n[r];if(r++,128==(192&e))return 63&e;throw Error(\"Invalid continuation byte\")}function h(e){var t,o;if(r>i)throw Error(\"Invalid byte index\");if(r==i)return!1;if(t=255&n[r],r++,0==(128&t))return t;if(192==(224&t)){if((o=(31&t)<<6|c())>=128)return o;throw Error(\"Invalid continuation byte\")}if(224==(240&t)){if((o=(15&t)<<12|c()<<6|c())>=2048)return s(o,e)?o:65533;throw Error(\"Invalid continuation byte\")}if(240==(248&t)&&(o=(7&t)<<18|c()<<12|c()<<6|c())>=65536&&o<=1114111)return o;throw Error(\"Invalid UTF-8 detected\")}e.exports={version:\"2.1.2\",encode:function(e,t){for(var n=!1!==(t=t||{}).strict,i=a(e),r=i.length,o=-1,s=\"\";++o<r;)s+=u(i[o],n);return s},decode:function(e,t){var s=!1!==(t=t||{}).strict;n=a(e),i=n.length,r=0;for(var l,u=[];!1!==(l=h(s));)u.push(l);return function(e){for(var t,n=e.length,i=-1,r=\"\";++i<n;)(t=e[i])>65535&&(r+=o((t-=65536)>>>10&1023|55296),t=56320|1023&t),r+=o(t);return r}(u)}}},function(e,t){!function(){\"use strict\";for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",n=new Uint8Array(256),i=0;i<e.length;i++)n[e.charCodeAt(i)]=i;t.encode=function(t){var n,i=new Uint8Array(t),r=i.length,o=\"\";for(n=0;n<r;n+=3)o+=e[i[n]>>2],o+=e[(3&i[n])<<4|i[n+1]>>4],o+=e[(15&i[n+1])<<2|i[n+2]>>6],o+=e[63&i[n+2]];return r%3==2?o=o.substring(0,o.length-1)+\"=\":r%3==1&&(o=o.substring(0,o.length-2)+\"==\"),o},t.decode=function(e){var t,i,r,o,a,s=.75*e.length,l=e.length,u=0;\"=\"===e[e.length-1]&&(s--,\"=\"===e[e.length-2]&&s--);var c=new ArrayBuffer(s),h=new Uint8Array(c);for(t=0;t<l;t+=4)i=n[e.charCodeAt(t)],r=n[e.charCodeAt(t+1)],o=n[e.charCodeAt(t+2)],a=n[e.charCodeAt(t+3)],h[u++]=i<<2|r>>4,h[u++]=(15&r)<<4|o>>2,h[u++]=(3&o)<<6|63&a;return c}}()},function(e,t){var n=void 0!==n?n:\"undefined\"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:\"undefined\"!=typeof MSBlobBuilder?MSBlobBuilder:\"undefined\"!=typeof MozBlobBuilder&&MozBlobBuilder,i=function(){try{return 2===new Blob([\"hi\"]).size}catch(e){return!1}}(),r=i&&function(){try{return 2===new Blob([new Uint8Array([1,2])]).size}catch(e){return!1}}(),o=n&&n.prototype.append&&n.prototype.getBlob;function a(e){return e.map(function(e){if(e.buffer instanceof ArrayBuffer){var t=e.buffer;if(e.byteLength!==t.byteLength){var n=new Uint8Array(e.byteLength);n.set(new Uint8Array(t,e.byteOffset,e.byteLength)),t=n.buffer}return t}return e})}function s(e,t){t=t||{};var i=new n;return a(e).forEach(function(e){i.append(e)}),t.type?i.getBlob(t.type):i.getBlob()}function l(e,t){return new Blob(a(e),t||{})}\"undefined\"!=typeof Blob&&(s.prototype=Blob.prototype,l.prototype=Blob.prototype),e.exports=i?r?Blob:l:o?s:void 0},function(e,t,n){(function(t){var i=n(15),r=n(4);e.exports=c;var o,a=/\\n/g,s=/\\\\n/g;function l(){}function u(){return\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==t?t:{}}function c(e){if(i.call(this,e),this.query=this.query||{},!o){var t=u();o=t.___eio=t.___eio||[]}this.index=o.length;var n=this;o.push(function(e){n.onData(e)}),this.query.j=this.index,\"function\"==typeof addEventListener&&addEventListener(\"beforeunload\",function(){n.script&&(n.script.onerror=l)},!1)}r(c,i),c.prototype.supportsBinary=!1,c.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),i.prototype.doClose.call(this)},c.prototype.doPoll=function(){var e=this,t=document.createElement(\"script\");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),t.async=!0,t.src=this.uri(),t.onerror=function(t){e.onError(\"jsonp poll error\",t)};var n=document.getElementsByTagName(\"script\")[0];n?n.parentNode.insertBefore(t,n):(document.head||document.body).appendChild(t),this.script=t,\"undefined\"!=typeof navigator&&/gecko/i.test(navigator.userAgent)&&setTimeout(function(){var e=document.createElement(\"iframe\");document.body.appendChild(e),document.body.removeChild(e)},100)},c.prototype.doWrite=function(e,t){var n=this;if(!this.form){var i,r=document.createElement(\"form\"),o=document.createElement(\"textarea\"),l=this.iframeId=\"eio_iframe_\"+this.index;r.className=\"socketio\",r.style.position=\"absolute\",r.style.top=\"-1000px\",r.style.left=\"-1000px\",r.target=l,r.method=\"POST\",r.setAttribute(\"accept-charset\",\"utf-8\"),o.name=\"d\",r.appendChild(o),document.body.appendChild(r),this.form=r,this.area=o}function u(){c(),t()}function c(){if(n.iframe)try{n.form.removeChild(n.iframe)}catch(e){n.onError(\"jsonp polling iframe removal error\",e)}try{var e='<iframe src=\"javascript:0\" name=\"'+n.iframeId+'\">';i=document.createElement(e)}catch(e){(i=document.createElement(\"iframe\")).name=n.iframeId,i.src=\"javascript:0\"}i.id=n.iframeId,n.form.appendChild(i),n.iframe=i}this.form.action=this.uri(),c(),e=e.replace(s,\"\\\\\\n\"),this.area.value=e.replace(a,\"\\\\n\");try{this.form.submit()}catch(e){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){\"complete\"===n.iframe.readyState&&u()}:this.iframe.onload=u}}).call(this,n(12))},function(e,t,n){(function(t){var i,r,o=n(9),a=n(2),s=n(3),l=n(4),u=n(17),c=n(0)(\"engine.io-client:websocket\");if(\"undefined\"!=typeof WebSocket)i=WebSocket;else if(\"undefined\"!=typeof self)i=self.WebSocket||self.MozWebSocket;else try{r=n(44)}catch(e){}var h=i||r;function d(e){e&&e.forceBase64&&(this.supportsBinary=!1),this.perMessageDeflate=e.perMessageDeflate,this.usingBrowserWebSocket=i&&!e.forceNode,this.protocols=e.protocols,this.usingBrowserWebSocket||(h=r),o.call(this,e)}e.exports=d,l(d,o),d.prototype.name=\"websocket\",d.prototype.supportsBinary=!0,d.prototype.doOpen=function(){if(this.check()){var e=this.uri(),t=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?t?new h(e,t):new h(e):new h(e,t,n)}catch(e){return this.emit(\"error\",e)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType=\"nodebuffer\"):this.ws.binaryType=\"arraybuffer\",this.addEventListeners()}},d.prototype.addEventListeners=function(){var e=this;this.ws.onopen=function(){e.onOpen()},this.ws.onclose=function(){e.onClose()},this.ws.onmessage=function(t){e.onData(t.data)},this.ws.onerror=function(t){e.onError(\"websocket error\",t)}},d.prototype.write=function(e){var n=this;this.writable=!1;for(var i=e.length,r=0,o=i;r<o;r++)!function(e){a.encodePacket(e,n.supportsBinary,function(r){if(!n.usingBrowserWebSocket){var o={};e.options&&(o.compress=e.options.compress),n.perMessageDeflate&&(\"string\"==typeof r?t.byteLength(r):r.length)<n.perMessageDeflate.threshold&&(o.compress=!1)}try{n.usingBrowserWebSocket?n.ws.send(r):n.ws.send(r,o)}catch(e){c(\"websocket closed before onclose event\")}--i||(n.emit(\"flush\"),setTimeout(function(){n.writable=!0,n.emit(\"drain\")},0))})}(e[r])},d.prototype.onClose=function(){o.prototype.onClose.call(this)},d.prototype.doClose=function(){void 0!==this.ws&&this.ws.close()},d.prototype.uri=function(){var e=this.query||{},t=this.secure?\"wss\":\"ws\",n=\"\";return this.port&&(\"wss\"===t&&443!==Number(this.port)||\"ws\"===t&&80!==Number(this.port))&&(n=\":\"+this.port),this.timestampRequests&&(e[this.timestampParam]=u()),this.supportsBinary||(e.b64=1),(e=s.encode(e)).length&&(e=\"?\"+e),t+\"://\"+(-1!==this.hostname.indexOf(\":\")?\"[\"+this.hostname+\"]\":this.hostname)+n+this.path+e},d.prototype.check=function(){return!(!h||\"__initialize\"in h&&this.name===d.prototype.name)}}).call(this,n(7).Buffer)},function(e,t){},function(e,t){e.exports=function(e,t){for(var n=[],i=(t=t||0)||0;i<e.length;i++)n[i-t]=e[i];return n}},function(e,t){function n(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}e.exports=n,n.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-n:e+n}return 0|Math.min(e,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(e){this.ms=e},n.prototype.setMax=function(e){this.max=e},n.prototype.setJitter=function(e){this.jitter=e}},function(e,t,n){\"use strict\";n.r(t);var i={beforeCreate(){this.sockets||(this.sockets={}),this.sockets.subscribe=((e,t)=>{this.$vueSocketIo.emitter.addListener(e,t,this)}),this.sockets.unsubscribe=(e=>{this.$vueSocketIo.emitter.removeListener(e,this)})},mounted(){this.$options.sockets&&Object.keys(this.$options.sockets).forEach(e=>{\"subscribe\"!==e&&\"unsubscribe\"!==e&&this.$vueSocketIo.emitter.addListener(e,this.$options.sockets[e],this)})},beforeDestroy(){this.$options.sockets&&Object.keys(this.$options.sockets).forEach(e=>{this.$vueSocketIo.emitter.removeListener(e,this)})}};function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.debug=!1,this.prefix=\"%cVue-Socket.io: \"}var t,n;return t=e,(n=[{key:\"info\",value:function(e,t=\"\"){this.debug&&window.console.info(this.prefix+`%c${e}`,\"color: blue; font-weight: 600\",\"color: #333333\",t)}},{key:\"error\",value:function(){this.debug&&window.console.error(this.prefix,...arguments)}},{key:\"warn\",value:function(){this.debug&&window.console.warn(this.prefix,...arguments)}},{key:\"event\",value:function(e,t=\"\"){this.debug&&window.console.info(this.prefix+`%c${e}`,\"color: blue; font-weight: 600\",\"color: #333333\",t)}}])&&r(t.prototype,n),e}());function a(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}let s=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.io=t,this.register(),this.emitter=n}var t,n;return t=e,(n=[{key:\"register\",value:function(){this.io.onevent=(e=>{let[t,...n]=e.data;1===n.length&&(n=n[0]),this.onEvent(t,n)}),e.staticEvents.forEach(e=>this.io.on(e,t=>this.onEvent(e,t)))}},{key:\"onEvent\",value:function(e,t){this.emitter.emit(e,t)}}])&&a(t.prototype,n),e}();var l,u,c;function h(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}c=[\"connect\",\"error\",\"disconnect\",\"reconnect\",\"reconnect_attempt\",\"reconnecting\",\"reconnect_error\",\"reconnect_failed\",\"connect_error\",\"connect_timeout\",\"connecting\",\"ping\",\"pong\"],(u=\"staticEvents\")in(l=s)?Object.defineProperty(l,u,{value:c,enumerable:!0,configurable:!0,writable:!0}):l[u]=c;let d=function(){function e(t={}){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),o.info(t?\"Vuex adapter enabled\":\"Vuex adapter disabled\"),o.info(t.mutationPrefix?\"Vuex socket mutations enabled\":\"Vuex socket mutations disabled\"),o.info(t?\"Vuex socket actions enabled\":\"Vuex socket actions disabled\"),this.store=t.store,this.actionPrefix=t.actionPrefix?t.actionPrefix:\"SOCKET_\",this.mutationPrefix=t.mutationPrefix,this.listeners=new Map}var t,n;return t=e,(n=[{key:\"addListener\",value:function(e,t,n){if(\"function\"!=typeof t)throw new Error(\"callback must be a function\");this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push({callback:t,component:n}),o.info(`#${e} subscribe, component: ${n.$options.name}`)}},{key:\"removeListener\",value:function(e,t){if(this.listeners.has(e)){const n=this.listeners.get(e).filter(e=>e.component!==t);n.length>0?this.listeners.set(e,n):this.listeners.delete(e),o.info(`#${e} unsubscribe, component: ${t.$options.name}`)}}},{key:\"emit\",value:function(e,t){this.listeners.has(e)&&(o.info(`Broadcasting: #${e}, Data:`,t),this.listeners.get(e).forEach(e=>{e.callback.call(e.component,t)})),\"ping\"!==e&&\"pong\"!==e&&this.dispatchStore(e,t)}},{key:\"dispatchStore\",value:function(e,t){if(this.store&&this.store._actions){let n=this.actionPrefix+e;for(let e in this.store._actions)e.split(\"/\").pop()===n&&(o.info(`Dispatching Action: ${e}, Data:`,t),this.store.dispatch(e,t));if(this.mutationPrefix){let n=this.mutationPrefix+e;for(let e in this.store._mutations)e.split(\"/\").pop()===n&&(o.info(`Commiting Mutation: ${e}, Data:`,t),this.store.commit(e,t))}}}}])&&h(t.prototype,n),e}();var f=n(22),p=n.n(f);function g(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}n.d(t,\"default\",function(){return m});let m=function(){function e({connection:t,vuex:n,debug:i,options:r}){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),o.debug=i,this.io=this.connect(t,r),this.emitter=new d(n),this.listener=new s(this.io,this.emitter)}var t,n;return t=e,(n=[{key:\"install\",value:function(e){e.prototype.$socket=this.io,e.prototype.$vueSocketIo=this,e.mixin(i),o.info(\"Vue-Socket.io plugin enabled\")}},{key:\"connect\",value:function(e,t){if(e&&\"object\"==typeof e)return o.info(\"Received socket.io-client instance\"),e;if(\"string\"==typeof e)return o.info(\"Received connection string\"),this.io=p()(e,t);throw new Error(\"Unsupported connection type\")}}])&&g(t.prototype,n),e}()}]).default},e.exports=i()},HJMx:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=76)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},11:function(e,t){e.exports=n(\"aW5l\")},21:function(e,t){e.exports=n(\"E/in\")},4:function(e,t){e.exports=n(\"fPll\")},76:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"textarea\"===e.type?\"el-textarea\":\"el-input\",e.inputSize?\"el-input--\"+e.inputSize:\"\",{\"is-disabled\":e.inputDisabled,\"is-exceed\":e.inputExceed,\"el-input-group\":e.$slots.prepend||e.$slots.append,\"el-input-group--append\":e.$slots.append,\"el-input-group--prepend\":e.$slots.prepend,\"el-input--prefix\":e.$slots.prefix||e.prefixIcon,\"el-input--suffix\":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},[\"textarea\"!==e.type?[e.$slots.prepend?n(\"div\",{staticClass:\"el-input-group__prepend\"},[e._t(\"prepend\")],2):e._e(),\"textarea\"!==e.type?n(\"input\",e._b({ref:\"input\",staticClass:\"el-input__inner\",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?\"text\":\"password\":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,\"aria-label\":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},\"input\",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?n(\"span\",{staticClass:\"el-input__prefix\"},[e._t(\"prefix\"),e.prefixIcon?n(\"i\",{staticClass:\"el-input__icon\",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?n(\"span\",{staticClass:\"el-input__suffix\"},[n(\"span\",{staticClass:\"el-input__suffix-inner\"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t(\"suffix\"),e.suffixIcon?n(\"i\",{staticClass:\"el-input__icon\",class:e.suffixIcon}):e._e()],e.showClear?n(\"i\",{staticClass:\"el-input__icon el-icon-circle-close el-input__clear\",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?n(\"i\",{staticClass:\"el-input__icon el-icon-view el-input__clear\",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?n(\"span\",{staticClass:\"el-input__count\"},[n(\"span\",{staticClass:\"el-input__count-inner\"},[e._v(\"\\n            \"+e._s(e.textLength)+\"/\"+e._s(e.upperLimit)+\"\\n          \")])]):e._e()],2),e.validateState?n(\"i\",{staticClass:\"el-input__icon\",class:[\"el-input__validateIcon\",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?n(\"div\",{staticClass:\"el-input-group__append\"},[e._t(\"append\")],2):e._e()]:n(\"textarea\",e._b({ref:\"textarea\",staticClass:\"el-textarea__inner\",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,\"aria-label\":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},\"textarea\",e.$attrs,!1)),e.isWordLimitVisible&&\"textarea\"===e.type?n(\"span\",{staticClass:\"el-input__count\"},[e._v(e._s(e.textLength)+\"/\"+e._s(e.upperLimit))]):e._e()],2)};i._withStripped=!0;var r=n(4),o=n.n(r),a=n(11),s=n.n(a),l=void 0,u=\"\\n  height:0 !important;\\n  visibility:hidden !important;\\n  overflow:hidden !important;\\n  position:absolute !important;\\n  z-index:-1000 !important;\\n  top:0 !important;\\n  right:0 !important\\n\",c=[\"letter-spacing\",\"line-height\",\"padding-top\",\"padding-bottom\",\"font-family\",\"font-weight\",\"font-size\",\"text-rendering\",\"text-transform\",\"width\",\"text-indent\",\"padding-left\",\"padding-right\",\"border-width\",\"box-sizing\"];function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement(\"textarea\"),document.body.appendChild(l));var i=function(e){var t=window.getComputedStyle(e),n=t.getPropertyValue(\"box-sizing\"),i=parseFloat(t.getPropertyValue(\"padding-bottom\"))+parseFloat(t.getPropertyValue(\"padding-top\")),r=parseFloat(t.getPropertyValue(\"border-bottom-width\"))+parseFloat(t.getPropertyValue(\"border-top-width\"));return{contextStyle:c.map(function(e){return e+\":\"+t.getPropertyValue(e)}).join(\";\"),paddingSize:i,borderSize:r,boxSizing:n}}(e),r=i.paddingSize,o=i.borderSize,a=i.boxSizing,s=i.contextStyle;l.setAttribute(\"style\",s+\";\"+u),l.value=e.value||e.placeholder||\"\";var h=l.scrollHeight,d={};\"border-box\"===a?h+=o:\"content-box\"===a&&(h-=r),l.value=\"\";var f=l.scrollHeight-r;if(null!==t){var p=f*t;\"border-box\"===a&&(p=p+r+o),h=Math.max(p,h),d.minHeight=p+\"px\"}if(null!==n){var g=f*n;\"border-box\"===a&&(g=g+r+o),h=Math.min(g,h)}return d.height=h+\"px\",l.parentNode&&l.parentNode.removeChild(l),l=null,d}var d=n(9),f=n.n(d),p=n(21),g={name:\"ElInput\",componentName:\"ElInput\",mixins:[o.a,s.a],inheritAttrs:!1,inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:\"text\"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:\"off\"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:\"\"},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:\"el-icon-loading\",success:\"el-icon-circle-check\",error:\"el-icon-circle-close\"}[this.validateState]},textareaStyle:function(){return f()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?\"\":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&(\"text\"===this.type||\"textarea\"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return\"number\"==typeof this.value?String(this.value).length:(this.value||\"\").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.change\",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:\"icon is removed, use suffix-icon / prefix-icon instead.\",\"on-icon-click\":\"on-icon-click is removed.\"},events:{click:\"click is removed.\"}}},handleBlur:function(e){this.focused=!1,this.$emit(\"blur\",e),this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.blur\",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if(\"textarea\"===this.type)if(e){var t=e.minRows,n=e.maxRows;this.textareaCalcStyle=h(this.$refs.textarea,t,n)}else this.textareaCalcStyle={minHeight:h(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit(\"focus\",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,n=t[t.length-1]||\"\";this.isComposing=!Object(p.isKorean)(n)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit(\"input\",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit(\"change\",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(\".el-input__\"+e)||[]);if(t.length){for(var n=null,i=0;i<t.length;i++)if(t[i].parentNode===this.$el){n=t[i];break}if(n){var r={suffix:\"append\",prefix:\"prepend\"}[e];this.$slots[r]?n.style.transform=\"translateX(\"+(\"suffix\"===e?\"-\":\"\")+this.$el.querySelector(\".el-input-group__\"+r).offsetWidth+\"px)\":n.removeAttribute(\"style\")}}},updateIconOffset:function(){this.calcIconOffset(\"prefix\"),this.calcIconOffset(\"suffix\")},clear:function(){this.$emit(\"input\",\"\"),this.$emit(\"change\",\"\"),this.$emit(\"clear\")},handlePasswordVisible:function(){this.passwordVisible=!this.passwordVisible,this.focus()},getInput:function(){return this.$refs.input||this.$refs.textarea},getSuffixVisible:function(){return this.$slots.suffix||this.suffixIcon||this.showClear||this.showPassword||this.isWordLimitVisible||this.validateState&&this.needStatusIcon}},created:function(){this.$on(\"inputSelect\",this.select)},mounted:function(){this.setNativeInputValue(),this.resizeTextarea(),this.updateIconOffset()},updated:function(){this.$nextTick(this.updateIconOffset)}},m=n(0),v=Object(m.a)(g,i,[],!1,null,null,null);v.options.__file=\"packages/input/src/input.vue\";var y=v.exports;y.install=function(e){e.component(y.name,y)};t.default=y},9:function(e,t){e.exports=n(\"jmaC\")}})},HKuw:function(e,t){var n=32,i=7;function r(e,t,n,i){var r=t+1;if(r===n)return 1;if(i(e[r++],e[t])<0){for(;r<n&&i(e[r],e[r-1])<0;)r++;!function(e,t,n){n--;for(;t<n;){var i=e[t];e[t++]=e[n],e[n--]=i}}(e,t,r)}else for(;r<n&&i(e[r],e[r-1])>=0;)r++;return r-t}function o(e,t,n,i,r){for(i===t&&i++;i<n;i++){for(var o,a=e[i],s=t,l=i;s<l;)r(a,e[o=s+l>>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:e[s+3]=e[s+2];case 2:e[s+2]=e[s+1];case 1:e[s+1]=e[s];break;default:for(;u>0;)e[s+u]=e[s+u-1],u--}e[s]=a}}function a(e,t,n,i,r,o){var a=0,s=0,l=1;if(o(e,t[n+r])>0){for(s=i-r;l<s&&o(e,t[n+r+l])>0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;l<s&&o(e,t[n+r-l])<=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a<l;){var c=a+(l-a>>>1);o(e,t[n+c])>0?a=c+1:l=c}return l}function s(e,t,n,i,r,o){var a=0,s=0,l=1;if(o(e,t[n+r])<0){for(s=r+1;l<s&&o(e,t[n+r-l])<0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l<s&&o(e,t[n+r+l])>=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a<l;){var c=a+(l-a>>>1);o(e,t[n+c])<0?l=c:a=c+1}return l}function l(e,t){var n,r,o,l=i,u=0;n=e.length;var c=[];function h(n){var h=r[n],d=o[n],f=r[n+1],p=o[n+1];o[n]=d+p,n===u-3&&(r[n+1]=r[n+2],o[n+1]=o[n+2]),u--;var g=s(e[f],e,h,d,0,t);h+=g,0!==(d-=g)&&0!==(p=a(e[h+d-1],e,f,p,p-1,t))&&(d<=p?function(n,r,o,u){var h=0;for(h=0;h<r;h++)c[h]=e[n+h];var d=0,f=o,p=n;if(e[p++]=e[f++],0==--u){for(h=0;h<r;h++)e[p+h]=c[d+h];return}if(1===r){for(h=0;h<u;h++)e[p+h]=e[f+h];return void(e[p+u]=c[d])}var g,m,v,y=l;for(;;){g=0,m=0,v=!1;do{if(t(e[f],c[d])<0){if(e[p++]=e[f++],m++,g=0,0==--u){v=!0;break}}else if(e[p++]=c[d++],g++,m=0,1==--r){v=!0;break}}while((g|m)<y);if(v)break;do{if(0!==(g=s(e[f],c,d,r,0,t))){for(h=0;h<g;h++)e[p+h]=c[d+h];if(p+=g,d+=g,(r-=g)<=1){v=!0;break}}if(e[p++]=e[f++],0==--u){v=!0;break}if(0!==(m=a(c[d],e,f,u,0,t))){for(h=0;h<m;h++)e[p+h]=e[f+h];if(p+=m,f+=m,0===(u-=m)){v=!0;break}}if(e[p++]=c[d++],1==--r){v=!0;break}y--}while(g>=i||m>=i);if(v)break;y<0&&(y=0),y+=2}if((l=y)<1&&(l=1),1===r){for(h=0;h<u;h++)e[p+h]=e[f+h];e[p+u]=c[d]}else{if(0===r)throw new Error;for(h=0;h<r;h++)e[p+h]=c[d+h]}}(h,d,f,p):function(n,r,o,u){var h=0;for(h=0;h<u;h++)c[h]=e[o+h];var d=n+r-1,f=u-1,p=o+u-1,g=0,m=0;if(e[p--]=e[d--],0==--r){for(g=p-(u-1),h=0;h<u;h++)e[g+h]=c[h];return}if(1===u){for(m=(p-=r)+1,g=(d-=r)+1,h=r-1;h>=0;h--)e[m+h]=e[g+h];return void(e[p]=c[f])}var v=l;for(;;){var y=0,b=0,x=!1;do{if(t(c[f],e[d])<0){if(e[p--]=e[d--],y++,b=0,0==--r){x=!0;break}}else if(e[p--]=c[f--],b++,y=0,1==--u){x=!0;break}}while((y|b)<v);if(x)break;do{if(0!==(y=r-s(c[f],e,n,r,r-1,t))){for(r-=y,m=(p-=y)+1,g=(d-=y)+1,h=y-1;h>=0;h--)e[m+h]=e[g+h];if(0===r){x=!0;break}}if(e[p--]=c[f--],1==--u){x=!0;break}if(0!==(b=u-a(e[d],c,0,u,u-1,t))){for(u-=b,m=(p-=b)+1,g=(f-=b)+1,h=0;h<b;h++)e[m+h]=c[g+h];if(u<=1){x=!0;break}}if(e[p--]=e[d--],0==--r){x=!0;break}v--}while(y>=i||b>=i);if(x)break;v<0&&(v=0),v+=2}(l=v)<1&&(l=1);if(1===u){for(m=(p-=r)+1,g=(d-=r)+1,h=r-1;h>=0;h--)e[m+h]=e[g+h];e[p]=c[f]}else{if(0===u)throw new Error;for(g=p-(u-1),h=0;h<u;h++)e[g+h]=c[h]}}(h,d,f,p))}r=[],o=[],this.mergeRuns=function(){for(;u>1;){var e=u-2;if(e>=1&&o[e-1]<=o[e]+o[e+1]||e>=2&&o[e-2]<=o[e]+o[e-1])o[e-1]<o[e+1]&&e--;else if(o[e]>o[e+1])break;h(e)}},this.forceMergeRuns=function(){for(;u>1;){var e=u-2;e>0&&o[e-1]<o[e+1]&&e--,h(e)}},this.pushRun=function(e,t){r[u]=e,o[u]=t,u+=1}}e.exports=function(e,t,i,a){i||(i=0),a||(a=e.length);var s=a-i;if(!(s<2)){var u=0;if(s<n)o(e,i,a,i+(u=r(e,i,a,t)),t);else{var c=new l(e,t),h=function(e){for(var t=0;e>=n;)t|=1&e,e>>=1;return e+t}(s);do{if((u=r(e,i,a,t))<h){var d=s;d>h&&(d=h),o(e,i,i+d,i+u,t),u=d}c.pushRun(i,u),c.mergeRuns(),s-=u,i+=u}while(0!==s);c.forceMergeRuns()}}}},HcG6:function(e,t,n){var i=n(\"/gxq\"),r=n(\"8b51\"),o=n(\"H4Od\"),a=n(\"AlF5\");function s(e,t,n,i){o.call(this,e),this.map=t;var r=a.load(t,n);this._nameCoordMap=r.nameCoordMap,this._regionsMap=r.regionsMap,this._invertLongitute=null==i||i,this.regions=r.regions,this._rect=r.boundingRect}function l(e,t,n,i){var r=n.geoModel,o=n.seriesModel,a=r?r.coordinateSystem:o?o.coordinateSystem||(o.getReferringComponents(\"geo\")[0]||{}).coordinateSystem:null;return a===this?a[e](i):null}s.prototype={constructor:s,type:\"geo\",dimensions:[\"lng\",\"lat\"],containCoord:function(e){for(var t=this.regions,n=0;n<t.length;n++)if(t[n].contain(e))return!0;return!1},transformTo:function(e,t,n,i){var o=this.getBoundingRect(),a=this._invertLongitute;o=o.clone(),a&&(o.y=-o.y-o.height);var s=this._rawTransformable;if(s.transform=o.calculateTransform(new r(e,t,n,i)),s.decomposeTransform(),a){var l=s.scale;l[1]=-l[1]}s.updateTransform(),this._updateTransform()},getRegion:function(e){return this._regionsMap.get(e)},getRegionByCoord:function(e){for(var t=this.regions,n=0;n<t.length;n++)if(t[n].contain(e))return t[n]},addGeoCoord:function(e,t){this._nameCoordMap.set(e,t)},getGeoCoord:function(e){return this._nameCoordMap.get(e)},getBoundingRect:function(){return this._rect},dataToPoint:function(e,t,n){if(\"string\"==typeof e&&(e=this.getGeoCoord(e)),e)return o.prototype.dataToPoint.call(this,e,t,n)},convertToPixel:i.curry(l,\"dataToPoint\"),convertFromPixel:i.curry(l,\"pointToData\")},i.mixin(s,o);var u=s;e.exports=u},HzcN:function(e,t,n){var i=n(\"uY1a\"),r=n(\"ON3O\");e.exports={throttle:i,debounce:r}},I0Vc:function(e,t,n){var i=n(\"g+yZ\").devicePixelRatio,r=n(\"/gxq\"),o=n(\"eZxa\"),a=n(\"8b51\"),s=n(\"HKuw\"),l=n(\"OT4p\"),u=n(\"a1Sp\"),c=n(\"MAom\"),h=n(\"YNzw\");function d(e){return parseInt(e,10)}var f=new a(0,0,0,0),p=new a(0,0,0,0);var g=function(e,t,n){this.type=\"canvas\";var o=!e.nodeName||\"CANVAS\"===e.nodeName.toUpperCase();this._opts=n=r.extend({},n||{}),this.dpr=n.devicePixelRatio||i,this._singleCanvas=o,this.root=e;var a=e.style;a&&(a[\"-webkit-tap-highlight-color\"]=\"transparent\",a[\"-webkit-user-select\"]=a[\"user-select\"]=a[\"-webkit-touch-callout\"]=\"none\",e.innerHTML=\"\"),this.storage=t;var s=this._zlevelList=[],u=this._layers={};if(this._layerConfig={},this._needsManuallyCompositing=!1,o){var c=e.width,h=e.height;null!=n.width&&(c=n.width),null!=n.height&&(h=n.height),this.dpr=n.devicePixelRatio||1,e.width=c*this.dpr,e.height=h*this.dpr,this._width=c,this._height=h;var d=new l(e,this,this.dpr);d.__builtin__=!0,d.initContext(),u[314159]=d,d.zlevel=314159,s.push(314159),this._domRoot=e}else{this._width=this._getSize(0),this._height=this._getSize(1);var f=this._domRoot=function(e,t){var n=document.createElement(\"div\");return n.style.cssText=[\"position:relative\",\"width:\"+e+\"px\",\"height:\"+t+\"px\",\"padding:0\",\"margin:0\",\"border-width:0\"].join(\";\")+\";\",n}(this._width,this._height);e.appendChild(f)}this._hoverlayer=null,this._hoverElements=[]};g.prototype={constructor:g,getType:function(){return\"canvas\"},isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},getViewportRootOffset:function(){var e=this.getViewportRoot();if(e)return{offsetLeft:e.offsetLeft||0,offsetTop:e.offsetTop||0}},refresh:function(e){var t=this.storage.getDisplayList(!0),n=this._zlevelList;this._redrawId=Math.random(),this._paintList(t,e,this._redrawId);for(var i=0;i<n.length;i++){var r=n[i],o=this._layers[r];if(!o.__builtin__&&o.refresh){var a=0===i?this._backgroundColor:null;o.refresh(a)}}return this.refreshHover(),this},addHover:function(e,t){if(!e.__hoverMir){var n=new e.constructor({style:e.style,shape:e.shape,z:e.z,z2:e.z2,silent:e.silent});return n.__from=e,e.__hoverMir=n,t&&n.setStyle(t),this._hoverElements.push(n),n}},removeHover:function(e){var t=e.__hoverMir,n=this._hoverElements,i=r.indexOf(n,t);i>=0&&n.splice(i,1),e.__hoverMir=null},clearHover:function(e){for(var t=this._hoverElements,n=0;n<t.length;n++){var i=t[n].__from;i&&(i.__hoverMir=null)}t.length=0},refreshHover:function(){var e=this._hoverElements,t=e.length,n=this._hoverlayer;if(n&&n.clear(),t){s(e,this.storage.displayableSortFunc),n||(n=this._hoverlayer=this.getLayer(1e5));var i={};n.ctx.save();for(var r=0;r<t;){var o=e[r],a=o.__from;a&&a.__zr?(r++,a.invisible||(o.transform=a.transform,o.invTransform=a.invTransform,o.__clipPaths=a.__clipPaths,this._doPaintEl(o,n,!0,i))):(e.splice(r,1),a.__hoverMir=null,t--)}n.ctx.restore()}},getHoverLayer:function(){return this.getLayer(1e5)},_paintList:function(e,t,n){if(this._redrawId===n){t=t||!1,this._updateLayerStatus(e);var i=this._doPaintList(e,t);if(this._needsManuallyCompositing&&this._compositeManually(),!i){var r=this;u(function(){r._paintList(e,t,n)})}}},_compositeManually:function(){var e=this.getLayer(314159).ctx,t=this._domRoot.width,n=this._domRoot.height;e.clearRect(0,0,t,n),this.eachBuiltinLayer(function(i){i.virtual&&e.drawImage(i.dom,0,0,t,n)})},_doPaintList:function(e,t){for(var n=[],i=0;i<this._zlevelList.length;i++){var o=this._zlevelList[i];(l=this._layers[o]).__builtin__&&l!==this._hoverlayer&&(l.__dirty||t)&&n.push(l)}for(var a=!0,s=0;s<n.length;s++){var l,u=(l=n[s]).ctx,c={};u.save();var d=t?l.__startIndex:l.__drawIndex,f=!t&&l.incremental&&Date.now,p=f&&Date.now(),g=l.zlevel===this._zlevelList[0]?this._backgroundColor:null;if(l.__startIndex===l.__endIndex)l.clear(!1,g);else if(d===l.__startIndex){var m=e[d];m.incremental&&m.notClear&&!t||l.clear(!1,g)}-1===d&&(console.error(\"For some unknown reason. drawIndex is -1\"),d=l.__startIndex);for(var v=d;v<l.__endIndex;v++){var y=e[v];if(this._doPaintEl(y,l,t,c),y.__dirty=y.__dirtyText=!1,f)if(Date.now()-p>15)break}l.__drawIndex=v,l.__drawIndex<l.__endIndex&&(a=!1),c.prevElClipPaths&&u.restore(),u.restore()}return h.wxa&&r.each(this._layers,function(e){e&&e.ctx&&e.ctx.draw&&e.ctx.draw()}),a},_doPaintEl:function(e,t,n,i){var r=t.ctx,o=e.transform;if((t.__dirty||n)&&!e.invisible&&0!==e.style.opacity&&(!o||o[0]||o[3])&&(!e.culling||!function(e,t,n){return f.copy(e.getBoundingRect()),e.transform&&f.applyTransform(e.transform),p.width=t,p.height=n,!f.intersect(p)}(e,this._width,this._height))){var a=e.__clipPaths,s=i.prevElClipPaths;s&&!function(e,t){if(e===t)return!1;if(!e||!t||e.length!==t.length)return!0;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!0;return!1}(a,s)||(s&&(r.restore(),i.prevElClipPaths=null,i.prevEl=null),a&&(r.save(),function(e,t){for(var n=0;n<e.length;n++){var i=e[n];i.setTransform(t),t.beginPath(),i.buildPath(t,i.shape),t.clip(),i.restoreTransform(t)}}(a,r),i.prevElClipPaths=a)),e.beforeBrush&&e.beforeBrush(r),e.brush(r,i.prevEl||null),i.prevEl=e,e.afterBrush&&e.afterBrush(r)}},getLayer:function(e,t){this._singleCanvas&&!this._needsManuallyCompositing&&(e=314159);var n=this._layers[e];return n||((n=new l(\"zr_\"+e,this,this.dpr)).zlevel=e,n.__builtin__=!0,this._layerConfig[e]?r.merge(n,this._layerConfig[e],!0):this._layerConfig[e-.01]&&r.merge(n,this._layerConfig[e-.01],!0),t&&(n.virtual=t),this.insertLayer(e,n),n.initContext()),n},insertLayer:function(e,t){var n=this._layers,i=this._zlevelList,r=i.length,a=null,s=-1,l=this._domRoot;if(n[e])o(\"ZLevel \"+e+\" has been used already\");else if(function(e){return!!e&&(!!e.__builtin__||\"function\"==typeof e.resize&&\"function\"==typeof e.refresh)}(t)){if(r>0&&e>i[0]){for(s=0;s<r-1&&!(i[s]<e&&i[s+1]>e);s++);a=n[i[s]]}if(i.splice(s+1,0,e),n[e]=t,!t.virtual)if(a){var u=a.dom;u.nextSibling?l.insertBefore(t.dom,u.nextSibling):l.appendChild(t.dom)}else l.firstChild?l.insertBefore(t.dom,l.firstChild):l.appendChild(t.dom)}else o(\"Layer of zlevel \"+e+\" is not valid\")},eachLayer:function(e,t){var n,i,r=this._zlevelList;for(i=0;i<r.length;i++)n=r[i],e.call(t,this._layers[n],n)},eachBuiltinLayer:function(e,t){var n,i,r,o=this._zlevelList;for(r=0;r<o.length;r++)i=o[r],(n=this._layers[i]).__builtin__&&e.call(t,n,i)},eachOtherLayer:function(e,t){var n,i,r,o=this._zlevelList;for(r=0;r<o.length;r++)i=o[r],(n=this._layers[i]).__builtin__||e.call(t,n,i)},getLayers:function(){return this._layers},_updateLayerStatus:function(e){function t(e){r&&(r.__endIndex!==e&&(r.__dirty=!0),r.__endIndex=e)}if(this.eachBuiltinLayer(function(e,t){e.__dirty=e.__used=!1}),this._singleCanvas)for(var n=1;n<e.length;n++){if((s=e[n]).zlevel!==e[n-1].zlevel||s.incremental){this._needsManuallyCompositing=!0;break}}var i,r=null,a=0;for(n=0;n<e.length;n++){var s,l,u=(s=e[n]).zlevel;i!==u&&(i=u,a=0),s.incremental?((l=this.getLayer(u+.001,this._needsManuallyCompositing)).incremental=!0,a=1):l=this.getLayer(u+(a>0?.01:0),this._needsManuallyCompositing),l.__builtin__||o(\"ZLevel \"+u+\" has been used by unkown layer \"+l.id),l!==r&&(l.__used=!0,l.__startIndex!==n&&(l.__dirty=!0),l.__startIndex=n,l.incremental?l.__drawIndex=-1:l.__drawIndex=n,t(n),r=l),s.__dirty&&(l.__dirty=!0,l.incremental&&l.__drawIndex<0&&(l.__drawIndex=n))}t(n),this.eachBuiltinLayer(function(e,t){!e.__used&&e.getElementCount()>0&&(e.__dirty=!0,e.__startIndex=e.__endIndex=e.__drawIndex=0),e.__dirty&&e.__drawIndex<0&&(e.__drawIndex=e.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(e){e.clear()},setBackgroundColor:function(e){this._backgroundColor=e},configLayer:function(e,t){if(t){var n=this._layerConfig;n[e]?r.merge(n[e],t,!0):n[e]=t;for(var i=0;i<this._zlevelList.length;i++){var o=this._zlevelList[i];if(o===e||o===e+.01){var a=this._layers[o];r.merge(a,n[e],!0)}}}},delLayer:function(e){var t=this._layers,n=this._zlevelList,i=t[e];i&&(i.dom.parentNode.removeChild(i.dom),delete t[e],n.splice(r.indexOf(n,e),1))},resize:function(e,t){if(this._domRoot.style){var n=this._domRoot;n.style.display=\"none\";var i=this._opts;if(null!=e&&(i.width=e),null!=t&&(i.height=t),e=this._getSize(0),t=this._getSize(1),n.style.display=\"\",this._width!==e||t!==this._height){for(var o in n.style.width=e+\"px\",n.style.height=t+\"px\",this._layers)this._layers.hasOwnProperty(o)&&this._layers[o].resize(e,t);r.each(this._progressiveLayers,function(n){n.resize(e,t)}),this.refresh(!0)}this._width=e,this._height=t}else{if(null==e||null==t)return;this._width=e,this._height=t,this.getLayer(314159).resize(e,t)}return this},clearLayer:function(e){var t=this._layers[e];t&&t.clear()},dispose:function(){this.root.innerHTML=\"\",this.root=this.storage=this._domRoot=this._layers=null},getRenderedCanvas:function(e){if(e=e||{},this._singleCanvas&&!this._compositeManually)return this._layers[314159].dom;var t=new l(\"image\",this,e.pixelRatio||this.dpr);if(t.initContext(),t.clear(!1,e.backgroundColor||this._backgroundColor),e.pixelRatio<=this.dpr){this.refresh();var n=t.dom.width,i=t.dom.height,r=t.ctx;this.eachLayer(function(e){e.__builtin__?r.drawImage(e.dom,0,0,n,i):e.renderToCanvas&&(t.ctx.save(),e.renderToCanvas(t.ctx),t.ctx.restore())})}else for(var o={},a=this.storage.getDisplayList(!0),s=0;s<a.length;s++){var u=a[s];this._doPaintEl(u,t,!0,o)}return t.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(e){var t=this._opts,n=[\"width\",\"height\"][e],i=[\"clientWidth\",\"clientHeight\"][e],r=[\"paddingLeft\",\"paddingTop\"][e],o=[\"paddingRight\",\"paddingBottom\"][e];if(null!=t[n]&&\"auto\"!==t[n])return parseFloat(t[n]);var a=this.root,s=document.defaultView.getComputedStyle(a);return(a[i]||d(s[n])||d(a.style[n]))-(d(s[r])||0)-(d(s[o])||0)|0},pathToImage:function(e,t){t=t||this.dpr;var n=document.createElement(\"canvas\"),i=n.getContext(\"2d\"),r=e.getBoundingRect(),o=e.style,a=o.shadowBlur*t,s=o.shadowOffsetX*t,l=o.shadowOffsetY*t,u=o.hasStroke()?o.lineWidth:0,h=Math.max(u/2,-s+a),d=Math.max(u/2,s+a),f=Math.max(u/2,-l+a),p=Math.max(u/2,l+a),g=r.width+h+d,m=r.height+f+p;n.width=g*t,n.height=m*t,i.scale(t,t),i.clearRect(0,0,g,m),i.dpr=t;var v={position:e.position,rotation:e.rotation,scale:e.scale};e.position=[h-r.x,f-r.y],e.rotation=0,e.scale=[1,1],e.updateTransform(),e&&e.brush(i);var y=new c({style:{x:0,y:0,image:n}});return null!=v.position&&(y.position=e.position=v.position),null!=v.rotation&&(y.rotation=e.rotation=v.rotation),null!=v.scale&&(y.scale=e.scale=v.scale),y}};var m=g;e.exports=m},ILx8:function(e,t,n){n(\"UkNE\"),n(\"D7EH\"),n(\"AKXb\")},ISYW:function(e,t,n){\"use strict\";t.__esModule=!0;var i,r=n(\"7+uW\"),o=(i=r)&&i.__esModule?i:{default:i},a=n(\"2kvA\");var s=[],l=\"@@clickoutsideContext\",u=void 0,c=0;function h(e,t,n){return function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(n&&n.context&&i.target&&r.target)||e.contains(i.target)||e.contains(r.target)||e===i.target||n.context.popperElm&&(n.context.popperElm.contains(i.target)||n.context.popperElm.contains(r.target))||(t.expression&&e[l].methodName&&n.context[e[l].methodName]?n.context[e[l].methodName]():e[l].bindingFn&&e[l].bindingFn())}}!o.default.prototype.$isServer&&(0,a.on)(document,\"mousedown\",function(e){return u=e}),!o.default.prototype.$isServer&&(0,a.on)(document,\"mouseup\",function(e){s.forEach(function(t){return t[l].documentHandler(e,u)})}),t.default={bind:function(e,t,n){s.push(e);var i=c++;e[l]={id:i,documentHandler:h(e,t,n),methodName:t.expression,bindingFn:t.value}},update:function(e,t,n){e[l].documentHandler=h(e,t,n),e[l].methodName=t.expression,e[l].bindingFn=t.value},unbind:function(e){for(var t=s.length,n=0;n<t;n++)if(s[n][l].id===e[l].id){s.splice(n,1);break}delete e[l]}}},ITiI:function(e,t,n){var i=n(\"C7PF\"),r=i.scaleAndAdd;t.forceLayout=function(e,t,n){for(var o=n.rect,a=o.width,s=o.height,l=[o.x+a/2,o.y+s/2],u=null==n.gravity?.1:n.gravity,c=0;c<e.length;c++){var h=e[c];h.p||(h.p=i.create(a*(Math.random()-.5)+l[0],s*(Math.random()-.5)+l[1])),h.pp=i.clone(h.p),h.edges=null}var d=null==n.friction?.6:n.friction,f=d;return{warmUp:function(){f=.8*d},setFixed:function(t){e[t].fixed=!0},setUnfixed:function(t){e[t].fixed=!1},step:function(n){for(var o=[],a=e.length,s=0;s<t.length;s++){var c=t[s];if(!c.ignoreForceLayout){var h=c.n1,d=c.n2;i.sub(o,d.p,h.p);var p=i.len(o)-c.d,g=d.w/(h.w+d.w);isNaN(g)&&(g=0),i.normalize(o,o),!h.fixed&&r(h.p,h.p,o,g*p*f),!d.fixed&&r(d.p,d.p,o,-(1-g)*p*f)}}for(s=0;s<a;s++)(b=e[s]).fixed||(i.sub(o,l,b.p),r(b.p,b.p,o,u*f));for(s=0;s<a;s++){h=e[s];for(var m=s+1;m<a;m++){d=e[m],i.sub(o,d.p,h.p),0===(p=i.len(o))&&(i.set(o,Math.random()-.5,Math.random()-.5),p=1);var v=(h.rep+d.rep)/p/p;!h.fixed&&r(h.pp,h.pp,o,v),!d.fixed&&r(d.pp,d.pp,o,-v)}}var y=[];for(s=0;s<a;s++){var b;(b=e[s]).fixed||(i.sub(y,b.p,b.pp),r(b.p,b.p,y,f),i.copy(b.pp,b.p))}f*=.992,n&&n(e,t,f<.01)}}}},Ibhu:function(e,t,n){var i=n(\"D2L2\"),r=n(\"TcQ7\"),o=n(\"vFc/\")(!1),a=n(\"ax3d\")(\"IE_PROTO\");e.exports=function(e,t){var n,s=r(e),l=0,u=[];for(n in s)n!=a&&i(s,n)&&u.push(n);for(;t.length>l;)i(s,n=t[l++])&&(~o(u,n)||u.push(n));return u}},Icdr:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"hv2j\"),r=n(\"/gxq\"),o=n(\"DRaW\"),a=n(\"YNzw\"),s=n(\"HKuw\"),l=n(\"qjvV\"),u=n(\"Rtf0\"),c=n(\"uJBW\"),h=n(\"rctg\"),d=n(\"em4M\"),f=n(\"8V5i\"),p=n(\"fYRm\"),g=n(\"Y5nL\"),m=n(\"EJsE\"),v=n(\"Pgdp\"),y=n(\"Ylhr\"),b=n(\"0sHC\"),x=n(\"vXqC\"),_=n(\"QD+P\").throttle,w=n(\"n5nI\"),C=n(\"QDiV\"),S=n(\"OkSz\"),k=n(\"vub9\"),T=n(\"/xsj\"),M=n(\"4oYY\");n(\"+Dgo\");var D=n(\"0MNY\"),A=r.assert,I=r.each,O=r.isFunction,E=r.isObject,L=g.parseClassType,P=1e3,N=1e3,R=3e3,B={PROCESSOR:{FILTER:P,SERIES_FILTER:800,STATISTIC:5e3},VISUAL:{LAYOUT:N,PROGRESSIVE_LAYOUT:1100,GLOBAL:2e3,CHART:R,POST_CHART_LAYOUT:3500,COMPONENT:4e3,BRUSH:5e3}},z=\"__flagInMainProcess\",F=\"__optionUpdated\",$=/^[a-zA-Z0-9_]+$/;function V(e,t){return function(n,i,r){t||!this._disposed?(n=n&&n.toLowerCase(),l.prototype[e].call(this,n,i,r)):this.id}}function j(){l.call(this)}function H(e,t,n){n=n||{},\"string\"==typeof t&&(t=fe[t]),this.id,this.group,this._dom=e;var o=this._zr=i.init(e,{renderer:n.renderer||\"canvas\",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=_(r.bind(o.flush,o),17),(t=r.clone(t))&&f(t,!0),this._theme=t,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new h;var a,u,d=this._api=(u=(a=this)._coordSysMgr,r.extend(new c(a),{getCoordinateSystems:r.bind(u.getCoordinateSystems,u),getComponentByElement:function(e){for(;e;){var t=e.__ecComponentInfo;if(null!=t)return a._model.getComponent(t.mainType,t.index);e=e.parent}}}));function p(e,t){return e.__prio-t.__prio}s(de,p),s(ue,p),this._scheduler=new k(this,d,ue,de),l.call(this,this._ecEventProcessor=new ae),this._messageCenter=new j,this._initEvents(),this.resize=r.bind(this.resize,this),this._pendingActions=[],o.animation.on(\"frame\",this._onframe,this),function(e,t){e.on(\"rendered\",function(){t.trigger(\"rendered\"),!e.animation.isFinished()||t[F]||t._scheduler.unfinished||t._pendingActions.length||t.trigger(\"finished\")})}(o,this),r.setAsPrimitive(this)}j.prototype.on=V(\"on\",!0),j.prototype.off=V(\"off\",!0),j.prototype.one=V(\"one\",!0),r.mixin(j,l);var W=H.prototype;function q(e,t,n){if(this._disposed)this.id;else{var i,r=this._model,o=this._coordSysMgr.getCoordinateSystems();t=x.parseFinder(r,t);for(var a=0;a<o.length;a++){var s=o[a];if(s[e]&&null!=(i=s[e](r,t,n)))return i}}}W._onframe=function(){if(!this._disposed){var e=this._scheduler;if(this[F]){var t=this[F].silent;this[z]=!0,U(this),G.update.call(this),this[z]=!1,this[F]=!1,Z.call(this,t),J.call(this,t)}else if(e.unfinished){var n=1,i=this._model,r=this._api;e.unfinished=!1;do{var o=+new Date;e.performSeriesTasks(i),e.performDataProcessorTasks(i),X(this,i),e.performVisualTasks(i),ne(this,this._model,r,\"remain\"),n-=+new Date-o}while(n>0&&e.unfinished);e.unfinished||this._zr.flush()}}},W.getDom=function(){return this._dom},W.getZr=function(){return this._zr},W.setOption=function(e,t,n){if(this._disposed)this.id;else{var i;if(E(t)&&(n=t.lazyUpdate,i=t.silent,t=t.notMerge),this[z]=!0,!this._model||t){var r=new d(this._api),o=this._theme,a=this._model=new u;a.scheduler=this._scheduler,a.init(null,null,o,r)}this._model.setOption(e,ce),n?(this[F]={silent:i},this[z]=!1):(U(this),G.update.call(this),this._zr.flush(),this[F]=!1,this[z]=!1,Z.call(this,i),J.call(this,i))}},W.setTheme=function(){console.error(\"ECharts#setTheme() is DEPRECATED in ECharts 3.0\")},W.getModel=function(){return this._model},W.getOption=function(){return this._model&&this._model.getOption()},W.getWidth=function(){return this._zr.getWidth()},W.getHeight=function(){return this._zr.getHeight()},W.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},W.getRenderedCanvas=function(e){if(a.canvasSupported)return(e=e||{}).pixelRatio=e.pixelRatio||1,e.backgroundColor=e.backgroundColor||this._model.get(\"backgroundColor\"),this._zr.painter.getRenderedCanvas(e)},W.getSvgDataURL=function(){if(a.svgSupported){var e=this._zr,t=e.storage.getDisplayList();return r.each(t,function(e){e.stopAnimation(!0)}),e.painter.toDataURL()}},W.getDataURL=function(e){if(!this._disposed){var t=(e=e||{}).excludeComponents,n=this._model,i=[],r=this;I(t,function(e){n.eachComponent({mainType:e},function(e){var t=r._componentsMap[e.__viewId];t.group.ignore||(i.push(t),t.group.ignore=!0)})});var o=\"svg\"===this._zr.painter.getType()?this.getSvgDataURL():this.getRenderedCanvas(e).toDataURL(\"image/\"+(e&&e.type||\"png\"));return I(i,function(e){e.group.ignore=!1}),o}this.id},W.getConnectedDataURL=function(e){if(this._disposed)this.id;else if(a.canvasSupported){var t=\"svg\"===e.type,n=this.group,o=Math.min,s=Math.max;if(me[n]){var l=1/0,u=1/0,c=-1/0,h=-1/0,d=[],f=e&&e.pixelRatio||1;r.each(ge,function(i,a){if(i.group===n){var f=t?i.getZr().painter.getSvgDom().innerHTML:i.getRenderedCanvas(r.clone(e)),p=i.getDom().getBoundingClientRect();l=o(p.left,l),u=o(p.top,u),c=s(p.right,c),h=s(p.bottom,h),d.push({dom:f,left:p.left,top:p.top})}});var p=(c*=f)-(l*=f),g=(h*=f)-(u*=f),m=r.createCanvas(),v=i.init(m,{renderer:t?\"svg\":\"canvas\"});if(v.resize({width:p,height:g}),t){var y=\"\";return I(d,function(e){var t=e.left-l,n=e.top-u;y+='<g transform=\"translate('+t+\",\"+n+')\">'+e.dom+\"</g>\"}),v.painter.getSvgRoot().innerHTML=y,e.connectedBackgroundColor&&v.painter.setBackgroundColor(e.connectedBackgroundColor),v.refreshImmediately(),v.painter.toDataURL()}return e.connectedBackgroundColor&&v.add(new b.Rect({shape:{x:0,y:0,width:p,height:g},style:{fill:e.connectedBackgroundColor}})),I(d,function(e){var t=new b.Image({style:{x:e.left*f-l,y:e.top*f-u,image:e.dom}});v.add(t)}),v.refreshImmediately(),m.toDataURL(\"image/\"+(e&&e.type||\"png\"))}return this.getDataURL(e)}},W.convertToPixel=r.curry(q,\"convertToPixel\"),W.convertFromPixel=r.curry(q,\"convertFromPixel\"),W.containPixel=function(e,t){if(!this._disposed){var n,i=this._model;return e=x.parseFinder(i,e),r.each(e,function(e,i){i.indexOf(\"Models\")>=0&&r.each(e,function(e){var r=e.coordinateSystem;if(r&&r.containPoint)n|=!!r.containPoint(t);else if(\"seriesModels\"===i){var o=this._chartsMap[e.__viewId];o&&o.containPoint&&(n|=o.containPoint(t,e))}},this)},this),!!n}this.id},W.getVisual=function(e,t){var n=this._model,i=(e=x.parseFinder(n,e,{defaultMainType:\"series\"})).seriesModel.getData(),r=e.hasOwnProperty(\"dataIndexInside\")?e.dataIndexInside:e.hasOwnProperty(\"dataIndex\")?i.indexOfRawIndex(e.dataIndex):null;return null!=r?i.getItemVisual(r,t):i.getVisual(t)},W.getViewOfComponentModel=function(e){return this._componentsMap[e.__viewId]},W.getViewOfSeriesModel=function(e){return this._chartsMap[e.__viewId]};var G={prepareAndUpdate:function(e){U(this),G.update.call(this,e)},update:function(e){var t=this._model,n=this._api,i=this._zr,r=this._coordSysMgr,s=this._scheduler;if(t){s.restoreData(t,e),s.performSeriesTasks(t),r.create(t,n),s.performDataProcessorTasks(t,e),X(this,t),r.update(t,n),ee(t),s.performVisualTasks(t,e),te(this,t,n,e);var l=t.get(\"backgroundColor\")||\"transparent\";if(a.canvasSupported)i.setBackgroundColor(l);else{var u=o.parse(l);l=o.stringify(u,\"rgb\"),0===u[3]&&(l=\"transparent\")}ie(t,n)}},updateTransform:function(e){var t=this._model,n=this,i=this._api;if(t){var o=[];t.eachComponent(function(r,a){var s=n.getViewOfComponentModel(a);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(a,t,i,e);l&&l.update&&o.push(s)}else o.push(s)});var a=r.createHashMap();t.eachSeries(function(r){var o=n._chartsMap[r.__viewId];if(o.updateTransform){var s=o.updateTransform(r,t,i,e);s&&s.update&&a.set(r.uid,1)}else a.set(r.uid,1)}),ee(t),this._scheduler.performVisualTasks(t,e,{setDirty:!0,dirtyMap:a}),ne(n,t,i,e,a),ie(t,this._api)}},updateView:function(e){var t=this._model;t&&(y.markUpdateMethod(e,\"updateView\"),ee(t),this._scheduler.performVisualTasks(t,e,{setDirty:!0}),te(this,this._model,this._api,e),ie(t,this._api))},updateVisual:function(e){G.update.call(this,e)},updateLayout:function(e){G.update.call(this,e)}};function U(e){var t=e._model,n=e._scheduler;n.restorePipelines(t),n.prepareStageTasks(),Q(e,\"component\",t,n),Q(e,\"chart\",t,n),n.plan()}function Y(e,t,n,i,o){var a=e._model;if(i){var s={};s[i+\"Id\"]=n[i+\"Id\"],s[i+\"Index\"]=n[i+\"Index\"],s[i+\"Name\"]=n[i+\"Name\"];var l={mainType:i,query:s};o&&(l.subType=o);var u=n.excludeSeriesId;null!=u&&(u=r.createHashMap(x.normalizeToArray(u))),a&&a.eachComponent(l,function(t){u&&null!=u.get(t.id)||c(e[\"series\"===i?\"_chartsMap\":\"_componentsMap\"][t.__viewId])},e)}else I(e._componentsViews.concat(e._chartsViews),c);function c(i){i&&i.__alive&&i[t]&&i[t](i.__model,a,e._api,n)}}function X(e,t){var n=e._chartsMap,i=e._scheduler;t.eachSeries(function(e){i.updateStreamModes(e,n[e.__viewId])})}function K(e,t){var n=e.type,i=e.escapeConnect,o=se[n],a=o.actionInfo,s=(a.update||\"update\").split(\":\"),l=s.pop();s=null!=s[0]&&L(s[0]),this[z]=!0;var u=[e],c=!1;e.batch&&(c=!0,u=r.map(e.batch,function(t){return(t=r.defaults(r.extend({},t),e)).batch=null,t}));var h,d=[],f=\"highlight\"===n||\"downplay\"===n;I(u,function(e){(h=(h=o.action(e,this._model,this._api))||r.extend({},e)).type=a.event||h.type,d.push(h),f?Y(this,l,e,\"series\"):s&&Y(this,l,e,s.main,s.sub)},this),\"none\"===l||f||s||(this[F]?(U(this),G.update.call(this,e),this[F]=!1):G[l].call(this,e)),h=c?{type:a.event||n,escapeConnect:i,batch:d}:d[0],this[z]=!1,!t&&this._messageCenter.trigger(h.type,h)}function Z(e){for(var t=this._pendingActions;t.length;){var n=t.shift();K.call(this,n,e)}}function J(e){!e&&this.trigger(\"updated\")}function Q(e,t,n,i){for(var r=\"component\"===t,o=r?e._componentsViews:e._chartsViews,a=r?e._componentsMap:e._chartsMap,s=e._zr,l=e._api,u=0;u<o.length;u++)o[u].__alive=!1;function c(e){var t=\"_ec_\"+e.id+\"_\"+e.type,u=a[t];if(!u){var c=L(e.type);(u=new(r?v.getClass(c.main,c.sub):y.getClass(c.sub))).init(n,l),a[t]=u,o.push(u),s.add(u.group)}e.__viewId=u.__id=t,u.__alive=!0,u.__model=e,u.group.__ecComponentInfo={mainType:e.mainType,index:e.componentIndex},!r&&i.prepareView(u,e,n,l)}r?n.eachComponent(function(e,t){\"series\"!==e&&c(t)}):n.eachSeries(c);for(u=0;u<o.length;){var h=o[u];h.__alive?u++:(!r&&h.renderTask.dispose(),s.remove(h.group),h.dispose(n,l),o.splice(u,1),delete a[h.__id],h.__id=h.group.__ecComponentInfo=null)}}function ee(e){e.clearColorPalette(),e.eachSeries(function(e){e.clearColorPalette()})}function te(e,t,n,i){!function(e,t,n,i,r){I(r||e._componentsViews,function(e){var r=e.__model;e.render(r,t,n,i),oe(r,e)})}(e,t,n,i),I(e._chartsViews,function(e){e.__alive=!1}),ne(e,t,n,i),I(e._chartsViews,function(e){e.__alive||e.remove(t,n)})}function ne(e,t,n,i,r){var o,s=e._scheduler;t.eachSeries(function(t){var n=e._chartsMap[t.__viewId];n.__alive=!0;var a=n.renderTask;s.updatePayload(a,i),r&&r.get(t.uid)&&a.dirty(),o|=a.perform(s.getPerformArgs(a)),n.group.silent=!!t.get(\"silent\"),oe(t,n),function(e,t){var n=e.get(\"blendMode\")||null;t.group.traverse(function(e){e.isGroup||e.style.blend!==n&&e.setStyle(\"blend\",n),e.eachPendingDisplayable&&e.eachPendingDisplayable(function(e){e.setStyle(\"blend\",n)})})}(t,n)}),s.unfinished|=o,function(e,t){var n=0;e._zr.storage.traverse(function(e){n++}),n>t.get(\"hoverLayerThreshold\")&&!a.node&&t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var n=e._chartsMap[t.__viewId];n.__alive&&n.group.traverse(function(e){e.useHoverLayer=!0})}})}(e,t),C(e._zr.dom,t)}function ie(e,t){I(he,function(n){n(e,t)})}W.resize=function(e){if(this._disposed)this.id;else{this._zr.resize(e);var t=this._model;if(this._loadingFX&&this._loadingFX.resize(),t){var n=t.resetOption(\"media\"),i=e&&e.silent;this[z]=!0,n&&U(this),G.update.call(this),this[z]=!1,Z.call(this,i),J.call(this,i)}}},W.showLoading=function(e,t){if(this._disposed)this.id;else if(E(e)&&(t=e,e=\"\"),e=e||\"default\",this.hideLoading(),pe[e]){var n=pe[e](this._api,t),i=this._zr;this._loadingFX=n,i.add(n)}},W.hideLoading=function(){this._disposed?this.id:(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},W.makeActionFromEvent=function(e){var t=r.extend({},e);return t.type=le[e.type],t},W.dispatchAction=function(e,t){this._disposed?this.id:(E(t)||(t={silent:!!t}),se[e.type]&&this._model&&(this[z]?this._pendingActions.push(e):(K.call(this,e,t.silent),t.flush?this._zr.flush(!0):!1!==t.flush&&a.browser.weChat&&this._throttledZrFlush(),Z.call(this,t.silent),J.call(this,t.silent))))},W.appendData=function(e){if(this._disposed)this.id;else{var t=e.seriesIndex;this.getModel().getSeriesByIndex(t).appendData(e),this._scheduler.unfinished=!0}},W.on=V(\"on\",!1),W.off=V(\"off\",!1),W.one=V(\"one\",!1);var re=[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"mousemove\",\"mousedown\",\"mouseup\",\"globalout\",\"contextmenu\"];function oe(e,t){var n=e.get(\"z\"),i=e.get(\"zlevel\");t.group.traverse(function(e){\"group\"!==e.type&&(null!=n&&(e.z=n),null!=i&&(e.zlevel=i))})}function ae(){this.eventInfo}W._initEvents=function(){I(re,function(e){var t=function(t){var n,i=this.getModel(),o=t.target;if(\"globalout\"===e)n={};else if(o&&null!=o.dataIndex){var a=o.dataModel||i.getSeriesByIndex(o.seriesIndex);n=a&&a.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(n=r.extend({},o.eventData));if(n){var s=n.componentType,l=n.componentIndex;\"markLine\"!==s&&\"markPoint\"!==s&&\"markArea\"!==s||(s=\"series\",l=n.seriesIndex);var u=s&&null!=l&&i.getComponent(s,l),c=u&&this[\"series\"===u.mainType?\"_chartsMap\":\"_componentsMap\"][u.__viewId];n.event=t,n.type=e,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:c},this.trigger(e,n)}};t.zrEventfulCallAtLast=!0,this._zr.on(e,t,this)},this),I(le,function(e,t){this._messageCenter.on(t,function(e){this.trigger(t,e)},this)},this)},W.isDisposed=function(){return this._disposed},W.clear=function(){this._disposed?this.id:this.setOption({series:[]},!0)},W.dispose=function(){if(this._disposed)this.id;else{this._disposed=!0,x.setAttribute(this.getDom(),be,\"\");var e=this._api,t=this._model;I(this._componentsViews,function(n){n.dispose(t,e)}),I(this._chartsViews,function(n){n.dispose(t,e)}),this._zr.dispose(),delete ge[this.id]}},r.mixin(H,l),ae.prototype={constructor:ae,normalizeQuery:function(e){var t={},n={},i={};if(r.isString(e)){var o=L(e);t.mainType=o.main||null,t.subType=o.sub||null}else{var a=[\"Index\",\"Name\",\"Id\"],s={name:1,dataIndex:1,dataType:1};r.each(e,function(e,r){for(var o=!1,l=0;l<a.length;l++){var u=a[l],c=r.lastIndexOf(u);if(c>0&&c===r.length-u.length){var h=r.slice(0,c);\"data\"!==h&&(t.mainType=h,t[u.toLowerCase()]=e,o=!0)}}s.hasOwnProperty(r)&&(n[r]=e,o=!0),o||(i[r]=e)})}return{cptQuery:t,dataQuery:n,otherQuery:i}},filter:function(e,t,n){var i=this.eventInfo;if(!i)return!0;var r=i.targetEl,o=i.packedEvent,a=i.model,s=i.view;if(!a||!s)return!0;var l=t.cptQuery,u=t.dataQuery;return c(l,a,\"mainType\")&&c(l,a,\"subType\")&&c(l,a,\"index\",\"componentIndex\")&&c(l,a,\"name\")&&c(l,a,\"id\")&&c(u,o,\"name\")&&c(u,o,\"dataIndex\")&&c(u,o,\"dataType\")&&(!s.filterForExposedEvent||s.filterForExposedEvent(e,t.otherQuery,r,o));function c(e,t,n,i){return null==e[n]||t[i||n]===e[n]}},afterTrigger:function(){this.eventInfo=null}};var se={},le={},ue=[],ce=[],he=[],de=[],fe={},pe={},ge={},me={},ve=new Date-0,ye=new Date-0,be=\"_echarts_instance_\";function xe(e){me[e]=!1}var _e=xe;function we(e){return ge[x.getAttribute(e,be)]}function Ce(e,t){fe[e]=t}function Se(e){ce.push(e)}function ke(e,t){De(ue,e,t,P)}function Te(e,t,n){\"function\"==typeof t&&(n=t,t=\"\");var i=E(e)?e.type:[e,e={event:t}][0];e.event=(e.event||i).toLowerCase(),t=e.event,A($.test(i)&&$.test(t)),se[i]||(se[i]={action:n,actionInfo:e}),le[t]=i}function Me(e,t){De(de,e,t,R,\"visual\")}function De(e,t,n,i,r){(O(t)||E(t))&&(n=t,t=i);var o=k.wrapStageHandler(n,r);return o.__prio=t,o.__raw=n,e.push(o),o}function Ae(e,t){pe[e]=t}Me(2e3,w),Se(f),ke(900,p),Ae(\"default\",S),Te({type:\"highlight\",event:\"highlight\",update:\"highlight\"},r.noop),Te({type:\"downplay\",event:\"downplay\",update:\"downplay\"},r.noop),Ce(\"light\",T),Ce(\"dark\",M);t.version=\"4.8.0\",t.dependencies={zrender:\"4.3.1\"},t.PRIORITY=B,t.init=function(e,t,n){var i=we(e);if(i)return i;var r=new H(e,t,n);return r.id=\"ec_\"+ve++,ge[r.id]=r,x.setAttribute(e,be,r.id),function(e){var t=\"__connectUpdateStatus\";function n(e,n){for(var i=0;i<e.length;i++)e[i][t]=n}I(le,function(i,r){e._messageCenter.on(r,function(i){if(me[e.group]&&0!==e[t]){if(i&&i.escapeConnect)return;var r=e.makeActionFromEvent(i),o=[];I(ge,function(t){t!==e&&t.group===e.group&&o.push(t)}),n(o,0),I(o,function(e){1!==e[t]&&e.dispatchAction(r)}),n(o,2)}})})}(r),r},t.connect=function(e){if(r.isArray(e)){var t=e;e=null,I(t,function(t){null!=t.group&&(e=t.group)}),e=e||\"g_\"+ye++,I(t,function(t){t.group=e})}return me[e]=!0,e},t.disConnect=xe,t.disconnect=_e,t.dispose=function(e){\"string\"==typeof e?e=ge[e]:e instanceof H||(e=we(e)),e instanceof H&&!e.isDisposed()&&e.dispose()},t.getInstanceByDom=we,t.getInstanceById=function(e){return ge[e]},t.registerTheme=Ce,t.registerPreprocessor=Se,t.registerProcessor=ke,t.registerPostUpdate=function(e){he.push(e)},t.registerAction=Te,t.registerCoordinateSystem=function(e,t){h.register(e,t)},t.getCoordinateSystemDimensions=function(e){var t=h.get(e);if(t)return t.getDimensionsInfo?t.getDimensionsInfo():t.dimensions.slice()},t.registerLayout=function(e,t){De(de,e,t,N,\"layout\")},t.registerVisual=Me,t.registerLoading=Ae,t.extendComponentModel=function(e){return g.extend(e)},t.extendComponentView=function(e){return v.extend(e)},t.extendSeriesModel=function(e){return m.extend(e)},t.extendChartView=function(e){return y.extend(e)},t.setCanvasCreator=function(e){r.$override(\"createCanvas\",e)},t.registerMap=function(e,t,n){D.registerMap(e,t,n)},t.getMap=function(e){var t=D.retrieveMap(e);return t&&t[0]&&{geoJson:t[0].geoJSON,specialAreas:t[0].specialAreas}},t.dataTool={};var Ie=n(\"iNHu\");!function(){for(var e in Ie)Ie.hasOwnProperty(e)&&(t[e]=Ie[e])}()},IeRB:function(e,t,n){var i=n(\"Icdr\");n(\"+K7g\"),i.registerAction({type:\"dragNode\",event:\"dragnode\",update:\"update\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"sankey\",query:e},function(t){t.setNodePosition(e.dataIndex,[e.localX,e.localY])})})},IkDM:function(e,t,n){var i=n(\"0sHC\"),r=n(\"1Xuh\"),o=n(\"/gxq\"),a=n(\"gOx9\").wrapTreePathInfo,s=5;function l(e){this.group=new i.Group,e.add(this.group)}function u(e,t,n,i,r,o){var a=[[r?e:e-s,t],[e+n,t],[e+n,t+i],[r?e:e-s,t+i]];return!o&&a.splice(2,0,[e+n+s,t+i/2]),!r&&a.push([e,t+i/2]),a}function c(e,t,n){e.eventData={componentType:\"series\",componentSubType:\"treemap\",componentIndex:t.componentIndex,seriesIndex:t.componentIndex,seriesName:t.name,seriesType:\"treemap\",selfType:\"breadcrumb\",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&a(n,t)}}l.prototype={constructor:l,render:function(e,t,n,i){var o=e.getModel(\"breadcrumb\"),a=this.group;if(a.removeAll(),o.get(\"show\")&&n){var s=o.getModel(\"itemStyle\"),l=s.getModel(\"textStyle\"),u={pos:{left:o.get(\"left\"),right:o.get(\"right\"),top:o.get(\"top\"),bottom:o.get(\"bottom\")},box:{width:t.getWidth(),height:t.getHeight()},emptyItemWidth:o.get(\"emptyItemWidth\"),totalWidth:0,renderList:[]};this._prepare(n,u,l),this._renderContent(e,u,s,l,i),r.positionElement(a,u.pos,u.box)}},_prepare:function(e,t,n){for(var i=e;i;i=i.parentNode){var r=i.getModel().get(\"name\"),o=n.getTextRect(r),a=Math.max(o.width+16,t.emptyItemWidth);t.totalWidth+=a+8,t.renderList.push({node:i,text:r,width:a})}},_renderContent:function(e,t,n,a,s){for(var l=0,h=t.emptyItemWidth,d=e.get(\"breadcrumb.height\"),f=r.getAvailableSize(t.pos,t.box),p=t.totalWidth,g=t.renderList,m=g.length-1;m>=0;m--){var v=g[m],y=v.node,b=v.width,x=v.text;p>f.width&&(p-=b-h,b=h,x=null);var _=new i.Polygon({shape:{points:u(l,0,b,d,m===g.length-1,0===m)},style:o.defaults(n.getItemStyle(),{lineJoin:\"bevel\",text:x,textFill:a.getTextColor(),textFont:a.getFont()}),z:10,onclick:o.curry(s,y)});this.group.add(_),c(_,e,y),l+=b+8}},remove:function(){this.group.removeAll()}};var h=l;e.exports=h},JFJR:function(e,t,n){var i=n(\"/gxq\"),r=n(\"2HcM\");function o(e,t,n){r.call(this,e,t,n),this.type=\"value\",this.angle=0,this.name=\"\",this.model}i.inherits(o,r);var a=o;e.exports=a},JIsR:function(e,t){e.exports=function(e){var t=e.findComponents({mainType:\"legend\"});t&&t.length&&e.filterSeries(function(e){for(var n=0;n<t.length;n++)if(!t[n].isSelected(e.name))return!1;return!0})}},JMnz:function(e,t,n){var i=n(\"UAiw\"),r=function(){this._track=[]};function o(e){var t=e[1][0]-e[0][0],n=e[1][1]-e[0][1];return Math.sqrt(t*t+n*n)}r.prototype={constructor:r,recognize:function(e,t,n){return this._doTrack(e,t,n),this._recognize(e)},clear:function(){return this._track.length=0,this},_doTrack:function(e,t,n){var r=e.touches;if(r){for(var o={points:[],touches:[],target:t,event:e},a=0,s=r.length;a<s;a++){var l=r[a],u=i.clientToLocal(n,l,{});o.points.push([u.zrX,u.zrY]),o.touches.push(l)}this._track.push(o)}},_recognize:function(e){for(var t in a)if(a.hasOwnProperty(t)){var n=a[t](this._track,e);if(n)return n}}};var a={pinch:function(e,t){var n=e.length;if(n){var i,r=(e[n-1]||{}).points,a=(e[n-2]||{}).points||r;if(a&&a.length>1&&r&&r.length>1){var s=o(r)/o(a);!isFinite(s)&&(s=1),t.pinchScale=s;var l=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return t.pinchX=l[0],t.pinchY=l[1],{type:\"pinch\",target:e[0].target,event:t}}}}},s=r;e.exports=s},JMu0:function(e,t,n){var i=n(\"Icdr\"),r=n(\"9Owa\"),o=n(\"FIAY\"),a=n(\"dCQY\"),s=o.toolbox.restore;function l(e){this.model=e}l.defaultOption={show:!0,icon:\"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5\",title:s.title},l.prototype.onclick=function(e,t,n){r.clear(e),t.dispatchAction({type:\"restore\",from:this.uid})},a.register(\"restore\",l),i.registerAction({type:\"restore\",event:\"restore\",update:\"prepareAndUpdate\"},function(e,t){t.resetOption(\"recreate\")});var u=l;e.exports=u},JNWs:function(e,t,n){var i=n(\"/gZK\"),r=n(\"EJsE\").extend({type:\"series.gauge\",getInitialData:function(e,t){return i(this,[\"value\"])},defaultOption:{zlevel:0,z:2,center:[\"50%\",\"50%\"],legendHoverLink:!0,radius:\"75%\",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,lineStyle:{color:[[.2,\"#91c7ae\"],[.8,\"#63869e\"],[1,\"#c23531\"]],width:30}},splitLine:{show:!0,length:30,lineStyle:{color:\"#eee\",width:2,type:\"solid\"}},axisTick:{show:!0,splitNumber:5,length:8,lineStyle:{color:\"#eee\",width:1,type:\"solid\"}},axisLabel:{show:!0,distance:5,color:\"auto\"},pointer:{show:!0,length:\"80%\",width:8},itemStyle:{color:\"auto\"},title:{show:!0,offsetCenter:[0,\"-40%\"],color:\"#333\",fontSize:15},detail:{show:!0,backgroundColor:\"rgba(0,0,0,0)\",borderWidth:0,borderColor:\"#ccc\",width:100,height:null,padding:[5,10],offsetCenter:[0,\"40%\"],color:\"auto\",fontSize:30}}});e.exports=r},JRc4:function(e,t,n){var i=n(\"Icdr\"),r=n(\"GQGX\");n(\"od06\"),n(\"iEm+\"),n(\"ZuqD\"),n(\"oYIf\"),i.registerPreprocessor(r)},Jd65:function(e,t,n){var i=n(\"PiQa\"),r=n(\"/gxq\"),o=n(\"uA0k\"),a=n(\"C7PF\");function s(e,t,n){o.call(this,e,t,n),this._lastFrame=0,this._lastFramePercent=0}var l=s.prototype;l.createLine=function(e,t,n){return new i(e,t,n)},l.updateAnimationPoints=function(e,t){this._points=t;for(var n=[0],i=0,r=1;r<t.length;r++){var o=t[r-1],s=t[r];i+=a.dist(o,s),n.push(i)}if(0!==i){for(r=0;r<n.length;r++)n[r]/=i;this._offsets=n,this._length=i}},l.getLineLength=function(e){return this._length},l.updateSymbolPosition=function(e){var t=e.__t,n=this._points,i=this._offsets,r=n.length;if(i){var o=this._lastFrame;if(t<this._lastFramePercent){for(s=Math.min(o+1,r-1);s>=0&&!(i[s]<=t);s--);s=Math.min(s,r-2)}else{for(var s=o;s<r&&!(i[s]>t);s++);s=Math.min(s-1,r-2)}a.lerp(e.position,n[s],n[s+1],(t-i[s])/(i[s+1]-i[s]));var l=n[s+1][0]-n[s][0],u=n[s+1][1]-n[s][1];e.rotation=-Math.atan2(u,l)-Math.PI/2,this._lastFrame=s,this._lastFramePercent=t,e.ignore=!1}},r.inherits(s,o);var u=s;e.exports=u},JzYe:function(e,t,n){var i=n(\"WK/r\"),r=n(\"3yJd\"),o=n(\"1Xuh\").getLayoutRect,a=n(\"/gxq\").each;function s(e,t,n){this.dimension=\"single\",this.dimensions=[\"single\"],this._axis=null,this._rect,this._init(e,t,n),this.model=e}s.prototype={type:\"singleAxis\",axisPointerEnabled:!0,constructor:s,_init:function(e,t,n){var o=this.dimension,a=new i(o,r.createScaleByModel(e),[0,0],e.get(\"type\"),e.get(\"position\")),s=\"category\"===a.type;a.onBand=s&&e.get(\"boundaryGap\"),a.inverse=e.get(\"inverse\"),a.orient=e.get(\"orient\"),e.axis=a,a.model=e,a.coordinateSystem=this,this._axis=a},update:function(e,t){e.eachSeries(function(e){if(e.coordinateSystem===this){var t=e.getData();a(t.mapDimension(this.dimension,!0),function(e){this._axis.scale.unionExtentFromData(t,e)},this),r.niceScaleExtent(this._axis.scale,this._axis.model)}},this)},resize:function(e,t){this._rect=o({left:e.get(\"left\"),top:e.get(\"top\"),right:e.get(\"right\"),bottom:e.get(\"bottom\"),width:e.get(\"width\"),height:e.get(\"height\")},{width:t.getWidth(),height:t.getHeight()}),this._adjustAxis()},getRect:function(){return this._rect},_adjustAxis:function(){var e=this._rect,t=this._axis,n=t.isHorizontal(),i=n?[0,e.width]:[0,e.height],r=t.reverse?1:0;t.setExtent(i[r],i[1-r]),this._updateAxisTransform(t,n?e.x:e.y)},_updateAxisTransform:function(e,t){var n=e.getExtent(),i=n[0]+n[1],r=e.isHorizontal();e.toGlobalCoord=r?function(e){return e+t}:function(e){return i-e+t},e.toLocalCoord=r?function(e){return e-t}:function(e){return i-e+t}},getAxis:function(){return this._axis},getBaseAxis:function(){return this._axis},getAxes:function(){return[this._axis]},getTooltipAxes:function(){return{baseAxes:[this.getAxis()]}},containPoint:function(e){var t=this.getRect(),n=this.getAxis();return\"horizontal\"===n.orient?n.contain(n.toLocalCoord(e[0]))&&e[1]>=t.y&&e[1]<=t.y+t.height:n.contain(n.toLocalCoord(e[1]))&&e[0]>=t.y&&e[0]<=t.y+t.height},pointToData:function(e){var t=this.getAxis();return[t.coordToData(t.toLocalCoord(e[\"horizontal\"===t.orient?0:1]))]},dataToPoint:function(e){var t=this.getAxis(),n=this.getRect(),i=[],r=\"horizontal\"===t.orient?0:1;return e instanceof Array&&(e=e[0]),i[r]=t.toGlobalCoord(t.dataToCoord(+e)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i}};var l=s;e.exports=l},K0T9:function(e,t){var n={linear:function(e){return e},quadraticIn:function(e){return e*e},quadraticOut:function(e){return e*(2-e)},quadraticInOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)},cubicIn:function(e){return e*e*e},cubicOut:function(e){return--e*e*e+1},cubicInOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)},quarticIn:function(e){return e*e*e*e},quarticOut:function(e){return 1- --e*e*e*e},quarticInOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)},quinticIn:function(e){return e*e*e*e*e},quinticOut:function(e){return--e*e*e*e*e+1},quinticInOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)},sinusoidalIn:function(e){return 1-Math.cos(e*Math.PI/2)},sinusoidalOut:function(e){return Math.sin(e*Math.PI/2)},sinusoidalInOut:function(e){return.5*(1-Math.cos(Math.PI*e))},exponentialIn:function(e){return 0===e?0:Math.pow(1024,e-1)},exponentialOut:function(e){return 1===e?1:1-Math.pow(2,-10*e)},exponentialInOut:function(e){return 0===e?0:1===e?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(2-Math.pow(2,-10*(e-1)))},circularIn:function(e){return 1-Math.sqrt(1-e*e)},circularOut:function(e){return Math.sqrt(1- --e*e)},circularInOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},elasticIn:function(e){var t,n=.1;return 0===e?0:1===e?1:(!n||n<1?(n=1,t=.1):t=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/.4))},elasticOut:function(e){var t,n=.1;return 0===e?0:1===e?1:(!n||n<1?(n=1,t=.1):t=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*e)*Math.sin((e-t)*(2*Math.PI)/.4)+1)},elasticInOut:function(e){var t,n=.1;return 0===e?0:1===e?1:(!n||n<1?(n=1,t=.1):t=.4*Math.asin(1/n)/(2*Math.PI),(e*=2)<1?n*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/.4)*-.5:n*Math.pow(2,-10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/.4)*.5+1)},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},backInOut:function(e){var t=2.5949095;return(e*=2)<1?e*e*((t+1)*e-t)*.5:.5*((e-=2)*e*((t+1)*e+t)+2)},bounceIn:function(e){return 1-n.bounceOut(1-e)},bounceOut:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},bounceInOut:function(e){return e<.5?.5*n.bounceIn(2*e):.5*n.bounceOut(2*e-1)+.5}},i=n;e.exports=i},KAfT:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"s1Aj\");i.registerAction(\"dataZoom\",function(e,t){var n=o.createLinkedNodesFinder(r.bind(t.eachComponent,t,\"dataZoom\"),o.eachAxisDim,function(e,t){return e.get(t.axisIndex)}),i=[];t.eachComponent({mainType:\"dataZoom\",query:e},function(e,t){i.push.apply(i,n(e).nodes)}),r.each(i,function(t,n){t.setRawRange({start:e.start,end:e.end,startValue:e.startValue,endValue:e.endValue})})})},KGuM:function(e,t,n){var i=n(\"H4Od\"),r=n(\"1Xuh\").getLayoutRect,o=n(\"wUOi\");e.exports=function(e,t){var n=[];return e.eachSeriesByType(\"graph\",function(e){var a=e.get(\"coordinateSystem\");if(!a||\"view\"===a){var s=e.getData(),l=s.mapArray(function(e){var t=s.getItemModel(e);return[+t.get(\"x\"),+t.get(\"y\")]}),u=[],c=[];o.fromPoints(l,u,c),c[0]-u[0]==0&&(c[0]+=1,u[0]-=1),c[1]-u[1]==0&&(c[1]+=1,u[1]-=1);var h=(c[0]-u[0])/(c[1]-u[1]),d=function(e,t,n){var i=e.getBoxLayoutParams();return i.aspect=n,r(i,{width:t.getWidth(),height:t.getHeight()})}(e,t,h);isNaN(h)&&(u=[d.x,d.y],c=[d.x+d.width,d.y+d.height]);var f=c[0]-u[0],p=c[1]-u[1],g=d.width,m=d.height,v=e.coordinateSystem=new i;v.zoomLimit=e.get(\"scaleLimit\"),v.setBoundingRect(u[0],u[1],f,p),v.setViewRect(d.x,d.y,g,m),v.setCenter(e.get(\"center\")),v.setZoom(e.get(\"zoom\")),n.push(v)}}),n}},Kh4W:function(e,t,n){t.f=n(\"dSzd\")},KjPy:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\");n(\"DHpS\");var o=r.extend({type:\"parallel\",dependencies:[\"parallelAxis\"],coordinateSystem:null,dimensions:null,parallelAxisIndex:null,layoutMode:\"box\",defaultOption:{zlevel:0,z:0,left:80,top:60,right:80,bottom:60,layout:\"horizontal\",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:\"click\",parallelAxisDefault:null},init:function(){r.prototype.init.apply(this,arguments),this.mergeOption({})},mergeOption:function(e){var t=this.option;e&&i.merge(t,e,!0),this._initDimensions()},contains:function(e,t){var n=e.get(\"parallelIndex\");return null!=n&&t.getComponent(\"parallel\",n)===this},setAxisExpand:function(e){i.each([\"axisExpandable\",\"axisExpandCenter\",\"axisExpandCount\",\"axisExpandWidth\",\"axisExpandWindow\"],function(t){e.hasOwnProperty(t)&&(this.option[t]=e[t])},this)},_initDimensions:function(){var e=this.dimensions=[],t=this.parallelAxisIndex=[],n=i.filter(this.dependentModels.parallelAxis,function(e){return(e.get(\"parallelIndex\")||0)===this.componentIndex},this);i.each(n,function(n){e.push(\"dim\"+n.get(\"dim\")),t.push(n.componentIndex)})}});e.exports=o},Kk9m:function(e,t,n){(function(e){\"use strict\";e.defineOption(\"foldGutter\",!1,function(t,n,i){i&&i!=e.Init&&(t.clearGutter(t.state.foldGutter.options.gutter),t.state.foldGutter=null,t.off(\"gutterClick\",s),t.off(\"changes\",l),t.off(\"viewportChange\",u),t.off(\"fold\",c),t.off(\"unfold\",c),t.off(\"swapDoc\",l)),n&&(t.state.foldGutter=new function(e){this.options=e,this.from=this.to=0}(function(e){!0===e&&(e={});null==e.gutter&&(e.gutter=\"CodeMirror-foldgutter\");null==e.indicatorOpen&&(e.indicatorOpen=\"CodeMirror-foldgutter-open\");null==e.indicatorFolded&&(e.indicatorFolded=\"CodeMirror-foldgutter-folded\");return e}(n)),a(t),t.on(\"gutterClick\",s),t.on(\"changes\",l),t.on(\"viewportChange\",u),t.on(\"fold\",c),t.on(\"unfold\",c),t.on(\"swapDoc\",l))});var t=e.Pos;function n(e,n){for(var i=e.findMarks(t(n,0),t(n+1,0)),r=0;r<i.length;++r)if(i[r].__isFold){var o=i[r].find(-1);if(o&&o.line===n)return i[r]}}function i(e){if(\"string\"==typeof e){var t=document.createElement(\"div\");return t.className=e+\" CodeMirror-guttermarker-subtle\",t}return e.cloneNode(!0)}function r(e,r,a){var s=e.state.foldGutter.options,l=r-1,u=e.foldOption(s,\"minFoldSize\"),c=e.foldOption(s,\"rangeFinder\"),h=\"string\"==typeof s.indicatorFolded&&o(s.indicatorFolded),d=\"string\"==typeof s.indicatorOpen&&o(s.indicatorOpen);e.eachLine(r,a,function(r){++l;var o=null,a=r.gutterMarkers;if(a&&(a=a[s.gutter]),n(e,l)){if(h&&a&&h.test(a.className))return;o=i(s.indicatorFolded)}else{var f=t(l,0),p=c&&c(e,f);if(p&&p.to.line-p.from.line>=u){if(d&&a&&d.test(a.className))return;o=i(s.indicatorOpen)}}(o||a)&&e.setGutterMarker(r,s.gutter,o)})}function o(e){return new RegExp(\"(^|\\\\s)\"+e+\"(?:$|\\\\s)\\\\s*\")}function a(e){var t=e.getViewport(),n=e.state.foldGutter;n&&(e.operation(function(){r(e,t.from,t.to)}),n.from=t.from,n.to=t.to)}function s(e,i,r){var o=e.state.foldGutter;if(o){var a=o.options;if(r==a.gutter){var s=n(e,i);s?s.clear():e.foldCode(t(i,0),a)}}}function l(e){var t=e.state.foldGutter;if(t){var n=t.options;t.from=t.to=0,clearTimeout(t.changeUpdate),t.changeUpdate=setTimeout(function(){a(e)},n.foldOnChangeTimeSpan||600)}}function u(e){var t=e.state.foldGutter;if(t){var n=t.options;clearTimeout(t.changeUpdate),t.changeUpdate=setTimeout(function(){var n=e.getViewport();t.from==t.to||n.from-t.to>20||t.from-n.to>20?a(e):e.operation(function(){n.from<t.from&&(r(e,n.from,t.from),t.from=n.from),n.to>t.to&&(r(e,t.to,n.to),t.to=n.to)})},n.updateViewportTimeSpan||400)}}function c(e,t){var n=e.state.foldGutter;if(n){var i=t.line;i>=n.from&&i<n.to&&r(e,i,i+1)}}})(n(\"8U58\"),n(\"THjC\"))},KsMi:function(e,t,n){var i=n(\"GxVO\"),r=n(\"xr8J\").subPixelOptimizeLine,o={},a=i.extend({type:\"line\",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:\"#000\",fill:null},buildPath:function(e,t){var n,i,a,s;this.subPixelOptimize?(r(o,t,this.style),n=o.x1,i=o.y1,a=o.x2,s=o.y2):(n=t.x1,i=t.y1,a=t.x2,s=t.y2);var l=t.percent;0!==l&&(e.moveTo(n,i),l<1&&(a=n*(1-l)+a*l,s=i*(1-l)+s*l),e.lineTo(a,s))},pointAt:function(e){var t=this.shape;return[t.x1*(1-e)+t.x2*e,t.y1*(1-e)+t.y2*e]}});e.exports=a},LBXi:function(e,t,n){var i=n(\"/gxq\"),r=n(\"5Mek\"),o=n(\"YpIy\"),a=n(\"NKek\").onIrrelevantElement,s=n(\"0sHC\"),l=n(\"AlF5\"),u=n(\"h0jU\").getUID,c=n(\"/ZBO\");function h(e){var t=e.getItemStyle(),n=e.get(\"areaColor\");return null!=n&&(t.fill=n),t}function d(e,t){t.eachChild(function(t){i.each(t.__regions,function(n){t.trigger(e.isSelected(n.name)?\"emphasis\":\"normal\")})})}function f(e,t){var n=new s.Group;this.uid=u(\"ec_map_draw\"),this._controller=new r(e.getZr()),this._controllerHost={target:t?n:null},this.group=n,this._updateGroup=t,this._mouseDownFlag,this._mapName,this._initialized,n.add(this._regionsGroup=new s.Group),n.add(this._backgroundGroup=new s.Group)}f.prototype={constructor:f,draw:function(e,t,n,r,o){var a=\"geo\"===e.mainType,l=e.getData&&e.getData();a&&t.eachComponent({mainType:\"series\",subType:\"map\"},function(t){l||t.getHostGeoModel()!==e||(l=t.getData())});var u=e.coordinateSystem;this._updateBackground(u);var f,p=this._regionsGroup,g=this.group,m=u.getTransformInfo(),v=!p.childAt(0)||o;if(v)g.transform=m.roamTransform,g.decomposeTransform(),g.dirty();else{var y=new c;y.transform=m.roamTransform,y.decomposeTransform();var b={scale:y.scale,position:y.position};f=y.scale,s.updateProps(g,b,e)}var x=m.rawScale,_=m.rawPosition;p.removeAll();var w=[\"itemStyle\"],C=[\"emphasis\",\"itemStyle\"],S=[\"label\"],k=[\"emphasis\",\"label\"],T=i.createHashMap();i.each(u.regions,function(t){var n=T.get(t.name)||T.set(t.name,new s.Group),r=new s.CompoundPath({segmentIgnoreThreshold:1,shape:{paths:[]}});n.add(r);var o,u=(B=e.getRegionModel(t.name)||e).getModel(w),c=B.getModel(C),d=h(u),m=h(c),y=B.getModel(S),b=B.getModel(k);if(l){o=l.indexOfName(t.name);var M=l.getItemVisual(o,\"color\",!0);M&&(d.fill=M)}var D=function(e){return[e[0]*x[0]+_[0],e[1]*x[1]+_[1]]};i.each(t.geometries,function(e){if(\"polygon\"===e.type){for(var t=[],n=0;n<e.exterior.length;++n)t.push(D(e.exterior[n]));r.shape.paths.push(new s.Polygon({segmentIgnoreThreshold:1,shape:{points:t}}));for(n=0;n<(e.interiors?e.interiors.length:0);++n){for(var i=e.interiors[n],o=(t=[],0);o<i.length;++o)t.push(D(i[o]));r.shape.paths.push(new s.Polygon({segmentIgnoreThreshold:1,shape:{points:t}}))}}}),r.setStyle(d),r.style.strokeNoScale=!0,r.culling=!0;var A=y.get(\"show\"),I=b.get(\"show\"),O=l&&isNaN(l.get(l.mapDimension(\"value\"),o)),E=l&&l.getItemLayout(o);if(a||O&&(A||I)||E&&E.showLabel){var L,P=a?t.name:o;(!l||o>=0)&&(L=e);var N=new s.Text({position:D(t.center.slice()),scale:[1/g.scale[0],1/g.scale[1]],z2:10,silent:!0});if(s.setLabelStyle(N.style,N.hoverStyle={},y,b,{labelFetcher:L,labelDataIndex:P,defaultText:t.name,useInsideStyle:!1},{textAlign:\"center\",textVerticalAlign:\"middle\"}),!v){var R=[1/f[0],1/f[1]];s.updateProps(N,{scale:R},e)}n.add(N)}if(l)l.setItemGraphicEl(o,n);else{var B=e.getRegionModel(t.name);r.eventData={componentType:\"geo\",componentIndex:e.componentIndex,geoIndex:e.componentIndex,name:t.name,region:B&&B.option||{}}}(n.__regions||(n.__regions=[])).push(t),n.highDownSilentOnTouch=!!e.get(\"selectedMode\"),s.setHoverStyle(n,m),p.add(n)}),this._updateController(e,t,n),function(e,t,n,r,o){n.off(\"click\"),n.off(\"mousedown\"),t.get(\"selectedMode\")&&(n.on(\"mousedown\",function(){e._mouseDownFlag=!0}),n.on(\"click\",function(a){if(e._mouseDownFlag){e._mouseDownFlag=!1;for(var s=a.target;!s.__regions;)s=s.parent;if(s){var l={type:(\"geo\"===t.mainType?\"geo\":\"map\")+\"ToggleSelect\",batch:i.map(s.__regions,function(e){return{name:e.name,from:o.uid}})};l[t.mainType+\"Id\"]=t.id,r.dispatchAction(l),d(t,n)}}}))}(this,e,p,n,r),d(e,p)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&l.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(e){var t=e.map;this._mapName!==t&&i.each(l.makeGraphic(t,this.uid),function(e){this._backgroundGroup.add(e)},this),this._mapName=t},_updateController:function(e,t,n){var r=e.coordinateSystem,s=this._controller,l=this._controllerHost;l.zoomLimit=e.get(\"scaleLimit\"),l.zoom=r.getZoom(),s.enable(e.get(\"roam\")||!1);var u=e.mainType;function c(){var t={type:\"geoRoam\",componentType:u};return t[u+\"Id\"]=e.id,t}s.off(\"pan\").on(\"pan\",function(e){this._mouseDownFlag=!1,o.updateViewOnPan(l,e.dx,e.dy),n.dispatchAction(i.extend(c(),{dx:e.dx,dy:e.dy}))},this),s.off(\"zoom\").on(\"zoom\",function(e){if(this._mouseDownFlag=!1,o.updateViewOnZoom(l,e.scale,e.originX,e.originY),n.dispatchAction(i.extend(c(),{zoom:e.scale,originX:e.originX,originY:e.originY})),this._updateGroup){var t=this.group.scale;this._regionsGroup.traverse(function(e){\"text\"===e.type&&e.attr(\"scale\",[1/t[0],1/t[1]])})}},this),s.setPointerChecker(function(t,i,o){return r.getViewRectAfterRoam().contain(i,o)&&!a(t,n,e)})}};var p=f;e.exports=p},LGKB:function(e,t,n){var i=n(\"EJsE\"),r=n(\"+jMe\"),o=n(\"HHfb\").encodeHTML,a=n(\"Pdtn\"),s=i.extend({type:\"series.tree\",layoutInfo:null,layoutMode:\"box\",getInitialData:function(e){var t={name:e.name,children:e.data},n=e.leaves||{},i=new a(n,this,this.ecModel),o=r.createTree(t,this,{},function(e){e.wrapMethod(\"getItemModel\",function(e,t){var n=o.getNodeByDataIndex(t);return n.children.length&&n.isExpand||(e.parentModel=i),e})});var s=0;o.eachNode(\"preorder\",function(e){e.depth>s&&(s=e.depth)});var l=e.expandAndCollapse&&e.initialTreeDepth>=0?e.initialTreeDepth:s;return o.root.eachNode(\"preorder\",function(e){var t=e.hostTree.data.getRawDataItem(e.dataIndex);e.isExpand=t&&null!=t.collapsed?!t.collapsed:e.depth<=l}),o.data},getOrient:function(){var e=this.get(\"orient\");return\"horizontal\"===e?e=\"LR\":\"vertical\"===e&&(e=\"TB\"),e},setZoom:function(e){this.option.zoom=e},setCenter:function(e){this.option.center=e},formatTooltip:function(e){for(var t=this.getData().tree,n=t.root.children[0],i=t.getNodeByDataIndex(e),r=i.getValue(),a=i.name;i&&i!==n;)a=i.parentNode.name+\".\"+a,i=i.parentNode;return o(a+(isNaN(r)||null==r?\"\":\" : \"+r))},defaultOption:{zlevel:0,z:2,coordinateSystem:\"view\",left:\"12%\",top:\"12%\",right:\"12%\",bottom:\"12%\",layout:\"orthogonal\",edgeShape:\"curve\",edgeForkPosition:\"50%\",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:\"LR\",symbol:\"emptyCircle\",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:\"#ccc\",width:1.5,curveness:.5},itemStyle:{color:\"lightsteelblue\",borderColor:\"#c23531\",borderWidth:1.5},label:{show:!0,color:\"#555\"},leaves:{label:{show:!0}},animationEasing:\"linear\",animationDuration:700,animationDurationUpdate:1e3}});e.exports=s},LICT:function(e,t,n){var i=n(\"AAi1\");t.containStroke=function(e,t,n,r,o,a,s,l,u,c,h){if(0===u)return!1;var d=u;return!(h>t+d&&h>r+d&&h>a+d&&h>l+d||h<t-d&&h<r-d&&h<a-d&&h<l-d||c>e+d&&c>n+d&&c>o+d&&c>s+d||c<e-d&&c<n-d&&c<o-d&&c<s-d)&&i.cubicProjectPoint(e,t,n,r,o,a,s,l,c,h,null)<=d/2}},LJck:function(e,t,n){var i=(0,n(\"0sHC\").extendShape)({type:\"sausage\",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},buildPath:function(e,t){var n=t.cx,i=t.cy,r=Math.max(t.r0||0,0),o=Math.max(t.r,0),a=.5*(o-r),s=r+a,l=t.startAngle,u=t.endAngle,c=t.clockwise,h=Math.cos(l),d=Math.sin(l),f=Math.cos(u),p=Math.sin(u);(c?u-l<2*Math.PI:l-u<2*Math.PI)&&(e.moveTo(h*r+n,d*r+i),e.arc(h*s+n,d*s+i,a,-Math.PI+l,l,!c)),e.arc(n,i,o,l,u,!c),e.moveTo(f*o+n,p*o+i),e.arc(f*s+n,p*s+i,a,u-2*Math.PI,u-Math.PI,!c),0!==r&&(e.arc(n,i,r,u,l,c),e.moveTo(h*r+n,p*r+i)),e.closePath()}});e.exports=i},LKZ0:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\");t.rectCoordAxisBuildSplitArea=function(e,t,n,o){var a=n.axis;if(!a.scale.isBlank()){var s=n.getModel(\"splitArea\"),l=s.getModel(\"areaStyle\"),u=l.get(\"color\"),c=o.coordinateSystem.getRect(),h=a.getTicksCoords({tickModel:s,clamp:!0});if(h.length){var d=u.length,f=e.__splitAreaColors,p=i.createHashMap(),g=0;if(f)for(var m=0;m<h.length;m++){var v=f.get(h[m].tickValue);if(null!=v){g=(v+(d-1)*m)%d;break}}var y=a.toGlobalCoord(h[0].coord),b=l.getAreaStyle();for(u=i.isArray(u)?u:[u],m=1;m<h.length;m++){var x,_,w,C,S=a.toGlobalCoord(h[m].coord);a.isHorizontal()?(x=y,_=c.y,w=S-x,C=c.height,y=x+w):(x=c.x,_=y,w=c.width,y=_+(C=S-_));var k=h[m-1].tickValue;null!=k&&p.set(k,g),t.add(new r.Rect({anid:null!=k?\"area_\"+k:null,shape:{x:x,y:_,width:w,height:C},style:i.defaults({fill:u[g]},b),silent:!0})),g=(g+1)%d}e.__splitAreaColors=p}}},t.rectCoordAxisHandleRemove=function(e){e.__splitAreaColors=null}},LKZe:function(e,t,n){var i=n(\"NpIQ\"),r=n(\"X8DO\"),o=n(\"TcQ7\"),a=n(\"MmMw\"),s=n(\"D2L2\"),l=n(\"SfB7\"),u=Object.getOwnPropertyDescriptor;t.f=n(\"+E39\")?u:function(e,t){if(e=o(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return r(!i.f.call(e,t),e[t])}},LRsb:function(e,t,n){var i=n(\"C7PF\"),r=n(\"hD/x\"),o=r.getSymbolSize,a=r.getNodeGlobalScale,s=Math.PI,l=[];var u={value:function(e,t,n,i,r,o,a,s){var l=0,u=i.getSum(\"value\"),c=2*Math.PI/(u||s);n.eachNode(function(e){var t=e.getValue(\"value\"),n=c*(u?t:1)/2;l+=n,e.setLayout([r*Math.cos(l)+o,r*Math.sin(l)+a]),l+=n})},symbolSize:function(e,t,n,i,r,u,c,h){var d=0;l.length=h;var f=a(e);n.eachNode(function(e){var t=o(e);isNaN(t)&&(t=2),t<0&&(t=0),t*=f;var n=Math.asin(t/2/r);isNaN(n)&&(n=s/2),l[e.dataIndex]=n,d+=2*n});var p=(2*s-d)/h/2,g=0;n.eachNode(function(e){var t=p+l[e.dataIndex];g+=t,e.setLayout([r*Math.cos(g)+u,r*Math.sin(g)+c]),g+=t})}};t.circularLayout=function(e,t){var n=e.coordinateSystem;if(!n||\"view\"===n.type){var r=n.getBoundingRect(),o=e.getData(),a=o.graph,s=r.width/2+r.x,l=r.height/2+r.y,c=Math.min(r.width,r.height)/2,h=o.count();o.setLayout({cx:s,cy:l}),h&&(u[t](e,n,a,o,c,s,l,h),a.eachEdge(function(e){var t,n=e.getModel().get(\"lineStyle.curveness\")||0,r=i.clone(e.node1.getLayout()),o=i.clone(e.node2.getLayout()),a=(r[0]+o[0])/2,u=(r[1]+o[1])/2;+n&&(t=[s*(n*=3)+a*(1-n),l*n+u*(1-n)]),e.setLayout([r,o,t])}))}}},LbEf:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"mLyJ\");n(\"PBlc\"),n(\"3n/B\"),n(\"1bf2\"),n(\"AKXb\"),n(\"QbUQ\"),i.registerLayout(r.curry(o,\"bar\")),i.extendComponentView({type:\"polar\"})},LgWN:function(e,t,n){var i=n(\"/gxq\");function r(){var e=i.createCanvas();this.canvas=e,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}r.prototype={update:function(e,t,n,i,r,o){var a=this._getBrush(),s=this._getGradient(e,r,\"inRange\"),l=this._getGradient(e,r,\"outOfRange\"),u=this.pointSize+this.blurSize,c=this.canvas,h=c.getContext(\"2d\"),d=e.length;c.width=t,c.height=n;for(var f=0;f<d;++f){var p=e[f],g=p[0],m=p[1],v=i(p[2]);h.globalAlpha=v,h.drawImage(a,g-u,m-u)}if(!c.width||!c.height)return c;for(var y=h.getImageData(0,0,c.width,c.height),b=y.data,x=0,_=b.length,w=this.minOpacity,C=this.maxOpacity-w;x<_;){v=b[x+3]/256;var S=4*Math.floor(255*v);if(v>0){var k=o(v)?s:l;v>0&&(v=v*C+w),b[x++]=k[S],b[x++]=k[S+1],b[x++]=k[S+2],b[x++]=k[S+3]*v*256}else x+=4}return h.putImageData(y,0,0),c},_getBrush:function(){var e=this._brushCanvas||(this._brushCanvas=i.createCanvas()),t=this.pointSize+this.blurSize,n=2*t;e.width=n,e.height=n;var r=e.getContext(\"2d\");return r.clearRect(0,0,n,n),r.shadowOffsetX=n,r.shadowBlur=this.blurSize,r.shadowColor=\"#000\",r.beginPath(),r.arc(-t,t,this.pointSize,0,2*Math.PI,!0),r.closePath(),r.fill(),e},_getGradient:function(e,t,n){for(var i=this._gradientPixels,r=i[n]||(i[n]=new Uint8ClampedArray(1024)),o=[0,0,0,0],a=0,s=0;s<256;s++)t[n](s/255,!0,o),r[a++]=o[0],r[a++]=o[1],r[a++]=o[2],r[a++]=o[3];return r}};var o=r;e.exports=o},LjPz:function(e,t,n){n(\"qSkD\"),n(\"MRvz\"),n(\"BqCv\")},M6a0:function(e,t){},M9eA:function(e,t,n){var i=n(\"HGSA\"),r=n(\"DRaW\"),o=n(\"/gxq\"),a=o.isArray,s=\"itemStyle\",l={seriesType:\"treemap\",reset:function(e,t,n,a){var l=e.getData().tree,c=l.root,d=e.getModel(s);c.isRemoved()||function e(t,n,a,l,c,d){var f=t.getModel();var p=t.getLayout();if(!p||p.invisible||!p.isInView)return;var g=t.getModel(s);var m=a[t.depth];var v=function(e,t,n,i){var r=o.extend({},t);return o.each([\"color\",\"colorAlpha\",\"colorSaturation\"],function(o){var a=e.get(o,!0);null==a&&n&&(a=n[o]),null==a&&(a=t[o]),null==a&&(a=i.get(o)),null!=a&&(r[o]=a)}),r}(g,n,m,l);var y=g.get(\"borderColor\");var b=g.get(\"borderColorSaturation\");var x;null!=b&&(x=u(v),y=function(e,t){return null!=t?r.modifyHSL(t,null,null,e):null}(b,x));t.setVisual(\"borderColor\",y);var _=t.viewChildren;if(_&&_.length){var w=function(e,t,n,r,o,a){if(!a||!a.length)return;var s=h(t,\"color\")||null!=o.color&&\"none\"!==o.color&&(h(t,\"colorAlpha\")||h(t,\"colorSaturation\"));if(!s)return;var l=t.get(\"visualMin\"),u=t.get(\"visualMax\"),c=n.dataExtent.slice();null!=l&&l<c[0]&&(c[0]=l),null!=u&&u>c[1]&&(c[1]=u);var d=t.get(\"colorMappingBy\"),f={type:s.name,dataExtent:c,visual:s.range};\"color\"!==f.type||\"index\"!==d&&\"id\"!==d?f.mappingMethod=\"linear\":(f.mappingMethod=\"category\",f.loop=!0);var p=new i(f);return p.__drColorMappingBy=d,p}(0,f,p,0,v,_);o.each(_,function(t,n){if(t.depth>=c.length||t===c[t.depth]){var i=function(e,t,n,i,r,a){var s=o.extend({},t);if(r){var l=r.type,u=\"color\"===l&&r.__drColorMappingBy,c=\"index\"===u?i:\"id\"===u?a.mapIdToIndex(n.getId()):n.getValue(e.get(\"visualDimension\"));s[l]=r.mapValueToVisual(c)}return s}(f,v,t,n,w,d);e(t,i,a,l,c,d)}})}else x=u(v),t.setVisual(\"color\",x)}(c,{},o.map(l.levelModels,function(e){return e?e.get(s):null}),d,e.getViewRoot().getAncestors(),e)}};function u(e){var t=c(e,\"color\");if(t){var n=c(e,\"colorAlpha\"),i=c(e,\"colorSaturation\");return i&&(t=r.modifyHSL(t,null,null,i)),n&&(t=r.modifyAlpha(t,n)),t}}function c(e,t){var n=e[t];if(null!=n&&\"none\"!==n)return n}function h(e,t){var n=e.get(t);return a(n)&&n.length?{name:t,range:n}:null}e.exports=l},MAom:function(e,t,n){var i=n(\"9qnA\"),r=n(\"8b51\"),o=n(\"/gxq\"),a=n(\"+Y0c\");function s(e){i.call(this,e)}s.prototype={constructor:s,type:\"image\",brush:function(e,t){var n=this.style,i=n.image;n.bind(e,this,t);var r=this._image=a.createOrUpdateImage(i,this._image,this,this.onload);if(r&&a.isImageReady(r)){var o=n.x||0,s=n.y||0,l=n.width,u=n.height,c=r.width/r.height;if(null==l&&null!=u?l=u*c:null==u&&null!=l?u=l/c:null==l&&null==u&&(l=r.width,u=r.height),this.setTransform(e),n.sWidth&&n.sHeight){var h=n.sx||0,d=n.sy||0;e.drawImage(r,h,d,n.sWidth,n.sHeight,o,s,l,u)}else if(n.sx&&n.sy){var f=l-(h=n.sx),p=u-(d=n.sy);e.drawImage(r,h,d,f,p,o,s,l,u)}else e.drawImage(r,o,s,l,u);null!=n.text&&(this.restoreTransform(e),this.drawRectText(e,this.getBoundingRect()))}},getBoundingRect:function(){var e=this.style;return this._rect||(this._rect=new r(e.x||0,e.y||0,e.width||0,e.height||0)),this._rect}},o.inherits(s,i);var l=s;e.exports=l},MOpb:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"RjA7\").getDefaultLabel,a=n(\"ao1T\"),s=n(\"m/6y\").getLayoutOnAxis,l=n(\"1Hui\"),u=n(\"EJsE\"),c=n(\"Pdtn\"),h=n(\"Ylhr\"),d=n(\"DDYI\").createClipPath,f=n(\"n/n4\"),p=n(\"OpfW\"),g=n(\"8YpK\"),m=n(\"ilox\"),v=n(\"RAps\"),y=r.CACHED_LABEL_STYLE_PROPERTIES,b=[\"itemStyle\"],x=[\"emphasis\",\"itemStyle\"],_=[\"label\"],w=[\"emphasis\",\"label\"],C=\"e\\0\\0\",S={cartesian2d:f,geo:p,singleAxis:g,polar:m,calendar:v};function k(e,t,n,i,r){null==n[e]||r||(t[e]=n[e],n[e]=i[e])}function T(e,t,n,a){var l=e.get(\"renderItem\"),u=e.coordinateSystem,c={};u&&(c=u.prepareCustoms?u.prepareCustoms():S[u.type](u));var h,d,f,p,g,m=i.defaults({getWidth:a.getWidth,getHeight:a.getHeight,getZr:a.getZr,getDevicePixelRatio:a.getDevicePixelRatio,value:function(e,n){return null==n&&(n=h),t.get(t.getDimension(e||0),n)},style:function(n,a){null==a&&(a=h),C(a);var s=d.getModel(b).getItemStyle();null!=g&&(s.fill=g);var l=t.getItemVisual(a,\"opacity\");null!=l&&(s.opacity=l);var u=n?O(n,f):f;return r.setTextStyle(s,u,null,{autoColor:g,isRectText:!0}),s.text=u.getShallow(\"show\")?i.retrieve2(e.getFormattedLabel(a,\"normal\"),o(t,a)):null,n&&E(s,n),s},styleEmphasis:function(n,a){null==a&&(a=h),C(a);var s=d.getModel(x).getItemStyle(),l=n?O(n,p):p;return r.setTextStyle(s,l,null,{isRectText:!0},!0),s.text=l.getShallow(\"show\")?i.retrieve3(e.getFormattedLabel(a,\"emphasis\"),e.getFormattedLabel(a,\"normal\"),o(t,a)):null,n&&E(s,n),s},visual:function(e,n){return null==n&&(n=h),t.getItemVisual(n,e)},barLayout:function(e){if(u.getBaseAxis){var t=u.getBaseAxis();return s(i.defaults({axis:t},e),a)}},currentSeriesIndices:function(){return n.getCurrentSeriesIndices()},font:function(e){return r.getFont(e,n)}},c.api||{}),v={context:{},seriesId:e.id,seriesName:e.name,seriesIndex:e.seriesIndex,coordSys:c.coordSys,dataInsideLength:t.count(),encode:function(e){var t={};return i.each(e.dimensions,function(n,i){var r=e.getDimensionInfo(n);if(!r.isExtraCoord){var o=r.coordDim;(t[o]=t[o]||[])[r.coordDimIndex]=i}}),t}(e.getData())},y=!0;return function(e,n){return h=e,y=!0,l&&l(i.defaults({dataIndexInside:e,dataIndex:t.getRawIndex(e),actionType:n?n.type:null},v),m)};function C(e){null==e&&(e=h),y&&(d=t.getItemModel(e),f=d.getModel(_),p=d.getModel(w),g=t.getItemVisual(e,\"color\"),y=!1)}}function M(e,t,n,i,r,o){return(e=D(e,t,n,i,r,o,!0))&&o.setItemGraphicEl(t,e),e}function D(e,t,n,o,a,s,u){var c,h=!n,d=(n=n||{}).type,f=n.shape,p=n.style;if(e&&(h||null!=d&&d!==e.__customGraphicType||\"path\"===d&&((c=f)&&(c.hasOwnProperty(\"pathData\")||c.hasOwnProperty(\"d\")))&&P(f)!==e.__customPathData||\"image\"===d&&N(p,\"image\")&&p.image!==e.__customImagePath||\"text\"===d&&N(f,\"text\")&&p.text!==e.__customText)&&(a.remove(e),e=null),!h){var g=!e;return!e&&(e=function(e){var t,n=e.type;if(\"path\"===n){var i=e.shape,o=null!=i.width&&null!=i.height?{x:i.x||0,y:i.y||0,width:i.width,height:i.height}:null,a=P(i);(t=r.makePath(a,null,o,i.layout||\"center\")).__customPathData=a}else if(\"image\"===n)(t=new r.Image({})).__customImagePath=e.style.image;else if(\"text\"===n)(t=new r.Text({})).__customText=e.style.text;else if(\"group\"===n)t=new r.Group;else{if(\"compoundPath\"===n)throw new Error('\"compoundPath\" is not supported yet.');t=new(r.getShapeClass(n))}return t.__customGraphicType=n,t.name=e.name,t}(n)),function(e,t,n,o,a,s,l){var u={},c=n.style||{};if(n.shape&&(u.shape=i.clone(n.shape)),n.position&&(u.position=n.position.slice()),n.scale&&(u.scale=n.scale.slice()),n.origin&&(u.origin=n.origin.slice()),n.rotation&&(u.rotation=n.rotation),\"image\"===e.type&&n.style){var h=u.style={};i.each([\"x\",\"y\",\"width\",\"height\"],function(t){k(t,h,c,e.style,s)})}\"text\"===e.type&&n.style&&(h=u.style={},i.each([\"x\",\"y\"],function(t){k(t,h,c,e.style,s)}),!c.hasOwnProperty(\"textFill\")&&c.fill&&(c.textFill=c.fill),!c.hasOwnProperty(\"textStroke\")&&c.stroke&&(c.textStroke=c.stroke));if(\"group\"!==e.type&&(e.useStyle(c),s)){e.style.opacity=0;var d=c.opacity;null==d&&(d=1),r.initProps(e,{style:{opacity:d}},o,t)}s?e.attr(u):r.updateProps(e,u,o,t),n.hasOwnProperty(\"z2\")&&e.attr(\"z2\",n.z2||0),n.hasOwnProperty(\"silent\")&&e.attr(\"silent\",n.silent),n.hasOwnProperty(\"invisible\")&&e.attr(\"invisible\",n.invisible),n.hasOwnProperty(\"ignore\")&&e.attr(\"ignore\",n.ignore),n.hasOwnProperty(\"info\")&&e.attr(\"info\",n.info);var f=n.styleEmphasis;r.setElementHoverStyle(e,f),l&&r.setAsHighDownDispatcher(e,!1!==f)}(e,t,n,o,0,g,u),\"group\"===d&&function(e,t,n,i,r){var o=n.children,a=o?o.length:0,s=n.$mergeChildren,u=\"byName\"===s||n.diffChildrenByName,c=!1===s;if(!a&&!u&&!c)return;if(u)return h={oldChildren:e.children()||[],newChildren:o||[],dataIndex:t,animatableModel:i,group:e,data:r},void new l(h.oldChildren,h.newChildren,A,A,h).add(I).update(I).remove(L).execute();var h;c&&e.removeAll();for(var d=0;d<a;d++)o[d]&&D(e.childAt(d),t,o[d],i,e,r)}(e,t,n,o,s),a.add(e),e}}function A(e,t){var n=e&&e.name;return null!=n?n:C+t}function I(e,t){var n=this.context,i=null!=e?n.newChildren[e]:null;D(null!=t?n.oldChildren[t]:null,n.dataIndex,i,n.animatableModel,n.group,n.data)}function O(e,t){var n=new c({},t);return i.each(y,function(t,i){e.hasOwnProperty(t)&&(n.option[i]=e[t])}),n}function E(e,t){for(var n in t)!t.hasOwnProperty(n)&&y.hasOwnProperty(n)||(e[n]=t[n])}function L(e){var t=this.context,n=t.oldChildren[e];n&&t.group.remove(n)}function P(e){return e&&(e.pathData||e.d)}function N(e,t){return e&&e.hasOwnProperty(t)}u.extend({type:\"series.custom\",dependencies:[\"grid\",\"polar\",\"geo\",\"singleAxis\",\"calendar\"],defaultOption:{coordinateSystem:\"cartesian2d\",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0,clip:!1},getInitialData:function(e,t){return a(this.getSource(),this)},getDataParams:function(e,t,n){var i=u.prototype.getDataParams.apply(this,arguments);return n&&(i.info=n.info),i}}),h.extend({type:\"custom\",_data:null,render:function(e,t,n,i){var r=this._data,o=e.getData(),a=this.group,s=T(e,o,t,n);o.diff(r).add(function(t){M(null,t,s(t,i),e,a,o)}).update(function(t,n){M(r.getItemGraphicEl(n),t,s(t,i),e,a,o)}).remove(function(e){var t=r.getItemGraphicEl(e);t&&a.remove(t)}).execute();var l=e.get(\"clip\",!0)?d(e.coordinateSystem,!1,e):null;l?a.setClipPath(l):a.removeClipPath(),this._data=o},incrementalPrepareRender:function(e,t,n){this.group.removeAll(),this._data=null},incrementalRender:function(e,t,n,i,r){var o=t.getData(),a=T(t,o,n,i);function s(e){e.isGroup||(e.incremental=!0,e.useHoverLayer=!0)}for(var l=e.start;l<e.end;l++){M(null,l,a(l,r),t,this.group,o).traverse(s)}},dispose:i.noop,filterForExposedEvent:function(e,t,n,i){var r=t.element;if(null==r||n.name===r)return!0;for(;(n=n.parent)&&n!==this.group;)if(n.name===r)return!0;return!1}})},MRvz:function(e,t,n){var i=n(\"Icdr\");i.registerAction({type:\"axisAreaSelect\",event:\"axisAreaSelected\"},function(e,t){t.eachComponent({mainType:\"parallelAxis\",query:e},function(t){t.axis.model.setActiveIntervals(e.intervals)})}),i.registerAction(\"parallelAxisExpand\",function(e,t){t.eachComponent({mainType:\"parallel\",query:e},function(t){t.setAxisExpand(e)})})},MU5D:function(e,t,n){var i=n(\"R9M2\");e.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(e){return\"String\"==i(e)?e.split(\"\"):Object(e)}},MXTC:function(e,t,n){var i=n(\"GxVO\"),r=n(\"C7PF\"),o=n(\"dnLe\"),a=r.min,s=r.max,l=r.scaleAndAdd,u=r.copy,c=[],h=[],d=[];function f(e){return isNaN(e[0])||isNaN(e[1])}function p(e,t,n,i,o,p,g,m,v,y,b){return\"none\"!==y&&y?function(e,t,n,i,r,o,a,s,l,c,p){for(var g=0,m=n,v=0;v<i;v++){var y=t[m];if(m>=r||m<0)break;if(f(y)){if(p){m+=o;continue}break}if(m===n)e[o>0?\"moveTo\":\"lineTo\"](y[0],y[1]);else if(l>0){var b=t[g],x=\"y\"===c?1:0,_=(y[x]-b[x])*l;u(h,b),h[x]=b[x]+_,u(d,y),d[x]=y[x]-_,e.bezierCurveTo(h[0],h[1],d[0],d[1],y[0],y[1])}else e.lineTo(y[0],y[1]);g=m,m+=o}return v}.apply(this,arguments):function(e,t,n,i,o,p,g,m,v,y,b){for(var x=0,_=n,w=0;w<i;w++){var C=t[_];if(_>=o||_<0)break;if(f(C)){if(b){_+=p;continue}break}if(_===n)e[p>0?\"moveTo\":\"lineTo\"](C[0],C[1]),u(h,C);else if(v>0){var S=_+p,k=t[S];if(b)for(;k&&f(t[S]);)k=t[S+=p];var T=.5,M=t[x],k=t[S];if(!k||f(k))u(d,C);else{var D,A;if(f(k)&&!b&&(k=C),r.sub(c,k,M),\"x\"===y||\"y\"===y){var I=\"x\"===y?0:1;D=Math.abs(C[I]-M[I]),A=Math.abs(C[I]-k[I])}else D=r.dist(C,M),A=r.dist(C,k);l(d,C,c,-v*(1-(T=A/(A+D))))}a(h,h,m),s(h,h,g),a(d,d,m),s(d,d,g),e.bezierCurveTo(h[0],h[1],d[0],d[1],C[0],C[1]),l(h,C,c,v*T)}else e.lineTo(C[0],C[1]);x=_,_+=p}return w}.apply(this,arguments)}function g(e,t){var n=[1/0,1/0],i=[-1/0,-1/0];if(t)for(var r=0;r<e.length;r++){var o=e[r];o[0]<n[0]&&(n[0]=o[0]),o[1]<n[1]&&(n[1]=o[1]),o[0]>i[0]&&(i[0]=o[0]),o[1]>i[1]&&(i[1]=o[1])}return{min:t?n:i,max:t?i:n}}var m=i.extend({type:\"ec-polyline\",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:\"#000\"},brush:o(i.prototype.brush),buildPath:function(e,t){var n=t.points,i=0,r=n.length,o=g(n,t.smoothConstraint);if(t.connectNulls){for(;r>0&&f(n[r-1]);r--);for(;i<r&&f(n[i]);i++);}for(;i<r;)i+=p(e,n,i,r,r,1,o.min,o.max,t.smooth,t.smoothMonotone,t.connectNulls)+1}}),v=i.extend({type:\"ec-polygon\",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},brush:o(i.prototype.brush),buildPath:function(e,t){var n=t.points,i=t.stackedOnPoints,r=0,o=n.length,a=t.smoothMonotone,s=g(n,t.smoothConstraint),l=g(i,t.smoothConstraint);if(t.connectNulls){for(;o>0&&f(n[o-1]);o--);for(;r<o&&f(n[r]);r++);}for(;r<o;){var u=p(e,n,r,o,o,1,s.min,s.max,t.smooth,a,t.connectNulls);p(e,i,r+u-1,u,o,-1,l.min,l.max,t.stackedOnSmooth,a,t.connectNulls),r+=u+1,e.closePath()}}});t.Polyline=m,t.Polygon=v},Mlni:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"YNzw\"),a=n(\"vXqC\"),s=n(\"HHfb\"),l=n(\"bBvJ\"),u=s.addCommas,c=s.encodeHTML;function h(e){a.defaultEmphasis(e,\"label\",[\"show\"])}var d=i.extendComponentModel({type:\"marker\",dependencies:[\"series\",\"grid\",\"polar\",\"geo\"],init:function(e,t,n){this.mergeDefaultAndTheme(e,n),this._mergeOption(e,n,!1,!0)},isAnimationEnabled:function(){if(o.node)return!1;var e=this.__hostSeries;return this.getShallow(\"animation\")&&e&&e.isAnimationEnabled()},mergeOption:function(e,t){this._mergeOption(e,t,!1,!1)},_mergeOption:function(e,t,n,i){var o=this.constructor,a=this.mainType+\"Model\";n||t.eachSeries(function(e){var n=e.get(this.mainType,!0),s=e[a];n&&n.data?(s?s._mergeOption(n,t,!0):(i&&h(n),r.each(n.data,function(e){e instanceof Array?(h(e[0]),h(e[1])):h(e)}),s=new o(n,this,t),r.extend(s,{mainType:this.mainType,seriesIndex:e.seriesIndex,name:e.name,createdBySelf:!0}),s.__hostSeries=e),e[a]=s):e[a]=null},this)},formatTooltip:function(e){var t=this.getData(),n=this.getRawValue(e),i=r.isArray(n)?r.map(n,u).join(\", \"):u(n),o=t.getName(e),a=c(this.name);return(null!=n||o)&&(a+=\"<br />\"),o&&(a+=c(o),null!=n&&(a+=\" : \")),null!=n&&(a+=c(i)),a},getData:function(){return this._data},setData:function(e){this._data=e}});r.mixin(d,l);var f=d;e.exports=f},MmMw:function(e,t,n){var i=n(\"EqjI\");e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&\"function\"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if(\"function\"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&\"function\"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError(\"Can't convert object to primitive value\")}},\"Mn6+\":function(e,t,n){var i=n(\"Icdr\");n(\"ZtEr\"),n(\"Fkmw\"),i.registerPreprocessor(function(e){e.markArea=e.markArea||{}})},MsVc:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Ylhr\"),o=n(\"0sHC\"),a=n(\"GxVO\"),s=[\"itemStyle\"],l=[\"emphasis\",\"itemStyle\"],u=r.extend({type:\"boxplot\",render:function(e,t,n){var i=e.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a=\"horizontal\"===e.get(\"layout\")?1:0;i.diff(o).add(function(e){if(i.hasValue(e)){var t=h(i.getItemLayout(e),i,e,a,!0);i.setItemGraphicEl(e,t),r.add(t)}}).update(function(e,t){var n=o.getItemGraphicEl(t);if(i.hasValue(e)){var s=i.getItemLayout(e);n?d(s,n,i,e):n=h(s,i,e,a),r.add(n),i.setItemGraphicEl(e,n)}else r.remove(n)}).remove(function(e){var t=o.getItemGraphicEl(e);t&&r.remove(t)}).execute(),this._data=i},remove:function(e){var t=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl(function(e){e&&t.remove(e)})},dispose:i.noop}),c=a.extend({type:\"boxplotBoxPath\",shape:{},buildPath:function(e,t){var n=t.points,i=0;for(e.moveTo(n[i][0],n[i][1]),i++;i<4;i++)e.lineTo(n[i][0],n[i][1]);for(e.closePath();i<n.length;i++)e.moveTo(n[i][0],n[i][1]),i++,e.lineTo(n[i][0],n[i][1])}});function h(e,t,n,r,o){var a=e.ends,s=new c({shape:{points:o?function(e,t,n){return i.map(e,function(e){return(e=e.slice())[t]=n.initBaseline,e})}(a,r,e):a}});return d(e,s,t,n,o),s}function d(e,t,n,i,r){var a=n.hostModel;(0,o[r?\"initProps\":\"updateProps\"])(t,{shape:{points:e.ends}},a,i);var u=n.getItemModel(i),c=u.getModel(s),h=n.getItemVisual(i,\"color\"),d=c.getItemStyle([\"borderColor\"]);d.stroke=h,d.strokeNoScale=!0,t.useStyle(d),t.z2=100;var f=u.getModel(l).getItemStyle();o.setHoverStyle(t,f)}var f=u;e.exports=f},Mxrs:function(e,t,n){var i=n(\"HGSA\"),r=n(\"/gxq\");e.exports=function(e,t){e.eachSeriesByType(\"sankey\",function(e){var t=e.getGraph().nodes;if(t.length){var n=1/0,o=-1/0;r.each(t,function(e){var t=e.getLayout().value;t<n&&(n=t),t>o&&(o=t)}),r.each(t,function(t){var r=new i({type:\"color\",mappingMethod:\"linear\",dataExtent:[n,o],visual:e.get(\"color\")}).mapValueToVisual(t.getLayout().value),a=t.getModel().get(\"itemStyle.color\");null!=a?t.setVisual(\"color\",a):t.setVisual(\"color\",r)})}})}},MyoG:function(e,t,n){var i=n(\"vXqC\"),r=i.makeInner,o=i.normalizeToArray,a=r();var s={clearColorPalette:function(){a(this).colorIdx=0,a(this).colorNameMap={}},getColorFromPalette:function(e,t,n){var i=a(t=t||this),r=i.colorIdx||0,s=i.colorNameMap=i.colorNameMap||{};if(s.hasOwnProperty(e))return s[e];var l=o(this.get(\"color\",!0)),u=this.get(\"colorLayer\",!0),c=null!=n&&u?function(e,t){for(var n=e.length,i=0;i<n;i++)if(e[i].length>t)return e[i];return e[n-1]}(u,n):l;if((c=c||l)&&c.length){var h=c[r];return e&&(s[e]=h),i.colorIdx=(r+1)%c.length,h}}};e.exports=s},N1UU:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");n(\"5vFd\"),n(\"OQAC\"),n(\"m5oG\");var o=n(\"m/6y\").layout,a=n(\"AjK0\");n(\"UkNE\"),i.registerLayout(r.curry(o,\"pictorialBar\")),i.registerVisual(a(\"pictorialBar\",\"roundRect\"))},N1qP:function(e,t,n){var i=n(\"QxFU\"),r=1e-8;function o(e,t){return Math.abs(e-t)<r}t.contain=function(e,t,n){var r=0,a=e[0];if(!a)return!1;for(var s=1;s<e.length;s++){var l=e[s];r+=i(a[0],a[1],l[0],l[1],t,n),a=l}var u=e[0];return o(a[0],u[0])&&o(a[1],u[1])||(r+=i(a[0],a[1],u[0],u[1],t,n)),0!==r}},NAKW:function(e,t,n){var i=n(\"LRsb\").circularLayout;e.exports=function(e){e.eachSeriesByType(\"graph\",function(e){\"circular\"===e.get(\"layout\")&&i(e,\"symbolSize\")})}},NC6I:function(module,exports,__webpack_require__){(function(process,global){var __WEBPACK_AMD_DEFINE_RESULT__;\n/**\n * [js-md5]{@link https://github.com/emn178/js-md5}\n *\n * @namespace md5\n * @version 0.7.3\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/**\n * [js-md5]{@link https://github.com/emn178/js-md5}\n *\n * @namespace md5\n * @version 0.7.3\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n!function(){\"use strict\";var ERROR=\"input is invalid type\",WINDOW=\"object\"==typeof window,root=WINDOW?window:{};root.JS_MD5_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&\"object\"==typeof self,NODE_JS=!root.JS_MD5_NO_NODE_JS&&\"object\"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=global:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_MD5_NO_COMMON_JS&&\"object\"==typeof module&&module.exports,AMD=__webpack_require__(\"nErl\"),ARRAY_BUFFER=!root.JS_MD5_NO_ARRAY_BUFFER&&\"undefined\"!=typeof ArrayBuffer,HEX_CHARS=\"0123456789abcdef\".split(\"\"),EXTRA=[128,32768,8388608,-2147483648],SHIFT=[0,8,16,24],OUTPUT_TYPES=[\"hex\",\"array\",\"digest\",\"buffer\",\"arrayBuffer\",\"base64\"],BASE64_ENCODE_CHAR=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\"),blocks=[],buffer8;if(ARRAY_BUFFER){var buffer=new ArrayBuffer(68);buffer8=new Uint8Array(buffer),blocks=new Uint32Array(buffer)}!root.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}),!ARRAY_BUFFER||!root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return\"object\"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var createOutputMethod=function(e){return function(t){return new Md5(!0).update(t)[e]()}},createMethod=function(){var e=createOutputMethod(\"hex\");NODE_JS&&(e=nodeWrap(e)),e.create=function(){return new Md5},e.update=function(t){return e.create().update(t)};for(var t=0;t<OUTPUT_TYPES.length;++t){var n=OUTPUT_TYPES[t];e[n]=createOutputMethod(n)}return e},nodeWrap=function(method){var crypto=eval(\"require('crypto')\"),Buffer=eval(\"require('buffer').Buffer\"),nodeMethod=function(e){if(\"string\"==typeof e)return crypto.createHash(\"md5\").update(e,\"utf8\").digest(\"hex\");if(null===e||void 0===e)throw ERROR;return e.constructor===ArrayBuffer&&(e=new Uint8Array(e)),Array.isArray(e)||ArrayBuffer.isView(e)||e.constructor===Buffer?crypto.createHash(\"md5\").update(new Buffer(e)).digest(\"hex\"):method(e)};return nodeMethod};function Md5(e){if(e)blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks,this.buffer8=buffer8;else if(ARRAY_BUFFER){var t=new ArrayBuffer(68);this.buffer8=new Uint8Array(t),this.blocks=new Uint32Array(t)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}Md5.prototype.update=function(e){if(!this.finalized){var t,n=typeof e;if(\"string\"!==n){if(\"object\"!==n)throw ERROR;if(null===e)throw ERROR;if(ARRAY_BUFFER&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||ARRAY_BUFFER&&ArrayBuffer.isView(e)))throw ERROR;t=!0}for(var i,r,o=0,a=e.length,s=this.blocks,l=this.buffer8;o<a;){if(this.hashed&&(this.hashed=!1,s[0]=s[16],s[16]=s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=0),t)if(ARRAY_BUFFER)for(r=this.start;o<a&&r<64;++o)l[r++]=e[o];else for(r=this.start;o<a&&r<64;++o)s[r>>2]|=e[o]<<SHIFT[3&r++];else if(ARRAY_BUFFER)for(r=this.start;o<a&&r<64;++o)(i=e.charCodeAt(o))<128?l[r++]=i:i<2048?(l[r++]=192|i>>6,l[r++]=128|63&i):i<55296||i>=57344?(l[r++]=224|i>>12,l[r++]=128|i>>6&63,l[r++]=128|63&i):(i=65536+((1023&i)<<10|1023&e.charCodeAt(++o)),l[r++]=240|i>>18,l[r++]=128|i>>12&63,l[r++]=128|i>>6&63,l[r++]=128|63&i);else for(r=this.start;o<a&&r<64;++o)(i=e.charCodeAt(o))<128?s[r>>2]|=i<<SHIFT[3&r++]:i<2048?(s[r>>2]|=(192|i>>6)<<SHIFT[3&r++],s[r>>2]|=(128|63&i)<<SHIFT[3&r++]):i<55296||i>=57344?(s[r>>2]|=(224|i>>12)<<SHIFT[3&r++],s[r>>2]|=(128|i>>6&63)<<SHIFT[3&r++],s[r>>2]|=(128|63&i)<<SHIFT[3&r++]):(i=65536+((1023&i)<<10|1023&e.charCodeAt(++o)),s[r>>2]|=(240|i>>18)<<SHIFT[3&r++],s[r>>2]|=(128|i>>12&63)<<SHIFT[3&r++],s[r>>2]|=(128|i>>6&63)<<SHIFT[3&r++],s[r>>2]|=(128|63&i)<<SHIFT[3&r++]);this.lastByteIndex=r,this.bytes+=r-this.start,r>=64?(this.start=r-64,this.hash(),this.hashed=!0):this.start=r}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Md5.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[t>>2]|=EXTRA[3&t],t>=56&&(this.hashed||this.hash(),e[0]=e[16],e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.bytes<<3,e[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},Md5.prototype.hash=function(){var e,t,n,i,r,o,a=this.blocks;this.first?t=((t=((e=((e=a[0]-680876937)<<7|e>>>25)-271733879<<0)^(n=((n=(-271733879^(i=((i=(-1732584194^2004318071&e)+a[1]-117830708)<<12|i>>>20)+e<<0)&(-271733879^e))+a[2]-1126478375)<<17|n>>>15)+i<<0)&(i^e))+a[3]-1316259209)<<22|t>>>10)+n<<0:(e=this.h0,t=this.h1,n=this.h2,t=((t+=((e=((e+=((i=this.h3)^t&(n^i))+a[0]-680876936)<<7|e>>>25)+t<<0)^(n=((n+=(t^(i=((i+=(n^e&(t^n))+a[1]-389564586)<<12|i>>>20)+e<<0)&(e^t))+a[2]+606105819)<<17|n>>>15)+i<<0)&(i^e))+a[3]-1044525330)<<22|t>>>10)+n<<0),t=((t+=((e=((e+=(i^t&(n^i))+a[4]-176418897)<<7|e>>>25)+t<<0)^(n=((n+=(t^(i=((i+=(n^e&(t^n))+a[5]+1200080426)<<12|i>>>20)+e<<0)&(e^t))+a[6]-1473231341)<<17|n>>>15)+i<<0)&(i^e))+a[7]-45705983)<<22|t>>>10)+n<<0,t=((t+=((e=((e+=(i^t&(n^i))+a[8]+1770035416)<<7|e>>>25)+t<<0)^(n=((n+=(t^(i=((i+=(n^e&(t^n))+a[9]-1958414417)<<12|i>>>20)+e<<0)&(e^t))+a[10]-42063)<<17|n>>>15)+i<<0)&(i^e))+a[11]-1990404162)<<22|t>>>10)+n<<0,t=((t+=((e=((e+=(i^t&(n^i))+a[12]+1804603682)<<7|e>>>25)+t<<0)^(n=((n+=(t^(i=((i+=(n^e&(t^n))+a[13]-40341101)<<12|i>>>20)+e<<0)&(e^t))+a[14]-1502002290)<<17|n>>>15)+i<<0)&(i^e))+a[15]+1236535329)<<22|t>>>10)+n<<0,t=((t+=((i=((i+=(t^n&((e=((e+=(n^i&(t^n))+a[1]-165796510)<<5|e>>>27)+t<<0)^t))+a[6]-1069501632)<<9|i>>>23)+e<<0)^e&((n=((n+=(e^t&(i^e))+a[11]+643717713)<<14|n>>>18)+i<<0)^i))+a[0]-373897302)<<20|t>>>12)+n<<0,t=((t+=((i=((i+=(t^n&((e=((e+=(n^i&(t^n))+a[5]-701558691)<<5|e>>>27)+t<<0)^t))+a[10]+38016083)<<9|i>>>23)+e<<0)^e&((n=((n+=(e^t&(i^e))+a[15]-660478335)<<14|n>>>18)+i<<0)^i))+a[4]-405537848)<<20|t>>>12)+n<<0,t=((t+=((i=((i+=(t^n&((e=((e+=(n^i&(t^n))+a[9]+568446438)<<5|e>>>27)+t<<0)^t))+a[14]-1019803690)<<9|i>>>23)+e<<0)^e&((n=((n+=(e^t&(i^e))+a[3]-187363961)<<14|n>>>18)+i<<0)^i))+a[8]+1163531501)<<20|t>>>12)+n<<0,t=((t+=((i=((i+=(t^n&((e=((e+=(n^i&(t^n))+a[13]-1444681467)<<5|e>>>27)+t<<0)^t))+a[2]-51403784)<<9|i>>>23)+e<<0)^e&((n=((n+=(e^t&(i^e))+a[7]+1735328473)<<14|n>>>18)+i<<0)^i))+a[12]-1926607734)<<20|t>>>12)+n<<0,t=((t+=((o=(i=((i+=((r=t^n)^(e=((e+=(r^i)+a[5]-378558)<<4|e>>>28)+t<<0))+a[8]-2022574463)<<11|i>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[11]+1839030562)<<16|n>>>16)+i<<0))+a[14]-35309556)<<23|t>>>9)+n<<0,t=((t+=((o=(i=((i+=((r=t^n)^(e=((e+=(r^i)+a[1]-1530992060)<<4|e>>>28)+t<<0))+a[4]+1272893353)<<11|i>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[7]-155497632)<<16|n>>>16)+i<<0))+a[10]-1094730640)<<23|t>>>9)+n<<0,t=((t+=((o=(i=((i+=((r=t^n)^(e=((e+=(r^i)+a[13]+681279174)<<4|e>>>28)+t<<0))+a[0]-358537222)<<11|i>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[3]-722521979)<<16|n>>>16)+i<<0))+a[6]+76029189)<<23|t>>>9)+n<<0,t=((t+=((o=(i=((i+=((r=t^n)^(e=((e+=(r^i)+a[9]-640364487)<<4|e>>>28)+t<<0))+a[12]-421815835)<<11|i>>>21)+e<<0)^e)^(n=((n+=(o^t)+a[15]+530742520)<<16|n>>>16)+i<<0))+a[2]-995338651)<<23|t>>>9)+n<<0,t=((t+=((i=((i+=(t^((e=((e+=(n^(t|~i))+a[0]-198630844)<<6|e>>>26)+t<<0)|~n))+a[7]+1126891415)<<10|i>>>22)+e<<0)^((n=((n+=(e^(i|~t))+a[14]-1416354905)<<15|n>>>17)+i<<0)|~e))+a[5]-57434055)<<21|t>>>11)+n<<0,t=((t+=((i=((i+=(t^((e=((e+=(n^(t|~i))+a[12]+1700485571)<<6|e>>>26)+t<<0)|~n))+a[3]-1894986606)<<10|i>>>22)+e<<0)^((n=((n+=(e^(i|~t))+a[10]-1051523)<<15|n>>>17)+i<<0)|~e))+a[1]-2054922799)<<21|t>>>11)+n<<0,t=((t+=((i=((i+=(t^((e=((e+=(n^(t|~i))+a[8]+1873313359)<<6|e>>>26)+t<<0)|~n))+a[15]-30611744)<<10|i>>>22)+e<<0)^((n=((n+=(e^(i|~t))+a[6]-1560198380)<<15|n>>>17)+i<<0)|~e))+a[13]+1309151649)<<21|t>>>11)+n<<0,t=((t+=((i=((i+=(t^((e=((e+=(n^(t|~i))+a[4]-145523070)<<6|e>>>26)+t<<0)|~n))+a[11]-1120210379)<<10|i>>>22)+e<<0)^((n=((n+=(e^(i|~t))+a[2]+718787259)<<15|n>>>17)+i<<0)|~e))+a[9]-343485551)<<21|t>>>11)+n<<0,this.first?(this.h0=e+1732584193<<0,this.h1=t-271733879<<0,this.h2=n-1732584194<<0,this.h3=i+271733878<<0,this.first=!1):(this.h0=this.h0+e<<0,this.h1=this.h1+t<<0,this.h2=this.h2+n<<0,this.h3=this.h3+i<<0)},Md5.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,i=this.h3;return HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]},Md5.prototype.toString=Md5.prototype.hex,Md5.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,i=this.h3;return[255&e,e>>8&255,e>>16&255,e>>24&255,255&t,t>>8&255,t>>16&255,t>>24&255,255&n,n>>8&255,n>>16&255,n>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255]},Md5.prototype.array=Md5.prototype.digest,Md5.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(16),t=new Uint32Array(e);return t[0]=this.h0,t[1]=this.h1,t[2]=this.h2,t[3]=this.h3,e},Md5.prototype.buffer=Md5.prototype.arrayBuffer,Md5.prototype.base64=function(){for(var e,t,n,i=\"\",r=this.array(),o=0;o<15;)e=r[o++],t=r[o++],n=r[o++],i+=BASE64_ENCODE_CHAR[e>>>2]+BASE64_ENCODE_CHAR[63&(e<<4|t>>>4)]+BASE64_ENCODE_CHAR[63&(t<<2|n>>>6)]+BASE64_ENCODE_CHAR[63&n];return e=r[o],i+=BASE64_ENCODE_CHAR[e>>>2]+BASE64_ENCODE_CHAR[e<<4&63]+\"==\"};var exports=createMethod();COMMON_JS?module.exports=exports:(root.md5=exports,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))}()}).call(exports,__webpack_require__(\"W2nU\"),__webpack_require__(\"DuR2\"))},NGRG:function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=\"\\0__link_datas\",a=\"\\0__link_mainData\";function s(e,t){if((r=this)[a]===r){var n=i.extend({},this[o]);n[this.dataType]=t,h(t,n,e)}else d(t,this.dataType,this[a],e);var r;return t}function l(e,t){return e.struct&&e.struct.update(this),t}function u(e,t){return r(t[o],function(n,i){n!==t&&d(n.cloneShallow(),i,t,e)}),t}function c(e){var t=this[a];return null==e||null==t?t:t[o][e]}function h(e,t,n){e[o]={},r(t,function(t,i){d(t,i,e,n)})}function d(e,t,n,i){n[o][t]=e,e[a]=n,e.dataType=t,i.struct&&(e[i.structAttr]=i.struct,i.struct[i.datasAttr[t]]=e),e.getLinkedData=c}var f=function(e){var t=e.mainData,n=e.datas;n||(n={main:t},e.datasAttr={main:\"data\"}),e.datas=e.mainData=null,h(t,n,e),r(n,function(n){r(t.TRANSFERABLE_METHODS,function(t){n.wrapMethod(t,i.curry(s,e))})}),t.wrapMethod(\"cloneShallow\",i.curry(u,e)),r(t.CHANGABLE_METHODS,function(n){t.wrapMethod(n,i.curry(l,e))}),i.assert(n[t.dataType]===t)};e.exports=f},NKek:function(e,t){var n={axisPointer:1,tooltip:1,brush:1};t.onIrrelevantElement=function(e,t,i){var r=t.getComponentByElement(e.topTarget),o=r&&r.coordinateSystem;return r&&r!==i&&!n[r.mainType]&&o&&o.model!==i}},NMof:function(e,t,n){\"use strict\";var i,r;\"function\"==typeof Symbol&&Symbol.iterator;void 0===(r=\"function\"==typeof(i=function(){var e=window,t={placement:\"bottom\",gpuAcceleration:!0,offset:0,boundariesElement:\"viewport\",boundariesPadding:5,preventOverflowOrder:[\"left\",\"right\",\"top\",\"bottom\"],flipBehavior:\"flip\",arrowElement:\"[x-arrow]\",arrowOffset:0,modifiers:[\"shift\",\"offset\",\"preventOverflow\",\"keepTogether\",\"arrow\",\"flip\",\"applyStyle\"],modifiersIgnored:[],forceAbsolute:!1};function n(e,n,i){this._reference=e.jquery?e[0]:e,this.state={};var r=void 0===n||null===n,o=n&&\"[object Object]\"===Object.prototype.toString.call(n);return this._popper=r||o?this.parse(o?n:{}):n.jquery?n[0]:n,this._options=Object.assign({},t,i),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return\"applyStyle\"===e&&this._popper.setAttribute(\"x-placement\",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),c(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function i(t){var n=t.style.display,i=t.style.visibility;t.style.display=\"block\",t.style.visibility=\"hidden\";t.offsetWidth;var r=e.getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.marginLeft)+parseFloat(r.marginRight),s={width:t.offsetWidth+a,height:t.offsetHeight+o};return t.style.display=n,t.style.visibility=i,s}function r(e){var t={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function o(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var n,i=0;for(n in e){if(e[n]===t)return i;i++}return null}function s(t,n){return e.getComputedStyle(t,null)[n]}function l(t){var n=t.offsetParent;return n!==e.document.body&&n?n:e.document.documentElement}function u(t){var n=t.parentNode;return n?n===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==[\"scroll\",\"auto\"].indexOf(s(n,\"overflow\"))||-1!==[\"scroll\",\"auto\"].indexOf(s(n,\"overflow-x\"))||-1!==[\"scroll\",\"auto\"].indexOf(s(n,\"overflow-y\"))?n:u(t.parentNode):t}function c(e,t){Object.keys(t).forEach(function(n){var i,r=\"\";-1!==[\"width\",\"height\",\"top\",\"right\",\"bottom\",\"left\"].indexOf(n)&&(\"\"!==(i=t[n])&&!isNaN(parseFloat(i))&&isFinite(i))&&(r=\"px\"),e.style[n]=t[n]+r})}function h(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function d(e){var t=e.getBoundingClientRect(),n=-1!=navigator.userAgent.indexOf(\"MSIE\")&&\"HTML\"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:n,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-n}}function f(t){for(var n=[\"\",\"ms\",\"webkit\",\"moz\",\"o\"],i=0;i<n.length;i++){var r=n[i]?n[i]+t.charAt(0).toUpperCase()+t.slice(1):t;if(void 0!==e.document.body.style[r])return r}return null}return n.prototype.destroy=function(){return this._popper.removeAttribute(\"x-placement\"),this._popper.style.left=\"\",this._popper.style.position=\"\",this._popper.style.top=\"\",this._popper.style[f(\"transform\")]=\"\",this._removeEventListeners(),this._options.removeOnDestroy&&this._popper.remove(),this},n.prototype.update=function(){var e={instance:this,styles:{}};e.placement=this._options.placement,e._originalPlacement=this._options.placement,e.offsets=this._getOffsets(this._popper,this._reference,e.placement),e.boundaries=this._getBoundaries(e,this._options.boundariesPadding,this._options.boundariesElement),e=this.runModifiers(e,this._options.modifiers),\"function\"==typeof this.state.updateCallback&&this.state.updateCallback(e)},n.prototype.onCreate=function(e){return e(this),this},n.prototype.onUpdate=function(e){return this.state.updateCallback=e,this},n.prototype.parse=function(t){var n={tagName:\"div\",classNames:[\"popper\"],attributes:[],parent:e.document.body,content:\"\",contentType:\"text\",arrowTagName:\"div\",arrowClassNames:[\"popper__arrow\"],arrowAttributes:[\"x-arrow\"]};t=Object.assign({},n,t);var i=e.document,r=i.createElement(t.tagName);if(s(r,t.classNames),l(r,t.attributes),\"node\"===t.contentType?r.appendChild(t.content.jquery?t.content[0]:t.content):\"html\"===t.contentType?r.innerHTML=t.content:r.textContent=t.content,t.arrowTagName){var o=i.createElement(t.arrowTagName);s(o,t.arrowClassNames),l(o,t.arrowAttributes),r.appendChild(o)}var a=t.parent.jquery?t.parent[0]:t.parent;if(\"string\"==typeof a){if((a=i.querySelectorAll(t.parent)).length>1&&console.warn(\"WARNING: the given `parent` query(\"+t.parent+\") matched more than one element, the first one will be used\"),0===a.length)throw\"ERROR: the given `parent` doesn't exists!\";a=a[0]}return a.length>1&&a instanceof Element==!1&&(console.warn(\"WARNING: you have passed as parent a list of elements, the first one will be used\"),a=a[0]),a.appendChild(r),r;function s(e,t){t.forEach(function(t){e.classList.add(t)})}function l(e,t){t.forEach(function(t){e.setAttribute(t.split(\":\")[0],t.split(\":\")[1]||\"\")})}},n.prototype._getPosition=function(t,n){l(n);return this._options.forceAbsolute?\"absolute\":function t(n){if(n===e.document.body)return!1;if(\"fixed\"===s(n,\"position\"))return!0;return n.parentNode?t(n.parentNode):n}(n)?\"fixed\":\"absolute\"},n.prototype._getOffsets=function(e,t,n){n=n.split(\"-\")[0];var r={};r.position=this.state.position;var o=\"fixed\"===r.position,a=function(e,t,n){var i=d(e),r=d(t);if(n){var o=u(t);r.top+=o.scrollTop,r.bottom+=o.scrollTop,r.left+=o.scrollLeft,r.right+=o.scrollLeft}return{top:i.top-r.top,left:i.left-r.left,bottom:i.top-r.top+i.height,right:i.left-r.left+i.width,width:i.width,height:i.height}}(t,l(e),o),s=i(e);return-1!==[\"right\",\"left\"].indexOf(n)?(r.top=a.top+a.height/2-s.height/2,r.left=\"left\"===n?a.left-s.width:a.right):(r.left=a.left+a.width/2-s.width/2,r.top=\"top\"===n?a.top-s.height:a.bottom),r.width=s.width,r.height=s.height,{popper:r,reference:a}},n.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener(\"resize\",this.state.updateBound),\"window\"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener(\"scroll\",this.state.updateBound),this.state.scrollTarget=t}},n.prototype._removeEventListeners=function(){e.removeEventListener(\"resize\",this.state.updateBound),\"window\"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener(\"scroll\",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},n.prototype._getBoundaries=function(t,n,i){var r,o,a={};if(\"window\"===i){var s=e.document.body,c=e.document.documentElement;r=Math.max(s.scrollHeight,s.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),a={top:0,right:Math.max(s.scrollWidth,s.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),bottom:r,left:0}}else if(\"viewport\"===i){var d=l(this._popper),f=u(this._popper),p=h(d),g=\"fixed\"===t.offsets.popper.position?0:(o=f)==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):o.scrollTop,m=\"fixed\"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(f);a={top:0-(p.top-g),right:e.document.documentElement.clientWidth-(p.left-m),bottom:e.document.documentElement.clientHeight-(p.top-g),left:0-(p.left-m)}}else a=l(this._popper)===i?{top:0,left:0,right:i.clientWidth,bottom:i.clientHeight}:h(i);return a.left+=n,a.right-=n,a.top=a.top+n,a.bottom=a.bottom-n,a},n.prototype.runModifiers=function(e,t,n){var i=t.slice();return void 0!==n&&(i=this._options.modifiers.slice(0,a(this._options.modifiers,n))),i.forEach(function(t){var n;(n=t)&&\"[object Function]\"==={}.toString.call(n)&&(e=t.call(this,e))}.bind(this)),e},n.prototype.isModifierRequired=function(e,t){var n=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,n).filter(function(e){return e===t}).length},n.prototype.modifiers={},n.prototype.modifiers.applyStyle=function(e){var t,n={position:e.offsets.popper.position},i=Math.round(e.offsets.popper.left),r=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=f(\"transform\"))?(n[t]=\"translate3d(\"+i+\"px, \"+r+\"px, 0)\",n.top=0,n.left=0):(n.left=i,n.top=r),Object.assign(n,e.styles),c(this._popper,n),this._popper.setAttribute(\"x-placement\",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&c(e.arrowElement,e.offsets.arrow),e},n.prototype.modifiers.shift=function(e){var t=e.placement,n=t.split(\"-\")[0],i=t.split(\"-\")[1];if(i){var r=e.offsets.reference,a=o(e.offsets.popper),s={y:{start:{top:r.top},end:{top:r.top+r.height-a.height}},x:{start:{left:r.left},end:{left:r.left+r.width-a.width}}},l=-1!==[\"bottom\",\"top\"].indexOf(n)?\"x\":\"y\";e.offsets.popper=Object.assign(a,s[l][i])}return e},n.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,n=o(e.offsets.popper),i={left:function(){var t=n.left;return n.left<e.boundaries.left&&(t=Math.max(n.left,e.boundaries.left)),{left:t}},right:function(){var t=n.left;return n.right>e.boundaries.right&&(t=Math.min(n.left,e.boundaries.right-n.width)),{left:t}},top:function(){var t=n.top;return n.top<e.boundaries.top&&(t=Math.max(n.top,e.boundaries.top)),{top:t}},bottom:function(){var t=n.top;return n.bottom>e.boundaries.bottom&&(t=Math.min(n.top,e.boundaries.bottom-n.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(n,i[t]())}),e},n.prototype.modifiers.keepTogether=function(e){var t=o(e.offsets.popper),n=e.offsets.reference,i=Math.floor;return t.right<i(n.left)&&(e.offsets.popper.left=i(n.left)-t.width),t.left>i(n.right)&&(e.offsets.popper.left=i(n.right)),t.bottom<i(n.top)&&(e.offsets.popper.top=i(n.top)-t.height),t.top>i(n.bottom)&&(e.offsets.popper.top=i(n.bottom)),e},n.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn(\"WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!\"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split(\"-\")[0],n=r(t),i=e.placement.split(\"-\")[1]||\"\",a=[];return(a=\"flip\"===this._options.flipBehavior?[t,n]:this._options.flipBehavior).forEach(function(s,l){if(t===s&&a.length!==l+1){t=e.placement.split(\"-\")[0],n=r(t);var u=o(e.offsets.popper),c=-1!==[\"right\",\"bottom\"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[n])||!c&&Math.floor(e.offsets.reference[t])<Math.floor(u[n]))&&(e.flipped=!0,e.placement=a[l+1],i&&(e.placement+=\"-\"+i),e.offsets.popper=this._getOffsets(this._popper,this._reference,e.placement).popper,e=this.runModifiers(e,this._options.modifiers,this._flip))}}.bind(this)),e},n.prototype.modifiers.offset=function(e){var t=this._options.offset,n=e.offsets.popper;return-1!==e.placement.indexOf(\"left\")?n.top-=t:-1!==e.placement.indexOf(\"right\")?n.top+=t:-1!==e.placement.indexOf(\"top\")?n.left-=t:-1!==e.placement.indexOf(\"bottom\")&&(n.left+=t),e},n.prototype.modifiers.arrow=function(e){var t=this._options.arrowElement,n=this._options.arrowOffset;if(\"string\"==typeof t&&(t=this._popper.querySelector(t)),!t)return e;if(!this._popper.contains(t))return console.warn(\"WARNING: `arrowElement` must be child of its popper element!\"),e;if(!this.isModifierRequired(this.modifiers.arrow,this.modifiers.keepTogether))return console.warn(\"WARNING: keepTogether modifier is required by arrow modifier in order to work, be sure to include it before arrow!\"),e;var r={},a=e.placement.split(\"-\")[0],s=o(e.offsets.popper),l=e.offsets.reference,u=-1!==[\"left\",\"right\"].indexOf(a),c=u?\"height\":\"width\",h=u?\"top\":\"left\",d=u?\"left\":\"top\",f=u?\"bottom\":\"right\",p=i(t)[c];l[f]-p<s[h]&&(e.offsets.popper[h]-=s[h]-(l[f]-p)),l[h]+p>s[f]&&(e.offsets.popper[h]+=l[h]+p-s[f]);var g=l[h]+(n||l[c]/2-p/2)-s[h];return g=Math.max(Math.min(s[c]-p-8,g),8),r[h]=g,r[d]=\"\",e.offsets.arrow=r,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,\"assign\",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError(\"Cannot convert first argument to object\");for(var t=Object(e),n=1;n<arguments.length;n++){var i=arguments[n];if(void 0!==i&&null!==i){i=Object(i);for(var r=Object.keys(i),o=0,a=r.length;o<a;o++){var s=r[o],l=Object.getOwnPropertyDescriptor(i,s);void 0!==l&&l.enumerable&&(t[s]=i[s])}}}return t}}),n})?i.call(t,n,t,e):i)||(e.exports=r)},NUWb:function(e,t,n){var i=n(\"/gxq\"),r=n(\"HGSA\"),o=i.each;function a(e){if(e)for(var t in e)if(e.hasOwnProperty(t))return!0}t.createVisualMappings=function(e,t,n){var a={};return o(t,function(t){var s,l=a[t]=((s=function(){}).prototype.__hidden=s.prototype,new s);o(e[t],function(e,o){if(r.isValidType(o)){var a={type:o,visual:e};n&&n(a,t),l[o]=new r(a),\"opacity\"===o&&((a=i.clone(a)).type=\"colorAlpha\",l.__hidden.__alphaForOpacity=new r(a))}})}),a},t.replaceVisualOption=function(e,t,n){var r;i.each(n,function(e){t.hasOwnProperty(e)&&a(t[e])&&(r=!0)}),r&&i.each(n,function(n){t.hasOwnProperty(n)&&a(t[n])?e[n]=i.clone(t[n]):delete e[n]})},t.applyVisual=function(e,t,n,o,a,s){var l,u={};function c(e){return n.getItemVisual(l,e)}function h(e,t){n.setItemVisual(l,e,t)}function d(e,i){l=null==s?e:i;var r=n.getRawDataItem(l);if(!r||!1!==r.visualMap)for(var d=o.call(a,e),f=t[d],p=u[d],g=0,m=p.length;g<m;g++){var v=p[g];f[v]&&f[v].applyVisual(e,c,h)}}i.each(e,function(e){var n=r.prepareVisualTypes(t[e]);u[e]=n}),null==s?n.each(d):n.each([s],d)},t.incrementalApplyVisual=function(e,t,n,o){var a={};return i.each(e,function(e){var n=r.prepareVisualTypes(t[e]);a[e]=n}),{progress:function(e,i){function r(e){return i.getItemVisual(l,e)}function s(e,t){i.setItemVisual(l,e,t)}var l;for(null!=o&&(o=i.getDimension(o));null!=(l=e.next());){var u=i.getRawDataItem(l);if(!u||!1!==u.visualMap)for(var c=null!=o?i.get(o,l,!0):l,h=n(c),d=t[h],f=a[h],p=0,g=f.length;p<g;p++){var m=f[p];d[m]&&d[m].applyVisual(c,r,s)}}}}}},NYxO:function(e,t,n){\"use strict\";(function(e){n.d(t,\"b\",function(){return w});var i=(\"undefined\"!=typeof window?window:void 0!==e?e:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function r(e,t){if(void 0===t&&(t=[]),null===e||\"object\"!=typeof e)return e;var n,i=(n=function(t){return t.original===e},t.filter(n)[0]);if(i)return i.copy;var o=Array.isArray(e)?[]:{};return t.push({original:e,copy:o}),Object.keys(e).forEach(function(n){o[n]=r(e[n],t)}),o}function o(e,t){Object.keys(e).forEach(function(n){return t(e[n],n)})}function a(e){return null!==e&&\"object\"==typeof e}var s=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=(\"function\"==typeof n?n():n)||{}},l={namespaced:{configurable:!0}};l.namespaced.get=function(){return!!this._rawModule.namespaced},s.prototype.addChild=function(e,t){this._children[e]=t},s.prototype.removeChild=function(e){delete this._children[e]},s.prototype.getChild=function(e){return this._children[e]},s.prototype.hasChild=function(e){return e in this._children},s.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},s.prototype.forEachChild=function(e){o(this._children,e)},s.prototype.forEachGetter=function(e){this._rawModule.getters&&o(this._rawModule.getters,e)},s.prototype.forEachAction=function(e){this._rawModule.actions&&o(this._rawModule.actions,e)},s.prototype.forEachMutation=function(e){this._rawModule.mutations&&o(this._rawModule.mutations,e)},Object.defineProperties(s.prototype,l);var u=function(e){this.register([],e,!1)};u.prototype.get=function(e){return e.reduce(function(e,t){return e.getChild(t)},this.root)},u.prototype.getNamespace=function(e){var t=this.root;return e.reduce(function(e,n){return e+((t=t.getChild(n)).namespaced?n+\"/\":\"\")},\"\")},u.prototype.update=function(e){!function e(t,n,i){0;n.update(i);if(i.modules)for(var r in i.modules){if(!n.getChild(r))return void 0;e(t.concat(r),n.getChild(r),i.modules[r])}}([],this.root,e)},u.prototype.register=function(e,t,n){var i=this;void 0===n&&(n=!0);var r=new s(t,n);0===e.length?this.root=r:this.get(e.slice(0,-1)).addChild(e[e.length-1],r);t.modules&&o(t.modules,function(t,r){i.register(e.concat(r),t,n)})},u.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],i=t.getChild(n);i&&i.runtime&&t.removeChild(n)},u.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return t.hasChild(n)};var c;var h=function(e){var t=this;void 0===e&&(e={}),!c&&\"undefined\"!=typeof window&&window.Vue&&b(window.Vue);var n=e.plugins;void 0===n&&(n=[]);var r=e.strict;void 0===r&&(r=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new u(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new c,this._makeLocalGettersCache=Object.create(null);var o=this,a=this.dispatch,s=this.commit;this.dispatch=function(e,t){return a.call(o,e,t)},this.commit=function(e,t,n){return s.call(o,e,t,n)},this.strict=r;var l=this._modules.root.state;m(this,l,[],this._modules.root),g(this,l),n.forEach(function(e){return e(t)}),(void 0!==e.devtools?e.devtools:c.config.devtools)&&function(e){i&&(e._devtoolHook=i,i.emit(\"vuex:init\",e),i.on(\"vuex:travel-to-state\",function(t){e.replaceState(t)}),e.subscribe(function(e,t){i.emit(\"vuex:mutation\",e,t)},{prepend:!0}),e.subscribeAction(function(e,t){i.emit(\"vuex:action\",e,t)},{prepend:!0}))}(this)},d={state:{configurable:!0}};function f(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function p(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;m(e,n,[],e._modules.root,!0),g(e,n,t)}function g(e,t,n){var i=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var r={};o(e._wrappedGetters,function(t,n){r[n]=function(e,t){return function(){return e(t)}}(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})});var a=c.config.silent;c.config.silent=!0,e._vm=new c({data:{$$state:t},computed:r}),c.config.silent=a,e.strict&&function(e){e._vm.$watch(function(){return this._data.$$state},function(){0},{deep:!0,sync:!0})}(e),i&&(n&&e._withCommit(function(){i._data.$$state=null}),c.nextTick(function(){return i.$destroy()}))}function m(e,t,n,i,r){var o=!n.length,a=e._modules.getNamespace(n);if(i.namespaced&&(e._modulesNamespaceMap[a],e._modulesNamespaceMap[a]=i),!o&&!r){var s=v(t,n.slice(0,-1)),l=n[n.length-1];e._withCommit(function(){c.set(s,l,i.state)})}var u=i.context=function(e,t,n){var i=\"\"===t,r={dispatch:i?e.dispatch:function(n,i,r){var o=y(n,i,r),a=o.payload,s=o.options,l=o.type;return s&&s.root||(l=t+l),e.dispatch(l,a)},commit:i?e.commit:function(n,i,r){var o=y(n,i,r),a=o.payload,s=o.options,l=o.type;s&&s.root||(l=t+l),e.commit(l,a,s)}};return Object.defineProperties(r,{getters:{get:i?function(){return e.getters}:function(){return function(e,t){if(!e._makeLocalGettersCache[t]){var n={},i=t.length;Object.keys(e.getters).forEach(function(r){if(r.slice(0,i)===t){var o=r.slice(i);Object.defineProperty(n,o,{get:function(){return e.getters[r]},enumerable:!0})}}),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}(e,t)}},state:{get:function(){return v(e.state,n)}}}),r}(e,a,n);i.forEachMutation(function(t,n){!function(e,t,n,i){(e._mutations[t]||(e._mutations[t]=[])).push(function(t){n.call(e,i.state,t)})}(e,a+n,t,u)}),i.forEachAction(function(t,n){var i=t.root?n:a+n,r=t.handler||t;!function(e,t,n,i){(e._actions[t]||(e._actions[t]=[])).push(function(t){var r,o=n.call(e,{dispatch:i.dispatch,commit:i.commit,getters:i.getters,state:i.state,rootGetters:e.getters,rootState:e.state},t);return(r=o)&&\"function\"==typeof r.then||(o=Promise.resolve(o)),e._devtoolHook?o.catch(function(t){throw e._devtoolHook.emit(\"vuex:error\",t),t}):o})}(e,i,r,u)}),i.forEachGetter(function(t,n){!function(e,t,n,i){if(e._wrappedGetters[t])return void 0;e._wrappedGetters[t]=function(e){return n(i.state,i.getters,e.state,e.getters)}}(e,a+n,t,u)}),i.forEachChild(function(i,o){m(e,t,n.concat(o),i,r)})}function v(e,t){return t.reduce(function(e,t){return e[t]},e)}function y(e,t,n){return a(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}function b(e){c&&e===c||\n/*!\n * vuex v3.5.1\n * (c) 2020 Evan You\n * @license MIT\n */\nfunction(e){if(Number(e.version.split(\".\")[0])>=2)e.mixin({beforeCreate:n});else{var t=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[n].concat(e.init):n,t.call(this,e)}}function n(){var e=this.$options;e.store?this.$store=\"function\"==typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}(c=e)}d.state.get=function(){return this._vm._data.$$state},d.state.set=function(e){0},h.prototype.commit=function(e,t,n){var i=this,r=y(e,t,n),o=r.type,a=r.payload,s=(r.options,{type:o,payload:a}),l=this._mutations[o];l&&(this._withCommit(function(){l.forEach(function(e){e(a)})}),this._subscribers.slice().forEach(function(e){return e(s,i.state)}))},h.prototype.dispatch=function(e,t){var n=this,i=y(e,t),r=i.type,o=i.payload,a={type:r,payload:o},s=this._actions[r];if(s){try{this._actionSubscribers.slice().filter(function(e){return e.before}).forEach(function(e){return e.before(a,n.state)})}catch(e){0}var l=s.length>1?Promise.all(s.map(function(e){return e(o)})):s[0](o);return new Promise(function(e,t){l.then(function(t){try{n._actionSubscribers.filter(function(e){return e.after}).forEach(function(e){return e.after(a,n.state)})}catch(e){0}e(t)},function(e){try{n._actionSubscribers.filter(function(e){return e.error}).forEach(function(t){return t.error(a,n.state,e)})}catch(e){0}t(e)})})}},h.prototype.subscribe=function(e,t){return f(e,this._subscribers,t)},h.prototype.subscribeAction=function(e,t){return f(\"function\"==typeof e?{before:e}:e,this._actionSubscribers,t)},h.prototype.watch=function(e,t,n){var i=this;return this._watcherVM.$watch(function(){return e(i.state,i.getters)},t,n)},h.prototype.replaceState=function(e){var t=this;this._withCommit(function(){t._vm._data.$$state=e})},h.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),\"string\"==typeof e&&(e=[e]),this._modules.register(e,t),m(this,this.state,e,this._modules.get(e),n.preserveState),g(this,this.state)},h.prototype.unregisterModule=function(e){var t=this;\"string\"==typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit(function(){var n=v(t.state,e.slice(0,-1));c.delete(n,e[e.length-1])}),p(this)},h.prototype.hasModule=function(e){return\"string\"==typeof e&&(e=[e]),this._modules.isRegistered(e)},h.prototype.hotUpdate=function(e){this._modules.update(e),p(this,!0)},h.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(h.prototype,d);var x=k(function(e,t){var n={};return S(t).forEach(function(t){var i=t.key,r=t.val;n[i]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var i=T(this.$store,\"mapState\",e);if(!i)return;t=i.context.state,n=i.context.getters}return\"function\"==typeof r?r.call(this,t,n):t[r]},n[i].vuex=!0}),n}),_=k(function(e,t){var n={};return S(t).forEach(function(t){var i=t.key,r=t.val;n[i]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=this.$store.commit;if(e){var o=T(this.$store,\"mapMutations\",e);if(!o)return;i=o.context.commit}return\"function\"==typeof r?r.apply(this,[i].concat(t)):i.apply(this.$store,[r].concat(t))}}),n}),w=k(function(e,t){var n={};return S(t).forEach(function(t){var i=t.key,r=t.val;r=e+r,n[i]=function(){if(!e||T(this.$store,\"mapGetters\",e))return this.$store.getters[r]},n[i].vuex=!0}),n}),C=k(function(e,t){var n={};return S(t).forEach(function(t){var i=t.key,r=t.val;n[i]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var i=this.$store.dispatch;if(e){var o=T(this.$store,\"mapActions\",e);if(!o)return;i=o.context.dispatch}return\"function\"==typeof r?r.apply(this,[i].concat(t)):i.apply(this.$store,[r].concat(t))}}),n});function S(e){return function(e){return Array.isArray(e)||a(e)}(e)?Array.isArray(e)?e.map(function(e){return{key:e,val:e}}):Object.keys(e).map(function(t){return{key:t,val:e[t]}}):[]}function k(e){return function(t,n){return\"string\"!=typeof t?(n=t,t=\"\"):\"/\"!==t.charAt(t.length-1)&&(t+=\"/\"),e(t,n)}}function T(e,t,n){return e._modulesNamespaceMap[n]}function M(e,t,n){var i=n?e.groupCollapsed:e.group;try{i.call(e,t)}catch(n){e.log(t)}}function D(e){try{e.groupEnd()}catch(t){e.log(\"—— log end ——\")}}function A(){var e=new Date;return\" @ \"+I(e.getHours(),2)+\":\"+I(e.getMinutes(),2)+\":\"+I(e.getSeconds(),2)+\".\"+I(e.getMilliseconds(),3)}function I(e,t){return n=\"0\",i=t-e.toString().length,new Array(i+1).join(n)+e;var n,i}var O={Store:h,install:b,version:\"3.5.1\",mapState:x,mapMutations:_,mapGetters:w,mapActions:C,createNamespacedHelpers:function(e){return{mapState:x.bind(null,e),mapGetters:w.bind(null,e),mapMutations:_.bind(null,e),mapActions:C.bind(null,e)}},createLogger:function(e){void 0===e&&(e={});var t=e.collapsed;void 0===t&&(t=!0);var n=e.filter;void 0===n&&(n=function(e,t,n){return!0});var i=e.transformer;void 0===i&&(i=function(e){return e});var o=e.mutationTransformer;void 0===o&&(o=function(e){return e});var a=e.actionFilter;void 0===a&&(a=function(e,t){return!0});var s=e.actionTransformer;void 0===s&&(s=function(e){return e});var l=e.logMutations;void 0===l&&(l=!0);var u=e.logActions;void 0===u&&(u=!0);var c=e.logger;return void 0===c&&(c=console),function(e){var h=r(e.state);void 0!==c&&(l&&e.subscribe(function(e,a){var s=r(a);if(n(e,h,s)){var l=A(),u=o(e),d=\"mutation \"+e.type+l;M(c,d,t),c.log(\"%c prev state\",\"color: #9E9E9E; font-weight: bold\",i(h)),c.log(\"%c mutation\",\"color: #03A9F4; font-weight: bold\",u),c.log(\"%c next state\",\"color: #4CAF50; font-weight: bold\",i(s)),D(c)}h=s}),u&&e.subscribeAction(function(e,n){if(a(e,n)){var i=A(),r=s(e),o=\"action \"+e.type+i;M(c,o,t),c.log(\"%c action\",\"color: #03A9F4; font-weight: bold\",r),D(c)}}))}}};t.a=O}).call(t,n(\"DuR2\"))},NZsM:function(e,t,n){var i=n(\"3h1/\"),r=n(\"0sHC\"),o=[\"textStyle\",\"color\"],a={getTextColor:function(e){var t=this.ecModel;return this.getShallow(\"color\")||(!e&&t?t.get(o):null)},getFont:function(){return r.getFont({fontStyle:this.getShallow(\"fontStyle\"),fontWeight:this.getShallow(\"fontWeight\"),fontSize:this.getShallow(\"fontSize\"),fontFamily:this.getShallow(\"fontFamily\")},this.ecModel)},getTextRect:function(e){return i.getBoundingRect(e,this.getFont(),this.getShallow(\"align\"),this.getShallow(\"verticalAlign\")||this.getShallow(\"baseline\"),this.getShallow(\"padding\"),this.getShallow(\"lineHeight\"),this.getShallow(\"rich\"),this.getShallow(\"truncateText\"))}};e.exports=a},NjeB:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\"),o=n(\"eH0a\"),a=n(\"2uoh\"),s=r.extend({type:\"polarAxis\",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:\"polar\",index:this.option.polarIndex,id:this.option.polarId})[0]}});i.merge(s.prototype,a);var l={splitNumber:5};function u(e,t){return t.type||(t.data?\"category\":\"value\")}o(\"angle\",s,u,{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}}),o(\"radius\",s,u,l)},No7X:function(e,t,n){var i=n(\"2XvD\"),r=n(\"b8C2\");t.buildPath=function(e,t,n){var o=t.points,a=t.smooth;if(o&&o.length>=2){if(a&&\"spline\"!==a){var s=r(o,a,n,t.smoothConstraint);e.moveTo(o[0][0],o[0][1]);for(var l=o.length,u=0;u<(n?l:l-1);u++){var c=s[2*u],h=s[2*u+1],d=o[(u+1)%l];e.bezierCurveTo(c[0],c[1],h[0],h[1],d[0],d[1])}}else{\"spline\"===a&&(o=i(o,n)),e.moveTo(o[0][0],o[0][1]),u=1;for(var f=o.length;u<f;u++)e.lineTo(o[u][0],o[u][1])}n&&e.closePath()}}},NpIQ:function(e,t){t.f={}.propertyIsEnumerable},O4g8:function(e,t){e.exports=!0},O523:function(e,t,n){var i=n(\"Icdr\");n(\"gLqW\"),n(\"ix3c\"),n(\"+pdh\");var r=n(\"M9eA\"),o=n(\"fm2I\");i.registerVisual(r),i.registerLayout(o)},OAzY:function(e,t,n){\"use strict\";t.__esModule=!0;var i,r=n(\"7+uW\"),o=(i=r)&&i.__esModule?i:{default:i},a=n(\"2kvA\");var s=!1,l=!1,u=void 0,c=function(){if(!o.default.prototype.$isServer){var e=d.modalDom;return e?s=!0:(s=!1,e=document.createElement(\"div\"),d.modalDom=e,e.addEventListener(\"touchmove\",function(e){e.preventDefault(),e.stopPropagation()}),e.addEventListener(\"click\",function(){d.doOnModalClick&&d.doOnModalClick()})),e}},h={},d={modalFade:!0,getInstance:function(e){return h[e]},register:function(e,t){e&&t&&(h[e]=t)},deregister:function(e){e&&(h[e]=null,delete h[e])},nextZIndex:function(){return d.zIndex++},modalStack:[],doOnModalClick:function(){var e=d.modalStack[d.modalStack.length-1];if(e){var t=d.getInstance(e.id);t&&t.closeOnClickModal&&t.close()}},openModal:function(e,t,n,i,r){if(!o.default.prototype.$isServer&&e&&void 0!==t){this.modalFade=r;for(var l=this.modalStack,u=0,h=l.length;u<h;u++){if(l[u].id===e)return}var d=c();if((0,a.addClass)(d,\"v-modal\"),this.modalFade&&!s&&(0,a.addClass)(d,\"v-modal-enter\"),i)i.trim().split(/\\s+/).forEach(function(e){return(0,a.addClass)(d,e)});setTimeout(function(){(0,a.removeClass)(d,\"v-modal-enter\")},200),n&&n.parentNode&&11!==n.parentNode.nodeType?n.parentNode.appendChild(d):document.body.appendChild(d),t&&(d.style.zIndex=t),d.tabIndex=0,d.style.display=\"\",this.modalStack.push({id:e,zIndex:t,modalClass:i})}},closeModal:function(e){var t=this.modalStack,n=c();if(t.length>0){var i=t[t.length-1];if(i.id===e){if(i.modalClass)i.modalClass.trim().split(/\\s+/).forEach(function(e){return(0,a.removeClass)(n,e)});t.pop(),t.length>0&&(n.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&(0,a.addClass)(n,\"v-modal-leave\"),setTimeout(function(){0===t.length&&(n.parentNode&&n.parentNode.removeChild(n),n.style.display=\"none\",d.modalDom=void 0),(0,a.removeClass)(n,\"v-modal-leave\")},200))}};Object.defineProperty(d,\"zIndex\",{configurable:!0,get:function(){return l||(u=u||(o.default.prototype.$ELEMENT||{}).zIndex||2e3,l=!0),u},set:function(e){u=e}});o.default.prototype.$isServer||window.addEventListener(\"keydown\",function(e){if(27===e.keyCode){var t=function(){if(!o.default.prototype.$isServer&&d.modalStack.length>0){var e=d.modalStack[d.modalStack.length-1];if(!e)return;return d.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction(\"cancel\"):t.close())}}),t.default=d},OCS9:function(e,t,n){var i=n(\"/gxq\"),r=[\"rect\",\"polygon\",\"keep\",\"clear\"];e.exports=function(e,t){var n=e&&e.brush;if(i.isArray(n)||(n=n?[n]:[]),n.length){var o=[];i.each(n,function(e){var t=e.hasOwnProperty(\"toolbox\")?e.toolbox:[];t instanceof Array&&(o=o.concat(t))});var a=e&&e.toolbox;i.isArray(a)&&(a=a[0]),a||(a={feature:{}},e.toolbox=[a]);var s,l,u=a.feature||(a.feature={}),c=u.brush||(u.brush={}),h=c.type||(c.type=[]);h.push.apply(h,o),s=h,l={},i.each(s,function(e){l[e]=1}),s.length=0,i.each(l,function(e,t){s.push(t)}),t&&!h.length&&h.push.apply(h,r)}}},ON07:function(e,t,n){var i=n(\"EqjI\"),r=n(\"7KvD\").document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},ON3O:function(e,t,n){var i=n(\"uY1a\");e.exports=function(e,t,n){return void 0===n?i(e,t,!1):i(e,n,!1!==t)}},OQAC:function(e,t,n){var i=n(\"2m1D\").extend({type:\"series.pictorialBar\",dependencies:[\"grid\"],defaultOption:{symbol:\"circle\",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:\"end\",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:\"-100%\",progressive:0,hoverAnimation:!1},getInitialData:function(e){return e.stack=null,i.superApply(this,\"getInitialData\",arguments)}}),r=i;e.exports=r},OT4p:function(e,t,n){var i=n(\"/gxq\"),r=n(\"g+yZ\").devicePixelRatio,o=n(\"d8Tt\"),a=n(\"dZ2L\");function s(){return!1}function l(e,t,n){var r=i.createCanvas(),o=t.getWidth(),a=t.getHeight(),s=r.style;return s&&(s.position=\"absolute\",s.left=0,s.top=0,s.width=o+\"px\",s.height=a+\"px\",r.setAttribute(\"data-zr-dom-id\",e)),r.width=o*n,r.height=a*n,r}var u=function(e,t,n){var o;n=n||r,\"string\"==typeof e?o=l(e,t,n):i.isObject(e)&&(e=(o=e).id),this.id=e,this.dom=o;var a=o.style;a&&(o.onselectstart=s,a[\"-webkit-user-select\"]=\"none\",a[\"user-select\"]=\"none\",a[\"-webkit-touch-callout\"]=\"none\",a[\"-webkit-tap-highlight-color\"]=\"rgba(0,0,0,0)\",a.padding=0,a.margin=0,a[\"border-width\"]=0),this.domBack=null,this.ctxBack=null,this.painter=t,this.config=null,this.clearColor=0,this.motionBlur=!1,this.lastFrameAlpha=.7,this.dpr=n};u.prototype={constructor:u,__dirty:!0,__used:!1,__drawIndex:0,__startIndex:0,__endIndex:0,incremental:!1,getElementCount:function(){return this.__endIndex-this.__startIndex},initContext:function(){this.ctx=this.dom.getContext(\"2d\"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var e=this.dpr;this.domBack=l(\"back-\"+this.id,this.painter,e),this.ctxBack=this.domBack.getContext(\"2d\"),1!==e&&this.ctxBack.scale(e,e)},resize:function(e,t){var n=this.dpr,i=this.dom,r=i.style,o=this.domBack;r&&(r.width=e+\"px\",r.height=t+\"px\"),i.width=e*n,i.height=t*n,o&&(o.width=e*n,o.height=t*n,1!==n&&this.ctxBack.scale(n,n))},clear:function(e,t){var n,i=this.dom,r=this.ctx,s=i.width,l=i.height,u=(t=t||this.clearColor,this.motionBlur&&!e),c=this.lastFrameAlpha,h=this.dpr;(u&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation=\"copy\",this.ctxBack.drawImage(i,0,0,s/h,l/h)),r.clearRect(0,0,s,l),t&&\"transparent\"!==t)&&(t.colorStops?(n=t.__canvasGradient||o.getGradient(r,t,{x:0,y:0,width:s,height:l}),t.__canvasGradient=n):t.image&&(n=a.prototype.getCanvasPattern.call(t,r)),r.save(),r.fillStyle=n||t,r.fillRect(0,0,s,l),r.restore());if(u){var d=this.domBack;r.save(),r.globalAlpha=c,r.drawImage(d,0,0,s,l),r.restore()}}};var c=u;e.exports=c},OYls:function(e,t,n){n(\"crlp\")(\"asyncIterator\")},OcRu:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"0sHC\"),o=n(\"LgWN\"),a=n(\"/gxq\");var s=i.extendChartView({type:\"heatmap\",render:function(e,t,n){var i;t.eachComponent(\"visualMap\",function(t){t.eachTargetSeries(function(n){n===e&&(i=t)})}),this.group.removeAll(),this._incrementalDisplayable=null;var r=e.coordinateSystem;\"cartesian2d\"===r.type||\"calendar\"===r.type?this._renderOnCartesianAndCalendar(e,n,0,e.getData().count()):function(e){var t=e.dimensions;return\"lng\"===t[0]&&\"lat\"===t[1]}(r)&&this._renderOnGeo(r,e,i,n)},incrementalPrepareRender:function(e,t,n){this.group.removeAll()},incrementalRender:function(e,t,n,i){t.coordinateSystem&&this._renderOnCartesianAndCalendar(t,i,e.start,e.end,!0)},_renderOnCartesianAndCalendar:function(e,t,n,i,o){var s,l,u=e.coordinateSystem;if(\"cartesian2d\"===u.type){var c=u.getAxis(\"x\"),h=u.getAxis(\"y\");s=c.getBandWidth(),l=h.getBandWidth()}for(var d=this.group,f=e.getData(),p=e.getModel(\"itemStyle\").getItemStyle([\"color\"]),g=e.getModel(\"emphasis.itemStyle\").getItemStyle(),m=e.getModel(\"label\"),v=e.getModel(\"emphasis.label\"),y=u.type,b=\"cartesian2d\"===y?[f.mapDimension(\"x\"),f.mapDimension(\"y\"),f.mapDimension(\"value\")]:[f.mapDimension(\"time\"),f.mapDimension(\"value\")],x=n;x<i;x++){var _;if(\"cartesian2d\"===y){if(isNaN(f.get(b[2],x)))continue;var w=u.dataToPoint([f.get(b[0],x),f.get(b[1],x)]);_=new r.Rect({shape:{x:Math.floor(Math.round(w[0])-s/2),y:Math.floor(Math.round(w[1])-l/2),width:Math.ceil(s),height:Math.ceil(l)},style:{fill:f.getItemVisual(x,\"color\"),opacity:f.getItemVisual(x,\"opacity\")}})}else{if(isNaN(f.get(b[1],x)))continue;_=new r.Rect({z2:1,shape:u.dataToRect([f.get(b[0],x)]).contentShape,style:{fill:f.getItemVisual(x,\"color\"),opacity:f.getItemVisual(x,\"opacity\")}})}var C=f.getItemModel(x);f.hasItemOption&&(p=C.getModel(\"itemStyle\").getItemStyle([\"color\"]),g=C.getModel(\"emphasis.itemStyle\").getItemStyle(),m=C.getModel(\"label\"),v=C.getModel(\"emphasis.label\"));var S=e.getRawValue(x),k=\"-\";S&&null!=S[2]&&(k=S[2]),r.setLabelStyle(p,g,m,v,{labelFetcher:e,labelDataIndex:x,defaultText:k,isRectText:!0}),_.setStyle(p),r.setHoverStyle(_,f.hasItemOption?g:a.extend({},g)),_.incremental=o,o&&(_.useHoverLayer=!0),d.add(_),f.setItemGraphicEl(x,_)}},_renderOnGeo:function(e,t,n,i){var s=n.targetVisuals.inRange,l=n.targetVisuals.outOfRange,u=t.getData(),c=this._hmLayer||this._hmLayer||new o;c.blurSize=t.get(\"blurSize\"),c.pointSize=t.get(\"pointSize\"),c.minOpacity=t.get(\"minOpacity\"),c.maxOpacity=t.get(\"maxOpacity\");var h=e.getViewRect().clone(),d=e.getRoamTransform();h.applyTransform(d);var f=Math.max(h.x,0),p=Math.max(h.y,0),g=Math.min(h.width+h.x,i.getWidth()),m=Math.min(h.height+h.y,i.getHeight()),v=g-f,y=m-p,b=[u.mapDimension(\"lng\"),u.mapDimension(\"lat\"),u.mapDimension(\"value\")],x=u.mapArray(b,function(t,n,i){var r=e.dataToPoint([t,n]);return r[0]-=f,r[1]-=p,r.push(i),r}),_=n.getExtent(),w=\"visualMap.continuous\"===n.type?function(e,t){var n=e[1]-e[0];return t=[(t[0]-e[0])/n,(t[1]-e[0])/n],function(e){return e>=t[0]&&e<=t[1]}}(_,n.option.range):function(e,t,n){var i=e[1]-e[0],r=(t=a.map(t,function(t){return{interval:[(t.interval[0]-e[0])/i,(t.interval[1]-e[0])/i]}})).length,o=0;return function(e){for(var i=o;i<r;i++)if((a=t[i].interval)[0]<=e&&e<=a[1]){o=i;break}if(i===r)for(i=o-1;i>=0;i--){var a;if((a=t[i].interval)[0]<=e&&e<=a[1]){o=i;break}}return i>=0&&i<r&&n[i]}}(_,n.getPieceList(),n.option.selected);c.update(x,v,y,s.color.getNormalizer(),{inRange:s.color.getColorMapper(),outOfRange:l.color.getColorMapper()},w);var C=new r.Image({style:{width:v,height:y,x:f,y:p,image:c.canvas},silent:!0});this.group.add(C)},dispose:function(){}});e.exports=s},Of86:function(e,t,n){var i=n(\"GxVO\").extend({type:\"circle\",shape:{cx:0,cy:0,r:0},buildPath:function(e,t,n){n&&e.moveTo(t.cx+t.r,t.cy),e.arc(t.cx,t.cy,t.r,0,2*Math.PI,!0)}});e.exports=i},OkSz:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"3h1/\"),a=Math.PI;e.exports=function(e,t){t=t||{},i.defaults(t,{text:\"loading\",textColor:\"#000\",fontSize:\"12px\",maskColor:\"rgba(255, 255, 255, 0.8)\",showSpinner:!0,color:\"#c23531\",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new r.Group,s=new r.Rect({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4});n.add(s);var l=t.fontSize+\" sans-serif\",u=new r.Rect({style:{fill:\"none\",text:t.text,font:l,textPosition:\"right\",textDistance:10,textFill:t.textColor},zlevel:t.zlevel,z:10001});if(n.add(u),t.showSpinner){var c=new r.Arc({shape:{startAngle:-a/2,endAngle:-a/2+.1,r:t.spinnerRadius},style:{stroke:t.color,lineCap:\"round\",lineWidth:t.lineWidth},zlevel:t.zlevel,z:10001});c.animateShape(!0).when(1e3,{endAngle:3*a/2}).start(\"circularInOut\"),c.animateShape(!0).when(1e3,{startAngle:3*a/2}).delay(300).start(\"circularInOut\"),n.add(c)}return n.resize=function(){var n=o.getWidth(t.text,l),i=t.showSpinner?t.spinnerRadius:0,r=(e.getWidth()-2*i-(t.showSpinner&&n?10:0)-n)/2-(t.showSpinner?0:n/2),a=e.getHeight()/2;t.showSpinner&&c.setShape({cx:r,cy:a}),u.setShape({x:r-i,y:a-i,width:2*i,height:2*i}),s.setShape({x:0,y:0,width:e.getWidth(),height:e.getHeight()})},n.resize(),n}},OlnU:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wH4Y\"),o=n(\"wWR3\"),a=[20,140],s=r.extend({type:\"visualMap.continuous\",defaultOption:{align:\"auto\",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(e,t){s.superApply(this,\"optionUpdated\",arguments),this.resetExtent(),this.resetVisual(function(e){e.mappingMethod=\"linear\",e.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){s.superApply(this,\"resetItemSize\",arguments);var e=this.itemSize;\"horizontal\"===this._orient&&e.reverse(),(null==e[0]||isNaN(e[0]))&&(e[0]=a[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=a[1])},_resetRange:function(){var e=this.getExtent(),t=this.option.range;!t||t.auto?(e.auto=1,this.option.range=e):i.isArray(t)&&(t[0]>t[1]&&t.reverse(),t[0]=Math.max(t[0],e[0]),t[1]=Math.min(t[1],e[1]))},completeVisualOption:function(){r.prototype.completeVisualOption.apply(this,arguments),i.each(this.stateList,function(e){var t=this.option.controller[e].symbolSize;t&&t[0]!==t[1]&&(t[0]=0)},this)},setSelected:function(e){this.option.range=e.slice(),this._resetRange()},getSelected:function(){var e=this.getExtent(),t=o.asc((this.get(\"range\")||[]).slice());return t[0]>e[1]&&(t[0]=e[1]),t[1]>e[1]&&(t[1]=e[1]),t[0]<e[0]&&(t[0]=e[0]),t[1]<e[0]&&(t[1]=e[0]),t},getValueState:function(e){var t=this.option.range,n=this.getExtent();return(t[0]<=n[0]||t[0]<=e)&&(t[1]>=n[1]||e<=t[1])?\"inRange\":\"outOfRange\"},findTargetDataIndices:function(e){var t=[];return this.eachTargetSeries(function(n){var i=[],r=n.getData();r.each(this.getDataDimension(r),function(t,n){e[0]<=t&&t<=e[1]&&i.push(n)},this),t.push({seriesId:n.id,dataIndex:i})},this),t},getVisualMeta:function(e){var t=l(this,\"outOfRange\",this.getExtent()),n=l(this,\"inRange\",this.option.range.slice()),i=[];function r(t,n){i.push({value:t,color:e(t,n)})}for(var o=0,a=0,s=n.length,u=t.length;a<u&&(!n.length||t[a]<=n[0]);a++)t[a]<n[o]&&r(t[a],\"outOfRange\");for(var c=1;o<s;o++,c=0)c&&i.length&&r(n[o],\"outOfRange\"),r(n[o],\"inRange\");for(c=1;a<u;a++)(!n.length||n[n.length-1]<t[a])&&(c&&(i.length&&r(i[i.length-1].value,\"outOfRange\"),c=0),r(t[a],\"outOfRange\"));var h=i.length;return{stops:i,outerColors:[h?i[0].color:\"transparent\",h?i[h-1].color:\"transparent\"]}}});function l(e,t,n){if(n[0]===n[1])return n.slice();for(var i=(n[1]-n[0])/200,r=n[0],o=[],a=0;a<=200&&r<n[1];a++)o.push(r),r+=i;return o.push(n[1]),o}var u=s;e.exports=u},OpfW:function(e,t,n){var i=n(\"/gxq\");function r(e,t){return t=t||[0,0],i.map([0,1],function(n){var i=t[n],r=e[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=t[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])},this)}e.exports=function(e){var t=e.getBoundingRect();return{coordSys:{type:\"geo\",x:t.x,y:t.y,width:t.width,height:t.height,zoom:e.getZoom()},api:{coord:function(t){return e.dataToPoint(t)},size:i.bind(r,e)}}}},Oq2I:function(e,t,n){var i=n(\"Icdr\");n(\"AKXb\"),n(\"7XrG\"),n(\"XAC3\"),i.registerAction({type:\"showTip\",event:\"showTip\",update:\"tooltip:manuallyShowTip\"},function(){}),i.registerAction({type:\"hideTip\",event:\"hideTip\",update:\"tooltip:manuallyHideTip\"},function(){})},Osoq:function(e,t,n){n(\"Y5nL\").registerSubTypeDefaulter(\"visualMap\",function(e){return e.categories||(e.pieces?e.pieces.length>0:e.splitNumber>0)&&!e.calculable?\"piecewise\":\"continuous\"})},Ou7x:function(e,t,n){var i=n(\"/gxq\"),r=n(\"BNYN\"),o=n(\"0sHC\"),a=n(\"QCrJ\"),s=n(\"UAiw\"),l=n(\"QD+P\"),u=(0,n(\"vXqC\").makeInner)(),c=i.clone,h=i.bind;function d(){}function f(e,t,n,r){(function e(t,n){if(i.isObject(t)&&i.isObject(n)){var r=!0;return i.each(n,function(n,i){r=r&&e(t[i],n)}),!!r}return t===n})(u(n).lastProp,r)||(u(n).lastProp=r,t?o.updateProps(n,r,e):(n.stopAnimation(),n.attr(r)))}function p(e,t){e[t.get(\"label.show\")?\"show\":\"hide\"]()}function g(e){return{position:e.position.slice(),rotation:e.rotation||0}}function m(e,t,n){var i=t.get(\"z\"),r=t.get(\"zlevel\");e&&e.traverse(function(e){\"group\"!==e.type&&(null!=i&&(e.z=i),null!=r&&(e.zlevel=r),e.silent=n)})}d.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(e,t,n,r){var a=t.get(\"value\"),s=t.get(\"status\");if(this._axisModel=e,this._axisPointerModel=t,this._api=n,r||this._lastValue!==a||this._lastStatus!==s){this._lastValue=a,this._lastStatus=s;var l=this._group,u=this._handle;if(!s||\"hide\"===s)return l&&l.hide(),void(u&&u.hide());l&&l.show(),u&&u.show();var c={};this.makeElOption(c,a,e,t,n);var h=c.graphicKey;h!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=h;var d=this._moveAnimation=this.determineAnimation(e,t);if(l){var p=i.curry(f,t,d);this.updatePointerEl(l,c,p,t),this.updateLabelEl(l,c,p,t)}else l=this._group=new o.Group,this.createPointerEl(l,c,e,t),this.createLabelEl(l,c,e,t),n.getZr().add(l);m(l,t,!0),this._renderHandle(a)}},remove:function(e){this.clear(e)},dispose:function(e){this.clear(e)},determineAnimation:function(e,t){var n=t.get(\"animation\"),i=e.axis,r=\"category\"===i.type,o=t.get(\"snap\");if(!o&&!r)return!1;if(\"auto\"===n||null==n){var s=this.animationThreshold;if(r&&i.getBandWidth()>s)return!0;if(o){var l=a.getAxisInfo(e).seriesDataCount,u=i.getExtent();return Math.abs(u[0]-u[1])/l>s}return!1}return!0===n},makeElOption:function(e,t,n,i,r){},createPointerEl:function(e,t,n,i){var r=t.pointer;if(r){var a=u(e).pointerEl=new o[r.type](c(t.pointer));e.add(a)}},createLabelEl:function(e,t,n,i){if(t.label){var r=u(e).labelEl=new o.Rect(c(t.label));e.add(r),p(r,i)}},updatePointerEl:function(e,t,n){var i=u(e).pointerEl;i&&t.pointer&&(i.setStyle(t.pointer.style),n(i,{shape:t.pointer.shape}))},updateLabelEl:function(e,t,n,i){var r=u(e).labelEl;r&&(r.setStyle(t.label.style),n(r,{shape:t.label.shape,position:t.label.position}),p(r,i))},_renderHandle:function(e){if(!this._dragging&&this.updateHandleTransform){var t,n=this._axisPointerModel,r=this._api.getZr(),a=this._handle,u=n.getModel(\"handle\"),c=n.get(\"status\");if(!u.get(\"show\")||!c||\"hide\"===c)return a&&r.remove(a),void(this._handle=null);this._handle||(t=!0,a=this._handle=o.createIcon(u.get(\"icon\"),{cursor:\"move\",draggable:!0,onmousemove:function(e){s.stop(e.event)},onmousedown:h(this._onHandleDragMove,this,0,0),drift:h(this._onHandleDragMove,this),ondragend:h(this._onHandleDragEnd,this)}),r.add(a)),m(a,n,!1);a.setStyle(u.getItemStyle(null,[\"color\",\"borderColor\",\"borderWidth\",\"opacity\",\"shadowColor\",\"shadowBlur\",\"shadowOffsetX\",\"shadowOffsetY\"]));var d=u.get(\"size\");i.isArray(d)||(d=[d,d]),a.attr(\"scale\",[d[0]/2,d[1]/2]),l.createOrUpdate(this,\"_doDispatchAxisPointer\",u.get(\"throttle\")||0,\"fixRate\"),this._moveHandleToValue(e,t)}},_moveHandleToValue:function(e,t){f(this._axisPointerModel,!t&&this._moveAnimation,this._handle,g(this.getHandleTransform(e,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(e,t){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(g(n),[e,t],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(g(i)),u(n).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var e=this._payloadInfo,t=this._axisModel;this._api.dispatchAction({type:\"updateAxisPointer\",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:t.axis.dim,axisIndex:t.componentIndex}]})}},_onHandleDragEnd:function(e){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get(\"value\");this._moveHandleToValue(t),this._api.dispatchAction({type:\"hideTip\"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(e){this._lastValue=null,this._lastStatus=null;var t=e.getZr(),n=this._group,i=this._handle;t&&n&&(this._lastGraphicKey=null,n&&t.remove(n),i&&t.remove(i),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(e,t,n){return{x:e[n=n||0],y:e[1-n],width:t[n],height:t[1-n]}}},d.prototype.constructor=d,r.enableClassExtend(d);var v=d;e.exports=v},OvrE:function(e,t,n){var i=n(\"/gxq\"),r=n(\"/gZK\"),o=n(\"EJsE\"),a=n(\"HHfb\"),s=a.encodeHTML,l=a.addCommas,u=n(\"kQD9\"),c=n(\"5KBG\").retrieveRawAttr,h=n(\"AlF5\"),d=n(\"kdOt\").makeSeriesEncodeForNameBased,f=o.extend({type:\"series.map\",dependencies:[\"geo\"],layoutMode:\"box\",needsDrawMap:!1,seriesGroup:[],getInitialData:function(e){for(var t=r(this,{coordDimensions:[\"value\"],encodeDefaulter:i.curry(d,this)}),n=t.mapDimension(\"value\"),o=i.createHashMap(),a=[],s=[],l=0,u=t.count();l<u;l++){var f=t.getName(l);o.set(f,!0),a.push({name:f,value:t.get(n,l),selected:c(t,l,\"selected\")})}var p=h.load(this.getMapType(),this.option.nameMap,this.option.nameProperty);return i.each(p.regions,function(e){var t=e.name;o.get(t)||(a.push({name:t}),s.push(t))}),this.updateSelectedMap(a),t.appendValues([],s),t},getHostGeoModel:function(){var e=this.option.geoIndex;return null!=e?this.dependentModels.geo[e]:null},getMapType:function(){return(this.getHostGeoModel()||this).option.map},getRawValue:function(e){var t=this.getData();return t.get(t.mapDimension(\"value\"),e)},getRegionModel:function(e){var t=this.getData();return t.getItemModel(t.indexOfName(e))},formatTooltip:function(e){for(var t=this.getData(),n=l(this.getRawValue(e)),i=t.getName(e),r=this.seriesGroup,o=[],a=0;a<r.length;a++){var u=r[a].originalData.indexOfName(i),c=t.mapDimension(\"value\");isNaN(r[a].originalData.get(c,u))||o.push(s(r[a].name))}return o.join(\", \")+\"<br />\"+s(i+\" : \"+n)},getTooltipPosition:function(e){if(null!=e){var t=this.getData().getName(e),n=this.coordinateSystem,i=n.getRegion(t);return i&&n.dataToPoint(i.center)}},setZoom:function(e){this.option.zoom=e},setCenter:function(e){this.option.center=e},defaultOption:{zlevel:0,z:2,coordinateSystem:\"geo\",map:\"\",left:\"center\",top:\"center\",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:\"#000\"},itemStyle:{borderWidth:.5,borderColor:\"#444\",areaColor:\"#eee\"},emphasis:{label:{show:!0,color:\"rgb(100,0,0)\"},itemStyle:{areaColor:\"rgba(255,215,0,0.8)\"}},nameProperty:\"name\"}});i.mixin(f,u);var p=f;e.exports=p},OxCu:function(e,t,n){var i=n(\"/gxq\"),r=n(\"vXqC\");e.exports=function(e,t){var n,o=[],a=e.seriesIndex;if(null==a||!(n=t.getSeriesByIndex(a)))return{point:[]};var s=n.getData(),l=r.queryDataIndex(s,e);if(null==l||l<0||i.isArray(l))return{point:[]};var u=s.getItemGraphicEl(l),c=n.coordinateSystem;if(n.getTooltipPosition)o=n.getTooltipPosition(l)||[];else if(c&&c.dataToPoint)o=c.dataToPoint(s.getValues(i.map(c.dimensions,function(e){return s.mapDimension(e)}),l,!0))||[];else if(u){var h=u.getBoundingRect().clone();h.applyTransform(u.transform),o=[h.x+h.width/2,h.y+h.height/2]}return{point:o,el:u}}},P0a5:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"EJsE\"),r=n(\"Rfu2\"),o=n(\"/gxq\"),a=o.concatArray,s=o.mergeAll,l=o.map,u=n(\"HHfb\").encodeHTML,c=(n(\"rctg\"),\"undefined\"==typeof Uint32Array?Array:Uint32Array),h=\"undefined\"==typeof Float64Array?Array:Float64Array;function d(e){var t=e.data;t&&t[0]&&t[0][0]&&t[0][0].coord&&(e.data=l(t,function(e){var t={coords:[e[0].coord,e[1].coord]};return e[0].name&&(t.fromName=e[0].name),e[1].name&&(t.toName=e[1].name),s([t,e[0],e[1]])}))}var f=i.extend({type:\"series.lines\",dependencies:[\"grid\",\"polar\"],visualColorAccessPath:\"lineStyle.color\",init:function(e){e.data=e.data||[],d(e);var t=this._processFlatCoordsArray(e.data);this._flatCoords=t.flatCoords,this._flatCoordsOffset=t.flatCoordsOffset,t.flatCoords&&(e.data=new Float32Array(t.count)),f.superApply(this,\"init\",arguments)},mergeOption:function(e){if(e.data=e.data||[],d(e),e.data){var t=this._processFlatCoordsArray(e.data);this._flatCoords=t.flatCoords,this._flatCoordsOffset=t.flatCoordsOffset,t.flatCoords&&(e.data=new Float32Array(t.count))}f.superApply(this,\"mergeOption\",arguments)},appendData:function(e){var t=this._processFlatCoordsArray(e.data);t.flatCoords&&(this._flatCoords?(this._flatCoords=a(this._flatCoords,t.flatCoords),this._flatCoordsOffset=a(this._flatCoordsOffset,t.flatCoordsOffset)):(this._flatCoords=t.flatCoords,this._flatCoordsOffset=t.flatCoordsOffset),e.data=new Float32Array(t.count)),this.getRawData().appendData(e.data)},_getCoordsFromItemModel:function(e){var t=this.getData().getItemModel(e);return t.option instanceof Array?t.option:t.getShallow(\"coords\")},getLineCoordsCount:function(e){return this._flatCoordsOffset?this._flatCoordsOffset[2*e+1]:this._getCoordsFromItemModel(e).length},getLineCoords:function(e,t){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[2*e],i=this._flatCoordsOffset[2*e+1],r=0;r<i;r++)t[r]=t[r]||[],t[r][0]=this._flatCoords[n+2*r],t[r][1]=this._flatCoords[n+2*r+1];return i}var o=this._getCoordsFromItemModel(e);for(r=0;r<o.length;r++)t[r]=t[r]||[],t[r][0]=o[r][0],t[r][1]=o[r][1];return o.length},_processFlatCoordsArray:function(e){var t=0;if(this._flatCoords&&(t=this._flatCoords.length),\"number\"==typeof e[0]){for(var n=e.length,i=new c(n),r=new h(n),o=0,a=0,s=0,l=0;l<n;){s++;var u=e[l++];i[a++]=o+t,i[a++]=u;for(var d=0;d<u;d++){var f=e[l++],p=e[l++];r[o++]=f,r[o++]=p}}return{flatCoordsOffset:new Uint32Array(i.buffer,0,a),flatCoords:r,count:s}}return{flatCoordsOffset:null,flatCoords:null,count:e.length}},getInitialData:function(e,t){var n=new r([\"value\"],this);return n.hasItemOption=!1,n.initData(e.data,[],function(e,t,i,r){if(e instanceof Array)return NaN;n.hasItemOption=!0;var o=e.value;return null!=o?o instanceof Array?o[r]:o:void 0}),n},formatTooltip:function(e){var t=this.getData().getItemModel(e),n=t.get(\"name\");if(n)return n;var i=t.get(\"fromName\"),r=t.get(\"toName\"),o=[];return null!=i&&o.push(i),null!=r&&o.push(r),u(o.join(\" > \"))},preventIncremental:function(){return!!this.get(\"effect.show\")},getProgressive:function(){var e=this.option.progressive;return null==e?this.option.large?1e4:this.get(\"progressive\"):e},getProgressiveThreshold:function(){var e=this.option.progressiveThreshold;return null==e?this.option.large?2e4:this.get(\"progressiveThreshold\"):e},defaultOption:{coordinateSystem:\"geo\",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:[\"none\",\"none\"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:\"circle\",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:\"end\"},lineStyle:{opacity:.5}}}),p=f;e.exports=p},P7Q7:function(e,t,n){var i=n(\"ao1T\"),r=n(\"EJsE\").extend({type:\"series.effectScatter\",dependencies:[\"grid\",\"polar\"],getInitialData:function(e,t){return i(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:\"point\",defaultOption:{coordinateSystem:\"cartesian2d\",zlevel:0,z:2,legendHoverLink:!0,effectType:\"ripple\",progressive:0,showEffectOn:\"render\",rippleEffect:{period:4,scale:2.5,brushType:\"fill\"},symbolSize:10}});e.exports=r},P7ry:function(e,t,n){n(\"80cc\"),n(\"dp0Z\"),n(\"wLWv\"),n(\"R0U9\")},PBlc:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"6axr\"),o=n(\"wWR3\").parsePercent,a=n(\"3yJd\"),s=a.createScaleByModel,l=a.niceScaleExtent,u=n(\"rctg\"),c=n(\"qVJQ\").getStackedDimension;function h(e,t){var n=this,r=n.getAngleAxis(),o=n.getRadiusAxis();if(r.scale.setExtent(1/0,-1/0),o.scale.setExtent(1/0,-1/0),e.eachSeries(function(e){if(e.coordinateSystem===n){var t=e.getData();i.each(t.mapDimension(\"radius\",!0),function(e){o.scale.unionExtentFromData(t,c(t,e))}),i.each(t.mapDimension(\"angle\",!0),function(e){r.scale.unionExtentFromData(t,c(t,e))})}}),l(r.scale,r.model),l(o.scale,o.model),\"category\"===r.type&&!r.onBand){var a=r.getExtent(),s=360/r.scale.count();r.inverse?a[1]+=s:a[1]-=s,r.setExtent(a[0],a[1])}}function d(e,t){if(e.type=t.get(\"type\"),e.scale=s(t),e.onBand=t.get(\"boundaryGap\")&&\"category\"===e.type,e.inverse=t.get(\"inverse\"),\"angleAxis\"===t.mainType){e.inverse^=t.get(\"clockwise\");var n=t.get(\"startAngle\");e.setExtent(n,n+(e.inverse?-360:360))}t.axis=e,e.model=t}n(\"ZRmN\");var f={dimensions:r.prototype.dimensions,create:function(e,t){var n=[];return e.eachComponent(\"polar\",function(e,a){var s=new r(a);s.update=h;var l=s.getRadiusAxis(),u=s.getAngleAxis(),c=e.findAxisModel(\"radiusAxis\"),f=e.findAxisModel(\"angleAxis\");d(l,c),d(u,f),function(e,t,n){var r=t.get(\"center\"),a=n.getWidth(),s=n.getHeight();e.cx=o(r[0],a),e.cy=o(r[1],s);var l=e.getRadiusAxis(),u=Math.min(a,s)/2,c=t.get(\"radius\");null==c?c=[0,\"100%\"]:i.isArray(c)||(c=[0,c]),c=[o(c[0],u),o(c[1],u)],l.inverse?l.setExtent(c[1],c[0]):l.setExtent(c[0],c[1])}(s,e,t),n.push(s),e.coordinateSystem=s,s.model=e}),e.eachSeries(function(t){if(\"polar\"===t.get(\"coordinateSystem\")){var n=e.queryComponents({mainType:\"polar\",index:t.get(\"polarIndex\"),id:t.get(\"polarId\")})[0];t.coordinateSystem=n.coordinateSystem}}),n}};u.register(\"polar\",f)},PD67:function(e,t,n){var i=n(\"GxVO\"),r=n(\"Sm9T\"),o=n(\"xr8J\").subPixelOptimizeRect,a={},s=i.extend({type:\"rect\",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(e,t){var n,i,s,l;this.subPixelOptimize?(o(a,t,this.style),n=a.x,i=a.y,s=a.width,l=a.height,a.r=t.r,t=a):(n=t.x,i=t.y,s=t.width,l=t.height),t.r?r.buildPath(e,t):e.rect(n,i,s,l),e.closePath()}});e.exports=s},PWa9:function(e,t){var n={average:function(e){for(var t=0,n=0,i=0;i<e.length;i++)isNaN(e[i])||(t+=e[i],n++);return 0===n?NaN:t/n},sum:function(e){for(var t=0,n=0;n<e.length;n++)t+=e[n]||0;return t},max:function(e){for(var t=-1/0,n=0;n<e.length;n++)e[n]>t&&(t=e[n]);return isFinite(t)?t:NaN},min:function(e){for(var t=1/0,n=0;n<e.length;n++)e[n]<t&&(t=e[n]);return isFinite(t)?t:NaN},nearest:function(e){return e[0]}},i=function(e,t){return Math.round(e.length/2)};e.exports=function(e){return{seriesType:e,modifyOutputEnd:!0,reset:function(e,t,r){var o=e.getData(),a=e.get(\"sampling\"),s=e.coordinateSystem;if(\"cartesian2d\"===s.type&&a){var l,u=s.getBaseAxis(),c=s.getOtherAxis(u),h=u.getExtent(),d=h[1]-h[0],f=Math.round(o.count()/d);f>1&&(\"string\"==typeof a?l=n[a]:\"function\"==typeof a&&(l=a),l&&e.setData(o.downSample(o.mapDimension(c.dim),1/f,l,i)))}}}}},PYc7:function(e,t,n){var i=n(\"Icdr\"),r=n(\"ii60\").updateCenterAndZoom;i.registerAction({type:\"treeExpandAndCollapse\",event:\"treeExpandAndCollapse\",update:\"update\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"tree\",query:e},function(t){var n=e.dataIndex,i=t.getData().tree.getNodeByDataIndex(n);i.isExpand=!i.isExpand})}),i.registerAction({type:\"treeRoam\",event:\"treeRoam\",update:\"none\"},function(e,t){t.eachComponent({mainType:\"series\",subType:\"tree\",query:e},function(t){var n=t.coordinateSystem,i=r(n,e);t.setCenter&&t.setCenter(i.center),t.setZoom&&t.setZoom(i.zoom)})})},PdL8:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\"),a=n(\"LBXi\"),s=\"__seriesMapHighDown\",l=\"__seriesMapCallKey\",u=i.extendChartView({type:\"map\",render:function(e,t,n,i){if(!i||\"mapToggleSelect\"!==i.type||i.from!==this.uid){var r=this.group;if(r.removeAll(),!e.getHostGeoModel()){if(i&&\"geoRoam\"===i.type&&\"series\"===i.componentType&&i.seriesId===e.id)(o=this._mapDraw)&&r.add(o.group);else if(e.needsDrawMap){var o=this._mapDraw||new a(n,!0);r.add(o.group),o.draw(e,t,n,this,i),this._mapDraw=o}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;e.get(\"showLegendSymbol\")&&t.getComponent(\"legend\")&&this._renderSymbols(e,t,n)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(e,t,n){var i=e.originalData,a=this.group;i.each(i.mapDimension(\"value\"),function(t,n){if(!isNaN(t)){var u=i.getItemLayout(n);if(u&&u.point){var d=u.point,f=u.offset,p=new o.Circle({style:{fill:e.getData().getVisual(\"color\")},shape:{cx:d[0]+9*f,cy:d[1],r:3},silent:!0,z2:8+(f?0:o.Z2_EMPHASIS_LIFT+1)});if(!f){var g=e.mainSeries.getData(),m=i.getName(n),v=g.indexOfName(m),y=i.getItemModel(n),b=y.getModel(\"label\"),x=y.getModel(\"emphasis.label\"),_=g.getItemGraphicEl(v),w=r.retrieve2(e.getFormattedLabel(v,\"normal\"),m),C=r.retrieve2(e.getFormattedLabel(v,\"emphasis\"),w),S=_[s],k=Math.random();if(!S){S=_[s]={};var T=r.curry(c,!0),M=r.curry(c,!1);_.on(\"mouseover\",T).on(\"mouseout\",M).on(\"emphasis\",T).on(\"normal\",M)}_[l]=k,r.extend(S,{recordVersion:k,circle:p,labelModel:b,hoverLabelModel:x,emphasisText:C,normalText:w}),h(S,!1)}a.add(p)}}})}});function c(e){var t=this[s];t&&t.recordVersion===this[l]&&h(t,e)}function h(e,t){var n=e.circle,i=e.labelModel,r=e.hoverLabelModel,a=e.emphasisText,s=e.normalText;t?(n.style.extendFrom(o.setTextStyle({},r,{text:r.get(\"show\")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),n.__mapOriginalZ2=n.z2,n.z2+=o.Z2_EMPHASIS_LIFT):(o.setTextStyle(n.style,i,{text:i.get(\"show\")?s:null,textPosition:i.getShallow(\"position\")||\"bottom\"},{isRectText:!0,useInsideStyle:!1}),n.dirty(!1),null!=n.__mapOriginalZ2&&(n.z2=n.__mapOriginalZ2,n.__mapOriginalZ2=null))}e.exports=u},Pdtn:function(e,t,n){var i=n(\"/gxq\"),r=n(\"YNzw\"),o=n(\"vXqC\").makeInner,a=n(\"BNYN\"),s=a.enableClassExtend,l=a.enableClassCheck,u=n(\"BwZ6\"),c=n(\"fgF4\"),h=n(\"NZsM\"),d=n(\"e95b\"),f=i.mixin,p=o();function g(e,t,n){this.parentModel=t,this.ecModel=n,this.option=e}function m(e,t,n){for(var i=0;i<t.length&&(!t[i]||null!=(e=e&&\"object\"==typeof e?e[t[i]]:null));i++);return null==e&&n&&(e=n.get(t)),e}function v(e,t){var n=p(e).getParent;return n?n.call(e,t):e.parentModel}g.prototype={constructor:g,init:null,mergeOption:function(e){i.merge(this.option,e,!0)},get:function(e,t){return null==e?this.option:m(this.option,this.parsePath(e),!t&&v(this,e))},getShallow:function(e,t){var n=this.option,i=null==n?n:n[e],r=!t&&v(this,e);return null==i&&r&&(i=r.getShallow(e)),i},getModel:function(e,t){var n;return new g(null==e?this.option:m(this.option,e=this.parsePath(e)),t=t||(n=v(this,e))&&n.getModel(e),this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i.clone(this.option))},setReadOnly:function(e){},parsePath:function(e){return\"string\"==typeof e&&(e=e.split(\".\")),e},customizeGetParent:function(e){p(this).getParent=e},isAnimationEnabled:function(){if(!r.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s(g),l(g),f(g,u),f(g,c),f(g,h),f(g,d);var y=g;e.exports=y},Pgdp:function(e,t,n){var i=n(\"AlhT\"),r=n(\"h0jU\"),o=n(\"BNYN\"),a=function(){this.group=new i,this.uid=r.getUID(\"viewComponent\")},s=a.prototype={constructor:a,init:function(e,t){},render:function(e,t,n,i){},dispose:function(){},filterForExposedEvent:null};s.updateView=s.updateLayout=s.updateVisual=function(e,t,n,i){},o.enableClassExtend(a),o.enableClassManagement(a,{registerWhenExtend:!0});var l=a;e.exports=l},PiQa:function(e,t,n){var i=n(\"0sHC\"),r=n(\"/gxq\");function o(e,t,n){i.Group.call(this),this._createPolyline(e,t,n)}var a=o.prototype;a._createPolyline=function(e,t,n){var r=e.getItemLayout(t),o=new i.Polyline({shape:{points:r}});this.add(o),this._updateCommonStl(e,t,n)},a.updateData=function(e,t,n){var r=e.hostModel,o=this.childAt(0),a={shape:{points:e.getItemLayout(t)}};i.updateProps(o,a,r,t),this._updateCommonStl(e,t,n)},a._updateCommonStl=function(e,t,n){var o=this.childAt(0),a=e.getItemModel(t),s=e.getItemVisual(t,\"color\"),l=n&&n.lineStyle,u=n&&n.hoverLineStyle;n&&!e.hasItemOption||(l=a.getModel(\"lineStyle\").getLineStyle(),u=a.getModel(\"emphasis.lineStyle\").getLineStyle()),o.useStyle(r.defaults({strokeNoScale:!0,fill:\"none\",stroke:s},l)),o.hoverStyle=u,i.setHoverStyle(this)},a.updateLayout=function(e,t){this.childAt(0).setShape(\"points\",e.getItemLayout(t))},r.inherits(o,i.Group);var s=o;e.exports=s},Pmfi:function(e,t,n){var i=n(\"VewU\").createElement,r=n(\"/gxq\"),o=n(\"GxVO\"),a=n(\"MAom\"),s=n(\"/86O\"),l=n(\"4w1v\"),u=l.path,c=l.image,h=l.text;function d(e,t,n,i,r){this._zrId=e,this._svgRoot=t,this._tagNames=\"string\"==typeof n?[n]:n,this._markLabel=i,this._domName=r||\"_dom\",this.nextId=0}d.prototype.createElement=i,d.prototype.getDefs=function(e){var t=this._svgRoot,n=this._svgRoot.getElementsByTagName(\"defs\");return 0===n.length?e?((n=t.insertBefore(this.createElement(\"defs\"),t.firstChild)).contains||(n.contains=function(e){var t=n.children;if(!t)return!1;for(var i=t.length-1;i>=0;--i)if(t[i]===e)return!0;return!1}),n):null:n[0]},d.prototype.update=function(e,t){if(e){var n=this.getDefs(!1);if(e[this._domName]&&n.contains(e[this._domName]))\"function\"==typeof t&&t(e);else{var i=this.add(e);i&&(e[this._domName]=i)}}},d.prototype.addDom=function(e){this.getDefs(!0).appendChild(e)},d.prototype.removeDom=function(e){var t=this.getDefs(!1);t&&e[this._domName]&&(t.removeChild(e[this._domName]),e[this._domName]=null)},d.prototype.getDoms=function(){var e=this.getDefs(!1);if(!e)return[];var t=[];return r.each(this._tagNames,function(n){var i=e.getElementsByTagName(n);t=t.concat([].slice.call(i))}),t},d.prototype.markAllUnused=function(){var e=this.getDoms(),t=this;r.each(e,function(e){e[t._markLabel]=\"0\"})},d.prototype.markUsed=function(e){e&&(e[this._markLabel]=\"1\")},d.prototype.removeUnused=function(){var e=this.getDefs(!1);if(e){var t=this.getDoms(),n=this;r.each(t,function(t){\"1\"!==t[n._markLabel]&&e.removeChild(t)})}},d.prototype.getSvgProxy=function(e){return e instanceof o?u:e instanceof a?c:e instanceof s?h:u},d.prototype.getTextSvgElement=function(e){return e.__textSvgEl},d.prototype.getSvgElement=function(e){return e.__svgEl};var f=d;e.exports=f},\"Po+l\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"EJsE\"),o=n(\"sK5G\").seriesModelMixin,a=r.extend({type:\"series.boxplot\",dependencies:[\"xAxis\",\"yAxis\",\"grid\"],defaultValueDimensions:[{name:\"min\",defaultTooltip:!0},{name:\"Q1\",defaultTooltip:!0},{name:\"median\",defaultTooltip:!0},{name:\"Q3\",defaultTooltip:!0},{name:\"max\",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:\"cartesian2d\",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:\"#fff\",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:\"rgba(0,0,0,0.4)\"}},animationEasing:\"elasticOut\",animationDuration:800}});i.mixin(a,o,!0);var s=a;e.exports=s},Pobh:function(e,t,n){var i=n(\"RYbJ\")([[\"fill\",\"color\"],[\"stroke\",\"borderColor\"],[\"lineWidth\",\"borderWidth\"],[\"stroke\",\"barBorderColor\"],[\"lineWidth\",\"barBorderWidth\"],[\"opacity\"],[\"shadowBlur\"],[\"shadowOffsetX\"],[\"shadowOffsetY\"],[\"shadowColor\"]]),r={getBarItemStyle:function(e){var t=i(this,e);if(this.getBorderLineDash){var n=this.getBorderLineDash();n&&(t.lineDash=n)}return t}};e.exports=r},Pwgp:function(e,t,n){var i=n(\"/gxq\"),r=n(\"2HcM\"),o=function(e,t,n,i){r.call(this,e,t,n),this.type=i||\"value\",this.model=null};o.prototype={constructor:o,getLabelModel:function(){return this.model.getModel(\"label\")},isHorizontal:function(){return\"horizontal\"===this.model.get(\"orient\")}},i.inherits(o,r);var a=o;e.exports=a},PzxK:function(e,t,n){var i=n(\"D2L2\"),r=n(\"sB3e\"),o=n(\"ax3d\")(\"IE_PROTO\"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),i(e,o)?e[o]:\"function\"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},Q5xN:function(e,t,n){var i=n(\"VewU\").createElement,r=n(\"/gxq\"),o=n(\"eZxa\"),a=n(\"GxVO\"),s=n(\"MAom\"),l=n(\"/86O\"),u=n(\"0fQF\"),c=n(\"hZf2\"),h=n(\"TDz/\"),d=n(\"SMB/\"),f=n(\"4w1v\"),p=f.path,g=f.image,m=f.text;function v(e){return parseInt(e,10)}function y(e,t){return t&&e&&t.parentNode!==e}function b(e,t,n){if(y(e,t)&&n){var i=n.nextSibling;i?e.insertBefore(t,i):e.appendChild(t)}}function x(e,t){if(y(e,t)){var n=e.firstChild;n?e.insertBefore(t,n):e.appendChild(t)}}function _(e,t){t&&e&&t.parentNode===e&&e.removeChild(t)}function w(e){return e.__textSvgEl}function C(e){return e.__svgEl}var S=function(e,t,n,o){this.root=e,this.storage=t,this._opts=n=r.extend({},n||{});var a=i(\"svg\");a.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\"),a.setAttribute(\"version\",\"1.1\"),a.setAttribute(\"baseProfile\",\"full\"),a.style.cssText=\"user-select:none;position:absolute;left:0;top:0;\";var s=i(\"g\");a.appendChild(s);var l=i(\"g\");a.appendChild(l),this.gradientManager=new c(o,l),this.clipPathManager=new h(o,l),this.shadowManager=new d(o,l);var u=document.createElement(\"div\");u.style.cssText=\"overflow:hidden;position:relative\",this._svgDom=a,this._svgRoot=l,this._backgroundRoot=s,this._viewport=u,e.appendChild(u),u.appendChild(a),this.resize(n.width,n.height),this._visibleList=[]};S.prototype={constructor:S,getType:function(){return\"svg\"},getViewportRoot:function(){return this._viewport},getSvgDom:function(){return this._svgDom},getSvgRoot:function(){return this._svgRoot},getViewportRootOffset:function(){var e=this.getViewportRoot();if(e)return{offsetLeft:e.offsetLeft||0,offsetTop:e.offsetTop||0}},refresh:function(){var e=this.storage.getDisplayList(!0);this._paintList(e)},setBackgroundColor:function(e){this._backgroundRoot&&this._backgroundNode&&this._backgroundRoot.removeChild(this._backgroundNode);var t=i(\"rect\");t.setAttribute(\"width\",this.getWidth()),t.setAttribute(\"height\",this.getHeight()),t.setAttribute(\"x\",0),t.setAttribute(\"y\",0),t.setAttribute(\"id\",0),t.style.fill=e,this._backgroundRoot.appendChild(t),this._backgroundNode=t},_paintList:function(e){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var t,n,i=this._svgRoot,r=this._visibleList,o=e.length,c=[];for(t=0;t<o;t++){var h=e[t],d=(n=h)instanceof a?p:n instanceof s?g:n instanceof l?m:p,f=C(h)||w(h);h.invisible||(h.__dirty&&(d&&d.brush(h),this.clipPathManager.update(h),h.style&&(this.gradientManager.update(h.style.fill),this.gradientManager.update(h.style.stroke),this.shadowManager.update(f,h)),h.__dirty=!1),c.push(h))}var v,y=u(r,c);for(t=0;t<y.length;t++){if((T=y[t]).removed)for(var S=0;S<T.count;S++){f=C(h=r[T.indices[S]]);var k=w(h);_(i,f),_(i,k)}}for(t=0;t<y.length;t++){var T;if((T=y[t]).added)for(S=0;S<T.count;S++){f=C(h=c[T.indices[S]]),k=w(h);v?b(i,f,v):x(i,f),f?b(i,k,f):v?b(i,k,v):x(i,k),b(i,k,f),v=k||f||v,this.gradientManager.addWithoutUpdate(f||k,h),this.shadowManager.addWithoutUpdate(f||k,h),this.clipPathManager.markUsed(h)}else if(!T.removed)for(S=0;S<T.count;S++){f=C(h=c[T.indices[S]]),k=w(h),f=C(h),k=w(h);this.gradientManager.markUsed(h),this.gradientManager.addWithoutUpdate(f||k,h),this.shadowManager.markUsed(h),this.shadowManager.addWithoutUpdate(f||k,h),this.clipPathManager.markUsed(h),k&&b(i,k,f),v=f||k||v}}this.gradientManager.removeUnused(),this.clipPathManager.removeUnused(),this.shadowManager.removeUnused(),this._visibleList=c},_getDefs:function(e){var t,n=this._svgDom;return 0===(t=n.getElementsByTagName(\"defs\")).length?e?((t=n.insertBefore(i(\"defs\"),n.firstChild)).contains||(t.contains=function(e){var n=t.children;if(!n)return!1;for(var i=n.length-1;i>=0;--i)if(n[i]===e)return!0;return!1}),t):null:t[0]},resize:function(e,t){var n=this._viewport;n.style.display=\"none\";var i=this._opts;if(null!=e&&(i.width=e),null!=t&&(i.height=t),e=this._getSize(0),t=this._getSize(1),n.style.display=\"\",this._width!==e||this._height!==t){this._width=e,this._height=t;var r=n.style;r.width=e+\"px\",r.height=t+\"px\";var o=this._svgDom;o.setAttribute(\"width\",e),o.setAttribute(\"height\",t)}this._backgroundNode&&(this._backgroundNode.setAttribute(\"width\",e),this._backgroundNode.setAttribute(\"height\",t))},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(e){var t=this._opts,n=[\"width\",\"height\"][e],i=[\"clientWidth\",\"clientHeight\"][e],r=[\"paddingLeft\",\"paddingTop\"][e],o=[\"paddingRight\",\"paddingBottom\"][e];if(null!=t[n]&&\"auto\"!==t[n])return parseFloat(t[n]);var a=this.root,s=document.defaultView.getComputedStyle(a);return(a[i]||v(s[n])||v(a.style[n]))-(v(s[r])||0)-(v(s[o])||0)|0},dispose:function(){this.root.innerHTML=\"\",this._svgRoot=this._backgroundRoot=this._svgDom=this._backgroundNode=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},toDataURL:function(){return this.refresh(),\"data:image/svg+xml;charset=UTF-8,\"+encodeURIComponent(this._svgDom.outerHTML.replace(/></g,\">\\n\\r<\"))}},r.each([\"getLayer\",\"insertLayer\",\"eachLayer\",\"eachBuiltinLayer\",\"eachOtherLayer\",\"getLayers\",\"modLayer\",\"delLayer\",\"clearLayer\",\"pathToImage\"],function(e){var t;S.prototype[e]=(t=e,function(){o('In SVG mode painter not support method \"'+t+'\"')})});var k=S;e.exports=k},QCrJ:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Pdtn\"),o=i.each,a=i.curry;function s(e,t){return\"all\"===e||i.isArray(e)&&i.indexOf(e,t)>=0||e===t}function l(e){var t=(e.ecModel.getComponent(\"axisPointer\")||{}).coordSysAxesInfo;return t&&t.axesInfo[c(e)]}function u(e){return!!e.get(\"handle.show\")}function c(e){return e.type+\"||\"+e.id}t.collect=function(e,t){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(e,t,n){var l=t.getComponent(\"tooltip\"),h=t.getComponent(\"axisPointer\"),d=h.get(\"link\",!0)||[],f=[];o(n.getCoordinateSystems(),function(n){if(n.axisPointerEnabled){var p=c(n.model),g=e.coordSysAxesInfo[p]={};e.coordSysMap[p]=n;var m=n.model,v=m.getModel(\"tooltip\",l);if(o(n.getAxes(),a(_,!1,null)),n.getTooltipAxes&&l&&v.get(\"show\")){var y=\"axis\"===v.get(\"trigger\"),b=\"cross\"===v.get(\"axisPointer.type\"),x=n.getTooltipAxes(v.get(\"axisPointer.axis\"));(y||b)&&o(x.baseAxes,a(_,!b||\"cross\",y)),b&&o(x.otherAxes,a(_,\"cross\",!1))}}function _(a,l,p){var m=p.model.getModel(\"axisPointer\",h),y=m.get(\"show\");if(y&&(\"auto\"!==y||a||u(m))){null==l&&(l=m.get(\"triggerTooltip\"));var b=(m=a?function(e,t,n,a,s,l){var u=t.getModel(\"axisPointer\"),c={};o([\"type\",\"snap\",\"lineStyle\",\"shadowStyle\",\"label\",\"animation\",\"animationDurationUpdate\",\"animationEasingUpdate\",\"z\"],function(e){c[e]=i.clone(u.get(e))}),c.snap=\"category\"!==e.type&&!!l,\"cross\"===u.get(\"type\")&&(c.type=\"line\");var h=c.label||(c.label={});if(null==h.show&&(h.show=!1),\"cross\"===s){var d=u.get(\"label.show\");if(h.show=null==d||d,!l){var f=c.lineStyle=u.get(\"crossStyle\");f&&i.defaults(h,f.textStyle)}}return e.model.getModel(\"axisPointer\",new r(c,n,a))}(p,v,h,t,a,l):m).get(\"snap\"),x=c(p.model),_=l||b||\"category\"===p.type,w=e.axesInfo[x]={key:x,axis:p,coordSys:n,axisPointerModel:m,triggerTooltip:l,involveSeries:_,snap:b,useHandle:u(m),seriesModels:[]};g[x]=w,e.seriesInvolved|=_;var C=function(e,t){for(var n=t.model,i=t.dim,r=0;r<e.length;r++){var o=e[r]||{};if(s(o[i+\"AxisId\"],n.id)||s(o[i+\"AxisIndex\"],n.componentIndex)||s(o[i+\"AxisName\"],n.name))return r}}(d,p);if(null!=C){var S=f[C]||(f[C]={axesInfo:{}});S.axesInfo[x]=w,S.mapper=d[C].mapper,w.linkGroup=S}}}})}(n,e,t),n.seriesInvolved&&function(e,t){t.eachSeries(function(t){var n=t.coordinateSystem,i=t.get(\"tooltip.trigger\",!0),r=t.get(\"tooltip.show\",!0);n&&\"none\"!==i&&!1!==i&&\"item\"!==i&&!1!==r&&!1!==t.get(\"axisPointer.show\",!0)&&o(e.coordSysAxesInfo[c(n.model)],function(e){var i=e.axis;n.getAxis(i.dim)===i&&(e.seriesModels.push(t),null==e.seriesDataCount&&(e.seriesDataCount=0),e.seriesDataCount+=t.getData().count())})},this)}(n,e),n},t.fixValue=function(e){var t=l(e);if(t){var n=t.axisPointerModel,i=t.axis.scale,r=n.option,o=n.get(\"status\"),a=n.get(\"value\");null!=a&&(a=i.parse(a));var s=u(n);null==o&&(r.status=s?\"show\":\"hide\");var c=i.getExtent().slice();c[0]>c[1]&&c.reverse(),(null==a||a>c[1])&&(a=c[1]),a<c[0]&&(a=c[0]),r.value=a,s&&(r.status=t.axis.scale.isBlank()?\"hide\":\"show\")}},t.getAxisInfo=l,t.getAxisPointerModel=function(e){var t=l(e);return t&&t.axisPointerModel},t.makeKey=c},\"QD+P\":function(e,t){var n=\"\\0__throttleOriginMethod\",i=\"\\0__throttleRate\",r=\"\\0__throttleType\";function o(e,t,n){var i,r,o,a,s,l=0,u=0,c=null;function h(){u=(new Date).getTime(),c=null,e.apply(o,a||[])}t=t||0;var d=function(){i=(new Date).getTime(),o=this,a=arguments;var e=s||t,d=s||n;s=null,r=i-(d?l:u)-e,clearTimeout(c),d?c=setTimeout(h,e):r>=0?h():c=setTimeout(h,-r),l=i};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(e){s=e},d}t.throttle=o,t.createOrUpdate=function(e,t,a,s){var l=e[t];if(l){var u=l[n]||l,c=l[r];if(l[i]!==a||c!==s){if(null==a||!s)return e[t]=u;(l=e[t]=o(u,a,\"debounce\"===s))[n]=u,l[r]=s,l[i]=a}return l}},t.clear=function(e,t){var i=e[t];i&&i[n]&&(e[t]=i[n])}},QDiV:function(e,t,n){var i=n(\"/gxq\"),r=n(\"FIAY\"),o=n(\"5KBG\").retrieveRawValue;e.exports=function(e,t){var n=t.getModel(\"aria\");if(n.get(\"show\"))if(n.get(\"description\"))e.setAttribute(\"aria-label\",n.get(\"description\"));else{var a=0;t.eachSeries(function(e,t){++a},this);var s,l=n.get(\"data.maxCount\")||10,u=n.get(\"series.maxCount\")||10,c=Math.min(a,u);if(!(a<1)){var h=function(){var e=t.getModel(\"title\").option;return e&&e.length&&(e=e[0]),e&&e.text}();s=h?f(p(\"general.withTitle\"),{title:h}):p(\"general.withoutTitle\");var d=[];s+=f(p(a>1?\"series.multiple.prefix\":\"series.single.prefix\"),{seriesCount:a}),t.eachSeries(function(e,t){if(t<c){var n,i=e.get(\"name\"),s=\"series.\"+(a>1?\"multiple\":\"single\")+\".\";n=f(n=p(i?s+\"withName\":s+\"withoutName\"),{seriesId:e.seriesIndex,seriesName:e.get(\"name\"),seriesType:(y=e.subType,r.series.typeNames[y]||\"自定义图\")});var u=e.getData();window.data=u,u.count()>l?n+=f(p(\"data.partialData\"),{displayCnt:l}):n+=p(\"data.allData\");for(var h=[],g=0;g<u.count();g++)if(g<l){var m=u.getName(g),v=o(u,g);h.push(f(p(m?\"data.withName\":\"data.withoutName\"),{name:m,value:v}))}n+=h.join(p(\"data.separator.middle\"))+p(\"data.separator.end\"),d.push(n)}var y}),s+=d.join(p(\"series.multiple.separator.middle\"))+p(\"series.multiple.separator.end\"),e.setAttribute(\"aria-label\",s)}}function f(e,t){if(\"string\"!=typeof e)return e;var n=e;return i.each(t,function(e,t){n=n.replace(new RegExp(\"\\\\{\\\\s*\"+t+\"\\\\s*\\\\}\",\"g\"),e)}),n}function p(e){var t=n.get(e);if(null==t){for(var i=e.split(\".\"),o=r.aria,a=0;a<i.length;++a)o=o[i[a]];return o}return t}}},QRG4:function(e,t,n){var i=n(\"UuGF\"),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},\"QWe/\":function(e,t,n){n(\"crlp\")(\"observable\")},QZ7o:function(e,t,n){var i=n(\"/gxq\");e.exports=function(e){var t={};e.eachSeriesByType(\"map\",function(n){var r=n.getMapType();if(!n.getHostGeoModel()&&!t[r]){var o={};i.each(n.seriesGroup,function(t){var n=t.coordinateSystem,i=t.originalData;t.get(\"showLegendSymbol\")&&e.getComponent(\"legend\")&&i.each(i.mapDimension(\"value\"),function(e,t){var r=i.getName(t),a=n.getRegion(r);if(a&&!isNaN(e)){var s=o[r]||0,l=n.dataToPoint(a.center);o[r]=s+1,i.setItemLayout(t,{point:l,offset:s})}})});var a=n.getData();a.each(function(e){var t=a.getName(e),n=a.getItemLayout(e)||{};n.showLabel=!o[t],a.setItemLayout(e,n)}),t[r]=!0}})}},QbUQ:function(e,t,n){var i=n(\"HHfb\"),r=n(\"Ou7x\"),o=n(\"0sHC\"),a=n(\"zAPJ\"),s=n(\"dOVI\"),l=n(\"vjPX\"),u=n(\"43ae\"),c=r.extend({makeElOption:function(e,t,n,r,u){var c=n.axis;\"angle\"===c.dim&&(this.animationThreshold=Math.PI/18);var d,f=c.polar,p=f.getOtherAxis(c).getExtent();d=c[\"dataTo\"+i.capitalFirst(c.dim)](t);var g=r.get(\"type\");if(g&&\"none\"!==g){var m=a.buildElStyle(r),v=h[g](c,f,d,p,m);v.style=m,e.graphicKey=v.type,e.pointer=v}var y=function(e,t,n,i,r){var a=t.axis,u=a.dataToCoord(e),c=i.getAngleAxis().getExtent()[0];c=c/180*Math.PI;var h,d,f,p=i.getRadiusAxis().getExtent();if(\"radius\"===a.dim){var g=s.create();s.rotate(g,g,c),s.translate(g,g,[i.cx,i.cy]),h=o.applyTransform([u,-r],g);var m=t.getModel(\"axisLabel\").get(\"rotate\")||0,v=l.innerTextLayout(c,m*Math.PI/180,-1);d=v.textAlign,f=v.textVerticalAlign}else{var y=p[1];h=i.coordToPoint([y+r,u]);var b=i.cx,x=i.cy;d=Math.abs(h[0]-b)/y<.3?\"center\":h[0]>b?\"left\":\"right\",f=Math.abs(h[1]-x)/y<.3?\"middle\":h[1]>x?\"top\":\"bottom\"}return{position:h,align:d,verticalAlign:f}}(t,n,0,f,r.get(\"label.margin\"));a.buildLabelElOption(e,n,r,u,y)}});var h={line:function(e,t,n,i,r){return\"angle\"===e.dim?{type:\"Line\",shape:a.makeLineShape(t.coordToPoint([i[0],n]),t.coordToPoint([i[1],n]))}:{type:\"Circle\",shape:{cx:t.cx,cy:t.cy,r:n}}},shadow:function(e,t,n,i,r){var o=Math.max(1,e.getBandWidth()),s=Math.PI/180;return\"angle\"===e.dim?{type:\"Sector\",shape:a.makeSectorShape(t.cx,t.cy,i[0],i[1],(-n-o/2)*s,(o/2-n)*s)}:{type:\"Sector\",shape:a.makeSectorShape(t.cx,t.cy,n-o/2,n+o/2,0,2*Math.PI)}}};u.registerAxisPointerClass(\"PolarAxisPointer\",c);var d=c;e.exports=d},Qv0P:function(e,t,n){for(var i=n(\"/gxq\"),r=n(\"B33o\"),o=[126,25],a=[[[0,3.5],[7,11.2],[15,11.9],[30,7],[42,.7],[52,.7],[56,7.7],[59,.7],[64,.7],[64,0],[5,0],[0,3.5]],[[13,16.1],[19,14.7],[16,21.7],[11,23.1],[13,16.1]],[[12,32.2],[14,38.5],[15,38.5],[13,32.2],[12,32.2]],[[16,47.6],[12,53.2],[13,53.2],[18,47.6],[16,47.6]],[[6,64.4],[8,70],[9,70],[8,64.4],[6,64.4]],[[23,82.6],[29,79.8],[30,79.8],[25,82.6],[23,82.6]],[[37,70.7],[43,62.3],[44,62.3],[39,70.7],[37,70.7]],[[48,51.1],[51,45.5],[53,45.5],[50,51.1],[48,51.1]],[[51,35],[51,28.7],[53,28.7],[53,35],[51,35]],[[52,22.4],[55,17.5],[56,17.5],[53,22.4],[52,22.4]],[[58,12.6],[62,7],[63,7],[60,12.6],[58,12.6]],[[0,3.5],[0,93.1],[64,93.1],[64,0],[63,0],[63,92.4],[1,92.4],[1,3.5],[0,3.5]]],s=0;s<a.length;s++)for(var l=0;l<a[s].length;l++)a[s][l][0]/=10.5,a[s][l][1]/=-14,a[s][l][0]+=o[0],a[s][l][1]+=o[1];e.exports=function(e,t){\"china\"===e&&t.push(new r(\"南海诸岛\",i.map(a,function(e){return{type:\"polygon\",exterior:e}}),o))}},QxFU:function(e,t){e.exports=function(e,t,n,i,r,o){if(o>t&&o>i||o<t&&o<i)return 0;if(i===t)return 0;var a=i<t?1:-1,s=(o-t)/(i-t);1!==s&&0!==s||(a=i<t?.5:-.5);var l=s*(n-e)+e;return l===r?1/0:l>r?a:0}},R0U9:function(e,t,n){n(\"Icdr\").registerAction(\"legendScroll\",\"legendscroll\",function(e,t){var n=e.scrollDataIndex;null!=n&&t.eachComponent({mainType:\"legend\",subType:\"scroll\",query:e},function(e){e.setScrollDataIndex(n)})})},R4wc:function(e,t,n){var i=n(\"kM2E\");i(i.S+i.F,\"Object\",{assign:n(\"To3L\")})},R9M2:function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},RAps:function(e,t){e.exports=function(e){var t=e.getRect(),n=e.getRangeInfo();return{coordSys:{type:\"calendar\",x:t.x,y:t.y,width:t.width,height:t.height,cellWidth:e.getCellWidth(),cellHeight:e.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(t,n){return e.dataToPoint(t,n)}}}}},RDoK:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=116)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},116:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"label\",{staticClass:\"el-radio\",class:[e.border&&e.radioSize?\"el-radio--\"+e.radioSize:\"\",{\"is-disabled\":e.isDisabled},{\"is-focus\":e.focus},{\"is-bordered\":e.border},{\"is-checked\":e.model===e.label}],attrs:{role:\"radio\",\"aria-checked\":e.model===e.label,\"aria-disabled\":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"space\",32,t.key,[\" \",\"Spacebar\"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[n(\"span\",{staticClass:\"el-radio__input\",class:{\"is-disabled\":e.isDisabled,\"is-checked\":e.model===e.label}},[n(\"span\",{staticClass:\"el-radio__inner\"}),n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],ref:\"radio\",staticClass:\"el-radio__original\",attrs:{type:\"radio\",\"aria-hidden\":\"true\",name:e.name,disabled:e.isDisabled,tabindex:\"-1\"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),n(\"span\",{staticClass:\"el-radio__label\",on:{keydown:function(e){e.stopPropagation()}}},[e._t(\"default\"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};i._withStripped=!0;var r=n(4),o={name:\"ElRadio\",mixins:[n.n(r).a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},componentName:\"ElRadio\",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if(\"ElRadioGroup\"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch(\"ElRadioGroup\",\"input\",[e]):this.$emit(\"input\",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit(\"change\",e.model),e.isGroup&&e.dispatch(\"ElRadioGroup\",\"handleChange\",e.model)})}}},a=n(0),s=Object(a.a)(o,i,[],!1,null,null,null);s.options.__file=\"packages/radio/src/radio.vue\";var l=s.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=n(\"fPll\")}})},RKzr:function(e,t,n){var i=n(\"/gxq\"),r=n(\"2HcM\"),o=function(e,t,n,i,o){r.call(this,e,t,n),this.type=i||\"value\",this.position=o||\"bottom\"};o.prototype={constructor:o,index:0,getAxesOnZeroOf:null,model:null,isHorizontal:function(){var e=this.position;return\"top\"===e||\"bottom\"===e},getGlobalExtent:function(e){var t=this.getExtent();return t[0]=this.toGlobalCoord(t[0]),t[1]=this.toGlobalCoord(t[1]),e&&t[0]>t[1]&&t.reverse(),t},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(e,t){return this.coordToData(this.toLocalCoord(e[\"x\"===this.dim?0:1]),t)},toLocalCoord:null,toGlobalCoord:null},i.inherits(o,r);var a=o;e.exports=a},RPLV:function(e,t,n){var i=n(\"7KvD\").document;e.exports=i&&i.documentElement},RTd5:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"FIAY\"),a=n(\"dCQY\"),s=o.toolbox.magicType;function l(e){this.model=e}l.defaultOption={show:!0,type:[],icon:{line:\"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4\",bar:\"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7\",stack:\"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z\"},title:r.clone(s.title),option:{},seriesIndex:{}};var u=l.prototype;u.getIcons=function(){var e=this.model,t=e.get(\"icon\"),n={};return r.each(e.get(\"type\"),function(e){t[e]&&(n[e]=t[e])}),n};var c={line:function(e,t,n,i){if(\"bar\"===e)return r.merge({id:t,type:\"line\",data:n.get(\"data\"),stack:n.get(\"stack\"),markPoint:n.get(\"markPoint\"),markLine:n.get(\"markLine\")},i.get(\"option.line\")||{},!0)},bar:function(e,t,n,i){if(\"line\"===e)return r.merge({id:t,type:\"bar\",data:n.get(\"data\"),stack:n.get(\"stack\"),markPoint:n.get(\"markPoint\"),markLine:n.get(\"markLine\")},i.get(\"option.bar\")||{},!0)},stack:function(e,t,n,i){var o=\"__ec_magicType_stack__\"===n.get(\"stack\");if(\"line\"===e||\"bar\"===e)return i.setIconStatus(\"stack\",o?\"normal\":\"emphasis\"),r.merge({id:t,stack:o?\"\":\"__ec_magicType_stack__\"},i.get(\"option.stack\")||{},!0)}},h=[[\"line\",\"bar\"],[\"stack\"]];u.onclick=function(e,t,n){var i=this.model,o=i.get(\"seriesIndex.\"+n);if(c[n]){var a,l={series:[]};if(r.each(h,function(e){r.indexOf(e,n)>=0&&r.each(e,function(e){i.setIconStatus(e,\"normal\")})}),i.setIconStatus(n,\"emphasis\"),e.eachComponent({mainType:\"series\",query:null==o?null:{seriesIndex:o}},function(t){var o=t.subType,a=t.id,s=c[n](o,a,t,i);s&&(r.defaults(s,t.option),l.series.push(s));var u=t.coordinateSystem;if(u&&\"cartesian2d\"===u.type&&(\"line\"===n||\"bar\"===n)){var h=u.getAxesByScale(\"ordinal\")[0];if(h){var d=h.dim+\"Axis\",f=e.queryComponents({mainType:d,index:t.get(name+\"Index\"),id:t.get(name+\"Id\")})[0].componentIndex;l[d]=l[d]||[];for(var p=0;p<=f;p++)l[d][f]=l[d][f]||{};l[d][f].boundaryGap=\"bar\"===n}}}),\"stack\"===n)a=l.series&&l.series[0]&&\"__ec_magicType_stack__\"===l.series[0].stack?r.merge({stack:s.title.tiled},s.title):r.clone(s.title);t.dispatchAction({type:\"changeMagicType\",currentType:n,newOption:l,newTitle:a,featureName:\"magicType\"})}},i.registerAction({type:\"changeMagicType\",event:\"magicTypeChanged\",update:\"prepareAndUpdate\"},function(e,t){t.mergeOption(e.newOption)}),a.register(\"magicType\",l);var d=l;e.exports=d},RYbJ:function(e,t,n){var i=n(\"/gxq\");e.exports=function(e){for(var t=0;t<e.length;t++)e[t][1]||(e[t][1]=e[t][0]);return function(t,n,r){for(var o={},a=0;a<e.length;a++){var s=e[a][1];if(!(n&&i.indexOf(n,s)>=0||r&&i.indexOf(r,s)<0)){var l=t.getShallow(s);null!=l&&(o[e[a][0]]=l)}}return o}}},Rfu2:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"Pdtn\"),o=n(\"1Hui\"),a=n(\"rrAD\"),s=n(\"5KBG\"),l=s.defaultDimValueGetters,u=s.DefaultDataProvider,c=n(\"mvCM\").summarizeDimensions,h=n(\"1DJE\"),d=i.isObject,f=-1,p=\"e\\0\\0\",g={float:\"undefined\"==typeof Float64Array?Array:Float64Array,int:\"undefined\"==typeof Int32Array?Array:Int32Array,ordinal:Array,number:Array,time:Array},m=\"undefined\"==typeof Uint32Array?Array:Uint32Array,v=\"undefined\"==typeof Int32Array?Array:Int32Array,y=\"undefined\"==typeof Uint16Array?Array:Uint16Array;function b(e){return e._rawCount>65535?m:y}var x=[\"hasItemOption\",\"_nameList\",\"_idList\",\"_invertedIndicesMap\",\"_rawData\",\"_chunkSize\",\"_chunkCount\",\"_dimValueGetter\",\"_count\",\"_rawCount\",\"_nameDimIdx\",\"_idDimIdx\"],_=[\"_extent\",\"_approximateExtent\",\"_rawExtent\"];function w(e,t){i.each(x.concat(t.__wrappedMethods||[]),function(n){t.hasOwnProperty(n)&&(e[n]=t[n])}),e.__wrappedMethods=t.__wrappedMethods,i.each(_,function(n){e[n]=i.clone(t[n])}),e._calculationInfo=i.extend(t._calculationInfo)}var C=function(e,t){e=e||[\"x\",\"y\"];for(var n={},r=[],o={},a=0;a<e.length;a++){var s=e[a];i.isString(s)?s=new h({name:s}):s instanceof h||(s=new h(s));var l=s.name;s.type=s.type||\"float\",s.coordDim||(s.coordDim=l,s.coordDimIndex=0),s.otherDims=s.otherDims||{},r.push(l),n[l]=s,s.index=a,s.createInvertedIndices&&(o[l]=[])}this.dimensions=r,this._dimensionInfos=n,this.hostModel=t,this.dataType,this._indices=null,this._count=0,this._rawCount=0,this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this._visual={},this._layout={},this._itemVisuals=[],this.hasItemVisual={},this._itemLayouts=[],this._graphicEls=[],this._chunkSize=1e5,this._chunkCount=0,this._rawData,this._rawExtent={},this._extent={},this._approximateExtent={},this._dimensionsSummary=c(this),this._invertedIndicesMap=o,this._calculationInfo={},this.userOutput=this._dimensionsSummary.userOutput},S=C.prototype;function k(e,t,n,i,r){var o=g[t.type],a=i-1,s=t.name,l=e[s][a];if(l&&l.length<n){for(var u=new o(Math.min(r-a*n,n)),c=0;c<l.length;c++)u[c]=l[c];e[s][a]=u}for(var h=i*n;h<r;h+=n)e[s].push(new o(Math.min(r-h,n)))}function T(e){var t=e._invertedIndicesMap;i.each(t,function(n,i){var r=e._dimensionInfos[i].ordinalMeta;if(r){n=t[i]=new v(r.categories.length);for(var o=0;o<n.length;o++)n[o]=f;for(o=0;o<e._count;o++)n[e.get(i,o)]=o}})}function M(e,t,n){var i;if(null!=t){var r=e._chunkSize,o=Math.floor(n/r),a=n%r,s=e.dimensions[t],l=e._storage[s][o];if(l){i=l[a];var u=e._dimensionInfos[s].ordinalMeta;u&&u.categories.length&&(i=u.categories[i])}}return i}function D(e){return e}function A(e){return e<this._count&&e>=0?this._indices[e]:-1}function I(e,t){var n=e._idList[t];return null==n&&(n=M(e,e._idDimIdx,t)),null==n&&(n=p+t),n}function O(e){return i.isArray(e)||(e=[e]),e}function E(e,t){var n=e.dimensions,r=new C(i.map(n,e.getDimensionInfo,e),e.hostModel);w(r,e);for(var o=r._storage={},a=e._storage,s=0;s<n.length;s++){var l=n[s];a[l]&&(i.indexOf(t,l)>=0?(o[l]=L(a[l]),r._rawExtent[l]=P(),r._extent[l]=null):o[l]=a[l])}return r}function L(e){for(var t,n,i=new Array(e.length),r=0;r<e.length;r++)i[r]=(t=e[r],n=void 0,(n=t.constructor)===Array?t.slice():new n(t));return i}function P(){return[1/0,-1/0]}S.type=\"list\",S.hasItemOption=!0,S.getDimension=function(e){return\"number\"!=typeof e&&(isNaN(e)||this._dimensionInfos.hasOwnProperty(e))||(e=this.dimensions[e]),e},S.getDimensionInfo=function(e){return this._dimensionInfos[this.getDimension(e)]},S.getDimensionsOnCoord=function(){return this._dimensionsSummary.dataDimsOnCoord.slice()},S.mapDimension=function(e,t){var n=this._dimensionsSummary;if(null==t)return n.encodeFirstDimNotExtra[e];var i=n.encode[e];return!0===t?(i||[]).slice():i&&i[t]},S.initData=function(e,t,n){(a.isInstance(e)||i.isArrayLike(e))&&(e=new u(e,this.dimensions.length)),this._rawData=e,this._storage={},this._indices=null,this._nameList=t||[],this._idList=[],this._nameRepeatCount={},n||(this.hasItemOption=!1),this.defaultDimValueGetter=l[this._rawData.getSource().sourceFormat],this._dimValueGetter=n=n||this.defaultDimValueGetter,this._dimValueGetterArrayRows=l.arrayRows,this._rawExtent={},this._initDataFromProvider(0,e.count()),e.pure&&(this.hasItemOption=!1)},S.getProvider=function(){return this._rawData},S.appendData=function(e){var t=this._rawData,n=this.count();t.appendData(e);var i=t.count();t.persistent||(i+=n),this._initDataFromProvider(n,i)},S.appendValues=function(e,t){for(var n=this._chunkSize,i=this._storage,r=this.dimensions,o=r.length,a=this._rawExtent,s=this.count(),l=s+Math.max(e.length,t?t.length:0),u=this._chunkCount,c=0;c<o;c++){a[v=r[c]]||(a[v]=P()),i[v]||(i[v]=[]),k(i,this._dimensionInfos[v],n,u,l),this._chunkCount=i[v].length}for(var h=new Array(o),d=s;d<l;d++){for(var f=d-s,p=Math.floor(d/n),g=d%n,m=0;m<o;m++){var v=r[m],y=this._dimValueGetterArrayRows(e[f]||h,v,f,m);i[v][p][g]=y;var b=a[v];y<b[0]&&(b[0]=y),y>b[1]&&(b[1]=y)}t&&(this._nameList[d]=t[f])}this._rawCount=this._count=l,this._extent={},T(this)},S._initDataFromProvider=function(e,t){if(!(e>=t)){for(var n,i=this._chunkSize,r=this._rawData,o=this._storage,a=this.dimensions,s=a.length,l=this._dimensionInfos,u=this._nameList,c=this._idList,h=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;p<s;p++){h[_=a[p]]||(h[_]=P());var g=l[_];0===g.otherDims.itemName&&(n=this._nameDimIdx=p),0===g.otherDims.itemId&&(this._idDimIdx=p),o[_]||(o[_]=[]),k(o,g,i,f,t),this._chunkCount=o[_].length}for(var m=new Array(s),v=e;v<t;v++){m=r.getItem(v,m);for(var y=Math.floor(v/i),b=v%i,x=0;x<s;x++){var _,w=o[_=a[x]][y],C=this._dimValueGetter(m,_,v,x);w[b]=C;var S=h[_];C<S[0]&&(S[0]=C),C>S[1]&&(S[1]=C)}if(!r.pure){var M=u[v];if(m&&null==M)if(null!=m.name)u[v]=M=m.name;else if(null!=n){var D=a[n],A=o[D][y];if(A){M=A[b];var I=l[D].ordinalMeta;I&&I.categories.length&&(M=I.categories[M])}}var O=null==m?null:m.id;null==O&&null!=M&&(d[M]=d[M]||0,O=M,d[M]>0&&(O+=\"__ec__\"+d[M]),d[M]++),null!=O&&(c[v]=O)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=t,this._extent={},T(this)}},S.count=function(){return this._count},S.getIndices=function(){var e=this._indices;if(e){var t=e.constructor,n=this._count;if(t===Array){r=new t(n);for(var i=0;i<n;i++)r[i]=e[i]}else r=new t(e.buffer,0,n)}else{var r=new(t=b(this))(this.count());for(i=0;i<r.length;i++)r[i]=i}return r},S.get=function(e,t){if(!(t>=0&&t<this._count))return NaN;var n=this._storage;if(!n[e])return NaN;t=this.getRawIndex(t);var i=Math.floor(t/this._chunkSize),r=t%this._chunkSize;return n[e][i][r]},S.getByRawIndex=function(e,t){if(!(t>=0&&t<this._rawCount))return NaN;var n=this._storage[e];if(!n)return NaN;var i=Math.floor(t/this._chunkSize),r=t%this._chunkSize;return n[i][r]},S._getFast=function(e,t){var n=Math.floor(t/this._chunkSize),i=t%this._chunkSize;return this._storage[e][n][i]},S.getValues=function(e,t){var n=[];i.isArray(e)||(t=e,e=this.dimensions);for(var r=0,o=e.length;r<o;r++)n.push(this.get(e[r],t));return n},S.hasValue=function(e){for(var t=this._dimensionsSummary.dataDimsOnCoord,n=0,i=t.length;n<i;n++)if(isNaN(this.get(t[n],e)))return!1;return!0},S.getDataExtent=function(e){e=this.getDimension(e);var t=this._storage[e],n=P();if(!t)return n;var i,r=this.count();if(!this._indices)return this._rawExtent[e].slice();if(i=this._extent[e])return i.slice();for(var o=(i=n)[0],a=i[1],s=0;s<r;s++){var l=this._getFast(e,this.getRawIndex(s));l<o&&(o=l),l>a&&(a=l)}return i=[o,a],this._extent[e]=i,i},S.getApproximateExtent=function(e){return e=this.getDimension(e),this._approximateExtent[e]||this.getDataExtent(e)},S.setApproximateExtent=function(e,t){t=this.getDimension(t),this._approximateExtent[t]=e.slice()},S.getCalculationInfo=function(e){return this._calculationInfo[e]},S.setCalculationInfo=function(e,t){d(e)?i.extend(this._calculationInfo,e):this._calculationInfo[e]=t},S.getSum=function(e){var t=0;if(this._storage[e])for(var n=0,i=this.count();n<i;n++){var r=this.get(e,n);isNaN(r)||(t+=r)}return t},S.getMedian=function(e){var t=[];this.each(e,function(e,n){isNaN(e)||t.push(e)});var n=[].concat(t).sort(function(e,t){return e-t}),i=this.count();return 0===i?0:i%2==1?n[(i-1)/2]:(n[i/2]+n[i/2-1])/2},S.rawIndexOf=function(e,t){var n=(e&&this._invertedIndicesMap[e])[t];return null==n||isNaN(n)?f:n},S.indexOfName=function(e){for(var t=0,n=this.count();t<n;t++)if(this.getName(t)===e)return t;return-1},S.indexOfRawIndex=function(e){if(e>=this._rawCount||e<0)return-1;if(!this._indices)return e;var t=this._indices,n=t[e];if(null!=n&&n<this._count&&n===e)return e;for(var i=0,r=this._count-1;i<=r;){var o=(i+r)/2|0;if(t[o]<e)i=o+1;else{if(!(t[o]>e))return o;r=o-1}}return-1},S.indicesOfNearest=function(e,t,n){var i=[];if(!this._storage[e])return i;null==n&&(n=1/0);for(var r=1/0,o=-1,a=0,s=0,l=this.count();s<l;s++){var u=t-this.get(e,s),c=Math.abs(u);c<=n&&((c<r||c===r&&u>=0&&o<0)&&(r=c,o=u,a=0),u===o&&(i[a++]=s))}return i.length=a,i},S.getRawIndex=D,S.getRawDataItem=function(e){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(e));for(var t=[],n=0;n<this.dimensions.length;n++){var i=this.dimensions[n];t.push(this.get(i,e))}return t},S.getName=function(e){var t=this.getRawIndex(e);return this._nameList[t]||M(this,this._nameDimIdx,t)||\"\"},S.getId=function(e){return I(this,this.getRawIndex(e))},S.each=function(e,t,n,r){\"use strict\";if(this._count){\"function\"==typeof e&&(r=n,n=t,t=e,e=[]),n=n||r||this;for(var o=(e=i.map(O(e),this.getDimension,this)).length,a=0;a<this.count();a++)switch(o){case 0:t.call(n,a);break;case 1:t.call(n,this.get(e[0],a),a);break;case 2:t.call(n,this.get(e[0],a),this.get(e[1],a),a);break;default:for(var s=0,l=[];s<o;s++)l[s]=this.get(e[s],a);l[s]=a,t.apply(n,l)}}},S.filterSelf=function(e,t,n,r){\"use strict\";if(this._count){\"function\"==typeof e&&(r=n,n=t,t=e,e=[]),n=n||r||this,e=i.map(O(e),this.getDimension,this);for(var o=this.count(),a=new(b(this))(o),s=[],l=e.length,u=0,c=e[0],h=0;h<o;h++){var d,f=this.getRawIndex(h);if(0===l)d=t.call(n,h);else if(1===l){var p=this._getFast(c,f);d=t.call(n,p,h)}else{for(var g=0;g<l;g++)s[g]=this._getFast(c,f);s[g]=h,d=t.apply(n,s)}d&&(a[u++]=f)}return u<o&&(this._indices=a),this._count=u,this._extent={},this.getRawIndex=this._indices?A:D,this}},S.selectRange=function(e){\"use strict\";if(this._count){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);var i=t.length;if(i){var r=this.count(),o=new(b(this))(r),a=0,s=t[0],l=e[s][0],u=e[s][1],c=!1;if(!this._indices){var h=0;if(1===i){for(var d=this._storage[t[0]],f=0;f<this._chunkCount;f++)for(var p=d[f],g=Math.min(this._count-f*this._chunkSize,this._chunkSize),m=0;m<g;m++){((w=p[m])>=l&&w<=u||isNaN(w))&&(o[a++]=h),h++}c=!0}else if(2===i){d=this._storage[s];var v=this._storage[t[1]],y=e[t[1]][0],x=e[t[1]][1];for(f=0;f<this._chunkCount;f++){p=d[f];var _=v[f];for(g=Math.min(this._count-f*this._chunkSize,this._chunkSize),m=0;m<g;m++){var w=p[m],C=_[m];(w>=l&&w<=u||isNaN(w))&&(C>=y&&C<=x||isNaN(C))&&(o[a++]=h),h++}}c=!0}}if(!c)if(1===i)for(m=0;m<r;m++){var S=this.getRawIndex(m);((w=this._getFast(s,S))>=l&&w<=u||isNaN(w))&&(o[a++]=S)}else for(m=0;m<r;m++){var k=!0;for(S=this.getRawIndex(m),f=0;f<i;f++){var T=t[f];((w=this._getFast(n,S))<e[T][0]||w>e[T][1])&&(k=!1)}k&&(o[a++]=this.getRawIndex(m))}return a<r&&(this._indices=o),this._count=a,this._extent={},this.getRawIndex=this._indices?A:D,this}}},S.mapArray=function(e,t,n,i){\"use strict\";\"function\"==typeof e&&(i=n,n=t,t=e,e=[]),n=n||i||this;var r=[];return this.each(e,function(){r.push(t&&t.apply(this,arguments))},n),r},S.map=function(e,t,n,r){\"use strict\";n=n||r||this;var o=E(this,e=i.map(O(e),this.getDimension,this));o._indices=this._indices,o.getRawIndex=o._indices?A:D;for(var a=o._storage,s=[],l=this._chunkSize,u=e.length,c=this.count(),h=[],d=o._rawExtent,f=0;f<c;f++){for(var p=0;p<u;p++)h[p]=this.get(e[p],f);h[u]=f;var g=t&&t.apply(n,h);if(null!=g){\"object\"!=typeof g&&(s[0]=g,g=s);for(var m=this.getRawIndex(f),v=Math.floor(m/l),y=m%l,b=0;b<g.length;b++){var x=e[b],_=g[b],w=d[x],C=a[x];C&&(C[v][y]=_),_<w[0]&&(w[0]=_),_>w[1]&&(w[1]=_)}}}return o},S.downSample=function(e,t,n,i){for(var r=E(this,[e]),o=r._storage,a=[],s=Math.floor(1/t),l=o[e],u=this.count(),c=this._chunkSize,h=r._rawExtent[e],d=new(b(this))(u),f=0,p=0;p<u;p+=s){s>u-p&&(s=u-p,a.length=s);for(var g=0;g<s;g++){var m=this.getRawIndex(p+g),v=Math.floor(m/c),y=m%c;a[g]=l[v][y]}var x=n(a),_=this.getRawIndex(Math.min(p+i(a,x)||0,u-1)),w=_%c;l[Math.floor(_/c)][w]=x,x<h[0]&&(h[0]=x),x>h[1]&&(h[1]=x),d[f++]=_}return r._count=f,r._indices=d,r.getRawIndex=A,r},S.getItemModel=function(e){var t=this.hostModel;return new r(this.getRawDataItem(e),t,t&&t.ecModel)},S.diff=function(e){var t=this;return new o(e?e.getIndices():[],this.getIndices(),function(t){return I(e,t)},function(e){return I(t,e)})},S.getVisual=function(e){var t=this._visual;return t&&t[e]},S.setVisual=function(e,t){if(d(e))for(var n in e)e.hasOwnProperty(n)&&this.setVisual(n,e[n]);else this._visual=this._visual||{},this._visual[e]=t},S.setLayout=function(e,t){if(d(e))for(var n in e)e.hasOwnProperty(n)&&this.setLayout(n,e[n]);else this._layout[e]=t},S.getLayout=function(e){return this._layout[e]},S.getItemLayout=function(e){return this._itemLayouts[e]},S.setItemLayout=function(e,t,n){this._itemLayouts[e]=n?i.extend(this._itemLayouts[e]||{},t):t},S.clearItemLayouts=function(){this._itemLayouts.length=0},S.getItemVisual=function(e,t,n){var i=this._itemVisuals[e],r=i&&i[t];return null!=r||n?r:this.getVisual(t)},S.setItemVisual=function(e,t,n){var i=this._itemVisuals[e]||{},r=this.hasItemVisual;if(this._itemVisuals[e]=i,d(t))for(var o in t)t.hasOwnProperty(o)&&(i[o]=t[o],r[o]=!0);else i[t]=n,r[t]=!0},S.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var N=function(e){e.seriesIndex=this.seriesIndex,e.dataIndex=this.dataIndex,e.dataType=this.dataType};S.setItemGraphicEl=function(e,t){var n=this.hostModel;t&&(t.dataIndex=e,t.dataType=this.dataType,t.seriesIndex=n&&n.seriesIndex,\"group\"===t.type&&t.traverse(N,t)),this._graphicEls[e]=t},S.getItemGraphicEl=function(e){return this._graphicEls[e]},S.eachItemGraphicEl=function(e,t){i.each(this._graphicEls,function(n,i){n&&e&&e.call(t,n,i)})},S.cloneShallow=function(e){if(!e){var t=i.map(this.dimensions,this.getDimensionInfo,this);e=new C(t,this.hostModel)}if(e._storage=this._storage,w(e,this),this._indices){var n=this._indices.constructor;e._indices=new n(this._indices)}else e._indices=null;return e.getRawIndex=e._indices?A:D,e},S.wrapMethod=function(e,t){var n=this[e];\"function\"==typeof n&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(e),this[e]=function(){var e=n.apply(this,arguments);return t.apply(this,[e].concat(i.slice(arguments)))})},S.TRANSFERABLE_METHODS=[\"cloneShallow\",\"downSample\",\"map\"],S.CHANGABLE_METHODS=[\"filterSelf\",\"selectRange\"];var R=C;e.exports=R},RiVu:function(e,t){var n=2311;e.exports=function(){return n++}},RjA7:function(e,t,n){var i=n(\"5KBG\").retrieveRawValue;t.getDefaultLabel=function(e,t){var n=e.mapDimension(\"defaultedLabel\",!0),r=n.length;if(1===r)return i(e,t,n[0]);if(r){for(var o=[],a=0;a<n.length;a++){var s=i(e,t,n[a]);o.push(s)}return o.join(\" \")}}},RkhK:function(e,t,n){(function(e){function t(t,n,i){var r,o=t.getWrapperElement();return(r=o.appendChild(document.createElement(\"div\"))).className=i?\"CodeMirror-dialog CodeMirror-dialog-bottom\":\"CodeMirror-dialog CodeMirror-dialog-top\",\"string\"==typeof n?r.innerHTML=n:r.appendChild(n),e.addClass(o,\"dialog-opened\"),r}function n(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}e.defineExtension(\"openDialog\",function(i,r,o){o||(o={}),n(this,null);var a=t(this,i,o.bottom),s=!1,l=this;function u(t){if(\"string\"==typeof t)h.value=t;else{if(s)return;s=!0,e.rmClass(a.parentNode,\"dialog-opened\"),a.parentNode.removeChild(a),l.focus(),o.onClose&&o.onClose(a)}}var c,h=a.getElementsByTagName(\"input\")[0];return h?(h.focus(),o.value&&(h.value=o.value,!1!==o.selectValueOnOpen&&h.select()),o.onInput&&e.on(h,\"input\",function(e){o.onInput(e,h.value,u)}),o.onKeyUp&&e.on(h,\"keyup\",function(e){o.onKeyUp(e,h.value,u)}),e.on(h,\"keydown\",function(t){o&&o.onKeyDown&&o.onKeyDown(t,h.value,u)||((27==t.keyCode||!1!==o.closeOnEnter&&13==t.keyCode)&&(h.blur(),e.e_stop(t),u()),13==t.keyCode&&r(h.value,t))}),!1!==o.closeOnBlur&&e.on(a,\"focusout\",function(e){null!==e.relatedTarget&&u()})):(c=a.getElementsByTagName(\"button\")[0])&&(e.on(c,\"click\",function(){u(),l.focus()}),!1!==o.closeOnBlur&&e.on(c,\"blur\",u),c.focus()),u}),e.defineExtension(\"openConfirm\",function(i,r,o){n(this,null);var a=t(this,i,o&&o.bottom),s=a.getElementsByTagName(\"button\"),l=!1,u=this,c=1;function h(){l||(l=!0,e.rmClass(a.parentNode,\"dialog-opened\"),a.parentNode.removeChild(a),u.focus())}s[0].focus();for(var d=0;d<s.length;++d){var f=s[d];!function(t){e.on(f,\"click\",function(n){e.e_preventDefault(n),h(),t&&t(u)})}(r[d]),e.on(f,\"blur\",function(){--c,setTimeout(function(){c<=0&&h()},200)}),e.on(f,\"focus\",function(){++c})}}),e.defineExtension(\"openNotification\",function(i,r){n(this,u);var o,a=t(this,i,r&&r.bottom),s=!1,l=r&&void 0!==r.duration?r.duration:5e3;function u(){s||(s=!0,clearTimeout(o),e.rmClass(a.parentNode,\"dialog-opened\"),a.parentNode.removeChild(a))}return e.on(a,\"click\",function(t){e.e_preventDefault(t),u()}),l&&(o=setTimeout(u,l)),u})})(n(\"8U58\"))},Rrel:function(e,t,n){var i=n(\"TcQ7\"),r=n(\"n0T6\").f,o={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&\"[object Window]\"==o.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(i(e))}},Rtf0:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=i.each,o=i.filter,a=i.map,s=i.isArray,l=i.indexOf,u=i.isObject,c=i.isString,h=i.createHashMap,d=i.assert,f=i.clone,p=i.merge,g=i.extend,m=i.mixin,v=n(\"vXqC\"),y=n(\"Pdtn\"),b=n(\"Y5nL\"),x=n(\"u820\"),_=n(\"MyoG\"),w=n(\"kdOt\").resetSourceDefaulter,C=\"\\0_ec_inner\",S=y.extend({init:function(e,t,n,i){n=n||{},this.option=null,this._theme=new y(n),this._optionManager=i},setOption:function(e,t){d(!(C in e),\"please use chart.getOption()\"),this._optionManager.setOption(e,t),this.resetOption(null)},resetOption:function(e){var t=!1,n=this._optionManager;if(!e||\"recreate\"===e){var i=n.mountOption(\"recreate\"===e);this.option&&\"recreate\"!==e?(this.restoreData(),this.mergeOption(i)):function(e){e=e,this.option={},this.option[C]=1,this._componentsMap=h({series:[]}),this._seriesIndices,this._seriesIndicesMap,t=e,n=this._theme.option,i=t.color&&!t.colorLayer,r(n,function(e,n){\"colorLayer\"===n&&i||b.hasClass(n)||(\"object\"==typeof e?t[n]=t[n]?p(t[n],e,!1):f(e):null==t[n]&&(t[n]=e))}),p(e,x,!1),this.mergeOption(e);var t,n,i}.call(this,i),t=!0}if(\"timeline\"!==e&&\"media\"!==e||this.restoreData(),!e||\"recreate\"===e||\"timeline\"===e){var o=n.getTimelineOption(this);o&&(this.mergeOption(o),t=!0)}if(!e||\"recreate\"===e||\"media\"===e){var a=n.getMediaOption(this,this._api);a.length&&r(a,function(e){this.mergeOption(e,t=!0)},this)}return t},mergeOption:function(e){var t=this.option,n=this._componentsMap,i=[];w(this),r(e,function(e,n){null!=e&&(b.hasClass(n)?n&&i.push(n):t[n]=null==t[n]?f(e):p(t[n],e,!0))}),b.topologicalTravel(i,b.getAllClassMainTypes(),function(i,o){var a=v.normalizeToArray(e[i]),l=v.mappingToExists(n.get(i),a);v.makeIdAndName(l),r(l,function(e,t){var n=e.option;u(n)&&(e.keyInfo.mainType=i,e.keyInfo.subType=function(e,t,n){return t.type?t.type:n?n.subType:b.determineSubType(e,t)}(i,n,e.exist))});var c=function(e,t){s(t)||(t=t?[t]:[]);var n={};return r(t,function(t){n[t]=(e.get(t)||[]).slice()}),n}(n,o);t[i]=[],n.set(i,[]),r(l,function(e,r){var o=e.exist,a=e.option;if(d(u(a)||o,\"Empty component definition\"),a){var s=b.getClass(i,e.keyInfo.subType,!0);if(o&&o.constructor===s)o.name=e.keyInfo.name,o.mergeOption(a,this),o.optionUpdated(a,!1);else{var l=g({dependentModels:c,componentIndex:r},e.keyInfo);o=new s(a,this,this,l),g(o,l),o.init(a,this,this,l),o.optionUpdated(null,!0)}}else o.mergeOption({},this),o.optionUpdated({},!1);n.get(i)[r]=o,t[i][r]=o.option},this),\"series\"===i&&k(this,n.get(\"series\"))},this),this._seriesIndicesMap=h(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var e=f(this.option);return r(e,function(t,n){if(b.hasClass(n)){for(var i=(t=v.normalizeToArray(t)).length-1;i>=0;i--)v.isIdInner(t[i])&&t.splice(i,1);e[n]=t}}),delete e[C],e},getTheme:function(){return this._theme},getComponent:function(e,t){var n=this._componentsMap.get(e);if(n)return n[t||0]},queryComponents:function(e){var t=e.mainType;if(!t)return[];var n,i=e.index,r=e.id,u=e.name,c=this._componentsMap.get(t);if(!c||!c.length)return[];if(null!=i)s(i)||(i=[i]),n=o(a(i,function(e){return c[e]}),function(e){return!!e});else if(null!=r){var h=s(r);n=o(c,function(e){return h&&l(r,e.id)>=0||!h&&e.id===r})}else if(null!=u){var d=s(u);n=o(c,function(e){return d&&l(u,e.name)>=0||!d&&e.name===u})}else n=c.slice();return T(n,e)},findComponents:function(e){var t,n,i,r,a,s=e.query,l=e.mainType,u=(n=l+\"Index\",i=l+\"Id\",r=l+\"Name\",!(t=s)||null==t[n]&&null==t[i]&&null==t[r]?null:{mainType:l,index:t[n],id:t[i],name:t[r]}),c=u?this.queryComponents(u):this._componentsMap.get(l);return a=T(c,e),e.filter?o(a,e.filter):a},eachComponent:function(e,t,n){var i=this._componentsMap;if(\"function\"==typeof e)n=t,t=e,i.each(function(e,i){r(e,function(e,r){t.call(n,i,e,r)})});else if(c(e))r(i.get(e),t,n);else if(u(e)){var o=this.findComponents(e);r(o,t,n)}},getSeriesByName:function(e){var t=this._componentsMap.get(\"series\");return o(t,function(t){return t.name===e})},getSeriesByIndex:function(e){return this._componentsMap.get(\"series\")[e]},getSeriesByType:function(e){var t=this._componentsMap.get(\"series\");return o(t,function(t){return t.subType===e})},getSeries:function(){return this._componentsMap.get(\"series\").slice()},getSeriesCount:function(){return this._componentsMap.get(\"series\").length},eachSeries:function(e,t){r(this._seriesIndices,function(n){var i=this._componentsMap.get(\"series\")[n];e.call(t,i,n)},this)},eachRawSeries:function(e,t){r(this._componentsMap.get(\"series\"),e,t)},eachSeriesByType:function(e,t,n){r(this._seriesIndices,function(i){var r=this._componentsMap.get(\"series\")[i];r.subType===e&&t.call(n,r,i)},this)},eachRawSeriesByType:function(e,t,n){return r(this.getSeriesByType(e),t,n)},isSeriesFiltered:function(e){return null==this._seriesIndicesMap.get(e.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(e,t){k(this,o(this._componentsMap.get(\"series\"),e,t))},restoreData:function(e){var t=this._componentsMap;k(this,t.get(\"series\"));var n=[];t.each(function(e,t){n.push(t)}),b.topologicalTravel(n,b.getAllClassMainTypes(),function(n,i){r(t.get(n),function(t){(\"series\"!==n||!function(e,t){if(t){var n=t.seiresIndex,i=t.seriesId,r=t.seriesName;return null!=n&&e.componentIndex!==n||null!=i&&e.id!==i||null!=r&&e.name!==r}}(t,e))&&t.restoreData()})})}});function k(e,t){e._seriesIndicesMap=h(e._seriesIndices=a(t,function(e){return e.componentIndex})||[])}function T(e,t){return t.hasOwnProperty(\"subType\")?o(e,function(e){return e.subType===t.subType}):e}m(S,_);var M=S;e.exports=M},\"S+iL\":function(e,t,n){var i=n(\"Icdr\");i.registerAction({type:\"brush\",event:\"brush\"},function(e,t){t.eachComponent({mainType:\"brush\",query:e},function(t){t.setAreas(e.areas)})}),i.registerAction({type:\"brushSelect\",event:\"brushSelected\",update:\"none\"},function(){}),i.registerAction({type:\"brushEnd\",event:\"brushEnd\",update:\"none\"},function(){})},S82l:function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},\"SMB/\":function(e,t,n){var i=n(\"Pmfi\");function r(e,t){i.call(this,e,t,[\"filter\"],\"__filter_in_use__\",\"_shadowDom\")}function o(e){return e&&(e.shadowBlur||e.shadowOffsetX||e.shadowOffsetY||e.textShadowBlur||e.textShadowOffsetX||e.textShadowOffsetY)}n(\"/gxq\").inherits(r,i),r.prototype.addWithoutUpdate=function(e,t){if(t&&o(t.style)){var n;if(t._shadowDom)n=t._shadowDom,this.getDefs(!0).contains(t._shadowDom)||this.addDom(n);else n=this.add(t);this.markUsed(t);var i=n.getAttribute(\"id\");e.style.filter=\"url(#\"+i+\")\"}},r.prototype.add=function(e){var t=this.createElement(\"filter\");return e._shadowDomId=e._shadowDomId||this.nextId++,t.setAttribute(\"id\",\"zr\"+this._zrId+\"-shadow-\"+e._shadowDomId),this.updateDom(e,t),this.addDom(t),t},r.prototype.update=function(e,t){if(o(t.style)){var n=this;i.prototype.update.call(this,t,function(){n.updateDom(t,t._shadowDom)})}else this.remove(e,t)},r.prototype.remove=function(e,t){null!=t._shadowDomId&&(this.removeDom(e),e.style.filter=\"\")},r.prototype.updateDom=function(e,t){var n=t.getElementsByTagName(\"feDropShadow\");n=0===n.length?this.createElement(\"feDropShadow\"):n[0];var i,r,o,a,s=e.style,l=e.scale&&e.scale[0]||1,u=e.scale&&e.scale[1]||1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)i=s.shadowOffsetX||0,r=s.shadowOffsetY||0,o=s.shadowBlur,a=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(t,s);i=s.textShadowOffsetX||0,r=s.textShadowOffsetY||0,o=s.textShadowBlur,a=s.textShadowColor}n.setAttribute(\"dx\",i/l),n.setAttribute(\"dy\",r/u),n.setAttribute(\"flood-color\",a);var c=o/2/l+\" \"+o/2/u;n.setAttribute(\"stdDeviation\",c),t.setAttribute(\"x\",\"-100%\"),t.setAttribute(\"y\",\"-100%\"),t.setAttribute(\"width\",Math.ceil(o/2*200)+\"%\"),t.setAttribute(\"height\",Math.ceil(o/2*200)+\"%\"),t.appendChild(n),e._shadowDom=t},r.prototype.markUsed=function(e){e._shadowDom&&i.prototype.markUsed.call(this,e._shadowDom)};var a=r;e.exports=a},STLj:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=53)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},3:function(e,t){e.exports=n(\"ylDJ\")},34:function(e,t,n){\"use strict\";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-select-dropdown__item\",class:{selected:e.itemSelected,\"is-disabled\":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t(\"default\",[n(\"span\",[e._v(e._s(e.currentLabel))])])],2)};i._withStripped=!0;var r=n(4),o=n.n(r),a=n(3),s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},l={mixins:[o.a],name:\"ElOption\",componentName:\"ElOption\",inject:[\"select\"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return\"[object object]\"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?\"\":this.value)},currentValue:function(){return this.value||this.label||\"\"},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch(\"ElSelect\",\"setSelected\")},value:function(e,t){var n=this.select,i=n.remote,r=n.valueKey;if(!this.created&&!i){if(r&&\"object\"===(void 0===e?\"undefined\":s(e))&&\"object\"===(void 0===t?\"undefined\":s(t))&&e[r]===t[r])return;this.dispatch(\"ElSelect\",\"setSelected\")}}},methods:{isEqual:function(e,t){if(this.isObject){var n=this.select.valueKey;return Object(a.getValueByPath)(e,n)===Object(a.getValueByPath)(t,n)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var n=this.select.valueKey;return e&&e.some(function(e){return Object(a.getValueByPath)(e,n)===Object(a.getValueByPath)(t,n)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch(\"ElSelect\",\"handleOptionClick\",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),\"i\").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on(\"queryChange\",this.queryChange),this.$on(\"handleGroupDisabled\",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,n=e.multiple?t:[t],i=this.select.cachedOptions.indexOf(this),r=n.indexOf(this);i>-1&&r<0&&this.select.cachedOptions.splice(i,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=n(0),c=Object(u.a)(l,i,[],!1,null,null,null);c.options.__file=\"packages/select/src/option.vue\";t.a=c.exports},4:function(e,t){e.exports=n(\"fPll\")},53:function(e,t,n){\"use strict\";n.r(t);var i=n(34);i.a.install=function(e){e.component(i.a.name,i.a)},t.default=i.a}})},SXzR:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=74)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},2:function(e,t){e.exports=n(\"2kvA\")},3:function(e,t){e.exports=n(\"ylDJ\")},5:function(e,t){e.exports=n(\"fKx3\")},7:function(e,t){e.exports=n(\"7+uW\")},74:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"span\",[n(\"transition\",{attrs:{name:e.transition},on:{\"after-enter\":e.handleAfterEnter,\"after-leave\":e.handleAfterLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.disabled&&e.showPopper,expression:\"!disabled && showPopper\"}],ref:\"popper\",staticClass:\"el-popover el-popper\",class:[e.popperClass,e.content&&\"el-popover--plain\"],style:{width:e.width+\"px\"},attrs:{role:\"tooltip\",id:e.tooltipId,\"aria-hidden\":e.disabled||!e.showPopper?\"true\":\"false\"}},[e.title?n(\"div\",{staticClass:\"el-popover__title\",domProps:{textContent:e._s(e.title)}}):e._e(),e._t(\"default\",[e._v(e._s(e.content))])],2)]),e._t(\"reference\")],2)};i._withStripped=!0;var r=n(5),o=n.n(r),a=n(2),s=n(3),l={name:\"ElPopover\",mixins:[o.a],props:{trigger:{type:String,default:\"click\",validator:function(e){return[\"click\",\"focus\",\"hover\",\"manual\"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:\"fade-in-linear\"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return\"el-popover-\"+Object(s.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit(\"show\"):this.$emit(\"hide\"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(a.addClass)(t,\"el-popover__reference\"),t.setAttribute(\"aria-describedby\",this.tooltipId),t.setAttribute(\"tabindex\",this.tabindex),n.setAttribute(\"tabindex\",0),\"click\"!==this.trigger&&(Object(a.on)(t,\"focusin\",function(){e.handleFocus();var n=t.__vue__;n&&\"function\"==typeof n.focus&&n.focus()}),Object(a.on)(n,\"focusin\",this.handleFocus),Object(a.on)(t,\"focusout\",this.handleBlur),Object(a.on)(n,\"focusout\",this.handleBlur)),Object(a.on)(t,\"keydown\",this.handleKeydown),Object(a.on)(t,\"click\",this.handleClick)),\"click\"===this.trigger?(Object(a.on)(t,\"click\",this.doToggle),Object(a.on)(document,\"click\",this.handleDocumentClick)):\"hover\"===this.trigger?(Object(a.on)(t,\"mouseenter\",this.handleMouseEnter),Object(a.on)(n,\"mouseenter\",this.handleMouseEnter),Object(a.on)(t,\"mouseleave\",this.handleMouseLeave),Object(a.on)(n,\"mouseleave\",this.handleMouseLeave)):\"focus\"===this.trigger&&(this.tabindex<0&&console.warn(\"[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key\"),t.querySelector(\"input, textarea\")?(Object(a.on)(t,\"focusin\",this.doShow),Object(a.on)(t,\"focusout\",this.doClose)):(Object(a.on)(t,\"mousedown\",this.doShow),Object(a.on)(t,\"mouseup\",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(a.addClass)(this.referenceElm,\"focusing\"),\"click\"!==this.trigger&&\"focus\"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(a.removeClass)(this.referenceElm,\"focusing\")},handleBlur:function(){Object(a.removeClass)(this.referenceElm,\"focusing\"),\"click\"!==this.trigger&&\"focus\"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&\"manual\"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout(function(){e.showPopper=!1},this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&n&&!n.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit(\"after-enter\")},handleAfterLeave:function(){this.$emit(\"after-leave\"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(a.off)(e,\"click\",this.doToggle),Object(a.off)(e,\"mouseup\",this.doClose),Object(a.off)(e,\"mousedown\",this.doShow),Object(a.off)(e,\"focusin\",this.doShow),Object(a.off)(e,\"focusout\",this.doClose),Object(a.off)(e,\"mousedown\",this.doShow),Object(a.off)(e,\"mouseup\",this.doClose),Object(a.off)(e,\"mouseleave\",this.handleMouseLeave),Object(a.off)(e,\"mouseenter\",this.handleMouseEnter),Object(a.off)(document,\"click\",this.handleDocumentClick)}},u=n(0),c=Object(u.a)(l,i,[],!1,null,null,null);c.options.__file=\"packages/popover/src/main.vue\";var h=c.exports,d=function(e,t,n){var i=t.expression?t.value:t.arg,r=n.context.$refs[i];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},f={bind:function(e,t,n){d(e,t,n)},inserted:function(e,t,n){d(e,t,n)}},p=n(7);n.n(p).a.directive(\"popover\",f),h.install=function(e){e.directive(\"popover\",f),e.component(h.name,h)},h.directive=f;t.default=h}})},SZjP:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=i.extendComponentView({type:\"marker\",init:function(){this.markerGroupMap=r.createHashMap()},render:function(e,t,n){var i=this.markerGroupMap;i.each(function(e){e.__keep=!1});var r=this.type+\"Model\";t.eachSeries(function(e){var i=e[r];i&&this.renderSeries(e,i,t,n)},this),i.each(function(e){!e.__keep&&this.group.remove(e.group)},this)},renderSeries:function(){}});e.exports=o},SfB7:function(e,t,n){e.exports=!n(\"+E39\")&&!n(\"S82l\")(function(){return 7!=Object.defineProperty(n(\"ON07\")(\"div\"),\"a\",{get:function(){return 7}}).a})},SiPa:function(e,t,n){var i=n(\"/gxq\"),r=n(\"3h1/\"),o=n(\"vXqC\").makeInner,a=n(\"3yJd\"),s=a.makeLabelFormatter,l=a.getOptionCategoryInterval,u=a.shouldShowAllLabels,c=o();function h(e,t){var n,r=d(e,\"labels\"),o=l(t),a=f(r,o);return a||p(r,o,{labels:i.isFunction(o)?m(e,o):g(e,n=\"auto\"===o?function(e){var t=c(e).autoInterval;return null!=t?t:c(e).autoInterval=e.calculateCategoryInterval()}(e):o),labelCategoryInterval:n})}function d(e,t){return c(e)[t]||(c(e)[t]=[])}function f(e,t){for(var n=0;n<e.length;n++)if(e[n].key===t)return e[n].value}function p(e,t,n){return e.push({key:t,value:n}),n}function g(e,t,n){var i=s(e),r=e.scale,o=r.getExtent(),a=e.getLabelModel(),l=[],c=Math.max((t||0)+1,1),h=o[0],d=r.count();0!==h&&c>1&&d/c>2&&(h=Math.round(Math.ceil(h/c)*c));var f=u(e),p=a.get(\"showMinLabel\")||f,g=a.get(\"showMaxLabel\")||f;p&&h!==o[0]&&v(o[0]);for(var m=h;m<=o[1];m+=c)v(m);function v(e){l.push(n?e:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:e})}return g&&m-c!==o[1]&&v(o[1]),l}function m(e,t,n){var r=e.scale,o=s(e),a=[];return i.each(r.getTicks(),function(e){var i=r.getLabel(e);t(e,i)&&a.push(n?e:{formattedLabel:o(e),rawLabel:i,tickValue:e})}),a}t.createAxisLabels=function(e){return\"category\"===e.type?function(e){var t=e.getLabelModel(),n=h(e,t);return!t.get(\"show\")||e.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(e):function(e){var t=e.scale.getTicks(),n=s(e);return{labels:i.map(t,function(t,i){return{formattedLabel:n(t,i),rawLabel:e.scale.getLabel(t),tickValue:t}})}}(e)},t.createAxisTicks=function(e,t){return\"category\"===e.type?function(e,t){var n,r,o=d(e,\"ticks\"),a=l(t),s=f(o,a);if(s)return s;if(t.get(\"show\")&&!e.scale.isBlank()||(n=[]),i.isFunction(a))n=m(e,a,!0);else if(\"auto\"===a){var u=h(e,e.getLabelModel());r=u.labelCategoryInterval,n=i.map(u.labels,function(e){return e.tickValue})}else n=g(e,r=a,!0);return p(o,a,{ticks:n,tickCategoryInterval:r})}(e,t):{ticks:e.scale.getTicks()}},t.calculateCategoryInterval=function(e){var t=function(e){var t=e.getLabelModel();return{axisRotate:e.getRotate?e.getRotate():e.isHorizontal&&!e.isHorizontal()?90:0,labelRotate:t.get(\"rotate\")||0,font:t.getFont()}}(e),n=s(e),i=(t.axisRotate-t.labelRotate)/180*Math.PI,o=e.scale,a=o.getExtent(),l=o.count();if(a[1]-a[0]<1)return 0;var u=1;l>40&&(u=Math.max(1,Math.floor(l/40)));for(var h=a[0],d=e.dataToCoord(h+1)-e.dataToCoord(h),f=Math.abs(d*Math.cos(i)),p=Math.abs(d*Math.sin(i)),g=0,m=0;h<=a[1];h+=u){var v,y,b=r.getBoundingRect(n(h),t.font,\"center\",\"top\");v=1.3*b.width,y=1.3*b.height,g=Math.max(g,v,7),m=Math.max(m,y,7)}var x=g/f,_=m/p;isNaN(x)&&(x=1/0),isNaN(_)&&(_=1/0);var w=Math.max(0,Math.floor(Math.min(x,_))),C=c(e.model),S=e.getExtent(),k=C.lastAutoInterval,T=C.lastTickCount;return null!=k&&null!=T&&Math.abs(k-w)<=1&&Math.abs(T-l)<=1&&k>w&&C.axisExtend0===S[0]&&C.axisExtend1===S[1]?w=k:(C.lastTickCount=l,C.lastAutoInterval=w,C.axisExtend0=S[0],C.axisExtend1=S[1]),w}},SlE6:function(e,t,n){var i=n(\"tzpD\"),r=i.prepareDataCoordInfo,o=i.getStackedOnPoint;e.exports=function(e,t,n,i,a,s,l,u){for(var c=function(e,t){var n=[];return t.diff(e).add(function(e){n.push({cmd:\"+\",idx:e})}).update(function(e,t){n.push({cmd:\"=\",idx:t,idx1:e})}).remove(function(e){n.push({cmd:\"-\",idx:e})}).execute(),n}(e,t),h=[],d=[],f=[],p=[],g=[],m=[],v=[],y=r(a,t,l),b=r(s,e,u),x=0;x<c.length;x++){var _=c[x],w=!0;switch(_.cmd){case\"=\":var C=e.getItemLayout(_.idx),S=t.getItemLayout(_.idx1);(isNaN(C[0])||isNaN(C[1]))&&(C=S.slice()),h.push(C),d.push(S),f.push(n[_.idx]),p.push(i[_.idx1]),v.push(t.getRawIndex(_.idx1));break;case\"+\":var k=_.idx;h.push(a.dataToPoint([t.get(y.dataDimsForPoint[0],k),t.get(y.dataDimsForPoint[1],k)])),d.push(t.getItemLayout(k).slice()),f.push(o(y,a,t,k)),p.push(i[k]),v.push(t.getRawIndex(k));break;case\"-\":k=_.idx;var T=e.getRawIndex(k);T!==k?(h.push(e.getItemLayout(k)),d.push(s.dataToPoint([e.get(b.dataDimsForPoint[0],k),e.get(b.dataDimsForPoint[1],k)])),f.push(n[k]),p.push(o(b,s,e,k)),v.push(T)):w=!1}w&&(g.push(_),m.push(m.length))}m.sort(function(e,t){return v[e]-v[t]});var M=[],D=[],A=[],I=[],O=[];for(x=0;x<m.length;x++)k=m[x],M[x]=h[k],D[x]=d[k],A[x]=f[k],I[x]=p[k],O[x]=g[k];return{current:M,next:D,stackedOnCurrent:A,stackedOnNext:I,status:O}}},Sm9T:function(e,t){t.buildPath=function(e,t){var n,i,r,o,a,s=t.x,l=t.y,u=t.width,c=t.height,h=t.r;u<0&&(s+=u,u=-u),c<0&&(l+=c,c=-c),\"number\"==typeof h?n=i=r=o=h:h instanceof Array?1===h.length?n=i=r=o=h[0]:2===h.length?(n=r=h[0],i=o=h[1]):3===h.length?(n=h[0],i=o=h[1],r=h[2]):(n=h[0],i=h[1],r=h[2],o=h[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>c&&(i*=c/(a=i+r),r*=c/a),n+o>c&&(n*=c/(a=n+o),o*=c/a),e.moveTo(s+n,l),e.lineTo(s+u-i,l),0!==i&&e.arc(s+u-i,l+i,i,-Math.PI/2,0),e.lineTo(s+u,l+c-r),0!==r&&e.arc(s+u-r,l+c-r,r,0,Math.PI/2),e.lineTo(s+o,l+c),0!==o&&e.arc(s+o,l+c-o,o,Math.PI/2,Math.PI),e.lineTo(s,l+n),0!==n&&e.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}},SvnF:function(e,t,n){\"use strict\";t.__esModule=!0;var i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.default=function(e){return function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];return 1===n.length&&\"object\"===i(n[0])&&(n=n[0]),n&&n.hasOwnProperty||(n={}),e.replace(o,function(t,i,o,a){var s=void 0;return\"{\"===e[a-1]&&\"}\"===e[a+t.length]?o:null===(s=(0,r.hasOwn)(n,o)?n[o]:null)||void 0===s?\"\":s})}};var r=n(\"ylDJ\"),o=/(%|)\\{([0-9a-zA-Z_]+)\\}/g},T6W2:function(e,t){e.exports=function(e){var t=e.findComponents({mainType:\"legend\"});t&&t.length&&e.eachSeriesByType(\"graph\",function(e){var n=e.getCategoriesData(),i=e.getGraph().data,r=n.mapArray(n.getName);i.filterSelf(function(e){var n=i.getItemModel(e).getShallow(\"category\");if(null!=n){\"number\"==typeof n&&(n=r[n]);for(var o=0;o<t.length;o++)if(!t[o].isSelected(n))return!1}return!0})},this)}},TCXJ:function(e,t,n){var i=n(\"Icdr\").extendComponentModel({type:\"axisPointer\",coordSysAxesInfo:null,defaultOption:{show:\"auto\",triggerOn:null,zlevel:0,z:50,type:\"line\",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:\"#aaa\",width:1,type:\"solid\"},shadowStyle:{color:\"rgba(150,150,150,0.3)\"},label:{show:!0,formatter:null,precision:\"auto\",margin:3,color:\"#fff\",padding:[5,7,5,7],backgroundColor:\"auto\",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:\"#aaa\"},handle:{show:!1,icon:\"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z\",size:45,margin:50,color:\"#333\",shadowBlur:3,shadowColor:\"#aaa\",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});e.exports=i},\"TDz/\":function(e,t,n){var i=n(\"Pmfi\"),r=n(\"/gxq\"),o=n(\"dOVI\");function a(e,t){i.call(this,e,t,\"clipPath\",\"__clippath_in_use__\")}r.inherits(a,i),a.prototype.update=function(e){var t=this.getSvgElement(e);t&&this.updateDom(t,e.__clipPaths,!1);var n=this.getTextSvgElement(e);n&&this.updateDom(n,e.__clipPaths,!0),this.markUsed(e)},a.prototype.updateDom=function(e,t,n){if(t&&t.length>0){var i,r,a=this.getDefs(!0),s=t[0],l=n?\"_textDom\":\"_dom\";s[l]?(r=s[l].getAttribute(\"id\"),i=s[l],a.contains(i)||a.appendChild(i)):(r=\"zr\"+this._zrId+\"-clip-\"+this.nextId,++this.nextId,(i=this.createElement(\"clipPath\")).setAttribute(\"id\",r),a.appendChild(i),s[l]=i);var u=this.getSvgProxy(s);if(s.transform&&s.parent.invTransform&&!n){var c=Array.prototype.slice.call(s.transform);o.mul(s.transform,s.parent.invTransform,s.transform),u.brush(s),s.transform=c}else u.brush(s);var h=this.getSvgElement(s);i.innerHTML=\"\",i.appendChild(h.cloneNode()),e.setAttribute(\"clip-path\",\"url(#\"+r+\")\"),t.length>1&&this.updateDom(i,t.slice(1),n)}else e&&e.setAttribute(\"clip-path\",\"none\")},a.prototype.markUsed=function(e){var t=this;e.__clipPaths&&r.each(e.__clipPaths,function(e){e._dom&&i.prototype.markUsed.call(t,e._dom),e._textDom&&i.prototype.markUsed.call(t,e._textDom)})};var s=a;e.exports=s},THjC:function(e,t,n){(function(e){\"use strict\";function t(t,n,r,o){if(r&&r.call){var a=r;r=null}else a=i(t,r,\"rangeFinder\");\"number\"==typeof n&&(n=e.Pos(n,0));var s=i(t,r,\"minFoldSize\");function l(e){var i=a(t,n);if(!i||i.to.line-i.from.line<s)return null;for(var r=t.findMarksAt(i.from),l=0;l<r.length;++l)if(r[l].__isFold&&\"fold\"!==o){if(!e)return null;i.cleared=!0,r[l].clear()}return i}var u=l(!0);if(i(t,r,\"scanUp\"))for(;!u&&n.line>t.firstLine();)n=e.Pos(n.line-1,0),u=l(!1);if(u&&!u.cleared&&\"unfold\"!==o){var c=function(e,t,n){var r=i(e,t,\"widget\");\"function\"==typeof r&&(r=r(n.from,n.to));if(\"string\"==typeof r){var o=document.createTextNode(r);(r=document.createElement(\"span\")).appendChild(o),r.className=\"CodeMirror-foldmarker\"}else r&&(r=r.cloneNode(!0));return r}(t,r,u);e.on(c,\"mousedown\",function(t){h.clear(),e.e_preventDefault(t)});var h=t.markText(u.from,u.to,{replacedWith:c,clearOnEnter:i(t,r,\"clearOnEnter\"),__isFold:!0});h.on(\"clear\",function(n,i){e.signal(t,\"unfold\",t,n,i)}),e.signal(t,\"fold\",t,u.from,u.to)}}e.newFoldFunction=function(e,n){return function(i,r){t(i,r,{rangeFinder:e,widget:n})}},e.defineExtension(\"foldCode\",function(e,n,i){t(this,e,n,i)}),e.defineExtension(\"isFolded\",function(e){for(var t=this.findMarksAt(e),n=0;n<t.length;++n)if(t[n].__isFold)return!0}),e.commands.toggleFold=function(e){e.foldCode(e.getCursor())},e.commands.fold=function(e){e.foldCode(e.getCursor(),null,\"fold\")},e.commands.unfold=function(e){e.foldCode(e.getCursor(),null,\"unfold\")},e.commands.foldAll=function(t){t.operation(function(){for(var n=t.firstLine(),i=t.lastLine();n<=i;n++)t.foldCode(e.Pos(n,0),null,\"fold\")})},e.commands.unfoldAll=function(t){t.operation(function(){for(var n=t.firstLine(),i=t.lastLine();n<=i;n++)t.foldCode(e.Pos(n,0),null,\"unfold\")})},e.registerHelper(\"fold\",\"combine\",function(){var e=Array.prototype.slice.call(arguments,0);return function(t,n){for(var i=0;i<e.length;++i){var r=e[i](t,n);if(r)return r}}}),e.registerHelper(\"fold\",\"auto\",function(e,t){for(var n=e.getHelpers(t,\"fold\"),i=0;i<n.length;i++){var r=n[i](e,t);if(r)return r}});var n={rangeFinder:e.fold.auto,widget:\"↔\",minFoldSize:0,scanUp:!1,clearOnEnter:!0};function i(e,t,i){if(t&&void 0!==t[i])return t[i];var r=e.options.foldOptions;return r&&void 0!==r[i]?r[i]:n[i]}e.defineOption(\"foldOptions\",null),e.defineExtension(\"foldOption\",function(e,t){return i(this,e,t)})})(n(\"8U58\"))},TIfe:function(e,t){function n(){this.on(\"mousedown\",this._dragStart,this),this.on(\"mousemove\",this._drag,this),this.on(\"mouseup\",this._dragEnd,this)}function i(e,t){return{target:e,topTarget:t&&t.topTarget}}n.prototype={constructor:n,_dragStart:function(e){for(var t=e.target;t&&!t.draggable;)t=t.parent;t&&(this._draggingTarget=t,t.dragging=!0,this._x=e.offsetX,this._y=e.offsetY,this.dispatchToElement(i(t,e),\"dragstart\",e.event))},_drag:function(e){var t=this._draggingTarget;if(t){var n=e.offsetX,r=e.offsetY,o=n-this._x,a=r-this._y;this._x=n,this._y=r,t.drift(o,a,e),this.dispatchToElement(i(t,e),\"drag\",e.event);var s=this.findHover(n,r,t).target,l=this._dropTarget;this._dropTarget=s,t!==s&&(l&&s!==l&&this.dispatchToElement(i(l,e),\"dragleave\",e.event),s&&s!==l&&this.dispatchToElement(i(s,e),\"dragenter\",e.event))}},_dragEnd:function(e){var t=this._draggingTarget;t&&(t.dragging=!1),this.dispatchToElement(i(t,e),\"dragend\",e.event),this._dropTarget&&this.dispatchToElement(i(this._dropTarget,e),\"drop\",e.event),this._draggingTarget=null,this._dropTarget=null}};var r=n;e.exports=r},TTCf:function(e,t,n){var i=n(\"Mlni\").extend({type:\"markLine\",defaultOption:{zlevel:0,z:5,symbol:[\"circle\",\"arrow\"],symbolSize:[8,16],precision:2,tooltip:{trigger:\"item\"},label:{show:!0,position:\"end\",distance:5},lineStyle:{type:\"dashed\"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:\"linear\"}});e.exports=i},TXKS:function(e,t){function n(e){return e instanceof Array||(e=[e,e]),e}e.exports=function(e){e.eachSeriesByType(\"graph\",function(e){var t=e.getGraph(),i=e.getEdgeData(),r=n(e.get(\"edgeSymbol\")),o=n(e.get(\"edgeSymbolSize\")),a=\"lineStyle.color\".split(\".\"),s=\"lineStyle.opacity\".split(\".\");i.setVisual(\"fromSymbol\",r&&r[0]),i.setVisual(\"toSymbol\",r&&r[1]),i.setVisual(\"fromSymbolSize\",o&&o[0]),i.setVisual(\"toSymbolSize\",o&&o[1]),i.setVisual(\"color\",e.get(a)),i.setVisual(\"opacity\",e.get(s)),i.each(function(e){var r=i.getItemModel(e),o=t.getEdgeByIndex(e),l=n(r.getShallow(\"symbol\",!0)),u=n(r.getShallow(\"symbolSize\",!0)),c=r.get(a),h=r.get(s);switch(c){case\"source\":c=o.node1.getVisual(\"color\");break;case\"target\":c=o.node2.getVisual(\"color\")}l[0]&&o.setVisual(\"fromSymbol\",l[0]),l[1]&&o.setVisual(\"toSymbol\",l[1]),u[0]&&o.setVisual(\"fromSymbolSize\",u[0]),u[1]&&o.setVisual(\"toSymbolSize\",u[1]),o.setVisual(\"color\",c),o.setVisual(\"opacity\",h)})})}},TcQ7:function(e,t,n){var i=n(\"MU5D\"),r=n(\"52gC\");e.exports=function(e){return i(r(e))}},To3L:function(e,t,n){\"use strict\";var i=n(\"+E39\"),r=n(\"lktj\"),o=n(\"1kS7\"),a=n(\"NpIQ\"),s=n(\"sB3e\"),l=n(\"MU5D\"),u=Object.assign;e.exports=!u||n(\"S82l\")(function(){var e={},t={},n=Symbol(),i=\"abcdefghijklmnopqrst\";return e[n]=7,i.split(\"\").forEach(function(e){t[e]=e}),7!=u({},e)[n]||Object.keys(u({},t)).join(\"\")!=i})?function(e,t){for(var n=s(e),u=arguments.length,c=1,h=o.f,d=a.f;u>c;)for(var f,p=l(arguments[c++]),g=h?r(p).concat(h(p)):r(p),m=g.length,v=0;m>v;)f=g[v++],i&&!d.call(p,f)||(n[f]=p[f]);return n}:u},U3HU:function(e,t,n){(function(e){\"use strict\";function t(t,n){var i=t.getLine(n),r=i.search(/\\S/);return-1==r||/\\bcomment\\b/.test(t.getTokenTypeAt(e.Pos(n,r+1)))?-1:e.countColumn(i,null,t.getOption(\"tabSize\"))}e.registerHelper(\"fold\",\"indent\",function(n,i){var r=t(n,i.line);if(!(r<0)){for(var o=null,a=i.line+1,s=n.lastLine();a<=s;++a){var l=t(n,a);if(-1==l);else{if(!(l>r))break;o=a}}return o?{from:e.Pos(i.line,n.getLine(i.line).length),to:e.Pos(o,n.getLine(o).length)}:void 0}})})(n(\"8U58\"))},UAiw:function(e,t,n){var i=n(\"qjvV\");t.Dispatcher=i;var r=n(\"YNzw\"),o=n(\"C3Vi\"),a=o.isCanvasEl,s=o.transformCoordWithViewport,l=\"undefined\"!=typeof window&&!!window.addEventListener,u=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,c=[];function h(e,t,n,i){return n=n||{},i||!r.canvasSupported?d(e,t,n):r.browser.firefox&&null!=t.layerX&&t.layerX!==t.offsetX?(n.zrX=t.layerX,n.zrY=t.layerY):null!=t.offsetX?(n.zrX=t.offsetX,n.zrY=t.offsetY):d(e,t,n),n}function d(e,t,n){if(r.domSupported&&e.getBoundingClientRect){var i=t.clientX,o=t.clientY;if(a(e)){var l=e.getBoundingClientRect();return n.zrX=i-l.left,void(n.zrY=o-l.top)}if(s(c,e,i,o))return n.zrX=c[0],void(n.zrY=c[1])}n.zrX=n.zrY=0}function f(e){return e||window.event}var p=l?function(e){e.preventDefault(),e.stopPropagation(),e.cancelBubble=!0}:function(e){e.returnValue=!1,e.cancelBubble=!0};t.clientToLocal=h,t.getNativeEvent=f,t.normalizeEvent=function(e,t,n){if(null!=(t=f(t)).zrX)return t;var i=t.type;if(i&&i.indexOf(\"touch\")>=0){var r=\"touchend\"!==i?t.targetTouches[0]:t.changedTouches[0];r&&h(e,r,t,n)}else h(e,t,t,n),t.zrDelta=t.wheelDelta?t.wheelDelta/120:-(t.detail||0)/3;var o=t.button;return null==t.which&&void 0!==o&&u.test(t.type)&&(t.which=1&o?1:2&o?3:4&o?2:0),t},t.addEventListener=function(e,t,n,i){l?e.addEventListener(t,n,i):e.attachEvent(\"on\"+t,n)},t.removeEventListener=function(e,t,n,i){l?e.removeEventListener(t,n,i):e.detachEvent(\"on\"+t,n)},t.stop=p,t.isMiddleOrRightButtonOnMouseUpDown=function(e){return 2===e.which||3===e.which},t.notLeftMouse=function(e){return e.which>1}},UOrf:function(e,t,n){var i=n(\"1Xuh\"),r=n(\"wWR3\"),o=r.parsePercent,a=r.linearMap;e.exports=function(e,t,n){e.eachSeriesByType(\"funnel\",function(e){var n=e.getData(),r=n.mapDimension(\"value\"),s=e.get(\"sort\"),l=function(e,t){return i.getLayoutRect(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}(e,t),u=function(e,t){for(var n=e.mapDimension(\"value\"),i=e.mapArray(n,function(e){return e}),r=[],o=\"ascending\"===t,a=0,s=e.count();a<s;a++)r[a]=a;return\"function\"==typeof t?r.sort(t):\"none\"!==t&&r.sort(function(e,t){return o?i[e]-i[t]:i[t]-i[e]}),r}(n,s),c=[o(e.get(\"minSize\"),l.width),o(e.get(\"maxSize\"),l.width)],h=n.getDataExtent(r),d=e.get(\"min\"),f=e.get(\"max\");null==d&&(d=Math.min(h[0],0)),null==f&&(f=h[1]);var p=e.get(\"funnelAlign\"),g=e.get(\"gap\"),m=(l.height-g*(n.count()-1))/n.count(),v=l.y,y=function(e,t){var i,o=n.get(r,e)||0,s=a(o,[d,f],c,!0);switch(p){case\"left\":i=l.x;break;case\"center\":i=l.x+(l.width-s)/2;break;case\"right\":i=l.x+l.width-s}return[[i,t],[i+s,t]]};\"ascending\"===s&&(m=-m,g=-g,v+=l.height,u=u.reverse());for(var b=0;b<u.length;b++){var x=u[b],_=u[b+1],w=n.getItemModel(x).get(\"itemStyle.height\");null==w?w=m:(w=o(w,l.height),\"ascending\"===s&&(w=-w));var C=y(x,v),S=y(_,v+w);v+=w+g,n.setItemLayout(x,{points:C.concat(S.slice().reverse())})}!function(e){e.each(function(t){var n,i,r,o,a=e.getItemModel(t),s=a.getModel(\"label\").get(\"position\"),l=a.getModel(\"labelLine\"),u=e.getItemLayout(t),c=u.points,h=\"inner\"===s||\"inside\"===s||\"center\"===s||\"insideLeft\"===s||\"insideRight\"===s;if(h)\"insideLeft\"===s?(i=(c[0][0]+c[3][0])/2+5,r=(c[0][1]+c[3][1])/2,n=\"left\"):\"insideRight\"===s?(i=(c[1][0]+c[2][0])/2-5,r=(c[1][1]+c[2][1])/2,n=\"right\"):(i=(c[0][0]+c[1][0]+c[2][0]+c[3][0])/4,r=(c[0][1]+c[1][1]+c[2][1]+c[3][1])/4,n=\"center\"),o=[[i,r],[i,r]];else{var d,f,p,g=l.get(\"length\");\"left\"===s?(d=(c[3][0]+c[0][0])/2,f=(c[3][1]+c[0][1])/2,i=(p=d-g)-5,n=\"right\"):\"right\"===s?(d=(c[1][0]+c[2][0])/2,f=(c[1][1]+c[2][1])/2,i=(p=d+g)+5,n=\"left\"):\"rightTop\"===s?(d=c[1][0],f=c[1][1],i=(p=d+g)+5,n=\"top\"):\"rightBottom\"===s?(d=c[2][0],f=c[2][1],i=(p=d+g)+5,n=\"bottom\"):\"leftTop\"===s?(d=c[0][0],f=c[1][1],i=(p=d-g)-5,n=\"right\"):\"leftBottom\"===s?(d=c[3][0],f=c[2][1],i=(p=d-g)-5,n=\"right\"):(d=(c[1][0]+c[2][0])/2,f=(c[1][1]+c[2][1])/2,i=(p=d+g)+5,n=\"left\"),o=[[d,f],[p,f]],r=f}u.label={linePoints:o,x:i,y:r,verticalAlign:\"middle\",textAlign:n,inside:h}})}(n)})}},US3d:function(e,t,n){var i=n(\"0sHC\"),r=n(\"thE4\"),o=n(\"u+XU\"),a=n(\"oBGI\"),s=i.extendShape({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(e,t){var n=t.segs,i=t.curveness;if(t.polyline)for(var r=0;r<n.length;){var o=n[r++];if(o>0){e.moveTo(n[r++],n[r++]);for(var a=1;a<o;a++)e.lineTo(n[r++],n[r++])}}else for(r=0;r<n.length;){var s=n[r++],l=n[r++],u=n[r++],c=n[r++];if(e.moveTo(s,l),i>0){var h=(s+u)/2-(l-c)*i,d=(l+c)/2-(u-s)*i;e.quadraticCurveTo(h,d,u,c)}else e.lineTo(u,c)}},findDataIndex:function(e,t){var n=this.shape,i=n.segs,r=n.curveness;if(n.polyline)for(var s=0,l=0;l<i.length;){var u=i[l++];if(u>0)for(var c=i[l++],h=i[l++],d=1;d<u;d++){var f=i[l++],p=i[l++];if(o.containStroke(c,h,f,p))return s}s++}else for(s=0,l=0;l<i.length;){c=i[l++],h=i[l++],f=i[l++],p=i[l++];if(r>0){var g=(c+f)/2-(h-p)*r,m=(h+p)/2-(f-c)*r;if(a.containStroke(c,h,g,m,f,p))return s}else if(o.containStroke(c,h,f,p))return s;s++}return-1}});function l(){this.group=new i.Group}var u=l.prototype;u.isPersistent=function(){return!this._incremental},u.updateData=function(e){this.group.removeAll();var t=new s({rectHover:!0,cursor:\"default\"});t.setShape({segs:e.getLayout(\"linesPoints\")}),this._setCommon(t,e),this.group.add(t),this._incremental=null},u.incrementalPrepareUpdate=function(e){this.group.removeAll(),this._clearIncremental(),e.count()>5e5?(this._incremental||(this._incremental=new r({silent:!0})),this.group.add(this._incremental)):this._incremental=null},u.incrementalUpdate=function(e,t){var n=new s;n.setShape({segs:t.getLayout(\"linesPoints\")}),this._setCommon(n,t,!!this._incremental),this._incremental?this._incremental.addDisplayable(n,!0):(n.rectHover=!0,n.cursor=\"default\",n.__startIndex=e.start,this.group.add(n))},u.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},u._setCommon=function(e,t,n){var i=t.hostModel;e.setShape({polyline:i.get(\"polyline\"),curveness:i.get(\"lineStyle.curveness\")}),e.useStyle(i.getModel(\"lineStyle\").getLineStyle()),e.style.strokeNoScale=!0;var r=t.getVisual(\"color\");r&&e.setStyle(\"stroke\",r),e.setStyle(\"fill\"),n||(e.seriesIndex=i.seriesIndex,e.on(\"mousemove\",function(t){e.dataIndex=null;var n=e.findDataIndex(t.offsetX,t.offsetY);n>0&&(e.dataIndex=n+e.__startIndex)}))},u._clearIncremental=function(){var e=this._incremental;e&&e.clearDisplaybles()};var c=l;e.exports=c},\"UeW/\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"vXqC\"),a=n(\"0sHC\"),s=n(\"1Xuh\"),l=n(\"wWR3\").parsePercent,u={path:null,compoundPath:null,group:a.Group,image:a.Image,text:a.Text};i.registerPreprocessor(function(e){var t=e.graphic;r.isArray(t)?t[0]&&t[0].elements?e.graphic=[e.graphic[0]]:e.graphic=[{elements:t}]:t&&!t.elements&&(e.graphic=[{elements:[t]}])});var c=i.extendComponentModel({type:\"graphic\",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(e){var t=this.option.elements;this.option.elements=null,c.superApply(this,\"mergeOption\",arguments),this.option.elements=t},optionUpdated:function(e,t){var n=this.option,i=(t?n:e).elements,a=n.elements=t?[]:n.elements,l=[];this._flatten(i,l);var u=o.mappingToExists(a,l);o.makeIdAndName(u);var c=this._elOptionsToUpdate=[];r.each(u,function(e,t){var n=e.option;n&&(c.push(n),function(e,t){var n=e.exist;if(t.id=e.keyInfo.id,!t.type&&n&&(t.type=n.type),null==t.parentId){var i=t.parentOption;i?t.parentId=i.id:n&&(t.parentId=n.parentId)}t.parentOption=null}(e,n),function(e,t,n){var i=r.extend({},n),o=e[t],a=n.$action||\"merge\";\"merge\"===a?o?(r.merge(o,i,!0),s.mergeLayoutParam(o,i,{ignoreSize:!0}),s.copyLayoutParams(n,o)):e[t]=i:\"replace\"===a?e[t]=i:\"remove\"===a&&o&&(e[t]=null)}(a,t,n),function(e,t){if(!e)return;e.hv=t.hv=[f(t,[\"left\",\"right\"]),f(t,[\"top\",\"bottom\"])],\"group\"===e.type&&(null==e.width&&(e.width=t.width=0),null==e.height&&(e.height=t.height=0))}(a[t],n))},this);for(var h=a.length-1;h>=0;h--)null==a[h]?a.splice(h,1):delete a[h].$action},_flatten:function(e,t,n){r.each(e,function(e){if(e){n&&(e.parentOption=n),t.push(e);var i=e.children;\"group\"===e.type&&i&&this._flatten(i,t,e),delete e.children}},this)},useElOptionsToUpdate:function(){var e=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,e}});function h(e,t,n,i){var r=n.type,o=new(u.hasOwnProperty(r)?u[r]:a.getShapeClass(r))(n);t.add(o),i.set(e,o),o.__ecGraphicId=e}function d(e,t){var n=e&&e.parent;n&&(\"group\"===e.type&&e.traverse(function(e){d(e,t)}),t.removeKey(e.__ecGraphicId),n.remove(e))}function f(e,t){var n;return r.each(t,function(t){null!=e[t]&&\"auto\"!==e[t]&&(n=!0)}),n}i.extendComponentView({type:\"graphic\",init:function(e,t){this._elMap=r.createHashMap(),this._lastGraphicModel},render:function(e,t,n){e!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=e,this._updateElements(e),this._relocate(e,n)},_updateElements:function(e){var t=e.useElOptionsToUpdate();if(t){var n=this._elMap,i=this.group;r.each(t,function(t){var o=t.$action,a=t.id,l=n.get(a),u=t.parentId,c=null!=u?n.get(u):i,f=t.style;\"text\"===t.type&&f&&(t.hv&&t.hv[1]&&(f.textVerticalAlign=f.textBaseline=null),!f.hasOwnProperty(\"textFill\")&&f.fill&&(f.textFill=f.fill),!f.hasOwnProperty(\"textStroke\")&&f.stroke&&(f.textStroke=f.stroke));var p=function(e){return e=r.extend({},e),r.each([\"id\",\"parentId\",\"$action\",\"hv\",\"bounding\"].concat(s.LOCATION_PARAMS),function(t){delete e[t]}),e}(t);o&&\"merge\"!==o?\"replace\"===o?(d(l,n),h(a,c,p,n)):\"remove\"===o&&d(l,n):l?l.attr(p):h(a,c,p,n);var g=n.get(a);g&&(g.__ecGraphicWidthOption=t.width,g.__ecGraphicHeightOption=t.height,function(e,t,n){var i=e.eventData;e.silent||e.ignore||i||(i=e.eventData={componentType:\"graphic\",componentIndex:t.componentIndex,name:e.name});i&&(i.info=e.info)}(g,e))})}},_relocate:function(e,t){for(var n=e.option.elements,i=this.group,r=this._elMap,o=t.getWidth(),a=t.getHeight(),u=0;u<n.length;u++){var c=n[u];if((d=r.get(c.id))&&d.isGroup){var h=(f=d.parent)===i;d.__ecGraphicWidth=l(d.__ecGraphicWidthOption,h?o:f.__ecGraphicWidth)||0,d.__ecGraphicHeight=l(d.__ecGraphicHeightOption,h?a:f.__ecGraphicHeight)||0}}for(u=n.length-1;u>=0;u--){var d;c=n[u];if(d=r.get(c.id)){var f,p=(f=d.parent)===i?{width:o,height:a}:{width:f.__ecGraphicWidth,height:f.__ecGraphicHeight};s.positionElement(d,c,p,null,{hv:c.hv,boundingMode:c.bounding})}}},_clear:function(){var e=this._elMap;e.each(function(t){d(t,e)}),this._elMap=r.createHashMap()},dispose:function(){this._clear()}})},UkNE:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\");n(\"5vFd\"),n(\"zz1u\"),i.extendComponentView({type:\"grid\",render:function(e,t){this.group.removeAll(),e.get(\"show\")&&this.group.add(new o.Rect({shape:e.coordinateSystem.getRect(),style:r.defaults({fill:e.get(\"backgroundColor\")},e.getItemStyle()),silent:!0,z2:-1}))}}),i.registerPreprocessor(function(e){e.xAxis&&e.yAxis&&!e.grid&&(e.grid={})})},UuGF:function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},V3tA:function(e,t,n){n(\"R4wc\"),e.exports=n(\"FeBl\").Object.assign},V4nf:function(e,t,n){var i=n(\"/gxq\"),r=n(\"UAiw\").Dispatcher,o=n(\"a1Sp\"),a=n(\"CCtz\"),s=function(e){e=e||{},this.stage=e.stage||{},this.onframe=e.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,r.call(this)};s.prototype={constructor:s,addClip:function(e){this._clips.push(e)},addAnimator:function(e){e.animation=this;for(var t=e.getClips(),n=0;n<t.length;n++)this.addClip(t[n])},removeClip:function(e){var t=i.indexOf(this._clips,e);t>=0&&this._clips.splice(t,1)},removeAnimator:function(e){for(var t=e.getClips(),n=0;n<t.length;n++)this.removeClip(t[n]);e.animation=null},_update:function(){for(var e=(new Date).getTime()-this._pausedTime,t=e-this._time,n=this._clips,i=n.length,r=[],o=[],a=0;a<i;a++){var s=n[a],l=s.step(e,t);l&&(r.push(l),o.push(s))}for(a=0;a<i;)n[a]._needsRemove?(n[a]=n[i-1],n.pop(),i--):a++;i=r.length;for(a=0;a<i;a++)o[a].fire(r[a]);this._time=e,this.onframe(t),this.trigger(\"frame\",t),this.stage.update&&this.stage.update()},_startLoop:function(){var e=this;this._running=!0,o(function t(){e._running&&(o(t),!e._paused&&e._update())})},start:function(){this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop()},stop:function(){this._running=!1},pause:function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},resume:function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},clear:function(){this._clips=[]},isFinished:function(){return!this._clips.length},animate:function(e,t){var n=new a(e,(t=t||{}).loop,t.getter,t.setter);return this.addAnimator(n),n}},i.mixin(s,r);var l=s;e.exports=l},\"VU/8\":function(e,t){e.exports=function(e,t,n,i,r,o){var a,s=e=e||{},l=typeof e.default;\"object\"!==l&&\"function\"!==l||(a=e,s=e.default);var u,c=\"function\"==typeof s?s.options:s;if(t&&(c.render=t.render,c.staticRenderFns=t.staticRenderFns,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId=r),o?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=u):i&&(u=i),u){var h=c.functional,d=h?c.render:c.beforeCreate;h?(c._injectStyles=u,c.render=function(e,t){return u.call(t),d(e,t)}):c.beforeCreate=d?[].concat(d,u):[u]}return{esModule:a,exports:s,options:c}}},\"Vb+l\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");n(\"/vN/\"),n(\"1A4n\");var o=n(\"XRkS\"),a=n(\"ri8f\"),s=n(\"9Z3y\"),l=n(\"l4Op\");o(\"pie\",[{type:\"pieToggleSelect\",event:\"pieselectchanged\",method:\"toggleSelected\"},{type:\"pieSelect\",event:\"pieselected\",method:\"select\"},{type:\"pieUnSelect\",event:\"pieunselected\",method:\"unSelect\"}]),i.registerVisual(a(\"pie\")),i.registerLayout(r.curry(s,\"pie\")),i.registerProcessor(l(\"pie\"))},VewU:function(e,t){var n=\"http://www.w3.org/2000/svg\";t.createElement=function(e){return document.createElementNS(n,e)}},Vi3T:function(e,t,n){\"use strict\";t.__esModule=!0,t.default={el:{colorpicker:{confirm:\"确定\",clear:\"清空\"},datepicker:{now:\"此刻\",today:\"今天\",cancel:\"取消\",clear:\"清空\",confirm:\"确定\",selectDate:\"选择日期\",selectTime:\"选择时间\",startDate:\"开始日期\",startTime:\"开始时间\",endDate:\"结束日期\",endTime:\"结束时间\",prevYear:\"前一年\",nextYear:\"后一年\",prevMonth:\"上个月\",nextMonth:\"下个月\",year:\"年\",month1:\"1 月\",month2:\"2 月\",month3:\"3 月\",month4:\"4 月\",month5:\"5 月\",month6:\"6 月\",month7:\"7 月\",month8:\"8 月\",month9:\"9 月\",month10:\"10 月\",month11:\"11 月\",month12:\"12 月\",weeks:{sun:\"日\",mon:\"一\",tue:\"二\",wed:\"三\",thu:\"四\",fri:\"五\",sat:\"六\"},months:{jan:\"一月\",feb:\"二月\",mar:\"三月\",apr:\"四月\",may:\"五月\",jun:\"六月\",jul:\"七月\",aug:\"八月\",sep:\"九月\",oct:\"十月\",nov:\"十一月\",dec:\"十二月\"}},select:{loading:\"加载中\",noMatch:\"无匹配数据\",noData:\"无数据\",placeholder:\"请选择\"},cascader:{noMatch:\"无匹配数据\",loading:\"加载中\",placeholder:\"请选择\",noData:\"暂无数据\"},pagination:{goto:\"前往\",pagesize:\"条/页\",total:\"共 {total} 条\",pageClassifier:\"页\"},messagebox:{title:\"提示\",confirm:\"确定\",cancel:\"取消\",error:\"输入的数据不合法!\"},upload:{deleteTip:\"按 delete 键可删除\",delete:\"删除\",preview:\"查看图片\",continue:\"继续上传\"},table:{emptyText:\"暂无数据\",confirmFilter:\"筛选\",resetFilter:\"重置\",clearFilter:\"全部\",sumText:\"合计\"},tree:{emptyText:\"暂无数据\"},transfer:{noMatch:\"无匹配数据\",noData:\"无数据\",titles:[\"列表 1\",\"列表 2\"],filterPlaceholder:\"请输入搜索内容\",noCheckedFormat:\"共 {total} 项\",hasCheckedFormat:\"已选 {checked}/{total} 项\"},image:{error:\"加载失败\"},pageHeader:{title:\"返回\"},popconfirm:{confirmButtonText:\"确定\",cancelButtonText:\"取消\"}}}},VmZa:function(e,t,n){n(\"6MCj\"),(0,n(\"hv2j\").registerPainter)(\"vml\",n(\"0jKn\"))},W2nU:function(e,t){var n,i,r=e.exports={};function o(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{i=\"function\"==typeof clearTimeout?clearTimeout:a}catch(e){i=a}}();var l,u=[],c=!1,h=-1;function d(){c&&l&&(c=!1,l.length?u=l.concat(u):h=-1,u.length&&f())}function f(){if(!c){var e=s(d);c=!0;for(var t=u.length;t;){for(l=u,u=[];++h<t;)l&&l[h].run();h=-1,t=u.length}l=null,c=!1,function(e){if(i===clearTimeout)return clearTimeout(e);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function g(){}r.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new p(e,t)),1!==u.length||c||s(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},r.title=\"browser\",r.browser=!0,r.env={},r.argv=[],r.version=\"\",r.versions={},r.on=g,r.addListener=g,r.once=g,r.off=g,r.removeListener=g,r.removeAllListeners=g,r.emit=g,r.prependListener=g,r.prependOnceListener=g,r.listeners=function(e){return[]},r.binding=function(e){throw new Error(\"process.binding is not supported\")},r.cwd=function(){return\"/\"},r.chdir=function(e){throw new Error(\"process.chdir is not supported\")},r.umask=function(){return 0}},\"WK/r\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"2HcM\"),o=function(e,t,n,i,o){r.call(this,e,t,n),this.type=i||\"value\",this.position=o||\"bottom\",this.orient=null};o.prototype={constructor:o,model:null,isHorizontal:function(){var e=this.position;return\"top\"===e||\"bottom\"===e},pointToData:function(e,t){return this.coordinateSystem.pointToData(e,t)[0]},toGlobalCoord:null,toLocalCoord:null},i.inherits(o,r);var a=o;e.exports=a},WO3U:function(e,t,n){var i=n(\"ilLo\").extend({type:\"dataZoom.select\"});e.exports=i},WbrJ:function(e,t,n){var i=n(\"/gxq\"),r=n(\"ilLo\"),o=n(\"og9+\"),a=n(\"E7aA\"),s=i.bind,l=r.extend({type:\"dataZoom.inside\",init:function(e,t){this._range},render:function(e,t,n,r){l.superApply(this,\"render\",arguments),this._range=e.getPercentRange(),i.each(this.getTargetCoordInfo(),function(t,r){var o=i.map(t,function(e){return a.generateCoordId(e.model)});i.each(t,function(t){var l=t.model,c={};i.each([\"pan\",\"zoom\",\"scrollMove\"],function(e){c[e]=s(u[e],this,t,r)},this),a.register(n,{coordId:a.generateCoordId(l),allCoordIds:o,containsPoint:function(e,t,n){return l.coordinateSystem.containPoint([t,n])},dataZoomId:e.id,dataZoomModel:e,getRange:c})},this)},this)},dispose:function(){a.unregister(this.api,this.dataZoomModel.id),l.superApply(this,\"dispose\",arguments),this._range=null}}),u={zoom:function(e,t,n,i){var r=this._range,a=r.slice(),s=e.axisModels[0];if(s){var l=h[t](null,[i.originX,i.originY],s,n,e),u=(l.signal>0?l.pixelStart+l.pixelLength-l.pixel:l.pixel-l.pixelStart)/l.pixelLength*(a[1]-a[0])+a[0],c=Math.max(1/i.scale,0);a[0]=(a[0]-u)*c+u,a[1]=(a[1]-u)*c+u;var d=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return o(0,a,[0,100],0,d.minSpan,d.maxSpan),this._range=a,r[0]!==a[0]||r[1]!==a[1]?a:void 0}},pan:c(function(e,t,n,i,r,o){var a=h[i]([o.oldX,o.oldY],[o.newX,o.newY],t,r,n);return a.signal*(e[1]-e[0])*a.pixel/a.pixelLength}),scrollMove:c(function(e,t,n,i,r,o){return h[i]([0,0],[o.scrollDelta,o.scrollDelta],t,r,n).signal*(e[1]-e[0])*o.scrollDelta})};function c(e){return function(t,n,i,r){var a=this._range,s=a.slice(),l=t.axisModels[0];if(l){var u=e(s,l,t,n,i,r);return o(u,s,[0,100],\"all\"),this._range=s,a[0]!==s[0]||a[1]!==s[1]?s:void 0}}}var h={grid:function(e,t,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return e=e||[0,0],\"x\"===o.dim?(a.pixel=t[0]-e[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=t[1]-e[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(e,t,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return e=e?s.pointToCoord(e):[0,0],t=s.pointToCoord(t),\"radiusAxis\"===n.mainType?(a.pixel=t[0]-e[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=t[1]-e[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(e,t,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return e=e||[0,0],\"horizontal\"===o.orient?(s.pixel=t[0]-e[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=t[1]-e[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}},d=l;e.exports=d},WxG6:function(e,t){var n={Russia:[100,60],\"United States\":[-99,38],\"United States of America\":[-99,38]};e.exports=function(e,t){if(\"world\"===e){var i=n[t.name];if(i){var r=t.center;r[0]=i[0],r[1]=i[1]}}}},X8DO:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},XAC3:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"YNzw\"),a=n(\"aYad\"),s=n(\"oJvE\"),l=n(\"HHfb\"),u=n(\"wWR3\"),c=n(\"0sHC\"),h=n(\"OxCu\"),d=n(\"1Xuh\"),f=n(\"Pdtn\"),p=n(\"DpwM\"),g=n(\"3yJd\"),m=n(\"zAPJ\"),v=n(\"vXqC\").getTooltipRenderMode,y=r.bind,b=r.each,x=u.parsePercent,_=new c.Rect({shape:{x:-1,y:-1,width:2,height:2}}),w=i.extendComponentView({type:\"tooltip\",init:function(e,t){if(!o.node){var n,i=e.getComponent(\"tooltip\"),r=i.get(\"renderMode\");this._renderMode=v(r),\"html\"===this._renderMode?(n=new a(t.getDom(),t,{appendToBody:i.get(\"appendToBody\",!0)}),this._newLine=\"<br/>\"):(n=new s(t),this._newLine=\"\\n\"),this._tooltipContent=n}},render:function(e,t,n){if(!o.node){this.group.removeAll(),this._tooltipModel=e,this._ecModel=t,this._api=n,this._lastDataByCoordSys=null,this._alwaysShowContent=e.get(\"alwaysShowContent\");var i=this._tooltipContent;i.update(),i.setEnterable(e.get(\"enterable\")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var e=this._tooltipModel.get(\"triggerOn\");p.register(\"itemTooltip\",this._api,y(function(t,n,i){\"none\"!==e&&(e.indexOf(t)>=0?this._tryShow(n,i):\"leave\"===t&&this._hide(i))},this))},_keepShow:function(){var e=this._tooltipModel,t=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&\"none\"!==e.get(\"triggerOn\")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&i.manuallyShowTip(e,t,n,{x:i._lastX,y:i._lastY})})}},manuallyShowTip:function(e,t,n,i){if(i.from!==this.uid&&!o.node){var r=S(i,n);this._ticket=\"\";var a=i.dataByCoordSys;if(i.tooltip&&null!=i.x&&null!=i.y){var s=_;s.position=[i.x,i.y],s.update(),s.tooltip=i.tooltip,this._tryShow({offsetX:i.x,offsetY:i.y,target:s},r)}else if(a)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:i.dataByCoordSys,tooltipOption:i.tooltipOption},r);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(e,t,n,i))return;var l=h(i,t),u=l.point[0],c=l.point[1];null!=u&&null!=c&&this._tryShow({offsetX:u,offsetY:c,position:i.position,target:l.el},r)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:\"updateAxisPointer\",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},r))}},manuallyHideTip:function(e,t,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get(\"hideDelay\")),this._lastX=this._lastY=null,i.from!==this.uid&&this._hide(S(i,n))},_manuallyAxisShowTip:function(e,t,n,i){var r=i.seriesIndex,o=i.dataIndex,a=t.getComponent(\"axisPointer\").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=t.getSeriesByIndex(r);if(s)if(\"axis\"===(e=C([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model,e])).get(\"trigger\"))return n.dispatchAction({type:\"updateAxisPointer\",seriesIndex:r,dataIndex:o,position:i.position}),!0}},_tryShow:function(e,t){var n=e.target;if(this._tooltipModel){this._lastX=e.offsetX,this._lastY=e.offsetY;var i=e.dataByCoordSys;i&&i.length?this._showAxisTooltip(i,e):n&&null!=n.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(e,n,t)):n&&n.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(e,n,t)):(this._lastDataByCoordSys=null,this._hide(t))}},_showOrMove:function(e,t){var n=e.get(\"showDelay\");t=r.bind(t,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(t,n):t()},_showAxisTooltip:function(e,t){var n=this._ecModel,i=this._tooltipModel,o=[t.offsetX,t.offsetY],a=[],s=[],u=C([t.tooltipOption,i]),c=this._renderMode,h=this._newLine,d={};b(e,function(e){b(e.dataByAxis,function(e){var t=n.getComponent(e.axisDim+\"Axis\",e.axisIndex),i=e.value,o=[];if(t&&null!=i){var u=m.getValueLabel(i,t.axis,n,e.seriesDataIndices,e.valueLabelOpt);r.each(e.seriesDataIndices,function(a){var l=n.getSeriesByIndex(a.seriesIndex),h=a.dataIndexInside,f=l&&l.getDataParams(h);if(f.axisDim=e.axisDim,f.axisIndex=e.axisIndex,f.axisType=e.axisType,f.axisId=e.axisId,f.axisValue=g.getAxisRawValue(t.axis,i),f.axisValueLabel=u,f){s.push(f);var p,m=l.formatTooltip(h,!0,null,c);if(r.isObject(m)){p=m.html;var v=m.markers;r.merge(d,v)}else p=m;o.push(p)}});var f=u;\"html\"!==c?a.push(o.join(h)):a.push((f?l.encodeHTML(f)+h:\"\")+o.join(h))}})},this),a.reverse(),a=a.join(this._newLine+this._newLine);var f=t.position;this._showOrMove(u,function(){this._updateContentNotChangedOnAxis(e)?this._updatePosition(u,f,o[0],o[1],this._tooltipContent,s):this._showTooltipContent(u,a,s,Math.random(),o[0],o[1],f,void 0,d)})},_showSeriesItemTooltip:function(e,t,n){var i=this._ecModel,o=t.seriesIndex,a=i.getSeriesByIndex(o),s=t.dataModel||a,l=t.dataIndex,u=t.dataType,c=s.getData(u),h=C([c.getItemModel(l),s,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),d=h.get(\"trigger\");if(null==d||\"item\"===d){var f,p,g=s.getDataParams(l,u),m=s.formatTooltip(l,!1,u,this._renderMode);r.isObject(m)?(f=m.html,p=m.markers):(f=m,p=null);var v=\"item_\"+s.name+\"_\"+l;this._showOrMove(h,function(){this._showTooltipContent(h,f,g,v,e.offsetX,e.offsetY,e.position,e.target,p)}),n({type:\"showTip\",dataIndexInside:l,dataIndex:c.getRawIndex(l),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(e,t,n){var i=t.tooltip;if(\"string\"==typeof i){i={content:i,formatter:i}}var r=new f(i,this._tooltipModel,this._ecModel),o=r.get(\"content\"),a=Math.random();this._showOrMove(r,function(){this._showTooltipContent(r,o,r.get(\"formatterParams\")||{},a,e.offsetX,e.offsetY,e.position,t)}),n({type:\"showTip\",from:this.uid})},_showTooltipContent:function(e,t,n,i,r,o,a,s,u){if(this._ticket=\"\",e.get(\"showContent\")&&e.get(\"show\")){var c=this._tooltipContent,h=e.get(\"formatter\");a=a||e.get(\"position\");var d=t;if(h&&\"string\"==typeof h)d=l.formatTpl(h,n,!0);else if(\"function\"==typeof h){var f=y(function(t,i){t===this._ticket&&(c.setContent(i,u,e),this._updatePosition(e,a,r,o,c,n,s))},this);this._ticket=i,d=h(n,i,f)}c.setContent(d,u,e),c.show(e),this._updatePosition(e,a,r,o,c,n,s)}},_updatePosition:function(e,t,n,i,o,a,s){var l=this._api.getWidth(),u=this._api.getHeight();t=t||e.get(\"position\");var c=o.getSize(),h=e.get(\"align\"),f=e.get(\"verticalAlign\"),p=s&&s.getBoundingRect().clone();if(s&&p.applyTransform(s.transform),\"function\"==typeof t&&(t=t([n,i],a,o.el,p,{viewSize:[l,u],contentSize:c.slice()})),r.isArray(t))n=x(t[0],l),i=x(t[1],u);else if(r.isObject(t)){t.width=c[0],t.height=c[1];var g=d.getLayoutRect(t,{width:l,height:u});n=g.x,i=g.y,h=null,f=null}else if(\"string\"==typeof t&&s){var m=function(e,t,n){var i=n[0],r=n[1],o=0,a=0,s=t.width,l=t.height;switch(e){case\"inside\":o=t.x+s/2-i/2,a=t.y+l/2-r/2;break;case\"top\":o=t.x+s/2-i/2,a=t.y-r-5;break;case\"bottom\":o=t.x+s/2-i/2,a=t.y+l+5;break;case\"left\":o=t.x-i-5,a=t.y+l/2-r/2;break;case\"right\":o=t.x+s+5,a=t.y+l/2-r/2}return[o,a]}(t,p,c);n=m[0],i=m[1]}else{m=function(e,t,n,i,r,o,a){var s=n.getOuterSize(),l=s.width,u=s.height;null!=o&&(e+l+o>i?e-=l+o:e+=o);null!=a&&(t+u+a>r?t-=u+a:t+=a);return[e,t]}(n,i,o,l,u,h?null:20,f?null:20);n=m[0],i=m[1]}if(h&&(n-=k(h)?c[0]/2:\"right\"===h?c[0]:0),f&&(i-=k(f)?c[1]/2:\"bottom\"===f?c[1]:0),e.get(\"confine\")){m=function(e,t,n,i,r){var o=n.getOuterSize(),a=o.width,s=o.height;return e=Math.min(e+a,i)-a,t=Math.min(t+s,r)-s,e=Math.max(e,0),t=Math.max(t,0),[e,t]}(n,i,o,l,u);n=m[0],i=m[1]}o.moveTo(n,i)},_updateContentNotChangedOnAxis:function(e){var t=this._lastDataByCoordSys,n=!!t&&t.length===e.length;return n&&b(t,function(t,i){var r=t.dataByAxis||{},o=(e[i]||{}).dataByAxis||[];(n&=r.length===o.length)&&b(r,function(e,t){var i=o[t]||{},r=e.seriesDataIndices||[],a=i.seriesDataIndices||[];(n&=e.value===i.value&&e.axisType===i.axisType&&e.axisId===i.axisId&&r.length===a.length)&&b(r,function(e,t){var i=a[t];n&=e.seriesIndex===i.seriesIndex&&e.dataIndex===i.dataIndex})})}),this._lastDataByCoordSys=e,!!n},_hide:function(e){this._lastDataByCoordSys=null,e({type:\"hideTip\",from:this.uid})},dispose:function(e,t){o.node||(this._tooltipContent.dispose(),p.unregister(\"itemTooltip\",t))}});function C(e){for(var t=e.pop();e.length;){var n=e.pop();n&&(f.isInstance(n)&&(n=n.get(\"tooltip\",!0)),\"string\"==typeof n&&(n={formatter:n}),t=new f(n,t,t.ecModel))}return t}function S(e,t){return e.dispatchAction||r.bind(t.dispatchAction,t)}function k(e){return\"center\"===e||\"middle\"===e}e.exports=w},XCrL:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"vXqC\"),a=n(\"ZJ+T\"),s=i.each,l=i.indexOf,u=i.curry,c=[\"dataToPoint\",\"pointToData\"],h=[\"grid\",\"xAxis\",\"yAxis\",\"geo\",\"graph\",\"polar\",\"radiusAxis\",\"angleAxis\",\"bmap\"];function d(e,t,n){var i=this._targetInfoList=[],r={},o=g(t,e);s(m,function(e,t){(!n||!n.include||l(n.include,t)>=0)&&e(o,i,r)})}var f=d.prototype;function p(e){return e[0]>e[1]&&e.reverse(),e}function g(e,t){return o.parseFinder(e,t,{includeMainTypes:h})}f.setOutputRanges=function(e,t){this.matchOutputRanges(e,t,function(e,t,n){if((e.coordRanges||(e.coordRanges=[])).push(t),!e.coordRange){e.coordRange=t;var i=b[e.brushType](0,n,t);e.__rangeOffset={offset:_[e.brushType](i.values,e.range,[1,1]),xyMinMax:i.xyMinMax}}})},f.matchOutputRanges=function(e,t,n){s(e,function(e){var r=this.findTargetInfo(e,t);r&&!0!==r&&i.each(r.coordSyses,function(i){var r=b[e.brushType](1,i,e.range);n(e,r.values,i,t)})},this)},f.setInputRanges=function(e,t){s(e,function(e){var n,i,r,o,a,s=this.findTargetInfo(e,t);if(e.range=e.range||[],s&&!0!==s){e.panelId=s.panelId;var l=b[e.brushType](0,s.coordSys,e.coordRange),u=e.__rangeOffset;e.range=u?_[e.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=C(n),o=C(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}},this)},f.makePanelOpts=function(e,t){return i.map(this._targetInfoList,function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:t&&t(n),clipPath:a.makeRectPanelClipPath(i),isTargetByCursor:a.makeRectIsTargetByCursor(i,e,n.coordSysModel),getLinearBrushOtherExtent:a.makeLinearBrushOtherExtent(i)}})},f.controlSeries=function(e,t,n){var i=this.findTargetInfo(e,n);return!0===i||i&&l(i.coordSyses,t.coordinateSystem)>=0},f.findTargetInfo=function(e,t){for(var n=this._targetInfoList,i=g(t,e),r=0;r<n.length;r++){var o=n[r],a=e.panelId;if(a){if(o.panelId===a)return o}else for(r=0;r<v.length;r++)if(v[r](i,o))return o}return!0};var m={grid:function(e,t){var n=e.xAxisModels,r=e.yAxisModels,o=e.gridModels,a=i.createHashMap(),u={},c={};(n||r||o)&&(s(n,function(e){var t=e.axis.grid.model;a.set(t.id,t),u[t.id]=!0}),s(r,function(e){var t=e.axis.grid.model;a.set(t.id,t),c[t.id]=!0}),s(o,function(e){a.set(e.id,e),u[e.id]=!0,c[e.id]=!0}),a.each(function(e){var i=e.coordinateSystem,o=[];s(i.getCartesians(),function(e,t){(l(n,e.getAxis(\"x\").model)>=0||l(r,e.getAxis(\"y\").model)>=0)&&o.push(e)}),t.push({panelId:\"grid--\"+e.id,gridModel:e,coordSysModel:e,coordSys:o[0],coordSyses:o,getPanelRect:y.grid,xAxisDeclared:u[e.id],yAxisDeclared:c[e.id]})}))},geo:function(e,t){s(e.geoModels,function(e){var n=e.coordinateSystem;t.push({panelId:\"geo--\"+e.id,geoModel:e,coordSysModel:e,coordSys:n,coordSyses:[n],getPanelRect:y.geo})})}},v=[function(e,t){var n=e.xAxisModel,i=e.yAxisModel,r=e.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===t.gridModel},function(e,t){var n=e.geoModel;return n&&n===t.geoModel}],y={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var e=this.coordSys,t=e.getBoundingRect().clone();return t.applyTransform(r.getTransform(e)),t}},b={lineX:u(x,0),lineY:u(x,1),rect:function(e,t,n){var i=t[c[e]]([n[0][0],n[1][0]]),r=t[c[e]]([n[0][1],n[1][1]]),o=[p([i[0],r[0]]),p([i[1],r[1]])];return{values:o,xyMinMax:o}},polygon:function(e,t,n){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:i.map(n,function(n){var i=t[c[e]](n);return r[0][0]=Math.min(r[0][0],i[0]),r[1][0]=Math.min(r[1][0],i[1]),r[0][1]=Math.max(r[0][1],i[0]),r[1][1]=Math.max(r[1][1],i[1]),i}),xyMinMax:r}}};function x(e,t,n,r){var o=n.getAxis([\"x\",\"y\"][e]),a=p(i.map([0,1],function(e){return t?o.coordToData(o.toLocalCoord(r[e])):o.toGlobalCoord(o.dataToCoord(r[e]))})),s=[];return s[e]=a,s[1-e]=[NaN,NaN],{values:a,xyMinMax:s}}var _={lineX:u(w,0),lineY:u(w,1),rect:function(e,t,n){return[[e[0][0]-n[0]*t[0][0],e[0][1]-n[0]*t[0][1]],[e[1][0]-n[1]*t[1][0],e[1][1]-n[1]*t[1][1]]]},polygon:function(e,t,n){return i.map(e,function(e,i){return[e[0]-n[0]*t[i][0],e[1]-n[1]*t[i][1]]})}};function w(e,t,n,i){return[t[0]-i[e]*n[0],t[1]-i[e]*n[1]]}function C(e){return e?[e[0][1]-e[0][0],e[1][1]-e[1][0]]:[NaN,NaN]}var S=d;e.exports=S},XFat:function(e,t){t.eachAfter=function(e,t,n){for(var i,r=[e],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;s<a.length;s++)r.push(a[s])}for(;i=o.pop();)t(i,n)},t.eachBefore=function(e,t){for(var n,i=[e];n=i.pop();)if(t(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}},XLwt:function(e,t,n){var i=n(\"Icdr\");!function(){for(var e in i){if(null==i||!i.hasOwnProperty(e)||\"default\"===e||\"__esModule\"===e)return;t[e]=i[e]}}();var r=n(\"iNHu\");!function(){for(var e in r){if(null==r||!r.hasOwnProperty(e)||\"default\"===e||\"__esModule\"===e)return;t[e]=r[e]}}(),n(\"+Dgo\"),n(\"4UDB\"),n(\"GbHy\"),n(\"Vb+l\"),n(\"u9yV\"),n(\"rjsW\"),n(\"nUSl\"),n(\"8UWf\"),n(\"O523\"),n(\"1FNb\"),n(\"87tG\"),n(\"5/bM\"),n(\"qbKW\"),n(\"cWq4\"),n(\"AjST\"),n(\"9cSo\"),n(\"k9Bd\"),n(\"zjhG\"),n(\"o0k+\"),n(\"N1UU\"),n(\"7bL3\"),n(\"A6Kt\"),n(\"MOpb\"),n(\"ILx8\"),n(\"LbEf\"),n(\"80zD\"),n(\"4V7L\"),n(\"FlXs\"),n(\"/99E\"),n(\"UeW/\"),n(\"YsUA\"),n(\"Oq2I\"),n(\"AKXb\"),n(\"swsf\"),n(\"miEh\"),n(\"JRc4\"),n(\"2tOJ\"),n(\"p1Ck\"),n(\"Mn6+\"),n(\"P7ry\"),n(\"80cc\"),n(\"wQkr\"),n(\"v/z1\"),n(\"XuY+\"),n(\"tQk0\"),n(\"4SW2\"),n(\"0O1a\"),n(\"VmZa\"),n(\"jLnL\")},XRkS:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");e.exports=function(e,t){r.each(t,function(t){t.update=\"updateView\",i.registerAction(t,function(n,i){var r={};return i.eachComponent({mainType:\"series\",subType:e,query:n},function(e){e[t.method]&&e[t.method](n.name,n.dataIndex);var i=e.getData();i.each(function(t){var n=i.getName(t);r[n]=e.isSelected(n)||!1})}),{name:n.name,selected:r,seriesId:n.seriesId}})})}},Xc4G:function(e,t,n){var i=n(\"lktj\"),r=n(\"1kS7\"),o=n(\"NpIQ\");e.exports=function(e){var t=i(e),n=r.f;if(n)for(var a,s=n(e),l=o.f,u=0;s.length>u;)l.call(e,a=s[u++])&&t.push(a);return t}},XhgW:function(e,t,n){var i=n(\"3h1/\"),r=n(\"wWR3\").parsePercent,o=Math.PI/180;function a(e,t,n,i,r,o,a,s,l,u){function c(t,n,i,r){for(var o=t;o<n&&!(e[o].y+i>l+a);o++)if(e[o].y+=i,o>t&&o+1<n&&e[o+1].y>e[o].y+e[o].height)return void h(o,i/2);h(n-1,i/2)}function h(t,n){for(var i=t;i>=0&&!(e[i].y-n<l)&&(e[i].y-=n,!(i>0&&e[i].y>e[i-1].y+e[i-1].height));i--);}function d(e,t,n,i,r,o){for(var a=t?Number.MAX_VALUE:0,s=0,l=e.length;s<l;s++)if(\"none\"===e[s].labelAlignTo){var u=Math.abs(e[s].y-i),c=e[s].len,h=e[s].len2,d=u<r+c?Math.sqrt((r+c+h)*(r+c+h)-u*u):Math.abs(e[s].x-n);t&&d>=a&&(d=a-10),!t&&d<=a&&(d=a+10),e[s].x=n+d*o,a=d}}e.sort(function(e,t){return e.y-t.y});for(var f,p=0,g=e.length,m=[],v=[],y=0;y<g;y++){if(\"outer\"===e[y].position&&\"labelLine\"===e[y].labelAlignTo){var b=e[y].x-u;e[y].linePoints[1][0]+=b,e[y].x=u}(f=e[y].y-p)<0&&c(y,g,-f),p=e[y].y+e[y].height}a-p<0&&h(g-1,p-a);for(y=0;y<g;y++)e[y].y>=n?v.push(e[y]):m.push(e[y]);d(m,!1,t,n,i,r),d(v,!0,t,n,i,r)}function s(e){return\"center\"===e.position}e.exports=function(e,t,n,l,u,c){var h,d,f=e.getData(),p=[],g=!1,m=(e.get(\"minShowLabelAngle\")||0)*o;f.each(function(o){var a=f.getItemLayout(o),s=f.getItemModel(o),l=s.getModel(\"label\"),c=l.get(\"position\")||s.get(\"emphasis.label.position\"),v=l.get(\"distanceToLabelLine\"),y=l.get(\"alignTo\"),b=r(l.get(\"margin\"),n),x=l.get(\"bleedMargin\"),_=l.getFont(),w=s.getModel(\"labelLine\"),C=w.get(\"length\");C=r(C,n);var S=w.get(\"length2\");if(S=r(S,n),!(a.angle<m)){var k,T,M,D,A=(a.startAngle+a.endAngle)/2,I=Math.cos(A),O=Math.sin(A);h=a.cx,d=a.cy;var E,L=e.getFormattedLabel(o,\"normal\")||f.getName(o),P=i.getBoundingRect(L,_,D,\"top\"),N=\"inside\"===c||\"inner\"===c;if(\"center\"===c)k=a.cx,T=a.cy,D=\"center\";else{var R=(N?(a.r+a.r0)/2*I:a.r*I)+h,B=(N?(a.r+a.r0)/2*O:a.r*O)+d;if(k=R+3*I,T=B+3*O,!N){var z=R+I*(C+t-a.r),F=B+O*(C+t-a.r),$=z+(I<0?-1:1)*S;k=\"edge\"===y?I<0?u+b:u+n-b:$+(I<0?-v:v),T=F,M=[[R,B],[z,F],[$,F]]}D=N?\"center\":\"edge\"===y?I>0?\"right\":\"left\":I>0?\"left\":\"right\"}var V=l.get(\"rotate\");E=\"number\"==typeof V?V*(Math.PI/180):V?I<0?-A+Math.PI:-A:0,g=!!E,a.label={x:k,y:T,position:c,height:P.height,len:C,len2:S,linePoints:M,textAlign:D,verticalAlign:\"middle\",rotation:E,inside:N,labelDistance:v,labelAlignTo:y,labelMargin:b,bleedMargin:x,textRect:P,text:L,font:_},N||p.push(a.label)}}),!g&&e.get(\"avoidLabelOverlap\")&&function(e,t,n,r,o,l,u,c){for(var h=[],d=[],f=Number.MAX_VALUE,p=-Number.MAX_VALUE,g=0;g<e.length;g++)s(e[g])||(e[g].x<t?(f=Math.min(f,e[g].x),h.push(e[g])):(p=Math.max(p,e[g].x),d.push(e[g])));for(a(d,t,n,r,1,0,l,0,c,p),a(h,t,n,r,-1,0,l,0,c,f),g=0;g<e.length;g++){var m=e[g];if(!s(m)){var v=m.linePoints;if(v){var y,b=\"edge\"===m.labelAlignTo,x=m.textRect.width;(y=b?m.x<t?v[2][0]-m.labelDistance-u-m.labelMargin:u+o-m.labelMargin-v[2][0]-m.labelDistance:m.x<t?m.x-u-m.bleedMargin:u+o-m.x-m.bleedMargin)<m.textRect.width&&(m.text=i.truncateText(m.text,y,m.font),\"edge\"===m.labelAlignTo&&(x=i.getWidth(m.text,m.font)));var _=v[1][0]-v[2][0];b?m.x<t?v[2][0]=u+m.labelMargin+x+m.labelDistance:v[2][0]=u+o-m.labelMargin-x-m.labelDistance:(m.x<t?v[2][0]=m.x+m.labelDistance:v[2][0]=m.x-m.labelDistance,v[1][0]=v[2][0]+_),v[1][1]=v[2][1]=m.y}}}}(p,h,d,t,n,l,u,c)}},XiVP:function(e,t,n){var i=n(\"/gxq\"),r=n(\"zO13\"),o=n(\"0sHC\"),a=n(\"kK7q\").createSymbol,s=n(\"1Xuh\"),l=n(\"E8YU\"),u=r.extend({type:\"visualMap.piecewise\",doRender:function(){var e=this.group;e.removeAll();var t=this.visualMapModel,n=t.get(\"textGap\"),r=t.textStyleModel,a=r.getFont(),l=r.getTextColor(),u=this._getItemAlign(),c=t.itemSize,h=this._getViewData(),d=h.endsText,f=i.retrieve(t.get(\"showLabel\",!0),!d);d&&this._renderEndsText(e,d[0],c,f,u),i.each(h.viewPieceList,function(r){var s=r.piece,h=new o.Group;h.onclick=i.bind(this._onItemClick,this,s),this._enableHoverLink(h,r.indexInModelPieceList);var d=t.getRepresentValue(s);if(this._createItemSymbol(h,d,[0,0,c[0],c[1]]),f){var p=this.visualMapModel.getValueState(d);h.add(new o.Text({style:{x:\"right\"===u?-n:c[0]+n,y:c[1]/2,text:s.text,textVerticalAlign:\"middle\",textAlign:u,textFont:a,textFill:l,opacity:\"outOfRange\"===p?.5:1}}))}e.add(h)},this),d&&this._renderEndsText(e,d[1],c,f,u),s.box(t.get(\"orient\"),e,t.get(\"itemGap\")),this.renderBackground(e),this.positionGroup(e)},_enableHoverLink:function(e,t){function n(e){var n=this.visualMapModel;n.option.hoverLink&&this.api.dispatchAction({type:e,batch:l.makeHighDownBatch(n.findTargetDataIndices(t),n)})}e.on(\"mouseover\",i.bind(n,this,\"highlight\")).on(\"mouseout\",i.bind(n,this,\"downplay\"))},_getItemAlign:function(){var e=this.visualMapModel,t=e.option;if(\"vertical\"===t.orient)return l.getItemAlign(e,this.api,e.itemSize);var n=t.align;return n&&\"auto\"!==n||(n=\"left\"),n},_renderEndsText:function(e,t,n,i,r){if(t){var a=new o.Group,s=this.visualMapModel.textStyleModel;a.add(new o.Text({style:{x:i?\"right\"===r?n[0]:0:n[0]/2,y:n[1]/2,textVerticalAlign:\"middle\",textAlign:i?r:\"center\",text:t,textFont:s.getFont(),textFill:s.getTextColor()}})),e.add(a)}},_getViewData:function(){var e=this.visualMapModel,t=i.map(e.getPieceList(),function(e,t){return{piece:e,indexInModelPieceList:t}}),n=e.get(\"text\"),r=e.get(\"orient\"),o=e.get(\"inverse\");return(\"horizontal\"===r?o:!o)?t.reverse():n&&(n=n.slice().reverse()),{viewPieceList:t,endsText:n}},_createItemSymbol:function(e,t,n){e.add(a(this.getControllerVisual(t,\"symbol\"),n[0],n[1],n[2],n[3],this.getControllerVisual(t,\"color\")))},_onItemClick:function(e){var t=this.visualMapModel,n=t.option,r=i.clone(n.selected),o=t.getSelectedMapKey(e);\"single\"===n.selectedMode?(r[o]=!0,i.each(r,function(e,t){r[t]=t===o})):r[o]=!r[o],this.api.dispatchAction({type:\"selectDataRange\",from:this.uid,visualMapId:this.visualMapModel.id,selected:r})}});e.exports=u},\"XuY+\":function(e,t,n){n(\"cuL/\"),n(\"sJ4e\"),n(\"ilLo\"),n(\"envY\"),n(\"5Hn/\"),n(\"b/SY\"),n(\"KAfT\")},Y3kp:function(e,t,n){var i=n(\"Icdr\"),r=n(\"dZZy\"),o=n(\"GnMB\"),a=n(\"dOVI\"),s=n(\"1Nix\"),l=i.extendChartView({type:\"effectScatter\",init:function(){this._symbolDraw=new r(o)},render:function(e,t,n){var i=e.getData(),r=this._symbolDraw;r.updateData(i),this.group.add(r.group)},updateTransform:function(e,t,n){var i=e.getData();this.group.dirty();var r=s().reset(e);r.progress&&r.progress({start:0,end:i.count()},i),this._symbolDraw.updateLayout(i)},_updateGroupTransform:function(e){var t=e.coordinateSystem;t&&t.getRoamTransform&&(this.group.transform=a.clone(t.getRoamTransform()),this.group.decomposeTransform())},remove:function(e,t){this._symbolDraw&&this._symbolDraw.remove(t)},dispose:function(){}});e.exports=l},Y5mS:function(e,t,n){\"use strict\";var i,r=n(\"lFkc\");r.canUseDOM&&(i=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature(\"\",\"\"))\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */,e.exports=function(e,t){if(!r.canUseDOM||t&&!(\"addEventListener\"in document))return!1;var n=\"on\"+e,o=n in document;if(!o){var a=document.createElement(\"div\");a.setAttribute(n,\"return;\"),o=\"function\"==typeof a[n]}return!o&&i&&\"wheel\"===e&&(o=document.implementation.hasFeature(\"Events.wheel\",\"3.0\")),o}},Y5nL:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Pdtn\"),o=n(\"h0jU\"),a=n(\"BNYN\"),s=a.enableClassManagement,l=a.parseClassType,u=n(\"vXqC\").makeInner,c=n(\"1Xuh\"),h=n(\"wEU0\"),d=u(),f=r.extend({type:\"component\",id:\"\",name:\"\",mainType:\"\",subType:\"\",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(e,t,n,i){r.call(this,e,t,n,i),this.uid=o.getUID(\"ec_cpt_model\")},init:function(e,t,n,i){this.mergeDefaultAndTheme(e,n)},mergeDefaultAndTheme:function(e,t){var n=this.layoutMode,r=n?c.getLayoutParams(e):{},o=t.getTheme();i.merge(e,o.get(this.mainType)),i.merge(e,this.getDefaultOption()),n&&c.mergeLayoutParam(e,r,n)},mergeOption:function(e,t){i.merge(this.option,e,!0);var n=this.layoutMode;n&&c.mergeLayoutParam(this.option,e,n)},optionUpdated:function(e,t){},getDefaultOption:function(){var e=d(this);if(!e.defaultOption){for(var t=[],n=this.constructor;n;){var r=n.prototype.defaultOption;r&&t.push(r),n=n.superClass}for(var o={},a=t.length-1;a>=0;a--)o=i.merge(o,t[a],!0);e.defaultOption=o}return e.defaultOption},getReferringComponents:function(e){return this.ecModel.queryComponents({mainType:e,index:this.get(e+\"Index\",!0),id:this.get(e+\"Id\",!0)})}});s(f,{registerWhenExtend:!0}),o.enableSubTypeDefaulter(f),o.enableTopologicalTravel(f,function(e){var t=[];i.each(f.getClassesByMainType(e),function(e){t=t.concat(e.prototype.dependencies||[])}),t=i.map(t,function(e){return l(e).main}),\"dataset\"!==e&&i.indexOf(t,\"dataset\")<=0&&t.unshift(\"dataset\");return t}),i.mixin(f,h);var p=f;e.exports=p},YAhB:function(e,t,n){\"use strict\";var i=n(\"++K3\"),r=n(\"Y5mS\"),o=10,a=40,s=800;function l(e){var t=0,n=0,i=0,r=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),\"axis\"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),i=t*o,r=n*o,\"deltaY\"in e&&(r=e.deltaY),\"deltaX\"in e&&(i=e.deltaX),(i||r)&&e.deltaMode&&(1==e.deltaMode?(i*=a,r*=a):(i*=s,r*=s)),i&&!t&&(t=i<1?-1:1),r&&!n&&(n=r<1?-1:1),{spinX:t,spinY:n,pixelX:i,pixelY:r}}l.getEventType=function(){return i.firefox()?\"DOMMouseScroll\":r(\"wheel\")?\"wheel\":\"mousewheel\"},e.exports=l},YNzw:function(e,t){var n=\"object\"==typeof wx&&\"function\"==typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:\"undefined\"==typeof document&&\"undefined\"!=typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:\"undefined\"==typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:function(e){var t={},n=e.match(/Firefox\\/([\\d.]+)/),i=e.match(/MSIE\\s([\\d.]+)/)||e.match(/Trident\\/.+?rv:(([\\d.]+))/),r=e.match(/Edge\\/([\\d.]+)/),o=/micromessenger/i.test(e);n&&(t.firefox=!0,t.version=n[1]);i&&(t.ie=!0,t.version=i[1]);r&&(t.edge=!0,t.version=r[1]);o&&(t.weChat=!0);return{browser:t,os:{},node:!1,canvasSupported:!!document.createElement(\"canvas\").getContext,svgSupported:\"undefined\"!=typeof SVGRect,touchEventsSupported:\"ontouchstart\"in window&&!t.ie&&!t.edge,pointerEventsSupported:\"onpointerdown\"in window&&(t.edge||t.ie&&t.version>=11),domSupported:\"undefined\"!=typeof document}}(navigator.userAgent);e.exports=n},YbE0:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\").parsePercent,o=i.each;e.exports=function(e){var t=function(e){var t=[],n=[];return e.eachSeriesByType(\"boxplot\",function(e){var r=e.getBaseAxis(),o=i.indexOf(n,r);o<0&&(o=n.length,n[o]=r,t[o]={axis:r,seriesModels:[]}),t[o].seriesModels.push(e)}),t}(e);o(t,function(e){var t=e.seriesModels;t.length&&(function(e){var t,n,a=e.axis,s=e.seriesModels,l=s.length,u=e.boxWidthList=[],c=e.boxOffsetList=[],h=[];if(\"category\"===a.type)n=a.getBandWidth();else{var d=0;o(s,function(e){d=Math.max(d,e.getData().count())}),t=a.getExtent(),Math.abs(t[1]-t[0])}o(s,function(e){var t=e.get(\"boxWidth\");i.isArray(t)||(t=[t,t]),h.push([r(t[0],n)||0,r(t[1],n)||0])});var f=.8*n-2,p=f/l*.3,g=(f-p*(l-1))/l,m=g/2-f/2;o(s,function(e,t){c.push(m),m+=p+g,u.push(Math.min(Math.max(g,h[t][0]),h[t][1]))})}(e),o(t,function(t,n){!function(e,t,n){var i=e.coordinateSystem,r=e.getData(),o=n/2,a=\"horizontal\"===e.get(\"layout\")?0:1,s=1-a,l=[\"x\",\"y\"],u=r.mapDimension(l[a]),c=r.mapDimension(l[s],!0);if(!(null==u||c.length<5))for(var h=0;h<r.count();h++){var d=r.get(u,h),f=b(d,c[2],h),p=b(d,c[0],h),g=b(d,c[1],h),m=b(d,c[3],h),v=b(d,c[4],h),y=[];x(y,g,0),x(y,m,1),y.push(p,g,v,m),_(y,p),_(y,v),_(y,f),r.setItemLayout(h,{initBaseline:f[s],ends:y})}function b(e,n,o){var l,u=r.get(n,o),c=[];return c[a]=e,c[s]=u,isNaN(e)||isNaN(u)?l=[NaN,NaN]:(l=i.dataToPoint(c))[a]+=t,l}function x(e,t,n){var i=t.slice(),r=t.slice();i[a]+=o,r[a]-=o,n?e.push(i,r):e.push(r,i)}function _(e,t){var n=t.slice(),i=t.slice();n[a]-=o,i[a]+=o,e.push(n,i)}}(t,e.boxOffsetList[n],e.boxWidthList[n])}))})}},Ylhr:function(e,t,n){var i=n(\"/gxq\").each,r=n(\"AlhT\"),o=n(\"h0jU\"),a=n(\"BNYN\"),s=n(\"vXqC\"),l=n(\"0sHC\"),u=n(\"gV7x\").createTask,c=n(\"CqCN\"),h=s.makeInner(),d=c();function f(){this.group=new r,this.uid=o.getUID(\"viewChart\"),this.renderTask=u({plan:v,reset:y}),this.renderTask.context={view:this}}f.prototype={type:\"chart\",init:function(e,t){},render:function(e,t,n,i){},highlight:function(e,t,n,i){m(e.getData(),i,\"emphasis\")},downplay:function(e,t,n,i){m(e.getData(),i,\"normal\")},remove:function(e,t){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var p=f.prototype;function g(e,t,n){if(e&&(e.trigger(t,n),e.isGroup&&!l.isHighDownDispatcher(e)))for(var i=0,r=e.childCount();i<r;i++)g(e.childAt(i),t,n)}function m(e,t,n){var r=s.queryDataIndex(e,t),o=t&&null!=t.highlightKey?l.getHighlightDigit(t.highlightKey):null;null!=r?i(s.normalizeToArray(r),function(t){g(e.getItemGraphicEl(t),n,o)}):e.eachItemGraphicEl(function(e){g(e,n,o)})}function v(e){return d(e.model)}function y(e){var t=e.model,n=e.ecModel,i=e.api,r=e.payload,o=t.pipelineContext.progressiveRender,a=e.view,s=r&&h(r).updateMethod,l=o?\"incrementalPrepareRender\":s&&a[s]?s:\"render\";return\"render\"!==l&&a[l](t,n,i,r),b[l]}p.updateView=p.updateLayout=p.updateVisual=function(e,t,n,i){this.render(e,t,n,i)},a.enableClassExtend(f,[\"dispose\"]),a.enableClassManagement(f,{registerWhenExtend:!0}),f.markUpdateMethod=function(e,t){h(e).updateMethod=t};var b={incrementalPrepareRender:{progress:function(e,t){t.view.incrementalRender(e,t.model,t.ecModel,t.api,t.payload)}},render:{forceFirstProgress:!0,progress:function(e,t){t.view.render(t.model,t.ecModel,t.api,t.payload)}}},x=f;e.exports=x},Yobk:function(e,t,n){var i=n(\"77Pl\"),r=n(\"qio6\"),o=n(\"xnc9\"),a=n(\"ax3d\")(\"IE_PROTO\"),s=function(){},l=function(){var e,t=n(\"ON07\")(\"iframe\"),i=o.length;for(t.style.display=\"none\",n(\"RPLV\").appendChild(t),t.src=\"javascript:\",(e=t.contentWindow.document).open(),e.write(\"<script>document.F=Object<\\/script>\"),e.close(),l=e.F;i--;)delete l.prototype[o[i]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=i(e),n=new s,s.prototype=null,n[a]=e):n=l(),void 0===t?n:r(n,t)}},YpIy:function(e,t){t.updateViewOnPan=function(e,t,n){var i=e.target,r=i.position;r[0]+=t,r[1]+=n,i.dirty()},t.updateViewOnZoom=function(e,t,n,i){var r=e.target,o=e.zoomLimit,a=r.position,s=r.scale,l=e.zoom=e.zoom||1;if(l*=t,o){var u=o.min||0,c=o.max||1/0;l=Math.max(Math.min(c,l),u)}var h=l/e.zoom;e.zoom=l,a[0]-=(n-a[0])*(h-1),a[1]-=(i-a[1])*(h-1),s[0]*=h,s[1]*=h,r.dirty()}},YqdL:function(e,t,n){var i=n(\"/gxq\"),r=n(\"2HcM\");function o(e,t){r.call(this,\"radius\",e,t),this.type=\"category\"}o.prototype={constructor:o,pointToData:function(e,t){return this.polar.pointToData(e,t)[\"radius\"===this.dim?0:1]},dataToRadius:r.prototype.dataToCoord,radiusToData:r.prototype.coordToData},i.inherits(o,r);var a=o;e.exports=a},YsUA:function(e,t,n){n(\"auIi\"),n(\"+PQg\"),n(\"AbHi\"),n(\"RTd5\"),n(\"u9lB\"),n(\"DknX\"),n(\"JMu0\")},Z2m1:function(e,t,n){var i=n(\"/gxq\");e.exports=function(e){var t=[];i.each(e.series,function(e){e&&\"map\"===e.type&&(t.push(e),e.map=e.map||e.mapType,i.defaults(e,e.mapLocation))})}},Z6qg:function(e,t,n){(function(e){\"use strict\";var t={},n=/[^\\s\\u00a0]/,i=e.Pos,r=e.cmpPos;function o(e){var t=e.search(n);return-1==t?0:t}function a(e,t){var n=e.getMode();return!1!==n.useInnerComments&&n.innerMode?e.getModeAt(t):n}e.commands.toggleComment=function(e){e.toggleComment()},e.defineExtension(\"toggleComment\",function(e){e||(e=t);for(var n=1/0,r=this.listSelections(),o=null,a=r.length-1;a>=0;a--){var s=r[a].from(),l=r[a].to();s.line>=n||(l.line>=n&&(l=i(n,0)),n=s.line,null==o?this.uncomment(s,l,e)?o=\"un\":(this.lineComment(s,l,e),o=\"line\"):\"un\"==o?this.uncomment(s,l,e):this.lineComment(s,l,e))}}),e.defineExtension(\"lineComment\",function(e,r,s){s||(s=t);var l=this,u=a(l,e),c=l.getLine(e.line);if(null!=c&&(h=e,d=c,!/\\bstring\\b/.test(l.getTokenTypeAt(i(h.line,0)))||/^[\\'\\\"\\`]/.test(d))){var h,d,f=s.lineComment||u.lineComment;if(f){var p=Math.min(0!=r.ch||r.line==e.line?r.line+1:r.line,l.lastLine()+1),g=null==s.padding?\" \":s.padding,m=s.commentBlankLines||e.line==r.line;l.operation(function(){if(s.indent){for(var t=null,r=e.line;r<p;++r){var a=(u=l.getLine(r)).slice(0,o(u));(null==t||t.length>a.length)&&(t=a)}for(r=e.line;r<p;++r){var u=l.getLine(r),c=t.length;(m||n.test(u))&&(u.slice(0,c)!=t&&(c=o(u)),l.replaceRange(t+f+g,i(r,0),i(r,c)))}}else for(r=e.line;r<p;++r)(m||n.test(l.getLine(r)))&&l.replaceRange(f+g,i(r,0))})}else(s.blockCommentStart||u.blockCommentStart)&&(s.fullLines=!0,l.blockComment(e,r,s))}}),e.defineExtension(\"blockComment\",function(e,o,s){s||(s=t);var l=this,u=a(l,e),c=s.blockCommentStart||u.blockCommentStart,h=s.blockCommentEnd||u.blockCommentEnd;if(c&&h){if(!/\\bcomment\\b/.test(l.getTokenTypeAt(i(e.line,0)))){var d=Math.min(o.line,l.lastLine());d!=e.line&&0==o.ch&&n.test(l.getLine(d))&&--d;var f=null==s.padding?\" \":s.padding;e.line>d||l.operation(function(){if(0!=s.fullLines){var t=n.test(l.getLine(d));l.replaceRange(f+h,i(d)),l.replaceRange(c+f,i(e.line,0));var a=s.blockCommentLead||u.blockCommentLead;if(null!=a)for(var p=e.line+1;p<=d;++p)(p!=d||t)&&l.replaceRange(a+f,i(p,0))}else{var g=0==r(l.getCursor(\"to\"),o),m=!l.somethingSelected();l.replaceRange(h,o),g&&l.setSelection(m?o:l.getCursor(\"from\"),o),l.replaceRange(c,e)}})}}else(s.lineComment||u.lineComment)&&0!=s.fullLines&&l.lineComment(e,o,s)}),e.defineExtension(\"uncomment\",function(e,r,o){o||(o=t);var s,l=this,u=a(l,e),c=Math.min(0!=r.ch||r.line==e.line?r.line:r.line-1,l.lastLine()),h=Math.min(e.line,c),d=o.lineComment||u.lineComment,f=[],p=null==o.padding?\" \":o.padding;e:if(d){for(var g=h;g<=c;++g){var m=l.getLine(g),v=m.indexOf(d);if(v>-1&&!/comment/.test(l.getTokenTypeAt(i(g,v+1)))&&(v=-1),-1==v&&n.test(m))break e;if(v>-1&&n.test(m.slice(0,v)))break e;f.push(m)}if(l.operation(function(){for(var e=h;e<=c;++e){var t=f[e-h],n=t.indexOf(d),r=n+d.length;n<0||(t.slice(r,r+p.length)==p&&(r+=p.length),s=!0,l.replaceRange(\"\",i(e,n),i(e,r)))}}),s)return!0}var y=o.blockCommentStart||u.blockCommentStart,b=o.blockCommentEnd||u.blockCommentEnd;if(!y||!b)return!1;var x=o.blockCommentLead||u.blockCommentLead,_=l.getLine(h),w=_.indexOf(y);if(-1==w)return!1;var C=c==h?_:l.getLine(c),S=C.indexOf(b,c==h?w+y.length:0),k=i(h,w+1),T=i(c,S+1);if(-1==S||!/comment/.test(l.getTokenTypeAt(k))||!/comment/.test(l.getTokenTypeAt(T))||l.getRange(k,T,\"\\n\").indexOf(b)>-1)return!1;var M=_.lastIndexOf(y,e.ch),D=-1==M?-1:_.slice(0,e.ch).indexOf(b,M+y.length);if(-1!=M&&-1!=D&&D+b.length!=e.ch)return!1;D=C.indexOf(b,r.ch);var A=C.slice(r.ch).lastIndexOf(y,D-r.ch);return M=-1==D||-1==A?-1:r.ch+A,(-1==D||-1==M||M==r.ch)&&(l.operation(function(){l.replaceRange(\"\",i(c,S-(p&&C.slice(S-p.length,S)==p?p.length:0)),i(c,S+b.length));var e=w+y.length;if(p&&_.slice(e,e+p.length)==p&&(e+=p.length),l.replaceRange(\"\",i(h,w),i(h,e)),x)for(var t=h+1;t<=c;++t){var r=l.getLine(t),o=r.indexOf(x);if(-1!=o&&!n.test(r.slice(0,o))){var a=o+x.length;p&&r.slice(a,a+p.length)==p&&(a+=p.length),l.replaceRange(\"\",i(t,o),i(t,a))}}}),!0)})})(n(\"8U58\"))},\"ZJ+T\":function(e,t,n){var i=n(\"8b51\"),r=n(\"NKek\").onIrrelevantElement,o=n(\"0sHC\");function a(e){return i.create(e)}t.makeRectPanelClipPath=function(e){return e=a(e),function(t,n){return o.clipPointsByRect(t,e)}},t.makeLinearBrushOtherExtent=function(e,t){return e=a(e),function(n){var i=null!=t?t:n,r=i?e.width:e.height,o=i?e.x:e.y;return[o,o+(r||0)]}},t.makeRectIsTargetByCursor=function(e,t,n){return e=a(e),function(i,o,a){return e.contain(o[0],o[1])&&!r(i,t,n)}}},ZRmN:function(e,t,n){var i=n(\"Icdr\");n(\"NjeB\");var r=i.extendComponentModel({type:\"polar\",dependencies:[\"polarAxis\",\"angleAxis\"],coordinateSystem:null,findAxisModel:function(e){var t;return this.ecModel.eachComponent(e,function(e){e.getCoordSysModel()===this&&(t=e)},this),t},defaultOption:{zlevel:0,z:0,center:[\"50%\",\"50%\"],radius:\"80%\"}});e.exports=r},Zcwg:function(e,t,n){\"use strict\";t.__esModule=!0;var i=n(\"2kvA\");var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e)}return e.prototype.beforeEnter=function(e){(0,i.addClass)(e,\"collapse-transition\"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height=\"0\",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+\"px\",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height=\"\",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow=\"hidden\"},e.prototype.afterEnter=function(e){(0,i.removeClass)(e,\"collapse-transition\"),e.style.height=\"\",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+\"px\",e.style.overflow=\"hidden\"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,i.addClass)(e,\"collapse-transition\"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,i.removeClass)(e,\"collapse-transition\"),e.style.height=\"\",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:\"ElCollapseTransition\",functional:!0,render:function(e,t){var n=t.children;return e(\"transition\",{on:new r},n)}}},ZtEr:function(e,t,n){var i=n(\"Mlni\").extend({type:\"markArea\",defaultOption:{zlevel:0,z:1,tooltip:{trigger:\"item\"},animation:!1,label:{show:!0,position:\"top\"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:\"top\"}}}});e.exports=i},ZuqD:function(e,t,n){var i=n(\"/gxq\"),r=n(\"F8oC\"),o=n(\"bBvJ\"),a=r.extend({type:\"timeline.slider\",defaultOption:{backgroundColor:\"rgba(0,0,0,0)\",borderColor:\"#ccc\",borderWidth:0,orient:\"horizontal\",inverse:!1,tooltip:{trigger:\"item\"},symbol:\"emptyCircle\",symbolSize:10,lineStyle:{show:!0,width:2,color:\"#304654\"},label:{position:\"auto\",show:!0,interval:\"auto\",rotate:0,color:\"#304654\"},itemStyle:{color:\"#304654\",borderWidth:1},checkpointStyle:{symbol:\"circle\",symbolSize:13,color:\"#c23531\",borderWidth:5,borderColor:\"rgba(194,53,49, 0.5)\",animation:!0,animationDuration:300,animationEasing:\"quinticInOut\"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:\"left\",playIcon:\"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z\",stopIcon:\"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z\",nextIcon:\"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z\",prevIcon:\"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z\",color:\"#304654\",borderColor:\"#304654\",borderWidth:1},emphasis:{label:{show:!0,color:\"#c23531\"},itemStyle:{color:\"#c23531\"},controlStyle:{color:\"#c23531\",borderColor:\"#c23531\",borderWidth:2}},data:[]}});i.mixin(a,o);var s=a;e.exports=s},Zzip:function(e,t,n){e.exports={default:n(\"/n6Q\"),__esModule:!0}},a1DW:function(e,t,n){var i=n(\"/gxq\"),r=n(\"EJsE\"),o=n(\"sK5G\").seriesModelMixin,a=r.extend({type:\"series.candlestick\",dependencies:[\"xAxis\",\"yAxis\",\"grid\"],defaultValueDimensions:[{name:\"open\",defaultTooltip:!0},{name:\"close\",defaultTooltip:!0},{name:\"lowest\",defaultTooltip:!0},{name:\"highest\",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:\"cartesian2d\",legendHoverLink:!0,hoverAnimation:!0,layout:null,clip:!0,itemStyle:{color:\"#c23531\",color0:\"#314656\",borderWidth:1,borderColor:\"#c23531\",borderColor0:\"#314656\"},emphasis:{itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:\"mod\",animationUpdate:!1,animationEasing:\"linear\",animationDuration:300},getShadowDim:function(){return\"open\"},brushSelector:function(e,t,n){var i=t.getItemLayout(e);return i&&n.rect(i.brushRect)}});i.mixin(a,o,!0);var s=a;e.exports=s},a1Sp:function(e,t){var n=\"undefined\"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(e){setTimeout(e,16)};e.exports=n},aGTD:function(e,t,n){(function(e){\"use strict\";var t=\"CodeMirror-activeline\",n=\"CodeMirror-activeline-background\",i=\"CodeMirror-activeline-gutter\";function r(e){for(var r=0;r<e.state.activeLines.length;r++)e.removeLineClass(e.state.activeLines[r],\"wrap\",t),e.removeLineClass(e.state.activeLines[r],\"background\",n),e.removeLineClass(e.state.activeLines[r],\"gutter\",i)}function o(e,o){for(var a=[],s=0;s<o.length;s++){var l=o[s],u=e.getOption(\"styleActiveLine\");if(\"object\"==typeof u&&u.nonEmpty?l.anchor.line==l.head.line:l.empty()){var c=e.getLineHandleVisualStart(l.head.line);a[a.length-1]!=c&&a.push(c)}}(function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0})(e.state.activeLines,a)||e.operation(function(){r(e);for(var o=0;o<a.length;o++)e.addLineClass(a[o],\"wrap\",t),e.addLineClass(a[o],\"background\",n),e.addLineClass(a[o],\"gutter\",i);e.state.activeLines=a})}function a(e,t){o(e,t.ranges)}e.defineOption(\"styleActiveLine\",!1,function(t,n,i){var s=i!=e.Init&&i;n!=s&&(s&&(t.off(\"beforeSelectionChange\",a),r(t),delete t.state.activeLines),n&&(t.state.activeLines=[],o(t,t.listSelections()),t.on(\"beforeSelectionChange\",a)))})})(n(\"8U58\"))},aMwW:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=131)}({131:function(e,t,n){\"use strict\";n.r(t);var i=n(5),r=n.n(i),o=n(17),a=n.n(o),s=n(2),l=n(3),u=n(7),c=n.n(u),h={name:\"ElTooltip\",mixins:[r.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:\"dark\"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:\"el-fade-in-linear\"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:\"el-tooltip-\"+Object(l.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new c.a({data:{node:\"\"},render:function(e){return this.node}}).$mount(),this.debounceClose=a()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e(\"transition\",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e(\"div\",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:\"popper\",attrs:{role:\"tooltip\",id:this.tooltipId,\"aria-hidden\":this.disabled||!this.showPopper?\"true\":\"false\"},directives:[{name:\"show\",value:!this.disabled&&this.showPopper}],class:[\"el-tooltip__popper\",\"is-\"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var n=this.getFirstElement();if(!n)return null;var i=n.data=n.data||{};return i.staticClass=this.addTooltipClass(i.staticClass),n},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute(\"aria-describedby\",this.tooltipId),this.$el.setAttribute(\"tabindex\",this.tabindex),Object(s.on)(this.referenceElm,\"mouseenter\",this.show),Object(s.on)(this.referenceElm,\"mouseleave\",this.hide),Object(s.on)(this.referenceElm,\"focus\",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),Object(s.on)(this.referenceElm,\"blur\",this.handleBlur),Object(s.on)(this.referenceElm,\"click\",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?Object(s.addClass)(this.referenceElm,\"focusing\"):Object(s.removeClass)(this.referenceElm,\"focusing\")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?\"el-tooltip \"+e.replace(\"el-tooltip\",\"\"):\"el-tooltip\"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,n=0;n<e.length;n++)e[n]&&e[n].tag&&(t=e[n]);return t}},beforeDestroy:function(){this.popperVM&&this.popperVM.$destroy()},destroyed:function(){var e=this.referenceElm;1===e.nodeType&&(Object(s.off)(e,\"mouseenter\",this.show),Object(s.off)(e,\"mouseleave\",this.hide),Object(s.off)(e,\"focus\",this.handleFocus),Object(s.off)(e,\"blur\",this.handleBlur),Object(s.off)(e,\"click\",this.removeFocusing))},install:function(e){e.component(h.name,h)}};t.default=h},17:function(e,t){e.exports=n(\"ON3O\")},2:function(e,t){e.exports=n(\"2kvA\")},3:function(e,t){e.exports=n(\"ylDJ\")},5:function(e,t){e.exports=n(\"fKx3\")},7:function(e,t){e.exports=n(\"7+uW\")}})},aW5l:function(e,t,n){\"use strict\";t.__esModule=!0;n(\"ylDJ\");t.default={mounted:function(){},methods:{getMigratingConfig:function(){return{props:{},events:{}}}}}},aX1R:function(e,t,n){(function(e){var t={pairs:\"()[]{}''\\\"\\\"\",closeBefore:\")]}'\\\":;>\",triples:\"\",explode:\"[]{}\"},n=e.Pos;function i(e,n){return\"pairs\"==n&&\"string\"==typeof e?e:\"object\"==typeof e&&null!=e[n]?e[n]:t[n]}e.defineOption(\"autoCloseBrackets\",!1,function(t,n,a){a&&a!=e.Init&&(t.removeKeyMap(r),t.state.closeBrackets=null),n&&(o(i(n,\"pairs\")),t.state.closeBrackets=n,t.addKeyMap(r))});var r={Backspace:function(t){var r=s(t);if(!r||t.getOption(\"disableInput\"))return e.Pass;for(var o=i(r,\"pairs\"),a=t.listSelections(),l=0;l<a.length;l++){if(!a[l].empty())return e.Pass;var c=u(t,a[l].head);if(!c||o.indexOf(c)%2!=0)return e.Pass}for(var l=a.length-1;l>=0;l--){var h=a[l].head;t.replaceRange(\"\",n(h.line,h.ch-1),n(h.line,h.ch+1),\"+delete\")}},Enter:function(t){var n=s(t),r=n&&i(n,\"explode\");if(!r||t.getOption(\"disableInput\"))return e.Pass;for(var o=t.listSelections(),a=0;a<o.length;a++){if(!o[a].empty())return e.Pass;var c=u(t,o[a].head);if(!c||r.indexOf(c)%2!=0)return e.Pass}t.operation(function(){var e=t.lineSeparator()||\"\\n\";t.replaceSelection(e+e,null),l(t,-1),o=t.listSelections();for(var n=0;n<o.length;n++){var i=o[n].head.line;t.indentLine(i,null,!0),t.indentLine(i+1,null,!0)}})}};function o(e){for(var t=0;t<e.length;t++){var n=e.charAt(t),i=\"'\"+n+\"'\";r[i]||(r[i]=a(n))}}function a(t){return function(r){return function(t,r){var o=s(t);if(!o||t.getOption(\"disableInput\"))return e.Pass;var a=i(o,\"pairs\"),u=a.indexOf(r);if(-1==u)return e.Pass;for(var h,d=i(o,\"closeBefore\"),f=i(o,\"triples\"),p=a.charAt(u+1)==r,g=t.listSelections(),m=u%2==0,v=0;v<g.length;v++){var y,b=g[v],x=b.head,_=t.getRange(x,n(x.line,x.ch+1));if(m&&!b.empty())y=\"surround\";else if(!p&&m||_!=r)if(p&&x.ch>1&&f.indexOf(r)>=0&&t.getRange(n(x.line,x.ch-2),x)==r+r){if(x.ch>2&&/\\bstring/.test(t.getTokenTypeAt(n(x.line,x.ch-2))))return e.Pass;y=\"addFour\"}else if(p){var w=0==x.ch?\" \":t.getRange(n(x.line,x.ch-1),x);if(e.isWordChar(_)||w==r||e.isWordChar(w))return e.Pass;y=\"both\"}else{if(!m||!(0===_.length||/\\s/.test(_)||d.indexOf(_)>-1))return e.Pass;y=\"both\"}else y=p&&c(t,x)?\"both\":f.indexOf(r)>=0&&t.getRange(x,n(x.line,x.ch+3))==r+r+r?\"skipThree\":\"skip\";if(h){if(h!=y)return e.Pass}else h=y}var C=u%2?a.charAt(u-1):r,S=u%2?r:a.charAt(u+1);t.operation(function(){if(\"skip\"==h)l(t,1);else if(\"skipThree\"==h)l(t,3);else if(\"surround\"==h){for(var i=t.getSelections(),r=0;r<i.length;r++)i[r]=C+i[r]+S;t.replaceSelections(i,\"around\"),i=t.listSelections().slice();for(var r=0;r<i.length;r++)i[r]=(o=i[r],void 0,a=e.cmpPos(o.anchor,o.head)>0,{anchor:new n(o.anchor.line,o.anchor.ch+(a?-1:1)),head:new n(o.head.line,o.head.ch+(a?1:-1))});t.setSelections(i)}else\"both\"==h?(t.replaceSelection(C+S,null),t.triggerElectric(C+S),l(t,-1)):\"addFour\"==h&&(t.replaceSelection(C+C+C+C,\"before\"),l(t,1));var o,a})}(r,t)}}function s(e){var t=e.state.closeBrackets;return!t||t.override?t:e.getModeAt(e.getCursor()).closeBrackets||t}function l(e,t){for(var n=[],i=e.listSelections(),r=0,o=0;o<i.length;o++){var a=i[o];a.head==e.getCursor()&&(r=o);var s=a.head.ch||t>0?{line:a.head.line,ch:a.head.ch+t}:{line:a.head.line-1};n.push({anchor:s,head:s})}e.setSelections(n,r)}function u(e,t){var i=e.getRange(n(t.line,t.ch-1),n(t.line,t.ch+1));return 2==i.length?i:null}function c(e,t){var i=e.getTokenAt(n(t.line,t.ch+1));return/\\bstring/.test(i.type)&&i.start==t.ch&&(0==t.ch||!/\\bstring/.test(e.getTokenTypeAt(t)))}o(t.pairs+\"`\")})(n(\"8U58\"))},aYad:function(e,t,n){var i=n(\"/gxq\"),r=n(\"DRaW\"),o=n(\"UAiw\"),a=n(\"C3Vi\"),s=n(\"YNzw\"),l=n(\"HHfb\"),u=i.each,c=l.toCamelCase,h=[\"\",\"-webkit-\",\"-moz-\",\"-o-\"];function d(e){var t,n,o=[],a=e.get(\"transitionDuration\"),d=e.get(\"backgroundColor\"),f=e.getModel(\"textStyle\"),p=e.get(\"padding\");return a&&o.push((n=\"left \"+(t=a)+\"s cubic-bezier(0.23, 1, 0.32, 1),top \"+t+\"s cubic-bezier(0.23, 1, 0.32, 1)\",i.map(h,function(e){return e+\"transition:\"+n}).join(\";\"))),d&&(s.canvasSupported?o.push(\"background-Color:\"+d):(o.push(\"background-Color:#\"+r.toHex(d)),o.push(\"filter:alpha(opacity=70)\"))),u([\"width\",\"color\",\"radius\"],function(t){var n=\"border-\"+t,i=c(n),r=e.get(i);null!=r&&o.push(n+\":\"+r+(\"color\"===t?\"\":\"px\"))}),o.push(function(e){var t=[],n=e.get(\"fontSize\"),i=e.getTextColor();return i&&t.push(\"color:\"+i),t.push(\"font:\"+e.getFont()),n&&t.push(\"line-height:\"+Math.round(3*n/2)+\"px\"),u([\"decoration\",\"align\"],function(n){var i=e.get(n);i&&t.push(\"text-\"+n+\":\"+i)}),t.join(\";\")}(f)),null!=p&&o.push(\"padding:\"+l.normalizeCssArray(p).join(\"px \")+\"px\"),o.join(\";\")+\";\"}function f(e,t,n,i,r){var o=t&&t.painter;if(n){var s=o&&o.getViewportRoot();s&&a.transformLocalCoord(e,s,document.body,i,r)}else{e[0]=i,e[1]=r;var l=o&&o.getViewportRootOffset();l&&(e[0]+=l.offsetLeft,e[1]+=l.offsetTop)}}function p(e,t,n){if(s.wxa)return null;var i=document.createElement(\"div\");i.domBelongToZr=!0,this.el=i;var r=this._zr=t.getZr(),a=this._appendToBody=n&&n.appendToBody;this._styleCoord=[0,0],f(this._styleCoord,r,a,t.getWidth()/2,t.getHeight()/2),a?document.body.appendChild(i):e.appendChild(i),this._container=e,this._show=!1,this._hideTimeout;var l=this;i.onmouseenter=function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!l._enterable){var t=r.handler,n=r.painter.getViewportRoot();o.normalizeEvent(n,e,!0),t.dispatch(\"mousemove\",e)}},i.onmouseleave=function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1}}p.prototype={constructor:p,_enterable:!0,update:function(){var e=this._container,t=e.currentStyle||document.defaultView.getComputedStyle(e),n=e.style;\"absolute\"!==n.position&&\"absolute\"!==t.position&&(n.position=\"relative\")},show:function(e){clearTimeout(this._hideTimeout);var t=this.el,n=this._styleCoord;t.style.cssText=\"position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;\"+d(e)+\";left:\"+n[0]+\"px;top:\"+n[1]+\"px;\"+(e.get(\"extraCssText\")||\"\"),t.style.display=t.innerHTML?\"block\":\"none\",t.style.pointerEvents=this._enterable?\"auto\":\"none\",this._show=!0},setContent:function(e){this.el.innerHTML=null==e?\"\":e},setEnterable:function(e){this._enterable=e},getSize:function(){var e=this.el;return[e.clientWidth,e.clientHeight]},moveTo:function(e,t){var n=this._styleCoord;f(n,this._zr,this._appendToBody,e,t);var i=this.el.style;i.left=n[0]+\"px\",i.top=n[1]+\"px\"},hide:function(){this.el.style.display=\"none\",this._show=!1},hideLater:function(e){!this._show||this._inContent&&this._enterable||(e?(this._hideDelay=e,this._show=!1,this._hideTimeout=setTimeout(i.bind(this.hide,this),e)):this.hide())},isShow:function(){return this._show},dispose:function(){this.el.parentNode.removeChild(this.el)},getOuterSize:function(){var e=this.el.clientWidth,t=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var n=document.defaultView.getComputedStyle(this.el);n&&(e+=parseInt(n.borderLeftWidth,10)+parseInt(n.borderRightWidth,10),t+=parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10))}return{width:e,height:t}}};var g=p;e.exports=g},akwy:function(e,t){e.exports=function(e){var t={};e.eachSeriesByType(\"graph\",function(e){var n=e.getCategoriesData(),i=e.getData(),r={};n.each(function(i){var o=n.getName(i);r[\"ec-\"+o]=i;var a=n.getItemModel(i),s=a.get(\"itemStyle.color\")||e.getColorFromPalette(o,t);n.setItemVisual(i,\"color\",s);for(var l=[\"opacity\",\"symbol\",\"symbolSize\",\"symbolKeepAspect\"],u=0;u<l.length;u++){var c=a.getShallow(l[u],!0);null!=c&&n.setItemVisual(i,l[u],c)}}),n.count()&&i.each(function(e){var t=i.getItemModel(e).getShallow(\"category\");if(null!=t){\"string\"==typeof t&&(t=r[\"ec-\"+t]);for(var o=[\"color\",\"opacity\",\"symbol\",\"symbolSize\",\"symbolKeepAspect\"],a=0;a<o.length;a++)null==i.getItemVisual(e,o[a],!0)&&i.setItemVisual(e,o[a],n.getItemVisual(t,o[a]))}})})}},ao1T:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Rfu2\"),o=n(\"hcq/\"),a=n(\"+2Ke\").SOURCE_FORMAT_ORIGINAL,s=n(\"mvCM\").getDimensionTypeByAxis,l=n(\"vXqC\").getDataItemValue,u=n(\"rctg\"),c=n(\"zZZ/\").getCoordSysInfoBySeries,h=n(\"rrAD\"),d=n(\"qVJQ\").enableDataStack,f=n(\"kdOt\").makeSeriesEncodeForAxisCoordSys;var p=function(e,t,n){n=n||{},h.isInstance(e)||(e=h.seriesDataToSource(e));var p,g=t.get(\"coordinateSystem\"),m=u.get(g),v=c(t);v&&(p=i.map(v.coordSysDims,function(e){var t={name:e},n=v.axisMap.get(e);if(n){var i=n.get(\"type\");t.type=s(i)}return t})),p||(p=m&&(m.getDimensionsInfo?m.getDimensionsInfo():m.dimensions.slice())||[\"x\",\"y\"]);var y,b,x=o(e,{coordDimensions:p,generateCoord:n.generateCoord,encodeDefaulter:n.useEncodeDefaulter?i.curry(f,p,t):null});v&&i.each(x,function(e,t){var n=e.coordDim,i=v.categoryAxisMap.get(n);i&&(null==y&&(y=t),e.ordinalMeta=i.getOrdinalMeta()),null!=e.otherDims.itemName&&(b=!0)}),b||null==y||(x[y].otherDims.itemName=0);var _=d(t,x),w=new r(x,t);w.setCalculationInfo(_);var C=null!=y&&function(e){if(e.sourceFormat===a){var t=function(e){for(var t=0;t<e.length&&null==e[t];)t++;return e[t]}(e.data||[]);return null!=t&&!i.isArray(l(t))}}(e)?function(e,t,n,i){return i===y?n:this.defaultDimValueGetter(e,t,n,i)}:null;return w.hasItemOption=!1,w.initData(e,null,C),w};e.exports=p},auIi:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"dCQY\"),a=i.extendComponentModel({type:\"toolbox\",layoutMode:{type:\"box\",ignoreSize:!0},optionUpdated:function(){a.superApply(this,\"optionUpdated\",arguments),r.each(this.option.feature,function(e,t){var n=o.get(t);n&&r.merge(e,n.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:\"horizontal\",left:\"right\",top:\"top\",backgroundColor:\"transparent\",borderColor:\"#ccc\",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:\"#666\",color:\"none\"},emphasis:{iconStyle:{borderColor:\"#3E98C5\"}},tooltip:{show:!1}}}),s=a;e.exports=s},avYi:function(e,t,n){var i=n(\"RiVu\"),r=n(\"qjvV\"),o=n(\"/ZBO\"),a=n(\"42YS\"),s=n(\"/gxq\"),l=function(e){o.call(this,e),r.call(this,e),a.call(this,e),this.id=e.id||i()};l.prototype={type:\"element\",name:\"\",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(e,t){switch(this.draggable){case\"horizontal\":t=0;break;case\"vertical\":e=0}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=e,n[5]+=t,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(e,t){},attrKV:function(e,t){if(\"position\"===e||\"scale\"===e||\"origin\"===e){if(t){var n=this[e];n||(n=this[e]=[]),n[0]=t[0],n[1]=t[1]}}else this[e]=t},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(e,t){if(\"string\"==typeof e)this.attrKV(e,t);else if(s.isObject(e))for(var n in e)e.hasOwnProperty(n)&&this.attrKV(n,e[n]);return this.dirty(!1),this},setClipPath:function(e){var t=this.__zr;t&&e.addSelfToZr(t),this.clipPath&&this.clipPath!==e&&this.removeClipPath(),this.clipPath=e,e.__zr=t,e.__clipTarget=this,this.dirty(!1)},removeClipPath:function(){var e=this.clipPath;e&&(e.__zr&&e.removeSelfFromZr(e.__zr),e.__zr=null,e.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(e){this.__zr=e;var t=this.animators;if(t)for(var n=0;n<t.length;n++)e.animation.addAnimator(t[n]);this.clipPath&&this.clipPath.addSelfToZr(e)},removeSelfFromZr:function(e){this.__zr=null;var t=this.animators;if(t)for(var n=0;n<t.length;n++)e.animation.removeAnimator(t[n]);this.clipPath&&this.clipPath.removeSelfFromZr(e)}},s.mixin(l,a),s.mixin(l,o),s.mixin(l,r);var u=l;e.exports=u},ax3d:function(e,t,n){var i=n(\"e8AB\")(\"keys\"),r=n(\"3Eo+\");e.exports=function(e){return i[e]||(i[e]=r(e))}},\"b/SY\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=r.createHashMap,a=r.each;i.registerProcessor({getTargetSeries:function(e){var t=o();return e.eachComponent(\"dataZoom\",function(e){e.eachTargetAxis(function(e,n,i){var r=i.getAxisProxy(e.name,n);a(r.getTargetSeriesModels(),function(e){t.set(e.uid,e)})})}),t},modifyOutputEnd:!0,overallReset:function(e,t){e.eachComponent(\"dataZoom\",function(e){e.eachTargetAxis(function(e,n,i){i.getAxisProxy(e.name,n).reset(i,t)}),e.eachTargetAxis(function(e,n,i){i.getAxisProxy(e.name,n).filterData(i,t)})}),e.eachComponent(\"dataZoom\",function(e){var t=e.findRepresentativeAxisProxy(),n=t.getDataPercentWindow(),i=t.getDataValueWindow();e.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})})}})},b8C2:function(e,t,n){var i=n(\"C7PF\"),r=i.min,o=i.max,a=i.scale,s=i.distance,l=i.add,u=i.clone,c=i.sub;e.exports=function(e,t,n,i){var h,d,f,p,g=[],m=[],v=[],y=[];if(i){f=[1/0,1/0],p=[-1/0,-1/0];for(var b=0,x=e.length;b<x;b++)r(f,f,e[b]),o(p,p,e[b]);r(f,f,i[0]),o(p,p,i[1])}for(b=0,x=e.length;b<x;b++){var _=e[b];if(n)h=e[b?b-1:x-1],d=e[(b+1)%x];else{if(0===b||b===x-1){g.push(u(e[b]));continue}h=e[b-1],d=e[b+1]}c(m,d,h),a(m,m,t);var w=s(_,h),C=s(_,d),S=w+C;0!==S&&(w/=S,C/=S),a(v,m,-w),a(y,m,C);var k=l([],_,v),T=l([],_,y);i&&(o(k,k,f),r(k,k,p),o(T,T,f),r(T,T,p)),g.push(k),g.push(T)}return n&&g.push(g.shift()),g}},bBvJ:function(e,t,n){var i=n(\"5KBG\").retrieveRawValue,r=n(\"HHfb\"),o=r.getTooltipMarker,a=r.formatTpl,s=n(\"vXqC\").getTooltipRenderMode,l=/\\{@(.+?)\\}/g,u={getDataParams:function(e,t){var n=this.getData(t),i=this.getRawValue(e,t),r=n.getRawIndex(e),a=n.getName(e),l=n.getRawDataItem(e),u=n.getItemVisual(e,\"color\"),c=n.getItemVisual(e,\"borderColor\"),h=this.ecModel.getComponent(\"tooltip\"),d=h&&h.get(\"renderMode\"),f=s(d),p=this.mainType,g=\"series\"===p,m=n.userOutput;return{componentType:p,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:g?this.subType:null,seriesIndex:this.seriesIndex,seriesId:g?this.id:null,seriesName:g?this.name:null,name:a,dataIndex:r,data:l,dataType:t,value:i,color:u,borderColor:c,dimensionNames:m?m.dimensionNames:null,encode:m?m.encode:null,marker:o({color:u,renderMode:f}),$vars:[\"seriesName\",\"name\",\"value\"]}},getFormattedLabel:function(e,t,n,r,o){t=t||\"normal\";var s=this.getData(n),u=s.getItemModel(e),c=this.getDataParams(e,n);null!=r&&c.value instanceof Array&&(c.value=c.value[r]);var h=u.get(\"normal\"===t?[o||\"label\",\"formatter\"]:[t,o||\"label\",\"formatter\"]);return\"function\"==typeof h?(c.status=t,c.dimensionIndex=r,h(c)):\"string\"==typeof h?a(h,c).replace(l,function(t,n){var r=n.length;return\"[\"===n.charAt(0)&&\"]\"===n.charAt(r-1)&&(n=+n.slice(1,r-1)),i(s,e,n)}):void 0},getRawValue:function(e,t){return i(this.getData(t),e)},formatTooltip:function(){}};e.exports=u},bOdI:function(e,t,n){\"use strict\";t.__esModule=!0;var i,r=n(\"C4MV\"),o=(i=r)&&i.__esModule?i:{default:i};t.default=function(e,t,n){return t in e?(0,o.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},bzOU:function(e,t,n){var i=n(\"/gxq\"),r=n(\"C7PF\"),o=n(\"kK7q\"),a=n(\"sOJ4\"),s=n(\"0sHC\"),l=n(\"wWR3\").round,u=[\"fromSymbol\",\"toSymbol\"];function c(e){return\"_\"+e+\"Type\"}function h(e,t,n){var r=t.getItemVisual(n,\"color\"),a=t.getItemVisual(n,e),s=t.getItemVisual(n,e+\"Size\");if(a&&\"none\"!==a){i.isArray(s)||(s=[s,s]);var l=o.createSymbol(a,-s[0]/2,-s[1]/2,s[0],s[1],r);return l.name=e,l}}function d(e,t){e.x1=t[0][0],e.y1=t[0][1],e.x2=t[1][0],e.y2=t[1][1],e.percent=1;var n=t[2];n?(e.cpx1=n[0],e.cpy1=n[1]):(e.cpx1=NaN,e.cpy1=NaN)}function f(e,t,n){s.Group.call(this),this._createLine(e,t,n)}var p=f.prototype;p.beforeUpdate=function(){var e=this.childOfName(\"fromSymbol\"),t=this.childOfName(\"toSymbol\"),n=this.childOfName(\"label\");if(e||t||!n.ignore){for(var i=1,o=this.parent;o;)o.scale&&(i/=o.scale[0]),o=o.parent;var a=this.childOfName(\"line\");if(this.__dirty||a.__dirty){var s=a.shape.percent,l=a.pointAt(0),u=a.pointAt(s),c=r.sub([],u,l);if(r.normalize(c,c),e){e.attr(\"position\",l);var h=a.tangentAt(0);e.attr(\"rotation\",Math.PI/2-Math.atan2(h[1],h[0])),e.attr(\"scale\",[i*s,i*s])}if(t&&(t.attr(\"position\",u),h=a.tangentAt(1),t.attr(\"rotation\",-Math.PI/2-Math.atan2(h[1],h[0])),t.attr(\"scale\",[i*s,i*s])),!n.ignore){var d,f,p,g;n.attr(\"position\",u);var m=n.__labelDistance,v=m[0]*i,y=m[1]*i,b=s/2,x=[(h=a.tangentAt(b))[1],-h[0]],_=a.pointAt(b);x[1]>0&&(x[0]=-x[0],x[1]=-x[1]);var w,C=h[0]<0?-1:1;if(\"start\"!==n.__position&&\"end\"!==n.__position){var S=-Math.atan2(h[1],h[0]);u[0]<l[0]&&(S=Math.PI+S),n.attr(\"rotation\",S)}switch(n.__position){case\"insideStartTop\":case\"insideMiddleTop\":case\"insideEndTop\":case\"middle\":w=-y,p=\"bottom\";break;case\"insideStartBottom\":case\"insideMiddleBottom\":case\"insideEndBottom\":w=y,p=\"top\";break;default:w=0,p=\"middle\"}switch(n.__position){case\"end\":d=[c[0]*v+u[0],c[1]*y+u[1]],f=c[0]>.8?\"left\":c[0]<-.8?\"right\":\"center\",p=c[1]>.8?\"top\":c[1]<-.8?\"bottom\":\"middle\";break;case\"start\":d=[-c[0]*v+l[0],-c[1]*y+l[1]],f=c[0]>.8?\"right\":c[0]<-.8?\"left\":\"center\",p=c[1]>.8?\"bottom\":c[1]<-.8?\"top\":\"middle\";break;case\"insideStartTop\":case\"insideStart\":case\"insideStartBottom\":d=[v*C+l[0],l[1]+w],f=h[0]<0?\"right\":\"left\",g=[-v*C,-w];break;case\"insideMiddleTop\":case\"insideMiddle\":case\"insideMiddleBottom\":case\"middle\":d=[_[0],_[1]+w],f=\"center\",g=[0,-w];break;case\"insideEndTop\":case\"insideEnd\":case\"insideEndBottom\":d=[-v*C+u[0],u[1]+w],f=h[0]>=0?\"right\":\"left\",g=[v*C,-w]}n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[i,i],origin:g})}}}},p._createLine=function(e,t,n){var r=e.hostModel,o=function(e){var t=new a({name:\"line\",subPixelOptimize:!0});return d(t.shape,e),t}(e.getItemLayout(t));o.shape.percent=0,s.initProps(o,{shape:{percent:1}},r,t),this.add(o);var l=new s.Text({name:\"label\",lineLabelOriginalOpacity:1});this.add(l),i.each(u,function(n){var i=h(n,e,t);this.add(i),this[c(n)]=e.getItemVisual(t,n)},this),this._updateCommonStl(e,t,n)},p.updateData=function(e,t,n){var r=e.hostModel,o=this.childOfName(\"line\"),a=e.getItemLayout(t),l={shape:{}};d(l.shape,a),s.updateProps(o,l,r,t),i.each(u,function(n){var i=e.getItemVisual(t,n),r=c(n);if(this[r]!==i){this.remove(this.childOfName(n));var o=h(n,e,t);this.add(o)}this[r]=i},this),this._updateCommonStl(e,t,n)},p._updateCommonStl=function(e,t,n){var r=e.hostModel,o=this.childOfName(\"line\"),a=n&&n.lineStyle,c=n&&n.hoverLineStyle,h=n&&n.labelModel,d=n&&n.hoverLabelModel;if(!n||e.hasItemOption){var f=e.getItemModel(t);a=f.getModel(\"lineStyle\").getLineStyle(),c=f.getModel(\"emphasis.lineStyle\").getLineStyle(),h=f.getModel(\"label\"),d=f.getModel(\"emphasis.label\")}var p=e.getItemVisual(t,\"color\"),g=i.retrieve3(e.getItemVisual(t,\"opacity\"),a.opacity,1);o.useStyle(i.defaults({strokeNoScale:!0,fill:\"none\",stroke:p,opacity:g},a)),o.hoverStyle=c,i.each(u,function(e){var t=this.childOfName(e);t&&(t.setColor(p),t.setStyle({opacity:g}))},this);var m,v,y=h.getShallow(\"show\"),b=d.getShallow(\"show\"),x=this.childOfName(\"label\");if((y||b)&&(m=p||\"#000\",null==(v=r.getFormattedLabel(t,\"normal\",e.dataType)))){var _=r.getRawValue(t);v=null==_?e.getName(t):isFinite(_)?l(_):_}var w=y?v:null,C=b?i.retrieve2(r.getFormattedLabel(t,\"emphasis\",e.dataType),v):null,S=x.style;if(null!=w||null!=C){s.setTextStyle(x.style,h,{text:w},{autoColor:m}),x.__textAlign=S.textAlign,x.__verticalAlign=S.textVerticalAlign,x.__position=h.get(\"position\")||\"middle\";var k=h.get(\"distance\");i.isArray(k)||(k=[k,k]),x.__labelDistance=k}x.hoverStyle=null!=C?{text:C,textFill:d.getTextColor(!0),fontStyle:d.getShallow(\"fontStyle\"),fontWeight:d.getShallow(\"fontWeight\"),fontSize:d.getShallow(\"fontSize\"),fontFamily:d.getShallow(\"fontFamily\")}:{text:null},x.ignore=!y&&!b,s.setHoverStyle(this)},p.highlight=function(){this.trigger(\"emphasis\")},p.downplay=function(){this.trigger(\"normal\")},p.updateLayout=function(e,t){this.setLinePoints(e.getItemLayout(t))},p.setLinePoints=function(e){var t=this.childOfName(\"line\");d(t.shape,e),t.dirty()},i.inherits(f,s.Group);var g=f;e.exports=g},\"c+I8\":function(e,t,n){(function(e){\"use strict\";var t,n,i=e.Pos;function r(e,t){for(var n=function(e){var t=e.flags;return null!=t?t:(e.ignoreCase?\"i\":\"\")+(e.global?\"g\":\"\")+(e.multiline?\"m\":\"\")}(e),i=n,r=0;r<t.length;r++)-1==i.indexOf(t.charAt(r))&&(i+=t.charAt(r));return n==i?e:new RegExp(e.source,i)}function o(e){return/\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(e.source)}function a(e,t,n){t=r(t,\"g\");for(var o=n.line,a=n.ch,s=e.lastLine();o<=s;o++,a=0){t.lastIndex=a;var l=e.getLine(o),u=t.exec(l);if(u)return{from:i(o,u.index),to:i(o,u.index+u[0].length),match:u}}}function s(e,t,n){for(var i,r=0;r<=e.length;){t.lastIndex=r;var o=t.exec(e);if(!o)break;var a=o.index+o[0].length;if(a>e.length-n)break;(!i||a>i.index+i[0].length)&&(i=o),r=o.index+1}return i}function l(e,t,n){t=r(t,\"g\");for(var o=n.line,a=n.ch,l=e.firstLine();o>=l;o--,a=-1){var u=e.getLine(o),c=s(u,t,a<0?0:u.length-a);if(c)return{from:i(o,c.index),to:i(o,c.index+c[0].length),match:c}}}function u(e,t,n,i){if(e.length==t.length)return n;for(var r=0,o=n+Math.max(0,e.length-t.length);;){if(r==o)return r;var a=r+o>>1,s=i(e.slice(0,a)).length;if(s==n)return a;s>n?o=a:r=a+1}}function c(e,c,h,d){var f;this.atOccurrence=!1,this.doc=e,h=h?e.clipPos(h):i(0,0),this.pos={from:h,to:h},\"object\"==typeof d?f=d.caseFold:(f=d,d=null),\"string\"==typeof c?(null==f&&(f=!1),this.matches=function(r,o){return(r?function(e,r,o,a){if(!r.length)return null;var s=a?t:n,l=s(r).split(/\\r|\\n\\r?/);e:for(var c=o.line,h=o.ch,d=e.firstLine()-1+l.length;c>=d;c--,h=-1){var f=e.getLine(c);h>-1&&(f=f.slice(0,h));var p=s(f);if(1==l.length){var g=p.lastIndexOf(l[0]);if(-1==g)continue e;return{from:i(c,u(f,p,g,s)),to:i(c,u(f,p,g+l[0].length,s))}}var m=l[l.length-1];if(p.slice(0,m.length)==m){var v=1;for(o=c-l.length+1;v<l.length-1;v++)if(s(e.getLine(o+v))!=l[v])continue e;var y=e.getLine(c+1-l.length),b=s(y);if(b.slice(b.length-l[0].length)==l[0])return{from:i(c+1-l.length,u(y,b,y.length-l[0].length,s)),to:i(c,u(f,p,m.length,s))}}}}:function(e,r,o,a){if(!r.length)return null;var s=a?t:n,l=s(r).split(/\\r|\\n\\r?/);e:for(var c=o.line,h=o.ch,d=e.lastLine()+1-l.length;c<=d;c++,h=0){var f=e.getLine(c).slice(h),p=s(f);if(1==l.length){var g=p.indexOf(l[0]);if(-1==g)continue e;return o=u(f,p,g,s)+h,{from:i(c,u(f,p,g,s)+h),to:i(c,u(f,p,g+l[0].length,s)+h)}}var m=p.length-l[0].length;if(p.slice(m)==l[0]){for(var v=1;v<l.length-1;v++)if(s(e.getLine(c+v))!=l[v])continue e;var y=e.getLine(c+l.length-1),b=s(y),x=l[l.length-1];if(b.slice(0,x.length)==x)return{from:i(c,u(f,p,m,s)+h),to:i(c+l.length-1,u(y,b,x.length,s))}}}})(e,c,o,f)}):(c=r(c,\"gm\"),d&&!1===d.multiline?this.matches=function(t,n){return(t?l:a)(e,c,n)}:this.matches=function(t,n){return(t?function(e,t,n){if(!o(t))return l(e,t,n);t=r(t,\"gm\");for(var a,u=1,c=e.getLine(n.line).length-n.ch,h=n.line,d=e.firstLine();h>=d;){for(var f=0;f<u&&h>=d;f++){var p=e.getLine(h--);a=null==a?p:p+\"\\n\"+a}u*=2;var g=s(a,t,c);if(g){var m=a.slice(0,g.index).split(\"\\n\"),v=g[0].split(\"\\n\"),y=h+m.length,b=m[m.length-1].length;return{from:i(y,b),to:i(y+v.length-1,1==v.length?b+v[0].length:v[v.length-1].length),match:g}}}}:function(e,t,n){if(!o(t))return a(e,t,n);t=r(t,\"gm\");for(var s,l=1,u=n.line,c=e.lastLine();u<=c;){for(var h=0;h<l&&!(u>c);h++){var d=e.getLine(u++);s=null==s?d:s+\"\\n\"+d}l*=2,t.lastIndex=n.ch;var f=t.exec(s);if(f){var p=s.slice(0,f.index).split(\"\\n\"),g=f[0].split(\"\\n\"),m=n.line+p.length-1,v=p[p.length-1].length;return{from:i(m,v),to:i(m+g.length-1,1==g.length?v+g[0].length:g[g.length-1].length),match:f}}}})(e,c,n)})}String.prototype.normalize?(t=function(e){return e.normalize(\"NFD\").toLowerCase()},n=function(e){return e.normalize(\"NFD\")}):(t=function(e){return e.toLowerCase()},n=function(e){return e}),c.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){for(var n=this.matches(t,this.doc.clipPos(t?this.pos.from:this.pos.to));n&&0==e.cmpPos(n.from,n.to);)t?n.from.ch?n.from=i(n.from.line,n.from.ch-1):n=n.from.line==this.doc.firstLine()?null:this.matches(t,this.doc.clipPos(i(n.from.line-1))):n.to.ch<this.doc.getLine(n.to.line).length?n.to=i(n.to.line,n.to.ch+1):n=n.to.line==this.doc.lastLine()?null:this.matches(t,i(n.to.line+1,0));if(n)return this.pos=n,this.atOccurrence=!0,this.pos.match||!0;var r=i(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:r,to:r},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,n){if(this.atOccurrence){var r=e.splitLines(t);this.doc.replaceRange(r,this.pos.from,this.pos.to,n),this.pos.to=i(this.pos.from.line+r.length-1,r[r.length-1].length+(1==r.length?this.pos.from.ch:0))}}},e.defineExtension(\"getSearchCursor\",function(e,t,n){return new c(this.doc,e,t,n)}),e.defineDocExtension(\"getSearchCursor\",function(e,t,n){return new c(this,e,t,n)}),e.defineExtension(\"selectMatches\",function(t,n){for(var i=[],r=this.getSearchCursor(t,this.getCursor(\"from\"),n);r.findNext()&&!(e.cmpPos(r.to(),this.getCursor(\"to\"))>0);)i.push({anchor:r.from(),head:r.to()});i.length&&this.setSelections(i,0)})})(n(\"8U58\"))},cI6i:function(e,t,n){var i,r=n(\"YNzw\"),o=\"urn:schemas-microsoft-com:vml\",a=\"undefined\"==typeof window?null:window,s=!1,l=a&&a.document;if(l&&!r.canvasSupported)try{!l.namespaces.zrvml&&l.namespaces.add(\"zrvml\",o),i=function(e){return l.createElement(\"<zrvml:\"+e+' class=\"zrvml\">')}}catch(e){i=function(e){return l.createElement(\"<\"+e+' xmlns=\"'+o+'\" class=\"zrvml\">')}}t.doc=l,t.createNode=function(e){return i(e)},t.initVML=function(){if(!s&&l){s=!0;var e=l.styleSheets;e.length<31?l.createStyleSheet().addRule(\".zrvml\",\"behavior:url(#default#VML)\"):e[0].addRule(\".zrvml\",\"behavior:url(#default#VML)\")}}},cN90:function(e,t,n){var i=n(\"EJsE\"),r=n(\"ao1T\"),o=n(\"rctg\"),a=i.extend({type:\"series.heatmap\",getInitialData:function(e,t){return r(this.getSource(),this,{generateCoord:\"value\"})},preventIncremental:function(){var e=o.get(this.get(\"coordinateSystem\"));if(e&&e.dimensions)return\"lng\"===e.dimensions[0]&&\"lat\"===e.dimensions[1]},defaultOption:{coordinateSystem:\"cartesian2d\",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}});e.exports=a},\"cO/Q\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"wUOi\").fromPoints,o=n(\"dZZy\"),a=n(\"1bHA\"),s=n(\"SlE6\"),l=n(\"0sHC\"),u=n(\"vXqC\"),c=n(\"MXTC\"),h=c.Polyline,d=c.Polygon,f=n(\"Ylhr\"),p=n(\"tzpD\"),g=p.prepareDataCoordInfo,m=p.getStackedOnPoint,v=n(\"DDYI\"),y=v.createGridClipPath,b=v.createPolarClipPath;function x(e,t){if(e.length===t.length){for(var n=0;n<e.length;n++){var i=e[n],r=t[n];if(i[0]!==r[0]||i[1]!==r[1])return}return!0}}function _(e,t){var n=[],i=[],o=[],a=[];return r(e,n,i),r(t,o,a),Math.max(Math.abs(n[0]-o[0]),Math.abs(n[1]-o[1]),Math.abs(i[0]-a[0]),Math.abs(i[1]-a[1]))}function w(e){return\"number\"==typeof e?e:e?.5:0}function C(e,t,n){for(var i=t.getBaseAxis(),r=\"x\"===i.dim||\"radius\"===i.dim?0:1,o=[],a=0;a<e.length-1;a++){var s=e[a+1],l=e[a];o.push(l);var u=[];switch(n){case\"end\":u[r]=s[r],u[1-r]=l[1-r],o.push(u);break;case\"middle\":var c=(l[r]+s[r])/2,h=[];u[r]=h[r]=c,u[1-r]=l[1-r],h[1-r]=s[1-r],o.push(u),o.push(h);break;default:u[r]=l[r],u[1-r]=s[1-r],o.push(u)}}return e[a]&&o.push(e[a]),o}function S(e,t,n){var r=e.get(\"showAllSymbol\"),o=\"auto\"===r;if(!r||o){var s=n.getAxesByScale(\"ordinal\")[0];if(s&&(!o||!function(e,t){var n=e.getExtent(),i=Math.abs(n[1]-n[0])/e.scale.count();isNaN(i)&&(i=0);for(var r=t.count(),o=Math.max(1,Math.round(r/5)),s=0;s<r;s+=o)if(1.5*a.getSymbolSize(t,s)[e.isHorizontal()?1:0]>i)return!1;return!0}(s,t))){var l=t.mapDimension(s.dim),u={};return i.each(s.getViewLabels(),function(e){u[e.tickValue]=1}),function(e){return!u.hasOwnProperty(t.get(l,e))}}}}function k(e,t,n){if(\"cartesian2d\"===e.type){var i=e.getBaseAxis().isHorizontal(),r=y(e,t,n);if(!n.get(\"clip\",!0)){var o=r.shape,a=Math.max(o.width,o.height);i?(o.y-=a,o.height+=2*a):(o.x-=a,o.width+=2*a)}return r}return b(e,t,n)}var T=f.extend({type:\"line\",init:function(){var e=new l.Group,t=new o;this.group.add(t.group),this._symbolDraw=t,this._lineGroup=e},render:function(e,t,n){var r=e.coordinateSystem,o=this.group,a=e.getData(),s=e.getModel(\"lineStyle\"),u=e.getModel(\"areaStyle\"),c=a.mapArray(a.getItemLayout),h=\"polar\"===r.type,d=this._coordSys,f=this._symbolDraw,p=this._polyline,v=this._polygon,y=this._lineGroup,b=e.get(\"animation\"),_=!u.isEmpty(),T=u.get(\"origin\"),M=function(e,t,n){if(!n.valueDim)return[];for(var i=[],r=0,o=t.count();r<o;r++)i.push(m(n,e,t,r));return i}(r,a,g(r,a,T)),D=e.get(\"showSymbol\"),A=D&&!h&&S(e,a,r),I=this._data;I&&I.eachItemGraphicEl(function(e,t){e.__temp&&(o.remove(e),I.setItemGraphicEl(t,null))}),D||f.remove(),o.add(y);var O,E=!h&&e.get(\"step\");r&&r.getArea&&e.get(\"clip\",!0)&&(null!=(O=r.getArea()).width?(O.x-=.1,O.y-=.1,O.width+=.2,O.height+=.2):O.r0&&(O.r0-=.5,O.r1+=.5)),this._clipShapeForSymbol=O,p&&d.type===r.type&&E===this._step?(_&&!v?v=this._newPolygon(c,M,r,b):v&&!_&&(y.remove(v),v=this._polygon=null),y.setClipPath(k(r,!1,e)),D&&f.updateData(a,{isIgnore:A,clipShape:O}),a.eachItemGraphicEl(function(e){e.stopAnimation(!0)}),x(this._stackedOnPoints,M)&&x(this._points,c)||(b?this._updateAnimation(a,M,r,n,E,T):(E&&(c=C(c,r,E),M=C(M,r,E)),p.setShape({points:c}),v&&v.setShape({points:c,stackedOnPoints:M})))):(D&&f.updateData(a,{isIgnore:A,clipShape:O}),E&&(c=C(c,r,E),M=C(M,r,E)),p=this._newPolyline(c,r,b),_&&(v=this._newPolygon(c,M,r,b)),y.setClipPath(k(r,!0,e)));var L=function(e,t){var n=e.getVisual(\"visualMeta\");if(n&&n.length&&e.count()&&\"cartesian2d\"===t.type){for(var r,o,a=n.length-1;a>=0;a--){var s=n[a].dimension,u=e.dimensions[s],c=e.getDimensionInfo(u);if(\"x\"===(r=c&&c.coordDim)||\"y\"===r){o=n[a];break}}if(o){var h=t.getAxis(r),d=i.map(o.stops,function(e){return{coord:h.toGlobalCoord(h.dataToCoord(e.value)),color:e.color}}),f=d.length,p=o.outerColors.slice();f&&d[0].coord>d[f-1].coord&&(d.reverse(),p.reverse());var g=d[0].coord-10,m=d[f-1].coord+10,v=m-g;if(v<.001)return\"transparent\";i.each(d,function(e){e.offset=(e.coord-g)/v}),d.push({offset:f?d[f-1].offset:.5,color:p[1]||\"transparent\"}),d.unshift({offset:f?d[0].offset:.5,color:p[0]||\"transparent\"});var y=new l.LinearGradient(0,0,0,0,d,!0);return y[r]=g,y[r+\"2\"]=m,y}}}(a,r)||a.getVisual(\"color\");p.useStyle(i.defaults(s.getLineStyle(),{fill:\"none\",stroke:L,lineJoin:\"bevel\"}));var P=e.get(\"smooth\");if(P=w(e.get(\"smooth\")),p.setShape({smooth:P,smoothMonotone:e.get(\"smoothMonotone\"),connectNulls:e.get(\"connectNulls\")}),v){var N=a.getCalculationInfo(\"stackedOnSeries\"),R=0;v.useStyle(i.defaults(u.getAreaStyle(),{fill:L,opacity:.7,lineJoin:\"bevel\"})),N&&(R=w(N.get(\"smooth\"))),v.setShape({smooth:P,stackedOnSmooth:R,smoothMonotone:e.get(\"smoothMonotone\"),connectNulls:e.get(\"connectNulls\")})}this._data=a,this._coordSys=r,this._stackedOnPoints=M,this._points=c,this._step=E,this._valueOrigin=T},dispose:function(){},highlight:function(e,t,n,i){var r=e.getData(),o=u.queryDataIndex(r,i);if(!(o instanceof Array)&&null!=o&&o>=0){var s=r.getItemGraphicEl(o);if(!s){var l=r.getItemLayout(o);if(!l)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l[0],l[1]))return;(s=new a(r,o)).position=l,s.setZ(e.get(\"zlevel\"),e.get(\"z\")),s.ignore=isNaN(l[0])||isNaN(l[1]),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else f.prototype.highlight.call(this,e,t,n,i)},downplay:function(e,t,n,i){var r=e.getData(),o=u.queryDataIndex(r,i);if(null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else f.prototype.downplay.call(this,e,t,n,i)},_newPolyline:function(e){var t=this._polyline;return t&&this._lineGroup.remove(t),t=new h({shape:{points:e},silent:!0,z2:10}),this._lineGroup.add(t),this._polyline=t,t},_newPolygon:function(e,t){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new d({shape:{points:e,stackedOnPoints:t},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_updateAnimation:function(e,t,n,i,r,o){var a=this._polyline,u=this._polygon,c=e.hostModel,h=s(this._data,e,this._stackedOnPoints,t,this._coordSys,n,this._valueOrigin,o),d=h.current,f=h.stackedOnCurrent,p=h.next,g=h.stackedOnNext;if(r&&(d=C(h.current,n,r),f=C(h.stackedOnCurrent,n,r),p=C(h.next,n,r),g=C(h.stackedOnNext,n,r)),_(d,p)>3e3||u&&_(f,g)>3e3)return a.setShape({points:p}),void(u&&u.setShape({points:p,stackedOnPoints:g}));a.shape.__points=h.current,a.shape.points=d,l.updateProps(a,{shape:{points:p}},c),u&&(u.setShape({points:d,stackedOnPoints:f}),l.updateProps(u,{shape:{points:p,stackedOnPoints:g}},c));for(var m=[],v=h.status,y=0;y<v.length;y++){if(\"=\"===v[y].cmd){var b=e.getItemGraphicEl(v[y].idx1);b&&m.push({el:b,ptIdx:y})}}a.animators&&a.animators.length&&a.animators[0].during(function(){for(var e=0;e<m.length;e++){m[e].el.attr(\"position\",a.shape.__points[m[e].ptIdx])}})},remove:function(e){var t=this.group,n=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),n&&n.eachItemGraphicEl(function(e,i){e.__temp&&(t.remove(e),n.setItemGraphicEl(i,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}});e.exports=T},cU6c:function(e,t){var n={\"南海诸岛\":[32,80],\"广东\":[0,-10],\"香港\":[10,5],\"澳门\":[-10,10],\"天津\":[5,5]};e.exports=function(e,t){if(\"china\"===e){var i=n[t.name];if(i){var r=t.center;r[0]+=i[0]/10.5,r[1]+=-i[1]/14}}}},cWq4:function(e,t,n){var i=n(\"Icdr\");n(\"+u5N\"),n(\"Cuh7\"),n(\"IeRB\");var r=n(\"wTOJ\"),o=n(\"Mxrs\");i.registerLayout(r),i.registerVisual(o)},crlp:function(e,t,n){var i=n(\"7KvD\"),r=n(\"FeBl\"),o=n(\"O4g8\"),a=n(\"Kh4W\"),s=n(\"evD5\").f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});\"_\"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},ct4P:function(e,t,n){var i=n(\"/gxq\");function r(e){return this._axes[e]}var o=function(e){this._axes={},this._dimList=[],this.name=e||\"\"};o.prototype={constructor:o,type:\"cartesian\",getAxis:function(e){return this._axes[e]},getAxes:function(){return i.map(this._dimList,r,this)},getAxesByScale:function(e){return e=e.toLowerCase(),i.filter(this.getAxes(),function(t){return t.scale.type===e})},addAxis:function(e){var t=e.dim;this._axes[t]=e,this._dimList.push(t)},dataToCoord:function(e){return this._dataCoordConvert(e,\"dataToCoord\")},coordToData:function(e){return this._dataCoordConvert(e,\"coordToData\")},_dataCoordConvert:function(e,t){for(var n=this._dimList,i=e instanceof Array?[]:{},r=0;r<n.length;r++){var o=n[r],a=this._axes[o];i[o]=a[t](e[o])}return i}};var a=o;e.exports=a},\"cuL/\":function(e,t,n){n(\"Y5nL\").registerSubTypeDefaulter(\"dataZoom\",function(){return\"slider\"})},d1IL:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Rfu2\"),o=n(\"1uRk\"),a=n(\"NGRG\"),s=n(\"hcq/\"),l=n(\"rctg\"),u=n(\"ao1T\");e.exports=function(e,t,n,c,h){for(var d=new o(c),f=0;f<e.length;f++)d.addNode(i.retrieve(e[f].id,e[f].name,f),f);var p=[],g=[],m=0;for(f=0;f<t.length;f++){var v=t[f],y=v.source,b=v.target;d.addEdge(y,b,m)&&(g.push(v),p.push(i.retrieve(v.id,y+\" > \"+b)),m++)}var x,_=n.get(\"coordinateSystem\");if(\"cartesian2d\"===_||\"polar\"===_)x=u(e,n);else{var w=l.get(_),C=w&&\"view\"!==w.type&&w.dimensions||[];i.indexOf(C,\"value\")<0&&C.concat([\"value\"]);var S=s(e,{coordDimensions:C});(x=new r(S,n)).initData(e)}var k=new r([\"value\"],n);return k.initData(g,p),h&&h(x,k),a({mainData:x,struct:d,structAttr:\"graph\",datas:{node:x,edge:k},datasAttr:{node:\"data\",edge:\"edgeData\"}}),d.update(),d}},d8Tt:function(e,t,n){var i=n(\"9b8q\"),r=n(\"28kU\").ContextCachedBy,o=[[\"shadowBlur\",0],[\"shadowOffsetX\",0],[\"shadowOffsetY\",0],[\"shadowColor\",\"#000\"],[\"lineCap\",\"butt\"],[\"lineJoin\",\"miter\"],[\"miterLimit\",10]],a=function(e){this.extendFrom(e,!1)};function s(e,t,n){var i=null==t.x?0:t.x,r=null==t.x2?1:t.x2,o=null==t.y?0:t.y,a=null==t.y2?0:t.y2;return t.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=isNaN(i)?0:i,r=isNaN(r)?1:r,o=isNaN(o)?0:o,a=isNaN(a)?0:a,e.createLinearGradient(i,o,r,a)}function l(e,t,n){var i=n.width,r=n.height,o=Math.min(i,r),a=null==t.x?.5:t.x,s=null==t.y?.5:t.y,l=null==t.r?.5:t.r;return t.global||(a=a*i+n.x,s=s*r+n.y,l*=o),e.createRadialGradient(a,s,0,a,s,l)}for(var u=a.prototype={constructor:a,fill:\"#000\",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:\"#000\",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:\"inside\",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:\"transparent\",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:\"transparent\",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(e,t,n){var a=n&&n.style,s=!a||e.__attrCachedBy!==r.STYLE_BIND;e.__attrCachedBy=r.STYLE_BIND;for(var l=0;l<o.length;l++){var u=o[l],c=u[0];(s||this[c]!==a[c])&&(e[c]=i(e,c,this[c]||u[1]))}if((s||this.fill!==a.fill)&&(e.fillStyle=this.fill),(s||this.stroke!==a.stroke)&&(e.strokeStyle=this.stroke),(s||this.opacity!==a.opacity)&&(e.globalAlpha=null==this.opacity?1:this.opacity),(s||this.blend!==a.blend)&&(e.globalCompositeOperation=this.blend||\"source-over\"),this.hasStroke()){var h=this.lineWidth;e.lineWidth=h/(this.strokeNoScale&&t&&t.getLineScale?t.getLineScale():1)}},hasFill:function(){var e=this.fill;return null!=e&&\"none\"!==e},hasStroke:function(){var e=this.stroke;return null!=e&&\"none\"!==e&&this.lineWidth>0},extendFrom:function(e,t){if(e)for(var n in e)!e.hasOwnProperty(n)||!0!==t&&(!1===t?this.hasOwnProperty(n):null==e[n])||(this[n]=e[n])},set:function(e,t){\"string\"==typeof e?this[e]=t:this.extendFrom(e,!0)},clone:function(){var e=new this.constructor;return e.extendFrom(this,!0),e},getGradient:function(e,t,n){for(var i=(\"radial\"===t.type?l:s)(e,t,n),r=t.colorStops,o=0;o<r.length;o++)i.addColorStop(r[o].offset,r[o].color);return i}},c=0;c<o.length;c++){var h=o[c];h[0]in u||(u[h[0]]=h[1])}a.getGradient=u.getGradient;var d=a;e.exports=d},dCQY:function(e,t){var n={};t.register=function(e,t){n[e]=t},t.get=function(e){return n[e]}},dDRy:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\"),o=n(\"HHfb\"),a=n(\"wW3A\"),s=n(\"tBuv\"),l=s.prototype,u=Math.ceil,c=Math.floor,h=s.extend({type:\"time\",getLabel:function(e){var t=this._stepLvl,n=new Date(e);return o.formatTime(t[0],n,this.getSetting(\"useUTC\"))},niceExtent:function(e){var t=this._extent;if(t[0]===t[1]&&(t[0]-=864e5,t[1]+=864e5),t[1]===-1/0&&t[0]===1/0){var n=new Date;t[1]=+new Date(n.getFullYear(),n.getMonth(),n.getDate()),t[0]=t[1]-864e5}this.niceTicks(e.splitNumber,e.minInterval,e.maxInterval);var i=this._interval;e.fixMin||(t[0]=r.round(c(t[0]/i)*i)),e.fixMax||(t[1]=r.round(u(t[1]/i)*i))},niceTicks:function(e,t,n){e=e||10;var i=this._extent,o=i[1]-i[0],s=o/e;null!=t&&s<t&&(s=t),null!=n&&s>n&&(s=n);var l=d.length,h=function(e,t,n,i){for(;n<i;){var r=n+i>>>1;e[r][1]<t?n=r+1:i=r}return n}(d,s,0,l),f=d[Math.min(h,l-1)],p=f[1];if(\"year\"===f[0]){var g=o/p;p*=r.nice(g/e,!0)}var m=this.getSetting(\"useUTC\")?0:60*new Date(+i[0]||+i[1]).getTimezoneOffset()*1e3,v=[Math.round(u((i[0]-m)/p)*p+m),Math.round(c((i[1]-m)/p)*p+m)];a.fixExtent(v,i),this._stepLvl=f,this._interval=p,this._niceExtent=v},parse:function(e){return+r.parseDate(e)}});i.each([\"contain\",\"normalize\"],function(e){h.prototype[e]=function(t){return l[e].call(this,this.parse(t))}});var d=[[\"hh:mm:ss\",1e3],[\"hh:mm:ss\",5e3],[\"hh:mm:ss\",1e4],[\"hh:mm:ss\",15e3],[\"hh:mm:ss\",3e4],[\"hh:mm\\nMM-dd\",6e4],[\"hh:mm\\nMM-dd\",3e5],[\"hh:mm\\nMM-dd\",6e5],[\"hh:mm\\nMM-dd\",9e5],[\"hh:mm\\nMM-dd\",18e5],[\"hh:mm\\nMM-dd\",36e5],[\"hh:mm\\nMM-dd\",72e5],[\"hh:mm\\nMM-dd\",216e5],[\"hh:mm\\nMM-dd\",432e5],[\"MM-dd\\nyyyy\",864e5],[\"MM-dd\\nyyyy\",1728e5],[\"MM-dd\\nyyyy\",2592e5],[\"MM-dd\\nyyyy\",3456e5],[\"MM-dd\\nyyyy\",432e6],[\"MM-dd\\nyyyy\",5184e5],[\"week\",6048e5],[\"MM-dd\\nyyyy\",864e6],[\"week\",12096e5],[\"week\",18144e5],[\"month\",26784e5],[\"week\",36288e5],[\"month\",53568e5],[\"week\",6048e6],[\"quarter\",8208e6],[\"month\",107136e5],[\"month\",13392e6],[\"half-year\",16416e6],[\"month\",214272e5],[\"month\",26784e6],[\"year\",32832e6]];h.create=function(e){return new h({useUTC:e.ecModel.get(\"useUTC\")})};var f=h;e.exports=f},dE09:function(e,t,n){var i=n(\"GxVO\"),r=n(\"moDv\"),o=n(\"C1+n\"),a=Math.sqrt,s=Math.sin,l=Math.cos,u=Math.PI,c=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},h=function(e,t){return(e[0]*t[0]+e[1]*t[1])/(c(e)*c(t))},d=function(e,t){return(e[0]*t[1]<e[1]*t[0]?-1:1)*Math.acos(h(e,t))};function f(e,t,n,i,r,o,c,f,p,g,m){var v=p*(u/180),y=l(v)*(e-n)/2+s(v)*(t-i)/2,b=-1*s(v)*(e-n)/2+l(v)*(t-i)/2,x=y*y/(c*c)+b*b/(f*f);x>1&&(c*=a(x),f*=a(x));var _=(r===o?-1:1)*a((c*c*(f*f)-c*c*(b*b)-f*f*(y*y))/(c*c*(b*b)+f*f*(y*y)))||0,w=_*c*b/f,C=_*-f*y/c,S=(e+n)/2+l(v)*w-s(v)*C,k=(t+i)/2+s(v)*w+l(v)*C,T=d([1,0],[(y-w)/c,(b-C)/f]),M=[(y-w)/c,(b-C)/f],D=[(-1*y-w)/c,(-1*b-C)/f],A=d(M,D);h(M,D)<=-1&&(A=u),h(M,D)>=1&&(A=0),0===o&&A>0&&(A-=2*u),1===o&&A<0&&(A+=2*u),m.addData(g,S,k,c,f,T,A,v,o)}var p=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,g=/-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;function m(e,t){var n=function(e){if(!e)return new r;for(var t,n=0,i=0,o=n,a=i,s=new r,l=r.CMD,u=e.match(p),c=0;c<u.length;c++){for(var h,d=u[c],m=d.charAt(0),v=d.match(g)||[],y=v.length,b=0;b<y;b++)v[b]=parseFloat(v[b]);for(var x=0;x<y;){var _,w,C,S,k,T,M,D=n,A=i;switch(m){case\"l\":n+=v[x++],i+=v[x++],h=l.L,s.addData(h,n,i);break;case\"L\":n=v[x++],i=v[x++],h=l.L,s.addData(h,n,i);break;case\"m\":n+=v[x++],i+=v[x++],h=l.M,s.addData(h,n,i),o=n,a=i,m=\"l\";break;case\"M\":n=v[x++],i=v[x++],h=l.M,s.addData(h,n,i),o=n,a=i,m=\"L\";break;case\"h\":n+=v[x++],h=l.L,s.addData(h,n,i);break;case\"H\":n=v[x++],h=l.L,s.addData(h,n,i);break;case\"v\":i+=v[x++],h=l.L,s.addData(h,n,i);break;case\"V\":i=v[x++],h=l.L,s.addData(h,n,i);break;case\"C\":h=l.C,s.addData(h,v[x++],v[x++],v[x++],v[x++],v[x++],v[x++]),n=v[x-2],i=v[x-1];break;case\"c\":h=l.C,s.addData(h,v[x++]+n,v[x++]+i,v[x++]+n,v[x++]+i,v[x++]+n,v[x++]+i),n+=v[x-2],i+=v[x-1];break;case\"S\":_=n,w=i;var I=s.len(),O=s.data;t===l.C&&(_+=n-O[I-4],w+=i-O[I-3]),h=l.C,D=v[x++],A=v[x++],n=v[x++],i=v[x++],s.addData(h,_,w,D,A,n,i);break;case\"s\":_=n,w=i,I=s.len(),O=s.data,t===l.C&&(_+=n-O[I-4],w+=i-O[I-3]),h=l.C,D=n+v[x++],A=i+v[x++],n+=v[x++],i+=v[x++],s.addData(h,_,w,D,A,n,i);break;case\"Q\":D=v[x++],A=v[x++],n=v[x++],i=v[x++],h=l.Q,s.addData(h,D,A,n,i);break;case\"q\":D=v[x++]+n,A=v[x++]+i,n+=v[x++],i+=v[x++],h=l.Q,s.addData(h,D,A,n,i);break;case\"T\":_=n,w=i,I=s.len(),O=s.data,t===l.Q&&(_+=n-O[I-4],w+=i-O[I-3]),n=v[x++],i=v[x++],h=l.Q,s.addData(h,_,w,n,i);break;case\"t\":_=n,w=i,I=s.len(),O=s.data,t===l.Q&&(_+=n-O[I-4],w+=i-O[I-3]),n+=v[x++],i+=v[x++],h=l.Q,s.addData(h,_,w,n,i);break;case\"A\":C=v[x++],S=v[x++],k=v[x++],T=v[x++],M=v[x++],f(D=n,A=i,n=v[x++],i=v[x++],T,M,C,S,k,h=l.A,s);break;case\"a\":C=v[x++],S=v[x++],k=v[x++],T=v[x++],M=v[x++],f(D=n,A=i,n+=v[x++],i+=v[x++],T,M,C,S,k,h=l.A,s)}}\"z\"!==m&&\"Z\"!==m||(h=l.Z,s.addData(h),n=o,i=a),t=h}return s.toStatic(),s}(e);return(t=t||{}).buildPath=function(e){if(e.setData){e.setData(n.data),(t=e.getContext())&&e.rebuildPath(t)}else{var t=e;n.rebuildPath(t)}},t.applyTransform=function(e){o(n,e),this.dirty(!0)},t}t.createFromString=function(e,t){return new i(m(e,t))},t.extendFromString=function(e,t){return i.extend(m(e,t))},t.mergePath=function(e,t){for(var n=[],r=e.length,o=0;o<r;o++){var a=e[o];a.path||a.createPathProxy(),a.__dirtyPath&&a.buildPath(a.path,a.shape,!0),n.push(a.path)}var s=new i(t);return s.createPathProxy(),s.buildPath=function(e){e.appendPath(n);var t=e.getContext();t&&e.rebuildPath(t)},s}},dOVI:function(e,t){var n=\"undefined\"==typeof Float32Array?Array:Float32Array;function i(){var e=new n(6);return r(e),e}function r(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e}function o(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}t.create=i,t.identity=r,t.copy=o,t.mul=function(e,t,n){var i=t[0]*n[0]+t[2]*n[1],r=t[1]*n[0]+t[3]*n[1],o=t[0]*n[2]+t[2]*n[3],a=t[1]*n[2]+t[3]*n[3],s=t[0]*n[4]+t[2]*n[5]+t[4],l=t[1]*n[4]+t[3]*n[5]+t[5];return e[0]=i,e[1]=r,e[2]=o,e[3]=a,e[4]=s,e[5]=l,e},t.translate=function(e,t,n){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]+n[0],e[5]=t[5]+n[1],e},t.rotate=function(e,t,n){var i=t[0],r=t[2],o=t[4],a=t[1],s=t[3],l=t[5],u=Math.sin(n),c=Math.cos(n);return e[0]=i*c+a*u,e[1]=-i*u+a*c,e[2]=r*c+s*u,e[3]=-r*u+c*s,e[4]=c*o+u*l,e[5]=c*l-u*o,e},t.scale=function(e,t,n){var i=n[0],r=n[1];return e[0]=t[0]*i,e[1]=t[1]*r,e[2]=t[2]*i,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*r,e},t.invert=function(e,t){var n=t[0],i=t[2],r=t[4],o=t[1],a=t[3],s=t[5],l=n*a-o*i;return l?(l=1/l,e[0]=a*l,e[1]=-o*l,e[2]=-i*l,e[3]=n*l,e[4]=(i*s-a*r)*l,e[5]=(o*r-n*s)*l,e):null},t.clone=function(e){var t=i();return o(t,e),t}},dSzd:function(e,t,n){var i=n(\"e8AB\")(\"wks\"),r=n(\"3Eo+\"),o=n(\"7KvD\").Symbol,a=\"function\"==typeof o;(e.exports=function(e){return i[e]||(i[e]=a&&o[e]||(a?o:r)(\"Symbol.\"+e))}).store=i},dZ2L:function(e,t){var n=function(e,t){this.image=e,this.repeat=t,this.type=\"pattern\"};n.prototype.getCanvasPattern=function(e){return e.createPattern(this.image,this.repeat||\"repeat\")};var i=n;e.exports=i},dZZy:function(e,t,n){var i=n(\"0sHC\"),r=n(\"1bHA\"),o=n(\"/gxq\").isObject;function a(e){this.group=new i.Group,this._symbolCtor=e||r}var s=a.prototype;function l(e,t,n,i){return t&&!isNaN(t[0])&&!isNaN(t[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(t[0],t[1]))&&\"none\"!==e.getItemVisual(n,\"symbol\")}function u(e){return null==e||o(e)||(e={isIgnore:e}),e||{}}function c(e){var t=e.hostModel;return{itemStyle:t.getModel(\"itemStyle\").getItemStyle([\"color\"]),hoverItemStyle:t.getModel(\"emphasis.itemStyle\").getItemStyle(),symbolRotate:t.get(\"symbolRotate\"),symbolOffset:t.get(\"symbolOffset\"),hoverAnimation:t.get(\"hoverAnimation\"),labelModel:t.getModel(\"label\"),hoverLabelModel:t.getModel(\"emphasis.label\"),cursorStyle:t.get(\"cursor\")}}s.updateData=function(e,t){t=u(t);var n=this.group,r=e.hostModel,o=this._data,a=this._symbolCtor,s=c(e);o||n.removeAll(),e.diff(o).add(function(i){var r=e.getItemLayout(i);if(l(e,r,i,t)){var o=new a(e,i,s);o.attr(\"position\",r),e.setItemGraphicEl(i,o),n.add(o)}}).update(function(u,c){var h=o.getItemGraphicEl(c),d=e.getItemLayout(u);l(e,d,u,t)?(h?(h.updateData(e,u,s),i.updateProps(h,{position:d},r)):(h=new a(e,u)).attr(\"position\",d),n.add(h),e.setItemGraphicEl(u,h)):n.remove(h)}).remove(function(e){var t=o.getItemGraphicEl(e);t&&t.fadeOut(function(){n.remove(t)})}).execute(),this._data=e},s.isPersistent=function(){return!0},s.updateLayout=function(){var e=this._data;e&&e.eachItemGraphicEl(function(t,n){var i=e.getItemLayout(n);t.attr(\"position\",i)})},s.incrementalPrepareUpdate=function(e){this._seriesScope=c(e),this._data=null,this.group.removeAll()},s.incrementalUpdate=function(e,t,n){function i(e){e.isGroup||(e.incremental=e.useHoverLayer=!0)}n=u(n);for(var r=e.start;r<e.end;r++){var o=t.getItemLayout(r);if(l(t,o,r,n)){var a=new this._symbolCtor(t,r,this._seriesScope);a.traverse(i),a.attr(\"position\",o),this.group.add(a),t.setItemGraphicEl(r,a)}}},s.remove=function(e){var t=this.group,n=this._data;n&&e?n.eachItemGraphicEl(function(e){e.fadeOut(function(){t.remove(e)})}):t.removeAll()};var h=a;e.exports=h},dnLe:function(e,t,n){var i=n(\"YNzw\"),r=[[\"shadowBlur\",0],[\"shadowColor\",\"#000\"],[\"shadowOffsetX\",0],[\"shadowOffsetY\",0]];e.exports=function(e){return i.browser.ie&&i.browser.version>=11?function(){var t,n=this.__clipPaths,i=this.style;if(n)for(var o=0;o<n.length;o++){var a=n[o],s=a&&a.shape,l=a&&a.type;if(s&&(\"sector\"===l&&s.startAngle===s.endAngle||\"rect\"===l&&(!s.width||!s.height))){for(var u=0;u<r.length;u++)r[u][2]=i[r[u][0]],i[r[u][0]]=r[u][1];t=!0;break}}if(e.apply(this,arguments),t)for(u=0;u<r.length;u++)i[r[u][0]]=r[u][2]}:e}},dp0Z:function(e,t,n){var i=n(\"6JAQ\"),r=n(\"1Xuh\"),o=r.mergeLayoutParam,a=r.getLayoutParams,s=i.extend({type:\"legend.scroll\",setScrollDataIndex:function(e){this.option.scrollDataIndex=e},defaultOption:{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:\"end\",pageFormatter:\"{current}/{total}\",pageIcons:{horizontal:[\"M0,0L12,-10L12,10z\",\"M0,0L-12,-10L-12,10z\"],vertical:[\"M0,0L20,0L10,-20z\",\"M0,0L20,0L10,20z\"]},pageIconColor:\"#2f4554\",pageIconInactiveColor:\"#aaa\",pageIconSize:15,pageTextStyle:{color:\"#333\"},animationDurationUpdate:800},init:function(e,t,n,i){var r=a(e);s.superCall(this,\"init\",e,t,n,i),l(this,e,r)},mergeOption:function(e,t){s.superCall(this,\"mergeOption\",e,t),l(this,this.option,e)}});function l(e,t,n){var i=[1,1];i[e.getOrient().index]=0,o(t,n,{type:\"box\",ignoreSize:i})}var u=s;e.exports=u},\"dtW/\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"vXqC\").makeInner,o=n(\"QCrJ\"),a=n(\"OxCu\"),s=i.each,l=i.curry,u=r();function c(e,t,n,r,o){var a=e.axis;if(!a.scale.isBlank()&&a.containData(t))if(e.involveSeries){var l=function(e,t){var n=t.axis,i=n.dim,r=e,o=[],a=Number.MAX_VALUE,l=-1;return s(t.seriesModels,function(t,u){var c,h,d=t.getData().mapDimension(i,!0);if(t.getAxisTooltipData){var f=t.getAxisTooltipData(d,e,n);h=f.dataIndices,c=f.nestestValue}else{if(!(h=t.getData().indicesOfNearest(d[0],e,\"category\"===n.type?.5:null)).length)return;c=t.getData().get(d[0],h[0])}if(null!=c&&isFinite(c)){var p=e-c,g=Math.abs(p);g<=a&&((g<a||p>=0&&l<0)&&(a=g,l=p,r=c,o.length=0),s(h,function(e){o.push({seriesIndex:t.seriesIndex,dataIndexInside:e,dataIndex:t.getData().getRawIndex(e)})}))}}),{payloadBatch:o,snapToValue:r}}(t,e),u=l.payloadBatch,c=l.snapToValue;u[0]&&null==o.seriesIndex&&i.extend(o,u[0]),!r&&e.snap&&a.containData(c)&&null!=c&&(t=c),n.showPointer(e,t,u,o),n.showTooltip(e,l,c)}else n.showPointer(e,t)}function h(e,t,n,i){e[t.key]={value:n,payloadBatch:i}}function d(e,t,n,i){var r=n.payloadBatch,a=t.axis,s=a.model,l=t.axisPointerModel;if(t.triggerTooltip&&r.length){var u=t.coordSys.model,c=o.makeKey(u),h=e.map[c];h||(h=e.map[c]={coordSysId:u.id,coordSysIndex:u.componentIndex,coordSysType:u.type,coordSysMainType:u.mainType,dataByAxis:[]},e.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:s.componentIndex,axisType:s.type,axisId:s.id,value:i,valueLabelOpt:{precision:l.get(\"label.precision\"),formatter:l.get(\"label.formatter\")},seriesDataIndices:r.slice()})}}function f(e){var t=e.axis.model,n={},i=n.axisDim=e.axis.dim;return n.axisIndex=n[i+\"AxisIndex\"]=t.componentIndex,n.axisName=n[i+\"AxisName\"]=t.name,n.axisId=n[i+\"AxisId\"]=t.id,n}function p(e){return!e||null==e[0]||isNaN(e[0])||null==e[1]||isNaN(e[1])}e.exports=function(e,t,n){var r=e.currTrigger,o=[e.x,e.y],g=e,m=e.dispatchAction||i.bind(n.dispatchAction,n),v=t.getComponent(\"axisPointer\").coordSysAxesInfo;if(v){p(o)&&(o=a({seriesIndex:g.seriesIndex,dataIndex:g.dataIndex},t).point);var y=p(o),b=g.axesInfo,x=v.axesInfo,_=\"leave\"===r||p(o),w={},C={},S={list:[],map:{}},k={showPointer:l(h,C),showTooltip:l(d,S)};s(v.coordSysMap,function(e,t){var n=y||e.containPoint(o);s(v.coordSysAxesInfo[t],function(e,t){var i=e.axis,r=function(e,t){for(var n=0;n<(e||[]).length;n++){var i=e[n];if(t.axis.dim===i.axisDim&&t.axis.model.componentIndex===i.axisIndex)return i}}(b,e);if(!_&&n&&(!b||r)){var a=r&&r.value;null!=a||y||(a=i.pointToData(o)),null!=a&&c(e,a,k,!1,w)}})});var T={};return s(x,function(e,t){var n=e.linkGroup;n&&!C[t]&&s(n.axesInfo,function(t,i){var r=C[i];if(t!==e&&r){var o=r.value;n.mapper&&(o=e.axis.scale.parse(n.mapper(o,f(t),f(e)))),T[e.key]=o}})}),s(T,function(e,t){c(x[t],e,k,!0,w)}),function(e,t,n){var i=n.axesInfo=[];s(t,function(t,n){var r=t.axisPointerModel.option,o=e[n];o?(!t.useHandle&&(r.status=\"show\"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!t.useHandle&&(r.status=\"hide\"),\"show\"===r.status&&i.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:r.value})})}(C,x,w),function(e,t,n,i){if(!p(t)&&e.list.length){var r=((e.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:\"showTip\",escapeConnect:!0,x:t[0],y:t[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:e.list})}else i({type:\"hideTip\"})}(S,o,e,m),function(e,t,n){var r=n.getZr(),o=u(r).axisPointerLastHighlights||{},a=u(r).axisPointerLastHighlights={};s(e,function(e,t){var n=e.axisPointerModel.option;\"show\"===n.status&&s(n.seriesDataIndices,function(e){var t=e.seriesIndex+\" | \"+e.dataIndex;a[t]=e})});var l=[],c=[];i.each(o,function(e,t){!a[t]&&c.push(e)}),i.each(a,function(e,t){!o[t]&&l.push(e)}),c.length&&n.dispatchAction({type:\"downplay\",escapeConnect:!0,batch:c}),l.length&&n.dispatchAction({type:\"highlight\",escapeConnect:!0,batch:l})}(x,0,n),w}}},dzlV:function(e,t,n){var i=n(\"0sHC\"),r=n(\"RjA7\").getDefaultLabel;function o(e,t){\"outside\"===e.textPosition&&(e.textPosition=t)}t.setLabel=function(e,t,n,a,s,l,u){var c=n.getModel(\"label\"),h=n.getModel(\"emphasis.label\");i.setLabelStyle(e,t,c,h,{labelFetcher:s,labelDataIndex:l,defaultText:r(s.getData(),l),isRectText:!0,autoColor:a}),o(e),o(t)}},\"e+YR\":function(e,t,n){var i=n(\"/gxq\");t.createWrap=function(){var e,t=[],n={};return{add:function(e,r,o,a,s){return i.isString(a)&&(s=a,a=0),!n[e.id]&&(n[e.id]=1,t.push({el:e,target:r,time:o,delay:a,easing:s}),!0)},done:function(t){return e=t,this},start:function(){for(var i=t.length,r=0,o=t.length;r<o;r++){var a=t[r];a.el.animateTo(a.target,a.time,a.delay,a.easing,s)}return this;function s(){--i||(t.length=0,n={},e&&e())}}}}},e0Bm:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=61)}([function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},,,function(e,t){e.exports=n(\"ylDJ\")},function(e,t){e.exports=n(\"fPll\")},function(e,t){e.exports=n(\"fKx3\")},function(e,t){e.exports=n(\"y+7x\")},,,,function(e,t){e.exports=n(\"HJMx\")},,function(e,t){e.exports=n(\"ISYW\")},,function(e,t){e.exports=n(\"fEB+\")},,function(e,t){e.exports=n(\"02w1\")},function(e,t){e.exports=n(\"ON3O\")},,function(e,t){e.exports=n(\"urW8\")},,function(e,t){e.exports=n(\"E/in\")},function(e,t){e.exports=n(\"1oZe\")},,,,,,,,,function(e,t){e.exports=n(\"zTCi\")},,,function(e,t,n){\"use strict\";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-select-dropdown__item\",class:{selected:e.itemSelected,\"is-disabled\":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t(\"default\",[n(\"span\",[e._v(e._s(e.currentLabel))])])],2)};i._withStripped=!0;var r=n(4),o=n.n(r),a=n(3),s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},l={mixins:[o.a],name:\"ElOption\",componentName:\"ElOption\",inject:[\"select\"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return\"[object object]\"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?\"\":this.value)},currentValue:function(){return this.value||this.label||\"\"},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch(\"ElSelect\",\"setSelected\")},value:function(e,t){var n=this.select,i=n.remote,r=n.valueKey;if(!this.created&&!i){if(r&&\"object\"===(void 0===e?\"undefined\":s(e))&&\"object\"===(void 0===t?\"undefined\":s(t))&&e[r]===t[r])return;this.dispatch(\"ElSelect\",\"setSelected\")}}},methods:{isEqual:function(e,t){if(this.isObject){var n=this.select.valueKey;return Object(a.getValueByPath)(e,n)===Object(a.getValueByPath)(t,n)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var n=this.select.valueKey;return e&&e.some(function(e){return Object(a.getValueByPath)(e,n)===Object(a.getValueByPath)(t,n)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch(\"ElSelect\",\"handleOptionClick\",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),\"i\").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on(\"queryChange\",this.queryChange),this.$on(\"handleGroupDisabled\",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,n=e.multiple?t:[t],i=this.select.cachedOptions.indexOf(this),r=n.indexOf(this);i>-1&&r<0&&this.select.cachedOptions.splice(i,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=n(0),c=Object(u.a)(l,i,[],!1,null,null,null);c.options.__file=\"packages/select/src/option.vue\";t.a=c.exports},,,,function(e,t){e.exports=n(\"orbS\")},,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleClose,expression:\"handleClose\"}],staticClass:\"el-select\",class:[e.selectSize?\"el-select--\"+e.selectSize:\"\"],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?n(\"div\",{ref:\"tags\",staticClass:\"el-select__tags\",style:{\"max-width\":e.inputWidth-32+\"px\",width:\"100%\"}},[e.collapseTags&&e.selected.length?n(\"span\",[n(\"el-tag\",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:\"info\",\"disable-transitions\":\"\"},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[n(\"span\",{staticClass:\"el-select__tags-text\"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?n(\"el-tag\",{attrs:{closable:!1,size:e.collapseTagSize,type:\"info\",\"disable-transitions\":\"\"}},[n(\"span\",{staticClass:\"el-select__tags-text\"},[e._v(\"+ \"+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():n(\"transition-group\",{on:{\"after-leave\":e.resetInputHeight}},e._l(e.selected,function(t){return n(\"el-tag\",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:\"info\",\"disable-transitions\":\"\"},on:{close:function(n){e.deleteTag(n,t)}}},[n(\"span\",{staticClass:\"el-select__tags-text\"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.query,expression:\"query\"}],ref:\"input\",staticClass:\"el-select__input\",class:[e.selectSize?\"is-\"+e.selectSize:\"\"],style:{\"flex-grow\":\"1\",width:e.inputLength/(e.inputWidth-32)+\"%\",\"max-width\":e.inputWidth-42+\"px\"},attrs:{type:\"text\",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"]))return null;t.preventDefault(),e.navigateOptions(\"next\")},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"]))return null;t.preventDefault(),e.navigateOptions(\"prev\")},function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"esc\",27,t.key,[\"Esc\",\"Escape\"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return\"button\"in t||!e._k(t.keyCode,\"delete\",[8,46],t.key,[\"Backspace\",\"Delete\",\"Del\"])?e.deletePrevTag(t):null},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"tab\",9,t.key,\"Tab\"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),n(\"el-input\",{ref:\"reference\",class:{\"is-focus\":e.visible},attrs:{type:\"text\",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,\"validate-event\":!1,tabindex:e.multiple&&e.filterable?\"-1\":null},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions(\"next\")},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions(\"prev\")},function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"esc\",27,t.key,[\"Esc\",\"Escape\"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"tab\",9,t.key,\"Tab\"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:\"selectedLabel\"}},[e.$slots.prefix?n(\"template\",{slot:\"prefix\"},[e._t(\"prefix\")],2):e._e(),n(\"template\",{slot:\"suffix\"},[n(\"i\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.showClose,expression:\"!showClose\"}],class:[\"el-select__caret\",\"el-input__icon\",\"el-icon-\"+e.iconClass]}),e.showClose?n(\"i\",{staticClass:\"el-select__caret el-input__icon el-icon-circle-close\",on:{click:e.handleClearClick}}):e._e()])],2),n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"before-enter\":e.handleMenuEnter,\"after-leave\":e.doDestroy}},[n(\"el-select-menu\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible&&!1!==e.emptyText,expression:\"visible && emptyText !== false\"}],ref:\"popper\",attrs:{\"append-to-body\":e.popperAppendToBody}},[n(\"el-scrollbar\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.options.length>0&&!e.loading,expression:\"options.length > 0 && !loading\"}],ref:\"scrollbar\",class:{\"is-empty\":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:\"ul\",\"wrap-class\":\"el-select-dropdown__wrap\",\"view-class\":\"el-select-dropdown__list\"}},[e.showNewOption?n(\"el-option\",{attrs:{value:e.query,created:\"\"}}):e._e(),e._t(\"default\")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t(\"empty\"):n(\"p\",{staticClass:\"el-select-dropdown__empty\"},[e._v(\"\\n          \"+e._s(e.emptyText)+\"\\n        \")])]:e._e()],2)],1)],1)};i._withStripped=!0;var r=n(4),o=n.n(r),a=n(22),s=n.n(a),l=n(6),u=n.n(l),c=n(10),h=n.n(c),d=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-select-dropdown el-popper\",class:[{\"is-multiple\":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t(\"default\")],2)};d._withStripped=!0;var f=n(5),p={name:\"ElSelectDropdown\",componentName:\"ElSelectDropdown\",mixins:[n.n(f).a],props:{placement:{default:\"bottom-start\"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:\"\"}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{\"$parent.inputWidth\":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+\"px\"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on(\"updatePopper\",function(){e.$parent.visible&&e.updatePopper()}),this.$on(\"destroyPopper\",this.destroyPopper)}},g=n(0),m=Object(g.a)(p,d,[],!1,null,null,null);m.options.__file=\"packages/select/src/select-dropdown.vue\";var v=m.exports,y=n(34),b=n(38),x=n.n(b),_=n(14),w=n.n(_),C=n(17),S=n.n(C),k=n(12),T=n.n(k),M=n(16),D=n(19),A=n(31),I=n.n(A),O=n(3),E=n(21),L={mixins:[o.a,u.a,s()(\"reference\"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;\"number\"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){\"next\"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):\"prev\"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var n=this.options[this.hoverIndex];!0!==n.disabled&&!0!==n.groupDisabled&&n.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:\"ElSelect\",componentName:\"ElSelect\",inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(O.isIE)()&&!Object(O.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&\"\"!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?\"\":this.visible?\"arrow-up is-reverse\":\"arrow-up\"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t(\"el.select.loading\"):(!this.remote||\"\"!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t(\"el.select.noMatch\"):0===this.options.length?this.noDataText||this.t(\"el.select.noData\"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&\"\"!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return[\"small\",\"mini\"].indexOf(this.selectSize)>-1?\"mini\":\"small\"}},components:{ElInput:h.a,ElSelectMenu:v,ElOption:y.a,ElTag:x.a,ElScrollbar:w.a},directives:{Clickoutside:T.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:\"off\"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(D.t)(\"el.select.placeholder\")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:\"value\"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:\"\",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:\"\",hoverIndex:-1,query:\"\",previousQuery:null,inputHovering:!1,currentPlaceholder:\"\",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&\"\"!==this.query?this.currentPlaceholder=\"\":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query=\"\",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(O.valueEquals)(e,t)||this.dispatch(\"ElFormItem\",\"el.form.change\",e)},visible:function(e){var t=this;e?(this.broadcast(\"ElSelectDropdown\",\"updatePopper\"),this.filterable&&(this.query=this.remote?\"\":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast(\"ElOption\",\"queryChange\",\"\"),this.broadcast(\"ElOptionGroup\",\"queryChange\")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel=\"\")))):(this.broadcast(\"ElSelectDropdown\",\"destroyPopper\"),this.$refs.input&&this.$refs.input.blur(),this.query=\"\",this.previousQuery=null,this.selectedLabel=\"\",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&\"\"===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit(\"visible-change\",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast(\"ElSelectDropdown\",\"updatePopper\")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll(\"input\");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,n=e.target.value;if(\"compositionend\"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(n)});else{var i=n[n.length-1]||\"\";this.isOnComposition=!Object(E.isKorean)(i)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||\"function\"!=typeof this.filterMethod&&\"function\"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast(\"ElSelectDropdown\",\"updatePopper\")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&\"function\"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):\"function\"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast(\"ElOptionGroup\",\"queryChange\")):(this.filteredOptionsCount=this.optionsCount,this.broadcast(\"ElOption\",\"queryChange\",e),this.broadcast(\"ElOptionGroup\",\"queryChange\")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var n=this.$refs.popper.$el.querySelector(\".el-select-dropdown__wrap\");I()(n,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(O.valueEquals)(this.value,e)||this.$emit(\"change\",e)},getOption:function(e){for(var t=void 0,n=\"[object object]\"===Object.prototype.toString.call(e).toLowerCase(),i=\"[object null]\"===Object.prototype.toString.call(e).toLowerCase(),r=\"[object undefined]\"===Object.prototype.toString.call(e).toLowerCase(),o=this.cachedOptions.length-1;o>=0;o--){var a=this.cachedOptions[o];if(n?Object(O.getValueByPath)(a.value,this.valueKey)===Object(O.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var s={value:e,currentLabel:n||i||r?\"\":e};return this.multiple&&(s.hitState=!1),s},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var n=[];Array.isArray(this.value)&&this.value.forEach(function(t){n.push(e.getOption(t))}),this.selected=n,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit(\"focus\",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit(\"blur\",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit(\"input\",t),this.emitChange(t)}},managePlaceholder:function(){\"\"!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?\"\":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,n=[].filter.call(t,function(e){return\"INPUT\"===e.tagName})[0],i=e.$refs.tags,r=e.initialInputHeight||40;n.style.height=0===e.selected.length?r+\"px\":Math.max(i?i.clientHeight+(i.clientHeight>r?6:0):0,r)+\"px\",e.visible&&!1!==e.emptyText&&e.broadcast(\"ElSelectDropdown\",\"updatePopper\")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var n=this;if(this.multiple){var i=(this.value||[]).slice(),r=this.getValueIndex(i,e.value);r>-1?i.splice(r,1):(this.multipleLimit<=0||i.length<this.multipleLimit)&&i.push(e.value),this.$emit(\"input\",i),this.emitChange(i),e.created&&(this.query=\"\",this.handleQueryChange(\"\"),this.inputLength=20),this.filterable&&this.$refs.input.focus()}else this.$emit(\"input\",e.value),this.emitChange(e.value),this.visible=!1;this.isSilentBlur=t,this.setSoftFocus(),this.visible||this.$nextTick(function(){n.scrollToOption(e)})},setSoftFocus:function(){this.softFocus=!0;var e=this.$refs.input||this.$refs.reference;e&&e.focus()},getValueIndex:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(\"[object object]\"===Object.prototype.toString.call(t).toLowerCase()){var n=this.valueKey,i=-1;return e.some(function(e,r){return Object(O.getValueByPath)(e,n)===Object(O.getValueByPath)(t,n)&&(i=r,!0)}),i}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:\"\";this.$emit(\"input\",t),this.emitChange(t),this.visible=!1,this.$emit(\"clear\")},deleteTag:function(e,t){var n=this.selected.indexOf(t);if(n>-1&&!this.selectDisabled){var i=this.value.slice();i.splice(n,1),this.$emit(\"input\",i),this.emitChange(i),this.$emit(\"remove-tag\",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var n=0;n!==this.options.length;++n){var i=this.options[n];if(this.query){if(!i.disabled&&!i.groupDisabled&&i.visible){this.hoverIndex=n;break}}else if(i.itemSelected){this.hoverIndex=n;break}}},getValueKey:function(e){return\"[object object]\"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(O.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit(\"input\",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit(\"input\",\"\"),this.debouncedOnInputChange=S()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=S()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on(\"handleOptionClick\",this.handleOptionSelect),this.$on(\"setSelected\",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=\"\"),Object(M.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var n=t.$el.querySelector(\"input\");this.initialInputHeight=n.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(M.removeResizeListener)(this.$el,this.handleResize)}},P=Object(g.a)(L,i,[],!1,null,null,null);P.options.__file=\"packages/select/src/select.vue\";var N=P.exports;N.install=function(e){e.component(N.name,N)};t.default=N}])},e6n0:function(e,t,n){var i=n(\"evD5\").f,r=n(\"D2L2\"),o=n(\"dSzd\")(\"toStringTag\");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},\"e8/X\":function(e,t,n){var i,r,o=n(\"UAiw\"),a=o.addEventListener,s=o.removeEventListener,l=o.normalizeEvent,u=o.getNativeEvent,c=n(\"/gxq\"),h=n(\"qjvV\"),d=n(\"YNzw\"),f=d.domSupported,p=(r={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:i=[\"click\",\"dblclick\",\"mousewheel\",\"mouseout\",\"mouseup\",\"mousedown\",\"mousemove\",\"contextmenu\"],touch:[\"touchstart\",\"touchend\",\"touchmove\"],pointer:c.map(i,function(e){var t=e.replace(\"mouse\",\"pointer\");return r.hasOwnProperty(t)?t:e})}),g={mouse:[\"mousemove\",\"mouseup\"],pointer:[\"pointermove\",\"pointerup\"]};function m(e){return\"mousewheel\"===e&&d.browser.firefox?\"DOMMouseScroll\":e}function v(e){var t=e.pointerType;return\"pen\"===t||\"touch\"===t}function y(e){e&&(e.zrByTouch=!0)}function b(e,t){for(var n=t,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==t&&n===e.painterRoot);)n=n.parentNode;return i}function x(e,t){this.type=t.type,this.target=this.currentTarget=e.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY}var _=x.prototype;_.stopPropagation=_.stopImmediatePropagation=_.preventDefault=c.noop;var w={mousedown:function(e){e=l(this.dom,e),this._mayPointerCapture=[e.zrX,e.zrY],this.trigger(\"mousedown\",e)},mousemove:function(e){e=l(this.dom,e);var t=this._mayPointerCapture;!t||e.zrX===t[0]&&e.zrY===t[1]||D(this,!0),this.trigger(\"mousemove\",e)},mouseup:function(e){e=l(this.dom,e),D(this,!1),this.trigger(\"mouseup\",e)},mouseout:function(e){e=l(this.dom,e),this._pointerCapturing&&(e.zrEventControl=\"no_globalout\");var t=e.toElement||e.relatedTarget;e.zrIsToLocalDOM=b(this,t),this.trigger(\"mouseout\",e)},touchstart:function(e){y(e=l(this.dom,e)),this._lastTouchMoment=new Date,this.handler.processGesture(e,\"start\"),w.mousemove.call(this,e),w.mousedown.call(this,e)},touchmove:function(e){y(e=l(this.dom,e)),this.handler.processGesture(e,\"change\"),w.mousemove.call(this,e)},touchend:function(e){y(e=l(this.dom,e)),this.handler.processGesture(e,\"end\"),w.mouseup.call(this,e),+new Date-this._lastTouchMoment<300&&w.click.call(this,e)},pointerdown:function(e){w.mousedown.call(this,e)},pointermove:function(e){v(e)||w.mousemove.call(this,e)},pointerup:function(e){w.mouseup.call(this,e)},pointerout:function(e){v(e)||w.mouseout.call(this,e)}};c.each([\"click\",\"mousewheel\",\"dblclick\",\"contextmenu\"],function(e){w[e]=function(t){t=l(this.dom,t),this.trigger(e,t)}});var C={pointermove:function(e){v(e)||C.mousemove.call(this,e)},pointerup:function(e){C.mouseup.call(this,e)},mousemove:function(e){this.trigger(\"mousemove\",e)},mouseup:function(e){var t=this._pointerCapturing;D(this,!1),this.trigger(\"mouseup\",e),t&&(e.zrEventControl=\"only_globalout\",this.trigger(\"mouseout\",e))}};function S(e,t){var n=t.domHandlers;d.pointerEventsSupported?c.each(p.pointer,function(i){T(t,i,function(t){n[i].call(e,t)})}):(d.touchEventsSupported&&c.each(p.touch,function(i){T(t,i,function(r){n[i].call(e,r),function(e){e.touching=!0,null!=e.touchTimer&&(clearTimeout(e.touchTimer),e.touchTimer=null),e.touchTimer=setTimeout(function(){e.touching=!1,e.touchTimer=null},700)}(t)})}),c.each(p.mouse,function(i){T(t,i,function(r){r=u(r),t.touching||n[i].call(e,r)})}))}function k(e,t){function n(n){T(t,n,function(i){i=u(i),b(e,i.target)||(i=function(e,t){return l(e.dom,new x(e,t),!0)}(e,i),t.domHandlers[n].call(e,i))},{capture:!0})}d.pointerEventsSupported?c.each(g.pointer,n):d.touchEventsSupported||c.each(g.mouse,n)}function T(e,t,n,i){e.mounted[t]=n,e.listenerOpts[t]=i,a(e.domTarget,m(t),n,i)}function M(e){var t=e.mounted;for(var n in t)t.hasOwnProperty(n)&&s(e.domTarget,m(n),t[n],e.listenerOpts[n]);e.mounted={}}function D(e,t){if(e._mayPointerCapture=null,f&&e._pointerCapturing^t){e._pointerCapturing=t;var n=e._globalHandlerScope;t?k(e,n):M(n)}}function A(e,t){this.domTarget=e,this.domHandlers=t,this.mounted={},this.listenerOpts={},this.touchTimer=null,this.touching=!1}function I(e,t){h.call(this),this.dom=e,this.painterRoot=t,this._localHandlerScope=new A(e,w),f&&(this._globalHandlerScope=new A(document,C)),this._pointerCapturing=!1,this._mayPointerCapture=null,S(this,this._localHandlerScope)}var O=I.prototype;O.dispose=function(){M(this._localHandlerScope),f&&M(this._globalHandlerScope)},O.setCursor=function(e){this.dom.style&&(this.dom.style.cursor=e||\"default\")},c.mixin(I,h);var E=I;e.exports=E},e8AB:function(e,t,n){var i=n(\"FeBl\"),r=n(\"7KvD\"),o=r[\"__core-js_shared__\"]||(r[\"__core-js_shared__\"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:i.version,mode:n(\"O4g8\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},e95b:function(e,t,n){var i=n(\"RYbJ\")([[\"fill\",\"color\"],[\"stroke\",\"borderColor\"],[\"lineWidth\",\"borderWidth\"],[\"opacity\"],[\"shadowBlur\"],[\"shadowOffsetX\"],[\"shadowOffsetY\"],[\"shadowColor\"],[\"textPosition\"],[\"textAlign\"]]),r={getItemStyle:function(e,t){var n=i(this,e,t),r=this.getBorderLineDash();return r&&(n.lineDash=r),n},getBorderLineDash:function(){var e=this.get(\"borderType\");return\"solid\"===e||null==e?null:\"dashed\"===e?[5,5]:[1,1]}};e.exports=r},eH0a:function(e,t,n){var i=n(\"/gxq\"),r=n(\"s/lY\"),o=n(\"Y5nL\"),a=n(\"1Xuh\"),s=a.getLayoutParams,l=a.mergeLayoutParam,u=n(\"iGPw\"),c=[\"value\",\"category\",\"time\",\"log\"];e.exports=function(e,t,n,a){i.each(c,function(o){t.extend({type:e+\"Axis.\"+o,mergeDefaultAndTheme:function(t,r){var a=this.layoutMode,u=a?s(t):{},c=r.getTheme();i.merge(t,c.get(o+\"Axis\")),i.merge(t,this.getDefaultOption()),t.type=n(e,t),a&&l(t,u,a)},optionUpdated:function(){\"category\"===this.option.type&&(this.__ordinalMeta=u.createByAxisModel(this))},getCategories:function(e){var t=this.option;if(\"category\"===t.type)return e?t.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:i.mergeAll([{},r[o+\"Axis\"],a],!0)})}),o.registerSubTypeDefaulter(e+\"Axis\",i.curry(n,e))}},eHPu:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\"),a=n(\"dzlV\").setLabel,s=n(\"Pdtn\"),l=n(\"Pobh\"),u=n(\"GxVO\"),c=n(\"AlhT\"),h=n(\"QD+P\").throttle,d=n(\"DDYI\").createClipPath,f=n(\"LJck\"),p=[\"itemStyle\",\"barBorderWidth\"],g=[0,0];r.extend(s.prototype,l);var m=i.extendChartView({type:\"bar\",render:function(e,t,n){this._updateDrawMode(e);var i=e.get(\"coordinateSystem\");return\"cartesian2d\"!==i&&\"polar\"!==i||(this._isLargeDraw?this._renderLarge(e,t,n):this._renderNormal(e,t,n)),this.group},incrementalPrepareRender:function(e,t,n){this._clear(),this._updateDrawMode(e)},incrementalRender:function(e,t,n,i){this._incrementalRenderLarge(e,t)},_updateDrawMode:function(e){var t=e.pipelineContext.large;(null==this._isLargeDraw||t^this._isLargeDraw)&&(this._isLargeDraw=t,this._clear())},_renderNormal:function(e,t,n){var i,r=this.group,a=e.getData(),s=this._data,l=e.coordinateSystem,u=l.getBaseAxis();\"cartesian2d\"===l.type?i=u.isHorizontal():\"polar\"===l.type&&(i=\"angle\"===u.dim);var h=e.isAnimationEnabled()?e:null,d=e.get(\"clip\",!0),f=function(e,t){var n=e.getArea&&e.getArea();if(\"cartesian2d\"===e.type){var i=e.getBaseAxis();if(\"category\"!==i.type||!i.onBand){var r=t.getLayout(\"bandWidth\");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}(l,a);r.removeClipPath();var p=e.get(\"roundCap\",!0),g=e.get(\"showBackground\",!0),m=e.getModel(\"backgroundStyle\"),v=m.get(\"barBorderRadius\")||0,y=[],S=this._backgroundEls||[];a.diff(s).add(function(t){var n=a.getItemModel(t),s=C[l.type](a,t,n);if(g){var u=C[l.type](a,t),c=function(e,t,n){return new(\"polar\"===e.type?o.Sector:o.Rect)({shape:A(t,n,e),silent:!0,z2:0})}(l,i,u);c.useStyle(m.getBarItemStyle()),\"cartesian2d\"===l.type&&c.setShape(\"r\",v),y[t]=c}if(a.hasValue(t)){if(d)if(b[l.type](f,s))return void r.remove(_);var _=x[l.type](t,s,i,h,!1,p);a.setItemGraphicEl(t,_),r.add(_),k(_,a,t,n,s,e,i,\"polar\"===l.type)}}).update(function(t,n){var u=a.getItemModel(t),c=C[l.type](a,t,u);if(g){var _=S[n];_.useStyle(m.getBarItemStyle()),\"cartesian2d\"===l.type&&_.setShape(\"r\",v),y[t]=_;var w=C[l.type](a,t),T=A(i,w,l);o.updateProps(_,{shape:T},h,t)}var M=s.getItemGraphicEl(n);if(a.hasValue(t)){if(d)if(b[l.type](f,c))return void r.remove(M);M?o.updateProps(M,{shape:c},h,t):M=x[l.type](t,c,i,h,!0,p),a.setItemGraphicEl(t,M),r.add(M),k(M,a,t,u,c,e,i,\"polar\"===l.type)}else r.remove(M)}).remove(function(e){var t=s.getItemGraphicEl(e);\"cartesian2d\"===l.type?t&&_(e,h,t):t&&w(e,h,t)}).execute();var T=this._backgroundGroup||(this._backgroundGroup=new c);T.removeAll();for(var M=0;M<y.length;++M)T.add(y[M]);r.add(T),this._backgroundEls=y,this._data=a},_renderLarge:function(e,t,n){this._clear(),M(e,this.group);var i=e.get(\"clip\",!0)?d(e.coordinateSystem,!1,e):null;i?this.group.setClipPath(i):this.group.removeClipPath()},_incrementalRenderLarge:function(e,t){this._removeBackground(),M(t,this.group,!0)},dispose:r.noop,remove:function(e){this._clear(e)},_clear:function(e){var t=this.group,n=this._data;e&&e.get(\"animation\")&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(t){\"sector\"===t.type?w(t.dataIndex,e,t):_(t.dataIndex,e,t)})):t.removeAll(),this._data=null},_removeBackground:function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null}}),v=Math.max,y=Math.min,b={cartesian2d:function(e,t){var n=t.width<0?-1:1,i=t.height<0?-1:1;n<0&&(t.x+=t.width,t.width=-t.width),i<0&&(t.y+=t.height,t.height=-t.height);var r=v(t.x,e.x),o=y(t.x+t.width,e.x+e.width),a=v(t.y,e.y),s=y(t.y+t.height,e.y+e.height);t.x=r,t.y=a,t.width=o-r,t.height=s-a;var l=t.width<0||t.height<0;return n<0&&(t.x+=t.width,t.width=-t.width),i<0&&(t.y+=t.height,t.height=-t.height),l},polar:function(e){return!1}},x={cartesian2d:function(e,t,n,i,a){var s=new o.Rect({shape:r.extend({},t),z2:1});if(s.name=\"item\",i){var l=s.shape,u=n?\"height\":\"width\",c={};l[u]=0,c[u]=t[u],o[a?\"updateProps\":\"initProps\"](s,{shape:c},i,e)}return s},polar:function(e,t,n,i,a,s){var l=t.startAngle<t.endAngle,u=new(!n&&s?f:o.Sector)({shape:r.defaults({clockwise:l},t),z2:1});if(u.name=\"item\",i){var c=u.shape,h=n?\"r\":\"endAngle\",d={};c[h]=n?0:t.startAngle,d[h]=t[h],o[a?\"updateProps\":\"initProps\"](u,{shape:d},i,e)}return u}};function _(e,t,n){n.style.text=null,o.updateProps(n,{shape:{width:0}},t,e,function(){n.parent&&n.parent.remove(n)})}function w(e,t,n){n.style.text=null,o.updateProps(n,{shape:{r:n.shape.r0}},t,e,function(){n.parent&&n.parent.remove(n)})}var C={cartesian2d:function(e,t,n){var i=e.getItemLayout(t),r=n?function(e,t){var n=e.get(p)||0,i=isNaN(t.width)?Number.MAX_VALUE:Math.abs(t.width),r=isNaN(t.height)?Number.MAX_VALUE:Math.abs(t.height);return Math.min(n,i,r)}(n,i):0,o=i.width>0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(e,t,n){var i=e.getItemLayout(t);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle}}};function S(e){return null!=e.startAngle&&null!=e.endAngle&&e.startAngle===e.endAngle}function k(e,t,n,i,s,l,u,c){var h=t.getItemVisual(n,\"color\"),d=t.getItemVisual(n,\"opacity\"),f=t.getVisual(\"borderColor\"),p=i.getModel(\"itemStyle\"),g=i.getModel(\"emphasis.itemStyle\").getBarItemStyle();c||e.setShape(\"r\",p.get(\"barBorderRadius\")||0),e.useStyle(r.defaults({stroke:S(s)?\"none\":f,fill:S(s)?\"none\":h,opacity:d},p.getBarItemStyle()));var m=i.getShallow(\"cursor\");m&&e.attr(\"cursor\",m);var v=u?s.height>0?\"bottom\":\"top\":s.width>0?\"left\":\"right\";c||a(e.style,g,i,h,l,n,v),S(s)&&(g.fill=g.stroke=\"none\"),o.setHoverStyle(e,g)}var T=u.extend({type:\"largeBar\",shape:{points:[]},buildPath:function(e,t){for(var n=t.points,i=this.__startPoint,r=this.__baseDimIdx,o=0;o<n.length;o+=2)i[r]=n[o+r],e.moveTo(i[0],i[1]),e.lineTo(n[o],n[o+1])}});function M(e,t,n){var i=e.getData(),r=[],o=i.getLayout(\"valueAxisHorizontal\")?1:0;r[1-o]=i.getLayout(\"valueAxisStart\");var a=i.getLayout(\"largeDataIndices\"),s=i.getLayout(\"barWidth\"),l=e.getModel(\"backgroundStyle\");if(e.get(\"showBackground\",!0)){var u=i.getLayout(\"largeBackgroundPoints\"),c=[];c[1-o]=i.getLayout(\"backgroundStart\");var h=new T({shape:{points:u},incremental:!!n,__startPoint:c,__baseDimIdx:o,__largeDataIndices:a,__barWidth:s,silent:!0,z2:0});!function(e,t,n){var i=t.get(\"borderColor\")||t.get(\"color\"),r=t.getItemStyle([\"color\",\"borderColor\"]);e.useStyle(r),e.style.fill=null,e.style.stroke=i,e.style.lineWidth=n.getLayout(\"barWidth\")}(h,l,i),t.add(h)}var d=new T({shape:{points:i.getLayout(\"largePoints\")},incremental:!!n,__startPoint:r,__baseDimIdx:o,__largeDataIndices:a,__barWidth:s});t.add(d),function(e,t,n){var i=n.getVisual(\"borderColor\")||n.getVisual(\"color\"),r=t.getModel(\"itemStyle\").getItemStyle([\"color\",\"borderColor\"]);e.useStyle(r),e.style.fill=null,e.style.stroke=i,e.style.lineWidth=n.getLayout(\"barWidth\")}(d,e,i),d.seriesIndex=e.seriesIndex,e.get(\"silent\")||(d.on(\"mousedown\",D),d.on(\"mousemove\",D))}var D=h(function(e){var t=function(e,t,n){var i=e.__baseDimIdx,r=1-i,o=e.shape.points,a=e.__largeDataIndices,s=Math.abs(e.__barWidth/2),l=e.__startPoint[r];g[0]=t,g[1]=n;for(var u=g[i],c=g[1-i],h=u-s,d=u+s,f=0,p=o.length/2;f<p;f++){var m=2*f,v=o[m+i],y=o[m+r];if(v>=h&&v<=d&&(l<=y?c>=l&&c<=y:c>=y&&c<=l))return a[f]}return-1}(this,e.offsetX,e.offsetY);this.dataIndex=t>=0?t:null},30,!1);function A(e,t,n){var i,r=\"polar\"===n.type;return i=r?n.getArea():n.grid.getRect(),r?{cx:i.cx,cy:i.cy,r0:e?i.r0:t.r0,r:e?i.r:t.r,startAngle:e?t.startAngle:0,endAngle:e?t.endAngle:2*Math.PI}:{x:e?t.x:i.x,y:e?i.y:t.y,width:e?t.width:i.width,height:e?i.height:t.height}}e.exports=m},eNfa:function(e,t,n){\"use strict\";var i;!function(r){var o={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g,s=\"[^\\\\s]+\",l=/\\[([^]*?)\\]/gm,u=function(){};function c(e,t){for(var n=[],i=0,r=e.length;i<r;i++)n.push(e[i].substr(0,t));return n}function h(e){return function(t,n,i){var r=i[e].indexOf(n.charAt(0).toUpperCase()+n.substr(1).toLowerCase());~r&&(t.month=r)}}function d(e,t){for(e=String(e),t=t||2;e.length<t;)e=\"0\"+e;return e}var f=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],p=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],g=c(p,3),m=c(f,3);o.i18n={dayNamesShort:m,dayNames:f,monthNamesShort:g,monthNames:p,amPm:[\"am\",\"pm\"],DoFn:function(e){return e+[\"th\",\"st\",\"nd\",\"rd\"][e%10>3?0:(e-e%10!=10)*e%10]}};var v={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?\"-\":\"+\")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},y={d:[\"\\\\d\\\\d?\",function(e,t){e.day=t}],Do:[\"\\\\d\\\\d?\"+s,function(e,t){e.day=parseInt(t,10)}],M:[\"\\\\d\\\\d?\",function(e,t){e.month=t-1}],yy:[\"\\\\d\\\\d?\",function(e,t){var n=+(\"\"+(new Date).getFullYear()).substr(0,2);e.year=\"\"+(t>68?n-1:n)+t}],h:[\"\\\\d\\\\d?\",function(e,t){e.hour=t}],m:[\"\\\\d\\\\d?\",function(e,t){e.minute=t}],s:[\"\\\\d\\\\d?\",function(e,t){e.second=t}],yyyy:[\"\\\\d{4}\",function(e,t){e.year=t}],S:[\"\\\\d\",function(e,t){e.millisecond=100*t}],SS:[\"\\\\d{2}\",function(e,t){e.millisecond=10*t}],SSS:[\"\\\\d{3}\",function(e,t){e.millisecond=t}],D:[\"\\\\d\\\\d?\",u],ddd:[s,u],MMM:[s,h(\"monthNamesShort\")],MMMM:[s,h(\"monthNames\")],a:[s,function(e,t,n){var i=t.toLowerCase();i===n.amPm[0]?e.isPm=!1:i===n.amPm[1]&&(e.isPm=!0)}],ZZ:[\"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z\",function(e,t){var n,i=(t+\"\").match(/([+-]|\\d\\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),e.timezoneOffset=\"+\"===i[0]?n:-n)}]};y.dd=y.d,y.dddd=y.ddd,y.DD=y.D,y.mm=y.m,y.hh=y.H=y.HH=y.h,y.MM=y.M,y.ss=y.s,y.A=y.a,o.masks={default:\"ddd MMM dd yyyy HH:mm:ss\",shortDate:\"M/D/yy\",mediumDate:\"MMM d, yyyy\",longDate:\"MMMM d, yyyy\",fullDate:\"dddd, MMMM d, yyyy\",shortTime:\"HH:mm\",mediumTime:\"HH:mm:ss\",longTime:\"HH:mm:ss.SSS\"},o.format=function(e,t,n){var i=n||o.i18n;if(\"number\"==typeof e&&(e=new Date(e)),\"[object Date]\"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error(\"Invalid Date in fecha.format\");var r=[];return(t=(t=(t=o.masks[t]||t||o.masks.default).replace(l,function(e,t){return r.push(t),\"@@@\"})).replace(a,function(t){return t in v?v[t](e,i):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},o.parse=function(e,t,n){var i=n||o.i18n;if(\"string\"!=typeof t)throw new Error(\"Invalid format in fecha.parse\");if(t=o.masks[t]||t,e.length>1e3)return null;var r={},s=[],u=[];t=t.replace(l,function(e,t){return u.push(t),\"@@@\"});var c,h=(c=t,c.replace(/[|\\\\{()[^$+*?.-]/g,\"\\\\$&\")).replace(a,function(e){if(y[e]){var t=y[e];return s.push(t[1]),\"(\"+t[0]+\")\"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,\"i\"));if(!d)return null;for(var f=1;f<d.length;f++)s[f-1](r,d[f],i);var p,g=new Date;return!0===r.isPm&&null!=r.hour&&12!=+r.hour?r.hour=+r.hour+12:!1===r.isPm&&12==+r.hour&&(r.hour=0),null!=r.timezoneOffset?(r.minute=+(r.minute||0)-+r.timezoneOffset,p=new Date(Date.UTC(r.year||g.getFullYear(),r.month||0,r.day||1,r.hour||0,r.minute||0,r.second||0,r.millisecond||0))):p=new Date(r.year||g.getFullYear(),r.month||0,r.day||1,r.hour||0,r.minute||0,r.second||0,r.millisecond||0),p},void 0!==e&&e.exports?e.exports=o:void 0===(i=function(){return o}.call(t,n,t,e))||(e.exports=i)}()},eQYg:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"/gZK\"),a=n(\"vXqC\").defaultEmphasis,s=n(\"kdOt\").makeSeriesEncodeForNameBased,l=n(\"FCaW\"),u=i.extendSeriesModel({type:\"series.funnel\",init:function(e){u.superApply(this,\"init\",arguments),this.legendVisualProvider=new l(r.bind(this.getData,this),r.bind(this.getRawData,this)),this._defaultLabelLine(e)},getInitialData:function(e,t){return o(this,{coordDimensions:[\"value\"],encodeDefaulter:r.curry(s,this)})},_defaultLabelLine:function(e){a(e,\"labelLine\",[\"show\"]);var t=e.labelLine,n=e.emphasis.labelLine;t.show=t.show&&e.label.show,n.show=n.show&&e.emphasis.label.show},getDataParams:function(e){var t=this.getData(),n=u.superCall(this,\"getDataParams\",e),i=t.mapDimension(\"value\"),r=t.getSum(i);return n.percent=r?+(t.get(i,e)/r*100).toFixed(2):0,n.$vars.push(\"percent\"),n},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:\"0%\",maxSize:\"100%\",sort:\"descending\",gap:0,funnelAlign:\"center\",label:{show:!0,position:\"outer\"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:\"solid\"}},itemStyle:{borderColor:\"#fff\",borderWidth:1},emphasis:{label:{show:!0}}}}),c=u;e.exports=c},eZxa:function(e,t,n){var i=function(){};1===n(\"g+yZ\").debugMode&&(i=console.error);var r=i;e.exports=r},ecfp:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\"),o=n(\"eH0a\"),a=n(\"2uoh\"),s=r.extend({type:\"cartesian2dAxis\",axis:null,init:function(){s.superApply(this,\"init\",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,\"mergeOption\",arguments),this.resetRange()},restoreData:function(){s.superApply(this,\"restoreData\",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:\"grid\",index:this.option.gridIndex,id:this.option.gridId})[0]}});function l(e,t){return t.type||(t.data?\"category\":\"value\")}i.merge(s.prototype,a);var u={offset:0};o(\"x\",s,l,u),o(\"y\",s,l,u);var c=s;e.exports=c},em4M:function(e,t,n){var i=n(\"/gxq\"),r=n(\"vXqC\"),o=n(\"Y5nL\"),a=i.each,s=i.clone,l=i.map,u=i.merge,c=/^(min|max)?(.+)$/;function h(e){this._api=e,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function d(e,t,n){var r={width:t,height:n,aspectratio:t/n},o=!0;return i.each(e,function(e,t){var n=t.match(c);if(n&&n[1]&&n[2]){var i=n[1],a=n[2].toLowerCase();(function(e,t,n){return\"min\"===n?e>=t:\"max\"===n?e<=t:e===t})(r[a],e,i)||(o=!1)}}),o}h.prototype={constructor:h,setOption:function(e,t){e&&i.each(r.normalizeToArray(e.series),function(e){e&&e.data&&i.isTypedArray(e.data)&&i.setAsPrimitive(e.data)}),e=s(e);var n,c,h=this._optionBackup,d=function(e,t,n){var r,o,s=[],l=[],u=e.timeline;e.baseOption&&(o=e.baseOption);(u||e.options)&&(o=o||{},s=(e.options||[]).slice());if(e.media){o=o||{};var c=e.media;a(c,function(e){e&&e.option&&(e.query?l.push(e):r||(r=e))})}o||(o=e);o.timeline||(o.timeline=u);return a([o].concat(s).concat(i.map(l,function(e){return e.option})),function(e){a(t,function(t){t(e,n)})}),{baseOption:o,timelineOptions:s,mediaDefault:r,mediaList:l}}.call(this,e,t,!h);this._newBaseOption=d.baseOption,h?(n=h.baseOption,c=d.baseOption,a(c=c||{},function(e,t){if(null!=e){var i=n[t];if(o.hasClass(t)){e=r.normalizeToArray(e),i=r.normalizeToArray(i);var a=r.mappingToExists(i,e);n[t]=l(a,function(e){return e.option&&e.exist?u(e.exist,e.option,!0):e.exist||e.option})}else n[t]=u(i,e,!0)}}),d.timelineOptions.length&&(h.timelineOptions=d.timelineOptions),d.mediaList.length&&(h.mediaList=d.mediaList),d.mediaDefault&&(h.mediaDefault=d.mediaDefault)):this._optionBackup=d},mountOption:function(e){var t=this._optionBackup;return this._timelineOptions=l(t.timelineOptions,s),this._mediaList=l(t.mediaList,s),this._mediaDefault=s(t.mediaDefault),this._currentMediaIndices=[],s(e?t.baseOption:this._newBaseOption)},getTimelineOption:function(e){var t,n=this._timelineOptions;if(n.length){var i=e.getComponent(\"timeline\");i&&(t=s(n[i.getCurrentIndex()],!0))}return t},getMediaOption:function(e){var t,n,i=this._api.getWidth(),r=this._api.getHeight(),o=this._mediaList,a=this._mediaDefault,u=[],c=[];if(!o.length&&!a)return c;for(var h=0,f=o.length;h<f;h++)d(o[h].query,i,r)&&u.push(h);return!u.length&&a&&(u=[-1]),u.length&&(t=u,n=this._currentMediaIndices,t.join(\",\")!==n.join(\",\"))&&(c=l(u,function(e){return s(-1===e?a.option:o[e].option)})),this._currentMediaIndices=u,c}};var f=h;e.exports=f},envY:function(e,t,n){var i=n(\"sJ4e\").extend({type:\"dataZoom.slider\",layoutMode:\"box\",defaultOption:{show:!0,right:\"ph\",top:\"ph\",width:\"ph\",height:\"ph\",left:null,bottom:null,backgroundColor:\"rgba(47,69,84,0)\",dataBackground:{lineStyle:{color:\"#2f4554\",width:.5,opacity:.3},areaStyle:{color:\"rgba(47,69,84,0.3)\",opacity:.3}},borderColor:\"#ddd\",fillerColor:\"rgba(167,183,204,0.4)\",handleIcon:\"M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z\",handleSize:\"100%\",handleStyle:{color:\"#a7b7cc\"},labelPrecision:null,labelFormatter:null,showDetail:!0,showDataShadow:\"auto\",realtime:!0,zoomLock:!1,textStyle:{color:\"#333\"}}});e.exports=i},evD5:function(e,t,n){var i=n(\"77Pl\"),r=n(\"SfB7\"),o=n(\"MmMw\"),a=Object.defineProperty;t.f=n(\"+E39\")?Object.defineProperty:function(e,t,n){if(i(e),t=o(t,!0),i(n),r)try{return a(e,t,n)}catch(e){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(e[t]=n.value),e}},fAbo:function(e,t,n){var i=[\"itemStyle\",\"borderColor\"],r=[\"itemStyle\",\"borderColor0\"],o=[\"itemStyle\",\"color\"],a=[\"itemStyle\",\"color0\"],s={seriesType:\"candlestick\",plan:n(\"CqCN\")(),performRawSeries:!0,reset:function(e,t){if(e.getData().setVisual({legendSymbol:\"roundRect\",colorP:n(1,e),colorN:n(-1,e),borderColorP:s(1,e),borderColorN:s(-1,e)}),!t.isSeriesFiltered(e))return!e.pipelineContext.large&&{progress:function(e,t){var i;for(;null!=(i=e.next());){var r=t.getItemModel(i),o=t.getItemLayout(i).sign;t.setItemVisual(i,{color:n(o,r),borderColor:s(o,r)})}}};function n(e,t){return t.get(e>0?o:a)}function s(e,t){return t.get(e>0?i:r)}}};e.exports=s},\"fEB+\":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=127)}({127:function(e,t,n){\"use strict\";n.r(t);var i=n(16),r=n(39),o=n.n(r),a=n(3),s=n(2),l={vertical:{offset:\"offsetHeight\",scroll:\"scrollTop\",scrollSize:\"scrollHeight\",size:\"height\",key:\"vertical\",axis:\"Y\",client:\"clientY\",direction:\"top\"},horizontal:{offset:\"offsetWidth\",scroll:\"scrollLeft\",scrollSize:\"scrollWidth\",size:\"width\",key:\"horizontal\",axis:\"X\",client:\"clientX\",direction:\"left\"}};var u={name:\"Bar\",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return l[this.vertical?\"vertical\":\"horizontal\"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,n=this.move,i=this.bar;return e(\"div\",{class:[\"el-scrollbar__bar\",\"is-\"+i.key],on:{mousedown:this.clickTrackHandler}},[e(\"div\",{ref:\"thumb\",class:\"el-scrollbar__thumb\",on:{mousedown:this.clickThumbHandler},style:function(e){var t=e.move,n=e.size,i=e.bar,r={},o=\"translate\"+i.axis+\"(\"+t+\"%)\";return r[i.size]=n,r.transform=o,r.msTransform=o,r.webkitTransform=o,r}({size:t,move:n,bar:i})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(s.on)(document,\"mousemove\",this.mouseMoveDocumentHandler),Object(s.on)(document,\"mouseup\",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var n=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=n*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(s.off)(document,\"mousemove\",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(s.off)(document,\"mouseup\",this.mouseUpDocumentHandler)}},c={name:\"ElScrollbar\",components:{Bar:u},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:\"div\"}},data:function(){return{sizeWidth:\"0\",sizeHeight:\"0\",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=o()(),n=this.wrapStyle;if(t){var i=\"-\"+t+\"px\",r=\"margin-bottom: \"+i+\"; margin-right: \"+i+\";\";Array.isArray(this.wrapStyle)?(n=Object(a.toObject)(this.wrapStyle)).marginRight=n.marginBottom=i:\"string\"==typeof this.wrapStyle?n+=r:n=r}var s=e(this.tag,{class:[\"el-scrollbar__view\",this.viewClass],style:this.viewStyle,ref:\"resize\"},this.$slots.default),l=e(\"div\",{ref:\"wrap\",style:n,on:{scroll:this.handleScroll},class:[this.wrapClass,\"el-scrollbar__wrap\",t?\"\":\"el-scrollbar__wrap--hidden-default\"]},[[s]]);return e(\"div\",{class:\"el-scrollbar\"},this.native?[e(\"div\",{ref:\"wrap\",class:[this.wrapClass,\"el-scrollbar__wrap\"],style:n},[[s]])]:[l,e(u,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(u,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})])},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,n=this.wrap;n&&(e=100*n.clientHeight/n.scrollHeight,t=100*n.clientWidth/n.scrollWidth,this.sizeHeight=e<100?e+\"%\":\"\",this.sizeWidth=t<100?t+\"%\":\"\")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(i.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(i.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(c.name,c)}};t.default=c},16:function(e,t){e.exports=n(\"02w1\")},2:function(e,t){e.exports=n(\"2kvA\")},3:function(e,t){e.exports=n(\"ylDJ\")},39:function(e,t){e.exports=n(\"6Twh\")}})},fKx3:function(e,t,n){\"use strict\";t.__esModule=!0;var i,r=n(\"7+uW\"),o=(i=r)&&i.__esModule?i:{default:i},a=n(\"7J9s\");var s=o.default.prototype.$isServer?function(){}:n(\"NMof\"),l=function(e){return e.stopPropagation()};t.default={props:{transformOrigin:{type:[Boolean,String],default:!0},placement:{type:String,default:\"bottom\"},boundariesPadding:{type:Number,default:5},reference:{},popper:{},offset:{default:0},value:Boolean,visibleArrow:Boolean,arrowOffset:{type:Number,default:35},appendToBody:{type:Boolean,default:!0},popperOptions:{type:Object,default:function(){return{gpuAcceleration:!1}}}},data:function(){return{showPopper:!1,currentPlacement:\"\"}},watch:{value:{immediate:!0,handler:function(e){this.showPopper=e,this.$emit(\"input\",e)}},showPopper:function(e){this.disabled||(e?this.updatePopper():this.destroyPopper(),this.$emit(\"input\",e))}},methods:{createPopper:function(){var e=this;if(!this.$isServer&&(this.currentPlacement=this.currentPlacement||this.placement,/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement))){var t=this.popperOptions,n=this.popperElm=this.popperElm||this.popper||this.$refs.popper,i=this.referenceElm=this.referenceElm||this.reference||this.$refs.reference;!i&&this.$slots.reference&&this.$slots.reference[0]&&(i=this.referenceElm=this.$slots.reference[0].elm),n&&i&&(this.visibleArrow&&this.appendArrow(n),this.appendToBody&&document.body.appendChild(this.popperElm),this.popperJS&&this.popperJS.destroy&&this.popperJS.destroy(),t.placement=this.currentPlacement,t.offset=this.offset,t.arrowOffset=this.arrowOffset,this.popperJS=new s(i,n,t),this.popperJS.onCreate(function(t){e.$emit(\"created\",e),e.resetTransformOrigin(),e.$nextTick(e.updatePopper)}),\"function\"==typeof t.onUpdate&&this.popperJS.onUpdate(t.onUpdate),this.popperJS._popper.style.zIndex=a.PopupManager.nextZIndex(),this.popperElm.addEventListener(\"click\",l))}},updatePopper:function(){var e=this.popperJS;e?(e.update(),e._popper&&(e._popper.style.zIndex=a.PopupManager.nextZIndex())):this.createPopper()},doDestroy:function(e){!this.popperJS||this.showPopper&&!e||(this.popperJS.destroy(),this.popperJS=null)},destroyPopper:function(){this.popperJS&&this.resetTransformOrigin()},resetTransformOrigin:function(){if(this.transformOrigin){var e=this.popperJS._popper.getAttribute(\"x-placement\").split(\"-\")[0],t={top:\"bottom\",bottom:\"top\",left:\"right\",right:\"left\"}[e];this.popperJS._popper.style.transformOrigin=\"string\"==typeof this.transformOrigin?this.transformOrigin:[\"top\",\"bottom\"].indexOf(e)>-1?\"center \"+t:t+\" center\"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var n in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[n].name)){t=e.attributes[n].name;break}var i=document.createElement(\"div\");t&&i.setAttribute(t,\"\"),i.setAttribute(\"x-arrow\",\"\"),i.className=\"popper__arrow\",e.appendChild(i)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener(\"click\",l),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},fPll:function(e,t,n){\"use strict\";t.__esModule=!0,t.default={methods:{dispatch:function(e,t,n){for(var i=this.$parent||this.$root,r=i.$options.componentName;i&&(!r||r!==e);)(i=i.$parent)&&(r=i.$options.componentName);i&&i.$emit.apply(i,[t].concat(n))},broadcast:function(e,t,n){(function e(t,n,i){this.$children.forEach(function(r){r.$options.componentName===t?r.$emit.apply(r,[n].concat(i)):e.apply(r,[t,n].concat([i]))})}).call(this,e,t,n)}}}},fUqW:function(e,t,n){\"use strict\";t.__esModule=!0;var i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.isVNode=function(e){return null!==e&&\"object\"===(void 0===e?\"undefined\":i(e))&&(0,r.hasOwn)(e,\"componentOptions\")};var r=n(\"ylDJ\")},fWfb:function(e,t,n){\"use strict\";var i=n(\"7KvD\"),r=n(\"D2L2\"),o=n(\"+E39\"),a=n(\"kM2E\"),s=n(\"880/\"),l=n(\"06OY\").KEY,u=n(\"S82l\"),c=n(\"e8AB\"),h=n(\"e6n0\"),d=n(\"3Eo+\"),f=n(\"dSzd\"),p=n(\"Kh4W\"),g=n(\"crlp\"),m=n(\"Xc4G\"),v=n(\"7UMu\"),y=n(\"77Pl\"),b=n(\"EqjI\"),x=n(\"sB3e\"),_=n(\"TcQ7\"),w=n(\"MmMw\"),C=n(\"X8DO\"),S=n(\"Yobk\"),k=n(\"Rrel\"),T=n(\"LKZe\"),M=n(\"1kS7\"),D=n(\"evD5\"),A=n(\"lktj\"),I=T.f,O=D.f,E=k.f,L=i.Symbol,P=i.JSON,N=P&&P.stringify,R=f(\"_hidden\"),B=f(\"toPrimitive\"),z={}.propertyIsEnumerable,F=c(\"symbol-registry\"),$=c(\"symbols\"),V=c(\"op-symbols\"),j=Object.prototype,H=\"function\"==typeof L&&!!M.f,W=i.QObject,q=!W||!W.prototype||!W.prototype.findChild,G=o&&u(function(){return 7!=S(O({},\"a\",{get:function(){return O(this,\"a\",{value:7}).a}})).a})?function(e,t,n){var i=I(j,t);i&&delete j[t],O(e,t,n),i&&e!==j&&O(j,t,i)}:O,U=function(e){var t=$[e]=S(L.prototype);return t._k=e,t},Y=H&&\"symbol\"==typeof L.iterator?function(e){return\"symbol\"==typeof e}:function(e){return e instanceof L},X=function(e,t,n){return e===j&&X(V,t,n),y(e),t=w(t,!0),y(n),r($,t)?(n.enumerable?(r(e,R)&&e[R][t]&&(e[R][t]=!1),n=S(n,{enumerable:C(0,!1)})):(r(e,R)||O(e,R,C(1,{})),e[R][t]=!0),G(e,t,n)):O(e,t,n)},K=function(e,t){y(e);for(var n,i=m(t=_(t)),r=0,o=i.length;o>r;)X(e,n=i[r++],t[n]);return e},Z=function(e){var t=z.call(this,e=w(e,!0));return!(this===j&&r($,e)&&!r(V,e))&&(!(t||!r(this,e)||!r($,e)||r(this,R)&&this[R][e])||t)},J=function(e,t){if(e=_(e),t=w(t,!0),e!==j||!r($,t)||r(V,t)){var n=I(e,t);return!n||!r($,t)||r(e,R)&&e[R][t]||(n.enumerable=!0),n}},Q=function(e){for(var t,n=E(_(e)),i=[],o=0;n.length>o;)r($,t=n[o++])||t==R||t==l||i.push(t);return i},ee=function(e){for(var t,n=e===j,i=E(n?V:_(e)),o=[],a=0;i.length>a;)!r($,t=i[a++])||n&&!r(j,t)||o.push($[t]);return o};H||(s((L=function(){if(this instanceof L)throw TypeError(\"Symbol is not a constructor!\");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===j&&t.call(V,n),r(this,R)&&r(this[R],e)&&(this[R][e]=!1),G(this,e,C(1,n))};return o&&q&&G(j,e,{configurable:!0,set:t}),U(e)}).prototype,\"toString\",function(){return this._k}),T.f=J,D.f=X,n(\"n0T6\").f=k.f=Q,n(\"NpIQ\").f=Z,M.f=ee,o&&!n(\"O4g8\")&&s(j,\"propertyIsEnumerable\",Z,!0),p.f=function(e){return U(f(e))}),a(a.G+a.W+a.F*!H,{Symbol:L});for(var te=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),ne=0;te.length>ne;)f(te[ne++]);for(var ie=A(f.store),re=0;ie.length>re;)g(ie[re++]);a(a.S+a.F*!H,\"Symbol\",{for:function(e){return r(F,e+=\"\")?F[e]:F[e]=L(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+\" is not a symbol!\");for(var t in F)if(F[t]===e)return t},useSetter:function(){q=!0},useSimple:function(){q=!1}}),a(a.S+a.F*!H,\"Object\",{create:function(e,t){return void 0===t?S(e):K(S(e),t)},defineProperty:X,defineProperties:K,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:ee});var oe=u(function(){M.f(1)});a(a.S+a.F*oe,\"Object\",{getOwnPropertySymbols:function(e){return M.f(x(e))}}),P&&a(a.S+a.F*(!H||u(function(){var e=L();return\"[null]\"!=N([e])||\"{}\"!=N({a:e})||\"{}\"!=N(Object(e))})),\"JSON\",{stringify:function(e){for(var t,n,i=[e],r=1;arguments.length>r;)i.push(arguments[r++]);if(n=t=i[1],(b(t)||void 0!==e)&&!Y(e))return v(t)||(t=function(e,t){if(\"function\"==typeof n&&(t=n.call(this,e,t)),!Y(t))return t}),i[1]=t,N.apply(P,i)}}),L.prototype[B]||n(\"hJx8\")(L.prototype,B,L.prototype.valueOf),h(L,\"Symbol\"),h(Math,\"Math\",!0),h(i.JSON,\"JSON\",!0)},fYRm:function(e,t,n){var i=n(\"/gxq\"),r=i.createHashMap,o=i.each;function a(e){o(e,function(t,n){var i=[],r=[NaN,NaN],o=[t.stackResultDimension,t.stackedOverDimension],a=t.data,s=t.isStackedByIndex,l=a.map(o,function(o,l,u){var c,h,d=a.get(t.stackedDimension,u);if(isNaN(d))return r;s?h=a.getRawIndex(u):c=a.get(t.stackedByDimension,u);for(var f=NaN,p=n-1;p>=0;p--){var g=e[p];if(s||(h=g.data.rawIndexOf(g.stackedByDimension,c)),h>=0){var m=g.data.getByRawIndex(g.stackResultDimension,h);if(d>=0&&m>0||d<=0&&m<0){d+=m,f=m;break}}}return i[0]=d,i[1]=f,i});a.hostModel.setData(l),t.data=l})}e.exports=function(e){var t=r();e.eachSeries(function(e){var n=e.get(\"stack\");if(n){var i=t.get(n)||t.set(n,[]),r=e.getData(),o={stackResultDimension:r.getCalculationInfo(\"stackResultDimension\"),stackedOverDimension:r.getCalculationInfo(\"stackedOverDimension\"),stackedDimension:r.getCalculationInfo(\"stackedDimension\"),stackedByDimension:r.getCalculationInfo(\"stackedByDimension\"),isStackedByIndex:r.getCalculationInfo(\"isStackedByIndex\"),data:r,seriesModel:e};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo(\"stackedOnSeries\",i[i.length-1].seriesModel),i.push(o)}}),t.each(a)}},fZjL:function(e,t,n){e.exports={default:n(\"jFbC\"),__esModule:!0}},fgF4:function(e,t,n){var i=n(\"RYbJ\")([[\"fill\",\"color\"],[\"shadowBlur\"],[\"shadowOffsetX\"],[\"shadowOffsetY\"],[\"opacity\"],[\"shadowColor\"]]),r={getAreaStyle:function(e,t){return i(this,e,t)}};e.exports=r},fkB2:function(e,t,n){var i=n(\"UuGF\"),r=Math.max,o=Math.min;e.exports=function(e,t){return(e=i(e))<0?r(e+t,0):o(e,t)}},fm2I:function(e,t,n){var i=n(\"/gxq\"),r=n(\"8b51\"),o=n(\"wWR3\"),a=o.parsePercent,s=o.MAX_SAFE_INTEGER,l=n(\"1Xuh\"),u=n(\"gOx9\"),c=Math.max,h=Math.min,d=i.retrieve,f=i.each,p=[\"itemStyle\",\"borderWidth\"],g=[\"itemStyle\",\"gapWidth\"],m=[\"upperLabel\",\"show\"],v=[\"upperLabel\",\"height\"],y={seriesType:\"treemap\",reset:function(e,t,n,o){var m=n.getWidth(),v=n.getHeight(),y=e.option,w=l.getLayoutRect(e.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),C=y.size||[],S=a(d(w.width,C[0]),m),k=a(d(w.height,C[1]),v),T=o&&o.type,M=u.retrieveTargetInfo(o,[\"treemapZoomToNode\",\"treemapRootToNode\"],e),D=\"treemapRender\"===T||\"treemapMove\"===T?o.rootRect:null,A=e.getViewRoot(),I=u.getPathToRoot(A);if(\"treemapMove\"!==T){var O=\"treemapZoomToNode\"===T?function(e,t,n,i,r){var o,a=(t||{}).node,l=[i,r];if(!a||a===n)return l;var u=i*r,c=u*e.option.zoomToNodeRatio;for(;o=a.parentNode;){for(var h=0,d=o.children,f=0,g=d.length;f<g;f++)h+=d[f].getValue();var m=a.getValue();if(0===m)return l;c*=h/m;var v=o.getModel(),y=v.get(p),b=Math.max(y,_(v));(c+=4*y*y+(3*y+b)*Math.pow(c,.5))>s&&(c=s),a=o}c<u&&(c=u);var x=Math.pow(c/u,.5);return[i*x,r*x]}(e,M,A,S,k):D?[D.width,D.height]:[S,k],E=y.sort;E&&\"asc\"!==E&&\"desc\"!==E&&(E=\"desc\");var L={squareRatio:y.squareRatio,sort:E,leafDepth:y.leafDepth};A.hostTree.clearLayouts();var P={x:0,y:0,width:O[0],height:O[1],area:O[0]*O[1]};A.setLayout(P),function e(t,n,r,o){var a;var s;if(t.isRemoved())return;var l=t.getLayout();a=l.width;s=l.height;var u=t.getModel();var d=u.get(p);var m=u.get(g)/2;var v=_(u);var y=Math.max(d,v);var w=d-m;var C=y-m;var u=t.getModel();t.setLayout({borderWidth:d,upperHeight:y,upperLabelHeight:v},!0);a=c(a-2*w,0);s=c(s-w-C,0);var S=a*s;var k=function(e,t,n,r,o,a){var s=e.children||[],l=r.sort;\"asc\"!==l&&\"desc\"!==l&&(l=null);var u=null!=r.leafDepth&&r.leafDepth<=a;if(o&&!u)return e.viewChildren=[];!function(e,t){t&&e.sort(function(e,n){var i=\"asc\"===t?e.getValue()-n.getValue():n.getValue()-e.getValue();return 0===i?\"asc\"===t?e.dataIndex-n.dataIndex:n.dataIndex-e.dataIndex:i})}(s=i.filter(s,function(e){return!e.isRemoved()}),l);var c=function(e,t,n){for(var i=0,r=0,o=t.length;r<o;r++)i+=t[r].getValue();var a=e.get(\"visualDimension\");if(t&&t.length)if(\"value\"===a&&n)s=[t[t.length-1].getValue(),t[0].getValue()],\"asc\"===n&&s.reverse();else{var s=[1/0,-1/0];f(t,function(e){var t=e.getValue(a);t<s[0]&&(s[0]=t),t>s[1]&&(s[1]=t)})}else s=[NaN,NaN];return{sum:i,dataExtent:s}}(t,s,l);if(0===c.sum)return e.viewChildren=[];if(c.sum=function(e,t,n,i,r){if(!i)return n;for(var o=e.get(\"visibleMin\"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r[\"asc\"===i?a-l-1:l].getValue();u/n*t<o&&(s=l,n-=u)}return\"asc\"===i?r.splice(0,a-s):r.splice(s,a-s),n}(t,n,c.sum,l,s),0===c.sum)return e.viewChildren=[];for(var h=0,d=s.length;h<d;h++){var p=s[h].getValue()/c.sum*n;s[h].setLayout({area:p})}u&&(s.length&&e.setLayout({isLeafRoot:!0},!0),s.length=0);return e.viewChildren=s,e.setLayout({dataExtent:c.dataExtent},!0),s}(t,u,S,n,r,o);if(!k.length)return;var T={x:w,y:C,width:a,height:s};var M=h(a,s);var D=1/0;var A=[];A.area=0;for(var I=0,O=k.length;I<O;){var E=k[I];A.push(E),A.area+=E.getLayout().area;var L=b(A,M,n.squareRatio);L<=D?(I++,D=L):(A.area-=A.pop().getLayout().area,x(A,M,T,m,!1),M=h(T.width,T.height),A.length=A.area=0,D=1/0)}A.length&&x(A,M,T,m,!0);if(!r){var P=u.get(\"childrenVisibleMin\");null!=P&&S<P&&(r=!0)}for(var I=0,O=k.length;I<O;I++)e(k[I],n,r,o+1)}(A,L,!1,0);P=A.getLayout();f(I,function(e,t){var n=(I[t+1]||A).getValue();e.setLayout(i.extend({dataExtent:[n,n],borderWidth:0,upperHeight:0},P))})}var N=e.getData().tree.root;N.setLayout(function(e,t,n){if(t)return{x:t.x,y:t.y};var i={x:0,y:0};if(!n)return i;var r=n.node,o=r.getLayout();if(!o)return i;var a=[o.width/2,o.height/2],s=r;for(;s;){var l=s.getLayout();a[0]+=l.x,a[1]+=l.y,s=s.parentNode}return{x:e.width/2-a[0],y:e.height/2-a[1]}}(w,D,M),!0),e.setLayoutInfo(w),function e(t,n,i,o,a){var s=t.getLayout();var l=i[a];var u=l&&l===t;if(l&&!u||a===i.length&&t!==o)return;t.setLayout({isInView:!0,invisible:!u&&!n.intersect(s),isAboveViewRoot:u},!0);var c=new r(n.x-s.x,n.y-s.y,n.width,n.height);f(t.viewChildren||[],function(t){e(t,c,i,o,a+1)})}(N,new r(-w.x,-w.y,m,v),I,A,0)}};function b(e,t,n){for(var i,r=0,o=1/0,a=0,s=e.length;a<s;a++)(i=e[a].getLayout().area)&&(i<o&&(o=i),i>r&&(r=i));var l=e.area*e.area,u=t*t*n;return l?c(u*r/l,l/(u*o)):1/0}function x(e,t,n,i,r){var o=t===n.width?0:1,a=1-o,s=[\"x\",\"y\"],l=[\"width\",\"height\"],u=n[s[o]],d=t?e.area/t:0;(r||d>n[l[a]])&&(d=n[l[a]]);for(var f=0,p=e.length;f<p;f++){var g=e[f],m={},v=d?g.getLayout().area/d:0,y=m[l[a]]=c(d-2*i,0),b=n[s[o]]+n[l[o]]-u,x=f===p-1||b<v?b:v,_=m[l[o]]=c(x-2*i,0);m[s[a]]=n[s[a]]+h(i,y/2),m[s[o]]=u+h(i,_/2),u+=x,g.setLayout(m,!0)}n[s[a]]+=d,n[l[a]]-=d}function _(e){return e.get(m)?e.get(v):0}e.exports=y},fo6W:function(e,t,n){(function(e){\"use strict\";e.registerHelper(\"fold\",\"brace\",function(t,n){var i,r=n.line,o=t.getLine(r);function a(a){for(var s=n.ch,l=0;;){var u=s<=0?-1:o.lastIndexOf(a,s-1);if(-1!=u){if(1==l&&u<n.ch)break;if(i=t.getTokenTypeAt(e.Pos(r,u+1)),!/^(comment|string)/.test(i))return u+1;s=u-1}else{if(1==l)break;l=1,s=o.length}}}var s,l,u,c=a(\"{\"),h=a(\"[\");if(null!=c&&(null==h||h>c))u=c,s=\"{\",l=\"}\";else{if(null==h)return;u=h,s=\"[\",l=\"]\"}var d,f,p=1,g=t.lastLine();e:for(var m=r;m<=g;++m)for(var v=t.getLine(m),y=m==r?u:0;;){var b=v.indexOf(s,y),x=v.indexOf(l,y);if(b<0&&(b=v.length),x<0&&(x=v.length),(y=Math.min(b,x))==v.length)break;if(t.getTokenTypeAt(e.Pos(m,y+1))==i)if(y==b)++p;else if(!--p){d=m,f=y;break e}++y}if(null!=d&&r!=d)return{from:e.Pos(r,u),to:e.Pos(d,f)}}),e.registerHelper(\"fold\",\"import\",function(t,n){function i(n){if(n<t.firstLine()||n>t.lastLine())return null;var i=t.getTokenAt(e.Pos(n,1));if(/\\S/.test(i.string)||(i=t.getTokenAt(e.Pos(n,i.end+1))),\"keyword\"!=i.type||\"import\"!=i.string)return null;for(var r=n,o=Math.min(t.lastLine(),n+10);r<=o;++r){var a=t.getLine(r).indexOf(\";\");if(-1!=a)return{startCh:i.end,end:e.Pos(r,a)}}}var r,o=n.line,a=i(o);if(!a||i(o-1)||(r=i(o-2))&&r.end.line==o-1)return null;for(var s=a.end;;){var l=i(s.line+1);if(null==l)break;s=l.end}return{from:t.clipPos(e.Pos(o,a.startCh+1)),to:s}}),e.registerHelper(\"fold\",\"include\",function(t,n){function i(n){if(n<t.firstLine()||n>t.lastLine())return null;var i=t.getTokenAt(e.Pos(n,1));return/\\S/.test(i.string)||(i=t.getTokenAt(e.Pos(n,i.end+1))),\"meta\"==i.type&&\"#include\"==i.string.slice(0,8)?i.start+8:void 0}var r=n.line,o=i(r);if(null==o||null!=i(r-1))return null;for(var a=r;;){if(null==i(a+1))break;++a}return{from:e.Pos(r,o+1),to:t.clipPos(e.Pos(a))}})})(n(\"8U58\"))},\"fzS+\":function(e,t,n){var i=n(\"/gxq\");t.layout=function(e,t){t=t||{};var n=e.coordinateSystem,r=e.axis,o={},a=r.position,s=r.orient,l=n.getRect(),u=[l.x,l.x+l.width,l.y,l.y+l.height],c={horizontal:{top:u[2],bottom:u[3]},vertical:{left:u[0],right:u[1]}};o.position=[\"vertical\"===s?c.vertical[a]:u[0],\"horizontal\"===s?c.horizontal[a]:u[3]],o.rotation=Math.PI/2*{horizontal:0,vertical:1}[s],o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,right:1,left:-1}[a],e.get(\"axisTick.inside\")&&(o.tickDirection=-o.tickDirection),i.retrieve(t.labelInside,e.get(\"axisLabel.inside\"))&&(o.labelDirection=-o.labelDirection);var h=t.rotate;return null==h&&(h=e.get(\"axisLabel.rotate\")),o.labelRotation=\"top\"===a?-h:h,o.z2=1,o}},\"g+yZ\":function(e,t){var n=1;\"undefined\"!=typeof window&&(n=Math.max(window.devicePixelRatio||1,1));var i=n;t.debugMode=0,t.devicePixelRatio=i},\"g8A/\":function(e,t,n){var i=n(\"/gxq\");e.exports=function(e){e&&i.isArray(e.series)&&i.each(e.series,function(e){i.isObject(e)&&\"k\"===e.type&&(e.type=\"candlestick\")})}},gLqW:function(e,t,n){var i=n(\"/gxq\"),r=n(\"EJsE\"),o=n(\"+jMe\"),a=n(\"Pdtn\"),s=n(\"HHfb\"),l=s.encodeHTML,u=s.addCommas,c=n(\"gOx9\").wrapTreePathInfo,h=r.extend({type:\"series.treemap\",layoutMode:\"box\",dependencies:[\"grid\",\"polar\"],preventUsingHoverLayer:!0,_viewRoot:null,defaultOption:{progressive:0,left:\"center\",top:\"middle\",right:null,bottom:null,width:\"80%\",height:\"80%\",sort:!0,clipWindow:\"origin\",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:\"▶\",zoomToNodeRatio:.1024,roam:!0,nodeClick:\"zoomToNode\",animation:!0,animationDurationUpdate:900,animationEasing:\"quinticInOut\",breadcrumb:{show:!0,height:22,left:\"center\",top:\"bottom\",emptyItemWidth:25,itemStyle:{color:\"rgba(0,0,0,0.7)\",borderColor:\"rgba(255,255,255,0.7)\",borderWidth:1,shadowColor:\"rgba(150,150,150,1)\",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:\"#fff\"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:\"inside\",color:\"#fff\",ellipsis:!0},upperLabel:{show:!1,position:[0,\"50%\"],height:20,color:\"#fff\",ellipsis:!0,verticalAlign:\"middle\"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:\"#fff\",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,\"50%\"],color:\"#fff\",ellipsis:!0,verticalAlign:\"middle\"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:\"index\",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(e,t){var n={name:e.name,children:e.data};!function e(t){var n=0;i.each(t.children,function(t){e(t);var r=t.value;i.isArray(r)&&(r=r[0]),n+=r});var r=t.value;i.isArray(r)&&(r=r[0]);(null==r||isNaN(r))&&(r=n);r<0&&(r=0);i.isArray(t.value)?t.value[0]=r:t.value=r}(n);var r=e.levels||[];r=e.levels=function(e,t){var n,r=t.get(\"color\");if(!r)return;if(e=e||[],i.each(e,function(e){var t=new a(e),i=t.get(\"color\");(t.get(\"itemStyle.color\")||i&&\"none\"!==i)&&(n=!0)}),!n){var o=e[0]||(e[0]={});o.color=r.slice()}return e}(r,t);var s=i.map(r||[],function(e){return new a(e,this,t)},this),l=o.createTree(n,this,null,function(e){e.wrapMethod(\"getItemModel\",function(e,t){var n=l.getNodeByDataIndex(t),i=s[n.depth];return i&&(e.parentModel=i),e})});return l.data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(e){var t=this.getData(),n=this.getRawValue(e),r=i.isArray(n)?u(n[0]):u(n),o=t.getName(e);return l(o+\": \"+r)},getDataParams:function(e){var t=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(e);return t.treePathInfo=c(n,this),t},setLayoutInfo:function(e){this.layoutInfo=this.layoutInfo||{},i.extend(this.layoutInfo,e)},mapIdToIndex:function(e){var t=this._idIndexMap;t||(t=this._idIndexMap=i.createHashMap(),this._idIndexMapCount=0);var n=t.get(e);return null==n&&t.set(e,n=this._idIndexMapCount++),n},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(e){e?this._viewRoot=e:e=this._viewRoot;var t=this.getRawData().tree.root;e&&(e===t||t.contains(e))||(this._viewRoot=t)}});e.exports=h},gOx9:function(e,t,n){var i=n(\"/gxq\");function r(e){for(var t=[];e;)(e=e.parentNode)&&t.push(e);return t.reverse()}t.retrieveTargetInfo=function(e,t,n){if(e&&i.indexOf(t,e.type)>=0){var r=n.getData().tree.root,o=e.targetNode;if(\"string\"==typeof o&&(o=r.getNodeById(o)),o&&r.contains(o))return{node:o};var a=e.targetNodeId;if(null!=a&&(o=r.getNodeById(a)))return{node:o}}},t.getPathToRoot=r,t.aboveViewRoot=function(e,t){var n=r(e);return i.indexOf(n,t)>=0},t.wrapTreePathInfo=function(e,t){for(var n=[];e;){var i=e.dataIndex;n.push({name:e.name,dataIndex:i,value:t.getRawValue(i)}),e=e.parentNode}return n.reverse(),n}},gV7x:function(e,t,n){var i=n(\"/gxq\"),r=(i.assert,i.isArray);n(\"4Nz2\").__DEV__;function o(e){e=e||{},this._reset=e.reset,this._plan=e.plan,this._count=e.count,this._onDirty=e.onDirty,this._dirty=!0,this.context}var a=o.prototype;a.perform=function(e){var t,n=this._upstream,i=e&&e.skip;if(this._dirty&&n){var o=this.context;o.data=o.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(t=this._plan(this.context));var a,s=d(this._modBy),u=this._modDataCount||0,c=d(e&&e.modBy),h=e&&e.modDataCount||0;function d(e){return!(e>=1)&&(e=1),e}s===c&&u===h||(t=\"reset\"),(this._dirty||\"reset\"===t)&&(this._dirty=!1,a=function(e,t){var n,i;e._dueIndex=e._outputDueEnd=e._dueEnd=0,e._settedOutputEnd=null,!t&&e._reset&&((n=e._reset(e.context))&&n.progress&&(i=n.forceFirstProgress,n=n.progress),r(n)&&!n.length&&(n=null));e._progress=n,e._modBy=e._modDataCount=null;var o=e._downstream;return o&&o.dirty(),i}(this,i)),this._modBy=c,this._modDataCount=h;var f=e&&e.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,g=Math.min(null!=f?this._dueIndex+f:1/0,this._dueEnd);if(!i&&(a||p<g)){var m=this._progress;if(r(m))for(var v=0;v<m.length;v++)l(this,m[v],p,g,c,h);else l(this,m,p,g,c,h)}this._dueIndex=g;var y=null!=this._settedOutputEnd?this._settedOutputEnd:g;this._outputDueEnd=y}else this._dueIndex=this._outputDueEnd=null!=this._settedOutputEnd?this._settedOutputEnd:this._dueEnd;return this.unfinished()};var s=function(){var e,t,n,i,r,o={reset:function(l,u,c,h){t=l,e=u,n=c,i=h,r=Math.ceil(i/n),o.next=n>1&&i>0?s:a}};return o;function a(){return t<e?t++:null}function s(){var o=t%r*n+Math.ceil(t/r),a=t>=e?null:o<i?o:t;return t++,a}}();function l(e,t,n,i,r,o){s.reset(n,i,r,o),e._callingProgress=t,e._callingProgress({start:n,end:i,count:i-n,next:s.next},e.context)}a.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},a.unfinished=function(){return this._progress&&this._dueIndex<this._dueEnd},a.pipe=function(e){(this._downstream!==e||this._dirty)&&(this._downstream=e,e._upstream=this,e.dirty())},a.dispose=function(){this._disposed||(this._upstream&&(this._upstream._downstream=null),this._downstream&&(this._downstream._upstream=null),this._dirty=!1,this._disposed=!0)},a.getUpstream=function(){return this._upstream},a.getDownstream=function(){return this._downstream},a.setOutputEnd=function(e){this._outputDueEnd=this._settedOutputEnd=e},t.createTask=function(e){return new o(e)}},gZam:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Gw4f\"),o=n(\"UAiw\"),a=n(\"zO13\"),s=n(\"0sHC\"),l=n(\"wWR3\"),u=n(\"og9+\"),c=n(\"E8YU\"),h=n(\"vXqC\"),d=l.linearMap,f=i.each,p=Math.min,g=Math.max,m=12,v=6,y=a.extend({type:\"visualMap.continuous\",init:function(){y.superApply(this,\"init\",arguments),this._shapes={},this._dataInterval=[],this._handleEnds=[],this._orient,this._useHandle,this._hoverLinkDataIndices=[],this._dragging,this._hovering},doRender:function(e,t,n,i){i&&\"selectDataRange\"===i.type&&i.from===this.uid||this._buildView()},_buildView:function(){this.group.removeAll();var e=this.visualMapModel,t=this.group;this._orient=e.get(\"orient\"),this._useHandle=e.get(\"calculable\"),this._resetInterval(),this._renderBar(t);var n=e.get(\"text\");this._renderEndsText(t,n,0),this._renderEndsText(t,n,1),this._updateView(!0),this.renderBackground(t),this._updateView(),this._enableHoverLinkToSeries(),this._enableHoverLinkFromSeries(),this.positionGroup(t)},_renderEndsText:function(e,t,n){if(t){var i=t[1-n];i=null!=i?i+\"\":\"\";var r=this.visualMapModel,o=r.get(\"textGap\"),a=r.itemSize,l=this._shapes.barGroup,u=this._applyTransform([a[0]/2,0===n?-o:a[1]+o],l),c=this._applyTransform(0===n?\"bottom\":\"top\",l),h=this._orient,d=this.visualMapModel.textStyleModel;this.group.add(new s.Text({style:{x:u[0],y:u[1],textVerticalAlign:\"horizontal\"===h?\"middle\":c,textAlign:\"horizontal\"===h?c:\"center\",text:i,textFont:d.getFont(),textFill:d.getTextColor()}}))}},_renderBar:function(e){var t=this.visualMapModel,n=this._shapes,r=t.itemSize,o=this._orient,a=this._useHandle,s=c.getItemAlign(t,this.api,r),l=n.barGroup=this._createBarGroup(s);l.add(n.outOfRange=b()),l.add(n.inRange=b(null,a?_(this._orient):null,i.bind(this._dragHandle,this,\"all\",!1),i.bind(this._dragHandle,this,\"all\",!0)));var u=t.textStyleModel.getTextRect(\"国\"),h=g(u.width,u.height);a&&(n.handleThumbs=[],n.handleLabels=[],n.handleLabelPoints=[],this._createHandle(l,0,r,h,o,s),this._createHandle(l,1,r,h,o,s)),this._createIndicator(l,r,h,o),e.add(l)},_createHandle:function(e,t,n,r,a){var l=i.bind(this._dragHandle,this,t,!1),u=i.bind(this._dragHandle,this,t,!0),c=b(function(e,t){return 0===e?[[0,0],[t,0],[t,-t]]:[[0,0],[t,0],[t,t]]}(t,r),_(this._orient),l,u);c.position[0]=n[0],e.add(c);var h=this.visualMapModel.textStyleModel,d=new s.Text({draggable:!0,drift:l,onmousemove:function(e){o.stop(e.event)},ondragend:u,style:{x:0,y:0,text:\"\",textFont:h.getFont(),textFill:h.getTextColor()}});this.group.add(d);var f=[\"horizontal\"===a?r/2:1.5*r,\"horizontal\"===a?0===t?-1.5*r:1.5*r:0===t?-r/2:r/2],p=this._shapes;p.handleThumbs[t]=c,p.handleLabelPoints[t]=f,p.handleLabels[t]=d},_createIndicator:function(e,t,n,i){var r=b([[0,0]],\"move\");r.position[0]=t[0],r.attr({invisible:!0,silent:!0}),e.add(r);var o=this.visualMapModel.textStyleModel,a=new s.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:\"\",textFont:o.getFont(),textFill:o.getTextColor()}});this.group.add(a);var l=[\"horizontal\"===i?n/2:v+3,0],u=this._shapes;u.indicator=r,u.indicatorLabel=a,u.indicatorLabelPoint=l},_dragHandle:function(e,t,n,i){if(this._useHandle){if(this._dragging=!t,!t){var r=this._applyTransform([n,i],this._shapes.barGroup,!0);this._updateInterval(e,r[1]),this._updateView()}t===!this.visualMapModel.get(\"realtime\")&&this.api.dispatchAction({type:\"selectDataRange\",from:this.uid,visualMapId:this.visualMapModel.id,selected:this._dataInterval.slice()}),t?!this._hovering&&this._clearHoverLinkToSeries():x(this.visualMapModel)&&this._doHoverLinkToSeries(this._handleEnds[e],!1)}},_resetInterval:function(){var e=this.visualMapModel,t=this._dataInterval=e.getSelected(),n=e.getExtent(),i=[0,e.itemSize[1]];this._handleEnds=[d(t[0],n,i,!0),d(t[1],n,i,!0)]},_updateInterval:function(e,t){t=t||0;var n=this.visualMapModel,i=this._handleEnds,r=[0,n.itemSize[1]];u(t,i,r,e,0);var o=n.getExtent();this._dataInterval=[d(i[0],r,o,!0),d(i[1],r,o,!0)]},_updateView:function(e){var t=this.visualMapModel,n=t.getExtent(),i=this._shapes,r=[0,t.itemSize[1]],o=e?r:this._handleEnds,a=this._createBarVisual(this._dataInterval,n,o,\"inRange\"),s=this._createBarVisual(n,n,r,\"outOfRange\");i.inRange.setStyle({fill:a.barColor,opacity:a.opacity}).setShape(\"points\",a.barPoints),i.outOfRange.setStyle({fill:s.barColor,opacity:s.opacity}).setShape(\"points\",s.barPoints),this._updateHandle(o,a)},_createBarVisual:function(e,t,n,i){var o={forceState:i,convertOpacityToAlpha:!0},a=this._makeColorGradient(e,o),s=[this.getControllerVisual(e[0],\"symbolSize\",o),this.getControllerVisual(e[1],\"symbolSize\",o)],l=this._createBarPoints(n,s);return{barColor:new r(0,0,0,1,a),barPoints:l,handlesColor:[a[0].color,a[a.length-1].color]}},_makeColorGradient:function(e,t){var n=[],i=(e[1]-e[0])/100;n.push({color:this.getControllerVisual(e[0],\"color\",t),offset:0});for(var r=1;r<100;r++){var o=e[0]+i*r;if(o>e[1])break;n.push({color:this.getControllerVisual(o,\"color\",t),offset:r/100})}return n.push({color:this.getControllerVisual(e[1],\"color\",t),offset:1}),n},_createBarPoints:function(e,t){var n=this.visualMapModel.itemSize;return[[n[0]-t[0],e[0]],[n[0],e[0]],[n[0],e[1]],[n[0]-t[1],e[1]]]},_createBarGroup:function(e){var t=this._orient,n=this.visualMapModel.get(\"inverse\");return new s.Group(\"horizontal\"!==t||n?\"horizontal\"===t&&n?{scale:\"bottom\"===e?[-1,1]:[1,1],rotation:-Math.PI/2}:\"vertical\"!==t||n?{scale:\"left\"===e?[1,1]:[-1,1]}:{scale:\"left\"===e?[1,-1]:[-1,-1]}:{scale:\"bottom\"===e?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(e,t){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels;f([0,1],function(a){var l=r[a];l.setStyle(\"fill\",t.handlesColor[a]),l.position[1]=e[a];var u=s.applyTransform(n.handleLabelPoints[a],s.getTransform(l,this.group));o[a].setStyle({x:u[0],y:u[1],text:i.formatValueText(this._dataInterval[a]),textVerticalAlign:\"middle\",textAlign:this._applyTransform(\"horizontal\"===this._orient?0===a?\"bottom\":\"top\":\"left\",n.barGroup)})},this)}},_showIndicator:function(e,t,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,l=[0,a[1]],u=d(e,o,l,!0),c=this._shapes,h=c.indicator;if(h){h.position[1]=u,h.attr(\"invisible\",!1),h.setShape(\"points\",function(e,t,n,i){return e?[[0,-p(t,g(n,0))],[v,0],[0,p(t,g(i-n,0))]]:[[0,0],[5,-5],[5,5]]}(!!n,i,u,a[1]));var f=this.getControllerVisual(e,\"color\",{convertOpacityToAlpha:!0});h.setStyle(\"fill\",f);var m=s.applyTransform(c.indicatorLabelPoint,s.getTransform(h,this.group)),y=c.indicatorLabel;y.attr(\"invisible\",!1);var b=this._applyTransform(\"left\",c.barGroup),x=this._orient;y.setStyle({text:(n||\"\")+r.formatValueText(t),textVerticalAlign:\"horizontal\"===x?b:\"middle\",textAlign:\"horizontal\"===x?\"center\":b,x:m[0],y:m[1]})}},_enableHoverLinkToSeries:function(){var e=this;this._shapes.barGroup.on(\"mousemove\",function(t){if(e._hovering=!0,!e._dragging){var n=e.visualMapModel.itemSize,i=e._applyTransform([t.offsetX,t.offsetY],e._shapes.barGroup,!0,!0);i[1]=p(g(0,i[1]),n[1]),e._doHoverLinkToSeries(i[1],0<=i[0]&&i[0]<=n[0])}}).on(\"mouseout\",function(){e._hovering=!1,!e._dragging&&e._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var e=this.api.getZr();this.visualMapModel.option.hoverLink?(e.on(\"mouseover\",this._hoverLinkFromSeriesMouseOver,this),e.on(\"mouseout\",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(e,t){var n=this.visualMapModel,i=n.itemSize;if(n.option.hoverLink){var r=[0,i[1]],o=n.getExtent();e=p(g(r[0],e),r[1]);var a=function(e,t,n){var i=m/2,r=e.get(\"hoverLinkDataSize\");r&&(i=d(r,t,n,!0)/2);return i}(n,o,r),s=[e-a,e+a],l=d(e,r,o,!0),u=[d(s[0],r,o,!0),d(s[1],r,o,!0)];s[0]<r[0]&&(u[0]=-1/0),s[1]>r[1]&&(u[1]=1/0),t&&(u[0]===-1/0?this._showIndicator(l,u[1],\"< \",a):u[1]===1/0?this._showIndicator(l,u[0],\"> \",a):this._showIndicator(l,l,\"≈ \",a));var f=this._hoverLinkDataIndices,v=[];(t||x(n))&&(v=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var y=h.compressBatches(f,v);this._dispatchHighDown(\"downplay\",c.makeHighDownBatch(y[0],n)),this._dispatchHighDown(\"highlight\",c.makeHighDownBatch(y[1],n))}},_hoverLinkFromSeriesMouseOver:function(e){var t=e.target,n=this.visualMapModel;if(t&&null!=t.dataIndex){var i=this.ecModel.getSeriesByIndex(t.seriesIndex);if(n.isTargetSeries(i)){var r=i.getData(t.dataType),o=r.get(n.getDataDimension(r),t.dataIndex,!0);isNaN(o)||this._showIndicator(o,o)}}},_hideIndicator:function(){var e=this._shapes;e.indicator&&e.indicator.attr(\"invisible\",!0),e.indicatorLabel&&e.indicatorLabel.attr(\"invisible\",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var e=this._hoverLinkDataIndices;this._dispatchHighDown(\"downplay\",c.makeHighDownBatch(e,this.visualMapModel)),e.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var e=this.api.getZr();e.off(\"mouseover\",this._hoverLinkFromSeriesMouseOver),e.off(\"mouseout\",this._hideIndicator)},_applyTransform:function(e,t,n,r){var o=s.getTransform(t,r?null:this.group);return s[i.isArray(e)?\"applyTransform\":\"transformDirection\"](e,o,n)},_dispatchHighDown:function(e,t){t&&t.length&&this.api.dispatchAction({type:e,batch:t})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});function b(e,t,n,i){return new s.Polygon({shape:{points:e},draggable:!!n,cursor:t,drift:n,onmousemove:function(e){o.stop(e.event)},ondragend:i})}function x(e){var t=e.get(\"hoverLinkOnHandle\");return!!(null==t?e.get(\"realtime\"):t)}function _(e){return\"vertical\"===e?\"ns-resize\":\"ew-resize\"}var w=y;e.exports=w},ghha:function(e,t,n){var i=n(\"JzYe\");n(\"rctg\").register(\"single\",{create:function(e,t){var n=[];return e.eachComponent(\"singleAxis\",function(r,o){var a=new i(r,e,t);a.name=\"single_\"+o,a.resize(r,t),r.coordinateSystem=a,n.push(a)}),e.eachSeries(function(t){if(\"singleAxis\"===t.get(\"coordinateSystem\")){var n=e.queryComponents({mainType:\"singleAxis\",index:t.get(\"singleAxisIndex\"),id:t.get(\"singleAxisId\")})[0];t.coordinateSystem=n&&n.coordinateSystem}}),n},dimensions:i.prototype.dimensions})},guZJ:function(e,t,n){var i=n(\"Icdr\"),r=n(\"0sHC\"),o=n(\"/gxq\"),a=n(\"kK7q\");var s=i.extendChartView({type:\"radar\",render:function(e,t,n){var i=e.coordinateSystem,s=this.group,l=e.getData(),u=this._data;function c(e,t){var n=e.getItemVisual(t,\"symbol\")||\"circle\",i=e.getItemVisual(t,\"color\");if(\"none\"!==n){var r=function(e){return o.isArray(e)||(e=[+e,+e]),e}(e.getItemVisual(t,\"symbolSize\")),s=a.createSymbol(n,-1,-1,2,2,i);return s.attr({style:{strokeNoScale:!0},z2:100,scale:[r[0]/2,r[1]/2]}),s}}function h(t,n,i,o,a,s){i.removeAll();for(var l=0;l<n.length-1;l++){var u=c(o,a);u&&(u.__dimIdx=l,t[l]?(u.attr(\"position\",t[l]),r[s?\"initProps\":\"updateProps\"](u,{position:n[l]},e,a)):u.attr(\"position\",n[l]),i.add(u))}}function d(e){return o.map(e,function(e){return[i.cx,i.cy]})}l.diff(u).add(function(t){var n=l.getItemLayout(t);if(n){var i=new r.Polygon,o=new r.Polyline,a={shape:{points:n}};i.shape.points=d(n),o.shape.points=d(n),r.initProps(i,a,e,t),r.initProps(o,a,e,t);var s=new r.Group,u=new r.Group;s.add(o),s.add(i),s.add(u),h(o.shape.points,n,u,l,t,!0),l.setItemGraphicEl(t,s)}}).update(function(t,n){var i=u.getItemGraphicEl(n),o=i.childAt(0),a=i.childAt(1),s=i.childAt(2),c={shape:{points:l.getItemLayout(t)}};c.shape.points&&(h(o.shape.points,c.shape.points,s,l,t,!1),r.updateProps(o,c,e),r.updateProps(a,c,e),l.setItemGraphicEl(t,i))}).remove(function(e){s.remove(u.getItemGraphicEl(e))}).execute(),l.eachItemGraphicEl(function(e,t){var n=l.getItemModel(t),i=e.childAt(0),a=e.childAt(1),u=e.childAt(2),c=l.getItemVisual(t,\"color\");s.add(e),i.useStyle(o.defaults(n.getModel(\"lineStyle\").getLineStyle(),{fill:\"none\",stroke:c})),i.hoverStyle=n.getModel(\"emphasis.lineStyle\").getLineStyle();var h=n.getModel(\"areaStyle\"),d=n.getModel(\"emphasis.areaStyle\"),f=h.isEmpty()&&h.parentModel.isEmpty(),p=d.isEmpty()&&d.parentModel.isEmpty();p=p&&f,a.ignore=f,a.useStyle(o.defaults(h.getAreaStyle(),{fill:c,opacity:.7})),a.hoverStyle=d.getAreaStyle();var g=n.getModel(\"itemStyle\").getItemStyle([\"color\"]),m=n.getModel(\"emphasis.itemStyle\").getItemStyle(),v=n.getModel(\"label\"),y=n.getModel(\"emphasis.label\");u.eachChild(function(e){e.setStyle(g),e.hoverStyle=o.clone(m);var n=l.get(l.dimensions[e.__dimIdx],t);(null==n||isNaN(n))&&(n=\"\"),r.setLabelStyle(e.style,e.hoverStyle,v,y,{labelFetcher:l.hostModel,labelDataIndex:t,labelDimIndex:e.__dimIdx,defaultText:n,autoColor:c,isRectText:!0})}),e.highDownOnUpdate=function(e,t){a.attr(\"ignore\",\"emphasis\"===t?p:f)},r.setHoverStyle(e)}),this._data=l},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});e.exports=s},h0jU:function(e,t,n){var i=n(\"/gxq\"),r=n(\"BNYN\").parseClassType,o=0;t.getUID=function(e){return[e||\"\",o++,Math.random().toFixed(5)].join(\"_\")},t.enableSubTypeDefaulter=function(e){var t={};return e.registerSubTypeDefaulter=function(e,n){e=r(e),t[e.main]=n},e.determineSubType=function(n,i){var o=i.type;if(!o){var a=r(n).main;e.hasSubTypes(n)&&t[a]&&(o=t[a](i))}return o},e},t.enableTopologicalTravel=function(e,t){function n(e,t){return e[t]||(e[t]={predecessor:[],successor:[]}),e[t]}e.topologicalTravel=function(e,r,o,a){if(e.length){var s=function(e){var r={},o=[];return i.each(e,function(a){var s=n(r,a),l=function(e,t){var n=[];return i.each(e,function(e){i.indexOf(t,e)>=0&&n.push(e)}),n}(s.originalDeps=t(a),e);s.entryCount=l.length,0===s.entryCount&&o.push(a),i.each(l,function(e){i.indexOf(s.predecessor,e)<0&&s.predecessor.push(e);var t=n(r,e);i.indexOf(t.successor,e)<0&&t.successor.push(a)})}),{graph:r,noEntryList:o}}(r),l=s.graph,u=s.noEntryList,c={};for(i.each(e,function(e){c[e]=!0});u.length;){var h=u.pop(),d=l[h],f=!!c[h];f&&(o.call(a,h,d.originalDeps.slice()),delete c[h]),i.each(d.successor,f?g:p)}i.each(c,function(){throw new Error(\"Circle dependency may exists\")})}function p(e){l[e].entryCount--,0===l[e].entryCount&&u.push(e)}function g(e){c[e]=!0,p(e)}}}},h4VJ:function(e,t,n){var i=n(\"0sHC\"),r=n(\"/gxq\"),o=n(\"Ylhr\");function a(e,t){i.Group.call(this);var n=new i.Polygon,r=new i.Polyline,o=new i.Text;this.add(n),this.add(r),this.add(o),this.highDownOnUpdate=function(e,t){\"emphasis\"===t?(r.ignore=r.hoverIgnore,o.ignore=o.hoverIgnore):(r.ignore=r.normalIgnore,o.ignore=o.normalIgnore)},this.updateData(e,t,!0)}var s=a.prototype,l=[\"itemStyle\",\"opacity\"];s.updateData=function(e,t,n){var o=this.childAt(0),a=e.hostModel,s=e.getItemModel(t),u=e.getItemLayout(t),c=e.getItemModel(t).get(l);c=null==c?1:c,o.useStyle({}),n?(o.setShape({points:u.points}),o.setStyle({opacity:0}),i.initProps(o,{style:{opacity:c}},a,t)):i.updateProps(o,{style:{opacity:c},shape:{points:u.points}},a,t);var h=s.getModel(\"itemStyle\"),d=e.getItemVisual(t,\"color\");o.setStyle(r.defaults({lineJoin:\"round\",fill:d},h.getItemStyle([\"opacity\"]))),o.hoverStyle=h.getModel(\"emphasis\").getItemStyle(),this._updateLabel(e,t),i.setHoverStyle(this)},s._updateLabel=function(e,t){var n=this.childAt(1),r=this.childAt(2),o=e.hostModel,a=e.getItemModel(t),s=e.getItemLayout(t).label,l=e.getItemVisual(t,\"color\");i.updateProps(n,{shape:{points:s.linePoints||s.linePoints}},o,t),i.updateProps(r,{style:{x:s.x,y:s.y}},o,t),r.attr({rotation:s.rotation,origin:[s.x,s.y],z2:10});var u=a.getModel(\"label\"),c=a.getModel(\"emphasis.label\"),h=a.getModel(\"labelLine\"),d=a.getModel(\"emphasis.labelLine\");l=e.getItemVisual(t,\"color\");i.setLabelStyle(r.style,r.hoverStyle={},u,c,{labelFetcher:e.hostModel,labelDataIndex:t,defaultText:e.getName(t),autoColor:l,useInsideStyle:!!s.inside},{textAlign:s.textAlign,textVerticalAlign:s.verticalAlign}),r.ignore=r.normalIgnore=!u.get(\"show\"),r.hoverIgnore=!c.get(\"show\"),n.ignore=n.normalIgnore=!h.get(\"show\"),n.hoverIgnore=!d.get(\"show\"),n.setStyle({stroke:l}),n.setStyle(h.getModel(\"lineStyle\").getLineStyle()),n.hoverStyle=d.getModel(\"lineStyle\").getLineStyle()},r.inherits(a,i.Group);var u=o.extend({type:\"funnel\",render:function(e,t,n){var i=e.getData(),r=this._data,o=this.group;i.diff(r).add(function(e){var t=new a(i,e);i.setItemGraphicEl(e,t),o.add(t)}).update(function(e,t){var n=r.getItemGraphicEl(t);n.updateData(i,e),o.add(n),i.setItemGraphicEl(e,n)}).remove(function(e){var t=r.getItemGraphicEl(e);o.remove(t)}).execute(),this._data=i},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});e.exports=u},h65t:function(e,t,n){var i=n(\"UuGF\"),r=n(\"52gC\");e.exports=function(e){return function(t,n){var o,a,s=String(r(t)),l=i(n),u=s.length;return l<0||l>=u?e?\"\":void 0:(o=s.charCodeAt(l))<55296||o>56319||l+1===u||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):o:e?s.slice(l,l+2):a-56320+(o-55296<<10)+65536}}},h6Uy:function(e,t,n){var i=n(\"/gxq\").createHashMap;e.exports=function(e){e.eachSeriesByType(\"themeRiver\",function(e){var t=e.getData(),n=e.getRawData(),r=e.get(\"color\"),o=i();t.each(function(e){o.set(t.getRawIndex(e),e)}),n.each(function(i){var a=n.getName(i),s=r[(e.nameMap.get(a)-1)%r.length];n.setItemVisual(i,\"color\",s);var l=o.get(i);null!=l&&t.setItemVisual(l,\"color\",s)})})}},\"hD/x\":function(e,t){t.getNodeGlobalScale=function(e){var t=e.coordinateSystem;if(\"view\"!==t.type)return 1;var n=e.option.nodeScaleRatio,i=t.scale,r=i&&i[0]||1;return((t.getZoom()-1)*n+1)/r},t.getSymbolSize=function(e){var t=e.getVisual(\"symbolSize\");return t instanceof Array&&(t=(t[0]+t[1])/2),+t}},hG1p:function(e,t,n){var i=n(\"GxVO\").extend({type:\"echartsGaugePointer\",shape:{angle:0,width:10,r:10,x:0,y:0},buildPath:function(e,t){var n=Math.cos,i=Math.sin,r=t.r,o=t.width,a=t.angle,s=t.x-n(a)*o*(o>=r/3?1:2),l=t.y-i(a)*o*(o>=r/3?1:2);a=t.angle-Math.PI/2,e.moveTo(s,l),e.lineTo(t.x+n(a)*o,t.y+i(a)*o),e.lineTo(t.x+n(t.angle)*r,t.y+i(t.angle)*r),e.lineTo(t.x-n(a)*o,t.y-i(a)*o),e.lineTo(s,l)}});e.exports=i},hJx8:function(e,t,n){var i=n(\"evD5\"),r=n(\"X8DO\");e.exports=n(\"+E39\")?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},hZf2:function(e,t,n){var i=n(\"Pmfi\"),r=n(\"/gxq\"),o=n(\"eZxa\"),a=n(\"DRaW\");function s(e,t){i.call(this,e,t,[\"linearGradient\",\"radialGradient\"],\"__gradient_in_use__\")}r.inherits(s,i),s.prototype.addWithoutUpdate=function(e,t){if(t&&t.style){var n=this;r.each([\"fill\",\"stroke\"],function(i){if(t.style[i]&&(\"linear\"===t.style[i].type||\"radial\"===t.style[i].type)){var r,o=t.style[i],a=n.getDefs(!0);o._dom?(r=o._dom,a.contains(o._dom)||n.addDom(r)):r=n.add(o),n.markUsed(t);var s=r.getAttribute(\"id\");e.setAttribute(i,\"url(#\"+s+\")\")}})}},s.prototype.add=function(e){var t;if(\"linear\"===e.type)t=this.createElement(\"linearGradient\");else{if(\"radial\"!==e.type)return o(\"Illegal gradient type.\"),null;t=this.createElement(\"radialGradient\")}return e.id=e.id||this.nextId++,t.setAttribute(\"id\",\"zr\"+this._zrId+\"-gradient-\"+e.id),this.updateDom(e,t),this.addDom(t),t},s.prototype.update=function(e){var t=this;i.prototype.update.call(this,e,function(){var n=e.type,i=e._dom.tagName;\"linear\"===n&&\"linearGradient\"===i||\"radial\"===n&&\"radialGradient\"===i?t.updateDom(e,e._dom):(t.removeDom(e),t.add(e))})},s.prototype.updateDom=function(e,t){if(\"linear\"===e.type)t.setAttribute(\"x1\",e.x),t.setAttribute(\"y1\",e.y),t.setAttribute(\"x2\",e.x2),t.setAttribute(\"y2\",e.y2);else{if(\"radial\"!==e.type)return void o(\"Illegal gradient type.\");t.setAttribute(\"cx\",e.x),t.setAttribute(\"cy\",e.y),t.setAttribute(\"r\",e.r)}e.global?t.setAttribute(\"gradientUnits\",\"userSpaceOnUse\"):t.setAttribute(\"gradientUnits\",\"objectBoundingBox\"),t.innerHTML=\"\";for(var n=e.colorStops,i=0,r=n.length;i<r;++i){var s=this.createElement(\"stop\");s.setAttribute(\"offset\",100*n[i].offset+\"%\");var l=n[i].color;if(l.indexOf(!1)){var u=a.parse(l)[3],c=a.toHex(l);s.setAttribute(\"stop-color\",\"#\"+c),s.setAttribute(\"stop-opacity\",u)}else s.setAttribute(\"stop-color\",n[i].color);t.appendChild(s)}e._dom=t},s.prototype.markUsed=function(e){if(e.style){var t=e.style.fill;t&&t._dom&&i.prototype.markUsed.call(this,t._dom),(t=e.style.stroke)&&t._dom&&i.prototype.markUsed.call(this,t._dom)}};var l=s;e.exports=l},\"hcq/\":function(e,t,n){var i=n(\"/n1K\");e.exports=function(e,t){return i((t=t||{}).coordDimensions||[],e,{dimsDef:t.dimensionsDefine||e.dimensionsDefine,encodeDef:t.encodeDefine||e.encodeDefine,dimCount:t.dimensionsCount,encodeDefaulter:t.encodeDefaulter,generateCoord:t.generateCoord,generateCoordCount:t.generateCoordCount})}},hdbT:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"oDOe\"),a=n(\"n3NR\").layoutCovers,s=i.extendComponentView({type:\"brush\",init:function(e,t){this.ecModel=e,this.api=t,this.model,(this._brushController=new o(t.getZr())).on(\"brush\",r.bind(this._onBrush,this)).mount()},render:function(e){return this.model=e,l.apply(this,arguments)},updateTransform:function(e,t){return a(t),l.apply(this,arguments)},updateView:l,dispose:function(){this._brushController.dispose()},_onBrush:function(e,t){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(e,this.ecModel),(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:\"brush\",brushId:n,areas:r.clone(e),$from:n}),t.isEnd&&this.api.dispatchAction({type:\"brushEnd\",brushId:n,areas:r.clone(e),$from:n})}});function l(e,t,n,i){(!i||i.$from!==e.id)&&this._brushController.setPanels(e.brushTargetManager.makePanelOpts(n)).enableBrush(e.brushOption).updateCovers(e.areas.slice())}e.exports=s},hv2j:function(e,t,n){var i=n(\"RiVu\"),r=n(\"YNzw\"),o=n(\"/gxq\"),a=n(\"lj6Z\"),s=n(\"9N6q\"),l=n(\"I0Vc\"),u=n(\"V4nf\"),c=n(\"e8/X\"),h=!r.canvasSupported,d={canvas:l},f={};var p=function(e,t,n){n=n||{},this.dom=t,this.id=e;var i=this,l=new s,f=n.renderer;if(h){if(!d.vml)throw new Error(\"You need to require 'zrender/vml/vml' to support IE8\");f=\"vml\"}else f&&d[f]||(f=\"canvas\");var p=new d[f](t,l,n,e);this.storage=l,this.painter=p;var g=r.node||r.worker?null:new c(p.getViewportRoot(),p.root);this.handler=new a(l,p,g,p.root),this.animation=new u({stage:{update:o.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var m=l.delFromStorage,v=l.addToStorage;l.delFromStorage=function(e){m.call(l,e),e&&e.removeSelfFromZr(i)},l.addToStorage=function(e){v.call(l,e),e.addSelfToZr(i)}};p.prototype={constructor:p,getId:function(){return this.id},add:function(e){this.storage.addRoot(e),this._needsRefresh=!0},remove:function(e){this.storage.delRoot(e),this._needsRefresh=!0},configLayer:function(e,t){this.painter.configLayer&&this.painter.configLayer(e,t),this._needsRefresh=!0},setBackgroundColor:function(e){this.painter.setBackgroundColor&&this.painter.setBackgroundColor(e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=this._needsRefreshHover=!1,this.painter.refresh(),this._needsRefresh=this._needsRefreshHover=!1},refresh:function(){this._needsRefresh=!0},flush:function(){var e;this._needsRefresh&&(e=!0,this.refreshImmediately()),this._needsRefreshHover&&(e=!0,this.refreshHoverImmediately()),e&&this.trigger(\"rendered\")},addHover:function(e,t){if(this.painter.addHover){var n=this.painter.addHover(e,t);return this.refreshHover(),n}},removeHover:function(e){this.painter.removeHover&&(this.painter.removeHover(e),this.refreshHover())},clearHover:function(){this.painter.clearHover&&(this.painter.clearHover(),this.refreshHover())},refreshHover:function(){this._needsRefreshHover=!0},refreshHoverImmediately:function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.refreshHover()},resize:function(e){e=e||{},this.painter.resize(e.width,e.height),this.handler.resize()},clearAnimation:function(){this.animation.clear()},getWidth:function(){return this.painter.getWidth()},getHeight:function(){return this.painter.getHeight()},pathToImage:function(e,t){return this.painter.pathToImage(e,t)},setCursorStyle:function(e){this.handler.setCursorStyle(e)},findHover:function(e,t){return this.handler.findHover(e,t)},on:function(e,t,n){this.handler.on(e,t,n)},off:function(e,t){this.handler.off(e,t)},trigger:function(e,t){this.handler.trigger(e,t)},clear:function(){this.storage.delRoot(),this.painter.clear()},dispose:function(){var e;this.animation.stop(),this.clear(),this.storage.dispose(),this.painter.dispose(),this.handler.dispose(),this.animation=this.storage=this.painter=this.handler=null,e=this.id,delete f[e]}},t.version=\"4.3.1\",t.init=function(e,t){var n=new p(i(),e,t);return f[n.id]=n,n},t.dispose=function(e){if(e)e.dispose();else{for(var t in f)f.hasOwnProperty(t)&&f[t].dispose();f={}}return this},t.getInstance=function(e){return f[e]},t.registerPainter=function(e,t){d[e]=t}},hyEB:function(e,t,n){\"use strict\";t.__esModule=!0;var i=i||{};i.Utils=i.Utils||{},i.Utils.focusFirstDescendant=function(e){for(var t=0;t<e.childNodes.length;t++){var n=e.childNodes[t];if(i.Utils.attemptFocus(n)||i.Utils.focusFirstDescendant(n))return!0}return!1},i.Utils.focusLastDescendant=function(e){for(var t=e.childNodes.length-1;t>=0;t--){var n=e.childNodes[t];if(i.Utils.attemptFocus(n)||i.Utils.focusLastDescendant(n))return!0}return!1},i.Utils.attemptFocus=function(e){if(!i.Utils.isFocusable(e))return!1;i.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return i.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},i.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute(\"tabIndex\"))return!0;if(e.disabled)return!1;switch(e.nodeName){case\"A\":return!!e.href&&\"ignore\"!==e.rel;case\"INPUT\":return\"hidden\"!==e.type&&\"file\"!==e.type;case\"BUTTON\":case\"SELECT\":case\"TEXTAREA\":return!0;default:return!1}},i.Utils.triggerEvent=function(e,t){var n=void 0;n=/^mouse|click/.test(t)?\"MouseEvents\":/^key/.test(t)?\"KeyboardEvent\":\"HTMLEvents\";for(var i=document.createEvent(n),r=arguments.length,o=Array(r>2?r-2:0),a=2;a<r;a++)o[a-2]=arguments[a];return i.initEvent.apply(i,[t].concat(o)),e.dispatchEvent?e.dispatchEvent(i):e.fireEvent(\"on\"+t,i),e},i.Utils.keys={tab:9,enter:13,space:32,left:37,up:38,right:39,down:40,esc:27},t.default=i.Utils},i3rX:function(e,t,n){\"use strict\";var i=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===r}(e)}(e)};var r=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function o(e,t){var n;return t&&!0===t.clone&&i(e)?s((n=e,Array.isArray(n)?[]:{}),e,t):e}function a(e,t,n){var r=e.slice();return t.forEach(function(t,a){void 0===r[a]?r[a]=o(t,n):i(t)?r[a]=s(e[a],t,n):-1===e.indexOf(t)&&r.push(o(t,n))}),r}function s(e,t,n){var r=Array.isArray(t);return r===Array.isArray(e)?r?((n||{arrayMerge:a}).arrayMerge||a)(e,t,n):function(e,t,n){var r={};return i(e)&&Object.keys(e).forEach(function(t){r[t]=o(e[t],n)}),Object.keys(t).forEach(function(a){i(t[a])&&e[a]?r[a]=s(e[a],t[a],n):r[a]=o(t[a],n)}),r}(e,t,n):o(t,n)}s.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error(\"first argument should be an array with at least two elements\");return e.reduce(function(e,n){return s(e,n,t)})};var l=s;e.exports=l},i6Ks:function(e,t,n){var i=n(\"/gxq\"),r=n(\"vXqC\");e.exports=function(e){!function(e){if(!e.parallel){var t=!1;i.each(e.series,function(e){e&&\"parallel\"===e.type&&(t=!0)}),t&&(e.parallel=[{}])}}(e),function(e){var t=r.normalizeToArray(e.parallelAxis);i.each(t,function(t){if(i.isObject(t)){var n=t.parallelIndex||0,o=r.normalizeToArray(e.parallel)[n];o&&o.parallelAxisDefault&&i.merge(t,o.parallelAxisDefault,!1)}})}(e)}},iDGQ:function(e,t,n){var i=n(\"XFat\"),r=i.eachAfter,o=i.eachBefore,a=n(\"ERCD\"),s=a.init,l=a.firstWalk,u=a.secondWalk,c=a.separation,h=a.radialCoordinate,d=a.getViewRect;e.exports=function(e,t){e.eachSeriesByType(\"tree\",function(e){!function(e,t){var n=d(e,t);e.layoutInfo=n;var i=e.get(\"layout\"),a=0,f=0,p=null;\"radial\"===i?(a=2*Math.PI,f=Math.min(n.height,n.width)/2,p=c(function(e,t){return(e.parentNode===t.parentNode?1:2)/e.depth})):(a=n.width,f=n.height,p=c());var g=e.getData().tree.root,m=g.children[0];if(m){s(g),r(m,l,p),g.hierNode.modifier=-m.hierNode.prelim,o(m,u);var v=m,y=m,b=m;o(m,function(e){var t=e.getLayout().x;t<v.getLayout().x&&(v=e),t>y.getLayout().x&&(y=e),e.depth>b.depth&&(b=e)});var x=v===y?1:p(v,y)/2,_=x-v.getLayout().x,w=0,C=0,S=0,k=0;if(\"radial\"===i)w=a/(y.getLayout().x+x+_),C=f/(b.depth-1||1),o(m,function(e){S=(e.getLayout().x+_)*w,k=(e.depth-1)*C;var t=h(S,k);e.setLayout({x:t.x,y:t.y,rawX:S,rawY:k},!0)});else{var T=e.getOrient();\"RL\"===T||\"LR\"===T?(C=f/(y.getLayout().x+x+_),w=a/(b.depth-1||1),o(m,function(e){k=(e.getLayout().x+_)*C,S=\"LR\"===T?(e.depth-1)*w:a-(e.depth-1)*w,e.setLayout({x:S,y:k},!0)})):\"TB\"!==T&&\"BT\"!==T||(w=a/(y.getLayout().x+x+_),C=f/(b.depth-1||1),o(m,function(e){S=(e.getLayout().x+_)*w,k=\"TB\"===T?(e.depth-1)*C:f-(e.depth-1)*C,e.setLayout({x:S,y:k},!0)}))}}}(e,t)})}},\"iEm+\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\");i.registerAction({type:\"timelineChange\",event:\"timelineChanged\",update:\"prepareAndUpdate\"},function(e,t){var n=t.getComponent(\"timeline\");return n&&null!=e.currentIndex&&(n.setCurrentIndex(e.currentIndex),!n.get(\"loop\",!0)&&n.isIndexMax()&&n.setPlayState(!1)),t.resetOption(\"timeline\"),r.defaults({currentIndex:n.option.currentIndex},e)}),i.registerAction({type:\"timelinePlayChange\",event:\"timelinePlayChanged\",update:\"update\"},function(e,t){var n=t.getComponent(\"timeline\");n&&null!=e.playState&&n.setPlayState(e.playState)})},iGPw:function(e,t,n){var i=n(\"/gxq\"),r=i.createHashMap,o=i.isObject,a=i.map;function s(e){this.categories=e.categories||[],this._needCollect=e.needCollect,this._deduplication=e.deduplication,this._map}s.createByAxisModel=function(e){var t=e.option,n=t.data,i=n&&a(n,c);return new s({categories:i,needCollect:!i,deduplication:!1!==t.dedplication})};var l=s.prototype;function u(e){return e._map||(e._map=r(e.categories))}function c(e){return o(e)&&null!=e.value?e.value:e+\"\"}l.getOrdinal=function(e){return u(this).get(e)},l.parseAndCollect=function(e){var t,n=this._needCollect;if(\"string\"!=typeof e&&!n)return e;if(n&&!this._deduplication)return t=this.categories.length,this.categories[t]=e,t;var i=u(this);return null==(t=i.get(e))&&(n?(t=this.categories.length,this.categories[t]=e,i.set(e,t)):t=NaN),t};var h=s;e.exports=h},iHuw:function(e,t,n){(function(e){\"use strict\";function t(e,t){var n=Number(t);return/^[-+]/.test(t)?e.getCursor().line+n:n-1}e.defineOption(\"search\",{bottom:!1}),e.commands.jumpToLine=function(e){var n=e.getCursor();!function(e,t,n,i,r){e.openDialog?e.openDialog(t,r,{value:i,selectValueOnOpen:!0,bottom:e.options.search.bottom}):r(prompt(n,i))}(e,function(e){return e.phrase(\"Jump to line:\")+' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">'+e.phrase(\"(Use line:column or scroll% syntax)\")+\"</span>\"}(e),e.phrase(\"Jump to line:\"),n.line+1+\":\"+n.ch,function(i){var r;if(i)if(r=/^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(i))e.setCursor(t(e,r[1]),Number(r[2]));else if(r=/^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(i)){var o=Math.round(e.lineCount()*Number(r[1])/100);/^[-+]/.test(r[1])&&(o=n.line+o+1),e.setCursor(o-1,n.ch)}else(r=/^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(i))&&e.setCursor(t(e,r[1]),n.ch)})},e.keyMap.default[\"Alt-G\"]=\"jumpToLine\"})(n(\"8U58\"),n(\"RkhK\"))},iNHu:function(e,t,n){var i=n(\"hv2j\");t.zrender=i;var r=n(\"dOVI\");t.matrix=r;var o=n(\"C7PF\");t.vector=o;var a=n(\"/gxq\"),s=n(\"DRaW\");t.color=s;var l=n(\"0sHC\"),u=n(\"wWR3\");t.number=u;var c=n(\"HHfb\");t.format=c;var h=n(\"QD+P\");h.throttle;t.throttle=h.throttle;var d=n(\"5QRV\");t.helper=d;var f=n(\"Axyt\");t.parseGeoJSON=f;var p=n(\"Rfu2\");t.List=p;var g=n(\"Pdtn\");t.Model=g;var m=n(\"2HcM\");t.Axis=m;var v=n(\"YNzw\");t.env=v;var y=f,b={};a.each([\"map\",\"each\",\"filter\",\"indexOf\",\"inherits\",\"reduce\",\"filter\",\"bind\",\"curry\",\"isArray\",\"isString\",\"isObject\",\"isFunction\",\"extend\",\"defaults\",\"clone\",\"merge\"],function(e){b[e]=a[e]});var x={};a.each([\"extendShape\",\"extendPath\",\"makePath\",\"makeImage\",\"mergePath\",\"resizePath\",\"createIcon\",\"setHoverStyle\",\"setLabelStyle\",\"setTextStyle\",\"setText\",\"getFont\",\"updateProps\",\"initProps\",\"getTransform\",\"clipPointsByRect\",\"clipRectByRect\",\"registerShape\",\"getShapeClass\",\"Group\",\"Image\",\"Text\",\"Circle\",\"Sector\",\"Ring\",\"Polygon\",\"Polyline\",\"Rect\",\"Line\",\"BezierCurve\",\"Arc\",\"IncrementalDisplayable\",\"CompoundPath\",\"LinearGradient\",\"RadialGradient\",\"BoundingRect\"],function(e){x[e]=l[e]}),t.parseGeoJson=y,t.util=b,t.graphic=x},iZVd:function(e,t,n){var i=n(\"Icdr\"),r=n(\"ii60\").updateCenterAndZoom;n(\"+K7g\");i.registerAction({type:\"graphRoam\",event:\"graphRoam\",update:\"none\"},function(e,t){t.eachComponent({mainType:\"series\",query:e},function(t){var n=t.coordinateSystem,i=r(n,e);t.setCenter&&t.setCenter(i.center),t.setZoom&&t.setZoom(i.zoom)})})},icur:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"NUWb\"),a=n(\"Pdtn\"),s=[\"#ddd\"];function l(e,t){return r.merge({brushType:e.brushType,brushMode:e.brushMode,transformable:e.transformable,brushStyle:new a(e.brushStyle).getItemStyle(),removeOnClick:e.removeOnClick,z:e.z},t,!0)}var u=i.extendComponentModel({type:\"brush\",dependencies:[\"geo\",\"grid\",\"xAxis\",\"yAxis\",\"parallel\",\"series\"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:\"all\",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:\"rect\",brushMode:\"single\",transformable:!0,brushStyle:{borderWidth:1,color:\"rgba(120,140,180,0.3)\",borderColor:\"rgba(120,140,180,0.8)\"},throttleType:\"fixRate\",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(e,t){var n=this.option;!t&&o.replaceVisualOption(n,e,[\"inBrush\",\"outOfBrush\"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:s},i.hasOwnProperty(\"liftZ\")||(i.liftZ=5)},setAreas:function(e){e&&(this.areas=r.map(e,function(e){return l(this.option,e)},this))},setBrushOption:function(e){this.brushOption=l(this.option,e),this.brushType=this.brushOption.brushType}});e.exports=u},ii60:function(e,t){t.updateCenterAndZoom=function(e,t,n){var i=e.getZoom(),r=e.getCenter(),o=t.zoom,a=e.dataToPoint(r);null!=t.dx&&null!=t.dy&&(a[0]-=t.dx,a[1]-=t.dy,r=e.pointToData(a),e.setCenter(r));if(null!=o){if(n){var s=n.min||0,l=n.max||1/0;o=Math.max(Math.min(i*o,l),s)/i}e.scale[0]*=o,e.scale[1]*=o;var u=e.position,c=(t.originX-u[0])*(o-1),h=(t.originY-u[1])*(o-1);u[0]-=c,u[1]-=h,e.updateTransform(),r=e.pointToData(a),e.setCenter(r),e.setZoom(o*i)}return{center:e.getCenter(),zoom:e.getZoom()}}},ilLo:function(e,t,n){var i=n(\"Pgdp\").extend({type:\"dataZoom\",render:function(e,t,n,i){this.dataZoomModel=e,this.ecModel=t,this.api=n},getTargetCoordInfo:function(){var e=this.dataZoomModel,t=this.ecModel,n={};return e.eachTargetAxis(function(e,i){var r=t.getComponent(e.axis,i);if(r){var o=r.getCoordSysModel();o&&function(e,t,n,i){for(var r,o=0;o<n.length;o++)if(n[o].model===e){r=n[o];break}r||n.push(r={model:e,axisModels:[],coordIndex:i});r.axisModels.push(t)}(o,r,n[o.mainType]||(n[o.mainType]=[]),o.componentIndex)}},this),n}});e.exports=i},ilox:function(e,t,n){var i=n(\"/gxq\");function r(e,t){return i.map([\"Radius\",\"Angle\"],function(n,i){var r=this[\"get\"+n+\"Axis\"](),o=t[i],a=e[i]/2,s=\"dataTo\"+n,l=\"category\"===r.type?r.getBandWidth():Math.abs(r[s](o-a)-r[s](o+a));return\"Angle\"===n&&(l=l*Math.PI/180),l},this)}e.exports=function(e){var t=e.getRadiusAxis(),n=e.getAngleAxis(),o=t.getExtent();return o[0]>o[1]&&o.reverse(),{coordSys:{type:\"polar\",cx:e.cx,cy:e.cy,r:o[1],r0:o[0]},api:{coord:i.bind(function(i){var r=t.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=e.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a}),size:i.bind(r,e)}}}},ix3c:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\"),a=n(\"1Hui\"),s=n(\"gOx9\"),l=n(\"IkDM\"),u=n(\"5Mek\"),c=n(\"8b51\"),h=n(\"dOVI\"),d=n(\"e+YR\"),f=n(\"RYbJ\"),p=n(\"HHfb\").windowOpen,g=r.bind,m=o.Group,v=o.Rect,y=r.each,b=[\"label\"],x=[\"emphasis\",\"label\"],_=[\"upperLabel\"],w=[\"emphasis\",\"upperLabel\"],C=10,S=1,k=2,T=f([[\"fill\",\"color\"],[\"stroke\",\"strokeColor\"],[\"lineWidth\",\"strokeWidth\"],[\"shadowBlur\"],[\"shadowOffsetX\"],[\"shadowOffsetY\"],[\"shadowColor\"]]),M=function(e){var t=T(e);return t.stroke=t.fill=t.lineWidth=null,t},D=i.extendChartView({type:\"treemap\",init:function(e,t){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state=\"ready\"},render:function(e,t,n,i){var o=t.findComponents({mainType:\"series\",subType:\"treemap\",query:i});if(!(r.indexOf(o,e)<0)){this.seriesModel=e,this.api=n,this.ecModel=t;var a=s.retrieveTargetInfo(i,[\"treemapZoomToNode\",\"treemapRootToNode\"],e),l=i&&i.type,u=e.layoutInfo,c=!this._oldTree,h=this._storage,d=\"treemapRootToNode\"===l&&a&&h?{rootNodeGroup:h.nodeGroup[a.node.getRawIndex()],direction:i.direction}:null,f=this._giveContainerGroup(u),p=this._doRender(f,e,d);c||l&&\"treemapZoomToNode\"!==l&&\"treemapRootToNode\"!==l?p.renderFinally():this._doAnimation(f,p,e,d),this._resetController(n),this._renderBreadcrumb(e,n,a)}},_giveContainerGroup:function(e){var t=this._containerGroup;return t||(t=this._containerGroup=new m,this._initEvents(t),this.group.add(t)),t.attr(\"position\",[e.x,e.y]),t},_doRender:function(e,t,n){var i=t.getData().tree,o=this._oldTree,s={nodeGroup:[],background:[],content:[]},l={nodeGroup:[],background:[],content:[]},u=this._storage,c=[],h=r.curry(A,t,l,u,n,s,c);!function e(t,n,i,o,s){o?(n=t,y(t,function(e,t){!e.isRemoved()&&u(t,t)})):new a(n,t,l,l).add(u).update(u).remove(r.curry(u,null)).execute();function l(e){return e.getId()}function u(r,a){var l=null!=r?t[r]:null,u=null!=a?n[a]:null,c=h(l,u,i,s);c&&e(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,s+1)}}(i.root?[i.root]:[],o&&o.root?[o.root]:[],e,i===o||!o,0);var d=function(e){var t={nodeGroup:[],background:[],content:[]};return e&&y(e,function(e,n){var i=t[n];y(e,function(e){e&&(i.push(e),e.__tmWillDelete=1)})}),t}(u);return this._oldTree=i,this._storage=l,{lastsForAnimation:s,willDeleteEls:d,renderFinally:function(){y(d,function(e){y(e,function(e){e.parent&&e.parent.remove(e)})}),y(c,function(e){e.invisible=!0,e.dirty()})}}},_doAnimation:function(e,t,n,i){if(n.get(\"animation\")){var o=n.get(\"animationDurationUpdate\"),a=n.get(\"animationEasing\"),s=d.createWrap();y(t.willDeleteEls,function(e,t){y(e,function(e,n){if(!e.invisible){var r,l=e.parent;if(i&&\"drillDown\"===i.direction)r=l===i.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,c=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,c=l.__tmNodeHeight/2),r=\"nodeGroup\"===t?{position:[u,c],style:{opacity:0}}:{shape:{x:u,y:c,width:0,height:0},style:{opacity:0}}}r&&s.add(e,r,o,a)}})}),y(this._storage,function(e,n){y(e,function(e,i){var l=t.lastsForAnimation[n][i],u={};l&&(\"nodeGroup\"===n?l.old&&(u.position=e.position.slice(),e.attr(\"position\",l.old)):(l.old&&(u.shape=r.extend({},e.shape),e.setShape(l.old)),l.fadein?(e.setStyle(\"opacity\",0),u.style={opacity:1}):1!==e.style.opacity&&(u.style={opacity:1})),s.add(e,u,o,a))})},this),this._state=\"animating\",s.done(g(function(){this._state=\"ready\",t.renderFinally()},this)).start()}},_resetController:function(e){var t=this._controller;t||((t=this._controller=new u(e.getZr())).enable(this.seriesModel.get(\"roam\")),t.on(\"pan\",g(this._onPan,this)),t.on(\"zoom\",g(this._onZoom,this)));var n=new c(0,0,e.getWidth(),e.getHeight());t.setPointerChecker(function(e,t,i){return n.contain(t,i)})},_clearController:function(){var e=this._controller;e&&(e.dispose(),e=null)},_onPan:function(e){if(\"animating\"!==this._state&&(Math.abs(e.dx)>3||Math.abs(e.dy)>3)){var t=this.seriesModel.getData().tree.root;if(!t)return;var n=t.getLayout();if(!n)return;this.api.dispatchAction({type:\"treemapMove\",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+e.dx,y:n.y+e.dy,width:n.width,height:n.height}})}},_onZoom:function(e){var t=e.originX,n=e.originY;if(\"animating\"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new c(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo;t-=a.x,n-=a.y;var s=h.create();h.translate(s,s,[-t,-n]),h.scale(s,s,[e.scale,e.scale]),h.translate(s,s,[t,n]),o.applyTransform(s),this.api.dispatchAction({type:\"treemapRender\",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},_initEvents:function(e){e.on(\"click\",function(e){if(\"ready\"===this._state){var t=this.seriesModel.get(\"nodeClick\",!0);if(t){var n=this.findTarget(e.offsetX,e.offsetY);if(n){var i=n.node;if(i.getLayout().isLeafRoot)this._rootToNode(n);else if(\"zoomToNode\"===t)this._zoomToNode(n);else if(\"link\"===t){var r=i.hostTree.data.getItemModel(i.dataIndex),o=r.get(\"link\",!0),a=r.get(\"target\",!0)||\"blank\";o&&p(o,a)}}}}},this)},_renderBreadcrumb:function(e,t,n){n||(n=null!=e.get(\"leafDepth\",!0)?{node:e.getViewRoot()}:this.findTarget(t.getWidth()/2,t.getHeight()/2))||(n={node:e.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new l(this.group))).render(e,t,n.node,g(function(t){\"animating\"!==this._state&&(s.aboveViewRoot(e.getViewRoot(),t)?this._rootToNode({node:t}):this._zoomToNode({node:t}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state=\"ready\",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(e){this.api.dispatchAction({type:\"treemapZoomToNode\",from:this.uid,seriesId:this.seriesModel.id,targetNode:e.node})},_rootToNode:function(e){this.api.dispatchAction({type:\"treemapRootToNode\",from:this.uid,seriesId:this.seriesModel.id,targetNode:e.node})},findTarget:function(e,t){var n;return this.seriesModel.getViewRoot().eachNode({attr:\"viewChildren\",order:\"preorder\"},function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(e,t),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}},this),n}});function A(e,t,n,i,a,s,l,u,c,h){if(l){var d=l.getLayout(),f=e.getData();if(f.setItemGraphicEl(l.dataIndex,null),d&&d.isInView){var p=d.width,g=d.height,y=d.borderWidth,D=d.invisible,A=l.getRawIndex(),I=u&&u.getRawIndex(),O=l.viewChildren,E=d.upperHeight,L=O&&O.length,P=l.getModel(\"itemStyle\"),N=l.getModel(\"emphasis.itemStyle\"),R=H(\"nodeGroup\",m);if(R){if(c.add(R),R.attr(\"position\",[d.x||0,d.y||0]),R.__tmNodeWidth=p,R.__tmNodeHeight=g,d.isAboveViewRoot)return R;var B=l.getModel(),z=H(\"background\",v,h,S);if(z&&function(t,n,i){if(n.dataIndex=l.dataIndex,n.seriesIndex=e.seriesIndex,n.setShape({x:0,y:0,width:p,height:g}),D)$(n);else{n.invisible=!1;var r=l.getVisual(\"borderColor\",!0),a=N.get(\"borderColor\"),s=M(P);s.fill=r;var u=T(N);if(u.fill=a,i){var c=p-2*y;V(s,u,r,c,E,{x:y,y:0,width:c,height:E})}else s.text=u.text=null;n.setStyle(s),o.setElementHoverStyle(n,u)}t.add(n)}(R,z,L&&d.upperLabelHeight),L)o.isHighDownDispatcher(R)&&o.setAsHighDownDispatcher(R,!1),z&&(o.setAsHighDownDispatcher(z,!0),f.setItemGraphicEl(l.dataIndex,z));else{var F=H(\"content\",v,h,k);F&&function(t,n){n.dataIndex=l.dataIndex,n.seriesIndex=e.seriesIndex;var i=Math.max(p-2*y,0),r=Math.max(g-2*y,0);if(n.culling=!0,n.setShape({x:y,y:y,width:i,height:r}),D)$(n);else{n.invisible=!1;var a=l.getVisual(\"color\",!0),s=M(P);s.fill=a;var u=T(N);V(s,u,a,i,r),n.setStyle(s),o.setElementHoverStyle(n,u)}t.add(n)}(R,F),z&&o.isHighDownDispatcher(z)&&o.setAsHighDownDispatcher(z,!1),o.setAsHighDownDispatcher(R,!0),f.setItemGraphicEl(l.dataIndex,R)}return R}}}function $(e){!e.invisible&&s.push(e)}function V(t,n,i,a,s,u){var c=B.get(\"name\"),h=B.getModel(u?_:b),f=B.getModel(u?w:x),p=h.getShallow(\"show\");o.setLabelStyle(t,n,h,f,{defaultText:p?c:null,autoColor:i,isRectText:!0,labelFetcher:e,labelDataIndex:l.dataIndex,labelProp:u?\"upperLabel\":\"label\"}),j(t,u,d),j(n,u,d),u&&(t.textRect=r.clone(u)),t.truncate=p&&h.get(\"ellipsis\")?{outerWidth:a,outerHeight:s,minChar:2}:null}function j(t,n,i){var r=t.text;if(!n&&i.isLeafRoot&&null!=r){var o=e.get(\"drillDownIcon\",!0);t.text=o?o+\" \"+r:r}}function H(e,o,s,u){var c=null!=I&&n[e][I],h=a[e];return c?(n[e][I]=null,function(e,t,n){(e[A]={}).old=\"nodeGroup\"===n?t.position.slice():r.extend({},t.shape)}(h,c,e)):D||((c=new o({z:function(e,t){var n=e*C+t;return(n-1)/n}(s,u)})).__tmDepth=s,c.__tmStorageName=e,function(e,t,n){var r=e[A]={},o=l.parentNode;if(o&&(!i||\"drillDown\"===i.direction)){var s=0,u=0,c=a.background[o.getRawIndex()];!i&&c&&c.old&&(s=c.old.width,u=c.old.height),r.old=\"nodeGroup\"===n?[0,u]:{x:s,y:u,width:0,height:0}}r.fadein=\"nodeGroup\"!==n}(h,0,e)),t[e][A]=c}}e.exports=D},jDhh:function(e,t,n){var i=n(\"AlhT\"),r=n(\"MAom\"),o=n(\"/86O\"),a=n(\"Of86\"),s=n(\"PD67\"),l=n(\"udrn\"),u=n(\"KsMi\"),c=n(\"GxVO\"),h=n(\"+UTs\"),d=n(\"BeCT\"),f=n(\"Gw4f\"),p=n(\"d8Tt\"),g=n(\"dOVI\"),m=n(\"dE09\").createFromString,v=n(\"/gxq\"),y=v.isString,b=v.extend,x=v.defaults,_=v.trim,w=v.each,C=/[\\s,]+/;function S(e){y(e)&&(e=(new DOMParser).parseFromString(e,\"text/xml\"));for(9===e.nodeType&&(e=e.firstChild);\"svg\"!==e.nodeName.toLowerCase()||1!==e.nodeType;)e=e.nextSibling;return e}function k(){this._defs={},this._root=null,this._isDefine=!1,this._isText=!1}k.prototype.parse=function(e,t){t=t||{};var n=S(e);if(!n)throw new Error(\"Illegal svg\");var r=new i;this._root=r;var o=n.getAttribute(\"viewBox\")||\"\",a=parseFloat(n.getAttribute(\"width\")||t.width),l=parseFloat(n.getAttribute(\"height\")||t.height);isNaN(a)&&(a=null),isNaN(l)&&(l=null),O(n,r,null,!0);for(var u,c,h=n.firstChild;h;)this._parseNode(h,r),h=h.nextSibling;if(o){var d=_(o).split(C);d.length>=4&&(u={x:parseFloat(d[0]||0),y:parseFloat(d[1]||0),width:parseFloat(d[2]),height:parseFloat(d[3])})}if(u&&null!=a&&null!=l&&(c=R(u,a,l),!t.ignoreViewBox)){var f=r;(r=new i).add(f),f.scale=c.scale.slice(),f.position=c.position.slice()}return t.ignoreRootClip||null==a||null==l||r.setClipPath(new s({shape:{x:0,y:0,width:a,height:l}})),{root:r,width:a,height:l,viewBoxRect:u,viewBoxTransform:c}},k.prototype._parseNode=function(e,t){var n,i,r=e.nodeName.toLowerCase();if(\"defs\"===r?this._isDefine=!0:\"text\"===r&&(this._isText=!0),this._isDefine){if(i=M[r]){var o=i.call(this,e),a=e.getAttribute(\"id\");a&&(this._defs[a]=o)}}else(i=T[r])&&(n=i.call(this,e,t),t.add(n));for(var s=e.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;\"defs\"===r?this._isDefine=!1:\"text\"===r&&(this._isText=!1)},k.prototype._parseText=function(e,t){if(1===e.nodeType){var n=e.getAttribute(\"dx\")||0,i=e.getAttribute(\"dy\")||0;this._textX+=parseFloat(n),this._textY+=parseFloat(i)}var r=new o({style:{text:e.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});D(t,r),O(e,r,this._defs);var a=r.style.fontSize;a&&a<9&&(r.style.fontSize=9,r.scale=r.scale||[1,1],r.scale[0]*=a/9,r.scale[1]*=a/9);var s=r.getBoundingRect();return this._textX+=s.width,t.add(r),r};var T={g:function(e,t){var n=new i;return D(t,n),O(e,n,this._defs),n},rect:function(e,t){var n=new s;return D(t,n),O(e,n,this._defs),n.setShape({x:parseFloat(e.getAttribute(\"x\")||0),y:parseFloat(e.getAttribute(\"y\")||0),width:parseFloat(e.getAttribute(\"width\")||0),height:parseFloat(e.getAttribute(\"height\")||0)}),n},circle:function(e,t){var n=new a;return D(t,n),O(e,n,this._defs),n.setShape({cx:parseFloat(e.getAttribute(\"cx\")||0),cy:parseFloat(e.getAttribute(\"cy\")||0),r:parseFloat(e.getAttribute(\"r\")||0)}),n},line:function(e,t){var n=new u;return D(t,n),O(e,n,this._defs),n.setShape({x1:parseFloat(e.getAttribute(\"x1\")||0),y1:parseFloat(e.getAttribute(\"y1\")||0),x2:parseFloat(e.getAttribute(\"x2\")||0),y2:parseFloat(e.getAttribute(\"y2\")||0)}),n},ellipse:function(e,t){var n=new l;return D(t,n),O(e,n,this._defs),n.setShape({cx:parseFloat(e.getAttribute(\"cx\")||0),cy:parseFloat(e.getAttribute(\"cy\")||0),rx:parseFloat(e.getAttribute(\"rx\")||0),ry:parseFloat(e.getAttribute(\"ry\")||0)}),n},polygon:function(e,t){var n=e.getAttribute(\"points\");n&&(n=A(n));var i=new h({shape:{points:n||[]}});return D(t,i),O(e,i,this._defs),i},polyline:function(e,t){var n=new c;D(t,n),O(e,n,this._defs);var i=e.getAttribute(\"points\");return i&&(i=A(i)),new d({shape:{points:i||[]}})},image:function(e,t){var n=new r;return D(t,n),O(e,n,this._defs),n.setStyle({image:e.getAttribute(\"xlink:href\"),x:e.getAttribute(\"x\"),y:e.getAttribute(\"y\"),width:e.getAttribute(\"width\"),height:e.getAttribute(\"height\")}),n},text:function(e,t){var n=e.getAttribute(\"x\")||0,r=e.getAttribute(\"y\")||0,o=e.getAttribute(\"dx\")||0,a=e.getAttribute(\"dy\")||0;this._textX=parseFloat(n)+parseFloat(o),this._textY=parseFloat(r)+parseFloat(a);var s=new i;return D(t,s),O(e,s,this._defs),s},tspan:function(e,t){var n=e.getAttribute(\"x\"),r=e.getAttribute(\"y\");null!=n&&(this._textX=parseFloat(n)),null!=r&&(this._textY=parseFloat(r));var o=e.getAttribute(\"dx\")||0,a=e.getAttribute(\"dy\")||0,s=new i;return D(t,s),O(e,s,this._defs),this._textX+=o,this._textY+=a,s},path:function(e,t){var n=e.getAttribute(\"d\")||\"\",i=m(n);return D(t,i),O(e,i,this._defs),i}},M={lineargradient:function(e){var t=parseInt(e.getAttribute(\"x1\")||0,10),n=parseInt(e.getAttribute(\"y1\")||0,10),i=parseInt(e.getAttribute(\"x2\")||10,10),r=parseInt(e.getAttribute(\"y2\")||0,10),o=new f(t,n,i,r);return function(e,t){var n=e.firstChild;for(;n;){if(1===n.nodeType){var i=n.getAttribute(\"offset\");i=i.indexOf(\"%\")>0?parseInt(i,10)/100:i?parseFloat(i):0;var r=n.getAttribute(\"stop-color\")||\"#000000\";t.addColorStop(i,r)}n=n.nextSibling}}(e,o),o},radialgradient:function(e){}};function D(e,t){e&&e.__inheritedStyle&&(t.__inheritedStyle||(t.__inheritedStyle={}),x(t.__inheritedStyle,e.__inheritedStyle))}function A(e){for(var t=_(e).split(C),n=[],i=0;i<t.length;i+=2){var r=parseFloat(t[i]),o=parseFloat(t[i+1]);n.push([r,o])}return n}var I={fill:\"fill\",stroke:\"stroke\",\"stroke-width\":\"lineWidth\",opacity:\"opacity\",\"fill-opacity\":\"fillOpacity\",\"stroke-opacity\":\"strokeOpacity\",\"stroke-dasharray\":\"lineDash\",\"stroke-dashoffset\":\"lineDashOffset\",\"stroke-linecap\":\"lineCap\",\"stroke-linejoin\":\"lineJoin\",\"stroke-miterlimit\":\"miterLimit\",\"font-family\":\"fontFamily\",\"font-size\":\"fontSize\",\"font-style\":\"fontStyle\",\"font-weight\":\"fontWeight\",\"text-align\":\"textAlign\",\"alignment-baseline\":\"textBaseline\"};function O(e,t,n,i){var r=t.__inheritedStyle||{},o=\"text\"===t.type;if(1===e.nodeType&&(function(e,t){var n=e.getAttribute(\"transform\");if(n){var i=null,r=[];(n=n.replace(/,/g,\" \")).replace(P,function(e,t,n){r.push(t,n)});for(var o=r.length-1;o>0;o-=2){var a=r[o],s=r[o-1];switch(i=i||g.create(),s){case\"translate\":a=_(a).split(C),g.translate(i,i,[parseFloat(a[0]),parseFloat(a[1]||0)]);break;case\"scale\":a=_(a).split(C),g.scale(i,i,[parseFloat(a[0]),parseFloat(a[1]||a[0])]);break;case\"rotate\":a=_(a).split(C),g.rotate(i,i,parseFloat(a[0]));break;case\"skew\":a=_(a).split(C),console.warn(\"Skew transform is not supported yet\");break;case\"matrix\":var a=_(a).split(C);i[0]=parseFloat(a[0]),i[1]=parseFloat(a[1]),i[2]=parseFloat(a[2]),i[3]=parseFloat(a[3]),i[4]=parseFloat(a[4]),i[5]=parseFloat(a[5])}}t.setLocalTransform(i)}}(e,t),b(r,function(e){var t=e.getAttribute(\"style\"),n={};if(!t)return n;var i,r={};N.lastIndex=0;for(;null!=(i=N.exec(t));)r[i[1]]=i[2];for(var o in I)I.hasOwnProperty(o)&&null!=r[o]&&(n[I[o]]=r[o]);return n}(e)),!i))for(var a in I)if(I.hasOwnProperty(a)){var s=e.getAttribute(a);null!=s&&(r[I[a]]=s)}var l=o?\"textFill\":\"fill\",u=o?\"textStroke\":\"stroke\";t.style=t.style||new p;var c=t.style;null!=r.fill&&c.set(l,L(r.fill,n)),null!=r.stroke&&c.set(u,L(r.stroke,n)),w([\"lineWidth\",\"opacity\",\"fillOpacity\",\"strokeOpacity\",\"miterLimit\",\"fontSize\"],function(e){var t=\"lineWidth\"===e&&o?\"textStrokeWidth\":e;null!=r[e]&&c.set(t,parseFloat(r[e]))}),r.textBaseline&&\"auto\"!==r.textBaseline||(r.textBaseline=\"alphabetic\"),\"alphabetic\"===r.textBaseline&&(r.textBaseline=\"bottom\"),\"start\"===r.textAlign&&(r.textAlign=\"left\"),\"end\"===r.textAlign&&(r.textAlign=\"right\"),w([\"lineDashOffset\",\"lineCap\",\"lineJoin\",\"fontWeight\",\"fontFamily\",\"fontStyle\",\"textAlign\",\"textBaseline\"],function(e){null!=r[e]&&c.set(e,r[e])}),r.lineDash&&(t.style.lineDash=_(r.lineDash).split(C)),c[u]&&\"none\"!==c[u]&&(t[u]=!0),t.__inheritedStyle=r}var E=/url\\(\\s*#(.*?)\\)/;function L(e,t){var n=t&&e&&e.match(E);return n?t[_(n[1])]:e}var P=/(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;var N=/([^\\s:;]+)\\s*:\\s*([^:;]+)/g;function R(e,t,n){var i=t/e.width,r=n/e.height,o=Math.min(i,r);return{scale:[o,o],position:[-(e.x+e.width/2)*o+t/2,-(e.y+e.height/2)*o+n/2]}}t.parseXML=S,t.makeViewBoxTransform=R,t.parseSVG=function(e,t){return(new k).parse(e,t)}},jFbC:function(e,t,n){n(\"Cdx3\"),e.exports=n(\"FeBl\").Object.keys},jHiU:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wRzc\"),o=function(e,t,n,i,o){this.x=null==e?.5:e,this.y=null==t?.5:t,this.r=null==n?.5:n,this.type=\"radial\",this.global=o||!1,r.call(this,i)};o.prototype={constructor:o},i.inherits(o,r);var a=o;e.exports=a},jJrn:function(e,t,n){var i=n(\"/gxq\"),r=n(\"JFJR\"),o=n(\"tBuv\"),a=n(\"wWR3\"),s=n(\"3yJd\"),l=s.getScaleExtent,u=s.niceScaleExtent,c=n(\"rctg\"),h=n(\"xCbH\");function d(e,t,n){this._model=e,this.dimensions=[],this._indicatorAxes=i.map(e.getIndicatorModels(),function(e,t){var n=\"indicator_\"+t,i=new r(n,\"log\"===e.get(\"axisType\")?new h:new o);return i.name=e.get(\"name\"),i.model=e,e.axis=i,this.dimensions.push(n),i},this),this.resize(e,n),this.cx,this.cy,this.r,this.r0,this.startAngle}d.prototype.getIndicatorAxes=function(){return this._indicatorAxes},d.prototype.dataToPoint=function(e,t){var n=this._indicatorAxes[t];return this.coordToPoint(n.dataToCoord(e),t)},d.prototype.coordToPoint=function(e,t){var n=this._indicatorAxes[t].angle;return[this.cx+e*Math.cos(n),this.cy-e*Math.sin(n)]},d.prototype.pointToData=function(e){var t=e[0]-this.cx,n=e[1]-this.cy,i=Math.sqrt(t*t+n*n);t/=i,n/=i;for(var r,o=Math.atan2(-n,t),a=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],c=Math.abs(o-u.angle);c<a&&(r=u,s=l,a=c)}return[s,+(r&&r.coordToData(i))]},d.prototype.resize=function(e,t){var n=e.get(\"center\"),r=t.getWidth(),o=t.getHeight(),s=Math.min(r,o)/2;this.cx=a.parsePercent(n[0],r),this.cy=a.parsePercent(n[1],o),this.startAngle=e.get(\"startAngle\")*Math.PI/180;var l=e.get(\"radius\");\"string\"!=typeof l&&\"number\"!=typeof l||(l=[0,l]),this.r0=a.parsePercent(l[0],s),this.r=a.parsePercent(l[1],s),i.each(this._indicatorAxes,function(e,t){e.setExtent(this.r0,this.r);var n=this.startAngle+t*Math.PI*2/this._indicatorAxes.length;n=Math.atan2(Math.sin(n),Math.cos(n)),e.angle=n},this)},d.prototype.update=function(e,t){var n=this._indicatorAxes,r=this._model;i.each(n,function(e){e.scale.setExtent(1/0,-1/0)}),e.eachSeriesByType(\"radar\",function(t,o){if(\"radar\"===t.get(\"coordinateSystem\")&&e.getComponent(\"radar\",t.get(\"radarIndex\"))===r){var a=t.getData();i.each(n,function(e){e.scale.unionExtentFromData(a,a.mapDimension(e.dim))})}},this);var o=r.get(\"splitNumber\");function s(e){var t=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),n=e/t;return 2===n?n=5:n*=2,n*t}i.each(n,function(e,t){var n=l(e.scale,e.model).extent;u(e.scale,e.model);var i=e.model,r=e.scale,c=i.getMin(),h=i.getMax(),d=r.getInterval();if(null!=c&&null!=h)r.setExtent(+c,+h),r.setInterval((h-c)/o);else if(null!=c){do{f=c+d*o,r.setExtent(+c,f),r.setInterval(d),d=s(d)}while(f<n[1]&&isFinite(f)&&isFinite(n[1]))}else if(null!=h){do{p=h-d*o,r.setExtent(p,+h),r.setInterval(d),d=s(d)}while(p>n[0]&&isFinite(p)&&isFinite(n[0]))}else{r.getTicks().length-1>o&&(d=s(d));var f=Math.ceil(n[1]/d)*d,p=a.round(f-d*o);r.setExtent(p,f),r.setInterval(d)}})},d.dimensions=[],d.create=function(e,t){var n=[];return e.eachComponent(\"radar\",function(i){var r=new d(i,e,t);n.push(r),i.coordinateSystem=r}),e.eachSeriesByType(\"radar\",function(e){\"radar\"===e.get(\"coordinateSystem\")&&(e.coordinateSystem=n[e.get(\"radarIndex\")||0])}),n},c.register(\"radar\",d);var f=d;e.exports=f},jLnL:function(e,t,n){n(\"4w1v\"),(0,n(\"hv2j\").registerPainter)(\"svg\",n(\"Q5xN\"))},jMTz:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"ao1T\"),r=n(\"EJsE\").extend({type:\"series.line\",dependencies:[\"grid\",\"polar\"],getInitialData:function(e,t){return i(this.getSource(),this,{useEncodeDefaulter:!0})},defaultOption:{zlevel:0,z:2,coordinateSystem:\"cartesian2d\",legendHoverLink:!0,hoverAnimation:!0,clip:!0,label:{position:\"top\"},lineStyle:{width:2,type:\"solid\"},step:!1,smooth:!1,smoothMonotone:null,symbol:\"emptyCircle\",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:\"auto\",connectNulls:!1,sampling:\"none\",animationEasing:\"linear\",progressive:0,hoverLayerThreshold:1/0}});e.exports=r},jQeI:function(e,t,n){(function(e){\"use strict\";var t=\"CodeMirror-hint\",n=\"CodeMirror-hint-active\";function i(e,t){if(this.cm=e,this.options=t,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor(\"start\"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length,this.options.updateOnCursorActivity){var n=this;e.on(\"cursorActivity\",this.activityFunc=function(){n.cursorActivity()})}}e.showHint=function(e,t,n){if(!t)return e.showHint(n);n&&n.async&&(t.async=!0);var i={hint:t};if(n)for(var r in n)i[r]=n[r];return e.showHint(i)},e.defineExtension(\"showHint\",function(t){t=function(e,t,n){var i=e.options.hintOptions,r={};for(var o in c)r[o]=c[o];if(i)for(var o in i)void 0!==i[o]&&(r[o]=i[o]);if(n)for(var o in n)void 0!==n[o]&&(r[o]=n[o]);r.hint.resolve&&(r.hint=r.hint.resolve(e,t));return r}(this,this.getCursor(\"start\"),t);var n=this.listSelections();if(!(n.length>1)){if(this.somethingSelected()){if(!t.hint.supportsSelection)return;for(var r=0;r<n.length;r++)if(n[r].head.line!=n[r].anchor.line)return}this.state.completionActive&&this.state.completionActive.close();var o=this.state.completionActive=new i(this,t);o.options.hint&&(e.signal(this,\"startCompletion\",this),o.update(!0))}}),e.defineExtension(\"closeHint\",function(){this.state.completionActive&&this.state.completionActive.close()});var r=window.requestAnimationFrame||function(e){return setTimeout(e,1e3/60)},o=window.cancelAnimationFrame||clearTimeout;function a(e){return\"string\"==typeof e?e:e.text}function s(e,t){for(;t&&t!=e;){if(\"LI\"===t.nodeName.toUpperCase()&&t.parentNode==e)return t;t=t.parentNode}}function l(i,r){this.completion=i,this.data=r,this.picked=!1;var o=this,l=i.cm,u=l.getInputField().ownerDocument,c=u.defaultView||u.parentWindow,h=this.hints=u.createElement(\"ul\"),d=i.cm.options.theme;h.className=\"CodeMirror-hints \"+d,this.selectedHint=r.selectedHint||0;for(var f=r.list,p=0;p<f.length;++p){var g=h.appendChild(u.createElement(\"li\")),m=f[p],v=t+(p!=this.selectedHint?\"\":\" \"+n);null!=m.className&&(v=m.className+\" \"+v),g.className=v,m.render?m.render(g,r,m):g.appendChild(u.createTextNode(m.displayText||a(m))),g.hintId=p}var y=i.options.container||u.body,b=l.cursorCoords(i.options.alignWithWord?r.from:null),x=b.left,_=b.bottom,w=!0,C=0,S=0;if(y!==u.body){var k=-1!==[\"absolute\",\"relative\",\"fixed\"].indexOf(c.getComputedStyle(y).position)?y:y.offsetParent,T=k.getBoundingClientRect(),M=u.body.getBoundingClientRect();C=T.left-M.left-k.scrollLeft,S=T.top-M.top-k.scrollTop}h.style.left=x-C+\"px\",h.style.top=_-S+\"px\";var D=c.innerWidth||Math.max(u.body.offsetWidth,u.documentElement.offsetWidth),A=c.innerHeight||Math.max(u.body.offsetHeight,u.documentElement.offsetHeight);y.appendChild(h);var I,O=i.options.moveOnOverlap?h.getBoundingClientRect():new DOMRect,E=!!i.options.paddingForScrollbar&&h.scrollHeight>h.clientHeight+1;if(setTimeout(function(){I=l.getScrollInfo()}),O.bottom-A>0){var L=O.bottom-O.top;if(b.top-(b.bottom-O.top)-L>0)h.style.top=(_=b.top-L-S)+\"px\",w=!1;else if(L>A){h.style.height=A-5+\"px\",h.style.top=(_=b.bottom-O.top-S)+\"px\";var P=l.getCursor();r.from.ch!=P.ch&&(b=l.cursorCoords(P),h.style.left=(x=b.left-C)+\"px\",O=h.getBoundingClientRect())}}var N,R=O.right-D;if(R>0&&(O.right-O.left>D&&(h.style.width=D-5+\"px\",R-=O.right-O.left-D),h.style.left=(x=b.left-R-C)+\"px\"),E)for(var B=h.firstChild;B;B=B.nextSibling)B.style.paddingRight=l.display.nativeBarWidth+\"px\";(l.addKeyMap(this.keyMap=function(e,t){var n={Up:function(){t.moveFocus(-1)},Down:function(){t.moveFocus(1)},PageUp:function(){t.moveFocus(1-t.menuSize(),!0)},PageDown:function(){t.moveFocus(t.menuSize()-1,!0)},Home:function(){t.setFocus(0)},End:function(){t.setFocus(t.length-1)},Enter:t.pick,Tab:t.pick,Esc:t.close};/Mac/.test(navigator.platform)&&(n[\"Ctrl-P\"]=function(){t.moveFocus(-1)},n[\"Ctrl-N\"]=function(){t.moveFocus(1)});var i=e.options.customKeys,r=i?{}:n;function o(e,i){var o;o=\"string\"!=typeof i?function(e){return i(e,t)}:n.hasOwnProperty(i)?n[i]:i,r[e]=o}if(i)for(var a in i)i.hasOwnProperty(a)&&o(a,i[a]);var s=e.options.extraKeys;if(s)for(var a in s)s.hasOwnProperty(a)&&o(a,s[a]);return r}(i,{moveFocus:function(e,t){o.changeActive(o.selectedHint+e,t)},setFocus:function(e){o.changeActive(e)},menuSize:function(){return o.screenAmount()},length:f.length,close:function(){i.close()},pick:function(){o.pick()},data:r})),i.options.closeOnUnfocus)&&(l.on(\"blur\",this.onBlur=function(){N=setTimeout(function(){i.close()},100)}),l.on(\"focus\",this.onFocus=function(){clearTimeout(N)}));l.on(\"scroll\",this.onScroll=function(){var e=l.getScrollInfo(),t=l.getWrapperElement().getBoundingClientRect(),n=_+I.top-e.top,r=n-(c.pageYOffset||(u.documentElement||u.body).scrollTop);if(w||(r+=h.offsetHeight),r<=t.top||r>=t.bottom)return i.close();h.style.top=n+\"px\",h.style.left=x+I.left-e.left+\"px\"}),e.on(h,\"dblclick\",function(e){var t=s(h,e.target||e.srcElement);t&&null!=t.hintId&&(o.changeActive(t.hintId),o.pick())}),e.on(h,\"click\",function(e){var t=s(h,e.target||e.srcElement);t&&null!=t.hintId&&(o.changeActive(t.hintId),i.options.completeOnSingleClick&&o.pick())}),e.on(h,\"mousedown\",function(){setTimeout(function(){l.focus()},20)});var z=this.getSelectedHintRange();return 0===z.from&&0===z.to||this.scrollToActive(),e.signal(r,\"select\",f[this.selectedHint],h.childNodes[this.selectedHint]),!0}function u(e,t,n,i){if(e.async)e(t,i,n);else{var r=e(t,n);r&&r.then?r.then(i):i(r)}}i.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.options.updateOnCursorActivity&&this.cm.off(\"cursorActivity\",this.activityFunc),this.widget&&this.data&&e.signal(this.data,\"close\"),this.widget&&this.widget.close(),e.signal(this.cm,\"endCompletion\",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(t,n){var i=t.list[n],r=this;this.cm.operation(function(){i.hint?i.hint(r.cm,t,i):r.cm.replaceRange(a(i),i.from||t.from,i.to||t.to,\"complete\"),e.signal(t,\"pick\",i),r.cm.scrollIntoView()}),this.options.closeOnPick&&this.close()},cursorActivity:function(){this.debounce&&(o(this.debounce),this.debounce=0);var e=this.startPos;this.data&&(e=this.data.from);var t=this.cm.getCursor(),n=this.cm.getLine(t.line);if(t.line!=this.startPos.line||n.length-t.ch!=this.startLen-this.startPos.ch||t.ch<e.ch||this.cm.somethingSelected()||!t.ch||this.options.closeCharacters.test(n.charAt(t.ch-1)))this.close();else{var i=this;this.debounce=r(function(){i.update()}),this.widget&&this.widget.disable()}},update:function(e){if(null!=this.tick){var t=this,n=++this.tick;u(this.options.hint,this.cm,this.options,function(i){t.tick==n&&t.finishUpdate(i,e)})}},finishUpdate:function(t,n){this.data&&e.signal(this.data,\"update\");var i=this.widget&&this.widget.picked||n&&this.options.completeSingle;this.widget&&this.widget.close(),this.data=t,t&&t.list.length&&(i&&1==t.list.length?this.pick(t,0):(this.widget=new l(this,t),e.signal(t,\"shown\")))}},l.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var e=this.completion.cm;this.completion.options.closeOnUnfocus&&(e.off(\"blur\",this.onBlur),e.off(\"focus\",this.onFocus)),e.off(\"scroll\",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var e=this;this.keyMap={Enter:function(){e.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(t,i){if(t>=this.data.list.length?t=i?this.data.list.length-1:0:t<0&&(t=i?0:this.data.list.length-1),this.selectedHint!=t){var r=this.hints.childNodes[this.selectedHint];r&&(r.className=r.className.replace(\" \"+n,\"\")),(r=this.hints.childNodes[this.selectedHint=t]).className+=\" \"+n,this.scrollToActive(),e.signal(this.data,\"select\",this.data.list[this.selectedHint],r)}},scrollToActive:function(){var e=this.getSelectedHintRange(),t=this.hints.childNodes[e.from],n=this.hints.childNodes[e.to],i=this.hints.firstChild;t.offsetTop<this.hints.scrollTop?this.hints.scrollTop=t.offsetTop-i.offsetTop:n.offsetTop+n.offsetHeight>this.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+i.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var e=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-e),to:Math.min(this.data.list.length-1,this.selectedHint+e)}}},e.registerHelper(\"hint\",\"auto\",{resolve:function(t,n){var i,r=t.getHelpers(n,\"hint\");if(r.length){var o=function(e,t,n){var i=function(e,t){if(!e.somethingSelected())return t;for(var n=[],i=0;i<t.length;i++)t[i].supportsSelection&&n.push(t[i]);return n}(e,r);!function r(o){if(o==i.length)return t(null);u(i[o],e,n,function(e){e&&e.list.length>0?t(e):r(o+1)})}(0)};return o.async=!0,o.supportsSelection=!0,o}return(i=t.getHelper(t.getCursor(),\"hintWords\"))?function(t){return e.hint.fromList(t,{words:i})}:e.hint.anyword?function(t,n){return e.hint.anyword(t,n)}:function(){}}}),e.registerHelper(\"hint\",\"fromList\",function(t,n){var i,r=t.getCursor(),o=t.getTokenAt(r),a=e.Pos(r.line,o.start),s=r;o.start<r.ch&&/\\w/.test(o.string.charAt(r.ch-o.start-1))?i=o.string.substr(0,r.ch-o.start):(i=\"\",a=r);for(var l=[],u=0;u<n.words.length;u++){var c=n.words[u];c.slice(0,i.length)==i&&l.push(c)}if(l.length)return{list:l,from:a,to:s}}),e.commands.autocomplete=e.showHint;var c={hint:e.hint.auto,completeSingle:!0,alignWithWord:!0,closeCharacters:/[\\s()\\[\\]{};:>,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};e.defineOption(\"hintOptions\",null)})(n(\"8U58\"))},jmaC:function(e,t,n){\"use strict\";t.__esModule=!0,t.default=function(e){for(var t=1,n=arguments.length;t<n;t++){var i=arguments[t]||{};for(var r in i)if(i.hasOwnProperty(r)){var o=i[r];void 0!==o&&(e[r]=o)}}return e}},jpt2:function(e,t,n){var i=n(\"LBXi\"),r=n(\"Icdr\").extendComponentView({type:\"geo\",init:function(e,t){var n=new i(t,!0);this._mapDraw=n,this.group.add(n.group)},render:function(e,t,n,i){if(!i||\"geoToggleSelect\"!==i.type||i.from!==this.uid){var r=this._mapDraw;e.get(\"show\")?r.draw(e,t,n,this,i):this._mapDraw.group.removeAll(),this.group.silent=e.get(\"silent\")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}});e.exports=r},jwfv:function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(\"Dd8w\"),r=n.n(i),o=n(\"pFYg\"),a=n.n(o),s=/%[sdj%]/g,l=function(){};function u(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var i=1,r=t[0],o=t.length;if(\"function\"==typeof r)return r.apply(null,t.slice(1));if(\"string\"==typeof r){for(var a=String(r).replace(s,function(e){if(\"%%\"===e)return\"%\";if(i>=o)return e;switch(e){case\"%s\":return String(t[i++]);case\"%d\":return Number(t[i++]);case\"%j\":try{return JSON.stringify(t[i++])}catch(e){return\"[Circular]\"}break;default:return e}}),l=t[i];i<o;l=t[++i])a+=\" \"+l;return a}return r}function c(e,t){return void 0===e||null===e||(!(\"array\"!==t||!Array.isArray(e)||e.length)||!(!function(e){return\"string\"===e||\"url\"===e||\"hex\"===e||\"email\"===e||\"pattern\"===e}(t)||\"string\"!=typeof e||e))}function h(e,t,n){var i=0,r=e.length;!function o(a){if(a&&a.length)n(a);else{var s=i;i+=1,s<r?t(e[s],o):n([])}}([])}function d(e,t,n,i){if(t.first)return h(function(e){var t=[];return Object.keys(e).forEach(function(n){t.push.apply(t,e[n])}),t}(e),n,i);var r=t.firstFields||[];!0===r&&(r=Object.keys(e));var o=Object.keys(e),a=o.length,s=0,l=[],u=function(e){l.push.apply(l,e),++s===a&&i(l)};o.forEach(function(t){var i=e[t];-1!==r.indexOf(t)?h(i,n,u):function(e,t,n){var i=[],r=0,o=e.length;function a(e){i.push.apply(i,e),++r===o&&n(i)}e.forEach(function(e){t(e,a)})}(i,n,u)})}function f(e){return function(t){return t&&t.message?(t.field=t.field||e.fullField,t):{message:t,field:t.field||e.fullField}}}function p(e,t){if(t)for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];\"object\"===(void 0===i?\"undefined\":a()(i))&&\"object\"===a()(e[n])?e[n]=r()({},e[n],i):e[n]=i}return e}var g=function(e,t,n,i,r,o){!e.required||n.hasOwnProperty(e.field)&&!c(t,o||e.type)||i.push(u(r.messages.required,e.fullField))};var m=function(e,t,n,i,r){(/^\\s+$/.test(t)||\"\"===t)&&i.push(u(r.messages.whitespace,e.fullField))},v={email:/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,url:new RegExp(\"^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$\",\"i\"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},y={integer:function(e){return y.number(e)&&parseInt(e,10)===e},float:function(e){return y.number(e)&&!y.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return\"function\"==typeof e.getTime&&\"function\"==typeof e.getMonth&&\"function\"==typeof e.getYear},number:function(e){return!isNaN(e)&&\"number\"==typeof e},object:function(e){return\"object\"===(void 0===e?\"undefined\":a()(e))&&!y.array(e)},method:function(e){return\"function\"==typeof e},email:function(e){return\"string\"==typeof e&&!!e.match(v.email)&&e.length<255},url:function(e){return\"string\"==typeof e&&!!e.match(v.url)},hex:function(e){return\"string\"==typeof e&&!!e.match(v.hex)}};var b=\"enum\";var x={required:g,whitespace:m,type:function(e,t,n,i,r){if(e.required&&void 0===t)g(e,t,n,i,r);else{var o=e.type;[\"integer\",\"float\",\"array\",\"regexp\",\"object\",\"method\",\"email\",\"number\",\"date\",\"url\",\"hex\"].indexOf(o)>-1?y[o](t)||i.push(u(r.messages.types[o],e.fullField,e.type)):o&&(void 0===t?\"undefined\":a()(t))!==e.type&&i.push(u(r.messages.types[o],e.fullField,e.type))}},range:function(e,t,n,i,r){var o=\"number\"==typeof e.len,a=\"number\"==typeof e.min,s=\"number\"==typeof e.max,l=t,c=null,h=\"number\"==typeof t,d=\"string\"==typeof t,f=Array.isArray(t);if(h?c=\"number\":d?c=\"string\":f&&(c=\"array\"),!c)return!1;f&&(l=t.length),d&&(l=t.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\"_\").length),o?l!==e.len&&i.push(u(r.messages[c].len,e.fullField,e.len)):a&&!s&&l<e.min?i.push(u(r.messages[c].min,e.fullField,e.min)):s&&!a&&l>e.max?i.push(u(r.messages[c].max,e.fullField,e.max)):a&&s&&(l<e.min||l>e.max)&&i.push(u(r.messages[c].range,e.fullField,e.min,e.max))},enum:function(e,t,n,i,r){e[b]=Array.isArray(e[b])?e[b]:[],-1===e[b].indexOf(t)&&i.push(u(r.messages[b],e.fullField,e[b].join(\", \")))},pattern:function(e,t,n,i,r){e.pattern&&(e.pattern instanceof RegExp?(e.pattern.lastIndex=0,e.pattern.test(t)||i.push(u(r.messages.pattern.mismatch,e.fullField,t,e.pattern))):\"string\"==typeof e.pattern&&(new RegExp(e.pattern).test(t)||i.push(u(r.messages.pattern.mismatch,e.fullField,t,e.pattern))))}};var _=\"enum\";var w=function(e,t,n,i,r){var o=e.type,a=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t,o)&&!e.required)return n();x.required(e,t,i,a,r,o),c(t,o)||x.type(e,t,i,a,r)}n(a)},C={string:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t,\"string\")&&!e.required)return n();x.required(e,t,i,o,r,\"string\"),c(t,\"string\")||(x.type(e,t,i,o,r),x.range(e,t,i,o,r),x.pattern(e,t,i,o,r),!0===e.whitespace&&x.whitespace(e,t,i,o,r))}n(o)},method:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),void 0!==t&&x.type(e,t,i,o,r)}n(o)},number:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),void 0!==t&&(x.type(e,t,i,o,r),x.range(e,t,i,o,r))}n(o)},boolean:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),void 0!==t&&x.type(e,t,i,o,r)}n(o)},regexp:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),c(t)||x.type(e,t,i,o,r)}n(o)},integer:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),void 0!==t&&(x.type(e,t,i,o,r),x.range(e,t,i,o,r))}n(o)},float:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),void 0!==t&&(x.type(e,t,i,o,r),x.range(e,t,i,o,r))}n(o)},array:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t,\"array\")&&!e.required)return n();x.required(e,t,i,o,r,\"array\"),c(t,\"array\")||(x.type(e,t,i,o,r),x.range(e,t,i,o,r))}n(o)},object:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),void 0!==t&&x.type(e,t,i,o,r)}n(o)},enum:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();x.required(e,t,i,o,r),t&&x[_](e,t,i,o,r)}n(o)},pattern:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t,\"string\")&&!e.required)return n();x.required(e,t,i,o,r),c(t,\"string\")||x.pattern(e,t,i,o,r)}n(o)},date:function(e,t,n,i,r){var o=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(c(t)&&!e.required)return n();if(x.required(e,t,i,o,r),!c(t)){var a=void 0;a=\"number\"==typeof t?new Date(t):t,x.type(e,a,i,o,r),a&&x.range(e,a.getTime(),i,o,r)}}n(o)},url:w,hex:w,email:w,required:function(e,t,n,i,r){var o=[],s=Array.isArray(t)?\"array\":void 0===t?\"undefined\":a()(t);x.required(e,t,i,o,r,s),n(o)}};function S(){return{default:\"Validation error on field %s\",required:\"%s is required\",enum:\"%s must be one of %s\",whitespace:\"%s cannot be empty\",date:{format:\"%s date %s is invalid for format %s\",parse:\"%s date could not be parsed, %s is invalid \",invalid:\"%s date %s is invalid\"},types:{string:\"%s is not a %s\",method:\"%s is not a %s (function)\",array:\"%s is not an %s\",object:\"%s is not an %s\",number:\"%s is not a %s\",date:\"%s is not a %s\",boolean:\"%s is not a %s\",integer:\"%s is not an %s\",float:\"%s is not a %s\",regexp:\"%s is not a valid %s\",email:\"%s is not a valid %s\",url:\"%s is not a valid %s\",hex:\"%s is not a valid %s\"},string:{len:\"%s must be exactly %s characters\",min:\"%s must be at least %s characters\",max:\"%s cannot be longer than %s characters\",range:\"%s must be between %s and %s characters\"},number:{len:\"%s must equal %s\",min:\"%s cannot be less than %s\",max:\"%s cannot be greater than %s\",range:\"%s must be between %s and %s\"},array:{len:\"%s must be exactly %s in length\",min:\"%s cannot be less than %s in length\",max:\"%s cannot be greater than %s in length\",range:\"%s must be between %s and %s in length\"},pattern:{mismatch:\"%s value %s does not match pattern %s\"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var k=S();function T(e){this.rules=null,this._messages=k,this.define(e)}T.prototype={messages:function(e){return e&&(this._messages=p(S(),e)),this._messages},define:function(e){if(!e)throw new Error(\"Cannot configure a schema with no rules\");if(\"object\"!==(void 0===e?\"undefined\":a()(e))||Array.isArray(e))throw new Error(\"Rules must be an object\");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments[2],o=e,s=n,c=i;if(\"function\"==typeof s&&(c=s,s={}),this.rules&&0!==Object.keys(this.rules).length){if(s.messages){var h=this.messages();h===k&&(h=S()),p(h,s.messages),s.messages=h}else s.messages=this.messages();var g=void 0,m=void 0,v={};(s.keys||Object.keys(this.rules)).forEach(function(n){g=t.rules[n],m=o[n],g.forEach(function(i){var a=i;\"function\"==typeof a.transform&&(o===e&&(o=r()({},o)),m=o[n]=a.transform(m)),(a=\"function\"==typeof a?{validator:a}:r()({},a)).validator=t.getValidationMethod(a),a.field=n,a.fullField=a.fullField||n,a.type=t.getType(a),a.validator&&(v[n]=v[n]||[],v[n].push({rule:a,value:m,source:o,field:n}))})});var y={};d(v,s,function(e,t){var n=e.rule,i=!(\"object\"!==n.type&&\"array\"!==n.type||\"object\"!==a()(n.fields)&&\"object\"!==a()(n.defaultField));function o(e,t){return r()({},t,{fullField:n.fullField+\".\"+e})}function c(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(Array.isArray(a)||(a=[a]),a.length&&l(\"async-validator:\",a),a.length&&n.message&&(a=[].concat(n.message)),a=a.map(f(n)),s.first&&a.length)return y[n.field]=1,t(a);if(i){if(n.required&&!e.value)return a=n.message?[].concat(n.message).map(f(n)):s.error?[s.error(n,u(s.messages.required,n.field))]:[],t(a);var c={};if(n.defaultField)for(var h in e.value)e.value.hasOwnProperty(h)&&(c[h]=n.defaultField);for(var d in c=r()({},c,e.rule.fields))if(c.hasOwnProperty(d)){var p=Array.isArray(c[d])?c[d]:[c[d]];c[d]=p.map(o.bind(null,d))}var g=new T(c);g.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),g.validate(e.value,e.rule.options||s,function(e){t(e&&e.length?a.concat(e):e)})}else t(a)}i=i&&(n.required||!n.required&&e.value),n.field=e.field;var h=n.validator(n,e.value,c,e.source,s);h&&h.then&&h.then(function(){return c()},function(e){return c(e)})},function(e){!function(e){var t,n=void 0,i=void 0,r=[],o={};for(n=0;n<e.length;n++)t=e[n],Array.isArray(t)?r=r.concat.apply(r,t):r.push(t);if(r.length)for(n=0;n<r.length;n++)o[i=r[n].field]=o[i]||[],o[i].push(r[n]);else r=null,o=null;c(r,o)}(e)})}else c&&c()},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type=\"pattern\"),\"function\"!=typeof e.validator&&e.type&&!C.hasOwnProperty(e.type))throw new Error(u(\"Unknown rule type %s\",e.type));return e.type||\"string\"},getValidationMethod:function(e){if(\"function\"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf(\"message\");return-1!==n&&t.splice(n,1),1===t.length&&\"required\"===t[0]?C.required:C[this.getType(e)]||!1}},T.register=function(e,t){if(\"function\"!=typeof t)throw new Error(\"Cannot register a validator by type, validator is not a function\");C[e]=t},T.messages=k;t.default=T},k7nC:function(e,t){var n=[[[123.45165252685547,25.73527164402261],[123.49731445312499,25.73527164402261],[123.49731445312499,25.750734064600884],[123.45165252685547,25.750734064600884],[123.45165252685547,25.73527164402261]]];e.exports=function(e,t){\"china\"===e&&\"台湾\"===t.name&&t.geometries.push({type:\"polygon\",exterior:n[0]})}},k9Bd:function(e,t,n){var i=n(\"Icdr\");n(\"P7Q7\"),n(\"Y3kp\");var r=n(\"AjK0\"),o=n(\"1Nix\");i.registerVisual(r(\"effectScatter\",\"circle\")),i.registerLayout(o(\"effectScatter\"))},kK7q:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"8b51\"),a=n(\"3h1/\").calculateTextPosition,s=r.extendShape({type:\"triangle\",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(e,t){var n=t.cx,i=t.cy,r=t.width/2,o=t.height/2;e.moveTo(n,i-o),e.lineTo(n+r,i+o),e.lineTo(n-r,i+o),e.closePath()}}),l=r.extendShape({type:\"diamond\",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(e,t){var n=t.cx,i=t.cy,r=t.width/2,o=t.height/2;e.moveTo(n,i-o),e.lineTo(n+r,i),e.lineTo(n,i+o),e.lineTo(n-r,i),e.closePath()}}),u=r.extendShape({type:\"pin\",shape:{x:0,y:0,width:0,height:0},buildPath:function(e,t){var n=t.x,i=t.y,r=t.width/5*3,o=Math.max(r,t.height),a=r/2,s=a*a/(o-a),l=i-o+a+s,u=Math.asin(s/a),c=Math.cos(u)*a,h=Math.sin(u),d=Math.cos(u),f=.6*a,p=.7*a;e.moveTo(n-c,l+s),e.arc(n,l,a,Math.PI-u,2*Math.PI+u),e.bezierCurveTo(n+c-h*f,l+s+d*f,n,i-p,n,i),e.bezierCurveTo(n,i-p,n-c+h*f,l+s+d*f,n-c,l+s),e.closePath()}}),c=r.extendShape({type:\"arrow\",shape:{x:0,y:0,width:0,height:0},buildPath:function(e,t){var n=t.height,i=t.width,r=t.x,o=t.y,a=i/3*2;e.moveTo(r,o),e.lineTo(r+a,o+n),e.lineTo(r,o+n/4*3),e.lineTo(r-a,o+n),e.lineTo(r,o),e.closePath()}}),h={line:r.Line,rect:r.Rect,roundRect:r.Rect,square:r.Rect,circle:r.Circle,diamond:l,pin:u,arrow:c,triangle:s},d={line:function(e,t,n,i,r){r.x1=e,r.y1=t+i/2,r.x2=e+n,r.y2=t+i/2},rect:function(e,t,n,i,r){r.x=e,r.y=t,r.width=n,r.height=i},roundRect:function(e,t,n,i,r){r.x=e,r.y=t,r.width=n,r.height=i,r.r=Math.min(n,i)/4},square:function(e,t,n,i,r){var o=Math.min(n,i);r.x=e,r.y=t,r.width=o,r.height=o},circle:function(e,t,n,i,r){r.cx=e+n/2,r.cy=t+i/2,r.r=Math.min(n,i)/2},diamond:function(e,t,n,i,r){r.cx=e+n/2,r.cy=t+i/2,r.width=n,r.height=i},pin:function(e,t,n,i,r){r.x=e+n/2,r.y=t+i/2,r.width=n,r.height=i},arrow:function(e,t,n,i,r){r.x=e+n/2,r.y=t+i/2,r.width=n,r.height=i},triangle:function(e,t,n,i,r){r.cx=e+n/2,r.cy=t+i/2,r.width=n,r.height=i}},f={};i.each(h,function(e,t){f[t]=new e});var p=r.extendShape({type:\"symbol\",shape:{symbolType:\"\",x:0,y:0,width:0,height:0},calculateTextPosition:function(e,t,n){var i=a(e,t,n),r=this.shape;return r&&\"pin\"===r.symbolType&&\"inside\"===t.textPosition&&(i.y=n.y+.4*n.height),i},buildPath:function(e,t,n){var i=t.symbolType;if(\"none\"!==i){var r=f[i];r||(r=f[i=\"rect\"]),d[i](t.x,t.y,t.width,t.height,r.shape),r.buildPath(e,r.shape,n)}}});function g(e,t){if(\"image\"!==this.type){var n=this.style,i=this.shape;i&&\"line\"===i.symbolType?n.stroke=e:this.__isEmptyBrush?(n.stroke=e,n.fill=t||\"#fff\"):(n.fill&&(n.fill=e),n.stroke&&(n.stroke=e)),this.dirty(!1)}}t.createSymbol=function(e,t,n,i,a,s,l){var u,c=0===e.indexOf(\"empty\");return c&&(e=e.substr(5,1).toLowerCase()+e.substr(6)),(u=0===e.indexOf(\"image://\")?r.makeImage(e.slice(8),new o(t,n,i,a),l?\"center\":\"cover\"):0===e.indexOf(\"path://\")?r.makePath(e.slice(7),{},new o(t,n,i,a),l?\"center\":\"cover\"):new p({shape:{symbolType:e,x:t,y:n,width:i,height:a}})).__isEmptyBrush=c,u.setColor=g,u.setColor(s),u}},kM2E:function(e,t,n){var i=n(\"7KvD\"),r=n(\"FeBl\"),o=n(\"+ZMJ\"),a=n(\"hJx8\"),s=n(\"D2L2\"),l=function(e,t,n){var u,c,h,d=e&l.F,f=e&l.G,p=e&l.S,g=e&l.P,m=e&l.B,v=e&l.W,y=f?r:r[t]||(r[t]={}),b=y.prototype,x=f?i:p?i[t]:(i[t]||{}).prototype;for(u in f&&(n=t),n)(c=!d&&x&&void 0!==x[u])&&s(y,u)||(h=c?x[u]:n[u],y[u]=f&&\"function\"!=typeof x[u]?n[u]:m&&c?o(h,i):v&&x[u]==h?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(h):g&&\"function\"==typeof h?o(Function.call,h):h,g&&((y.virtual||(y.virtual={}))[u]=h,e&l.R&&b&&!b[u]&&a(b,u,h)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},kNJA:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=59)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},14:function(e,t){e.exports=n(\"fEB+\")},18:function(e,t){e.exports=n(\"EKTV\")},21:function(e,t){e.exports=n(\"E/in\")},26:function(e,t){e.exports=n(\"nvbp\")},3:function(e,t){e.exports=n(\"ylDJ\")},31:function(e,t){e.exports=n(\"zTCi\")},32:function(e,t){e.exports=n(\"hyEB\")},51:function(e,t){e.exports=n(\"RDoK\")},59:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this.$createElement,t=this._self._c||e;return t(\"div\",{class:[\"el-cascader-panel\",this.border&&\"is-bordered\"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,n){return t(\"cascader-menu\",{key:n,ref:\"menu\",refInFor:!0,attrs:{index:n,nodes:e}})}),1)};i._withStripped=!0;var r=n(26),o=n.n(r),a=n(14),s=n.n(a),l=n(18),u=n.n(l),c=n(51),h=n.n(c),d=n(3),f=function(e){return e.stopPropagation()},p={inject:[\"panel\"],components:{ElCheckbox:u.a,ElRadio:h.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,n=this.node,i=this.isDisabled,r=this.config,o=r.multiple;!r.checkStrictly&&i||n.loading||(r.lazy&&!n.loaded?t.lazyLoad(n,function(){var t=e.isLeaf;if(t||e.handleExpand(),o){var i=!!t&&n.checked;e.handleMultiCheckChange(i)}}):t.handleExpand(n))},handleCheckChange:function(){var e=this.panel,t=this.value,n=this.node;e.handleCheckChange(t),e.handleExpand(n)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,n=this.isChecked,i=this.config,r=i.checkStrictly;return i.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&n?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,n=this.isLeaf;return t.loading?this.renderLoadingIcon(e):n?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,n=this.config,i=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return n.checkStrictly&&(r.nativeOn.click=f),e(\"el-checkbox\",o()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:i}},r]))},renderRadio:function(e){var t=this.checkedValue,n=this.value,i=this.isDisabled;return Object(d.isEqual)(n,t)&&(n=t),e(\"el-radio\",{attrs:{value:t,label:n,disabled:i},on:{change:this.handleCheckChange},nativeOn:{click:f}},[e(\"span\")])},renderCheckIcon:function(e){return e(\"i\",{class:\"el-icon-check el-cascader-node__prefix\"})},renderLoadingIcon:function(e){return e(\"i\",{class:\"el-icon-loading el-cascader-node__postfix\"})},renderExpandIcon:function(e){return e(\"i\",{class:\"el-icon-arrow-right el-cascader-node__postfix\"})},renderContent:function(e){var t=this.panel,n=this.node,i=t.renderLabelFn;return e(\"span\",{class:\"el-cascader-node__label\"},[(i?i({node:n,data:n.data}):null)||n.label])}},render:function(e){var t=this,n=this.inActivePath,i=this.inCheckedPath,r=this.isChecked,a=this.isLeaf,s=this.isDisabled,l=this.config,u=this.nodeId,c=l.expandTrigger,h=l.checkStrictly,d=l.multiple,f=!h&&s,p={on:{}};return\"click\"===c?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit(\"expand\",e)},p.on.focus=function(e){t.handleExpand(),t.$emit(\"expand\",e)}),!a||s||h||d||(p.on.click=this.handleCheckChange),e(\"li\",o()([{attrs:{role:\"menuitem\",id:u,\"aria-expanded\":n,tabindex:f?null:-1},class:{\"el-cascader-node\":!0,\"is-selectable\":h,\"in-active-path\":n,\"in-checked-path\":i,\"is-active\":r,\"is-disabled\":f}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},g=n(0),m=Object(g.a)(p,void 0,void 0,!1,null,null,null);m.options.__file=\"packages/cascader-panel/src/cascader-node.vue\";var v=m.exports,y=n(6),b={name:\"ElCascaderMenu\",mixins:[n.n(y).a],inject:[\"panel\"],components:{ElScrollbar:s.a,CascaderNode:v},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(d.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return\"cascader-menu-\"+this.id+\"-\"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,n=this.hoverTimer,i=this.$refs.hoverZone;if(t&&i)if(t.contains(e.target)){clearTimeout(n);var r=this.$el.getBoundingClientRect().left,o=e.clientX-r,a=this.$el,s=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;i.innerHTML='\\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M'+o+\" \"+u+\" L\"+s+\" 0 V\"+u+' Z\" />\\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M'+o+\" \"+c+\" L\"+s+\" \"+l+\" V\"+c+' Z\" />\\n        '}else n||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML=\"\")},renderEmptyText:function(e){return e(\"div\",{class:\"el-cascader-menu__empty-text\"},[this.t(\"el.cascader.noData\")])},renderNodeList:function(e){var t=this.menuId,n=this.panel.isHoverMenu,i={on:{}};n&&(i.on.expand=this.handleExpand);var r=this.nodes.map(function(n,r){var a=n.hasChildren;return e(\"cascader-node\",o()([{key:n.uid,attrs:{node:n,\"node-id\":t+\"-\"+r,\"aria-haspopup\":a,\"aria-owns\":a?t:null}},i]))});return[].concat(r,[n?e(\"svg\",{ref:\"hoverZone\",class:\"el-cascader-menu__hover-zone\"}):null])}},render:function(e){var t=this.isEmpty,n=this.menuId,i={nativeOn:{}};return this.panel.isHoverMenu&&(i.nativeOn.mousemove=this.handleMouseMove),e(\"el-scrollbar\",o()([{attrs:{tag:\"ul\",role:\"menu\",id:n,\"wrap-class\":\"el-cascader-menu__wrap\",\"view-class\":{\"el-cascader-menu__list\":!0,\"is-empty\":t}},class:\"el-cascader-menu\"},i]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},x=Object(g.a)(b,void 0,void 0,!1,null,null,null);x.options.__file=\"packages/cascader-panel/src/cascader-menu.vue\";var _=x.exports,w=n(21),C=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();var S=0,k=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.data=t,this.config=n,this.parent=i||null,this.level=this.parent?this.parent.level+1:1,this.uid=S++,this.initState(),this.initChildren()}return e.prototype.initState=function(){var e=this.config,t=e.value,n=e.label;this.value=this.data[t],this.label=this.data[n],this.pathNodes=this.calculatePathNodes(),this.path=this.pathNodes.map(function(e){return e.value}),this.pathLabels=this.pathNodes.map(function(e){return e.label}),this.loading=!1,this.loaded=!1},e.prototype.initChildren=function(){var t=this,n=this.config,i=n.children,r=this.data[i];this.hasChildren=Array.isArray(r),this.children=(r||[]).map(function(i){return new e(i,n,t)})},e.prototype.calculatePathNodes=function(){for(var e=[this],t=this.parent;t;)e.unshift(t),t=t.parent;return e},e.prototype.getPath=function(){return this.path},e.prototype.getValue=function(){return this.value},e.prototype.getValueByOption=function(){return this.config.emitPath?this.getPath():this.getValue()},e.prototype.getText=function(e,t){return e?this.pathLabels.join(t):this.label},e.prototype.isSameNode=function(e){var t=this.getValueByOption();return this.config.multiple&&Array.isArray(e)?e.some(function(e){return Object(d.isEqual)(e,t)}):Object(d.isEqual)(e,t)},e.prototype.broadcast=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=\"onParent\"+Object(d.capitalize)(e);this.children.forEach(function(t){t&&(t.broadcast.apply(t,[e].concat(n)),t[r]&&t[r].apply(t,n))})},e.prototype.emit=function(e){var t=this.parent,n=\"onChild\"+Object(d.capitalize)(e);if(t){for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];t[n]&&t[n].apply(t,r),t.emit.apply(t,[e].concat(r))}},e.prototype.onParentCheck=function(e){this.isDisabled||this.setCheckState(e)},e.prototype.onChildCheck=function(){var e=this.children.filter(function(e){return!e.isDisabled}),t=!!e.length&&e.every(function(e){return e.checked});this.setCheckState(t)},e.prototype.setCheckState=function(e){var t=this.children.length,n=this.children.reduce(function(e,t){return e+(t.checked?1:t.indeterminate?.5:0)},0);this.checked=e,this.indeterminate=n!==t&&n>0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),n=this.isSameNode(e,t);this.doCheck(n)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast(\"check\",e),this.setCheckState(e),this.emit(\"check\")))},C(e,[{key:\"isDisabled\",get:function(){var e=this.data,t=this.parent,n=this.config,i=n.disabled,r=n.checkStrictly;return e[i]||!r&&t&&t.isDisabled}},{key:\"isLeaf\",get:function(){var e=this.data,t=this.loaded,n=this.hasChildren,i=this.children,r=this.config,o=r.lazy,a=r.leaf;if(o){var s=Object(w.isDef)(e[a])?e[a]:!!t&&!i.length;return this.hasChildren=!s,s}return!n}}]),e}();var T=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.config=n,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(d.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new k(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var n=new k(e,this.config,t);(t?t.children:this.nodes).push(n)},e.prototype.appendNodes=function(e,t){var n=this;(e=Object(d.coerceTruthyValueToArray)(e)).forEach(function(e){return n.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e?this.leafNodes:this.flattedNodes;return t?n:function e(t,n){return t.reduce(function(t,i){return i.isLeaf?t.push(i):(!n&&t.push(i),t=t.concat(e(i.children,n))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return Object(d.valueEquals)(t.path,e)||t.value===e});return t&&t.length?t[0]:null}return null},e}(),M=n(9),D=n.n(M),A=n(32),I=n.n(A),O=n(31),E=n.n(O),L=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},P=I.a.keys,N={expandTrigger:\"click\",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:d.noop,value:\"value\",label:\"label\",children:\"children\",leaf:\"leaf\",disabled:\"disabled\",hoverThreshold:500},R=function(e){return!e.getAttribute(\"aria-owns\")},B=function(e,t){var n=e.parentNode;if(n){var i=n.querySelectorAll('.el-cascader-node[tabindex=\"-1\"]');return i[Array.prototype.indexOf.call(i,e)+t]||null}return null},z=function(e,t){if(e){var n=e.id.split(\"-\");return Number(n[n.length-2])}},F=function(e){e&&(e.focus(),!R(e)&&e.click())},$={name:\"ElCascaderPanel\",components:{CascaderMenu:_},props:{value:{},options:Array,props:Object,border:{type:Boolean,default:!0},renderLabel:Function},provide:function(){return{panel:this}},data:function(){return{checkedValue:null,checkedNodePaths:[],store:[],menus:[],activePath:[],loadCount:0}},computed:{config:function(){return D()(L({},N),this.props||{})},multiple:function(){return this.config.multiple},checkStrictly:function(){return this.config.checkStrictly},leafOnly:function(){return!this.checkStrictly},isHoverMenu:function(){return\"hover\"===this.config.expandTrigger},renderLabelFn:function(){return this.renderLabel||this.$scopedSlots.default}},watch:{options:{handler:function(){this.initStore()},immediate:!0,deep:!0},value:function(){this.syncCheckedValue(),this.checkStrictly&&this.calculateCheckedNodePaths()},checkedValue:function(e){Object(d.isEqual)(e,this.value)||(this.checkStrictly&&this.calculateCheckedNodePaths(),this.$emit(\"input\",e),this.$emit(\"change\",e))}},mounted:function(){Object(d.isEmpty)(this.value)||this.syncCheckedValue()},methods:{initStore:function(){var e=this.config,t=this.options;e.lazy&&Object(d.isEmpty)(t)?this.lazyLoad():(this.store=new T(t,e),this.menus=[this.store.getNodes()],this.syncMenuState())},syncCheckedValue:function(){var e=this.value,t=this.checkedValue;Object(d.isEqual)(e,t)||(this.checkedValue=e,this.syncMenuState())},syncMenuState:function(){var e=this.multiple,t=this.checkStrictly;this.syncActivePath(),e&&this.syncMultiCheckState(),t&&this.calculateCheckedNodePaths(),this.$nextTick(this.scrollIntoView)},syncMultiCheckState:function(){var e=this;this.getFlattedNodes(this.leafOnly).forEach(function(t){t.syncCheckState(e.checkedValue)})},syncActivePath:function(){var e=this,t=this.store,n=this.multiple,i=this.activePath,r=this.checkedValue;if(Object(d.isEmpty)(i))if(Object(d.isEmpty)(r))this.activePath=[],this.menus=[t.getNodes()];else{var o=n?r[0]:r,a=((this.getNodeByValue(o)||{}).pathNodes||[]).slice(0,-1);this.expandNodes(a)}else{var s=i.map(function(t){return e.getNodeByValue(t.getValue())});this.expandNodes(s)}},expandNodes:function(e){var t=this;e.forEach(function(e){return t.handleExpand(e,!0)})},calculateCheckedNodePaths:function(){var e=this,t=this.checkedValue,n=this.multiple?Object(d.coerceTruthyValueToArray)(t):[t];this.checkedNodePaths=n.map(function(t){var n=e.getNodeByValue(t);return n?n.pathNodes:[]})},handleKeyDown:function(e){var t=e.target;switch(e.keyCode){case P.up:var n=B(t,-1);F(n);break;case P.down:var i=B(t,1);F(i);break;case P.left:var r=this.$refs.menu[z(t)-1];if(r){var o=r.$el.querySelector('.el-cascader-node[aria-expanded=\"true\"]');F(o)}break;case P.right:var a=this.$refs.menu[z(t)+1];if(a){var s=a.$el.querySelector('.el-cascader-node[tabindex=\"-1\"]');F(s)}break;case P.enter:!function(e){if(e){var t=e.querySelector(\"input\");t?t.click():R(e)&&e.click()}}(t);break;case P.esc:case P.tab:this.$emit(\"close\");break;default:return}},handleExpand:function(e,t){var n=this.activePath,i=e.level,r=n.slice(0,i-1),o=this.menus.slice(0,i);if(e.isLeaf||(r.push(e),o.push(e.children)),this.activePath=r,this.menus=o,!t){var a=r.map(function(e){return e.getValue()}),s=n.map(function(e){return e.getValue()});Object(d.valueEquals)(a,s)||(this.$emit(\"active-item-change\",a),this.$emit(\"expand-change\",a))}},handleCheckChange:function(e){this.checkedValue=e},lazyLoad:function(e,t){var n=this,i=this.config;e||(e=e||{root:!0,level:0},this.store=new T([],i),this.menus=[this.store.getNodes()]),e.loading=!0;i.lazyLoad(e,function(i){var r=e.root?null:e;if(i&&i.length&&n.store.appendNodes(i,r),e.loading=!1,e.loaded=!0,Array.isArray(n.checkedValue)){var o=n.checkedValue[n.loadCount++],a=n.config.value,s=n.config.leaf;if(Array.isArray(i)&&i.filter(function(e){return e[a]===o}).length>0){var l=n.store.getNodeByValue(o);l.data[s]||n.lazyLoad(l,function(){n.handleExpand(l)}),n.loadCount===n.checkedValue.length&&n.$parent.computePresentText()}}t&&t(i)})},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map(function(e){return e.getValueByOption()})},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach(function(e){var t=e.$el;if(t){var n=t.querySelector(\".el-scrollbar__wrap\"),i=t.querySelector(\".el-cascader-node.is-active\")||t.querySelector(\".el-cascader-node.in-active-path\");E()(n,i)}})},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter(function(e){return e.checked}):Object(d.isEmpty)(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,n=e.multiple,i=e.emitPath;n?(this.getCheckedNodes(t).filter(function(e){return!e.isDisabled}).forEach(function(e){return e.doCheck(!1)}),this.calculateMultiCheckedValue()):this.checkedValue=i?[]:null}}},V=Object(g.a)($,i,[],!1,null,null,null);V.options.__file=\"packages/cascader-panel/src/cascader-panel.vue\";var j=V.exports;j.install=function(e){e.component(j.name,j)};t.default=j},6:function(e,t){e.exports=n(\"y+7x\")},9:function(e,t){e.exports=n(\"jmaC\")}})},kQD9:function(e,t,n){var i=n(\"/gxq\"),r={updateSelectedMap:function(e){this._targetList=i.isArray(e)?e.slice():[],this._selectTargetMap=i.reduce(e||[],function(e,t){return e.set(t.name,t),e},i.createHashMap())},select:function(e,t){var n=null!=t?this._targetList[t]:this._selectTargetMap.get(e);\"single\"===this.get(\"selectedMode\")&&this._selectTargetMap.each(function(e){e.selected=!1}),n&&(n.selected=!0)},unSelect:function(e,t){var n=null!=t?this._targetList[t]:this._selectTargetMap.get(e);n&&(n.selected=!1)},toggleSelected:function(e,t){var n=null!=t?this._targetList[t]:this._selectTargetMap.get(e);if(null!=n)return this[n.selected?\"unSelect\":\"select\"](e,t),n.selected},isSelected:function(e,t){var n=null!=t?this._targetList[t]:this._selectTargetMap.get(e);return n&&n.selected}};e.exports=r},kdOt:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"vXqC\"),r=i.makeInner,o=i.getDataItemValue,a=n(\"/gxq\"),s=a.createHashMap,l=a.each,u=a.map,c=a.isArray,h=a.isString,d=a.isObject,f=a.isTypedArray,p=a.isArrayLike,g=a.extend,m=(a.assert,n(\"rrAD\")),v=n(\"+2Ke\"),y=v.SOURCE_FORMAT_ORIGINAL,b=v.SOURCE_FORMAT_ARRAY_ROWS,x=v.SOURCE_FORMAT_OBJECT_ROWS,_=v.SOURCE_FORMAT_KEYED_COLUMNS,w=v.SOURCE_FORMAT_UNKNOWN,C=v.SOURCE_FORMAT_TYPED_ARRAY,S=v.SERIES_LAYOUT_BY_ROW,k={Must:1,Might:2,Not:3},T=r();function M(e){if(e){var t=s();return u(e,function(e,n){if(null==(e=g({},d(e)?e:{name:e})).name)return e;e.name+=\"\",null==e.displayName&&(e.displayName=e.name);var i=t.get(e.name);return i?e.name+=\"-\"+i.count++:t.set(e.name,{count:1}),e})}}function D(e,t,n,i){if(null==i&&(i=1/0),t===S)for(var r=0;r<n.length&&r<i;r++)e(n[r]?n[r][0]:null,r);else{var o=n[0]||[];for(r=0;r<o.length&&r<i;r++)e(o[r],r)}}function A(e){var t=e.option;if(!t.data)return e.ecModel.getComponent(\"dataset\",t.datasetIndex||0)}function I(e,t,n,i,r,a){var s,l,u;if(f(e))return k.Not;if(i){var p=i[a];d(p)?(l=p.name,u=p.type):h(p)&&(l=p)}if(null!=u)return\"ordinal\"===u?k.Must:k.Not;if(t===b)if(n===S){for(var g=e[a],m=0;m<(g||[]).length&&m<5;m++)if(null!=(s=T(g[r+m])))return s}else for(m=0;m<e.length&&m<5;m++){var v=e[r+m];if(v&&null!=(s=T(v[a])))return s}else if(t===x){if(!l)return k.Not;for(m=0;m<e.length&&m<5;m++){if((w=e[m])&&null!=(s=T(w[l])))return s}}else if(t===_){if(!l)return k.Not;if(!(g=e[l])||f(g))return k.Not;for(m=0;m<g.length&&m<5;m++)if(null!=(s=T(g[m])))return s}else if(t===y)for(m=0;m<e.length&&m<5;m++){var w=e[m],C=o(w);if(!c(C))return k.Not;if(null!=(s=T(C[a])))return s}function T(e){var t=h(e);return null!=e&&isFinite(e)&&\"\"!==e?t?k.Might:k.Not:t&&\"-\"!==e?k.Must:void 0}return k.Not}t.BE_ORDINAL=k,t.detectSourceFormat=function(e){var t=e.option.source,n=w;if(f(t))n=C;else if(c(t)){0===t.length&&(n=b);for(var i=0,r=t.length;i<r;i++){var o=t[i];if(null!=o){if(c(o)){n=b;break}if(d(o)){n=x;break}}}}else if(d(t)){for(var a in t)if(t.hasOwnProperty(a)&&p(t[a])){n=_;break}}else if(null!=t)throw new Error(\"Invalid data\");T(e).sourceFormat=n},t.getSource=function(e){return T(e).source},t.resetSourceDefaulter=function(e){T(e).datasetMap=s()},t.prepareSource=function(e){var t=e.option,n=t.data,i=f(n)?C:y,r=!1,a=t.seriesLayoutBy,s=t.sourceHeader,u=t.dimensions,d=A(e);if(d){var p=d.option;n=p.source,i=T(d).sourceFormat,r=!0,a=a||p.seriesLayoutBy,null==s&&(s=p.sourceHeader),u=u||p.dimensions}var g=function(e,t,n,i,r){if(!e)return{dimensionsDefine:M(r)};var a,s;if(t===b)\"auto\"===i||null==i?D(function(e){null!=e&&\"-\"!==e&&(h(e)?null==s&&(s=1):s=0)},n,e,10):s=i?1:0,r||1!==s||(r=[],D(function(e,t){r[t]=null!=e?e:\"\"},n,e)),a=r?r.length:n===S?e.length:e[0]?e[0].length:null;else if(t===x)r||(r=function(e){for(var t,n=0;n<e.length&&!(t=e[n++]););if(t){var i=[];return l(t,function(e,t){i.push(t)}),i}}(e));else if(t===_)r||(r=[],l(e,function(e,t){r.push(t)}));else if(t===y){var u=o(e[0]);a=c(u)&&u.length||1}return{startIndex:s,dimensionsDefine:M(r),dimensionsDetectCount:a}}(n,i,a,s,u);T(e).source=new m({data:n,fromDataset:r,seriesLayoutBy:a,sourceFormat:i,dimensionsDefine:g.dimensionsDefine,startIndex:g.startIndex,dimensionsDetectCount:g.dimensionsDetectCount,encodeDefine:t.encode})},t.makeSeriesEncodeForAxisCoordSys=function(e,t,n){var i={},r=A(t);if(!r||!e)return i;var o,a,s=[],u=[],c=t.ecModel,h=T(c).datasetMap,f=r.uid+\"_\"+n.seriesLayoutBy;e=e.slice(),l(e,function(t,n){!d(t)&&(e[n]={name:t}),\"ordinal\"===t.type&&null==o&&(o=n,a=m(e[n])),i[t.name]=[]});var p=h.get(f)||h.set(f,{categoryWayDim:a,valueWayDim:0});function g(e,t,n){for(var i=0;i<n;i++)e.push(t+i)}function m(e){var t=e.dimsDef;return t?t.length:1}return l(e,function(e,t){var n=e.name,r=m(e);if(null==o){var a=p.valueWayDim;g(i[n],a,r),g(u,a,r),p.valueWayDim+=r}else o===t?(g(i[n],0,r),g(s,0,r)):(a=p.categoryWayDim,g(i[n],a,r),g(u,a,r),p.categoryWayDim+=r)}),s.length&&(i.itemName=s),u.length&&(i.seriesName=u),i},t.makeSeriesEncodeForNameBased=function(e,t,n){var i={};if(!A(e))return i;var r,o=t.sourceFormat,a=t.dimensionsDefine;o!==x&&o!==_||l(a,function(e,t){\"name\"===(d(e)?e.name:e)&&(r=t)});var s=function(){for(var e={},i={},s=[],l=0,u=Math.min(5,n);l<u;l++){var c=I(t.data,o,t.seriesLayoutBy,a,t.startIndex,l);s.push(c);var h=c===k.Not;if(h&&null==e.v&&l!==r&&(e.v=l),(null==e.n||e.n===e.v||!h&&s[e.n]===k.Not)&&(e.n=l),d(e)&&s[e.n]!==k.Not)return e;h||(c===k.Might&&null==i.v&&l!==r&&(i.v=l),null!=i.n&&i.n!==i.v||(i.n=l))}function d(e){return null!=e.v&&null!=e.n}return d(e)?e:d(i)?i:null}();if(s){i.value=s.v;var u=null!=r?r:s.n;i.itemName=[u],i.seriesName=[u]}return i},t.guessOrdinal=function(e,t){return I(e.data,e.sourceFormat,e.seriesLayoutBy,e.dimensionsDefine,e.startIndex,t)}},l2wH:function(e,t,n){n(\"cuL/\"),n(\"sJ4e\"),n(\"ilLo\"),n(\"r9WW\"),n(\"WO3U\"),n(\"b/SY\"),n(\"KAfT\")},l4Op:function(e,t){e.exports=function(e){return{seriesType:e,reset:function(e,t){var n=t.findComponents({mainType:\"legend\"});if(n&&n.length){var i=e.getData();i.filterSelf(function(e){for(var t=i.getName(e),r=0;r<n.length;r++)if(!n[r].isSelected(t))return!1;return!0})}}}}},lFkc:function(e,t,n){\"use strict\";var i=!(\"undefined\"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:i,canUseWorkers:\"undefined\"!=typeof Worker,canUseEventListeners:i&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:i&&!!window.screen,isInWorker:!i};e.exports=r},lOnJ:function(e,t){e.exports=function(e){if(\"function\"!=typeof e)throw TypeError(e+\" is not a function!\");return e}},lVde:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"vjPX\"),a=n(\"0sHC\"),s=[\"axisLine\",\"axisTickLabel\",\"axisName\"],l=i.extendComponentView({type:\"radar\",render:function(e,t,n){this.group.removeAll(),this._buildAxes(e),this._buildSplitLineAndArea(e)},_buildAxes:function(e){var t=e.coordinateSystem,n=t.getIndicatorAxes(),i=r.map(n,function(e){return new o(e.model,{position:[t.cx,t.cy],rotation:e.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})});r.each(i,function(e){r.each(s,e.add,e),this.group.add(e.getGroup())},this)},_buildSplitLineAndArea:function(e){var t=e.coordinateSystem,n=t.getIndicatorAxes();if(n.length){var i=e.get(\"shape\"),o=e.getModel(\"splitLine\"),s=e.getModel(\"splitArea\"),l=o.getModel(\"lineStyle\"),u=s.getModel(\"areaStyle\"),c=o.get(\"show\"),h=s.get(\"show\"),d=l.get(\"color\"),f=u.get(\"color\");d=r.isArray(d)?d:[d],f=r.isArray(f)?f:[f];var p=[],g=[];if(\"circle\"===i)for(var m=n[0].getTicksCoords(),v=t.cx,y=t.cy,b=0;b<m.length;b++){if(c)p[M(p,d,b)].push(new a.Circle({shape:{cx:v,cy:y,r:m[b].coord}}));if(h&&b<m.length-1)g[M(g,f,b)].push(new a.Ring({shape:{cx:v,cy:y,r0:m[b].coord,r:m[b+1].coord}}))}else{var x,_=r.map(n,function(e,n){var i=e.getTicksCoords();return x=null==x?i.length-1:Math.min(i.length-1,x),r.map(i,function(e){return t.coordToPoint(e.coord,n)})}),w=[];for(b=0;b<=x;b++){for(var C=[],S=0;S<n.length;S++)C.push(_[S][b]);if(C[0]&&C.push(C[0].slice()),c)p[M(p,d,b)].push(new a.Polyline({shape:{points:C}}));if(h&&w)g[M(g,f,b-1)].push(new a.Polygon({shape:{points:C.concat(w)}}));w=C.slice().reverse()}}var k=l.getLineStyle(),T=u.getAreaStyle();r.each(g,function(e,t){this.group.add(a.mergePath(e,{style:r.defaults({stroke:\"none\",fill:f[t%f.length]},T),silent:!0}))},this),r.each(p,function(e,t){this.group.add(a.mergePath(e,{style:r.defaults({fill:\"none\",stroke:d[t%d.length]},k),silent:!0}))},this)}function M(e,t,n){var i=n%t.length;return e[i]=e[i]||[],i}}});e.exports=l},lj6Z:function(e,t,n){var i=n(\"/gxq\"),r=n(\"C7PF\"),o=n(\"TIfe\"),a=n(\"qjvV\"),s=n(\"UAiw\"),l=n(\"JMnz\"),u=\"silent\";function c(){s.stop(this.event)}function h(){}h.prototype.dispose=function(){};var d=[\"click\",\"dblclick\",\"mousewheel\",\"mouseout\",\"mouseup\",\"mousedown\",\"mousemove\",\"contextmenu\"],f=function(e,t,n,i){a.call(this),this.storage=e,this.painter=t,this.painterRoot=i,n=n||new h,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,o.call(this),this.setHandlerProxy(n)};function p(e,t,n){if(e[e.rectHover?\"rectContain\":\"contain\"](t,n)){for(var i,r=e;r;){if(r.clipPath&&!r.clipPath.contain(t,n))return!1;r.silent&&(i=!0),r=r.parent}return!i||u}return!1}function g(e,t,n){var i=e.painter;return t<0||t>i.getWidth()||n<0||n>i.getHeight()}f.prototype={constructor:f,setHandlerProxy:function(e){this.proxy&&this.proxy.dispose(),e&&(i.each(d,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},mousemove:function(e){var t=e.zrX,n=e.zrY,i=g(this,t,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?{x:t,y:n}:this.findHover(t,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:\"default\"),o&&s!==o&&this.dispatchToElement(r,\"mouseout\",e),this.dispatchToElement(a,\"mousemove\",e),s&&s!==o&&this.dispatchToElement(a,\"mouseover\",e)},mouseout:function(e){var t=e.zrEventControl,n=e.zrIsToLocalDOM;\"only_globalout\"!==t&&this.dispatchToElement(this._hovered,\"mouseout\",e),\"no_globalout\"!==t&&!n&&this.trigger(\"globalout\",{type:\"globalout\",event:e})},resize:function(e){this._hovered={}},dispatch:function(e,t){var n=this[e];n&&n.call(this,t)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(e){var t=this.proxy;t.setCursor&&t.setCursor(e)},dispatchToElement:function(e,t,n){var i=(e=e||{}).target;if(!i||!i.silent){for(var r=\"on\"+t,o=function(e,t,n){return{type:e,event:n,target:t.target,topTarget:t.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:c}}(t,e,n);i&&(i[r]&&(o.cancelBubble=i[r].call(i,o)),i.trigger(t,o),i=i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(t,o),this.painter&&this.painter.eachOtherLayer(function(e){\"function\"==typeof e[r]&&e[r].call(e,o),e.trigger&&e.trigger(t,o)}))}},findHover:function(e,t,n){for(var i=this.storage.getDisplayList(),r={x:e,y:t},o=i.length-1;o>=0;o--){var a;if(i[o]!==n&&!i[o].ignore&&(a=p(i[o],e,t))&&(!r.topTarget&&(r.topTarget=i[o]),a!==u)){r.target=i[o];break}}return r},processGesture:function(e,t){this._gestureMgr||(this._gestureMgr=new l);var n=this._gestureMgr;\"start\"===t&&n.clear();var i=n.recognize(e,this.findHover(e.zrX,e.zrY,null).target,this.proxy.dom);if(\"end\"===t&&n.clear(),i){var r=i.type;e.gestureEvent=r,this.dispatchToElement({target:i.target},r,i.event)}}},i.each([\"click\",\"mousedown\",\"mouseup\",\"mousewheel\",\"dblclick\",\"contextmenu\"],function(e){f.prototype[e]=function(t){var n,i,o=t.zrX,a=t.zrY,s=g(this,o,a);if(\"mouseup\"===e&&s||(i=(n=this.findHover(o,a)).target),\"mousedown\"===e)this._downEl=i,this._downPoint=[t.zrX,t.zrY],this._upEl=i;else if(\"mouseup\"===e)this._upEl=i;else if(\"click\"===e){if(this._downEl!==this._upEl||!this._downPoint||r.dist(this._downPoint,[t.zrX,t.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,e,t)}}),i.mixin(f,a),i.mixin(f,o);var m=f;e.exports=m},lktj:function(e,t,n){var i=n(\"Ibhu\"),r=n(\"xnc9\");e.exports=Object.keys||function(e){return i(e,r)}},lwXq:function(e,t,n){var i=n(\"/gxq\");function r(e){return!isNaN(e[0])&&!isNaN(e[1])}function o(e){return[e.cx,e.cy]}e.exports=function(e){e.eachSeriesByType(\"radar\",function(e){var t=e.getData(),n=[],a=e.coordinateSystem;if(a){var s=a.getIndicatorAxes();i.each(s,function(e,i){t.each(t.mapDimension(s[i].dim),function(e,t){n[t]=n[t]||[];var s=a.dataToPoint(e,i);n[t][i]=r(s)?s:o(a)})}),t.each(function(e){var s=i.find(n[e],function(e){return r(e)})||o(a);n[e].push(s.slice()),t.setItemLayout(e,n[e])})}})}},\"m/6y\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\").parsePercent,o=n(\"qVJQ\").isDimensionStacked,a=n(\"CqCN\"),s=\"__ec_stack_\",l=\"undefined\"!=typeof Float32Array?Float32Array:Array;function u(e){return e.get(\"stack\")||s+e.seriesIndex}function c(e){return e.dim+e.index}function h(e,t){var n=[];return t.eachSeriesByType(e,function(e){m(e)&&!v(e)&&n.push(e)}),n}function d(e){var t=function(e){var t={};i.each(e,function(e){var n=e.coordinateSystem.getBaseAxis();if(\"time\"===n.type||\"value\"===n.type)for(var i=e.getData(),r=n.dim+\"_\"+n.index,o=i.mapDimension(n.dim),a=0,s=i.count();a<s;++a){var l=i.get(o,a);t[r]?t[r].push(l):t[r]=[l]}});var n=[];for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(o){o.sort(function(e,t){return e-t});for(var a=null,s=1;s<o.length;++s){var l=o[s]-o[s-1];l>0&&(a=null===a?l:Math.min(a,l))}n[r]=a}}return n}(e),n=[];return i.each(e,function(e){var i,o=e.coordinateSystem.getBaseAxis(),a=o.getExtent();if(\"category\"===o.type)i=o.getBandWidth();else if(\"value\"===o.type||\"time\"===o.type){var s=o.dim+\"_\"+o.index,l=t[s],h=Math.abs(a[1]-a[0]),d=o.scale.getExtent(),f=Math.abs(d[1]-d[0]);i=l?h/f*l:h}else{var p=e.getData();i=Math.abs(a[1]-a[0])/p.count()}var g=r(e.get(\"barWidth\"),i),m=r(e.get(\"barMaxWidth\"),i),v=r(e.get(\"barMinWidth\")||1,i),y=e.get(\"barGap\"),b=e.get(\"barCategoryGap\");n.push({bandWidth:i,barWidth:g,barMaxWidth:m,barMinWidth:v,barGap:y,barCategoryGap:b,axisKey:c(o),stackId:u(e)})}),f(n)}function f(e){var t={};i.each(e,function(e,n){var i=e.axisKey,r=e.bandWidth,o=t[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:\"20%\",gap:\"30%\",stacks:{}},a=o.stacks;t[i]=o;var s=e.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=e.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=e.barMaxWidth;u&&(a[s].maxWidth=u);var c=e.barMinWidth;c&&(a[s].minWidth=c);var h=e.barGap;null!=h&&(o.gap=h);var d=e.barCategoryGap;null!=d&&(o.categoryGap=d)});var n={};return i.each(t,function(e,t){n[t]={};var o=e.stacks,a=e.bandWidth,s=r(e.categoryGap,a),l=r(e.gap,1),u=e.remainedWidth,c=e.autoWidthCount,h=(u-s)/(c+(c-1)*l);h=Math.max(h,0),i.each(o,function(e){var t=e.maxWidth,n=e.minWidth;if(e.width){i=e.width;t&&(i=Math.min(i,t)),n&&(i=Math.max(i,n)),e.width=i,u-=i+l*i,c--}else{var i=h;t&&t<i&&(i=Math.min(t,u)),n&&n>i&&(i=n),i!==h&&(e.width=i,u-=i+l*i,c--)}}),h=(u-s)/(c+(c-1)*l),h=Math.max(h,0);var d,f=0;i.each(o,function(e,t){e.width||(e.width=h),d=e,f+=e.width*(1+l)}),d&&(f-=d.width*l);var p=-f/2;i.each(o,function(e,i){n[t][i]=n[t][i]||{bandWidth:a,offset:p,width:e.width},p+=e.width*(1+l)})}),n}function p(e,t,n){if(e&&t){var i=e[c(t)];return null!=i&&null!=n&&(i=i[u(n)]),i}}var g={seriesType:\"bar\",plan:a(),reset:function(e){if(m(e)&&v(e)){var t=e.getData(),n=e.coordinateSystem,i=n.grid.getRect(),r=n.getBaseAxis(),o=n.getOtherAxis(r),a=t.mapDimension(o.dim),s=t.mapDimension(r.dim),u=o.isHorizontal(),c=u?0:1,h=p(d([e]),r,e).width;return h>.5||(h=.5),{progress:function(e,t){var d,f=e.count,p=new l(2*f),g=new l(2*f),m=new l(f),v=[],b=[],x=0,_=0;for(;null!=(d=e.next());)b[c]=t.get(a,d),b[1-c]=t.get(s,d),v=n.dataToPoint(b,null,v),g[x]=u?i.x+i.width:v[0],p[x++]=v[0],g[x]=u?v[1]:i.y+i.height,p[x++]=v[1],m[_++]=d;t.setLayout({largePoints:p,largeDataIndices:m,largeBackgroundPoints:g,barWidth:h,valueAxisStart:y(r,o,!1),backgroundStart:u?i.x:i.y,valueAxisHorizontal:u})}}}}};function m(e){return e.coordinateSystem&&\"cartesian2d\"===e.coordinateSystem.type}function v(e){return e.pipelineContext&&e.pipelineContext.large}function y(e,t,n){return t.toGlobalCoord(t.dataToCoord(\"log\"===t.type?1:0))}t.getLayoutOnAxis=function(e){var t=[],n=e.axis;if(\"category\"===n.type){for(var r=n.getBandWidth(),o=0;o<e.count;o++)t.push(i.defaults({bandWidth:r,axisKey:\"axis0\",stackId:s+o},e));var a=f(t),l=[];for(o=0;o<e.count;o++){var u=a.axis0[s+o];u.offsetCenter=u.offset+u.width/2,l.push(u)}return l}},t.prepareLayoutBarSeries=h,t.makeColumnLayout=d,t.retrieveColumnLayout=p,t.layout=function(e,t){var n=h(e,t),r=d(n),a={},s={};i.each(n,function(e){var t=e.getData(),n=e.coordinateSystem,i=n.getBaseAxis(),l=u(e),h=r[c(i)][l],d=h.offset,f=h.width,p=n.getOtherAxis(i),g=e.get(\"barMinHeight\")||0;a[l]=a[l]||[],s[l]=s[l]||[],t.setLayout({bandWidth:h.bandWidth,offset:d,size:f});for(var m=t.mapDimension(p.dim),v=t.mapDimension(i.dim),b=o(t,m),x=p.isHorizontal(),_=y(0,p),w=0,C=t.count();w<C;w++){var S,k,T,M,D,A=t.get(m,w),I=t.get(v,w),O=A>=0?\"p\":\"n\",E=_;b&&(a[l][I]||(a[l][I]={p:_,n:_}),E=a[l][I][O]),x?(S=E,k=(D=n.dataToPoint([A,I]))[1]+d,T=D[0]-_,M=f,Math.abs(T)<g&&(T=(T<0?-1:1)*g),isNaN(T)||b&&(a[l][I][O]+=T)):(S=(D=n.dataToPoint([I,A]))[0]+d,k=E,T=f,M=D[1]-_,Math.abs(M)<g&&(M=(M<=0?-1:1)*g),isNaN(M)||b&&(a[l][I][O]+=M)),t.setItemLayout(w,{x:S,y:k,width:T,height:M})}},this)},t.largeLayout=g},m5oG:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\"),a=n(\"kK7q\").createSymbol,s=n(\"wWR3\"),l=s.parsePercent,u=s.isNumeric,c=n(\"dzlV\").setLabel,h=[\"itemStyle\",\"borderWidth\"],d=[{xy:\"x\",wh:\"width\",index:0,posDesc:[\"left\",\"right\"]},{xy:\"y\",wh:\"height\",index:1,posDesc:[\"top\",\"bottom\"]}],f=new o.Circle;function p(e,t,n,i){var o=e.getItemLayout(t),a=n.get(\"symbolRepeat\"),s=n.get(\"symbolClip\"),c=n.get(\"symbolPosition\")||\"start\",d=(n.get(\"symbolRotate\")||0)*Math.PI/180||0,p=n.get(\"symbolPatternSize\")||2,m=n.isAnimationEnabled(),v={dataIndex:t,layout:o,itemModel:n,symbolType:e.getItemVisual(t,\"symbol\")||\"circle\",color:e.getItemVisual(t,\"color\"),symbolClip:s,symbolRepeat:a,symbolRepeatDirection:n.get(\"symbolRepeatDirection\"),symbolPatternSize:p,rotation:d,animationModel:m?n:null,hoverAnimation:m&&n.get(\"hoverAnimation\"),z2:n.getShallow(\"z\",!0)||0};!function(e,t,n,i,o){var a,s=i.valueDim,l=e.get(\"symbolBoundingData\"),u=i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()),c=u.toGlobalCoord(u.dataToCoord(0)),h=1-+(n[s.wh]<=0);if(r.isArray(l)){var d=[g(u,l[0])-c,g(u,l[1])-c];d[1]<d[0]&&d.reverse(),a=d[h]}else a=null!=l?g(u,l)-c:t?i.coordSysExtent[s.index][h]-c:n[s.wh];o.boundingLength=a,t&&(o.repeatCutLength=n[s.wh]);o.pxSign=a>0?1:a<0?-1:0}(n,a,o,i,v),function(e,t,n,i,o,a,s,u,c,h){var d=c.valueDim,f=c.categoryDim,p=Math.abs(n[f.wh]),g=e.getItemVisual(t,\"symbolSize\");r.isArray(g)?g=g.slice():(null==g&&(g=\"100%\"),g=[g,g]);g[f.index]=l(g[f.index],p),g[d.index]=l(g[d.index],i?p:Math.abs(a)),h.symbolSize=g,(h.symbolScale=[g[0]/u,g[1]/u])[d.index]*=(c.isHorizontal?-1:1)*s}(e,t,o,a,0,v.boundingLength,v.pxSign,p,i,v),function(e,t,n,i,r){var o=e.get(h)||0;o&&(f.attr({scale:t.slice(),rotation:n}),f.updateTransform(),o/=f.getLineScale(),o*=t[i.valueDim.index]);r.valueLineWidth=o}(n,v.symbolScale,d,i,v);var y=v.symbolSize,b=n.get(\"symbolOffset\");return r.isArray(b)&&(b=[l(b[0],y[0]),l(b[1],y[1])]),function(e,t,n,i,o,a,s,c,h,d,f,p){var g=f.categoryDim,m=f.valueDim,v=p.pxSign,y=Math.max(t[m.index]+c,0),b=y;if(i){var x=Math.abs(h),_=r.retrieve(e.get(\"symbolMargin\"),\"15%\")+\"\",w=!1;_.lastIndexOf(\"!\")===_.length-1&&(w=!0,_=_.slice(0,_.length-1)),_=l(_,t[m.index]);var C=Math.max(y+2*_,0),S=w?0:2*_,k=u(i),T=k?i:O((x+S)/C),M=x-T*y;C=y+2*(_=M/2/(w?T:T-1)),S=w?0:2*_,k||\"fixed\"===i||(T=d?O((Math.abs(d)+S)/C):0),b=T*C-S,p.repeatTimes=T,p.symbolMargin=_}var D=v*(b/2),A=p.pathPosition=[];A[g.index]=n[g.wh]/2,A[m.index]=\"start\"===s?D:\"end\"===s?h-D:h/2,a&&(A[0]+=a[0],A[1]+=a[1]);var I=p.bundlePosition=[];I[g.index]=n[g.xy],I[m.index]=n[m.xy];var E=p.barRectShape=r.extend({},n);E[m.wh]=v*Math.max(Math.abs(n[m.wh]),Math.abs(A[m.index]+D)),E[g.wh]=n[g.wh];var L=p.clipShape={};L[g.xy]=-n[g.xy],L[g.wh]=f.ecSize[g.wh],L[m.xy]=0,L[m.wh]=n[m.wh]}(n,y,o,a,0,b,c,v.valueLineWidth,v.boundingLength,v.repeatCutLength,i,v),v}function g(e,t){return e.toGlobalCoord(e.dataToCoord(e.scale.parse(t)))}function m(e){var t=e.symbolPatternSize,n=a(e.symbolType,-t/2,-t/2,t,t,e.color);return n.attr({culling:!0}),\"image\"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function v(e,t,n,i){var r=e.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=t.valueDim,u=n.repeatTimes||0,c=0,h=o[t.valueDim.index]+a+2*n.symbolMargin;for(D(e,function(e){e.__pictorialAnimationIndex=c,e.__pictorialRepeatTimes=u,c<u?A(e,null,p(c),n,i):A(e,null,{scale:[0,0]},n,i,function(){r.remove(e)}),S(e,n),c++});c<u;c++){var d=m(n);d.__pictorialAnimationIndex=c,d.__pictorialRepeatTimes=u,r.add(d);var f=p(c);A(d,{position:f.position,scale:[0,0]},{scale:f.scale,rotation:f.rotation},n,i),d.on(\"mouseover\",g).on(\"mouseout\",v),S(d,n)}function p(e){var t=s.slice(),i=n.pxSign,r=e;return(\"start\"===n.symbolRepeatDirection?i>0:i<0)&&(r=u-1-e),t[l.index]=h*(r-u/2+.5)+s[l.index],{position:t,scale:n.symbolScale.slice(),rotation:n.rotation}}function g(){D(e,function(e){e.trigger(\"emphasis\")})}function v(){D(e,function(e){e.trigger(\"normal\")})}}function y(e,t,n,i){var r=e.__pictorialBundle,o=e.__pictorialMainPath;o?A(o,null,{position:n.pathPosition.slice(),scale:n.symbolScale.slice(),rotation:n.rotation},n,i):(o=e.__pictorialMainPath=m(n),r.add(o),A(o,{position:n.pathPosition.slice(),scale:[0,0],rotation:n.rotation},{scale:n.symbolScale.slice()},n,i),o.on(\"mouseover\",function(){this.trigger(\"emphasis\")}).on(\"mouseout\",function(){this.trigger(\"normal\")})),S(o,n)}function b(e,t,n){var i=r.extend({},t.barRectShape),a=e.__pictorialBarRect;a?A(a,null,{shape:i},t,n):(a=e.__pictorialBarRect=new o.Rect({z2:2,shape:i,silent:!0,style:{stroke:\"transparent\",fill:\"transparent\",lineWidth:0}}),e.add(a))}function x(e,t,n,i){if(n.symbolClip){var a=e.__pictorialClipPath,s=r.extend({},n.clipShape),l=t.valueDim,u=n.animationModel,c=n.dataIndex;if(a)o.updateProps(a,{shape:s},u,c);else{s[l.wh]=0,a=new o.Rect({shape:s}),e.__pictorialBundle.setClipPath(a),e.__pictorialClipPath=a;var h={};h[l.wh]=n.clipShape[l.wh],o[i?\"updateProps\":\"initProps\"](a,{shape:h},u,c)}}}function _(e,t){var n=e.getItemModel(t);return n.getAnimationDelayParams=w,n.isAnimationEnabled=C,n}function w(e){return{index:e.__pictorialAnimationIndex,count:e.__pictorialRepeatTimes}}function C(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow(\"animation\")}function S(e,t){e.off(\"emphasis\").off(\"normal\");var n=t.symbolScale.slice();t.hoverAnimation&&e.on(\"emphasis\",function(){this.animateTo({scale:[1.1*n[0],1.1*n[1]]},400,\"elasticOut\")}).on(\"normal\",function(){this.animateTo({scale:n.slice()},400,\"elasticOut\")})}function k(e,t,n,i){var r=new o.Group,a=new o.Group;return r.add(a),r.__pictorialBundle=a,a.attr(\"position\",n.bundlePosition.slice()),n.symbolRepeat?v(r,t,n):y(r,0,n),b(r,n,i),x(r,t,n,i),r.__pictorialShapeStr=M(e,n),r.__pictorialSymbolMeta=n,r}function T(e,t,n,i){var a=i.__pictorialBarRect;a&&(a.style.text=null);var s=[];D(i,function(e){s.push(e)}),i.__pictorialMainPath&&s.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),r.each(s,function(e){o.updateProps(e,{scale:[0,0]},n,t,function(){i.parent&&i.parent.remove(i)})}),e.setItemGraphicEl(t,null)}function M(e,t){return[e.getItemVisual(t.dataIndex,\"symbol\")||\"none\",!!t.symbolRepeat,!!t.symbolClip].join(\":\")}function D(e,t,n){r.each(e.__pictorialBundle.children(),function(i){i!==e.__pictorialBarRect&&t.call(n,i)})}function A(e,t,n,i,r,a){t&&e.attr(t),i.symbolClip&&!r?n&&e.attr(n):n&&o[r?\"updateProps\":\"initProps\"](e,n,i.animationModel,i.dataIndex,a)}function I(e,t,n){var i=n.color,a=n.dataIndex,s=n.itemModel,l=s.getModel(\"itemStyle\").getItemStyle([\"color\"]),u=s.getModel(\"emphasis.itemStyle\").getItemStyle(),h=s.getShallow(\"cursor\");D(e,function(e){e.setColor(i),e.setStyle(r.defaults({fill:i,opacity:n.opacity},l)),o.setHoverStyle(e,u),h&&(e.cursor=h),e.z2=n.z2});var d={},f=t.valueDim.posDesc[+(n.boundingLength>0)],p=e.__pictorialBarRect;c(p.style,d,s,i,t.seriesModel,a,f),o.setHoverStyle(p,d)}function O(e){var t=Math.round(e);return Math.abs(e-t)<1e-4?t:Math.ceil(e)}var E=i.extendChartView({type:\"pictorialBar\",render:function(e,t,n){var i=this.group,r=e.getData(),a=this._data,s=e.coordinateSystem,l=!!s.getBaseAxis().isHorizontal(),u=s.grid.getRect(),c={ecSize:{width:n.getWidth(),height:n.getHeight()},seriesModel:e,coordSys:s,coordSysExtent:[[u.x,u.x+u.width],[u.y,u.y+u.height]],isHorizontal:l,valueDim:d[+l],categoryDim:d[1-l]};return r.diff(a).add(function(e){if(r.hasValue(e)){var t=_(r,e),n=p(r,e,t,c),o=k(r,c,n);r.setItemGraphicEl(e,o),i.add(o),I(o,c,n)}}).update(function(e,t){var n=a.getItemGraphicEl(t);if(r.hasValue(e)){var s=_(r,e),l=p(r,e,s,c),u=M(r,l);n&&u!==n.__pictorialShapeStr&&(i.remove(n),r.setItemGraphicEl(e,null),n=null),n?function(e,t,n){var i=n.animationModel,r=n.dataIndex,a=e.__pictorialBundle;o.updateProps(a,{position:n.bundlePosition.slice()},i,r),n.symbolRepeat?v(e,t,n,!0):y(e,t,n,!0);b(e,n,!0),x(e,t,n,!0)}(n,c,l):n=k(r,c,l,!0),r.setItemGraphicEl(e,n),n.__pictorialSymbolMeta=l,i.add(n),I(n,c,l)}else i.remove(n)}).remove(function(e){var t=a.getItemGraphicEl(e);t&&T(a,e,t.__pictorialSymbolMeta.animationModel,t)}).execute(),this._data=r,this.group},dispose:r.noop,remove:function(e,t){var n=this.group,i=this._data;e.get(\"animation\")?i&&i.eachItemGraphicEl(function(t){T(i,t.dataIndex,e,t)}):n.removeAll()}});e.exports=E},mClu:function(e,t,n){var i=n(\"kM2E\");i(i.S+i.F*!n(\"+E39\"),\"Object\",{defineProperty:n(\"evD5\").f})},mLyJ:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\").parsePercent,o=n(\"qVJQ\").isDimensionStacked;function a(e){return e.get(\"stack\")||\"__ec_stack_\"+e.seriesIndex}function s(e,t){return t.dim+e.model.componentIndex}var l=function(e,t,n){var l={},u=function(e,t){var n={};i.each(e,function(e,t){var i=e.getData(),o=e.coordinateSystem,l=o.getBaseAxis(),u=s(o,l),c=l.getExtent(),h=\"category\"===l.type?l.getBandWidth():Math.abs(c[1]-c[0])/i.count(),d=n[u]||{bandWidth:h,remainedWidth:h,autoWidthCount:0,categoryGap:\"20%\",gap:\"30%\",stacks:{}},f=d.stacks;n[u]=d;var p=a(e);f[p]||d.autoWidthCount++,f[p]=f[p]||{width:0,maxWidth:0};var g=r(e.get(\"barWidth\"),h),m=r(e.get(\"barMaxWidth\"),h),v=e.get(\"barGap\"),y=e.get(\"barCategoryGap\");g&&!f[p].width&&(g=Math.min(d.remainedWidth,g),f[p].width=g,d.remainedWidth-=g),m&&(f[p].maxWidth=m),null!=v&&(d.gap=v),null!=y&&(d.categoryGap=y)});var o={};return i.each(n,function(e,t){o[t]={};var n=e.stacks,a=e.bandWidth,s=r(e.categoryGap,a),l=r(e.gap,1),u=e.remainedWidth,c=e.autoWidthCount,h=(u-s)/(c+(c-1)*l);h=Math.max(h,0),i.each(n,function(e,t){var n=e.maxWidth;n&&n<h&&(n=Math.min(n,u),e.width&&(n=Math.min(n,e.width)),u-=n,e.width=n,c--)}),h=(u-s)/(c+(c-1)*l),h=Math.max(h,0);var d,f=0;i.each(n,function(e,t){e.width||(e.width=h),d=e,f+=e.width*(1+l)}),d&&(f-=d.width*l);var p=-f/2;i.each(n,function(e,n){o[t][n]=o[t][n]||{offset:p,width:e.width},p+=e.width*(1+l)})}),o}(i.filter(t.getSeriesByType(e),function(e){return!t.isSeriesFiltered(e)&&e.coordinateSystem&&\"polar\"===e.coordinateSystem.type}));t.eachSeriesByType(e,function(e){if(\"polar\"===e.coordinateSystem.type){var t=e.getData(),n=e.coordinateSystem,i=n.getBaseAxis(),r=s(n,i),c=a(e),h=u[r][c],d=h.offset,f=h.width,p=n.getOtherAxis(i),g=e.coordinateSystem.cx,m=e.coordinateSystem.cy,v=e.get(\"barMinHeight\")||0,y=e.get(\"barMinAngle\")||0;l[c]=l[c]||[];for(var b=t.mapDimension(p.dim),x=t.mapDimension(i.dim),_=o(t,b),w=\"radius\"!==i.dim||!e.get(\"roundCap\",!0),C=p.getExtent()[0],S=0,k=t.count();S<k;S++){var T,M,D,A,I=t.get(b,S),O=t.get(x,S),E=I>=0?\"p\":\"n\",L=C;if(_&&(l[c][O]||(l[c][O]={p:C,n:C}),L=l[c][O][E]),\"radius\"===p.dim){var P=p.dataToRadius(I)-C,N=i.dataToAngle(O);Math.abs(P)<v&&(P=(P<0?-1:1)*v),T=L,M=L+P,A=(D=N-d)-f,_&&(l[c][O][E]=M)}else{var R=p.dataToAngle(I,w)-C,B=i.dataToRadius(O);Math.abs(R)<y&&(R=(R<0?-1:1)*y),M=(T=B+d)+f,D=L,A=L+R,_&&(l[c][O][E]=A)}t.setItemLayout(S,{cx:g,cy:m,r0:T,r:M,startAngle:-D*Math.PI/180,endAngle:-A*Math.PI/180})}}},this)};e.exports=l},mcsk:function(e,t,n){var i=\"\\0_ec_interaction_mutex\";function r(e){return e[i]||(e[i]={})}n(\"Icdr\").registerAction({type:\"takeGlobalCursor\",event:\"globalCursorTaken\",update:\"update\"},function(){}),t.take=function(e,t,n){r(e)[t]=n},t.release=function(e,t,n){var i=r(e);i[t]===n&&(i[t]=null)},t.isTaken=function(e,t){return!!r(e)[t]}},me52:function(e,t,n){var i=n(\"GxVO\"),r=i.extend({type:\"compound\",shape:{paths:null},_updatePathDirty:function(){for(var e=this.__dirtyPath,t=this.shape.paths,n=0;n<t.length;n++)e=e||t[n].__dirtyPath;this.__dirtyPath=e,this.__dirty=this.__dirty||e},beforeBrush:function(){this._updatePathDirty();for(var e=this.shape.paths||[],t=this.getGlobalScale(),n=0;n<e.length;n++)e[n].path||e[n].createPathProxy(),e[n].path.setScale(t[0],t[1],e[n].segmentIgnoreThreshold)},buildPath:function(e,t){for(var n=t.paths||[],i=0;i<n.length;i++)n[i].buildPath(e,n[i].shape,!0)},afterBrush:function(){for(var e=this.shape.paths||[],t=0;t<e.length;t++)e[t].__dirtyPath=!1},getBoundingRect:function(){return this._updatePathDirty(),i.prototype.getBoundingRect.call(this)}});e.exports=r},miEh:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Icdr\"),o=n(\"0sHC\"),a=n(\"1Xuh\").getLayoutRect,s=n(\"HHfb\").windowOpen;r.extendComponentModel({type:\"title\",layoutMode:{type:\"box\",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:\"\",target:\"blank\",subtext:\"\",subtarget:\"blank\",left:0,top:0,backgroundColor:\"rgba(0,0,0,0)\",borderColor:\"#ccc\",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:\"bolder\",color:\"#333\"},subtextStyle:{color:\"#aaa\"}}}),r.extendComponentView({type:\"title\",render:function(e,t,n){if(this.group.removeAll(),e.get(\"show\")){var r=this.group,l=e.getModel(\"textStyle\"),u=e.getModel(\"subtextStyle\"),c=e.get(\"textAlign\"),h=i.retrieve2(e.get(\"textBaseline\"),e.get(\"textVerticalAlign\")),d=new o.Text({style:o.setTextStyle({},l,{text:e.get(\"text\"),textFill:l.getTextColor()},{disableBox:!0}),z2:10}),f=d.getBoundingRect(),p=e.get(\"subtext\"),g=new o.Text({style:o.setTextStyle({},u,{text:p,textFill:u.getTextColor(),y:f.height+e.get(\"itemGap\"),textVerticalAlign:\"top\"},{disableBox:!0}),z2:10}),m=e.get(\"link\"),v=e.get(\"sublink\"),y=e.get(\"triggerEvent\",!0);d.silent=!m&&!y,g.silent=!v&&!y,m&&d.on(\"click\",function(){s(m,\"_\"+e.get(\"target\"))}),v&&g.on(\"click\",function(){s(m,\"_\"+e.get(\"subtarget\"))}),d.eventData=g.eventData=y?{componentType:\"title\",componentIndex:e.componentIndex}:null,r.add(d),p&&r.add(g);var b=r.getBoundingRect(),x=e.getBoxLayoutParams();x.width=b.width,x.height=b.height;var _=a(x,{width:n.getWidth(),height:n.getHeight()},e.get(\"padding\"));c||(\"middle\"===(c=e.get(\"left\")||e.get(\"right\"))&&(c=\"center\"),\"right\"===c?_.x+=_.width:\"center\"===c&&(_.x+=_.width/2)),h||(\"center\"===(h=e.get(\"top\")||e.get(\"bottom\"))&&(h=\"middle\"),\"bottom\"===h?_.y+=_.height:\"middle\"===h&&(_.y+=_.height/2),h=h||\"top\"),r.attr(\"position\",[_.x,_.y]);var w={textAlign:c,textVerticalAlign:h};d.setStyle(w),g.setStyle(w),b=r.getBoundingRect();var C=_.margin,S=e.getItemStyle([\"color\",\"opacity\"]);S.fill=e.get(\"backgroundColor\");var k=new o.Rect({shape:{x:b.x-C[3],y:b.y-C[0],width:b.width+C[1]+C[3],height:b.height+C[0]+C[2],r:e.get(\"borderRadius\")},style:S,subPixelOptimize:!0,silent:!0});r.add(k)}}})},mlpt:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"wH4Y\"),o=n(\"HGSA\"),a=n(\"B123\"),s=n(\"wWR3\").reformIntervals,l=r.extend({type:\"visualMap.piecewise\",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:\"auto\",itemWidth:20,itemHeight:14,itemSymbol:\"roundRect\",pieceList:null,categories:null,splitNumber:5,selectedMode:\"multiple\",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(e,t){l.superApply(this,\"optionUpdated\",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();u[this._mode].call(this),this._resetSelected(e,t);var r=this.option.categories;this.resetVisual(function(e,t){\"categories\"===n?(e.mappingMethod=\"category\",e.categories=i.clone(r)):(e.dataExtent=this.getExtent(),e.mappingMethod=\"piecewise\",e.pieceList=i.map(this._pieceList,function(e){e=i.clone(e);return\"inRange\"!==t&&(e.visual=null),e}))})},completeVisualOption:function(){var e=this.option,t={},n=o.listVisualTypes(),s=this.isCategory();function l(e,t,n){return e&&e[t]&&(i.isObject(e[t])?e[t].hasOwnProperty(n):e[t]===n)}i.each(e.pieces,function(e){i.each(n,function(n){e.hasOwnProperty(n)&&(t[n]=1)})}),i.each(t,function(t,n){var r=0;i.each(this.stateList,function(t){r|=l(e,t,n)||l(e.target,t,n)},this),!r&&i.each(this.stateList,function(t){(e[t]||(e[t]={}))[n]=a.get(n,\"inRange\"===t?\"active\":\"inactive\",s)})},this),r.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(e,t){var n=this.option,r=this._pieceList,o=(t?n:e).selected||{};if(n.selected=o,i.each(r,function(e,t){var n=this.getSelectedMapKey(e);o.hasOwnProperty(n)||(o[n]=!0)},this),\"single\"===n.selectedMode){var a=!1;i.each(r,function(e,t){var n=this.getSelectedMapKey(e);o[n]&&(a?o[n]=!1:a=!0)},this)}},getSelectedMapKey:function(e){return\"categories\"===this._mode?e.value+\"\":e.index+\"\"},getPieceList:function(){return this._pieceList},_determineMode:function(){var e=this.option;return e.pieces&&e.pieces.length>0?\"pieces\":this.option.categories?\"categories\":\"splitNumber\"},setSelected:function(e){this.option.selected=i.clone(e)},getValueState:function(e){var t=o.findPieceIndex(e,this._pieceList);return null!=t&&this.option.selected[this.getSelectedMapKey(this._pieceList[t])]?\"inRange\":\"outOfRange\"},findTargetDataIndices:function(e){var t=[];return this.eachTargetSeries(function(n){var i=[],r=n.getData();r.each(this.getDataDimension(r),function(t,n){o.findPieceIndex(t,this._pieceList)===e&&i.push(n)},this),t.push({seriesId:n.id,dataIndex:i})},this),t},getRepresentValue:function(e){var t;if(this.isCategory())t=e.value;else if(null!=e.value)t=e.value;else{var n=e.interval||[];t=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return t},getVisualMeta:function(e){if(!this.isCategory()){var t=[],n=[],r=this,o=this._pieceList.slice();if(o.length){var a=o[0].interval[0];a!==-1/0&&o.unshift({interval:[-1/0,a]}),(a=o[o.length-1].interval[1])!==1/0&&o.push({interval:[a,1/0]})}else o.push({interval:[-1/0,1/0]});var s=-1/0;return i.each(o,function(e){var t=e.interval;t&&(t[0]>s&&l([s,t[0]],\"outOfRange\"),l(t.slice()),s=t[1])},this),{stops:t,outerColors:n}}function l(i,o){var a=r.getRepresentValue({interval:i});o||(o=r.getValueState(a));var s=e(a,o);i[0]===-1/0?n[0]=s:i[1]===1/0?n[1]=s:t.push({value:i[0],color:s},{value:i[1],color:s})}}}),u={splitNumber:function(){var e=this.option,t=this._pieceList,n=Math.min(e.precision,20),r=this.getExtent(),o=e.splitNumber;o=Math.max(parseInt(o,10),1),e.splitNumber=o;for(var a=(r[1]-r[0])/o;+a.toFixed(n)!==a&&n<5;)n++;e.precision=n,a=+a.toFixed(n),e.minOpen&&t.push({interval:[-1/0,r[0]],close:[0,0]});for(var l=0,u=r[0];l<o;u+=a,l++){var c=l===o-1?r[1]:u+a;t.push({interval:[u,c],close:[1,1]})}e.maxOpen&&t.push({interval:[r[1],1/0],close:[0,0]}),s(t),i.each(t,function(e,t){e.index=t,e.text=this.formatValueText(e.interval)},this)},categories:function(){var e=this.option;i.each(e.categories,function(e){this._pieceList.push({text:this.formatValueText(e,!0),value:e})},this),c(e,this._pieceList)},pieces:function(){var e=this.option,t=this._pieceList;i.each(e.pieces,function(e,n){i.isObject(e)||(e={value:e});var r={text:\"\",index:n};if(null!=e.label&&(r.text=e.label),e.hasOwnProperty(\"value\")){var a=r.value=e.value;r.interval=[a,a],r.close=[1,1]}else{for(var s=r.interval=[],l=r.close=[0,0],u=[1,0,1],c=[-1/0,1/0],h=[],d=0;d<2;d++){for(var f=[[\"gte\",\"gt\",\"min\"],[\"lte\",\"lt\",\"max\"]][d],p=0;p<3&&null==s[d];p++)s[d]=e[f[p]],l[d]=u[p],h[d]=2===p;null==s[d]&&(s[d]=c[d])}h[0]&&s[1]===1/0&&(l[0]=0),h[1]&&s[0]===-1/0&&(l[1]=0),s[0]===s[1]&&l[0]&&l[1]&&(r.value=s[0])}r.visual=o.retrieveVisuals(e),t.push(r)},this),c(e,t),s(t),i.each(t,function(e){var t=e.close,n=[[\"<\",\"≤\"][t[1]],[\">\",\"≥\"][t[0]]];e.text=e.text||this.formatValueText(null!=e.value?e.value:e.interval,!1,n)},this)}};function c(e,t){var n=e.inverse;(\"vertical\"===e.orient?!n:n)&&t.reverse()}var h=l;e.exports=h},moDv:function(e,t,n){var i=n(\"AAi1\"),r=n(\"C7PF\"),o=n(\"wUOi\"),a=n(\"8b51\"),s=n(\"g+yZ\").devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},u=[],c=[],h=[],d=[],f=Math.min,p=Math.max,g=Math.cos,m=Math.sin,v=Math.sqrt,y=Math.abs,b=\"undefined\"!=typeof Float32Array,x=function(e){this._saveData=!e,this._saveData&&(this.data=[]),this._ctx=null};x.prototype={constructor:x,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(e,t,n){n=n||0,this._ux=y(n/s/e)||0,this._uy=y(n/s/t)||0},getContext:function(){return this._ctx},beginPath:function(e){return this._ctx=e,e&&e.beginPath(),e&&(this.dpr=e.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(e,t){return this.addData(l.M,e,t),this._ctx&&this._ctx.moveTo(e,t),this._x0=e,this._y0=t,this._xi=e,this._yi=t,this},lineTo:function(e,t){var n=y(e-this._xi)>this._ux||y(t-this._yi)>this._uy||this._len<5;return this.addData(l.L,e,t),this._ctx&&n&&(this._needsDash()?this._dashedLineTo(e,t):this._ctx.lineTo(e,t)),n&&(this._xi=e,this._yi=t),this},bezierCurveTo:function(e,t,n,i,r,o){return this.addData(l.C,e,t,n,i,r,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(e,t,n,i,r,o):this._ctx.bezierCurveTo(e,t,n,i,r,o)),this._xi=r,this._yi=o,this},quadraticCurveTo:function(e,t,n,i){return this.addData(l.Q,e,t,n,i),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(e,t,n,i):this._ctx.quadraticCurveTo(e,t,n,i)),this._xi=n,this._yi=i,this},arc:function(e,t,n,i,r,o){return this.addData(l.A,e,t,n,n,i,r-i,0,o?0:1),this._ctx&&this._ctx.arc(e,t,n,i,r,o),this._xi=g(r)*n+e,this._yi=m(r)*n+t,this},arcTo:function(e,t,n,i,r){return this._ctx&&this._ctx.arcTo(e,t,n,i,r),this},rect:function(e,t,n,i){return this._ctx&&this._ctx.rect(e,t,n,i),this.addData(l.R,e,t,n,i),this},closePath:function(){this.addData(l.Z);var e=this._ctx,t=this._x0,n=this._y0;return e&&(this._needsDash()&&this._dashedLineTo(t,n),e.closePath()),this._xi=t,this._yi=n,this},fill:function(e){e&&e.fill(),this.toStatic()},stroke:function(e){e&&e.stroke(),this.toStatic()},setLineDash:function(e){if(e instanceof Array){this._lineDash=e,this._dashIdx=0;for(var t=0,n=0;n<e.length;n++)t+=e[n];this._dashSum=t}return this},setLineDashOffset:function(e){return this._dashOffset=e,this},len:function(){return this._len},setData:function(e){var t=e.length;this.data&&this.data.length===t||!b||(this.data=new Float32Array(t));for(var n=0;n<t;n++)this.data[n]=e[n];this._len=t},appendPath:function(e){e instanceof Array||(e=[e]);for(var t=e.length,n=0,i=this._len,r=0;r<t;r++)n+=e[r].len();b&&this.data instanceof Float32Array&&(this.data=new Float32Array(i+n));for(r=0;r<t;r++)for(var o=e[r].data,a=0;a<o.length;a++)this.data[i++]=o[a];this._len=i},addData:function(e){if(this._saveData){var t=this.data;this._len+arguments.length>t.length&&(this._expandData(),t=this.data);for(var n=0;n<arguments.length;n++)t[this._len++]=arguments[n];this._prevCmd=e}},_expandData:function(){if(!(this.data instanceof Array)){for(var e=[],t=0;t<this._len;t++)e[t]=this.data[t];this.data=e}},_needsDash:function(){return this._lineDash},_dashedLineTo:function(e,t){var n,i,r=this._dashSum,o=this._dashOffset,a=this._lineDash,s=this._ctx,l=this._xi,u=this._yi,c=e-l,h=t-u,d=v(c*c+h*h),g=l,m=u,y=a.length;for(c/=d,h/=d,o<0&&(o=r+o),g-=(o%=r)*c,m-=o*h;c>0&&g<=e||c<0&&g>=e||0===c&&(h>0&&m<=t||h<0&&m>=t);)g+=c*(n=a[i=this._dashIdx]),m+=h*n,this._dashIdx=(i+1)%y,c>0&&g<l||c<0&&g>l||h>0&&m<u||h<0&&m>u||s[i%2?\"moveTo\":\"lineTo\"](c>=0?f(g,e):p(g,e),h>=0?f(m,t):p(m,t));c=g-e,h=m-t,this._dashOffset=-v(c*c+h*h)},_dashedBezierTo:function(e,t,n,r,o,a){var s,l,u,c,h,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,y=this._yi,b=i.cubicAt,x=0,_=this._dashIdx,w=p.length,C=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=b(m,e,n,o,s+.1)-b(m,e,n,o,s),u=b(y,t,r,a,s+.1)-b(y,t,r,a,s),x+=v(l*l+u*u);for(;_<w&&!((C+=p[_])>f);_++);for(s=(C-f)/x;s<=1;)c=b(m,e,n,o,s),h=b(y,t,r,a,s),_%2?g.moveTo(c,h):g.lineTo(c,h),s+=p[_]/x,_=(_+1)%w;_%2!=0&&g.lineTo(o,a),l=o-c,u=a-h,this._dashOffset=-v(l*l+u*u)},_dashedQuadraticTo:function(e,t,n,i){var r=n,o=i;n=(n+2*e)/3,i=(i+2*t)/3,e=(this._xi+2*e)/3,t=(this._yi+2*t)/3,this._dashedBezierTo(e,t,n,i,r,o)},toStatic:function(){var e=this.data;e instanceof Array&&(e.length=this._len,b&&(this.data=new Float32Array(e)))},getBoundingRect:function(){u[0]=u[1]=h[0]=h[1]=Number.MAX_VALUE,c[0]=c[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var e=this.data,t=0,n=0,i=0,s=0,f=0;f<e.length;){var p=e[f++];switch(1===f&&(i=t=e[f],s=n=e[f+1]),p){case l.M:t=i=e[f++],n=s=e[f++],h[0]=i,h[1]=s,d[0]=i,d[1]=s;break;case l.L:o.fromLine(t,n,e[f],e[f+1],h,d),t=e[f++],n=e[f++];break;case l.C:o.fromCubic(t,n,e[f++],e[f++],e[f++],e[f++],e[f],e[f+1],h,d),t=e[f++],n=e[f++];break;case l.Q:o.fromQuadratic(t,n,e[f++],e[f++],e[f],e[f+1],h,d),t=e[f++],n=e[f++];break;case l.A:var v=e[f++],y=e[f++],b=e[f++],x=e[f++],_=e[f++],w=e[f++]+_;f+=1;var C=1-e[f++];1===f&&(i=g(_)*b+v,s=m(_)*x+y),o.fromArc(v,y,b,x,_,w,C,h,d),t=g(w)*b+v,n=m(w)*x+y;break;case l.R:i=t=e[f++],s=n=e[f++];var S=e[f++],k=e[f++];o.fromLine(i,s,i+S,s+k,h,d);break;case l.Z:t=i,n=s}r.min(u,u,h),r.max(c,c,d)}return 0===f&&(u[0]=u[1]=c[0]=c[1]=0),new a(u[0],u[1],c[0]-u[0],c[1]-u[1])},rebuildPath:function(e){for(var t,n,i,r,o,a,s=this.data,u=this._ux,c=this._uy,h=this._len,d=0;d<h;){var f=s[d++];switch(1===d&&(t=i=s[d],n=r=s[d+1]),f){case l.M:t=i=s[d++],n=r=s[d++],e.moveTo(i,r);break;case l.L:o=s[d++],a=s[d++],(y(o-i)>u||y(a-r)>c||d===h-1)&&(e.lineTo(o,a),i=o,r=a);break;case l.C:e.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),i=s[d-2],r=s[d-1];break;case l.Q:e.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),i=s[d-2],r=s[d-1];break;case l.A:var p=s[d++],v=s[d++],b=s[d++],x=s[d++],_=s[d++],w=s[d++],C=s[d++],S=s[d++],k=b>x?b:x,T=b>x?1:b/x,M=b>x?x/b:1,D=_+w;Math.abs(b-x)>.001?(e.translate(p,v),e.rotate(C),e.scale(T,M),e.arc(0,0,k,_,D,1-S),e.scale(1/T,1/M),e.rotate(-C),e.translate(-p,-v)):e.arc(p,v,k,_,D,1-S),1===d&&(t=g(_)*b+p,n=m(_)*x+v),i=g(D)*b+p,r=m(D)*x+v;break;case l.R:t=i=s[d],n=r=s[d+1],e.rect(s[d++],s[d++],s[d++],s[d++]);break;case l.Z:e.closePath(),i=t,r=n}}}},x.CMD=l;var _=x;e.exports=_},mtrD:function(e,t){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=97)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},97:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"button\",{staticClass:\"el-button\",class:[e.type?\"el-button--\"+e.type:\"\",e.buttonSize?\"el-button--\"+e.buttonSize:\"\",{\"is-disabled\":e.buttonDisabled,\"is-loading\":e.loading,\"is-plain\":e.plain,\"is-round\":e.round,\"is-circle\":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?n(\"i\",{staticClass:\"el-icon-loading\"}):e._e(),e.icon&&!e.loading?n(\"i\",{class:e.icon}):e._e(),e.$slots.default?n(\"span\",[e._t(\"default\")],2):e._e()])};i._withStripped=!0;var r={name:\"ElButton\",inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},props:{type:{type:String,default:\"default\"},size:String,icon:{type:String,default:\"\"},nativeType:{type:String,default:\"button\"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit(\"click\",e)}}},o=n(0),a=Object(o.a)(r,i,[],!1,null,null,null);a.options.__file=\"packages/button/src/button.vue\";var s=a.exports;s.install=function(e){e.component(s.name,s)};t.default=s}})},mvCM:function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=i.createHashMap,a=(i.assert,n(\"4Nz2\").__DEV__,o([\"tooltip\",\"label\",\"itemName\",\"itemId\",\"seriesName\"]));function s(e,t){return e.hasOwnProperty(t)||(e[t]=[]),e[t]}t.OTHER_DIMENSIONS=a,t.summarizeDimensions=function(e){var t={},n=t.encode={},i=o(),l=[],u=[],c=t.userOutput={dimensionNames:e.dimensions.slice(),encode:{}};r(e.dimensions,function(t){var r,o=e.getDimensionInfo(t),h=o.coordDim;if(h){var d=o.coordDimIndex;s(n,h)[d]=t,o.isExtraCoord||(i.set(h,1),\"ordinal\"!==(r=o.type)&&\"time\"!==r&&(l[0]=t),s(c.encode,h)[d]=o.index),o.defaultTooltip&&u.push(t)}a.each(function(e,t){var i=s(n,t),r=o.otherDims[t];null!=r&&!1!==r&&(i[r]=o.name)})});var h=[],d={};i.each(function(e,t){var i=n[t];d[t]=i[0],h=h.concat(i)}),t.dataDimsOnCoord=h,t.encodeFirstDimNotExtra=d;var f=n.label;f&&f.length&&(l=f.slice());var p=n.tooltip;return p&&p.length?u=p.slice():u.length||(u=l.slice()),n.defaultedLabel=l,n.defaultedTooltip=u,t},t.getDimensionTypeByAxis=function(e){return\"category\"===e?\"ordinal\":\"time\"===e?\"time\":\"float\"}},mvHQ:function(e,t,n){e.exports={default:n(\"qkKv\"),__esModule:!0}},mvkK:function(e,t,n){var i=n(\"jDhh\"),r=i.parseSVG,o=i.makeViewBoxTransform,a=n(\"AlhT\"),s=n(\"PD67\"),l=n(\"/gxq\"),u=l.assert,c=l.createHashMap,h=n(\"8b51\"),d=(0,n(\"vXqC\").makeInner)(),f={load:function(e,t){var n=d(t).originRoot;if(n)return{root:n,boundingRect:d(t).boundingRect};var i=p(t);return d(t).originRoot=i.root,d(t).boundingRect=i.boundingRect,i},makeGraphic:function(e,t,n){var i=d(t),r=i.rootMap||(i.rootMap=c()),o=r.get(n);if(o)return o;var a=i.originRoot,s=i.boundingRect;return i.originRootHostKey?o=p(t,s).root:(i.originRootHostKey=n,o=a),r.set(n,o)},removeGraphic:function(e,t,n){var i=d(t),r=i.rootMap;r&&r.removeKey(n),n===i.originRootHostKey&&(i.originRootHostKey=null)}};function p(e,t){var n,i,l=e.svgXML;try{i=(n=l&&r(l,{ignoreViewBox:!0,ignoreRootClip:!0})||{}).root,u(null!=i)}catch(e){throw new Error(\"Invalid svg format\\n\"+e.message)}var c=n.width,d=n.height,f=n.viewBoxRect;if(t||(t=null==c||null==d?i.getBoundingRect():new h(0,0,0,0),null!=c&&(t.width=c),null!=d&&(t.height=d)),f){var p=o(f,t.width,t.height),g=i;(i=new a).add(g),g.scale=p.scale,g.position=p.position}return i.setClipPath(new s({shape:t.plain()})),{root:i,boundingRect:t}}e.exports=f},\"n/n4\":function(e,t,n){var i=n(\"/gxq\");function r(e,t){return t=t||[0,0],i.map([\"x\",\"y\"],function(n,i){var r=this.getAxis(n),o=t[i],a=e[i]/2;return\"category\"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))},this)}e.exports=function(e){var t=e.grid.getRect();return{coordSys:{type:\"cartesian2d\",x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:i.bind(r,e)}}}},n0T6:function(e,t,n){var i=n(\"Ibhu\"),r=n(\"xnc9\").concat(\"length\",\"prototype\");t.f=Object.getOwnPropertyNames||function(e){return i(e,r)}},n3NR:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"8b51\"),a=n(\"NUWb\"),s=n(\"zlsk\"),l=n(\"QD+P\"),u=n(\"XCrL\"),c=[\"inBrush\",\"outOfBrush\"],h=\"__ecBrushSelect\",d=\"__ecInBrushSelectEvent\",f=i.PRIORITY.VISUAL.BRUSH;function p(e){e.eachComponent({mainType:\"brush\"},function(t){(t.brushTargetManager=new u(t.option,e)).setInputRanges(t.areas,e)})}function g(e,t){if(!e.isDisposed()){var n=e.getZr();n[d]=!0,e.dispatchAction({type:\"brushSelect\",batch:t}),n[d]=!1}}function m(e,t,n,i){for(var r=0,o=t.length;r<o;r++){var a=t[r];if(e[a.brushType](i,n,a.selectors,a))return!0}}function v(e){var t=e.brushSelector;if(r.isString(t)){var n=[];return r.each(s,function(e,i){n[i]=function(n,i,r,o){var a=i.getItemLayout(n);return e[t](a,r,o)}}),n}if(r.isFunction(t)){var i={};return r.each(s,function(e,n){i[n]=t}),i}return t}i.registerLayout(f,function(e,t,n){e.eachComponent({mainType:\"brush\"},function(e){n&&\"takeGlobalCursor\"===n.type&&e.setBrushOption(\"brush\"===n.key?n.brushOption:{brushType:!1})}),p(e)}),i.registerVisual(f,function(e,t,n){var i,o,u=[];e.eachComponent({mainType:\"brush\"},function(t,n){var l={brushId:t.id,brushIndex:n,brushName:t.name,areas:r.clone(t.areas),selected:[]};u.push(l);var h=t.option,d=h.brushLink,f=[],p=[],g=[],b=0;n||(i=h.throttleType,o=h.throttleDelay);var x=r.map(t.areas,function(e){return function(e){var t=e.selectors={};return r.each(s[e.brushType],function(n,i){t[i]=function(i){return n(i,t,e)}}),e}(r.defaults({boundingRect:y[e.brushType](e)},e))}),_=a.createVisualMappings(t.option,c,function(e){e.mappingMethod=\"fixed\"});function w(e){return\"all\"===d||f[e]}function C(e){return!!e.length}r.isArray(d)&&r.each(d,function(e){f[e]=1}),e.eachSeries(function(n,i){var o=g[i]=[];\"parallel\"===n.subType?function(e,t){var n=e.coordinateSystem;b|=n.hasAxisBrushed(),w(t)&&n.eachActiveState(e.getData(),function(e,t){\"active\"===e&&(p[t]=1)})}(n,i):function(n,i,o){var a=v(n);if(!a||function(e,t){var n=e.option.seriesIndex;return null!=n&&\"all\"!==n&&(r.isArray(n)?r.indexOf(n,t)<0:t!==n)}(t,i))return;if(r.each(x,function(i){a[i.brushType]&&t.brushTargetManager.controlSeries(i,n,e)&&o.push(i),b|=C(o)}),w(i)&&C(o)){var s=n.getData();s.each(function(e){m(a,o,s,e)&&(p[e]=1)})}}(n,i,o)}),e.eachSeries(function(e,t){var n={seriesId:e.id,seriesIndex:t,seriesName:e.name,dataIndex:[]};l.selected.push(n);var i=v(e),r=g[t],o=e.getData(),s=w(t)?function(e){return p[e]?(n.dataIndex.push(o.getRawIndex(e)),\"inBrush\"):\"outOfBrush\"}:function(e){return m(i,r,o,e)?(n.dataIndex.push(o.getRawIndex(e)),\"inBrush\"):\"outOfBrush\"};(w(t)?b:C(r))&&a.applyVisual(c,_,o,s)})}),function(e,t,n,i,r){if(!r)return;var o=e.getZr();if(o[d])return;o[h]||(o[h]=g);l.createOrUpdate(o,h,n,t)(e,i)}(t,i,o,u,n)});var y={lineX:r.noop,lineY:r.noop,rect:function(e){return b(e.range)},polygon:function(e){for(var t,n=e.range,i=0,r=n.length;i<r;i++){t=t||[[1/0,-1/0],[1/0,-1/0]];var o=n[i];o[0]<t[0][0]&&(t[0][0]=o[0]),o[0]>t[0][1]&&(t[0][1]=o[0]),o[1]<t[1][0]&&(t[1][0]=o[1]),o[1]>t[1][1]&&(t[1][1]=o[1])}return t&&b(t)}};function b(e){return new o(e[0][0],e[1][0],e[0][1]-e[0][0],e[1][1]-e[1][0])}t.layoutCovers=p},n5nI:function(e,t,n){var i=n(\"wRzc\"),r=n(\"/gxq\").isFunction,o={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var n=e.getData(),o=(e.visualColorAccessPath||\"itemStyle.color\").split(\".\"),a=e.get(o),s=!r(a)||a instanceof i?null:a;a&&!s||(a=e.getColorFromPalette(e.name,null,t.getSeriesCount())),n.setVisual(\"color\",a);var l=(e.visualBorderColorAccessPath||\"itemStyle.borderColor\").split(\".\"),u=e.get(l);if(n.setVisual(\"borderColor\",u),!t.isSeriesFiltered(e)){s&&n.each(function(t){n.setItemVisual(t,\"color\",s(e.getDataParams(t)))});return{dataEach:n.hasItemOption?function(e,t){var n=e.getItemModel(t),i=n.get(o,!0),r=n.get(l,!0);null!=i&&e.setItemVisual(t,\"color\",i),null!=r&&e.setItemVisual(t,\"borderColor\",r)}:null}}}};e.exports=o},nErl:function(e,t){(function(t){e.exports=t}).call(t,{})},nQkE:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\");function o(e,t,n){if(e.count())for(var r,o=t.coordinateSystem,a=t.getLayerSeries(),s=e.mapDimension(\"single\"),l=e.mapDimension(\"value\"),u=i.map(a,function(t){return i.map(t.indices,function(t){var n=o.dataToPoint(e.get(s,t));return n[1]=e.get(l,t),n})}),c=function(e){for(var t=e.length,n=e[0].length,i=[],r=[],o=0,a={},s=0;s<n;++s){for(var l=0,u=0;l<t;++l)u+=e[l][s][1];u>o&&(o=u),i.push(u)}for(var c=0;c<n;++c)r[c]=(o-i[c])/2;o=0;for(var h=0;h<n;++h){var d=i[h]+r[h];d>o&&(o=d)}return a.y0=r,a.max=o,a}(u),h=c.y0,d=n/c.max,f=a.length,p=a[0].indices.length,g=0;g<p;++g){r=h[g]*d,e.setItemLayout(a[0].indices[g],{layerIndex:0,x:u[0][g][0],y0:r,y:u[0][g][1]*d});for(var m=1;m<f;++m)r+=u[m-1][g][1]*d,e.setItemLayout(a[m].indices[g],{layerIndex:m,x:u[m][g][0],y0:r,y:u[m][g][1]*d})}}e.exports=function(e,t){e.eachSeriesByType(\"themeRiver\",function(e){var t=e.getData(),n=e.coordinateSystem,i={},a=n.getRect();i.rect=a;var s=e.get(\"boundaryGap\"),l=n.getAxis();i.boundaryGap=s,\"horizontal\"===l.orient?(s[0]=r.parsePercent(s[0],a.height),s[1]=r.parsePercent(s[1],a.height),o(t,e,a.height-s[0]-s[1])):(s[0]=r.parsePercent(s[0],a.width),s[1]=r.parsePercent(s[1],a.width),o(t,e,a.width-s[0]-s[1])),t.setLayout(\"layoutInfo\",i)})}},nUSl:function(e,t,n){var i=n(\"Icdr\");n(\"OvrE\"),n(\"PdL8\"),n(\"FvdC\"),n(\"srbS\");var r=n(\"QZ7o\"),o=n(\"2W4A\"),a=n(\"vIe4\"),s=n(\"Z2m1\"),l=n(\"XRkS\");i.registerLayout(r),i.registerVisual(o),i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC,a),i.registerPreprocessor(s),l(\"map\",[{type:\"mapToggleSelect\",event:\"mapselectchanged\",method:\"toggleSelected\"},{type:\"mapSelect\",event:\"mapselected\",method:\"select\"},{type:\"mapUnSelect\",event:\"mapunselected\",method:\"unSelect\"}])},\"nV/6\":function(e,t){function n(e){return e instanceof Array||(e=[e,e]),e}var i=\"lineStyle.opacity\".split(\".\"),r={seriesType:\"lines\",reset:function(e,t,r){var o=n(e.get(\"symbol\")),a=n(e.get(\"symbolSize\")),s=e.getData();return s.setVisual(\"fromSymbol\",o&&o[0]),s.setVisual(\"toSymbol\",o&&o[1]),s.setVisual(\"fromSymbolSize\",a&&a[0]),s.setVisual(\"toSymbolSize\",a&&a[1]),s.setVisual(\"opacity\",e.get(i)),{dataEach:s.hasItemOption?function(e,t){var r=e.getItemModel(t),o=n(r.getShallow(\"symbol\",!0)),a=n(r.getShallow(\"symbolSize\",!0)),s=r.get(i);o[0]&&e.setItemVisual(t,\"fromSymbol\",o[0]),o[1]&&e.setItemVisual(t,\"toSymbol\",o[1]),a[0]&&e.setItemVisual(t,\"fromSymbolSize\",a[0]),a[1]&&e.setItemVisual(t,\"toSymbolSize\",a[1]),e.setItemVisual(t,\"opacity\",s)}:null}}};e.exports=r},nvbp:function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,o,a,s,l;for(a in t)if(r=e[a],o=t[a],r&&n.test(a))if(\"class\"===a&&(\"string\"==typeof r&&(l=r,e[a]=r={},r[l]=!0),\"string\"==typeof o&&(l=o,t[a]=o={},o[l]=!0)),\"on\"===a||\"nativeOn\"===a||\"hook\"===a)for(s in o)r[s]=i(r[s],o[s]);else if(Array.isArray(r))e[a]=r.concat(o);else if(Array.isArray(o))e[a]=[r].concat(o);else for(s in o)r[s]=o[s];else e[a]=t[a];return e},{})}},\"o0k+\":function(e,t,n){n(\"cN90\"),n(\"OcRu\")},oBGI:function(e,t,n){var i=n(\"AAi1\").quadraticProjectPoint;t.containStroke=function(e,t,n,r,o,a,s,l,u){if(0===s)return!1;var c=s;return!(u>t+c&&u>r+c&&u>a+c||u<t-c&&u<r-c&&u<a-c||l>e+c&&l>n+c&&l>o+c||l<e-c&&l<n-c&&l<o-c)&&i(e,t,n,r,o,a,l,u,null)<=c/2}},oDOe:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=n(\"qjvV\"),o=n(\"0sHC\"),a=n(\"mcsk\"),s=n(\"1Hui\"),l=i.curry,u=i.each,c=i.map,h=Math.min,d=Math.max,f=Math.pow,p=1e4,g=6,m=6,v=\"globalPan\",y={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},b={w:\"ew\",e:\"ew\",n:\"ns\",s:\"ns\",ne:\"nesw\",sw:\"nesw\",nw:\"nwse\",se:\"nwse\"},x={brushStyle:{lineWidth:2,stroke:\"rgba(0,0,0,0.3)\",fill:\"rgba(0,0,0,0.1)\"},transformable:!0,brushMode:\"single\",removeOnClick:!1},_=0;function w(e){r.call(this),this._zr=e,this.group=new o.Group,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid=\"brushController_\"+_++,this._handlers={},u(Y,function(e,t){this._handlers[t]=i.bind(e,this)},this)}function C(e,t){var n=K[t.brushType].createCover(e,t);return n.__brushOption=t,T(n,t),e.group.add(n),n}function S(e,t){var n=D(t);return n.endCreating&&(n.endCreating(e,t),T(t,t.__brushOption)),t}function k(e,t){var n=t.__brushOption;D(t).updateCoverShape(e,t,n.range,n)}function T(e,t){var n=t.z;null==n&&(n=p),e.traverse(function(e){e.z=n,e.z2=n})}function M(e,t){D(t).updateCommon(e,t),k(e,t)}function D(e){return K[e.__brushOption.brushType]}function A(e,t,n){var i,r=e._panels;if(!r)return!0;var o=e._transform;return u(r,function(e){e.isTargetByCursor(t,n,o)&&(i=e)}),i}function I(e,t){var n=e._panels;if(!n)return!0;var i=t.__brushOption.panelId;return null==i||n[i]}function O(e){var t=e._covers,n=t.length;return u(t,function(t){e.group.remove(t)},e),t.length=0,!!n}function E(e,t){var n=c(e._covers,function(e){var t=e.__brushOption,n=i.clone(t.range);return{brushType:t.brushType,panelId:t.panelId,range:n}});e.trigger(\"brush\",n,{isEnd:!!t.isEnd,removeOnClick:!!t.removeOnClick})}function L(e){var t=e.length-1;return t<0&&(t=0),[e[0],e[t]]}function P(e,t,n,i){var r=new o.Group;return r.add(new o.Rect({name:\"main\",style:z(n),silent:!0,draggable:!0,cursor:\"move\",drift:l(e,t,r,\"nswe\"),ondragend:l(E,t,{isEnd:!0})})),u(i,function(n){r.add(new o.Rect({name:n,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:l(e,t,r,n),ondragend:l(E,t,{isEnd:!0})}))}),r}function N(e,t,n,i){var r=i.brushStyle.lineWidth||0,o=d(r,m),a=n[0][0],s=n[1][0],l=a-r/2,u=s-r/2,c=n[0][1],h=n[1][1],f=c-o+r/2,p=h-o+r/2,g=c-a,v=h-s,y=g+r,b=v+r;B(e,t,\"main\",a,s,g,v),i.transformable&&(B(e,t,\"w\",l,u,o,b),B(e,t,\"e\",f,u,o,b),B(e,t,\"n\",l,u,y,o),B(e,t,\"s\",l,p,y,o),B(e,t,\"nw\",l,u,o,o),B(e,t,\"ne\",f,u,o,o),B(e,t,\"sw\",l,p,o,o),B(e,t,\"se\",f,p,o,o))}function R(e,t){var n=t.__brushOption,i=n.transformable,r=t.childAt(0);r.useStyle(z(n)),r.attr({silent:!i,cursor:i?\"move\":\"default\"}),u([\"w\",\"e\",\"n\",\"s\",\"se\",\"sw\",\"ne\",\"nw\"],function(n){var r=t.childOfName(n),a=function e(t,n){if(n.length>1){n=n.split(\"\");var i=[e(t,n[0]),e(t,n[1])];return(\"e\"===i[0]||\"w\"===i[0])&&i.reverse(),i.join(\"\")}var i=o.transformDirection({w:\"left\",e:\"right\",n:\"top\",s:\"bottom\"}[n],function(e){return o.getTransform(e.group)}(t));return{left:\"w\",right:\"e\",top:\"n\",bottom:\"s\"}[i]}(e,n);r&&r.attr({silent:!i,invisible:!i,cursor:i?b[a]+\"-resize\":null})})}function B(e,t,n,i,r,o,a){var s,l,u,c,f,p=t.childOfName(n);p&&p.setShape((s=H(e,t,[[i,r],[i+o,r+a]]),l=h(s[0][0],s[1][0]),u=h(s[0][1],s[1][1]),c=d(s[0][0],s[1][0]),f=d(s[0][1],s[1][1]),{x:l,y:u,width:c-l,height:f-u}))}function z(e){return i.defaults({strokeNoScale:!0},e.brushStyle)}function F(e,t,n,i){var r=[h(e,n),h(t,i)],o=[d(e,n),d(t,i)];return[[r[0],o[0]],[r[1],o[1]]]}function $(e,t,n,i,r,o,a,s){var l=i.__brushOption,c=e(l.range),h=j(n,o,a);u(r.split(\"\"),function(e){var t=y[e];c[t[0]][t[1]]+=h[t[0]]}),l.range=t(F(c[0][0],c[1][0],c[0][1],c[1][1])),M(n,i),E(n,{isEnd:!1})}function V(e,t,n,i,r){var o=t.__brushOption.range,a=j(e,n,i);u(o,function(e){e[0]+=a[0],e[1]+=a[1]}),M(e,t),E(e,{isEnd:!1})}function j(e,t,n){var i=e.group,r=i.transformCoordToLocal(t,n),o=i.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function H(e,t,n){var r=I(e,t);return r&&!0!==r?r.clipPath(n,e._transform):i.clone(n)}function W(e){var t=e.event;t.preventDefault&&t.preventDefault()}function q(e,t,n){return e.childOfName(\"main\").contain(t,n)}function G(e,t,n,r){var o,a=e._creatingCover,s=e._creatingPanel,l=e._brushOption;if(e._track.push(n.slice()),function(e){var t=e._track;if(!t.length)return!1;var n=t[t.length-1],i=t[0],r=n[0]-i[0],o=n[1]-i[1];return f(r*r+o*o,.5)>g}(e)||a){if(s&&!a){\"single\"===l.brushMode&&O(e);var u=i.clone(l);u.brushType=U(u.brushType,s),u.panelId=!0===s?null:s.panelId,a=e._creatingCover=C(e,u),e._covers.push(a)}if(a){var c=K[U(e._brushType,s)];a.__brushOption.range=c.getCreatingRange(H(e,a,e._track)),r&&(S(e,a),c.updateCommon(e,a)),k(e,a),o={isEnd:r}}}else r&&\"single\"===l.brushMode&&l.removeOnClick&&A(e,t,n)&&O(e)&&(o={isEnd:r,removeOnClick:!0});return o}function U(e,t){return\"auto\"===e?t.defaultBrushType:e}w.prototype={constructor:w,enableBrush:function(e){var t,n;return this._brushType&&(n=(t=this)._zr,a.release(n,v,t._uid),function(e,t){u(t,function(t,n){e.off(n,t)})}(n,t._handlers),t._brushType=t._brushOption=null),e.brushType&&function(e,t){var n=e._zr;e._enableGlobalPan||a.take(n,v,e._uid);(function(e,t){u(t,function(t,n){e.on(n,t)})})(n,e._handlers),e._brushType=t.brushType,e._brushOption=i.merge(i.clone(x),t,!0)}(this,e),this},setPanels:function(e){if(e&&e.length){var t=this._panels={};i.each(e,function(e){t[e.panelId]=i.clone(e)})}else this._panels=null;return this},mount:function(e){e=e||{},this._enableGlobalPan=e.enableGlobalPan;var t=this.group;return this._zr.add(t),t.attr({position:e.position||[0,0],rotation:e.rotation||0,scale:e.scale||[1,1]}),this._transform=t.getLocalTransform(),this},eachCover:function(e,t){u(this._covers,e,t)},updateCovers:function(e){e=i.map(e,function(e){return i.merge(i.clone(x),e,!0)});var t=\"\\0-brush-index-\",n=this._covers,r=this._covers=[],o=this,a=this._creatingCover;return new s(n,e,function(e,t){return l(e.__brushOption,t)},l).add(u).update(u).remove(function(e){n[e]!==a&&o.group.remove(n[e])}).execute(),this;function l(e,n){return(null!=e.id?e.id:t+n)+\"-\"+e.brushType}function u(t,i){var s=e[t];if(null!=i&&n[i]===a)r[t]=n[i];else{var l=r[t]=null!=i?(n[i].__brushOption=s,n[i]):S(o,C(o,s));M(o,l)}}},unmount:function(){return this.enableBrush(!1),O(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},i.mixin(w,r);var Y={mousedown:function(e){if(this._dragging)X(this,e);else if(!e.target||!e.target.draggable){W(e);var t=this.group.transformCoordToLocal(e.offsetX,e.offsetY);this._creatingCover=null,(this._creatingPanel=A(this,e,t))&&(this._dragging=!0,this._track=[t.slice()])}},mousemove:function(e){var t=e.offsetX,n=e.offsetY,i=this.group.transformCoordToLocal(t,n);if(function(e,t,n){if(e._brushType&&!function(e,t,n){var i=e._zr;return t<0||t>i.getWidth()||n<0||n>i.getHeight()}(e,t)){var i=e._zr,r=e._covers,o=A(e,t,n);if(!e._dragging)for(var a=0;a<r.length;a++){var s=r[a].__brushOption;if(o&&(!0===o||s.panelId===o.panelId)&&K[s.brushType].contain(r[a],n[0],n[1]))return}o&&i.setCursorStyle(\"crosshair\")}}(this,e,i),this._dragging){W(e);var r=G(this,e,i,!1);r&&E(this,r)}},mouseup:function(e){X(this,e)}};function X(e,t){if(e._dragging){W(t);var n=t.offsetX,i=t.offsetY,r=G(e,t,e.group.transformCoordToLocal(n,i),!0);e._dragging=!1,e._track=[],e._creatingCover=null,r&&E(e,r)}}var K={lineX:Z(0),lineY:Z(1),rect:{createCover:function(e,t){return P(l($,function(e){return e},function(e){return e}),e,t,[\"w\",\"e\",\"n\",\"s\",\"se\",\"sw\",\"ne\",\"nw\"])},getCreatingRange:function(e){var t=L(e);return F(t[1][0],t[1][1],t[0][0],t[0][1])},updateCoverShape:function(e,t,n,i){N(e,t,n,i)},updateCommon:R,contain:q},polygon:{createCover:function(e,t){var n=new o.Group;return n.add(new o.Polyline({name:\"main\",style:z(t),silent:!0})),n},getCreatingRange:function(e){return e},endCreating:function(e,t){t.remove(t.childAt(0)),t.add(new o.Polygon({name:\"main\",draggable:!0,drift:l(V,e,t),ondragend:l(E,e,{isEnd:!0})}))},updateCoverShape:function(e,t,n,i){t.childAt(0).setShape({points:H(e,t,n)})},updateCommon:R,contain:q}};function Z(e){return{createCover:function(t,n){return P(l($,function(t){var n=[t,[0,100]];return e&&n.reverse(),n},function(t){return t[e]}),t,n,[[\"w\",\"e\"],[\"n\",\"s\"]][e])},getCreatingRange:function(t){var n=L(t);return[h(n[0][e],n[1][e]),d(n[0][e],n[1][e])]},updateCoverShape:function(t,n,i,r){var o,a=I(t,n);if(!0!==a&&a.getLinearBrushOtherExtent)o=a.getLinearBrushOtherExtent(e,t._transform);else{var s=t._zr;o=[0,[s.getWidth(),s.getHeight()][1-e]]}var l=[i,o];e&&l.reverse(),N(t,n,l,r)},updateCommon:R,contain:q}}var J=w;e.exports=J},oJvE:function(e,t,n){var i=n(\"/gxq\"),r=n(\"/86O\");function o(e){this._zr=e.getZr(),this._show=!1,this._hideTimeout}o.prototype={constructor:o,_enterable:!0,update:function(){},show:function(e){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr(\"show\",!0),this._show=!0},setContent:function(e,t,n){this.el&&this._zr.remove(this.el);for(var i={},o=e,a=o.indexOf(\"{marker\");a>=0;){var s=o.indexOf(\"|}\"),l=o.substr(a+\"{marker\".length,s-a-\"{marker\".length);l.indexOf(\"sub\")>-1?i[\"marker\"+l]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:t[l],textOffset:[3,0]}:i[\"marker\"+l]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:t[l]},a=(o=o.substr(s+1)).indexOf(\"{marker\")}this.el=new r({style:{rich:i,text:e,textLineHeight:20,textBackgroundColor:n.get(\"backgroundColor\"),textBorderRadius:n.get(\"borderRadius\"),textFill:n.get(\"textStyle.color\"),textPadding:n.get(\"padding\")},z:n.get(\"z\")}),this._zr.add(this.el);var u=this;this.el.on(\"mouseover\",function(){u._enterable&&(clearTimeout(u._hideTimeout),u._show=!0),u._inContent=!0}),this.el.on(\"mouseout\",function(){u._enterable&&u._show&&u.hideLater(u._hideDelay),u._inContent=!1})},setEnterable:function(e){this._enterable=e},getSize:function(){var e=this.el.getBoundingRect();return[e.width,e.height]},moveTo:function(e,t){this.el&&this.el.attr(\"position\",[e,t])},hide:function(){this.el&&this.el.hide(),this._show=!1},hideLater:function(e){!this._show||this._inContent&&this._enterable||(e?(this._hideDelay=e,this._show=!1,this._hideTimeout=setTimeout(i.bind(this.hide,this),e)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){var e=this.getSize();return{width:e[0],height:e[1]}}};var a=o;e.exports=a},oYIf:function(e,t,n){var i=n(\"/gxq\"),r=n(\"8b51\"),o=n(\"dOVI\"),a=n(\"0sHC\"),s=n(\"1Xuh\"),l=n(\"Gp87\"),u=n(\"Pwgp\"),c=n(\"kK7q\").createSymbol,h=n(\"3yJd\"),d=n(\"wWR3\"),f=n(\"HHfb\").encodeHTML,p=i.bind,g=i.each,m=Math.PI,v=l.extend({type:\"timeline.slider\",init:function(e,t){this.api=t,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(e,t,n,i){if(this.model=e,this.api=n,this.ecModel=t,this.group.removeAll(),e.get(\"show\",!0)){var r=this._layout(e,n),o=this._createGroup(\"mainGroup\"),a=this._createGroup(\"labelGroup\"),s=this._axis=this._createAxis(r,e);e.formatTooltip=function(e){return f(s.scale.getLabel(e))},g([\"AxisLine\",\"AxisTick\",\"Control\",\"CurrentPointer\"],function(t){this[\"_render\"+t](r,o,s,e)},this),this._renderAxisLabel(r,a,s,e),this._position(r,e)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(e,t){var n=e.get(\"label.position\"),i=e.get(\"orient\"),r=function(e,t){return s.getLayoutRect(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()},e.get(\"padding\"))}(e,t);null==n||\"auto\"===n?n=\"horizontal\"===i?r.y+r.height/2<t.getHeight()/2?\"-\":\"+\":r.x+r.width/2<t.getWidth()/2?\"+\":\"-\":isNaN(n)&&(n={horizontal:{top:\"-\",bottom:\"+\"},vertical:{left:\"-\",right:\"+\"}}[i][n]);var o,a,l,u,c={horizontal:\"center\",vertical:n>=0||\"+\"===n?\"left\":\"right\"},h={horizontal:n>=0||\"+\"===n?\"top\":\"bottom\",vertical:\"middle\"},d={horizontal:0,vertical:m/2},f=\"vertical\"===i?r.height:r.width,p=e.getModel(\"controlStyle\"),g=p.get(\"show\",!0),v=g?p.get(\"itemSize\"):0,y=g?p.get(\"itemGap\"):0,b=v+y,x=e.get(\"label.rotate\")||0;x=x*m/180;var _=p.get(\"position\",!0),w=g&&p.get(\"showPlayBtn\",!0),C=g&&p.get(\"showPrevBtn\",!0),S=g&&p.get(\"showNextBtn\",!0),k=0,T=f;return\"left\"===_||\"bottom\"===_?(w&&(o=[0,0],k+=b),C&&(a=[k,0],k+=b),S&&(l=[T-v,0],T-=b)):(w&&(o=[T-v,0],T-=b),C&&(a=[0,0],k+=b),S&&(l=[T-v,0],T-=b)),u=[k,T],e.get(\"inverse\")&&u.reverse(),{viewRect:r,mainLength:f,orient:i,rotation:d[i],labelRotation:x,labelPosOpt:n,labelAlign:e.get(\"label.align\")||c[i],labelBaseline:e.get(\"label.verticalAlign\")||e.get(\"label.baseline\")||h[i],playPosition:o,prevBtnPosition:a,nextBtnPosition:l,axisExtent:u,controlSize:v,controlGap:y}},_position:function(e,t){var n=this._mainGroup,i=this._labelGroup,r=e.viewRect;if(\"vertical\"===e.orient){var a=o.create(),s=r.x,l=r.y+r.height;o.translate(a,a,[-s,-l]),o.rotate(a,a,-m/2),o.translate(a,a,[s,l]),(r=r.clone()).applyTransform(a)}var u=y(r),c=y(n.getBoundingRect()),h=y(i.getBoundingRect()),d=n.position,f=i.position;f[0]=d[0]=u[0][0];var p,g=e.labelPosOpt;isNaN(g)?(b(d,c,u,1,p=\"+\"===g?0:1),b(f,h,u,1,1-p)):(b(d,c,u,1,p=g>=0?0:1),f[1]=d[1]+g);function v(e){var t=e.position;e.origin=[u[0][0]-t[0],u[1][0]-t[1]]}function y(e){return[[e.x,e.x+e.width],[e.y,e.y+e.height]]}function b(e,t,n,i,r){e[i]+=n[i][r]-t[i][r]}n.attr(\"position\",d),i.attr(\"position\",f),n.rotation=i.rotation=e.rotation,v(n),v(i)},_createAxis:function(e,t){var n=t.getData(),i=t.get(\"axisType\"),r=h.createScaleByModel(t,i);r.getTicks=function(){return n.mapArray([\"value\"],function(e){return e})};var o=n.getDataExtent(\"value\");r.setExtent(o[0],o[1]),r.niceTicks();var a=new u(\"value\",r,e.axisExtent,i);return a.model=t,a},_createGroup:function(e){var t=this[\"_\"+e]=new a.Group;return this.group.add(t),t},_renderAxisLine:function(e,t,n,r){var o=n.getExtent();r.get(\"lineStyle.show\")&&t.add(new a.Line({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:i.extend({lineCap:\"round\"},r.getModel(\"lineStyle\").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(e,t,n,i){var r=i.getData(),o=n.scale.getTicks();g(o,function(e){var o=n.dataToCoord(e),s=r.getItemModel(e),l=s.getModel(\"itemStyle\"),u=s.getModel(\"emphasis.itemStyle\"),c={position:[o,0],onclick:p(this._changeTimeline,this,e)},h=y(s,l,t,c);a.setHoverStyle(h,u.getItemStyle()),s.get(\"tooltip\")?(h.dataIndex=e,h.dataModel=i):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(e,t,n,i){if(n.getLabelModel().get(\"show\")){var r=i.getData(),o=n.getViewLabels();g(o,function(i){var o=i.tickValue,s=r.getItemModel(o),l=s.getModel(\"label\"),u=s.getModel(\"emphasis.label\"),c=n.dataToCoord(i.tickValue),h=new a.Text({position:[c,0],rotation:e.labelRotation-e.rotation,onclick:p(this._changeTimeline,this,o),silent:!1});a.setTextStyle(h.style,l,{text:i.formattedLabel,textAlign:e.labelAlign,textVerticalAlign:e.labelBaseline}),t.add(h),a.setHoverStyle(h,a.setTextStyle({},u))},this)}},_renderControl:function(e,t,n,o){var s=e.controlSize,l=e.rotation,u=o.getModel(\"controlStyle\").getItemStyle(),c=o.getModel(\"emphasis.controlStyle\").getItemStyle(),h=[0,-s/2,s,s],d=o.getPlayState(),f=o.get(\"inverse\",!0);function g(e,n,d,f){if(e){var p=function(e,t,n,o){return a.makePath(e.get(t).replace(/^path:\\/\\//,\"\"),i.clone(o||{}),new r(n[0],n[1],n[2],n[3]),\"center\")}(o,n,h,{position:e,origin:[s/2,0],rotation:f?-l:0,rectHover:!0,style:u,onclick:d});t.add(p),a.setHoverStyle(p,c)}}g(e.nextBtnPosition,\"controlStyle.nextIcon\",p(this._changeTimeline,this,f?\"-\":\"+\")),g(e.prevBtnPosition,\"controlStyle.prevIcon\",p(this._changeTimeline,this,f?\"+\":\"-\")),g(e.playPosition,\"controlStyle.\"+(d?\"stopIcon\":\"playIcon\"),p(this._handlePlayClick,this,!d),!0)},_renderCurrentPointer:function(e,t,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel(\"checkpointStyle\"),s=this,l={onCreate:function(e){e.draggable=!0,e.drift=p(s._handlePointerDrag,s),e.ondragend=p(s._handlePointerDragend,s),b(e,o,n,i,!0)},onUpdate:function(e){b(e,o,n,i)}};this._currentPointer=y(a,a,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(e){this._clearTimer(),this.api.dispatchAction({type:\"timelinePlayChange\",playState:e,from:this.uid})},_handlePointerDrag:function(e,t,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},_handlePointerDragend:function(e){this._pointerChangeTimeline([e.offsetX,e.offsetY],!0)},_pointerChangeTimeline:function(e,t){var n=this._toAxisCoord(e)[0],i=this._axis,r=d.asc(i.getExtent().slice());n>r[1]&&(n=r[1]),n<r[0]&&(n=r[0]),this._currentPointer.position[0]=n,this._currentPointer.dirty();var o=this._findNearestTick(n),a=this.model;(t||o!==a.getCurrentIndex()&&a.get(\"realtime\"))&&this._changeTimeline(o)},_doPlayStop:function(){this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout(p(function(){var e=this.model;this._changeTimeline(e.getCurrentIndex()+(e.get(\"rewind\",!0)?-1:1))},this),this.model.get(\"playInterval\")))},_toAxisCoord:function(e){var t=this._mainGroup.getLocalTransform();return a.applyTransform(e,t,!0)},_findNearestTick:function(e){var t,n=this.model.getData(),i=1/0,r=this._axis;return n.each([\"value\"],function(n,o){var a=r.dataToCoord(n),s=Math.abs(a-e);s<i&&(i=s,t=o)}),t},_clearTimer:function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},_changeTimeline:function(e){var t=this.model.getCurrentIndex();\"+\"===e?e=t+1:\"-\"===e&&(e=t-1),this.api.dispatchAction({type:\"timelineChange\",currentIndex:e,from:this.uid})}});function y(e,t,n,r,o,a){var s=t.get(\"color\");if(o)o.setColor(s),n.add(o),a&&a.onUpdate(o);else{var l=e.get(\"symbol\");(o=c(l,-1,-1,2,2,s)).setStyle(\"strokeNoScale\",!0),n.add(o),a&&a.onCreate(o)}var u=t.getItemStyle([\"color\",\"symbol\",\"symbolSize\"]);o.setStyle(u),r=i.merge({rectHover:!0,z2:100},r,!0);var h=e.get(\"symbolSize\");(h=h instanceof Array?h.slice():[+h,+h])[0]/=2,h[1]/=2,r.scale=h;var f=e.get(\"symbolOffset\");if(f){var p=r.position=r.position||[0,0];p[0]+=d.parsePercent(f[0],h[0]),p[1]+=d.parsePercent(f[1],h[1])}var g=e.get(\"symbolRotate\");return r.rotation=(g||0)*Math.PI/180||0,o.attr(r),o.updateTransform(),o}function b(e,t,n,i,r){if(!e.dragging){var o=i.getModel(\"checkpointStyle\"),a=n.dataToCoord(i.getData().get([\"value\"],t));r||!o.get(\"animation\",!0)?e.attr({position:[a,0]}):(e.stopAnimation(!0),e.animateTo({position:[a,0]},o.get(\"animationDuration\",!0),o.get(\"animationEasing\",!0)))}}e.exports=v},od06:function(e,t,n){n(\"Y5nL\").registerSubTypeDefaulter(\"timeline\",function(){return\"slider\"})},\"og9+\":function(e,t){function n(e,t){var n=e[t]-e[1-t];return{span:Math.abs(n),sign:n>0?-1:n<0?1:t?-1:1}}function i(e,t){return Math.min(null!=t[1]?t[1]:1/0,Math.max(null!=t[0]?t[0]:-1/0,e))}e.exports=function(e,t,r,o,a,s){e=e||0;var l=r[1]-r[0];if(null!=a&&(a=i(a,[0,l])),null!=s&&(s=Math.max(s,null!=a?a:0)),\"all\"===o){var u=Math.abs(t[1]-t[0]);a=s=i(u=i(u,[0,l]),[a,s]),o=0}t[0]=i(t[0],r),t[1]=i(t[1],r);var c=n(t,o);t[o]+=e;var h=a||0,d=r.slice();c.sign<0?d[0]+=h:d[1]-=h,t[o]=i(t[o],d);var f=n(t,o);return null!=a&&(f.sign!==c.sign||f.span<a)&&(t[1-o]=t[o]+c.sign*a),f=n(t,o),null!=s&&f.span>s&&(t[1-o]=t[o]+f.sign*s),t}},oqQy:function(e,t,n){var i=n(\"/gxq\"),r=n(\"vjPX\"),o=n(\"0sHC\"),a=n(\"fzS+\"),s=n(\"43ae\"),l=n(\"LKZ0\"),u=l.rectCoordAxisBuildSplitArea,c=l.rectCoordAxisHandleRemove,h=[\"axisLine\",\"axisTickLabel\",\"axisName\"],d=[\"splitArea\",\"splitLine\"],f=s.extend({type:\"singleAxis\",axisPointerClass:\"SingleAxisPointer\",render:function(e,t,n,s){var l=this.group;l.removeAll();var u=this._axisGroup;this._axisGroup=new o.Group;var c=a.layout(e),p=new r(e,c);i.each(h,p.add,p),l.add(this._axisGroup),l.add(p.getGroup()),i.each(d,function(t){e.get(t+\".show\")&&this[\"_\"+t](e)},this),o.groupTransition(u,this._axisGroup,e),f.superCall(this,\"render\",e,t,n,s)},remove:function(){c(this)},_splitLine:function(e){var t=e.axis;if(!t.scale.isBlank()){var n=e.getModel(\"splitLine\"),i=n.getModel(\"lineStyle\"),r=i.get(\"width\"),a=i.get(\"color\");a=a instanceof Array?a:[a];for(var s=e.coordinateSystem.getRect(),l=t.isHorizontal(),u=[],c=0,h=t.getTicksCoords({tickModel:n}),d=[],f=[],p=0;p<h.length;++p){var g=t.toGlobalCoord(h[p].coord);l?(d[0]=g,d[1]=s.y,f[0]=g,f[1]=s.y+s.height):(d[0]=s.x,d[1]=g,f[0]=s.x+s.width,f[1]=g);var m=c++%a.length;u[m]=u[m]||[],u[m].push(new o.Line({subPixelOptimize:!0,shape:{x1:d[0],y1:d[1],x2:f[0],y2:f[1]},style:{lineWidth:r},silent:!0}))}for(p=0;p<u.length;++p)this.group.add(o.mergePath(u[p],{style:{stroke:a[p%a.length],lineDash:i.getLineDash(r),lineWidth:r},silent:!0}))}},_splitArea:function(e){u(this,this._axisGroup,e,e)}}),p=f;e.exports=p},orbS:function(e,t){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=124)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},124:function(e,t,n){\"use strict\";n.r(t);var i={name:\"ElTag\",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:\"light\",validator:function(e){return-1!==[\"dark\",\"light\",\"plain\"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit(\"close\",e)},handleClick:function(e){this.$emit(\"click\",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,n=this.tagSize,i=this.hit,r=this.effect,o=e(\"span\",{class:[\"el-tag\",t?\"el-tag--\"+t:\"\",n?\"el-tag--\"+n:\"\",r?\"el-tag--\"+r:\"\",i&&\"is-hit\"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e(\"i\",{class:\"el-tag__close el-icon-close\",on:{click:this.handleClose}})]);return this.disableTransitions?o:e(\"transition\",{attrs:{name:\"el-zoom-in-center\"}},[o])}},r=n(0),o=Object(r.a)(i,void 0,void 0,!1,null,null,null);o.options.__file=\"packages/tag/src/tag.vue\";var a=o.exports;a.install=function(e){e.component(a.name,a)};t.default=a}})},orv6:function(e,t,n){var i=n(\"Mlni\").extend({type:\"markPoint\",defaultOption:{zlevel:0,z:5,symbol:\"pin\",symbolSize:50,tooltip:{trigger:\"item\"},label:{show:!0,position:\"inside\"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});e.exports=i},p1Ck:function(e,t,n){var i=n(\"Icdr\");n(\"TTCf\"),n(\"ARaV\"),i.registerPreprocessor(function(e){e.markLine=e.markLine||{}})},pFYg:function(e,t,n){\"use strict\";t.__esModule=!0;var i=a(n(\"Zzip\")),r=a(n(\"5QVw\")),o=\"function\"==typeof r.default&&\"symbol\"==typeof i.default?function(e){return typeof e}:function(e){return e&&\"function\"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?\"symbol\":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default=\"function\"==typeof r.default&&\"symbol\"===o(i.default)?function(e){return void 0===e?\"undefined\":o(e)}:function(e){return e&&\"function\"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?\"symbol\":void 0===e?\"undefined\":o(e)}},pSwa:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o={NONE:\"none\",DESCENDANT:\"descendant\",ANCESTOR:\"ancestor\",SELF:\"self\"},a=2,s=4;function l(e,t,n){r.Group.call(this);var i=new r.Sector({z2:a});i.seriesIndex=t.seriesIndex;var o=new r.Text({z2:s,silent:e.getModel(\"label\").get(\"silent\")});function l(){o.ignore=o.hoverIgnore}function u(){o.ignore=o.normalIgnore}this.add(i),this.add(o),this.updateData(!0,e,\"normal\",t,n),this.on(\"emphasis\",l).on(\"normal\",u).on(\"mouseover\",l).on(\"mouseout\",u)}var u=l.prototype;u.updateData=function(e,t,n,o,a){this.node=t,t.piece=this,o=o||this._seriesModel,a=a||this._ecModel;var s=this.childAt(0);s.dataIndex=t.dataIndex;var l=t.getModel(),u=t.getLayout(),c=i.extend({},u);c.label=null;var h=function(e,t,n){var r=e.getVisual(\"color\"),o=e.getVisual(\"visualMeta\");o&&0!==o.length||(r=null);var a=e.getModel(\"itemStyle\").get(\"color\");if(a)return a;if(r)return r;if(0===e.depth)return n.option.color[0];var s=n.option.color.length;a=n.option.color[function(e){var t=e;for(;t.depth>1;)t=t.parentNode;var n=e.getAncestors()[0];return i.indexOf(n.children,t)}(e)%s];return a}(t,0,a);!function(e,t,n){t.getData().setItemVisual(e.dataIndex,\"color\",n)}(t,o,h);var d,f=l.getModel(\"itemStyle\").getItemStyle();if(\"normal\"===n)d=f;else{var p=l.getModel(n+\".itemStyle\").getItemStyle();d=i.merge(p,f)}d=i.defaults({lineJoin:\"bevel\",fill:d.fill||h},d),e?(s.setShape(c),s.shape.r=u.r0,r.updateProps(s,{shape:{r:u.r}},o,t.dataIndex),s.useStyle(d)):\"object\"==typeof d.fill&&d.fill.type||\"object\"==typeof s.style.fill&&s.style.fill.type?(r.updateProps(s,{shape:c},o),s.useStyle(d)):r.updateProps(s,{shape:c,style:d},o),this._updateLabel(o,h,n);var g=l.getShallow(\"cursor\");if(g&&s.attr(\"cursor\",g),e){var m=o.getShallow(\"highlightPolicy\");this._initEvents(s,t,o,m)}this._seriesModel=o||this._seriesModel,this._ecModel=a||this._ecModel,r.setHoverStyle(this)},u.onEmphasis=function(e){var t=this;this.node.hostTree.root.eachNode(function(n){var i,r,a;n.piece&&(t.node===n?n.piece.updateData(!1,n,\"emphasis\"):(i=n,r=t.node,(a=e)!==o.NONE&&(a===o.SELF?i===r:a===o.ANCESTOR?i===r||i.isAncestorOf(r):i===r||i.isDescendantOf(r))?n.piece.childAt(0).trigger(\"highlight\"):e!==o.NONE&&n.piece.childAt(0).trigger(\"downplay\")))})},u.onNormal=function(){this.node.hostTree.root.eachNode(function(e){e.piece&&e.piece.updateData(!1,e,\"normal\")})},u.onHighlight=function(){this.updateData(!1,this.node,\"highlight\")},u.onDownplay=function(){this.updateData(!1,this.node,\"downplay\")},u._updateLabel=function(e,t,n){var o=this.node.getModel(),a=o.getModel(\"label\"),s=\"normal\"===n||\"emphasis\"===n?a:o.getModel(n+\".label\"),l=o.getModel(\"emphasis.label\"),u=i.retrieve(e.getFormattedLabel(this.node.dataIndex,n,null,null,\"label\"),this.node.name);!1===k(\"show\")&&(u=\"\");var c=this.node.getLayout(),h=s.get(\"minAngle\");null==h&&(h=a.get(\"minAngle\")),h=h/180*Math.PI;var d=c.endAngle-c.startAngle;null!=h&&Math.abs(d)<h&&(u=\"\");var f=this.childAt(1);r.setLabelStyle(f.style,f.hoverStyle||{},a,l,{defaultText:s.getShallow(\"show\")?u:null,autoColor:t,useInsideStyle:!0});var p,g=(c.startAngle+c.endAngle)/2,m=Math.cos(g),v=Math.sin(g),y=k(\"position\"),b=k(\"distance\")||0,x=k(\"align\");\"outside\"===y?(p=c.r+b,x=g>Math.PI/2?\"right\":\"left\"):x&&\"center\"!==x?\"left\"===x?(p=c.r0+b,g>Math.PI/2&&(x=\"right\")):\"right\"===x&&(p=c.r-b,g>Math.PI/2&&(x=\"left\")):(p=(c.r+c.r0)/2,x=\"center\"),f.attr(\"style\",{text:u,textAlign:x,textVerticalAlign:k(\"verticalAlign\")||\"middle\",opacity:k(\"opacity\")});var _=p*m+c.cx,w=p*v+c.cy;f.attr(\"position\",[_,w]);var C=k(\"rotate\"),S=0;function k(e){var t=s.get(e);return null==t?a.get(e):t}\"radial\"===C?(S=-g)<-Math.PI/2&&(S+=Math.PI):\"tangential\"===C?(S=Math.PI/2-g)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):\"number\"==typeof C&&(S=C*Math.PI/180),f.attr(\"rotation\",S)},u._initEvents=function(e,t,n,i){e.off(\"mouseover\").off(\"mouseout\").off(\"emphasis\").off(\"normal\");var r=this,o=function(){r.onEmphasis(i)},a=function(){r.onNormal()};n.isAnimationEnabled()&&e.on(\"mouseover\",o).on(\"mouseout\",a).on(\"emphasis\",o).on(\"normal\",a).on(\"downplay\",function(){r.onDownplay()}).on(\"highlight\",function(){r.onHighlight()})},i.inherits(l,r.Group);var c=l;e.exports=c},pmYM:function(e,t,n){var i=n(\"ao1T\"),r=n(\"EJsE\").extend({type:\"series.scatter\",dependencies:[\"grid\",\"polar\",\"geo\",\"singleAxis\",\"calendar\"],getInitialData:function(e,t){return i(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:\"point\",getProgressive:function(){var e=this.option.progressive;return null==e?this.option.large?5e3:this.get(\"progressive\"):e},getProgressiveThreshold:function(){var e=this.option.progressiveThreshold;return null==e?this.option.large?1e4:this.get(\"progressiveThreshold\"):e},defaultOption:{coordinateSystem:\"cartesian2d\",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},clip:!0}});e.exports=r},pzOI:function(e,t,n){var i=n(\"ITiI\").forceLayout,r=n(\"rbn0\").simpleLayout,o=n(\"LRsb\").circularLayout,a=n(\"wWR3\").linearMap,s=n(\"C7PF\"),l=n(\"/gxq\");e.exports=function(e){e.eachSeriesByType(\"graph\",function(e){if(!(v=e.coordinateSystem)||\"view\"===v.type)if(\"force\"===e.get(\"layout\")){var t=e.preservedPoints||{},n=e.getGraph(),u=n.data,c=n.edgeData,h=e.getModel(\"force\"),d=h.get(\"initLayout\");e.preservedPoints?u.each(function(e){var n=u.getId(e);u.setItemLayout(e,t[n]||[NaN,NaN])}):d&&\"none\"!==d?\"circular\"===d&&o(e,\"value\"):r(e);var f=u.getDataExtent(\"value\"),p=c.getDataExtent(\"value\"),g=h.get(\"repulsion\"),m=h.get(\"edgeLength\");l.isArray(g)||(g=[g,g]),l.isArray(m)||(m=[m,m]),m=[m[1],m[0]];var v,y=u.mapArray(\"value\",function(e,t){var n=u.getItemLayout(t),i=a(e,f,g);return isNaN(i)&&(i=(g[0]+g[1])/2),{w:i,rep:i,fixed:u.getItemModel(t).get(\"fixed\"),p:!n||isNaN(n[0])||isNaN(n[1])?null:n}}),b=c.mapArray(\"value\",function(e,t){var i=n.getEdgeByIndex(t),r=a(e,p,m);isNaN(r)&&(r=(m[0]+m[1])/2);var o=i.getModel();return{n1:y[i.node1.dataIndex],n2:y[i.node2.dataIndex],d:r,curveness:o.get(\"lineStyle.curveness\")||0,ignoreForceLayout:o.get(\"ignoreForceLayout\")}}),x=(v=e.coordinateSystem).getBoundingRect(),_=i(y,b,{rect:x,gravity:h.get(\"gravity\"),friction:h.get(\"friction\")}),w=_.step;_.step=function(e){for(var i=0,r=y.length;i<r;i++)y[i].fixed&&s.copy(y[i].p,n.getNodeByIndex(i).getLayout());w(function(i,r,o){for(var a=0,l=i.length;a<l;a++)i[a].fixed||n.getNodeByIndex(a).setLayout(i[a].p),t[u.getId(a)]=i[a].p;for(a=0,l=r.length;a<l;a++){var c=r[a],h=n.getEdgeByIndex(a),d=c.n1.p,f=c.n2.p,p=h.getLayout();(p=p?p.slice():[])[0]=p[0]||[],p[1]=p[1]||[],s.copy(p[0],d),s.copy(p[1],f),+c.curveness&&(p[2]=[(d[0]+f[0])/2-(d[1]-f[1])*c.curveness,(d[1]+f[1])/2-(f[0]-d[0])*c.curveness]),h.setLayout(p)}e&&e(o)})},e.forceLayout=_,e.preservedPoints=t,_.step()}else e.forceLayout=null})}},qBny:function(e,t,n){var i=n(\"/gxq\"),r=n(\"EJsE\"),o=n(\"+jMe\"),a=n(\"gOx9\").wrapTreePathInfo,s=r.extend({type:\"series.sunburst\",_viewRoot:null,getInitialData:function(e,t){var n={name:e.name,children:e.data};!function e(t){var n=0;i.each(t.children,function(t){e(t);var r=t.value;i.isArray(r)&&(r=r[0]),n+=r});var r=t.value;i.isArray(r)&&(r=r[0]);(null==r||isNaN(r))&&(r=n);r<0&&(r=0);i.isArray(t.value)?t.value[0]=r:t.value=r}(n);var r=e.levels||[],a={};return a.levels=r,o.createTree(n,this,a).data},optionUpdated:function(){this.resetViewRoot()},getDataParams:function(e){var t=r.prototype.getDataParams.apply(this,arguments),n=this.getData().tree.getNodeByDataIndex(e);return t.treePathInfo=a(n,this),t},defaultOption:{zlevel:0,z:2,center:[\"50%\",\"50%\"],radius:[0,\"75%\"],clockwise:!0,startAngle:90,minAngle:0,percentPrecision:2,stillShowZeroSum:!0,highlightPolicy:\"descendant\",nodeClick:\"rootToNode\",renderLabelForZeroData:!1,label:{rotate:\"radial\",show:!0,opacity:1,align:\"center\",position:\"inside\",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:\"white\",borderType:\"solid\",shadowBlur:0,shadowColor:\"rgba(0, 0, 0, 0.2)\",shadowOffsetX:0,shadowOffsetY:0,opacity:1},highlight:{itemStyle:{opacity:1}},downplay:{itemStyle:{opacity:.5},label:{opacity:.6}},animationType:\"expansion\",animationDuration:1e3,animationDurationUpdate:500,animationEasing:\"cubicOut\",data:[],levels:[],sort:\"desc\"},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(e){e?this._viewRoot=e:e=this._viewRoot;var t=this.getRawData().tree.root;e&&(e===t||t.contains(e))||(this._viewRoot=t)}});e.exports=s},qSkD:function(e,t,n){var i=n(\"sYrQ\");n(\"rctg\").register(\"parallel\",{create:function(e,t){var n=[];return e.eachComponent(\"parallel\",function(r,o){var a=new i(r,e,t);a.name=\"parallel_\"+o,a.resize(r,t),r.coordinateSystem=a,a.model=r,n.push(a)}),e.eachSeries(function(t){if(\"parallel\"===t.get(\"coordinateSystem\")){var n=e.queryComponents({mainType:\"parallel\",index:t.get(\"parallelIndex\"),id:t.get(\"parallelId\")})[0];t.coordinateSystem=n.coordinateSystem}}),n}})},qVJQ:function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=i.isString;function a(e,t){return!!t&&t===e.getCalculationInfo(\"stackedDimension\")}t.enableDataStack=function(e,t,n){var i,a,s,l,u=(n=n||{}).byIndex,c=n.stackedCoordDimension,h=!(!e||!e.get(\"stack\"));if(r(t,function(e,n){o(e)&&(t[n]=e={name:e}),h&&!e.isExtraCoord&&(u||i||!e.ordinalMeta||(i=e),a||\"ordinal\"===e.type||\"time\"===e.type||c&&c!==e.coordDim||(a=e))}),!a||u||i||(u=!0),a){s=\"__\\0ecstackresult\",l=\"__\\0ecstackedover\",i&&(i.createInvertedIndices=!0);var d=a.coordDim,f=a.type,p=0;r(t,function(e){e.coordDim===d&&p++}),t.push({name:s,coordDim:d,coordDimIndex:p,type:f,isExtraCoord:!0,isCalculationCoord:!0}),p++,t.push({name:l,coordDim:l,coordDimIndex:p,type:f,isExtraCoord:!0,isCalculationCoord:!0})}return{stackedDimension:a&&a.name,stackedByDimension:i&&i.name,isStackedByIndex:u,stackedOverDimension:l,stackResultDimension:s}},t.isDimensionStacked=a,t.getStackedDimension=function(e,t){return a(e,t)?e.getCalculationInfo(\"stackResultDimension\"):t}},qbKW:function(e,t,n){var i=n(\"Icdr\");n(\"FlXs\"),n(\"+bDV\"),n(\"2Ow2\");var r=n(\"CWSg\");i.registerVisual(r)},qio6:function(e,t,n){var i=n(\"evD5\"),r=n(\"77Pl\"),o=n(\"lktj\");e.exports=n(\"+E39\")?Object.defineProperties:function(e,t){r(e);for(var n,a=o(t),s=a.length,l=0;s>l;)i.f(e,n=a[l++],t[n]);return e}},qjrH:function(e,t,n){var i=n(\"/gxq\"),r=i.retrieve2,o=i.retrieve3,a=i.each,s=i.normalizeCssArray,l=i.isString,u=i.isObject,c=n(\"3h1/\"),h=n(\"Sm9T\"),d=n(\"+Y0c\"),f=n(\"9b8q\"),p=n(\"28kU\"),g=p.ContextCachedBy,m=p.WILL_BE_RESTORED,v=c.DEFAULT_FONT,y={left:1,right:1,center:1},b={top:1,bottom:1,middle:1},x=[[\"textShadowBlur\",\"shadowBlur\",0],[\"textShadowOffsetX\",\"shadowOffsetX\",0],[\"textShadowOffsetY\",\"shadowOffsetY\",0],[\"textShadowColor\",\"shadowColor\",\"transparent\"]],_={},w={};function C(e){if(e){e.font=c.makeFont(e);var t=e.textAlign;\"middle\"===t&&(t=\"center\"),e.textAlign=null==t||y[t]?t:\"left\";var n=e.textVerticalAlign||e.textBaseline;\"center\"===n&&(n=\"middle\"),e.textVerticalAlign=null==n||b[n]?n:\"top\",e.textPadding&&(e.textPadding=s(e.textPadding))}}function S(e,t,n,i,r){if(n&&t.textRotation){var o=t.textOrigin;\"center\"===o?(i=n.width/2+n.x,r=n.height/2+n.y):o&&(i=o[0]+n.x,r=o[1]+n.y),e.translate(i,r),e.rotate(-t.textRotation),e.translate(-i,-r)}}function k(e,t,n,i,a,s,l,u){var c=i.rich[n.styleName]||{};c.text=n.text;var h=n.textVerticalAlign,d=s+a/2;\"top\"===h?d=s+n.height/2:\"bottom\"===h&&(d=s+a-n.height/2),!n.isLineHolder&&T(c)&&M(e,t,c,\"right\"===u?l-n.width:\"center\"===u?l-n.width/2:l,d-n.height/2,n.width,n.height);var f=n.textPadding;f&&(l=P(l,u,f),d-=n.height/2-f[2]-n.textHeight/2),I(t,\"shadowBlur\",o(c.textShadowBlur,i.textShadowBlur,0)),I(t,\"shadowColor\",c.textShadowColor||i.textShadowColor||\"transparent\"),I(t,\"shadowOffsetX\",o(c.textShadowOffsetX,i.textShadowOffsetX,0)),I(t,\"shadowOffsetY\",o(c.textShadowOffsetY,i.textShadowOffsetY,0)),I(t,\"textAlign\",u),I(t,\"textBaseline\",\"middle\"),I(t,\"font\",n.font||v);var p=O(c.textStroke||i.textStroke,m),g=E(c.textFill||i.textFill),m=r(c.textStrokeWidth,i.textStrokeWidth);p&&(I(t,\"lineWidth\",m),I(t,\"strokeStyle\",p),t.strokeText(n.text,l,d)),g&&(I(t,\"fillStyle\",g),t.fillText(n.text,l,d))}function T(e){return!!(e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor)}function M(e,t,n,i,r,o,a){var s=n.textBackgroundColor,c=n.textBorderWidth,f=n.textBorderColor,p=l(s);if(I(t,\"shadowBlur\",n.textBoxShadowBlur||0),I(t,\"shadowColor\",n.textBoxShadowColor||\"transparent\"),I(t,\"shadowOffsetX\",n.textBoxShadowOffsetX||0),I(t,\"shadowOffsetY\",n.textBoxShadowOffsetY||0),p||c&&f){t.beginPath();var g=n.textBorderRadius;g?h.buildPath(t,{x:i,y:r,width:o,height:a,r:g}):t.rect(i,r,o,a),t.closePath()}if(p)if(I(t,\"fillStyle\",s),null!=n.fillOpacity){var m=t.globalAlpha;t.globalAlpha=n.fillOpacity*n.opacity,t.fill(),t.globalAlpha=m}else t.fill();else if(u(s)){var v=s.image;(v=d.createOrUpdateImage(v,null,e,D,s))&&d.isImageReady(v)&&t.drawImage(v,i,r,o,a)}if(c&&f)if(I(t,\"lineWidth\",c),I(t,\"strokeStyle\",f),null!=n.strokeOpacity){m=t.globalAlpha;t.globalAlpha=n.strokeOpacity*n.opacity,t.stroke(),t.globalAlpha=m}else t.stroke()}function D(e,t){t.image=e}function A(e,t,n,i){var r=n.x||0,o=n.y||0,a=n.textAlign,s=n.textVerticalAlign;if(i){var l=n.textPosition;if(l instanceof Array)r=i.x+L(l[0],i.width),o=i.y+L(l[1],i.height);else{var u=t&&t.calculateTextPosition?t.calculateTextPosition(_,n,i):c.calculateTextPosition(_,n,i);r=u.x,o=u.y,a=a||u.textAlign,s=s||u.textVerticalAlign}var h=n.textOffset;h&&(r+=h[0],o+=h[1])}return(e=e||{}).baseX=r,e.baseY=o,e.textAlign=a,e.textVerticalAlign=s,e}function I(e,t,n){return e[t]=f(e,t,n),e[t]}function O(e,t){return null==e||t<=0||\"transparent\"===e||\"none\"===e?null:e.image||e.colorStops?\"#000\":e}function E(e){return null==e||\"none\"===e?null:e.image||e.colorStops?\"#000\":e}function L(e,t){return\"string\"==typeof e?e.lastIndexOf(\"%\")>=0?parseFloat(e)/100*t:parseFloat(e):e}function P(e,t,n){return\"right\"===t?e-n[1]:\"center\"===t?e+n[3]/2-n[1]/2:e+n[3]}t.normalizeTextStyle=function(e){return C(e),a(e.rich,C),e},t.renderText=function(e,t,n,i,r,o){i.rich?function(e,t,n,i,r,o){o!==m&&(t.__attrCachedBy=g.NONE);var a=e.__textCotentBlock;a&&!e.__dirtyText||(a=e.__textCotentBlock=c.parseRichText(n,i)),function(e,t,n,i,r){var o=n.width,a=n.outerWidth,s=n.outerHeight,l=i.textPadding,u=A(w,e,i,r),h=u.baseX,d=u.baseY,f=u.textAlign,p=u.textVerticalAlign;S(t,i,r,h,d);var g=c.adjustTextX(h,a,f),m=c.adjustTextY(d,s,p),v=g,y=m;l&&(v+=l[3],y+=l[0]);var b=v+o;T(i)&&M(e,t,i,g,m,a,s);for(var x=0;x<n.lines.length;x++){for(var _,C=n.lines[x],D=C.tokens,I=D.length,O=C.lineHeight,E=C.width,L=0,P=v,N=b,R=I-1;L<I&&(!(_=D[L]).textAlign||\"left\"===_.textAlign);)k(e,t,_,i,O,y,P,\"left\"),E-=_.width,P+=_.width,L++;for(;R>=0&&\"right\"===(_=D[R]).textAlign;)k(e,t,_,i,O,y,N,\"right\"),E-=_.width,N-=_.width,R--;for(P+=(o-(P-v)-(b-N)-E)/2;L<=R;)_=D[L],k(e,t,_,i,O,y,P+_.width/2,\"center\"),P+=_.width,L++;y+=O}}(e,t,a,i,r)}(e,t,n,i,r,o):function(e,t,n,i,r,o){\"use strict\";var a,s=T(i),l=!1,u=t.__attrCachedBy===g.PLAIN_TEXT;o!==m?(o&&(a=o.style,l=!s&&u&&a),t.__attrCachedBy=s?g.NONE:g.PLAIN_TEXT):u&&(t.__attrCachedBy=g.NONE);var h=i.font||v;l&&h===(a.font||v)||(t.font=h);var d=e.__computedFont;e.__styleFont!==h&&(e.__styleFont=h,d=e.__computedFont=t.font);var p=i.textPadding,y=i.textLineHeight,b=e.__textCotentBlock;b&&!e.__dirtyText||(b=e.__textCotentBlock=c.parsePlainText(n,d,p,y,i.truncate));var _=b.outerHeight,C=b.lines,k=b.lineHeight,D=A(w,e,i,r),I=D.baseX,L=D.baseY,N=D.textAlign||\"left\",R=D.textVerticalAlign;S(t,i,r,I,L);var B=c.adjustTextY(L,_,R),z=I,F=B;if(s||p){var $=c.getWidth(n,d),V=$;p&&(V+=p[1]+p[3]);var j=c.adjustTextX(I,V,N);s&&M(e,t,i,j,B,V,_),p&&(z=P(I,N,p),F+=p[0])}t.textAlign=N,t.textBaseline=\"middle\",t.globalAlpha=i.opacity||1;for(var H=0;H<x.length;H++){var W=x[H],q=W[0],G=W[1],U=i[q];l&&U===a[q]||(t[G]=f(t,G,U||W[2]))}F+=k/2;var Y=i.textStrokeWidth,X=l?a.textStrokeWidth:null,K=!l||Y!==X,Z=!l||K||i.textStroke!==a.textStroke,J=O(i.textStroke,Y),Q=E(i.textFill);if(J&&(K&&(t.lineWidth=Y),Z&&(t.strokeStyle=J)),Q&&(l&&i.textFill===a.textFill||(t.fillStyle=Q)),1===C.length)J&&t.strokeText(C[0],z,F),Q&&t.fillText(C[0],z,F);else for(var H=0;H<C.length;H++)J&&t.strokeText(C[H],z,F),Q&&t.fillText(C[H],z,F),F+=k}(e,t,n,i,r,o)},t.getBoxPosition=A,t.getStroke=O,t.getFill=E,t.parsePercent=L,t.needDrawText=function(e,t){return null!=e&&(e||t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor||t.textPadding)}},qjvV:function(e,t){var n=Array.prototype.slice,i=function(e){this._$handlers={},this._$eventProcessor=e};function r(e,t,n,i,r,o){var a=e._$handlers;if(\"function\"==typeof n&&(r=i,i=n,n=null),!i||!t)return e;n=function(e,t){var n=e._$eventProcessor;return null!=t&&n&&n.normalizeQuery&&(t=n.normalizeQuery(t)),t}(e,n),a[t]||(a[t]=[]);for(var s=0;s<a[t].length;s++)if(a[t][s].h===i)return e;var l={h:i,one:o,query:n,ctx:r||e,callAtLast:i.zrEventfulCallAtLast},u=a[t].length-1,c=a[t][u];return c&&c.callAtLast?a[t].splice(u,0,l):a[t].push(l),e}i.prototype={constructor:i,one:function(e,t,n,i){return r(this,e,t,n,i,!0)},on:function(e,t,n,i){return r(this,e,t,n,i,!1)},isSilent:function(e){var t=this._$handlers;return!t[e]||!t[e].length},off:function(e,t){var n=this._$handlers;if(!e)return this._$handlers={},this;if(t){if(n[e]){for(var i=[],r=0,o=n[e].length;r<o;r++)n[e][r].h!==t&&i.push(n[e][r]);n[e]=i}n[e]&&0===n[e].length&&delete n[e]}else delete n[e];return this},trigger:function(e){var t=this._$handlers[e],i=this._$eventProcessor;if(t){var r=arguments,o=r.length;o>3&&(r=n.call(r,1));for(var a=t.length,s=0;s<a;){var l=t[s];if(i&&i.filter&&null!=l.query&&!i.filter(e,l.query))s++;else{switch(o){case 1:l.h.call(l.ctx);break;case 2:l.h.call(l.ctx,r[1]);break;case 3:l.h.call(l.ctx,r[1],r[2]);break;default:l.h.apply(l.ctx,r)}l.one?(t.splice(s,1),a--):s++}}}return i&&i.afterTrigger&&i.afterTrigger(e),this},triggerWithContext:function(e){var t=this._$handlers[e],i=this._$eventProcessor;if(t){var r=arguments,o=r.length;o>4&&(r=n.call(r,1,r.length-1));for(var a=r[r.length-1],s=t.length,l=0;l<s;){var u=t[l];if(i&&i.filter&&null!=u.query&&!i.filter(e,u.query))l++;else{switch(o){case 1:u.h.call(a);break;case 2:u.h.call(a,r[1]);break;case 3:u.h.call(a,r[1],r[2]);break;default:u.h.apply(a,r)}u.one?(t.splice(l,1),s--):l++}}}return i&&i.afterTrigger&&i.afterTrigger(e),this}};var o=i;e.exports=o},qkKv:function(e,t,n){var i=n(\"FeBl\"),r=i.JSON||(i.JSON={stringify:JSON.stringify});e.exports=function(e){return r.stringify.apply(r,arguments)}},r9WW:function(e,t,n){var i=n(\"sJ4e\").extend({type:\"dataZoom.select\"});e.exports=i},rFvp:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"vjPX\"),a=[\"axisLine\",\"axisTickLabel\",\"axisName\"],s=[\"splitLine\",\"splitArea\",\"minorSplitLine\"],l=n(\"43ae\").extend({type:\"radiusAxis\",axisPointerClass:\"PolarAxisPointer\",render:function(e,t){if(this.group.removeAll(),e.get(\"show\")){var n=e.axis,r=n.polar,l=r.getAngleAxis(),u=n.getTicksCoords(),c=n.getMinorTicksCoords(),h=l.getExtent()[0],d=n.getExtent(),f=function(e,t,n){return{position:[e.cx,e.cy],rotation:n/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:t.getModel(\"axisLabel\").get(\"rotate\"),z2:1}}(r,e,h),p=new o(e,f);i.each(a,p.add,p),this.group.add(p.getGroup()),i.each(s,function(t){e.get(t+\".show\")&&!n.scale.isBlank()&&this[\"_\"+t](e,r,h,d,u,c)},this)}},_splitLine:function(e,t,n,o,a){var s=e.getModel(\"splitLine\").getModel(\"lineStyle\"),l=s.get(\"color\"),u=0;l=l instanceof Array?l:[l];for(var c=[],h=0;h<a.length;h++){var d=u++%l.length;c[d]=c[d]||[],c[d].push(new r.Circle({shape:{cx:t.cx,cy:t.cy,r:a[h].coord}}))}for(h=0;h<c.length;h++)this.group.add(r.mergePath(c[h],{style:i.defaults({stroke:l[h%l.length],fill:null},s.getLineStyle()),silent:!0}))},_minorSplitLine:function(e,t,n,o,a,s){if(s.length){for(var l=e.getModel(\"minorSplitLine\").getModel(\"lineStyle\"),u=[],c=0;c<s.length;c++)for(var h=0;h<s[c].length;h++)u.push(new r.Circle({shape:{cx:t.cx,cy:t.cy,r:s[c][h].coord}}));this.group.add(r.mergePath(u,{style:i.defaults({fill:null},l.getLineStyle()),silent:!0}))}},_splitArea:function(e,t,n,o,a){if(a.length){var s=e.getModel(\"splitArea\").getModel(\"areaStyle\"),l=s.get(\"color\"),u=0;l=l instanceof Array?l:[l];for(var c=[],h=a[0].coord,d=1;d<a.length;d++){var f=u++%l.length;c[f]=c[f]||[],c[f].push(new r.Sector({shape:{cx:t.cx,cy:t.cy,r0:h,r:a[d].coord,startAngle:0,endAngle:2*Math.PI},silent:!0})),h=a[d].coord}for(d=0;d<c.length;d++)this.group.add(r.mergePath(c[d],{style:i.defaults({fill:l[d%l.length]},s.getAreaStyle()),silent:!0}))}}});e.exports=l},rbn0:function(e,t,n){var i=n(\"C7PF\");function r(e){e.eachEdge(function(e){var t=e.getModel().get(\"lineStyle.curveness\")||0,n=i.clone(e.node1.getLayout()),r=i.clone(e.node2.getLayout()),o=[n,r];+t&&o.push([(n[0]+r[0])/2-(n[1]-r[1])*t,(n[1]+r[1])/2-(r[0]-n[0])*t]),e.setLayout(o)})}t.simpleLayout=function(e){var t=e.coordinateSystem;if(!t||\"view\"===t.type){var n=e.getGraph();n.eachNode(function(e){var t=e.getModel();e.setLayout([+t.get(\"x\"),+t.get(\"y\")])}),r(n)}},t.simpleLayoutEdge=r},rctg:function(e,t,n){var i=n(\"/gxq\"),r={};function o(){this._coordinateSystems=[]}o.prototype={constructor:o,create:function(e,t){var n=[];i.each(r,function(i,r){var o=i.create(e,t);n=n.concat(o||[])}),this._coordinateSystems=n},update:function(e,t){i.each(this._coordinateSystems,function(n){n.update&&n.update(e,t)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},o.register=function(e,t){r[e]=t},o.get=function(e){return r[e]};var a=o;e.exports=a},ri8f:function(e,t,n){var i=n(\"/gxq\").createHashMap;e.exports=function(e){return{getTargetSeries:function(t){var n={},r=i();return t.eachSeriesByType(e,function(e){e.__paletteScope=n,r.set(e.uid,e)}),r},reset:function(e,t){var n=e.getRawData(),i={},r=e.getData();r.each(function(e){var t=r.getRawIndex(e);i[t]=e}),n.each(function(t){var o,a=i[t],s=null!=a&&r.getItemVisual(a,\"color\",!0),l=null!=a&&r.getItemVisual(a,\"borderColor\",!0);if(s&&l||(o=n.getItemModel(t)),!s){var u=o.get(\"itemStyle.color\")||e.getColorFromPalette(n.getName(t)||t+\"\",e.__paletteScope,n.count());null!=a&&r.setItemVisual(a,\"color\",u)}if(!l){var c=o.get(\"itemStyle.borderColor\");null!=a&&r.setItemVisual(a,\"borderColor\",c)}})}}}},rjsW:function(e,t,n){var i=n(\"Icdr\");n(\"997V\"),n(\"Gevp\"),n(\"guZJ\");var r=n(\"ri8f\"),o=n(\"AjK0\"),a=n(\"lwXq\"),s=n(\"l4Op\"),l=n(\"6HcI\");i.registerVisual(r(\"radar\")),i.registerVisual(o(\"radar\",\"circle\")),i.registerLayout(a),i.registerProcessor(s(\"radar\")),i.registerPreprocessor(l)},rrAD:function(e,t,n){var i=n(\"/gxq\"),r=i.createHashMap,o=i.isTypedArray,a=n(\"BNYN\").enableClassCheck,s=n(\"+2Ke\"),l=s.SOURCE_FORMAT_ORIGINAL,u=s.SERIES_LAYOUT_BY_COLUMN,c=s.SOURCE_FORMAT_UNKNOWN,h=s.SOURCE_FORMAT_TYPED_ARRAY,d=s.SOURCE_FORMAT_KEYED_COLUMNS;function f(e){this.fromDataset=e.fromDataset,this.data=e.data||(e.sourceFormat===d?{}:[]),this.sourceFormat=e.sourceFormat||c,this.seriesLayoutBy=e.seriesLayoutBy||u,this.dimensionsDefine=e.dimensionsDefine,this.encodeDefine=e.encodeDefine&&r(e.encodeDefine),this.startIndex=e.startIndex||0,this.dimensionsDetectCount=e.dimensionsDetectCount}f.seriesDataToSource=function(e){return new f({data:e,sourceFormat:o(e)?h:l,fromDataset:!1})},a(f);var p=f;e.exports=p},rwkR:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\"),o=n(\"eH0a\"),a=n(\"2uoh\"),s=r.extend({type:\"singleAxis\",layoutMode:\"box\",axis:null,coordinateSystem:null,getCoordSysModel:function(){return this}});i.merge(s.prototype,a),o(\"single\",s,function(e,t){return t.type||(t.data?\"category\":\"value\")},{left:\"5%\",top:\"5%\",right:\"5%\",bottom:\"5%\",type:\"value\",position:\"bottom\",orient:\"horizontal\",axisLine:{show:!0,lineStyle:{width:1,type:\"solid\"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:1}},axisLabel:{show:!0,interval:\"auto\"},splitLine:{show:!0,lineStyle:{type:\"dashed\",opacity:.2}}});var l=s;e.exports=l},\"s/PG\":function(e,t,n){var i=n(\"/gxq\").each,r=n(\"Axyt\"),o=n(\"vXqC\").makeInner,a=n(\"Qv0P\"),s=n(\"cU6c\"),l=n(\"WxG6\"),u=n(\"k7nC\"),c=o(),h={load:function(e,t,n){var o=c(t).parsed;if(o)return o;var h,d=t.specialAreas||{},f=t.geoJSON;try{h=f?r(f,n):[]}catch(e){throw new Error(\"Invalid geoJson format\\n\"+e.message)}return a(e,h),i(h,function(t){var n=t.name;s(e,t),l(e,t),u(e,t);var i=d[n];i&&t.transformTo(i.left,i.top,i.width,i.height)}),c(t).parsed={regions:h,boundingRect:function(e){for(var t,n=0;n<e.length;n++){var i=e[n].getBoundingRect();(t=t||i.clone()).union(i)}return t}(h)}}};e.exports=h},\"s/lY\":function(e,t,n){var i=n(\"/gxq\"),r={show:!0,zlevel:0,z:0,inverse:!1,name:\"\",nameLocation:\"end\",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:\"...\",placeholder:\".\"},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:\"#333\",width:1,type:\"solid\"},symbol:[\"none\",\"none\"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:[\"#ccc\"],width:1,type:\"solid\"}},splitArea:{show:!1,areaStyle:{color:[\"rgba(250,250,250,0.3)\",\"rgba(200,200,200,0.3)\"]}}},o={};o.categoryAxis=i.merge({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:\"auto\"},axisLabel:{interval:\"auto\"}},r),o.valueAxis=i.merge({boundaryGap:[0,0],splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:\"#eee\",width:1}}},r),o.timeAxis=i.defaults({scale:!0,min:\"dataMin\",max:\"dataMax\"},o.valueAxis),o.logAxis=i.defaults({scale:!0,logBase:10},o.valueAxis);var a=o;e.exports=a},s1Aj:function(e,t,n){var i=n(\"/gxq\"),r=n(\"HHfb\"),o=[\"cartesian2d\",\"polar\",\"singleAxis\"];function a(e,t){e=e.slice();var n=i.map(e,r.capitalFirst);t=(t||[]).slice();var o=i.map(t,r.capitalFirst);return function(r,a){i.each(e,function(e,i){for(var s={name:e,capital:n[i]},l=0;l<t.length;l++)s[t[l]]=e+o[l];r.call(a,s)})}}var s=a([\"x\",\"y\",\"z\",\"radius\",\"angle\",\"single\"],[\"axisIndex\",\"axis\",\"index\",\"id\"]);t.isCoordSupported=function(e){return i.indexOf(o,e)>=0},t.createNameEach=a,t.eachAxisDim=s,t.createLinkedNodesFinder=function(e,t,n){return function(o){var a,s={nodes:[],records:{}};if(t(function(e){s.records[e.name]={}}),!o)return s;r(o,s);do{a=!1,e(l)}while(a);function l(e){!function(e,t){return i.indexOf(t.nodes,e)>=0}(e,s)&&function(e,r){var o=!1;return t(function(t){i.each(n(e,t)||[],function(e){r.records[t.name][e]&&(o=!0)})}),o}(e,s)&&(r(e,s),a=!0)}return s};function r(e,r){r.nodes.push(e),t(function(t){i.each(n(e,t)||[],function(e){r.records[t.name][e]=!0})})}}},s3ue:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=86)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},4:function(e,t){e.exports=n(\"fPll\")},86:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-checkbox-group\",attrs:{role:\"group\",\"aria-label\":\"checkbox-group\"}},[this._t(\"default\")],2)};i._withStripped=!0;var r=n(4),o={name:\"ElCheckboxGroup\",componentName:\"ElCheckboxGroup\",mixins:[n.n(r).a],inject:{elFormItem:{default:\"\"}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch(\"ElFormItem\",\"el.form.change\",[e])}}},a=n(0),s=Object(a.a)(o,i,[],!1,null,null,null);s.options.__file=\"packages/checkbox/src/checkbox-group.vue\";var l=s.exports;l.install=function(e){e.component(l.name,l)};t.default=l}})},s48c:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"vjPX\"),a=n(\"43ae\"),s=n(\"4xrk\"),l=n(\"LKZ0\"),u=l.rectCoordAxisBuildSplitArea,c=l.rectCoordAxisHandleRemove,h=[\"axisLine\",\"axisTickLabel\",\"axisName\"],d=[\"splitArea\",\"splitLine\",\"minorSplitLine\"],f=a.extend({type:\"cartesianAxis\",axisPointerClass:\"CartesianAxisPointer\",render:function(e,t,n,a){this.group.removeAll();var l=this._axisGroup;if(this._axisGroup=new r.Group,this.group.add(this._axisGroup),e.get(\"show\")){var u=e.getCoordSysModel(),c=s.layout(u,e),p=new o(e,c);i.each(h,p.add,p),this._axisGroup.add(p.getGroup()),i.each(d,function(t){e.get(t+\".show\")&&this[\"_\"+t](e,u)},this),r.groupTransition(l,this._axisGroup,e),f.superCall(this,\"render\",e,t,n,a)}},remove:function(){c(this)},_splitLine:function(e,t){var n=e.axis;if(!n.scale.isBlank()){var o=e.getModel(\"splitLine\"),a=o.getModel(\"lineStyle\"),s=a.get(\"color\");s=i.isArray(s)?s:[s];for(var l=t.coordinateSystem.getRect(),u=n.isHorizontal(),c=0,h=n.getTicksCoords({tickModel:o}),d=[],f=[],p=a.getLineStyle(),g=0;g<h.length;g++){var m=n.toGlobalCoord(h[g].coord);u?(d[0]=m,d[1]=l.y,f[0]=m,f[1]=l.y+l.height):(d[0]=l.x,d[1]=m,f[0]=l.x+l.width,f[1]=m);var v=c++%s.length,y=h[g].tickValue;this._axisGroup.add(new r.Line({anid:null!=y?\"line_\"+h[g].tickValue:null,subPixelOptimize:!0,shape:{x1:d[0],y1:d[1],x2:f[0],y2:f[1]},style:i.defaults({stroke:s[v]},p),silent:!0}))}}},_minorSplitLine:function(e,t){var n=e.axis,i=e.getModel(\"minorSplitLine\").getModel(\"lineStyle\"),o=t.coordinateSystem.getRect(),a=n.isHorizontal(),s=n.getMinorTicksCoords();if(s.length)for(var l=[],u=[],c=i.getLineStyle(),h=0;h<s.length;h++)for(var d=0;d<s[h].length;d++){var f=n.toGlobalCoord(s[h][d].coord);a?(l[0]=f,l[1]=o.y,u[0]=f,u[1]=o.y+o.height):(l[0]=o.x,l[1]=f,u[0]=o.x+o.width,u[1]=f),this._axisGroup.add(new r.Line({anid:\"minor_line_\"+s[h][d].tickValue,subPixelOptimize:!0,shape:{x1:l[0],y1:l[1],x2:u[0],y2:u[1]},style:c,silent:!0}))}},_splitArea:function(e,t){u(this,this._axisGroup,e,t)}});f.extend({type:\"xAxis\"}),f.extend({type:\"yAxis\"})},sB3e:function(e,t,n){var i=n(\"52gC\");e.exports=function(e){return Object(i(e))}},sJ4e:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"YNzw\"),a=n(\"vXqC\"),s=n(\"s1Aj\"),l=n(\"GWV8\"),u=r.each,c=s.eachAxisDim;function h(e){var t={};return u([\"start\",\"end\",\"startValue\",\"endValue\",\"throttle\"],function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t}function d(e,t){var n=e._rangePropMode,i=e.get(\"rangeMode\");u([[\"start\",\"startValue\"],[\"end\",\"endValue\"]],function(e,r){var o=null!=t[e[0]],a=null!=t[e[1]];o&&!a?n[r]=\"percent\":!o&&a?n[r]=\"value\":i?n[r]=i[r]:o&&(n[r]=\"percent\")})}var f=i.extendComponentModel({type:\"dataZoom\",dependencies:[\"xAxis\",\"yAxis\",\"zAxis\",\"radiusAxis\",\"angleAxis\",\"singleAxis\",\"series\"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:\"filter\",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(e,t,n){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=[\"percent\",\"percent\"];var i=h(e);this.settledOption=i,this.mergeDefaultAndTheme(e,n),this.doInit(i)},mergeOption:function(e){var t=h(e);r.merge(this.option,e,!0),r.merge(this.settledOption,t,!0),this.doInit(t)},doInit:function(e){var t=this.option;o.canvasSupported||(t.realtime=!1),this._setDefaultThrottle(e),d(this,e);var n=this.settledOption;u([[\"start\",\"startValue\"],[\"end\",\"endValue\"]],function(e,i){\"value\"===this._rangePropMode[i]&&(t[e[0]]=n[e[0]]=null)},this),this.textStyleModel=this.getModel(\"textStyle\"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var e=this._axisProxies;this.eachTargetAxis(function(t,n,i,r){var o=this.dependentModels[t.axis][n],a=o.__dzAxisProxy||(o.__dzAxisProxy=new l(t.name,n,this,r));e[t.name+\"_\"+n]=a},this)},_resetTarget:function(){var e=this.option,t=this._judgeAutoMode();c(function(t){var n=t.axisIndex;e[n]=a.normalizeToArray(e[n])},this),\"axisIndex\"===t?this._autoSetAxisIndex():\"orient\"===t&&this._autoSetOrient()},_judgeAutoMode:function(){var e=this.option,t=!1;c(function(n){null!=e[n.axisIndex]&&(t=!0)},this);var n=e.orient;return null==n&&t?\"orient\":t?void 0:(null==n&&(e.orient=\"horizontal\"),\"axisIndex\")},_autoSetAxisIndex:function(){var e=!0,t=this.get(\"orient\",!0),n=this.option,i=this.dependentModels;if(e){var o=\"vertical\"===t?\"y\":\"x\";i[o+\"Axis\"].length?(n[o+\"AxisIndex\"]=[0],e=!1):u(i.singleAxis,function(i){e&&i.get(\"orient\",!0)===t&&(n.singleAxisIndex=[i.componentIndex],e=!1)})}e&&c(function(t){if(e){var i=[],r=this.dependentModels[t.axis];if(r.length&&!i.length)for(var o=0,a=r.length;o<a;o++)\"category\"===r[o].get(\"type\")&&i.push(o);n[t.axisIndex]=i,i.length&&(e=!1)}},this),e&&this.ecModel.eachSeries(function(e){this._isSeriesHasAllAxesTypeOf(e,\"value\")&&c(function(t){var i=n[t.axisIndex],o=e.get(t.axisIndex),a=e.get(t.axisId);o=e.ecModel.queryComponents({mainType:t.axis,index:o,id:a})[0].componentIndex,r.indexOf(i,o)<0&&i.push(o)})},this)},_autoSetOrient:function(){var e;this.eachTargetAxis(function(t){!e&&(e=t.name)},this),this.option.orient=\"y\"===e?\"vertical\":\"horizontal\"},_isSeriesHasAllAxesTypeOf:function(e,t){var n=!0;return c(function(i){var r=e.get(i.axisIndex),o=this.dependentModels[i.axis][r];o&&o.get(\"type\")===t||(n=!1)},this),n},_setDefaultThrottle:function(e){if(e.hasOwnProperty(\"throttle\")&&(this._autoThrottle=!1),this._autoThrottle){var t=this.ecModel.option;this.option.throttle=t.animation&&t.animationDurationUpdate>0?100:20}},getFirstTargetAxisModel:function(){var e;return c(function(t){if(null==e){var n=this.get(t.axisIndex);n.length&&(e=this.dependentModels[t.axis][n[0]])}},this),e},eachTargetAxis:function(e,t){var n=this.ecModel;c(function(i){u(this.get(i.axisIndex),function(r){e.call(t,i,r,this,n)},this)},this)},getAxisProxy:function(e,t){return this._axisProxies[e+\"_\"+t]},getAxisModel:function(e,t){var n=this.getAxisProxy(e,t);return n&&n.getAxisModel()},setRawRange:function(e){var t=this.option,n=this.settledOption;u([[\"start\",\"startValue\"],[\"end\",\"endValue\"]],function(i){null==e[i[0]]&&null==e[i[1]]||(t[i[0]]=n[i[0]]=e[i[0]],t[i[1]]=n[i[1]]=e[i[1]])},this),d(this,e)},setCalculatedRange:function(e){var t=this.option;u([\"start\",\"startValue\",\"end\",\"endValue\"],function(n){t[n]=e[n]})},getPercentRange:function(){var e=this.findRepresentativeAxisProxy();if(e)return e.getDataPercentWindow()},getValueRange:function(e,t){if(null!=e||null!=t)return this.getAxisProxy(e,t).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(e){if(e)return e.__dzAxisProxy;var t=this._axisProxies;for(var n in t)if(t.hasOwnProperty(n)&&t[n].hostedBy(this))return t[n];for(var n in t)if(t.hasOwnProperty(n)&&!t[n].hostedBy(this))return t[n]},getRangePropMode:function(){return this._rangePropMode.slice()}});e.exports=f},sK5G:function(e,t,n){var i=n(\"/gZK\"),r=n(\"/gxq\"),o=n(\"mvCM\").getDimensionTypeByAxis,a=n(\"kdOt\").makeSeriesEncodeForAxisCoordSys,s={_baseAxisDim:null,getInitialData:function(e,t){var n,s,l=t.getComponent(\"xAxis\",this.get(\"xAxisIndex\")),u=t.getComponent(\"yAxis\",this.get(\"yAxisIndex\")),c=l.get(\"type\"),h=u.get(\"type\");\"category\"===c?(e.layout=\"horizontal\",n=l.getOrdinalMeta(),s=!0):\"category\"===h?(e.layout=\"vertical\",n=u.getOrdinalMeta(),s=!0):e.layout=e.layout||\"horizontal\";var d=[\"x\",\"y\"],f=\"horizontal\"===e.layout?0:1,p=this._baseAxisDim=d[f],g=d[1-f],m=[l,u],v=m[f].get(\"type\"),y=m[1-f].get(\"type\"),b=e.data;if(b&&s){var x=[];r.each(b,function(e,t){var n;e.value&&r.isArray(e.value)?(n=e.value.slice(),e.value.unshift(t)):r.isArray(e)?(n=e.slice(),e.unshift(t)):n=e,x.push(n)}),e.data=x}var _=this.defaultValueDimensions,w=[{name:p,type:o(v),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:[\"base\"]},{name:g,type:o(y),dimsDef:_.slice()}];return i(this,{coordDimensions:w,dimensionsCount:_.length+1,encodeDefaulter:r.curry(a,w,this)})},getBaseAxis:function(){var e=this._baseAxisDim;return this.ecModel.getComponent(e+\"Axis\",this.get(e+\"AxisIndex\")).axis}};t.seriesModelMixin=s},sOJ4:function(e,t,n){var i=n(\"0sHC\"),r=n(\"C7PF\"),o=i.Line.prototype,a=i.BezierCurve.prototype;function s(e){return isNaN(+e.cpx1)||isNaN(+e.cpy1)}var l=i.extendShape({type:\"ec-line\",style:{stroke:\"#000\",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(e,t){this[s(t)?\"_buildPathLine\":\"_buildPathCurve\"](e,t)},_buildPathLine:o.buildPath,_buildPathCurve:a.buildPath,pointAt:function(e){return this[s(this.shape)?\"_pointAtLine\":\"_pointAtCurve\"](e)},_pointAtLine:o.pointAt,_pointAtCurve:a.pointAt,tangentAt:function(e){var t=this.shape,n=s(t)?[t.x2-t.x1,t.y2-t.y1]:this._tangentAtCurve(e);return r.normalize(n,n)},_tangentAtCurve:a.tangentAt});e.exports=l},sRta:function(e,t,n){var i=n(\"GxVO\"),r=n(\"dnLe\"),o=i.extend({type:\"sector\",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:r(i.prototype.brush),buildPath:function(e,t){var n=t.cx,i=t.cy,r=Math.max(t.r0||0,0),o=Math.max(t.r,0),a=t.startAngle,s=t.endAngle,l=t.clockwise,u=Math.cos(a),c=Math.sin(a);e.moveTo(u*r+n,c*r+i),e.lineTo(u*o+n,c*o+i),e.arc(n,i,o,a,s,!l),e.lineTo(Math.cos(s)*r+n,Math.sin(s)*r+i),0!==r&&e.arc(n,i,r,s,a,l),e.closePath()}});e.exports=o},sTIA:function(e,t,n){var i=n(\"hG1p\"),r=n(\"0sHC\"),o=n(\"Ylhr\"),a=n(\"wWR3\"),s=a.parsePercent,l=a.round,u=a.linearMap;function c(e,t){return t&&(\"string\"==typeof t?e=t.replace(\"{value}\",null!=e?e:\"\"):\"function\"==typeof t&&(e=t(e))),e}var h=2*Math.PI,d=o.extend({type:\"gauge\",render:function(e,t,n){this.group.removeAll();var i=e.get(\"axisLine.lineStyle.color\"),r=function(e,t){var n=e.get(\"center\"),i=t.getWidth(),r=t.getHeight(),o=Math.min(i,r);return{cx:s(n[0],t.getWidth()),cy:s(n[1],t.getHeight()),r:s(e.get(\"radius\"),o/2)}}(e,n);this._renderMain(e,t,n,i,r)},dispose:function(){},_renderMain:function(e,t,n,i,o){for(var a=this.group,s=e.getModel(\"axisLine\"),l=s.getModel(\"lineStyle\"),u=e.get(\"clockwise\"),c=-e.get(\"startAngle\")/180*Math.PI,d=((v=-e.get(\"endAngle\")/180*Math.PI)-c)%h,f=c,p=l.get(\"width\"),g=s.get(\"show\"),m=0;g&&m<i.length;m++){var v=c+d*Math.min(Math.max(i[m][0],0),1),y=new r.Sector({shape:{startAngle:f,endAngle:v,cx:o.cx,cy:o.cy,clockwise:u,r0:o.r-p,r:o.r},silent:!0});y.setStyle({fill:i[m][1]}),y.setStyle(l.getLineStyle([\"color\",\"borderWidth\",\"borderColor\"])),a.add(y),f=v}var b=function(e){if(e<=0)return i[0][1];for(var t=0;t<i.length;t++)if(i[t][0]>=e&&(0===t?0:i[t-1][0])<e)return i[t][1];return i[t-1][1]};if(!u){var x=c;c=v,v=x}this._renderTicks(e,t,n,b,o,c,v,u),this._renderPointer(e,t,n,b,o,c,v,u),this._renderTitle(e,t,n,b,o),this._renderDetail(e,t,n,b,o)},_renderTicks:function(e,t,n,i,o,a,u,h){for(var d=this.group,f=o.cx,p=o.cy,g=o.r,m=+e.get(\"min\"),v=+e.get(\"max\"),y=e.getModel(\"splitLine\"),b=e.getModel(\"axisTick\"),x=e.getModel(\"axisLabel\"),_=e.get(\"splitNumber\"),w=b.get(\"splitNumber\"),C=s(y.get(\"length\"),g),S=s(b.get(\"length\"),g),k=a,T=(u-a)/_,M=T/w,D=y.getModel(\"lineStyle\").getLineStyle(),A=b.getModel(\"lineStyle\").getLineStyle(),I=0;I<=_;I++){var O=Math.cos(k),E=Math.sin(k);if(y.get(\"show\")){var L=new r.Line({shape:{x1:O*g+f,y1:E*g+p,x2:O*(g-C)+f,y2:E*(g-C)+p},style:D,silent:!0});\"auto\"===D.stroke&&L.setStyle({stroke:i(I/_)}),d.add(L)}if(x.get(\"show\")){var P=c(l(I/_*(v-m)+m),x.get(\"formatter\")),N=x.get(\"distance\"),R=i(I/_);d.add(new r.Text({style:r.setTextStyle({},x,{text:P,x:O*(g-C-N)+f,y:E*(g-C-N)+p,textVerticalAlign:E<-.4?\"top\":E>.4?\"bottom\":\"middle\",textAlign:O<-.4?\"left\":O>.4?\"right\":\"center\"},{autoColor:R}),silent:!0}))}if(b.get(\"show\")&&I!==_){for(var B=0;B<=w;B++){O=Math.cos(k),E=Math.sin(k);var z=new r.Line({shape:{x1:O*g+f,y1:E*g+p,x2:O*(g-S)+f,y2:E*(g-S)+p},silent:!0,style:A});\"auto\"===A.stroke&&z.setStyle({stroke:i((I+B/w)/_)}),d.add(z),k+=M}k-=M}else k+=T}},_renderPointer:function(e,t,n,o,a,l,c,h){var d=this.group,f=this._data;if(e.get(\"pointer.show\")){var p=[+e.get(\"min\"),+e.get(\"max\")],g=[l,c],m=e.getData(),v=m.mapDimension(\"value\");m.diff(f).add(function(t){var n=new i({shape:{angle:l}});r.initProps(n,{shape:{angle:u(m.get(v,t),p,g,!0)}},e),d.add(n),m.setItemGraphicEl(t,n)}).update(function(t,n){var i=f.getItemGraphicEl(n);r.updateProps(i,{shape:{angle:u(m.get(v,t),p,g,!0)}},e),d.add(i),m.setItemGraphicEl(t,i)}).remove(function(e){var t=f.getItemGraphicEl(e);d.remove(t)}).execute(),m.eachItemGraphicEl(function(e,t){var n=m.getItemModel(t),i=n.getModel(\"pointer\");e.setShape({x:a.cx,y:a.cy,width:s(i.get(\"width\"),a.r),r:s(i.get(\"length\"),a.r)}),e.useStyle(n.getModel(\"itemStyle\").getItemStyle()),\"auto\"===e.style.fill&&e.setStyle(\"fill\",o(u(m.get(v,t),p,[0,1],!0))),r.setHoverStyle(e,n.getModel(\"emphasis.itemStyle\").getItemStyle())}),this._data=m}else f&&f.eachItemGraphicEl(function(e){d.remove(e)})},_renderTitle:function(e,t,n,i,o){var a=e.getData(),l=a.mapDimension(\"value\"),c=e.getModel(\"title\");if(c.get(\"show\")){var h=c.get(\"offsetCenter\"),d=o.cx+s(h[0],o.r),f=o.cy+s(h[1],o.r),p=+e.get(\"min\"),g=+e.get(\"max\"),m=e.getData().get(l,0),v=i(u(m,[p,g],[0,1],!0));this.group.add(new r.Text({silent:!0,style:r.setTextStyle({},c,{x:d,y:f,text:a.getName(0),textAlign:\"center\",textVerticalAlign:\"middle\"},{autoColor:v,forceRich:!0})}))}},_renderDetail:function(e,t,n,i,o){var a=e.getModel(\"detail\"),l=+e.get(\"min\"),h=+e.get(\"max\");if(a.get(\"show\")){var d=a.get(\"offsetCenter\"),f=o.cx+s(d[0],o.r),p=o.cy+s(d[1],o.r),g=s(a.get(\"width\"),o.r),m=s(a.get(\"height\"),o.r),v=e.getData(),y=v.get(v.mapDimension(\"value\"),0),b=i(u(y,[l,h],[0,1],!0));this.group.add(new r.Text({silent:!0,style:r.setTextStyle({},a,{x:f,y:p,text:c(y,a.get(\"formatter\")),textWidth:isNaN(g)?null:g,textHeight:isNaN(m)?null:m,textAlign:\"center\",textVerticalAlign:\"middle\"},{autoColor:b,forceRich:!0})}))}}});e.exports=d},sYrQ:function(e,t,n){var i=n(\"/gxq\"),r=n(\"dOVI\"),o=n(\"1Xuh\"),a=n(\"3yJd\"),s=n(\"/BOW\"),l=n(\"0sHC\"),u=n(\"wWR3\"),c=n(\"og9+\"),h=i.each,d=Math.min,f=Math.max,p=Math.floor,g=Math.ceil,m=u.round,v=Math.PI;function y(e,t,n){this._axesMap=i.createHashMap(),this._axesLayout={},this.dimensions=e.dimensions,this._rect,this._model=e,this._init(e,t,n)}function b(e,t){return d(f(e,t[0]),t[1])}y.prototype={type:\"parallel\",constructor:y,_init:function(e,t,n){var i=e.dimensions,r=e.parallelAxisIndex;h(i,function(e,n){var i=r[n],o=t.getComponent(\"parallelAxis\",i),l=this._axesMap.set(e,new s(e,a.createScaleByModel(o),[0,0],o.get(\"type\"),i)),u=\"category\"===l.type;l.onBand=u&&o.get(\"boundaryGap\"),l.inverse=o.get(\"inverse\"),o.axis=l,l.model=o,l.coordinateSystem=o.coordinateSystem=this},this)},update:function(e,t){this._updateAxesFromSeries(this._model,e)},containPoint:function(e){var t=this._makeLayoutInfo(),n=t.axisBase,i=t.layoutBase,r=t.pixelDimIndex,o=e[1-r],a=e[r];return o>=n&&o<=n+t.axisLength&&a>=i&&a<=i+t.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(e,t){t.eachSeries(function(n){if(e.contains(n,t)){var i=n.getData();h(this.dimensions,function(e){var t=this._axesMap.get(e);t.scale.unionExtentFromData(i,i.mapDimension(e)),a.niceScaleExtent(t.scale,t.model)},this)}},this)},resize:function(e,t){this._rect=o.getLayoutRect(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var e,t=this._model,n=this._rect,i=[\"x\",\"y\"],r=[\"width\",\"height\"],o=t.get(\"layout\"),a=\"horizontal\"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,c=b(t.get(\"axisExpandWidth\"),l),h=b(t.get(\"axisExpandCount\")||0,[0,u]),d=t.get(\"axisExpandable\")&&u>3&&u>h&&h>1&&c>0&&s>0,f=t.get(\"axisExpandWindow\");f?(e=b(f[1]-f[0],l),f[1]=f[0]+e):(e=b(c*(h-1),l),(f=[c*(t.get(\"axisExpandCenter\")||p(u/2))-e/2])[1]=f[0]+e);var v=(s-e)/(u-h);v<3&&(v=0);var y=[p(m(f[0]/c,1))+1,g(m(f[1]/c,1))-1],x=v/c*f[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:d,axisExpandWidth:c,axisCollapseWidth:v,axisExpandWindow:f,axisCount:u,winInnerIndices:y,axisExpandWindow0Pos:x}},_layoutAxes:function(){var e=this._rect,t=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),o=i.layout;t.each(function(e){var t=[0,i.axisLength],n=e.inverse?1:0;e.setExtent(t[n],t[1-n])}),h(n,function(t,n){var a=(i.axisExpandable?function(e,t){var n,i,r=t.layoutLength,o=t.axisExpandWidth,a=t.axisCount,s=t.axisCollapseWidth,l=t.winInnerIndices,u=s,c=!1;e<l[0]?(n=e*s,i=s):e<=l[1]?(n=t.axisExpandWindow0Pos+e*o-t.axisExpandWindow[0],u=o,c=!0):(n=r-(a-1-e)*s,i=s);return{position:n,axisNameAvailableWidth:u,axisLabelShow:c,nameTruncateMaxWidth:i}}:function(e,t){var n=t.layoutLength/(t.axisCount-1);return{position:n*e,axisNameAvailableWidth:n,axisLabelShow:!0}})(n,i),s={horizontal:{x:a.position,y:i.axisLength},vertical:{x:0,y:a.position}},l={horizontal:v/2,vertical:0},u=[s[o].x+e.x,s[o].y+e.y],c=l[o],h=r.create();r.rotate(h,h,c),r.translate(h,h,u),this._axesLayout[t]={position:u,rotation:c,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(e){return this._axesMap.get(e)},dataToPoint:function(e,t){return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(e),t)},eachActiveState:function(e,t,n,r){null==n&&(n=0),null==r&&(r=e.count());var o=this._axesMap,a=this.dimensions,s=[],l=[];i.each(a,function(t){s.push(e.mapDimension(t)),l.push(o.get(t).model)});for(var u=this.hasAxisBrushed(),c=n;c<r;c++){var h;if(u){h=\"active\";for(var d=e.getValues(s,c),f=0,p=a.length;f<p;f++){if(\"inactive\"===l[f].getActiveState(d[f])){h=\"inactive\";break}}}else h=\"normal\";t(h,c)}},hasAxisBrushed:function(){for(var e=this.dimensions,t=this._axesMap,n=!1,i=0,r=e.length;i<r;i++)\"normal\"!==t.get(e[i]).model.getActiveState()&&(n=!0);return n},axisCoordToPoint:function(e,t){var n=this._axesLayout[t];return l.applyTransform([e,0],n.transform)},getAxisLayout:function(e){return i.clone(this._axesLayout[e])},getSlidedAxisExpandWindow:function(e){var t=this._makeLayoutInfo(),n=t.pixelDimIndex,i=t.axisExpandWindow.slice(),r=i[1]-i[0],o=[0,t.axisExpandWidth*(t.axisCount-1)];if(!this.containPoint(e))return{behavior:\"none\",axisExpandWindow:i};var a,s=e[n]-t.layoutBase-t.axisExpandWindow0Pos,l=\"slide\",u=t.axisCollapseWidth,h=this._model.get(\"axisExpandSlideTriggerArea\"),p=null!=h[0];if(u)p&&u&&s<r*h[0]?(l=\"jump\",a=s-r*h[2]):p&&u&&s>r*(1-h[0])?(l=\"jump\",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=t.axisExpandWidth/u)?c(a,i,o,\"all\"):l=\"none\";else{r=i[1]-i[0];(i=[f(0,o[1]*s/r-r/2)])[1]=d(o[1],i[0]+r),i[0]=i[1]-r}return{axisExpandWindow:i,behavior:l}}};var x=y;e.exports=x},soCA:function(e,t,n){(function(e){\"use strict\";e.registerGlobalHelper(\"fold\",\"comment\",function(e){return e.blockCommentStart&&e.blockCommentEnd},function(t,n){var i=t.getModeAt(n),r=i.blockCommentStart,o=i.blockCommentEnd;if(r&&o){for(var a,s=n.line,l=t.getLine(s),u=n.ch,c=0;;){var h=u<=0?-1:l.lastIndexOf(r,u-1);if(-1!=h){if(1==c&&h<n.ch)return;if(/comment/.test(t.getTokenTypeAt(e.Pos(s,h+1)))&&(0==h||l.slice(h-o.length,h)==o||!/comment/.test(t.getTokenTypeAt(e.Pos(s,h))))){a=h+r.length;break}u=h-1}else{if(1==c)return;c=1,u=l.length}}var d,f,p=1,g=t.lastLine();e:for(var m=s;m<=g;++m)for(var v=t.getLine(m),y=m==s?a:0;;){var b=v.indexOf(r,y),x=v.indexOf(o,y);if(b<0&&(b=v.length),x<0&&(x=v.length),(y=Math.min(b,x))==v.length)break;if(y==b)++p;else if(!--p){d=m,f=y;break e}++y}if(null!=d&&(s!=d||f!=a))return{from:e.Pos(s,a),to:e.Pos(d,f)}}})})(n(\"8U58\"))},srbS:function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"HcG6\"),a=n(\"1Xuh\"),s=n(\"wWR3\"),l=n(\"AlF5\"),u=n(\"0MNY\");function c(e,t){var n=e.get(\"boundingCoords\");if(null!=n){var i=n[0],r=n[1];isNaN(i[0])||isNaN(i[1])||isNaN(r[0])||isNaN(r[1])||this.setBoundingRect(i[0],i[1],r[0]-i[0],r[1]-i[1])}var o,l=this.getBoundingRect(),u=e.get(\"layoutCenter\"),c=e.get(\"layoutSize\"),h=t.getWidth(),d=t.getHeight(),f=l.width/l.height*this.aspectScale,p=!1;if(u&&c&&(u=[s.parsePercent(u[0],h),s.parsePercent(u[1],d)],c=s.parsePercent(c,Math.min(h,d)),isNaN(u[0])||isNaN(u[1])||isNaN(c)||(p=!0)),p){var g={};f>1?(g.width=c,g.height=c/f):(g.height=c,g.width=c*f),g.y=u[1]-g.height/2,g.x=u[0]-g.width/2}else(o=e.getBoxLayoutParams()).aspect=f,g=a.getLayoutRect(o,{width:h,height:d});this.setViewRect(g.x,g.y,g.width,g.height),this.setCenter(e.get(\"center\")),this.setZoom(e.get(\"zoom\"))}function h(e,t){r.each(t.get(\"geoCoord\"),function(t,n){e.addGeoCoord(n,t)})}var d={dimensions:o.prototype.dimensions,create:function(e,t){var n=[];e.eachComponent(\"geo\",function(e,i){var r=e.get(\"map\"),a=e.get(\"aspectScale\"),s=!0,l=u.retrieveMap(r);l&&l[0]&&\"svg\"===l[0].type?(null==a&&(a=1),s=!1):null==a&&(a=.75);var d=new o(r+i,r,e.get(\"nameMap\"),s);d.aspectScale=a,d.zoomLimit=e.get(\"scaleLimit\"),n.push(d),h(d,e),e.coordinateSystem=d,d.model=e,d.resize=c,d.resize(e,t)}),e.eachSeries(function(e){if(\"geo\"===e.get(\"coordinateSystem\")){var t=e.get(\"geoIndex\")||0;e.coordinateSystem=n[t]}});var i={};return e.eachSeriesByType(\"map\",function(e){if(!e.getHostGeoModel()){var t=e.getMapType();i[t]=i[t]||[],i[t].push(e)}}),r.each(i,function(e,i){var a=r.map(e,function(e){return e.get(\"nameMap\")}),s=new o(i,i,r.mergeAll(a));s.zoomLimit=r.retrieve.apply(null,r.map(e,function(e){return e.get(\"scaleLimit\")})),n.push(s),s.resize=c,s.aspectScale=e[0].get(\"aspectScale\"),s.resize(e[0],t),r.each(e,function(e){e.coordinateSystem=s,h(s,e)})}),n},getFilledRegions:function(e,t,n){for(var i=(e||[]).slice(),o=r.createHashMap(),a=0;a<i.length;a++)o.set(i[a].name,i[a]);var s=l.load(t,n);return r.each(s.regions,function(e){var t=e.name;!o.get(t)&&i.push({name:t})}),i}};i.registerCoordinateSystem(\"geo\",d);var f=d;e.exports=f},swsf:function(e,t,n){var i=n(\"Icdr\"),r=n(\"OCS9\");n(\"n3NR\"),n(\"icur\"),n(\"hdbT\"),n(\"S+iL\"),n(\"0pMY\"),i.registerPreprocessor(r)},tBuv:function(e,t,n){var i=n(\"wWR3\"),r=n(\"HHfb\"),o=n(\"/+sa\"),a=n(\"wW3A\"),s=i.round,l=o.extend({type:\"interval\",_interval:0,_intervalPrecision:2,setExtent:function(e,t){var n=this._extent;isNaN(e)||(n[0]=parseFloat(e)),isNaN(t)||(n[1]=parseFloat(t))},unionExtent:function(e){var t=this._extent;e[0]<t[0]&&(t[0]=e[0]),e[1]>t[1]&&(t[1]=e[1]),l.prototype.setExtent.call(this,t[0],t[1])},getInterval:function(){return this._interval},setInterval:function(e){this._interval=e,this._niceExtent=this._extent.slice(),this._intervalPrecision=a.getIntervalPrecision(e)},getTicks:function(e){var t=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!t)return o;n[0]<i[0]&&(e?o.push(s(i[0]-t,r)):o.push(n[0]));for(var a=i[0];a<=i[1]&&(o.push(a),(a=s(a+t,r))!==o[o.length-1]);)if(o.length>1e4)return[];var l=o.length?o[o.length-1]:i[1];return n[1]>l&&(e?o.push(s(l+t,r)):o.push(n[1])),o},getMinorTicks:function(e){for(var t=this.getTicks(!0),n=[],r=this.getExtent(),o=1;o<t.length;o++){for(var a=t[o],s=t[o-1],l=0,u=[],c=(a-s)/e;l<e-1;){var h=i.round(s+(l+1)*c);h>r[0]&&h<r[1]&&u.push(h),l++}n.push(u)}return n},getLabel:function(e,t){if(null==e)return\"\";var n=t&&t.precision;return null==n?n=i.getPrecisionSafe(e)||0:\"auto\"===n&&(n=this._intervalPrecision),e=s(e,n,!0),r.addCommas(e)},niceTicks:function(e,t,n){e=e||5;var i=this._extent,r=i[1]-i[0];if(isFinite(r)){r<0&&(r=-r,i.reverse());var o=a.intervalScaleNiceTicks(i,e,t,n);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},niceExtent:function(e){var t=this._extent;if(t[0]===t[1])if(0!==t[0]){var n=t[0];e.fixMax?t[0]-=n/2:(t[1]+=n/2,t[0]-=n/2)}else t[1]=1;var i=t[1]-t[0];isFinite(i)||(t[0]=0,t[1]=1),this.niceTicks(e.splitNumber,e.minInterval,e.maxInterval);var r=this._interval;e.fixMin||(t[0]=s(Math.floor(t[0]/r)*r)),e.fixMax||(t[1]=s(Math.ceil(t[1]/r)*r))}});l.create=function(){return new l};var u=l;e.exports=u},tQk0:function(e,t,n){n(\"4SW2\"),n(\"0O1a\")},tWbI:function(e,t,n){(function(e){\"use strict\";function t(e){return new RegExp(\"^((\"+e.join(\")|(\")+\"))\\\\b\")}var n=t([\"and\",\"or\",\"not\",\"is\"]),i=[\"as\",\"assert\",\"break\",\"class\",\"continue\",\"def\",\"del\",\"elif\",\"else\",\"except\",\"finally\",\"for\",\"from\",\"global\",\"if\",\"import\",\"lambda\",\"pass\",\"raise\",\"return\",\"try\",\"while\",\"with\",\"yield\",\"in\"],r=[\"abs\",\"all\",\"any\",\"bin\",\"bool\",\"bytearray\",\"callable\",\"chr\",\"classmethod\",\"compile\",\"complex\",\"delattr\",\"dict\",\"dir\",\"divmod\",\"enumerate\",\"eval\",\"filter\",\"float\",\"format\",\"frozenset\",\"getattr\",\"globals\",\"hasattr\",\"hash\",\"help\",\"hex\",\"id\",\"input\",\"int\",\"isinstance\",\"issubclass\",\"iter\",\"len\",\"list\",\"locals\",\"map\",\"max\",\"memoryview\",\"min\",\"next\",\"object\",\"oct\",\"open\",\"ord\",\"pow\",\"property\",\"range\",\"repr\",\"reversed\",\"round\",\"set\",\"setattr\",\"slice\",\"sorted\",\"staticmethod\",\"str\",\"sum\",\"super\",\"tuple\",\"type\",\"vars\",\"zip\",\"__import__\",\"NotImplemented\",\"Ellipsis\",\"__debug__\"];function o(e){return e.scopes[e.scopes.length-1]}e.registerHelper(\"hintWords\",\"python\",i.concat(r)),e.defineMode(\"python\",function(a,s){for(var l=\"error\",u=s.delimiters||s.singleDelimiters||/^[\\(\\)\\[\\]\\{\\}@,:`=;\\.\\\\]/,c=[s.singleOperators,s.doubleOperators,s.doubleDelimiters,s.tripleDelimiters,s.operators||/^([-+*/%\\/&|^]=?|[<>=]+|\\/\\/=?|\\*\\*=?|!=|[~!@]|\\.\\.\\.)/],h=0;h<c.length;h++)c[h]||c.splice(h--,1);var d=s.hangingIndent||a.indentUnit,f=i,p=r;void 0!=s.extra_keywords&&(f=f.concat(s.extra_keywords)),void 0!=s.extra_builtins&&(p=p.concat(s.extra_builtins));var g=!(s.version&&Number(s.version)<3);if(g){var m=s.identifiers||/^[_A-Za-z\\u00A1-\\uFFFF][_A-Za-z0-9\\u00A1-\\uFFFF]*/;f=f.concat([\"nonlocal\",\"False\",\"True\",\"None\",\"async\",\"await\"]),p=p.concat([\"ascii\",\"bytes\",\"exec\",\"print\"]);var v=new RegExp(\"^(([rbuf]|(br)|(fr))?('{3}|\\\"{3}|['\\\"]))\",\"i\")}else{m=s.identifiers||/^[_A-Za-z][_A-Za-z0-9]*/;f=f.concat([\"exec\",\"print\"]),p=p.concat([\"apply\",\"basestring\",\"buffer\",\"cmp\",\"coerce\",\"execfile\",\"file\",\"intern\",\"long\",\"raw_input\",\"reduce\",\"reload\",\"unichr\",\"unicode\",\"xrange\",\"False\",\"True\",\"None\"]);v=new RegExp(\"^(([rubf]|(ur)|(br))?('{3}|\\\"{3}|['\\\"]))\",\"i\")}var y=t(f),b=t(p);function x(e,t){var n=e.sol()&&\"\\\\\"!=t.lastToken;if(n&&(t.indent=e.indentation()),n&&\"py\"==o(t).type){var i=o(t).offset;if(e.eatSpace()){var r=e.indentation();return r>i?w(t):r<i&&C(e,t)&&\"#\"!=e.peek()&&(t.errorToken=!0),null}var a=_(e,t);return i>0&&C(e,t)&&(a+=\" \"+l),a}return _(e,t)}function _(e,t,i){if(e.eatSpace())return null;if(!i&&e.match(/^#.*/))return\"comment\";if(e.match(/^[0-9\\.]/,!1)){var r=!1;if(e.match(/^[\\d_]*\\.\\d+(e[\\+\\-]?\\d+)?/i)&&(r=!0),e.match(/^[\\d_]+\\.\\d*/)&&(r=!0),e.match(/^\\.\\d+/)&&(r=!0),r)return e.eat(/J/i),\"number\";var o=!1;if(e.match(/^0x[0-9a-f_]+/i)&&(o=!0),e.match(/^0b[01_]+/i)&&(o=!0),e.match(/^0o[0-7_]+/i)&&(o=!0),e.match(/^[1-9][\\d_]*(e[\\+\\-]?[\\d_]+)?/)&&(e.eat(/J/i),o=!0),e.match(/^0(?![\\dx])/i)&&(o=!0),o)return e.eat(/L/i),\"number\"}if(e.match(v))return-1!==e.current().toLowerCase().indexOf(\"f\")?(t.tokenize=function(e,t){for(;\"rubf\".indexOf(e.charAt(0).toLowerCase())>=0;)e=e.substr(1);var n=1==e.length,i=\"string\";function r(e){return function(t,n){var i=_(t,n,!0);return\"punctuation\"==i&&(\"{\"==t.current()?n.tokenize=r(e+1):\"}\"==t.current()&&(n.tokenize=e>1?r(e-1):o)),i}}function o(o,a){for(;!o.eol();)if(o.eatWhile(/[^'\"\\{\\}\\\\]/),o.eat(\"\\\\\")){if(o.next(),n&&o.eol())return i}else{if(o.match(e))return a.tokenize=t,i;if(o.match(\"{{\"))return i;if(o.match(\"{\",!1))return a.tokenize=r(0),o.current()?i:a.tokenize(o,a);if(o.match(\"}}\"))return i;if(o.match(\"}\"))return l;o.eat(/['\"]/)}if(n){if(s.singleLineStringErrors)return l;a.tokenize=t}return i}return o.isString=!0,o}(e.current(),t.tokenize),t.tokenize(e,t)):(t.tokenize=function(e,t){for(;\"rubf\".indexOf(e.charAt(0).toLowerCase())>=0;)e=e.substr(1);var n=1==e.length,i=\"string\";function r(r,o){for(;!r.eol();)if(r.eatWhile(/[^'\"\\\\]/),r.eat(\"\\\\\")){if(r.next(),n&&r.eol())return i}else{if(r.match(e))return o.tokenize=t,i;r.eat(/['\"]/)}if(n){if(s.singleLineStringErrors)return l;o.tokenize=t}return i}return r.isString=!0,r}(e.current(),t.tokenize),t.tokenize(e,t));for(var a=0;a<c.length;a++)if(e.match(c[a]))return\"operator\";return e.match(u)?\"punctuation\":\".\"==t.lastToken&&e.match(m)?\"property\":e.match(y)||e.match(n)?\"keyword\":e.match(b)?\"builtin\":e.match(/^(self|cls)\\b/)?\"variable-2\":e.match(m)?\"def\"==t.lastToken||\"class\"==t.lastToken?\"def\":\"variable\":(e.next(),i?null:l)}function w(e){for(;\"py\"!=o(e).type;)e.scopes.pop();e.scopes.push({offset:o(e).offset+a.indentUnit,type:\"py\",align:null})}function C(e,t){for(var n=e.indentation();t.scopes.length>1&&o(t).offset>n;){if(\"py\"!=o(t).type)return!0;t.scopes.pop()}return o(t).offset!=n}function S(e,t){e.sol()&&(t.beginningOfLine=!0);var n=t.tokenize(e,t),i=e.current();if(t.beginningOfLine&&\"@\"==i)return e.match(m,!1)?\"meta\":g?\"operator\":l;if(/\\S/.test(i)&&(t.beginningOfLine=!1),\"variable\"!=n&&\"builtin\"!=n||\"meta\"!=t.lastToken||(n=\"meta\"),\"pass\"!=i&&\"return\"!=i||(t.dedent+=1),\"lambda\"==i&&(t.lambda=!0),\":\"!=i||t.lambda||\"py\"!=o(t).type||w(t),1==i.length&&!/string|comment/.test(n)){var r=\"[({\".indexOf(i);if(-1!=r&&function(e,t,n){var i=e.match(/^([\\s\\[\\{\\(]|#.*)*$/,!1)?null:e.column()+1;t.scopes.push({offset:t.indent+d,type:n,align:i})}(e,t,\"])}\".slice(r,r+1)),-1!=(r=\"])}\".indexOf(i))){if(o(t).type!=i)return l;t.indent=t.scopes.pop().offset-d}}return t.dedent>0&&e.eol()&&\"py\"==o(t).type&&(t.scopes.length>1&&t.scopes.pop(),t.dedent-=1),n}return{startState:function(e){return{tokenize:x,scopes:[{offset:e||0,type:\"py\",align:null}],indent:e||0,lastToken:null,lambda:!1,dedent:0}},token:function(e,t){var n=t.errorToken;n&&(t.errorToken=!1);var i=S(e,t);return i&&\"comment\"!=i&&(t.lastToken=\"keyword\"==i||\"punctuation\"==i?e.current():i),\"punctuation\"==i&&(i=null),e.eol()&&t.lambda&&(t.lambda=!1),n?i+\" \"+l:i},indent:function(t,n){if(t.tokenize!=x)return t.tokenize.isString?e.Pass:0;var i=o(t),r=i.type==n.charAt(0);return null!=i.align?i.align-(r?1:0):i.offset-(r?d:0)},electricInput:/^\\s*[\\}\\]\\)]$/,closeBrackets:{triples:\"'\\\"\"},lineComment:\"#\",fold:\"indent\"}}),e.defineMIME(\"text/x-python\",\"python\");var a;e.defineMIME(\"text/x-cython\",{name:\"python\",extra_keywords:(a=\"by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE\",a.split(\" \"))})})(n(\"8U58\"))},taS8:function(e,t,n){var i=n(\"qjrH\"),r=n(\"8b51\"),o=n(\"28kU\").WILL_BE_RESTORED,a=new r,s=function(){};s.prototype={constructor:s,drawRectText:function(e,t){var n=this.style;t=n.textRect||t,this.__dirty&&i.normalizeTextStyle(n,!0);var r=n.text;if(null!=r&&(r+=\"\"),i.needDrawText(r,n)){e.save();var s=this.transform;n.transformText?this.setTransform(e):s&&(a.copy(t),a.applyTransform(s),t=a),i.renderText(this,e,r,n,t,o),e.restore()}}};var l=s;e.exports=l},thE4:function(e,t,n){var i=n(\"/gxq\").inherits,r=n(\"9qnA\"),o=n(\"8b51\");function a(e){r.call(this,e),this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.notClear=!0}a.prototype.incremental=!0,a.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.dirty(),this.notClear=!1},a.prototype.addDisplayable=function(e,t){t?this._temporaryDisplayables.push(e):this._displayables.push(e),this.dirty()},a.prototype.addDisplayables=function(e,t){t=t||!1;for(var n=0;n<e.length;n++)this.addDisplayable(e[n],t)},a.prototype.eachPendingDisplayable=function(e){for(var t=this._cursor;t<this._displayables.length;t++)e&&e(this._displayables[t]);for(t=0;t<this._temporaryDisplayables.length;t++)e&&e(this._temporaryDisplayables[t])},a.prototype.update=function(){this.updateTransform();for(var e=this._cursor;e<this._displayables.length;e++){(t=this._displayables[e]).parent=this,t.update(),t.parent=null}for(e=0;e<this._temporaryDisplayables.length;e++){var t;(t=this._temporaryDisplayables[e]).parent=this,t.update(),t.parent=null}},a.prototype.brush=function(e,t){for(var n=this._cursor;n<this._displayables.length;n++){(i=this._displayables[n]).beforeBrush&&i.beforeBrush(e),i.brush(e,n===this._cursor?null:this._displayables[n-1]),i.afterBrush&&i.afterBrush(e)}this._cursor=n;for(n=0;n<this._temporaryDisplayables.length;n++){var i;(i=this._temporaryDisplayables[n]).beforeBrush&&i.beforeBrush(e),i.brush(e,0===n?null:this._temporaryDisplayables[n-1]),i.afterBrush&&i.afterBrush(e)}this._temporaryDisplayables=[],this.notClear=!0};var s=[];a.prototype.getBoundingRect=function(){if(!this._rect){for(var e=new o(1/0,1/0,-1/0,-1/0),t=0;t<this._displayables.length;t++){var n=this._displayables[t],i=n.getBoundingRect().clone();n.needLocalTransform()&&i.applyTransform(n.getLocalTransform(s)),e.union(i)}this._rect=e}return this._rect},a.prototype.contain=function(e,t){var n=this.transformCoordToLocal(e,t);if(this.getBoundingRect().contain(n[0],n[1]))for(var i=0;i<this._displayables.length;i++){if(this._displayables[i].contain(e,t))return!0}return!1},i(a,r);var l=a;e.exports=l},tzpD:function(e,t,n){var i=n(\"qVJQ\").isDimensionStacked,r=n(\"/gxq\").map;t.prepareDataCoordInfo=function(e,t,n){var o,a=e.getBaseAxis(),s=e.getOtherAxis(a),l=function(e,t){var n=0,i=e.scale.getExtent();return\"start\"===t?n=i[0]:\"end\"===t?n=i[1]:i[0]>0?n=i[0]:i[1]<0&&(n=i[1]),n}(s,n),u=a.dim,c=s.dim,h=t.mapDimension(c),d=t.mapDimension(u),f=\"x\"===c||\"radius\"===c?1:0,p=r(e.dimensions,function(e){return t.mapDimension(e)}),g=t.getCalculationInfo(\"stackResultDimension\");return(o|=i(t,p[0]))&&(p[0]=g),(o|=i(t,p[1]))&&(p[1]=g),{dataDimsForPoint:p,valueStart:l,valueAxisDim:c,baseAxisDim:u,stacked:!!o,valueDim:h,baseDim:d,baseDataOffset:f,stackedOverDimension:t.getCalculationInfo(\"stackedOverDimension\")}},t.getStackedOnPoint=function(e,t,n,i){var r=NaN;e.stacked&&(r=n.get(n.getCalculationInfo(\"stackedOverDimension\"),i)),isNaN(r)&&(r=e.valueStart);var o=e.baseDataOffset,a=[];return a[o]=n.get(e.baseDim,i),a[1-o]=r,t.dataToPoint(a)}},\"u+XU\":function(e,t){t.containStroke=function(e,t,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;if(a>t+s&&a>i+s||a<t-s&&a<i-s||o>e+s&&o>n+s||o<e-s&&o<n-s)return!1;if(e===n)return Math.abs(o-e)<=s/2;var u=(l=(t-i)/(e-n))*o-a+(e*i-n*t)/(e-n);return u*u/(l*l+1)<=s/2*s/2}},u5Nq:function(e,t,n){var i=n(\"/gxq\"),r=n(\"/+sa\"),o=n(\"iGPw\"),a=r.prototype,s=r.extend({type:\"ordinal\",init:function(e,t){e&&!i.isArray(e)||(e=new o({categories:e})),this._ordinalMeta=e,this._extent=t||[0,e.categories.length-1]},parse:function(e){return\"string\"==typeof e?this._ordinalMeta.getOrdinal(e):Math.round(e)},contain:function(e){return e=this.parse(e),a.contain.call(this,e)&&null!=this._ordinalMeta.categories[e]},normalize:function(e){return a.normalize.call(this,this.parse(e))},scale:function(e){return Math.round(a.scale.call(this,e))},getTicks:function(){for(var e=[],t=this._extent,n=t[0];n<=t[1];)e.push(n),n++;return e},getLabel:function(e){if(!this.isBlank())return this._ordinalMeta.categories[e]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(e,t){this.unionExtent(e.getApproximateExtent(t))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:i.noop,niceExtent:i.noop});s.create=function(){return new s};var l=s;e.exports=l},u820:function(e,t){var n=\"\";\"undefined\"!=typeof navigator&&(n=navigator.platform||\"\");var i={color:[\"#c23531\",\"#2f4554\",\"#61a0a8\",\"#d48265\",\"#91c7ae\",\"#749f83\",\"#ca8622\",\"#bda29a\",\"#6e7074\",\"#546570\",\"#c4ccd3\"],gradientColor:[\"#f6efa6\",\"#d88273\",\"#bf444c\"],textStyle:{fontFamily:n.match(/^Win/)?\"Microsoft YaHei\":\"sans-serif\",fontSize:12,fontStyle:\"normal\",fontWeight:\"normal\"},blendMode:null,animation:\"auto\",animationDuration:1e3,animationDurationUpdate:300,animationEasing:\"exponentialOut\",animationEasingUpdate:\"cubicOut\",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};e.exports=i},u9lB:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"UAiw\"),a=n(\"FIAY\"),s=n(\"dCQY\"),l=a.toolbox.dataView,u=new Array(60).join(\"-\"),c=\"\\t\";function h(e){var t,n,i=function(e){var t={},n=[],i=[];return e.eachRawSeries(function(e){var r=e.coordinateSystem;if(!r||\"cartesian2d\"!==r.type&&\"polar\"!==r.type)n.push(e);else{var o=r.getBaseAxis();if(\"category\"===o.type){var a=o.dim+\"_\"+o.index;t[a]||(t[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),t[a].series.push(e)}else n.push(e)}}),{seriesGroupByCategoryAxis:t,other:n,meta:i}}(e);return{value:r.filter([(t=i.seriesGroupByCategoryAxis,n=[],r.each(t,function(e,t){var i=e.categoryAxis,o=e.valueAxis.dim,a=[\" \"].concat(r.map(e.series,function(e){return e.name})),s=[i.model.getCategories()];r.each(e.series,function(e){s.push(e.getRawData().mapArray(o,function(e){return e}))});for(var l=[a.join(c)],u=0;u<s[0].length;u++){for(var h=[],d=0;d<s.length;d++)h.push(s[d][u]);l.push(h.join(c))}n.push(l.join(\"\\n\"))}),n.join(\"\\n\\n\"+u+\"\\n\\n\")),function(e){return r.map(e,function(e){var t=e.getRawData(),n=[e.name],i=[];return t.each(t.dimensions,function(){for(var e=arguments.length,r=arguments[e-1],o=t.getName(r),a=0;a<e-1;a++)i[a]=arguments[a];n.push((o?o+c:\"\")+i.join(c))}),n.join(\"\\n\")}).join(\"\\n\\n\"+u+\"\\n\\n\")}(i.other)],function(e){return e.replace(/[\\n\\t\\s]/g,\"\")}).join(\"\\n\\n\"+u+\"\\n\\n\"),meta:i.meta}}function d(e){return e.replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")}var f=new RegExp(\"[\"+c+\"]+\",\"g\");function p(e,t){var n=e.split(new RegExp(\"\\n*\"+u+\"\\n*\",\"g\")),i={series:[]};return r.each(n,function(e,n){if(function(e){if(e.slice(0,e.indexOf(\"\\n\")).indexOf(c)>=0)return!0}(e)){var o=function(e){for(var t=e.split(/\\n+/g),n=d(t.shift()).split(f),i=[],o=r.map(n,function(e){return{name:e,data:[]}}),a=0;a<t.length;a++){var s=d(t[a]).split(f);i.push(s.shift());for(var l=0;l<s.length;l++)o[l]&&(o[l].data[a]=s[l])}return{series:o,categories:i}}(e),a=t[n],s=a.axisDim+\"Axis\";a&&(i[s]=i[s]||[],i[s][a.axisIndex]={data:o.categories},i.series=i.series.concat(o.series))}else{o=function(e){for(var t=e.split(/\\n+/g),n=d(t.shift()),i=[],r=0;r<t.length;r++){var o,a=d(t[r]).split(f),s=\"\",l=!1;isNaN(a[0])?(l=!0,s=a[0],a=a.slice(1),i[r]={name:s,value:[]},o=i[r].value):o=i[r]=[];for(var u=0;u<a.length;u++)o.push(+a[u]);1===o.length&&(l?i[r].value=o[0]:i[r]=o[0])}return{name:n,data:i}}(e);i.series.push(o)}}),i}function g(e){this._dom=null,this.model=e}g.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:\"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28\",title:r.clone(l.title),lang:r.clone(l.lang),backgroundColor:\"#fff\",textColor:\"#000\",textareaColor:\"#fff\",textareaBorderColor:\"#333\",buttonColor:\"#c23531\",buttonTextColor:\"#fff\"},g.prototype.onclick=function(e,t){var n=t.getDom(),i=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement(\"div\");a.style.cssText=\"position:absolute;left:5px;top:5px;bottom:5px;right:5px;\",a.style.backgroundColor=i.get(\"backgroundColor\")||\"#fff\";var s=document.createElement(\"h4\"),l=i.get(\"lang\")||[];s.innerHTML=l[0]||i.get(\"title\"),s.style.cssText=\"margin: 10px 20px;\",s.style.color=i.get(\"textColor\");var u=document.createElement(\"div\"),c=document.createElement(\"textarea\");u.style.cssText=\"display:block;width:100%;overflow:auto;\";var d=i.get(\"optionToContent\"),f=i.get(\"contentToOption\"),g=h(e);if(\"function\"==typeof d){var m=d(t.getOption());\"string\"==typeof m?u.innerHTML=m:r.isDom(m)&&u.appendChild(m)}else u.appendChild(c),c.readOnly=i.get(\"readOnly\"),c.style.cssText=\"width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;\",c.style.color=i.get(\"textColor\"),c.style.borderColor=i.get(\"textareaBorderColor\"),c.style.backgroundColor=i.get(\"textareaColor\"),c.value=g.value;var v=g.meta,y=document.createElement(\"div\");y.style.cssText=\"position:absolute;bottom:0;left:0;right:0;\";var b=\"float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px\",x=document.createElement(\"div\"),_=document.createElement(\"div\");b+=\";background-color:\"+i.get(\"buttonColor\"),b+=\";color:\"+i.get(\"buttonTextColor\");var w=this;function C(){n.removeChild(a),w._dom=null}o.addEventListener(x,\"click\",C),o.addEventListener(_,\"click\",function(){var e;try{e=\"function\"==typeof f?f(u,t.getOption()):p(c.value,v)}catch(e){throw C(),new Error(\"Data view format error \"+e)}e&&t.dispatchAction({type:\"changeDataView\",newOption:e}),C()}),x.innerHTML=l[1],_.innerHTML=l[2],_.style.cssText=b,x.style.cssText=b,!i.get(\"readOnly\")&&y.appendChild(_),y.appendChild(x),a.appendChild(s),a.appendChild(u),a.appendChild(y),u.style.height=n.clientHeight-80+\"px\",n.appendChild(a),this._dom=a},g.prototype.remove=function(e,t){this._dom&&t.getDom().removeChild(this._dom)},g.prototype.dispose=function(e,t){this.remove(e,t)},s.register(\"dataView\",g),i.registerAction({type:\"changeDataView\",event:\"dataViewChanged\",update:\"prepareAndUpdate\"},function(e,t){var n=[];r.each(e.newOption.series,function(e){var i=t.getSeriesByName(e.name)[0];if(i){var o=i.get(\"data\");n.push({name:e.name,data:function(e,t){return r.map(e,function(e,n){var i=t&&t[n];return r.isObject(i)&&!r.isArray(i)?(r.isObject(e)&&!r.isArray(e)&&(e=e.value),r.defaults({value:e},i)):e})}(e.data,o)})}else n.push(r.extend({type:\"scatter\"},e))}),t.mergeOption(r.defaults({series:n},e.newOption))});var m=g;e.exports=m},u9yV:function(e,t,n){var i=n(\"Icdr\");n(\"pmYM\"),n(\"uNEE\");var r=n(\"AjK0\"),o=n(\"1Nix\");n(\"UkNE\"),i.registerVisual(r(\"scatter\",\"circle\")),i.registerLayout(o(\"scatter\"))},uA0k:function(e,t,n){var i=n(\"0sHC\"),r=n(\"bzOU\"),o=n(\"/gxq\"),a=n(\"kK7q\").createSymbol,s=n(\"C7PF\"),l=n(\"AAi1\");function u(e,t,n){i.Group.call(this),this.add(this.createLine(e,t,n)),this._updateEffectSymbol(e,t)}var c=u.prototype;c.createLine=function(e,t,n){return new r(e,t,n)},c._updateEffectSymbol=function(e,t){var n=e.getItemModel(t).getModel(\"effect\"),i=n.get(\"symbolSize\"),r=n.get(\"symbol\");o.isArray(i)||(i=[i,i]);var s=n.get(\"color\")||e.getItemVisual(t,\"color\"),l=this.childAt(1);this._symbolType!==r&&(this.remove(l),(l=a(r,-.5,-.5,1,1,s)).z2=100,l.culling=!0,this.add(l)),l&&(l.setStyle(\"shadowColor\",s),l.setStyle(n.getItemStyle([\"color\"])),l.attr(\"scale\",i),l.setColor(s),l.attr(\"scale\",i),this._symbolType=r,this._symbolScale=i,this._updateEffectAnimation(e,n,t))},c._updateEffectAnimation=function(e,t,n){var i=this.childAt(1);if(i){var r=this,a=e.getItemLayout(n),s=1e3*t.get(\"period\"),l=t.get(\"loop\"),u=t.get(\"constantSpeed\"),c=o.retrieve(t.get(\"delay\"),function(t){return t/e.count()*s/3}),h=\"function\"==typeof c;if(i.ignore=!0,this.updateAnimationPoints(i,a),u>0&&(s=this.getLineLength(i)/u*1e3),s!==this._period||l!==this._loop){i.stopAnimation();var d=c;h&&(d=c(n)),i.__t>0&&(d=-s*i.__t),i.__t=0;var f=i.animate(\"\",l).when(s,{__t:1}).delay(d).during(function(){r.updateSymbolPosition(i)});l||f.done(function(){r.remove(i)}),f.start()}this._period=s,this._loop=l}},c.getLineLength=function(e){return s.dist(e.__p1,e.__cp1)+s.dist(e.__cp1,e.__p2)},c.updateAnimationPoints=function(e,t){e.__p1=t[0],e.__p2=t[1],e.__cp1=t[2]||[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]},c.updateData=function(e,t,n){this.childAt(0).updateData(e,t,n),this._updateEffectSymbol(e,t)},c.updateSymbolPosition=function(e){var t=e.__p1,n=e.__p2,i=e.__cp1,r=e.__t,o=e.position,a=[o[0],o[1]],u=l.quadraticAt,c=l.quadraticDerivativeAt;o[0]=u(t[0],i[0],n[0],r),o[1]=u(t[1],i[1],n[1],r);var h=c(t[0],i[0],n[0],r),d=c(t[1],i[1],n[1],r);if(e.rotation=-Math.atan2(d,h)-Math.PI/2,\"line\"===this._symbolType||\"rect\"===this._symbolType||\"roundRect\"===this._symbolType)if(void 0!==e.__lastT&&e.__lastT<e.__t){var f=1.05*s.dist(a,o);e.attr(\"scale\",[e.scale[0],f]),1===r&&(o[0]=a[0]+(o[0]-a[0])/2,o[1]=a[1]+(o[1]-a[1])/2)}else if(1===e.__lastT){f=2*s.dist(t,o);e.attr(\"scale\",[e.scale[0],f])}else e.attr(\"scale\",this._symbolScale);e.__lastT=e.__t,e.ignore=!1},c.updateLayout=function(e,t){this.childAt(0).updateLayout(e,t);var n=e.getItemModel(t).getModel(\"effect\");this._updateEffectAnimation(e,n,t)},o.inherits(u,i.Group);var h=u;e.exports=h},uJBW:function(e,t,n){var i=n(\"/gxq\"),r=[\"getDom\",\"getZr\",\"getWidth\",\"getHeight\",\"getDevicePixelRatio\",\"dispatchAction\",\"isDisposed\",\"on\",\"off\",\"getDataURL\",\"getConnectedDataURL\",\"getModel\",\"getOption\",\"getViewOfComponentModel\",\"getViewOfSeriesModel\"];var o=function(e){i.each(r,function(t){this[t]=i.bind(e[t],e)},this)};e.exports=o},uNEE:function(e,t,n){var i=n(\"Icdr\"),r=n(\"dZZy\"),o=n(\"uv9t\"),a=n(\"1Nix\");i.extendChartView({type:\"scatter\",render:function(e,t,n){var i=e.getData();this._updateSymbolDraw(i,e).updateData(i,{clipShape:this._getClipShape(e)}),this._finished=!0},incrementalPrepareRender:function(e,t,n){var i=e.getData();this._updateSymbolDraw(i,e).incrementalPrepareUpdate(i),this._finished=!1},incrementalRender:function(e,t,n){this._symbolDraw.incrementalUpdate(e,t.getData(),{clipShape:this._getClipShape(t)}),this._finished=e.end===t.getData().count()},updateTransform:function(e,t,n){var i=e.getData();if(this.group.dirty(),!this._finished||i.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var r=a().reset(e);r.progress&&r.progress({start:0,end:i.count()},i),this._symbolDraw.updateLayout(i)},_getClipShape:function(e){var t=e.coordinateSystem,n=t&&t.getArea&&t.getArea();return e.get(\"clip\",!0)?n:null},_updateSymbolDraw:function(e,t){var n=this._symbolDraw,i=t.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new o:new r,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},remove:function(e,t){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}})},uY1a:function(e,t){e.exports=function(e,t,n,i){var r,o=0;return\"boolean\"!=typeof t&&(i=n,n=t,t=void 0),function(){var a=this,s=Number(new Date)-o,l=arguments;function u(){o=Number(new Date),n.apply(a,l)}i&&!r&&u(),r&&clearTimeout(r),void 0===i&&s>e?u():!0!==t&&(r=setTimeout(i?function(){r=void 0}:u,void 0===i?e-s:e))}}},udrn:function(e,t,n){var i=n(\"GxVO\").extend({type:\"ellipse\",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(e,t){var n=.5522848,i=t.cx,r=t.cy,o=t.rx,a=t.ry,s=o*n,l=a*n;e.moveTo(i-o,r),e.bezierCurveTo(i-o,r-l,i-s,r-a,i,r-a),e.bezierCurveTo(i+s,r-a,i+o,r-l,i+o,r),e.bezierCurveTo(i+o,r+l,i+s,r+a,i,r+a),e.bezierCurveTo(i-s,r+a,i-o,r+l,i-o,r),e.closePath()}});e.exports=i},uqUo:function(e,t,n){var i=n(\"kM2E\"),r=n(\"FeBl\"),o=n(\"S82l\");e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),i(i.S+i.F*o(function(){n(1)}),\"Object\",a)}},urW8:function(e,t,n){\"use strict\";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var i=a(n(\"Vi3T\")),r=a(n(\"7+uW\")),o=a(n(\"i3rX\"));function a(e){return e&&e.__esModule?e:{default:e}}var s=(0,a(n(\"SvnF\")).default)(r.default),l=i.default,u=!1,c=function(){var e=Object.getPrototypeOf(this||r.default).$t;if(\"function\"==typeof e&&r.default.locale)return u||(u=!0,r.default.locale(r.default.config.lang,(0,o.default)(l,r.default.locale(r.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},h=t.t=function(e,t){var n=c.apply(this,arguments);if(null!==n&&void 0!==n)return n;for(var i=e.split(\".\"),r=l,o=0,a=i.length;o<a;o++){if(n=r[i[o]],o===a-1)return s(n,t);if(!n)return\"\";r=n}return\"\"},d=t.use=function(e){l=e||l},f=t.i18n=function(e){c=e||c};t.default={use:d,t:h,i18n:f}},uv9t:function(e,t,n){var i=n(\"0sHC\"),r=n(\"kK7q\").createSymbol,o=n(\"thE4\"),a=i.extendShape({shape:{points:null},symbolProxy:null,softClipShape:null,buildPath:function(e,t){var n=t.points,i=t.size,r=this.symbolProxy,o=r.shape;if(!((e.getContext?e.getContext():e)&&i[0]<4))for(var a=0;a<n.length;){var s=n[a++],l=n[a++];isNaN(s)||isNaN(l)||(this.softClipShape&&!this.softClipShape.contain(s,l)||(o.x=s-i[0]/2,o.y=l-i[1]/2,o.width=i[0],o.height=i[1],r.buildPath(e,o,!0)))}},afterBrush:function(e){var t=this.shape,n=t.points,i=t.size;if(i[0]<4){this.setTransform(e);for(var r=0;r<n.length;){var o=n[r++],a=n[r++];isNaN(o)||isNaN(a)||(this.softClipShape&&!this.softClipShape.contain(o,a)||e.fillRect(o-i[0]/2,a-i[1]/2,i[0],i[1]))}this.restoreTransform(e)}},findDataIndex:function(e,t){for(var n=this.shape,i=n.points,r=n.size,o=Math.max(r[0],4),a=Math.max(r[1],4),s=i.length/2-1;s>=0;s--){var l=2*s,u=i[l]-o/2,c=i[l+1]-a/2;if(e>=u&&t>=c&&e<=u+o&&t<=c+a)return s}return-1}});function s(){this.group=new i.Group}var l=s.prototype;l.isPersistent=function(){return!this._incremental},l.updateData=function(e,t){this.group.removeAll();var n=new a({rectHover:!0,cursor:\"default\"});n.setShape({points:e.getLayout(\"symbolPoints\")}),this._setCommon(n,e,!1,t),this.group.add(n),this._incremental=null},l.updateLayout=function(e){if(!this._incremental){var t=e.getLayout(\"symbolPoints\");this.group.eachChild(function(e){if(null!=e.startIndex){var n=2*(e.endIndex-e.startIndex),i=4*e.startIndex*2;t=new Float32Array(t.buffer,i,n)}e.setShape(\"points\",t)})}},l.incrementalPrepareUpdate=function(e){this.group.removeAll(),this._clearIncremental(),e.count()>2e6?(this._incremental||(this._incremental=new o({silent:!0})),this.group.add(this._incremental)):this._incremental=null},l.incrementalUpdate=function(e,t,n){var i;this._incremental?(i=new a,this._incremental.addDisplayable(i,!0)):((i=new a({rectHover:!0,cursor:\"default\",startIndex:e.start,endIndex:e.end})).incremental=!0,this.group.add(i)),i.setShape({points:t.getLayout(\"symbolPoints\")}),this._setCommon(i,t,!!this._incremental,n)},l._setCommon=function(e,t,n,i){var o=t.hostModel;i=i||{};var a=t.getVisual(\"symbolSize\");e.setShape(\"size\",a instanceof Array?a:[a,a]),e.softClipShape=i.clipShape||null,e.symbolProxy=r(t.getVisual(\"symbol\"),0,0,0,0),e.setColor=e.symbolProxy.setColor;var s=e.shape.size[0]<4;e.useStyle(o.getModel(\"itemStyle\").getItemStyle(s?[\"color\",\"shadowBlur\",\"shadowColor\"]:[\"color\"]));var l=t.getVisual(\"color\");l&&e.setColor(l),n||(e.seriesIndex=o.seriesIndex,e.on(\"mousemove\",function(t){e.dataIndex=null;var n=e.findDataIndex(t.offsetX,t.offsetY);n>=0&&(e.dataIndex=n+(e.startIndex||0))}))},l.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},l._clearIncremental=function(){var e=this._incremental;e&&e.clearDisplaybles()};var u=s;e.exports=u},\"v/cD\":function(e,t,n){var i=n(\"1Xuh\"),r=i.getLayoutRect,o=i.box,a=i.positionElement,s=n(\"HHfb\"),l=n(\"0sHC\");t.layout=function(e,t,n){var i=t.getBoxLayoutParams(),s=t.get(\"padding\"),l={width:n.getWidth(),height:n.getHeight()},u=r(i,l,s);o(t.get(\"orient\"),e,t.get(\"itemGap\"),u.width,u.height),a(e,i,l,s)},t.makeBackground=function(e,t){var n=s.normalizeCssArray(t.get(\"padding\")),i=t.getItemStyle([\"color\",\"opacity\"]);return i.fill=t.get(\"backgroundColor\"),e=new l.Rect({shape:{x:e.x-n[3],y:e.y-n[0],width:e.width+n[1]+n[3],height:e.height+n[0]+n[2],r:t.get(\"borderRadius\")},style:i,silent:!0,z2:-1})}},\"v/z1\":function(e,t,n){n(\"cuL/\"),n(\"sJ4e\"),n(\"ilLo\"),n(\"8Mpj\"),n(\"WbrJ\"),n(\"b/SY\"),n(\"KAfT\")},vEM8:function(e,t,n){var i=n(\"/gxq\"),r=n(\"dZZy\"),o=n(\"wWR3\"),a=n(\"Rfu2\"),s=n(\"vx1D\");function l(e,t,n){var i=t.coordinateSystem;e.each(function(r){var a,s=e.getItemModel(r),l=o.parsePercent(s.get(\"x\"),n.getWidth()),u=o.parsePercent(s.get(\"y\"),n.getHeight());if(isNaN(l)||isNaN(u)){if(t.getMarkerPosition)a=t.getMarkerPosition(e.getValues(e.dimensions,r));else if(i){var c=e.get(i.dimensions[0],r),h=e.get(i.dimensions[1],r);a=i.dataToPoint([c,h])}}else a=[l,u];isNaN(l)||(a[0]=l),isNaN(u)||(a[1]=u),e.setItemLayout(r,a)})}var u=n(\"SZjP\").extend({type:\"markPoint\",updateTransform:function(e,t,n){t.eachSeries(function(e){var t=e.markPointModel;t&&(l(t.getData(),e,n),this.markerGroupMap.get(e.id).updateLayout(t))},this)},renderSeries:function(e,t,n,o){var u=e.coordinateSystem,c=e.id,h=e.getData(),d=this.markerGroupMap,f=d.get(c)||d.set(c,new r),p=function(e,t,n){var r;r=e?i.map(e&&e.dimensions,function(e){var n=t.getData().getDimensionInfo(t.getData().mapDimension(e))||{};return i.defaults({name:e},n)}):[{name:\"value\",type:\"float\"}];var o=new a(r,n),l=i.map(n.get(\"data\"),i.curry(s.dataTransform,t));e&&(l=i.filter(l,i.curry(s.dataFilter,e)));return o.initData(l,null,e?s.dimValueGetter:function(e){return e.value}),o}(u,e,t);t.setData(p),l(t.getData(),e,o),p.each(function(e){var n=p.getItemModel(e),r=n.getShallow(\"symbol\"),o=n.getShallow(\"symbolSize\"),a=i.isFunction(r),s=i.isFunction(o);if(a||s){var l=t.getRawValue(e),u=t.getDataParams(e);a&&(r=r(l,u)),s&&(o=o(l,u))}p.setItemVisual(e,{symbol:r,symbolSize:o,color:n.get(\"itemStyle.color\")||h.getVisual(\"color\")})}),f.updateData(p),this.group.add(f.group),p.eachItemGraphicEl(function(e){e.traverse(function(e){e.dataModel=t})}),f.__keep=!0,f.group.silent=t.get(\"silent\")||e.get(\"silent\")}});e.exports=u},\"vFc/\":function(e,t,n){var i=n(\"TcQ7\"),r=n(\"QRG4\"),o=n(\"fkB2\");e.exports=function(e){return function(t,n,a){var s,l=i(t),u=r(l.length),c=o(a,u);if(e&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},\"vIB/\":function(e,t,n){\"use strict\";var i=n(\"O4g8\"),r=n(\"kM2E\"),o=n(\"880/\"),a=n(\"hJx8\"),s=n(\"/bQp\"),l=n(\"94VQ\"),u=n(\"e6n0\"),c=n(\"PzxK\"),h=n(\"dSzd\")(\"iterator\"),d=!([].keys&&\"next\"in[].keys()),f=function(){return this};e.exports=function(e,t,n,p,g,m,v){l(n,t,p);var y,b,x,_=function(e){if(!d&&e in k)return k[e];switch(e){case\"keys\":case\"values\":return function(){return new n(this,e)}}return function(){return new n(this,e)}},w=t+\" Iterator\",C=\"values\"==g,S=!1,k=e.prototype,T=k[h]||k[\"@@iterator\"]||g&&k[g],M=T||_(g),D=g?C?_(\"entries\"):M:void 0,A=\"Array\"==t&&k.entries||T;if(A&&(x=c(A.call(new e)))!==Object.prototype&&x.next&&(u(x,w,!0),i||\"function\"==typeof x[h]||a(x,h,f)),C&&T&&\"values\"!==T.name&&(S=!0,M=function(){return T.call(this)}),i&&!v||!d&&!S&&k[h]||a(k,h,M),s[t]=M,s[w]=f,g)if(y={values:C?M:_(\"values\"),keys:m?M:_(\"keys\"),entries:D},v)for(b in y)b in k||o(k,b,y[b]);else r(r.P+r.F*(d||S),t,y);return y}},vIe4:function(e,t,n){var i=n(\"/gxq\");e.exports=function(e){var t={};e.eachSeriesByType(\"map\",function(e){var n=e.getHostGeoModel(),i=n?\"o\"+n.id:\"i\"+e.getMapType();(t[i]=t[i]||[]).push(e)}),i.each(t,function(e,t){for(var n,r,o,a=(n=i.map(e,function(e){return e.getData()}),r=e[0].get(\"mapValueCalculation\"),o={},i.each(n,function(e){e.each(e.mapDimension(\"value\"),function(t,n){var i=\"ec-\"+e.getName(n);o[i]=o[i]||[],isNaN(t)||o[i].push(t)})}),n[0].map(n[0].mapDimension(\"value\"),function(e,t){for(var i,a=\"ec-\"+n[0].getName(t),s=0,l=1/0,u=-1/0,c=o[a].length,h=0;h<c;h++)l=Math.min(l,o[a][h]),u=Math.max(u,o[a][h]),s+=o[a][h];return i=\"min\"===r?l:\"max\"===r?u:\"average\"===r?s/c:s,0===c?NaN:i})),s=0;s<e.length;s++)e[s].originalData=e[s].getData();for(s=0;s<e.length;s++)e[s].seriesGroup=e,e[s].needsDrawMap=0===s&&!e[s].getHostGeoModel(),e[s].setData(a.cloneShallow()),e[s].mainSeries=e[0]})}},vXqC:function(e,t,n){var i=n(\"/gxq\"),r=n(\"YNzw\"),o=i.each,a=i.isObject,s=i.isArray,l=\"series\\0\";function u(e){return e instanceof Array?e:null==e?[]:[e]}function c(e){return a(e)&&e.id&&0===(e.id+\"\").indexOf(\"\\0_ec_\\0\")}var h=0;function d(e,t){return e&&e.hasOwnProperty(t)}t.normalizeToArray=u,t.defaultEmphasis=function(e,t,n){if(e){e[t]=e[t]||{},e.emphasis=e.emphasis||{},e.emphasis[t]=e.emphasis[t]||{};for(var i=0,r=n.length;i<r;i++){var o=n[i];!e.emphasis[t].hasOwnProperty(o)&&e[t].hasOwnProperty(o)&&(e.emphasis[t][o]=e[t][o])}}},t.TEXT_STYLE_OPTIONS=[\"fontStyle\",\"fontWeight\",\"fontSize\",\"fontFamily\",\"rich\",\"tag\",\"color\",\"textBorderColor\",\"textBorderWidth\",\"width\",\"height\",\"lineHeight\",\"align\",\"verticalAlign\",\"baseline\",\"shadowColor\",\"shadowBlur\",\"shadowOffsetX\",\"shadowOffsetY\",\"textShadowColor\",\"textShadowBlur\",\"textShadowOffsetX\",\"textShadowOffsetY\",\"backgroundColor\",\"borderColor\",\"borderWidth\",\"borderRadius\",\"padding\"],t.getDataItemValue=function(e){return!a(e)||s(e)||e instanceof Date?e:e.value},t.isDataItemOption=function(e){return a(e)&&!(e instanceof Array)},t.mappingToExists=function(e,t){t=(t||[]).slice();var n=i.map(e||[],function(e,t){return{exist:e}});return o(t,function(e,i){if(a(e)){for(var r=0;r<n.length;r++)if(!n[r].option&&null!=e.id&&n[r].exist.id===e.id+\"\")return n[r].option=e,void(t[i]=null);for(r=0;r<n.length;r++){var o=n[r].exist;if(!(n[r].option||null!=o.id&&null!=e.id||null==e.name||c(e)||c(o)||o.name!==e.name+\"\"))return n[r].option=e,void(t[i]=null)}}}),o(t,function(e,t){if(a(e)){for(var i=0;i<n.length;i++){var r=n[i].exist;if(!n[i].option&&!c(r)&&null==e.id){n[i].option=e;break}}i>=n.length&&n.push({option:e})}}),n},t.makeIdAndName=function(e){var t=i.createHashMap();o(e,function(e,n){var i=e.exist;i&&t.set(i.id,e)}),o(e,function(e,n){var r=e.option;i.assert(!r||null==r.id||!t.get(r.id)||t.get(r.id)===e,\"id duplicates: \"+(r&&r.id)),r&&null!=r.id&&t.set(r.id,e),!e.keyInfo&&(e.keyInfo={})}),o(e,function(e,n){var i=e.exist,r=e.option,o=e.keyInfo;if(a(r)){if(o.name=null!=r.name?r.name+\"\":i?i.name:l+n,i)o.id=i.id;else if(null!=r.id)o.id=r.id+\"\";else{var s=0;do{o.id=\"\\0\"+o.name+\"\\0\"+s++}while(t.get(o.id))}t.set(o.id,e)}})},t.isNameSpecified=function(e){var t=e.name;return!(!t||!t.indexOf(l))},t.isIdInner=c,t.compressBatches=function(e,t){var n={},i={};return r(e||[],n),r(t||[],i,n),[o(n),o(i)];function r(e,t,n){for(var i=0,r=e.length;i<r;i++)for(var o=e[i].seriesId,a=u(e[i].dataIndex),s=n&&n[o],l=0,c=a.length;l<c;l++){var h=a[l];s&&s[h]?s[h]=null:(t[o]||(t[o]={}))[h]=1}}function o(e,t){var n=[];for(var i in e)if(e.hasOwnProperty(i)&&null!=e[i])if(t)n.push(+i);else{var r=o(e[i],!0);r.length&&n.push({seriesId:i,dataIndex:r})}return n}},t.queryDataIndex=function(e,t){return null!=t.dataIndexInside?t.dataIndexInside:null!=t.dataIndex?i.isArray(t.dataIndex)?i.map(t.dataIndex,function(t){return e.indexOfRawIndex(t)}):e.indexOfRawIndex(t.dataIndex):null!=t.name?i.isArray(t.name)?i.map(t.name,function(t){return e.indexOfName(t)}):e.indexOfName(t.name):void 0},t.makeInner=function(){var e=\"__\\0ec_inner_\"+h+++\"_\"+Math.random().toFixed(5);return function(t){return t[e]||(t[e]={})}},t.parseFinder=function(e,t,n){if(i.isString(t)){var r={};r[t+\"Index\"]=0,t=r}var a=n&&n.defaultMainType;!a||d(t,a+\"Index\")||d(t,a+\"Id\")||d(t,a+\"Name\")||(t[a+\"Index\"]=0);var s={};return o(t,function(r,o){if(r=t[o],\"dataIndex\"!==o&&\"dataIndexInside\"!==o){var a=o.match(/^(\\w+)(Index|Id|Name)$/)||[],l=a[1],u=(a[2]||\"\").toLowerCase();if(!(!l||!u||null==r||\"index\"===u&&\"none\"===r||n&&n.includeMainTypes&&i.indexOf(n.includeMainTypes,l)<0)){var c={mainType:l};\"index\"===u&&\"all\"===r||(c[u]=r);var h=e.queryComponents(c);s[l+\"Models\"]=h,s[l+\"Model\"]=h[0]}}else s[o]=r}),s},t.setAttribute=function(e,t,n){e.setAttribute?e.setAttribute(t,n):e[t]=n},t.getAttribute=function(e,t){return e.getAttribute?e.getAttribute(t):e[t]},t.getTooltipRenderMode=function(e){return\"auto\"===e?r.domSupported?\"html\":\"richText\":e||\"html\"},t.groupData=function(e,t){var n=i.createHashMap(),r=[];return i.each(e,function(e){var i=t(e);(n.get(i)||(r.push(i),n.set(i,[]))).push(e)}),{keys:r,buckets:n}}},vjPX:function(e,t,n){var i=n(\"/gxq\"),r=i.retrieve,o=i.defaults,a=i.extend,s=i.each,l=n(\"HHfb\"),u=n(\"0sHC\"),c=n(\"Pdtn\"),h=n(\"wWR3\"),d=h.isRadianAroundZero,f=h.remRadian,p=n(\"kK7q\").createSymbol,g=n(\"dOVI\"),m=n(\"C7PF\").applyTransform,v=n(\"3yJd\").shouldShowAllLabels,y=Math.PI,b=function(e,t){this.opt=t,this.axisModel=e,o(t,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new u.Group;var n=new u.Group({position:t.position.slice(),rotation:t.rotation});n.updateTransform(),this._transform=n.transform,this._dumbGroup=n};b.prototype={constructor:b,hasBuilder:function(e){return!!x[e]},add:function(e){x[e].call(this)},getGroup:function(){return this.group}};var x={axisLine:function(){var e=this.opt,t=this.axisModel;if(t.get(\"axisLine.show\")){var n=this.axisModel.axis.getExtent(),i=this._transform,r=[n[0],0],o=[n[1],0];i&&(m(r,r,i),m(o,o,i));var l=a({lineCap:\"round\"},t.getModel(\"axisLine.lineStyle\").getLineStyle());this.group.add(new u.Line({anid:\"line\",subPixelOptimize:!0,shape:{x1:r[0],y1:r[1],x2:o[0],y2:o[1]},style:l,strokeContainThreshold:e.strokeContainThreshold||5,silent:!0,z2:1}));var c=t.get(\"axisLine.symbol\"),h=t.get(\"axisLine.symbolSize\"),d=t.get(\"axisLine.symbolOffset\")||0;if(\"number\"==typeof d&&(d=[d,d]),null!=c){\"string\"==typeof c&&(c=[c,c]),\"string\"!=typeof h&&\"number\"!=typeof h||(h=[h,h]);var f=h[0],g=h[1];s([{rotate:e.rotation+Math.PI/2,offset:d[0],r:0},{rotate:e.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((r[0]-o[0])*(r[0]-o[0])+(r[1]-o[1])*(r[1]-o[1]))}],function(t,n){if(\"none\"!==c[n]&&null!=c[n]){var i=p(c[n],-f/2,-g/2,f,g,l.stroke,!0),o=t.r+t.offset,a=[r[0]+o*Math.cos(e.rotation),r[1]-o*Math.sin(e.rotation)];i.attr({rotation:t.rotate,position:a,silent:!0,z2:11}),this.group.add(i)}},this)}}},axisTickLabel:function(){var e=this.axisModel,t=this.opt,n=function(e,t,n){var i=t.axis,r=t.getModel(\"axisTick\");if(!r.get(\"show\")||i.scale.isBlank())return;for(var a=r.getModel(\"lineStyle\"),s=n.tickDirection*r.get(\"length\"),l=M(i.getTicksCoords(),e._transform,s,o(a.getLineStyle(),{stroke:t.get(\"axisLine.lineStyle.color\")}),\"ticks\"),u=0;u<l.length;u++)e.group.add(l[u]);return l}(this,e,t);!function(e,t,n){if(v(e.axis))return;var i=e.get(\"axisLabel.showMinLabel\"),r=e.get(\"axisLabel.showMaxLabel\");t=t||[],n=n||[];var o=t[0],a=t[1],s=t[t.length-1],l=t[t.length-2],u=n[0],c=n[1],h=n[n.length-1],d=n[n.length-2];!1===i?(S(o),S(u)):k(o,a)&&(i?(S(a),S(c)):(S(o),S(u)));!1===r?(S(s),S(h)):k(l,s)&&(r?(S(l),S(d)):(S(s),S(h)))}(e,function(e,t,n){var i=t.axis;if(!r(n.axisLabelShow,t.get(\"axisLabel.show\"))||i.scale.isBlank())return;var o=t.getModel(\"axisLabel\"),a=o.get(\"margin\"),l=i.getViewLabels(),h=(r(n.labelRotate,o.get(\"rotate\"))||0)*y/180,d=w(n.rotation,h,n.labelDirection),f=t.getCategories&&t.getCategories(!0),p=[],g=C(t),m=t.get(\"triggerEvent\");return s(l,function(r,s){var l=r.tickValue,h=r.formattedLabel,v=r.rawLabel,y=o;f&&f[l]&&f[l].textStyle&&(y=new c(f[l].textStyle,o,t.ecModel));var b=y.getTextColor()||t.get(\"axisLine.lineStyle.color\"),x=[i.dataToCoord(l),n.labelOffset+n.labelDirection*a],w=new u.Text({anid:\"label_\"+l,position:x,rotation:d.rotation,silent:g,z2:10});u.setTextStyle(w.style,y,{text:h,textAlign:y.getShallow(\"align\",!0)||d.textAlign,textVerticalAlign:y.getShallow(\"verticalAlign\",!0)||y.getShallow(\"baseline\",!0)||d.textVerticalAlign,textFill:\"function\"==typeof b?b(\"category\"===i.type?v:\"value\"===i.type?l+\"\":l,s):b}),m&&(w.eventData=_(t),w.eventData.targetType=\"axisLabel\",w.eventData.value=v),e._dumbGroup.add(w),w.updateTransform(),p.push(w),e.group.add(w),w.decomposeTransform()}),p}(this,e,t),n),function(e,t,n){var i=t.axis,r=t.getModel(\"minorTick\");if(!r.get(\"show\")||i.scale.isBlank())return;var a=i.getMinorTicksCoords();if(!a.length)return;for(var s=r.getModel(\"lineStyle\"),l=n.tickDirection*r.get(\"length\"),u=o(s.getLineStyle(),o(t.getModel(\"axisTick\").getLineStyle(),{stroke:t.get(\"axisLine.lineStyle.color\")})),c=0;c<a.length;c++)for(var h=M(a[c],e._transform,l,u,\"minorticks_\"+c),d=0;d<h.length;d++)e.group.add(h[d])}(this,e,t)},axisName:function(){var e=this.opt,t=this.axisModel,n=r(e.axisName,t.get(\"name\"));if(n){var i,o,s=t.get(\"nameLocation\"),c=e.nameDirection,h=t.getModel(\"nameTextStyle\"),p=t.get(\"nameGap\")||0,g=this.axisModel.axis.getExtent(),m=g[0]>g[1]?-1:1,v=[\"start\"===s?g[0]-m*p:\"end\"===s?g[1]+m*p:(g[0]+g[1])/2,T(s)?e.labelOffset+c*p:0],b=t.get(\"nameRotate\");null!=b&&(b=b*y/180),T(s)?i=w(e.rotation,null!=b?b:e.rotation,c):(i=function(e,t,n,i){var r,o,a=f(n-e.rotation),s=i[0]>i[1],l=\"start\"===t&&!s||\"start\"!==t&&s;d(a-y/2)?(o=l?\"bottom\":\"top\",r=\"center\"):d(a-1.5*y)?(o=l?\"top\":\"bottom\",r=\"center\"):(o=\"middle\",r=a<1.5*y&&a>y/2?l?\"left\":\"right\":l?\"right\":\"left\");return{rotation:a,textAlign:r,textVerticalAlign:o}}(e,s,b||0,g),null!=(o=e.axisNameAvailableWidth)&&(o=Math.abs(o/Math.sin(i.rotation)),!isFinite(o)&&(o=null)));var x=h.getFont(),S=t.get(\"nameTruncate\",!0)||{},k=S.ellipsis,M=r(e.nameTruncateMaxWidth,S.maxWidth,o),D=null!=k&&null!=M?l.truncateText(n,M,x,k,{minChar:2,placeholder:S.placeholder}):n,A=t.get(\"tooltip\",!0),I=t.mainType,O={componentType:I,name:n,$vars:[\"name\"]};O[I+\"Index\"]=t.componentIndex;var E=new u.Text({anid:\"name\",__fullText:n,__truncatedText:D,position:v,rotation:i.rotation,silent:C(t),z2:1,tooltip:A&&A.show?a({content:n,formatter:function(){return n},formatterParams:O},A):null});u.setTextStyle(E.style,h,{text:D,textFont:x,textFill:h.getTextColor()||t.get(\"axisLine.lineStyle.color\"),textAlign:h.get(\"align\")||i.textAlign,textVerticalAlign:h.get(\"verticalAlign\")||i.textVerticalAlign}),t.get(\"triggerEvent\")&&(E.eventData=_(t),E.eventData.targetType=\"axisName\",E.eventData.name=n),this._dumbGroup.add(E),E.updateTransform(),this.group.add(E),E.decomposeTransform()}}},_=b.makeAxisEventDataBase=function(e){var t={componentType:e.mainType,componentIndex:e.componentIndex};return t[e.mainType+\"Index\"]=e.componentIndex,t},w=b.innerTextLayout=function(e,t,n){var i,r,o=f(t-e);return d(o)?(r=n>0?\"top\":\"bottom\",i=\"center\"):d(o-y)?(r=n>0?\"bottom\":\"top\",i=\"center\"):(r=\"middle\",i=o>0&&o<y?n>0?\"right\":\"left\":n>0?\"left\":\"right\"),{rotation:o,textAlign:i,textVerticalAlign:r}};var C=b.isLabelSilent=function(e){var t=e.get(\"tooltip\");return e.get(\"silent\")||!(e.get(\"triggerEvent\")||t&&t.show)};function S(e){e&&(e.ignore=!0)}function k(e,t,n){var i=e&&e.getBoundingRect().clone(),r=t&&t.getBoundingRect().clone();if(i&&r){var o=g.identity([]);return g.rotate(o,o,-e.rotation),i.applyTransform(g.mul([],o,e.getLocalTransform())),r.applyTransform(g.mul([],o,t.getLocalTransform())),i.intersect(r)}}function T(e){return\"middle\"===e||\"center\"===e}function M(e,t,n,i,r){for(var o=[],a=[],s=[],l=0;l<e.length;l++){var c=e[l].coord;a[0]=c,a[1]=0,s[0]=c,s[1]=n,t&&(m(a,a,t),m(s,s,t));var h=new u.Line({anid:r+\"_\"+e[l].tickValue,subPixelOptimize:!0,shape:{x1:a[0],y1:a[1],x2:s[0],y2:s[1]},style:i,z2:2,silent:!0});o.push(h)}return o}var D=b;e.exports=D},\"vq+x\":function(e,t,n){(function(e){var t=/MSIE \\d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),n=e.Pos,i={\"(\":\")>\",\")\":\"(<\",\"[\":\"]>\",\"]\":\"[<\",\"{\":\"}>\",\"}\":\"{<\",\"<\":\">>\",\">\":\"<<\"};function r(e){return e&&e.bracketRegex||/[(){}[\\]]/}function o(e,t,o){var s=e.getLineHandle(t.line),l=t.ch-1,u=o&&o.afterCursor;null==u&&(u=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className));var c=r(o),h=!u&&l>=0&&c.test(s.text.charAt(l))&&i[s.text.charAt(l)]||c.test(s.text.charAt(l+1))&&i[s.text.charAt(++l)];if(!h)return null;var d=\">\"==h.charAt(1)?1:-1;if(o&&o.strict&&d>0!=(l==t.ch))return null;var f=e.getTokenTypeAt(n(t.line,l+1)),p=a(e,n(t.line,l+(d>0?1:0)),d,f,o);return null==p?null:{from:n(t.line,l),to:p&&p.pos,match:p&&p.ch==h.charAt(0),forward:d>0}}function a(e,t,o,a,s){for(var l=s&&s.maxScanLineLength||1e4,u=s&&s.maxScanLines||1e3,c=[],h=r(s),d=o>0?Math.min(t.line+u,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-u),f=t.line;f!=d;f+=o){var p=e.getLine(f);if(p){var g=o>0?0:p.length-1,m=o>0?p.length:-1;if(!(p.length>l))for(f==t.line&&(g=t.ch-(o<0?1:0));g!=m;g+=o){var v=p.charAt(g);if(h.test(v)&&(void 0===a||(e.getTokenTypeAt(n(f,g+1))||\"\")==(a||\"\"))){var y=i[v];if(y&&\">\"==y.charAt(1)==o>0)c.push(v);else{if(!c.length)return{pos:n(f,g),ch:v};c.pop()}}}}}return f-o!=(o>0?e.lastLine():e.firstLine())&&null}function s(e,i,r){for(var a=e.state.matchBrackets.maxHighlightLineLength||1e3,s=r&&r.highlightNonMatching,l=[],u=e.listSelections(),c=0;c<u.length;c++){var h=u[c].empty()&&o(e,u[c].head,r);if(h&&(h.match||!1!==s)&&e.getLine(h.from.line).length<=a){var d=h.match?\"CodeMirror-matchingbracket\":\"CodeMirror-nonmatchingbracket\";l.push(e.markText(h.from,n(h.from.line,h.from.ch+1),{className:d})),h.to&&e.getLine(h.to.line).length<=a&&l.push(e.markText(h.to,n(h.to.line,h.to.ch+1),{className:d}))}}if(l.length){t&&e.state.focused&&e.focus();var f=function(){e.operation(function(){for(var e=0;e<l.length;e++)l[e].clear()})};if(!i)return f;setTimeout(f,800)}}function l(e){e.operation(function(){e.state.matchBrackets.currentlyHighlighted&&(e.state.matchBrackets.currentlyHighlighted(),e.state.matchBrackets.currentlyHighlighted=null),e.state.matchBrackets.currentlyHighlighted=s(e,!1,e.state.matchBrackets)})}function u(e){e.state.matchBrackets&&e.state.matchBrackets.currentlyHighlighted&&(e.state.matchBrackets.currentlyHighlighted(),e.state.matchBrackets.currentlyHighlighted=null)}e.defineOption(\"matchBrackets\",!1,function(t,n,i){i&&i!=e.Init&&(t.off(\"cursorActivity\",l),t.off(\"focus\",l),t.off(\"blur\",u),u(t)),n&&(t.state.matchBrackets=\"object\"==typeof n?n:{},t.on(\"cursorActivity\",l),t.on(\"focus\",l),t.on(\"blur\",u))}),e.defineExtension(\"matchBrackets\",function(){s(this,!0)}),e.defineExtension(\"findMatchingBracket\",function(e,t,n){return(n||\"boolean\"==typeof t)&&(n?(n.strict=t,t=n):t=t?{strict:!0}:null),o(this,e,t)}),e.defineExtension(\"scanForBracket\",function(e,t,n,i){return a(this,e,t,n,i)})})(n(\"8U58\"))},vub9:function(e,t,n){var i=n(\"/gxq\"),r=i.each,o=i.map,a=i.isFunction,s=i.createHashMap,l=i.noop,u=n(\"gV7x\").createTask,c=n(\"h0jU\").getUID,h=n(\"Rtf0\"),d=n(\"uJBW\"),f=n(\"vXqC\").normalizeToArray;function p(e,t,n,i){this.ecInstance=e,this.api=t,this.unfinished;n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice();this._allHandlers=n.concat(i),this._stageTaskMap=s()}var g=p.prototype;function m(e,t,n,i,o){var a;function s(e,t){return e.setDirty&&(!e.dirtyMap||e.dirtyMap.get(t.__pipeline.id))}o=o||{},r(t,function(t,r){if(!o.visualType||o.visualType===t.visualType){var l=e._stageTaskMap.get(t.uid),u=l.seriesTaskMap,c=l.overallTask;if(c){var h,d=c.agentStubMap;d.each(function(e){s(o,e)&&(e.dirty(),h=!0)}),h&&c.dirty(),v(c,i);var f=e.getPerformArgs(c,o.block);d.each(function(e){e.perform(f)}),a|=c.perform(f)}else u&&u.each(function(r,l){s(o,r)&&r.dirty();var u=e.getPerformArgs(r,o.block);u.skip=!t.performRawSeries&&n.isSeriesFiltered(r.context.model),v(r,i),a|=r.perform(u)})}}),e.unfinished|=a}g.restoreData=function(e,t){e.restoreData(t),this._stageTaskMap.each(function(e){var t=e.overallTask;t&&t.dirty()})},g.getPerformArgs=function(e,t){if(e.__pipeline){var n=this._pipelineMap.get(e.__pipeline.id),i=n.context,r=!t&&n.progressiveEnabled&&(!i||i.progressiveRender)&&e.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},g.getPipeline=function(e){return this._pipelineMap.get(e)},g.updateStreamModes=function(e,t){var n=this._pipelineMap.get(e.uid),i=e.getData().count(),r=n.progressiveEnabled&&t.incrementalPrepareRender&&i>=n.threshold,o=e.get(\"large\")&&i>=e.get(\"largeThreshold\"),a=\"mod\"===e.get(\"progressiveChunkMode\")?i:null;e.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},g.restorePipelines=function(e){var t=this,n=t._pipelineMap=s();e.eachSeries(function(e){var i=e.getProgressive(),r=e.uid;n.set(r,{id:r,head:null,tail:null,threshold:e.getProgressiveThreshold(),progressiveEnabled:i&&!(e.preventIncremental&&e.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),M(t,e,e.dataTask)})},g.prepareStageTasks=function(){var e=this._stageTaskMap,t=this.ecInstance.getModel(),n=this.api;r(this._allHandlers,function(i){var o=e.get(i.uid)||e.set(i.uid,[]);i.reset&&function(e,t,n,i,r){var o=n.seriesTaskMap||(n.seriesTaskMap=s()),a=t.seriesType,l=t.getTargetSeries;t.createOnAllSeries?i.eachRawSeries(c):a?i.eachRawSeriesByType(a,c):l&&l(i,r).each(c);function c(n){var a=n.uid,s=o.get(a)||o.set(a,u({plan:w,reset:C,count:T}));s.context={model:n,ecModel:i,api:r,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:e},M(e,n,s)}var h=e._pipelineMap;o.each(function(e,t){h.get(t)||(e.dispose(),o.removeKey(t))})}(this,i,o,t,n),i.overallReset&&function(e,t,n,i,o){var a=n.overallTask=n.overallTask||u({reset:y});a.context={ecModel:i,api:o,overallReset:t.overallReset,scheduler:e};var l=a.agentStubMap=a.agentStubMap||s(),c=t.seriesType,h=t.getTargetSeries,d=!0,f=t.modifyOutputEnd;c?i.eachRawSeriesByType(c,p):h?h(i,o).each(p):(d=!1,r(i.getSeries(),p));function p(t){var n=t.uid,i=l.get(n);i||(i=l.set(n,u({reset:b,onDirty:_})),a.dirty()),i.context={model:t,overallProgress:d,modifyOutputEnd:f},i.agent=a,i.__block=d,M(e,t,i)}var g=e._pipelineMap;l.each(function(e,t){g.get(t)||(e.dispose(),a.dirty(),l.removeKey(t))})}(this,i,o,t,n)},this)},g.prepareView=function(e,t,n,i){var r=e.renderTask,o=r.context;o.model=t,o.ecModel=n,o.api=i,r.__block=!e.incrementalPrepareRender,M(this,t,r)},g.performDataProcessorTasks=function(e,t){m(this,this._dataProcessorHandlers,e,t,{block:!0})},g.performVisualTasks=function(e,t,n){m(this,this._visualHandlers,e,t,n)},g.performSeriesTasks=function(e){var t;e.eachSeries(function(e){t|=e.dataTask.perform()}),this.unfinished|=t},g.plan=function(){this._pipelineMap.each(function(e){var t=e.tail;do{if(t.__block){e.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})};var v=g.updatePayload=function(e,t){\"remain\"!==t&&(e.context.payload=t)};function y(e){e.overallReset(e.ecModel,e.api,e.payload)}function b(e,t){return e.overallProgress&&x}function x(){this.agent.dirty(),this.getDownstream().dirty()}function _(){this.agent&&this.agent.dirty()}function w(e){return e.plan&&e.plan(e.model,e.ecModel,e.api,e.payload)}function C(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDefines=f(e.reset(e.model,e.ecModel,e.api,e.payload));return t.length>1?o(t,function(e,t){return k(t)}):S}var S=k(0);function k(e){return function(t,n){var i=n.data,r=n.resetDefines[e];if(r&&r.dataEach)for(var o=t.start;o<t.end;o++)r.dataEach(i,o);else r&&r.progress&&r.progress(t,i)}}function T(e){return e.data.count()}function M(e,t,n){var i=t.uid,r=e._pipelineMap.get(i);!r.head&&(r.head=n),r.tail&&r.tail.pipe(n),r.tail=n,n.__idxInPipeline=r.count++,n.__pipeline=r}p.wrapStageHandler=function(e,t){return a(e)&&(e={overallReset:e,seriesType:function(e){D=null;try{e(A,I)}catch(e){}return D}(e)}),e.uid=c(\"stageHandler\"),t&&(e.visualType=t),e};var D,A={},I={};function O(e,t){for(var n in t.prototype)e[n]=l}O(A,h),O(I,d),A.eachSeriesByType=A.eachRawSeriesByType=function(e){D=e},A.eachComponent=function(e){\"series\"===e.mainType&&e.subType&&(D=e.subType)};var E=p;e.exports=E},vx1D:function(e,t,n){var i=n(\"/gxq\"),r=n(\"wWR3\"),o=n(\"qVJQ\").isDimensionStacked,a=i.indexOf;function s(e,t,n,i,a,s){var l=[],u=o(t,i)?t.getCalculationInfo(\"stackResultDimension\"):i,c=h(t,u,e),d=t.indicesOfNearest(u,c)[0];l[a]=t.get(n,d),l[s]=t.get(u,d);var f=t.get(i,d),p=r.getPrecision(t.get(i,d));return(p=Math.min(p,20))>=0&&(l[s]=+l[s].toFixed(p)),[l,f]}var l=i.curry,u={min:l(s,\"min\"),max:l(s,\"max\"),average:l(s,\"average\")};function c(e,t,n,i){var r={};return null!=e.valueIndex||null!=e.valueDim?(r.valueDataDim=null!=e.valueIndex?t.getDimension(e.valueIndex):e.valueDim,r.valueAxis=n.getAxis(function(e,t){var n=e.getData(),i=n.dimensions;t=n.getDimension(t);for(var r=0;r<i.length;r++){var o=n.getDimensionInfo(i[r]);if(o.name===t)return o.coordDim}}(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=t.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=t.mapDimension(r.baseAxis.dim),r.valueDataDim=t.mapDimension(r.valueAxis.dim)),r}function h(e,t,n){if(\"average\"===n){var i=0,r=0;return e.each(t,function(e,t){isNaN(e)||(i+=e,r++)}),i/r}return\"median\"===n?e.getMedian(t):e.getDataExtent(t,!0)[\"max\"===n?1:0]}t.dataTransform=function(e,t){var n=e.getData(),r=e.coordinateSystem;if(t&&!function(e){return!isNaN(parseFloat(e.x))&&!isNaN(parseFloat(e.y))}(t)&&!i.isArray(t.coord)&&r){var o=r.dimensions,s=c(t,n,r,e);if((t=i.clone(t)).type&&u[t.type]&&s.baseAxis&&s.valueAxis){var l=a(o,s.baseAxis.dim),d=a(o,s.valueAxis.dim),f=u[t.type](n,s.baseDataDim,s.valueDataDim,l,d);t.coord=f[0],t.value=f[1]}else{for(var p=[null!=t.xAxis?t.xAxis:t.radiusAxis,null!=t.yAxis?t.yAxis:t.angleAxis],g=0;g<2;g++)u[p[g]]&&(p[g]=h(n,n.mapDimension(o[g]),p[g]));t.coord=p}}return t},t.getAxisInfo=c,t.dataFilter=function(e,t){return!(e&&e.containData&&t.coord&&!function(e){return!(isNaN(parseFloat(e.x))&&isNaN(parseFloat(e.y)))}(t))||e.containData(t.coord)},t.dimValueGetter=function(e,t,n,i){return i<2?e.coord&&e.coord[i]:e.value},t.numCalculate=h},vxwL:function(e,t,n){var i=n(\"0sHC\").subPixelOptimize,r=n(\"CqCN\"),o=n(\"wWR3\").parsePercent,a=n(\"/gxq\").retrieve2,s=\"undefined\"!=typeof Float32Array?Float32Array:Array,l={seriesType:\"candlestick\",plan:r(),reset:function(e){var t=e.coordinateSystem,n=e.getData(),r=function(e,t){var n,i=e.getBaseAxis(),r=\"category\"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/t.count()),s=o(a(e.get(\"barMaxWidth\"),r),r),l=o(a(e.get(\"barMinWidth\"),1),r),u=e.get(\"barWidth\");return null!=u?o(u,r):Math.max(Math.min(r/2,s),l)}(e,n),l=0,c=1,h=[\"x\",\"y\"],d=n.mapDimension(h[l]),f=n.mapDimension(h[c],!0),p=f[0],g=f[1],m=f[2],v=f[3];if(n.setLayout({candleWidth:r,isSimpleBox:r<=1.3}),!(null==d||f.length<4))return{progress:e.pipelineContext.large?function(e,n){var i,r,o=new s(4*e.count),a=0,h=[],f=[];for(;null!=(r=e.next());){var y=n.get(d,r),b=n.get(p,r),x=n.get(g,r),_=n.get(m,r),w=n.get(v,r);isNaN(y)||isNaN(_)||isNaN(w)?(o[a++]=NaN,a+=3):(o[a++]=u(n,r,b,x,g),h[l]=y,h[c]=_,i=t.dataToPoint(h,null,f),o[a++]=i?i[0]:NaN,o[a++]=i?i[1]:NaN,h[c]=w,i=t.dataToPoint(h,null,f),o[a++]=i?i[1]:NaN)}n.setLayout(\"largePoints\",o)}:function(e,n){var o;for(;null!=(o=e.next());){var a=n.get(d,o),s=n.get(p,o),h=n.get(g,o),f=n.get(m,o),y=n.get(v,o),b=Math.min(s,h),x=Math.max(s,h),_=T(b,a),w=T(x,a),C=T(f,a),S=T(y,a),k=[];M(k,w,0),M(k,_,1),k.push(A(S),A(w),A(C),A(_)),n.setItemLayout(o,{sign:u(n,o,s,h,g),initBaseline:s>h?w[c]:_[c],ends:k,brushRect:D(f,y,a)})}function T(e,n){var i=[];return i[l]=n,i[c]=e,isNaN(n)||isNaN(e)?[NaN,NaN]:t.dataToPoint(i)}function M(e,t,n){var o=t.slice(),a=t.slice();o[l]=i(o[l]+r/2,1,!1),a[l]=i(a[l]-r/2,1,!0),n?e.push(o,a):e.push(a,o)}function D(e,t,n){var i=T(e,n),o=T(t,n);return i[l]-=r/2,o[l]-=r/2,{x:i[0],y:i[1],width:c?r:o[0]-i[0],height:c?o[1]-i[1]:r}}function A(e){return e[l]=i(e[l],1),e}}}}};function u(e,t,n,i,r){return n>i?-1:n<i?1:t>0?e.get(r,t-1)<=i?1:-1:1}e.exports=l},\"w2H/\":function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"NUWb\"),a=n(\"HGSA\"),s=i.PRIORITY.VISUAL.COMPONENT;function l(e,t,n,i){for(var r=t.targetVisuals[i],o=a.prepareVisualTypes(r),s={color:e.getData().getVisual(\"color\")},l=0,u=o.length;l<u;l++){var c=o[l],h=r[\"opacity\"===c?\"__alphaForOpacity\":c];h&&h.applyVisual(n,d,f)}return s.color;function d(e){return s[e]}function f(e,t){s[e]=t}}i.registerVisual(s,{createOnAllSeries:!0,reset:function(e,t){var n=[];return t.eachComponent(\"visualMap\",function(t){var i=e.pipelineContext;!t.isTargetSeries(e)||i&&i.large||n.push(o.incrementalApplyVisual(t.stateList,t.targetVisuals,r.bind(t.getValueState,t),t.getDataDimension(e.getData())))}),n}}),i.registerVisual(s,{createOnAllSeries:!0,reset:function(e,t){var n=e.getData(),i=[];t.eachComponent(\"visualMap\",function(t){if(t.isTargetSeries(e)){var o=t.getVisualMeta(r.bind(l,null,e,t))||{stops:[],outerColors:[]},a=t.getDataDimension(n),s=n.getDimensionInfo(a);null!=s&&(o.dimension=s.index,i.push(o))}}),e.getData().setVisual(\"visualMeta\",i)}})},w6Zv:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\"),a=n(\"HHfb\"),s=n(\"wWR3\"),l={EN:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],CN:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"]},u={EN:[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],CN:[\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"]},c=i.extendComponentView({type:\"calendar\",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(e,t,n){var i=this.group;i.removeAll();var r=e.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient();this._renderDayRect(e,o,i),this._renderLines(e,o,a,i),this._renderYearText(e,o,a,i),this._renderMonthText(e,a,i),this._renderWeekText(e,o,a,i)},_renderDayRect:function(e,t,n){for(var i=e.coordinateSystem,r=e.getModel(\"itemStyle\").getItemStyle(),a=i.getCellWidth(),s=i.getCellHeight(),l=t.start.time;l<=t.end.time;l=i.getNextNDay(l,1).time){var u=i.dataToRect([l],!1).tl,c=new o.Rect({shape:{x:u[0],y:u[1],width:a,height:s},cursor:\"default\",style:r});n.add(c)}},_renderLines:function(e,t,n,i){var r=this,o=e.coordinateSystem,a=e.getModel(\"splitLine.lineStyle\").getLineStyle(),s=e.get(\"splitLine.show\"),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=t.start,c=0;u.time<=t.end.time;c++){d(u.formatedDate),0===c&&(u=o.getDateInfo(t.start.y+\"-\"+t.start.m));var h=u.date;h.setMonth(h.getMonth()+1),u=o.getDateInfo(h)}function d(t){r._firstDayOfMonth.push(o.getDateInfo(t)),r._firstDayPoints.push(o.dataToRect([t],!1).tl);var l=r._getLinePointsOfOneWeek(e,t,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}d(o.getNextNDay(t.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},_getEdgesPoints:function(e,t,n){var i=[e[0].slice(),e[e.length-1].slice()],r=\"horizontal\"===n?0:1;return i[0][r]=i[0][r]-t/2,i[1][r]=i[1][r]+t/2,i},_drawSplitline:function(e,t,n){var i=new o.Polyline({z2:20,shape:{points:e},style:t});n.add(i)},_getLinePointsOfOneWeek:function(e,t,n){var i=e.coordinateSystem;t=i.getDateInfo(t);for(var r=[],o=0;o<7;o++){var a=i.getNextNDay(t.time,o),s=i.dataToRect([a.time],!1);r[2*a.day]=s.tl,r[2*a.day+1]=s[\"horizontal\"===n?\"bl\":\"tr\"]}return r},_formatterLabel:function(e,t){return\"string\"==typeof e&&e?a.formatTplSimple(e,t):\"function\"==typeof e?e(t):t.nameMap},_yearTextPositionControl:function(e,t,n,i,r){t=t.slice();var o=[\"center\",\"bottom\"];\"bottom\"===i?(t[1]+=r,o=[\"center\",\"top\"]):\"left\"===i?t[0]-=r:\"right\"===i?(t[0]+=r,o=[\"center\",\"top\"]):t[1]-=r;var a=0;return\"left\"!==i&&\"right\"!==i||(a=Math.PI/2),{rotation:a,position:t,style:{textAlign:o[0],textVerticalAlign:o[1]}}},_renderYearText:function(e,t,n,i){var r=e.getModel(\"yearLabel\");if(r.get(\"show\")){var a=r.get(\"margin\"),s=r.get(\"position\");s||(s=\"horizontal\"!==n?\"top\":\"left\");var l=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],u=(l[0][0]+l[1][0])/2,c=(l[0][1]+l[1][1])/2,h=\"horizontal\"===n?0:1,d={top:[u,l[h][1]],bottom:[u,l[1-h][1]],left:[l[1-h][0],c],right:[l[h][0],c]},f=t.start.y;+t.end.y>+t.start.y&&(f=f+\"-\"+t.end.y);var p=r.get(\"formatter\"),g={start:t.start.y,end:t.end.y,nameMap:f},m=this._formatterLabel(p,g),v=new o.Text({z2:30});o.setTextStyle(v.style,r,{text:m}),v.attr(this._yearTextPositionControl(v,d[s],n,s,a)),i.add(v)}},_monthTextPositionControl:function(e,t,n,i,r){var o=\"left\",a=\"top\",s=e[0],l=e[1];return\"horizontal\"===n?(l+=r,t&&(o=\"center\"),\"start\"===i&&(a=\"bottom\")):(s+=r,t&&(a=\"middle\"),\"start\"===i&&(o=\"right\")),{x:s,y:l,textAlign:o,textVerticalAlign:a}},_renderMonthText:function(e,t,n){var i=e.getModel(\"monthLabel\");if(i.get(\"show\")){var a=i.get(\"nameMap\"),s=i.get(\"margin\"),u=i.get(\"position\"),c=i.get(\"align\"),h=[this._tlpoints,this._blpoints];r.isString(a)&&(a=l[a.toUpperCase()]||[]);var d=\"start\"===u?0:1,f=\"horizontal\"===t?0:1;s=\"start\"===u?-s:s;for(var p=\"center\"===c,g=0;g<h[d].length-1;g++){var m=h[d][g].slice(),v=this._firstDayOfMonth[g];if(p){var y=this._firstDayPoints[g];m[f]=(y[f]+h[0][g+1][f])/2}var b=i.get(\"formatter\"),x=a[+v.m-1],_={yyyy:v.y,yy:(v.y+\"\").slice(2),MM:v.m,M:+v.m,nameMap:x},w=this._formatterLabel(b,_),C=new o.Text({z2:30});r.extend(o.setTextStyle(C.style,i,{text:w}),this._monthTextPositionControl(m,p,t,u,s)),n.add(C)}}},_weekTextPositionControl:function(e,t,n,i,r){var o=\"center\",a=\"middle\",s=e[0],l=e[1],u=\"start\"===n;return\"horizontal\"===t?(s=s+i+(u?1:-1)*r[0]/2,o=u?\"right\":\"left\"):(l=l+i+(u?1:-1)*r[1]/2,a=u?\"bottom\":\"top\"),{x:s,y:l,textAlign:o,textVerticalAlign:a}},_renderWeekText:function(e,t,n,i){var a=e.getModel(\"dayLabel\");if(a.get(\"show\")){var l=e.coordinateSystem,c=a.get(\"position\"),h=a.get(\"nameMap\"),d=a.get(\"margin\"),f=l.getFirstDayOfWeek();r.isString(h)&&(h=u[h.toUpperCase()]||[]);var p=l.getNextNDay(t.end.time,7-t.lweek).time,g=[l.getCellWidth(),l.getCellHeight()];d=s.parsePercent(d,g[\"horizontal\"===n?0:1]),\"start\"===c&&(p=l.getNextNDay(t.start.time,-(7+t.fweek)).time,d=-d);for(var m=0;m<7;m++){var v,y=l.getNextNDay(p,m),b=l.dataToRect([y.time],!1).center;v=Math.abs((m+f)%7);var x=new o.Text({z2:30});r.extend(o.setTextStyle(x.style,a,{text:h[v]}),this._weekTextPositionControl(b,n,c,d,g)),i.add(x)}}}});e.exports=c},wEU0:function(e,t){e.exports={getBoxLayoutParams:function(){return{left:this.get(\"left\"),top:this.get(\"top\"),right:this.get(\"right\"),bottom:this.get(\"bottom\"),width:this.get(\"width\"),height:this.get(\"height\")}}}},wH4Y:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"YNzw\"),a=n(\"B123\"),s=n(\"HGSA\"),l=n(\"NUWb\"),u=n(\"vXqC\"),c=n(\"wWR3\"),h=s.mapVisual,d=s.eachVisual,f=r.isArray,p=r.each,g=c.asc,m=c.linearMap,v=r.noop,y=i.extendComponentModel({type:\"visualMap\",dependencies:[\"series\"],stateList:[\"inRange\",\"outOfRange\"],replacableOptionKeys:[\"inRange\",\"outOfRange\",\"target\",\"controller\",\"color\"],dataBound:[-1/0,1/0],layoutMode:{type:\"box\",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:\"all\",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:\"vertical\",backgroundColor:\"rgba(0,0,0,0)\",borderColor:\"#ccc\",contentColor:\"#5793f3\",inactiveColor:\"#aaa\",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:\"#333\"}},init:function(e,t,n){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(e,n)},optionUpdated:function(e,t){var n=this.option;o.canvasSupported||(n.realtime=!1),!t&&l.replaceVisualOption(n,e,this.replacableOptionKeys),this.textStyleModel=this.getModel(\"textStyle\"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(e){var t=this.stateList;e=r.bind(e,this),this.controllerVisuals=l.createVisualMappings(this.option.controller,t,e),this.targetVisuals=l.createVisualMappings(this.option.target,t,e)},getTargetSeriesIndices:function(){var e=this.option.seriesIndex,t=[];return null==e||\"all\"===e?this.ecModel.eachSeries(function(e,n){t.push(n)}):t=u.normalizeToArray(e),t},eachTargetSeries:function(e,t){r.each(this.getTargetSeriesIndices(),function(n){e.call(t,this.ecModel.getSeriesByIndex(n))},this)},isTargetSeries:function(e){var t=!1;return this.eachTargetSeries(function(n){n===e&&(t=!0)}),t},formatValueText:function(e,t,n){var i,o,a=this.option,s=a.precision,l=this.dataBound,u=a.formatter;return n=n||[\"<\",\">\"],r.isArray(e)&&(e=e.slice(),i=!0),o=t?e:i?[c(e[0]),c(e[1])]:c(e),r.isString(u)?u.replace(\"{value}\",i?o[0]:o).replace(\"{value2}\",i?o[1]:o):r.isFunction(u)?i?u(e[0],e[1]):u(e):i?e[0]===l[0]?n[0]+\" \"+o[1]:e[1]===l[1]?n[1]+\" \"+o[0]:o[0]+\" - \"+o[1]:o;function c(e){return e===l[0]?\"min\":e===l[1]?\"max\":(+e).toFixed(Math.min(s,20))}},resetExtent:function(){var e=this.option,t=g([e.min,e.max]);this._dataExtent=t},getDataDimension:function(e){var t=this.option.dimension,n=e.dimensions;if(null!=t||n.length){if(null!=t)return e.getDimension(t);for(var i=e.dimensions,r=i.length-1;r>=0;r--){var o=i[r];if(!e.getDimensionInfo(o).isCalculationCoord)return o}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){var e=this.ecModel,t=this.option,n={inRange:t.inRange,outOfRange:t.outOfRange},i=t.target||(t.target={}),o=t.controller||(t.controller={});r.merge(i,n),r.merge(o,n);var l=this.isCategory();function u(n){f(t.color)&&!n.inRange&&(n.inRange={color:t.color.slice().reverse()}),n.inRange=n.inRange||{color:e.get(\"gradientColor\")},p(this.stateList,function(e){var t=n[e];if(r.isString(t)){var i=a.get(t,\"active\",l);i?(n[e]={},n[e][t]=i):delete n[e]}},this)}u.call(this,i),u.call(this,o),function(e,t,n){var i=e[t],r=e[n];i&&!r&&(r=e[n]={},p(i,function(e,t){if(s.isValidType(t)){var n=a.get(t,\"inactive\",l);null!=n&&(r[t]=n,\"color\"!==t||r.hasOwnProperty(\"opacity\")||r.hasOwnProperty(\"colorAlpha\")||(r.opacity=[0,0]))}}))}.call(this,i,\"inRange\",\"outOfRange\"),function(e){var t=(e.inRange||{}).symbol||(e.outOfRange||{}).symbol,n=(e.inRange||{}).symbolSize||(e.outOfRange||{}).symbolSize,i=this.get(\"inactiveColor\");p(this.stateList,function(o){var a=this.itemSize,s=e[o];s||(s=e[o]={color:l?i:[i]}),null==s.symbol&&(s.symbol=t&&r.clone(t)||(l?\"roundRect\":[\"roundRect\"])),null==s.symbolSize&&(s.symbolSize=n&&r.clone(n)||(l?a[0]:[a[0],a[0]])),s.symbol=h(s.symbol,function(e){return\"none\"===e||\"square\"===e?\"roundRect\":e});var u=s.symbolSize;if(null!=u){var c=-1/0;d(u,function(e){e>c&&(c=e)}),s.symbolSize=h(u,function(e){return m(e,[0,c],[0,a[0]],!0)})}},this)}.call(this,o)},resetItemSize:function(){this.itemSize=[parseFloat(this.get(\"itemWidth\")),parseFloat(this.get(\"itemHeight\"))]},isCategory:function(){return!!this.option.categories},setSelected:v,getValueState:v,getVisualMeta:v});e.exports=y},wLWv:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"1Xuh\"),a=n(\"8RN9\"),s=r.Group,l=[\"width\",\"height\"],u=[\"x\",\"y\"],c=a.extend({type:\"legend.scroll\",newlineDisabled:!0,init:function(){c.superCall(this,\"init\"),this._currentIndex=0,this.group.add(this._containerGroup=new s),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new s),this._showController},resetInner:function(){c.superCall(this,\"resetInner\"),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},renderInner:function(e,t,n,o,a,s,l){var u=this;c.superCall(this,\"renderInner\",e,t,n,o,a,s,l);var h=this._controllerGroup,d=t.get(\"pageIconSize\",!0);i.isArray(d)||(d=[d,d]),p(\"pagePrev\",0);var f=t.getModel(\"pageTextStyle\");function p(e,n){var a=e+\"DataIndex\",s=r.createIcon(t.get(\"pageIcons\",!0)[t.getOrient().name][n],{onclick:i.bind(u._pageGo,u,a,t,o)},{x:-d[0]/2,y:-d[1]/2,width:d[0],height:d[1]});s.name=e,h.add(s)}h.add(new r.Text({name:\"pageText\",style:{textFill:f.getTextColor(),font:f.getFont(),textVerticalAlign:\"middle\",textAlign:\"center\"},silent:!0})),p(\"pageNext\",1)},layoutInner:function(e,t,n,r,a,s){var c=this.getSelectorGroup(),h=e.getOrient().index,d=l[h],f=u[h],p=l[1-h],g=u[1-h];a&&o.box(\"horizontal\",c,e.get(\"selectorItemGap\",!0));var m=e.get(\"selectorButtonGap\",!0),v=c.getBoundingRect(),y=[-v.x,-v.y],b=i.clone(n);a&&(b[d]=n[d]-v[d]-m);var x=this._layoutContentAndController(e,r,b,h,d,p,g);if(a){if(\"end\"===s)y[h]+=x[d]+m;else{var _=v[d]+m;y[h]-=_,x[f]-=_}x[d]+=v[d]+m,y[1-h]+=x[g]+x[p]/2-v[p]/2,x[p]=Math.max(x[p],v[p]),x[g]=Math.min(x[g],v[g]+y[1-h]),c.attr(\"position\",y)}return x},_layoutContentAndController:function(e,t,n,a,s,l,u){var c=this.getContentGroup(),h=this._containerGroup,d=this._controllerGroup;o.box(e.get(\"orient\"),c,e.get(\"itemGap\"),a?n.width:null,a?null:n.height),o.box(\"horizontal\",d,e.get(\"pageButtonItemGap\",!0));var f=c.getBoundingRect(),p=d.getBoundingRect(),g=this._showController=f[s]>n[s],m=[-f.x,-f.y];t||(m[a]=c.position[a]);var v=[0,0],y=[-p.x,-p.y],b=i.retrieve2(e.get(\"pageButtonGap\",!0),e.get(\"itemGap\",!0));g&&(\"end\"===e.get(\"pageButtonPosition\",!0)?y[a]+=n[s]-p[s]:v[a]+=p[s]+b);y[1-a]+=f[l]/2-p[l]/2,c.attr(\"position\",m),h.attr(\"position\",v),d.attr(\"position\",y);var x={x:0,y:0};if(x[s]=g?n[s]:f[s],x[l]=Math.max(f[l],p[l]),x[u]=Math.min(0,p[u]+y[1-a]),h.__rectSize=n[s],g){var _={x:0,y:0};_[s]=Math.max(n[s]-p[s]-b,0),_[l]=x[l],h.setClipPath(new r.Rect({shape:_})),h.__rectSize=_[s]}else d.eachChild(function(e){e.attr({invisible:!0,silent:!0})});var w=this._getPageInfo(e);return null!=w.pageIndex&&r.updateProps(c,{position:w.contentPosition},!!g&&e),this._updatePageInfoView(e,w),x},_pageGo:function(e,t,n){var i=this._getPageInfo(t)[e];null!=i&&n.dispatchAction({type:\"legendScroll\",scrollDataIndex:i,legendId:t.id})},_updatePageInfoView:function(e,t){var n=this._controllerGroup;i.each([\"pagePrev\",\"pageNext\"],function(i){var r=null!=t[i+\"DataIndex\"],o=n.childOfName(i);o&&(o.setStyle(\"fill\",r?e.get(\"pageIconColor\",!0):e.get(\"pageIconInactiveColor\",!0)),o.cursor=r?\"pointer\":\"default\")});var r=n.childOfName(\"pageText\"),o=e.get(\"pageFormatter\"),a=t.pageIndex,s=null!=a?a+1:0,l=t.pageCount;r&&o&&r.setStyle(\"text\",i.isString(o)?o.replace(\"{current}\",s).replace(\"{total}\",l):o({current:s,total:l}))},_getPageInfo:function(e){var t=e.get(\"scrollDataIndex\",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=e.getOrient().index,o=l[r],a=u[r],s=this._findTargetItemIndex(t),c=n.children(),h=c[s],d=c.length,f=d?1:0,p={contentPosition:n.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!h)return p;var g=x(h);p.contentPosition[r]=-g.s;for(var m=s+1,v=g,y=g,b=null;m<=d;++m)(!(b=x(c[m]))&&y.e>v.s+i||b&&!_(b,v.s))&&(v=y.i>v.i?y:b)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=b;for(m=s-1,v=g,y=g,b=null;m>=-1;--m)(b=x(c[m]))&&_(y,b.s)||!(v.i<y.i)||(y=v,null==p.pagePrevDataIndex&&(p.pagePrevDataIndex=v.i),++p.pageCount,++p.pageIndex),v=b;return p;function x(e){if(e){var t=e.getBoundingRect(),n=t[a]+e.position[r];return{s:n,e:n+t[o],i:e.__legendDataIndex}}}function _(e,t){return e.e>=t&&e.s<=t+i}},_findTargetItemIndex:function(e){return this._showController?(this.getContentGroup().eachChild(function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===e&&(t=r)}),null!=t?t:n):0;var t,n}}),h=c;e.exports=h},wQkr:function(e,t,n){n(\"XuY+\"),n(\"v/z1\")},wRzc:function(e,t){var n=function(e){this.colorStops=e||[]};n.prototype={constructor:n,addColorStop:function(e,t){this.colorStops.push({offset:e,color:t})}};var i=n;e.exports=i},wTOJ:function(e,t,n){var i=n(\"1Xuh\"),r=n(\"/gxq\"),o=n(\"vXqC\").groupData;function a(e){var t=e.hostGraph.data.getRawDataItem(e.dataIndex);return null!=t.depth&&t.depth>=0}function s(e,t,n,i,o){var a=\"vertical\"===o?\"x\":\"y\";r.each(e,function(e){var r,s,l;e.sort(function(e,t){return e.getLayout()[a]-t.getLayout()[a]});for(var u=0,c=e.length,h=\"vertical\"===o?\"dx\":\"dy\",d=0;d<c;d++)(l=u-(s=e[d]).getLayout()[a])>0&&(r=s.getLayout()[a]+l,\"vertical\"===o?s.setLayout({x:r},!0):s.setLayout({y:r},!0)),u=s.getLayout()[a]+s.getLayout()[h]+t;if((l=u-t-(\"vertical\"===o?i:n))>0)for(r=s.getLayout()[a]-l,\"vertical\"===o?s.setLayout({x:r},!0):s.setLayout({y:r},!0),u=r,d=c-2;d>=0;--d)(l=(s=e[d]).getLayout()[a]+s.getLayout()[h]+t-u)>0&&(r=s.getLayout()[a]-l,\"vertical\"===o?s.setLayout({x:r},!0):s.setLayout({y:r},!0)),u=s.getLayout()[a]})}function l(e,t,n){r.each(e.slice().reverse(),function(e){r.each(e,function(e){if(e.outEdges.length){var i=g(e.outEdges,u,n)/g(e.outEdges,p,n);if(isNaN(i)){var r=e.outEdges.length;i=r?g(e.outEdges,c,n)/r:0}if(\"vertical\"===n){var o=e.getLayout().x+(i-f(e,n))*t;e.setLayout({x:o},!0)}else{var a=e.getLayout().y+(i-f(e,n))*t;e.setLayout({y:a},!0)}}})})}function u(e,t){return f(e.node2,t)*e.getValue()}function c(e,t){return f(e.node2,t)}function h(e,t){return f(e.node1,t)*e.getValue()}function d(e,t){return f(e.node1,t)}function f(e,t){return\"vertical\"===t?e.getLayout().x+e.getLayout().dx/2:e.getLayout().y+e.getLayout().dy/2}function p(e){return e.getValue()}function g(e,t,n){for(var i=0,r=e.length,o=-1;++o<r;){var a=+t.call(e,e[o],n);isNaN(a)||(i+=a)}return i}function m(e,t,n){r.each(e,function(e){r.each(e,function(e){if(e.inEdges.length){var i=g(e.inEdges,h,n)/g(e.inEdges,p,n);if(isNaN(i)){var r=e.inEdges.length;i=r?g(e.inEdges,d,n)/r:0}if(\"vertical\"===n){var o=e.getLayout().x+(i-f(e,n))*t;e.setLayout({x:o},!0)}else{var a=e.getLayout().y+(i-f(e,n))*t;e.setLayout({y:a},!0)}}})})}e.exports=function(e,t,n){e.eachSeriesByType(\"sankey\",function(e){var n=e.get(\"nodeWidth\"),u=e.get(\"nodeGap\"),c=function(e,t){return i.getLayoutRect(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}(e,t);e.layoutInfo=c;var h=c.width,d=c.height,f=e.getGraph(),v=f.nodes,y=f.edges;!function(e){r.each(e,function(e){var t=g(e.outEdges,p),n=g(e.inEdges,p),i=e.getValue()||0,r=Math.max(t,n,i);e.setLayout({value:r},!0)})}(v),function(e,t,n,i,u,c,h,d,f){(function(e,t,n,i,o,s,l){for(var u=[],c=[],h=[],d=[],f=0,p=0;p<t.length;p++)u[p]=1;for(p=0;p<e.length;p++)c[p]=e[p].inEdges.length,0===c[p]&&h.push(e[p]);for(var g=-1;h.length;){for(var m=0;m<h.length;m++){var v=h[m],y=v.hostGraph.data.getRawDataItem(v.dataIndex),b=null!=y.depth&&y.depth>=0;b&&y.depth>g&&(g=y.depth),v.setLayout({depth:b?y.depth:f},!0),\"vertical\"===s?v.setLayout({dy:n},!0):v.setLayout({dx:n},!0);for(var x=0;x<v.outEdges.length;x++){var _=v.outEdges[x],w=t.indexOf(_);u[w]=0;var C=_.node2,S=e.indexOf(C);0==--c[S]&&d.indexOf(C)<0&&d.push(C)}}++f,h=d,d=[]}for(p=0;p<u.length;p++)if(1===u[p])throw new Error(\"Sankey is a DAG, the original data has cycle!\");var k=g>f-1?g:f-1;l&&\"left\"!==l&&function(e,t,n,i){if(\"right\"===t){for(var o=[],s=e,l=0;s.length;){for(var u=0;u<s.length;u++){var c=s[u];c.setLayout({skNodeHeight:l},!0);for(var h=0;h<c.inEdges.length;h++){var d=c.inEdges[h];o.indexOf(d.node1)<0&&o.push(d.node1)}}s=o,o=[],++l}r.each(e,function(e){a(e)||e.setLayout({depth:Math.max(0,i-e.getLayout().skNodeHeight)},!0)})}else\"justify\"===t&&function(e,t){r.each(e,function(e){a(e)||e.outEdges.length||e.setLayout({depth:t},!0)})}(e,i)}(e,l,0,k),function(e,t,n){r.each(e,function(e){var i=e.getLayout().depth*t;\"vertical\"===n?e.setLayout({y:i},!0):e.setLayout({x:i},!0)})}(e,\"vertical\"===s?(o-n)/k:(i-n)/k,s)})(e,t,n,u,c,d,f),function(e,t,n,i,a,u,c){var h=function(e,t){var n=[],i=\"vertical\"===t?\"y\":\"x\",a=o(e,function(e){return e.getLayout()[i]});return a.keys.sort(function(e,t){return e-t}),r.each(a.keys,function(e){n.push(a.buckets.get(e))}),n}(e,c);(function(e,t,n,i,o,a){var s=1/0;r.each(e,function(e){var t=e.length,l=0;r.each(e,function(e){l+=e.getLayout().value});var u=\"vertical\"===a?(i-(t-1)*o)/l:(n-(t-1)*o)/l;u<s&&(s=u)}),r.each(e,function(e){r.each(e,function(e,t){var n=e.getLayout().value*s;\"vertical\"===a?(e.setLayout({x:t},!0),e.setLayout({dx:n},!0)):(e.setLayout({y:t},!0),e.setLayout({dy:n},!0))})}),r.each(t,function(e){var t=+e.getValue()*s;e.setLayout({dy:t},!0)})})(h,t,n,i,a,c),s(h,a,n,i,c);for(var d=1;u>0;u--)l(h,d*=.99,c),s(h,a,n,i,c),m(h,d,c),s(h,a,n,i,c)}(e,t,c,u,i,h,d),function(e,t){var n=\"vertical\"===t?\"x\":\"y\";r.each(e,function(e){e.outEdges.sort(function(e,t){return e.node2.getLayout()[n]-t.node2.getLayout()[n]}),e.inEdges.sort(function(e,t){return e.node1.getLayout()[n]-t.node1.getLayout()[n]})}),r.each(e,function(e){var t=0,n=0;r.each(e.outEdges,function(e){e.setLayout({sy:t},!0),t+=e.getLayout().dy}),r.each(e.inEdges,function(e){e.setLayout({ty:n},!0),n+=e.getLayout().dy})})}(e,d)}(v,y,n,u,h,d,0!==r.filter(v,function(e){return 0===e.getLayout().value}).length?0:e.get(\"layoutIterations\"),e.get(\"orient\"),e.get(\"nodeAlign\"))})}},wUOi:function(e,t,n){var i=n(\"C7PF\"),r=n(\"AAi1\"),o=Math.min,a=Math.max,s=Math.sin,l=Math.cos,u=2*Math.PI,c=i.create(),h=i.create(),d=i.create();var f=[],p=[];t.fromPoints=function(e,t,n){if(0!==e.length){var i,r=e[0],s=r[0],l=r[0],u=r[1],c=r[1];for(i=1;i<e.length;i++)r=e[i],s=o(s,r[0]),l=a(l,r[0]),u=o(u,r[1]),c=a(c,r[1]);t[0]=s,t[1]=u,n[0]=l,n[1]=c}},t.fromLine=function(e,t,n,i,r,s){r[0]=o(e,n),r[1]=o(t,i),s[0]=a(e,n),s[1]=a(t,i)},t.fromCubic=function(e,t,n,i,s,l,u,c,h,d){var g,m=r.cubicExtrema,v=r.cubicAt,y=m(e,n,s,u,f);for(h[0]=1/0,h[1]=1/0,d[0]=-1/0,d[1]=-1/0,g=0;g<y;g++){var b=v(e,n,s,u,f[g]);h[0]=o(b,h[0]),d[0]=a(b,d[0])}for(y=m(t,i,l,c,p),g=0;g<y;g++){var x=v(t,i,l,c,p[g]);h[1]=o(x,h[1]),d[1]=a(x,d[1])}h[0]=o(e,h[0]),d[0]=a(e,d[0]),h[0]=o(u,h[0]),d[0]=a(u,d[0]),h[1]=o(t,h[1]),d[1]=a(t,d[1]),h[1]=o(c,h[1]),d[1]=a(c,d[1])},t.fromQuadratic=function(e,t,n,i,s,l,u,c){var h=r.quadraticExtremum,d=r.quadraticAt,f=a(o(h(e,n,s),1),0),p=a(o(h(t,i,l),1),0),g=d(e,n,s,f),m=d(t,i,l,p);u[0]=o(e,s,g),u[1]=o(t,l,m),c[0]=a(e,s,g),c[1]=a(t,l,m)},t.fromArc=function(e,t,n,r,o,a,f,p,g){var m=i.min,v=i.max,y=Math.abs(o-a);if(y%u<1e-4&&y>1e-4)return p[0]=e-n,p[1]=t-r,g[0]=e+n,void(g[1]=t+r);if(c[0]=l(o)*n+e,c[1]=s(o)*r+t,h[0]=l(a)*n+e,h[1]=s(a)*r+t,m(p,c,h),v(g,c,h),(o%=u)<0&&(o+=u),(a%=u)<0&&(a+=u),o>a&&!f?a+=u:o<a&&f&&(o+=u),f){var b=a;a=o,o=b}for(var x=0;x<a;x+=Math.PI/2)x>o&&(d[0]=l(x)*n+e,d[1]=s(x)*r+t,m(p,d,p),v(g,d,g))}},wW3A:function(e,t,n){var i=n(\"wWR3\"),r=i.round;function o(e){return i.getPrecisionSafe(e)+2}function a(e,t,n){e[t]=Math.max(Math.min(e[t],n[1]),n[0])}function s(e,t){!isFinite(e[0])&&(e[0]=t[0]),!isFinite(e[1])&&(e[1]=t[1]),a(e,0,t),a(e,1,t),e[0]>e[1]&&(e[0]=e[1])}t.intervalScaleNiceTicks=function(e,t,n,a){var l={},u=e[1]-e[0],c=l.interval=i.nice(u/t,!0);null!=n&&c<n&&(c=l.interval=n),null!=a&&c>a&&(c=l.interval=a);var h=l.intervalPrecision=o(c);return s(l.niceTickExtent=[r(Math.ceil(e[0]/c)*c,h),r(Math.floor(e[1]/c)*c,h)],e),l},t.getIntervalPrecision=o,t.fixExtent=s},wWR3:function(e,t,n){var i=n(\"/gxq\"),r=1e-4;var o=/^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/;function a(e){if(0===e)return 0;var t=Math.floor(Math.log(e)/Math.LN10);return e/Math.pow(10,t)>=10&&t++,t}t.linearMap=function(e,t,n,i){var r=t[1]-t[0],o=n[1]-n[0];if(0===r)return 0===o?n[0]:(n[0]+n[1])/2;if(i)if(r>0){if(e<=t[0])return n[0];if(e>=t[1])return n[1]}else{if(e>=t[0])return n[0];if(e<=t[1])return n[1]}else{if(e===t[0])return n[0];if(e===t[1])return n[1]}return(e-t[0])/r*o+n[0]},t.parsePercent=function(e,t){switch(e){case\"center\":case\"middle\":e=\"50%\";break;case\"left\":case\"top\":e=\"0%\";break;case\"right\":case\"bottom\":e=\"100%\"}return\"string\"==typeof e?(n=e,n.replace(/^\\s+|\\s+$/g,\"\")).match(/%$/)?parseFloat(e)/100*t:parseFloat(e):null==e?NaN:+e;var n},t.round=function(e,t,n){return null==t&&(t=10),t=Math.min(Math.max(0,t),20),e=(+e).toFixed(t),n?e:+e},t.asc=function(e){return e.sort(function(e,t){return e-t}),e},t.getPrecision=function(e){if(e=+e,isNaN(e))return 0;for(var t=1,n=0;Math.round(e*t)/t!==e;)t*=10,n++;return n},t.getPrecisionSafe=function(e){var t=e.toString(),n=t.indexOf(\"e\");if(n>0){var i=+t.slice(n+1);return i<0?-i:0}var r=t.indexOf(\".\");return r<0?0:t.length-1-r},t.getPixelPrecision=function(e,t){var n=Math.log,i=Math.LN10,r=Math.floor(n(e[1]-e[0])/i),o=Math.round(n(Math.abs(t[1]-t[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20},t.getPercentWithPrecision=function(e,t,n){if(!e[t])return 0;var r=i.reduce(e,function(e,t){return e+(isNaN(t)?0:t)},0);if(0===r)return 0;for(var o=Math.pow(10,n),a=i.map(e,function(e){return(isNaN(e)?0:e)/r*o*100}),s=100*o,l=i.map(a,function(e){return Math.floor(e)}),u=i.reduce(l,function(e,t){return e+t},0),c=i.map(a,function(e,t){return e-l[t]});u<s;){for(var h=Number.NEGATIVE_INFINITY,d=null,f=0,p=c.length;f<p;++f)c[f]>h&&(h=c[f],d=f);++l[d],c[d]=0,++u}return l[t]/o},t.MAX_SAFE_INTEGER=9007199254740991,t.remRadian=function(e){var t=2*Math.PI;return(e%t+t)%t},t.isRadianAroundZero=function(e){return e>-r&&e<r},t.parseDate=function(e){if(e instanceof Date)return e;if(\"string\"==typeof e){var t=o.exec(e);if(!t)return new Date(NaN);if(t[8]){var n=+t[4]||0;return\"Z\"!==t[8].toUpperCase()&&(n-=t[8].slice(0,3)),new Date(Date.UTC(+t[1],+(t[2]||1)-1,+t[3]||1,n,+(t[5]||0),+t[6]||0,+t[7]||0))}return new Date(+t[1],+(t[2]||1)-1,+t[3]||1,+t[4]||0,+(t[5]||0),+t[6]||0,+t[7]||0)}return null==e?new Date(NaN):new Date(Math.round(e))},t.quantity=function(e){return Math.pow(10,a(e))},t.quantityExponent=a,t.nice=function(e,t){var n=a(e),i=Math.pow(10,n),r=e/i;return e=(t?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+e.toFixed(n<0?-n:0):e},t.quantile=function(e,t){var n=(e.length-1)*t+1,i=Math.floor(n),r=+e[i-1],o=n-i;return o?r+o*(e[i]-r):r},t.reformIntervals=function(e){e.sort(function(e,t){return function e(t,n,i){return t.interval[i]<n.interval[i]||t.interval[i]===n.interval[i]&&(t.close[i]-n.close[i]==(i?-1:1)||!i&&e(t,n,1))}(e,t,0)?-1:1});for(var t=-1/0,n=1,i=0;i<e.length;){for(var r=e[i].interval,o=e[i].close,a=0;a<2;a++)r[a]<=t&&(r[a]=t,o[a]=a?1:1-n),t=r[a],n=o[a];r[0]===r[1]&&o[0]*o[1]!=1?e.splice(i,1):i++}return e},t.isNumeric=function(e){return e-parseFloat(e)>=0}},whrq:function(e,t,n){var i=n(\"/gxq\"),r=n(\"vXqC\"),o=n(\"Y5nL\"),a=n(\"Pdtn\"),s=n(\"kQD9\"),l=n(\"srbS\"),u=o.extend({type:\"geo\",coordinateSystem:null,layoutMode:\"box\",init:function(e){o.prototype.init.apply(this,arguments),r.defaultEmphasis(e,\"label\",[\"show\"])},optionUpdated:function(){var e=this.option,t=this;e.regions=l.getFilledRegions(e.regions,e.map,e.nameMap),this._optionModelMap=i.reduce(e.regions||[],function(e,n){return n.name&&e.set(n.name,new a(n,t)),e},i.createHashMap()),this.updateSelectedMap(e.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:\"center\",top:\"center\",aspectScale:null,silent:!1,map:\"\",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:\"#000\"},itemStyle:{borderWidth:.5,borderColor:\"#444\",color:\"#eee\"},emphasis:{label:{show:!0,color:\"rgb(100,0,0)\"},itemStyle:{color:\"rgba(255,215,0,0.8)\"}},regions:[]},getRegionModel:function(e){return this._optionModelMap.get(e)||new a(null,this,this.ecModel)},getFormattedLabel:function(e,t){var n=this.getRegionModel(e).get(\"label\"+(\"normal\"===t?\".\":t+\".\")+\"formatter\"),i={name:e};return\"function\"==typeof n?(i.status=t,n(i)):\"string\"==typeof n?n.replace(\"{a}\",null!=e?e:\"\"):void 0},setZoom:function(e){this.option.zoom=e},setCenter:function(e){this.option.center=e}});i.mixin(u,s);var c=u;e.exports=c},woOf:function(e,t,n){e.exports={default:n(\"V3tA\"),__esModule:!0}},xCbH:function(e,t,n){var i=n(\"/gxq\"),r=n(\"/+sa\"),o=n(\"wWR3\"),a=n(\"tBuv\"),s=r.prototype,l=a.prototype,u=o.getPrecisionSafe,c=o.round,h=Math.floor,d=Math.ceil,f=Math.pow,p=Math.log,g=r.extend({type:\"log\",base:10,$constructor:function(){r.apply(this,arguments),this._originalScale=new a},getTicks:function(e){var t=this._originalScale,n=this._extent,r=t.getExtent();return i.map(l.getTicks.call(this,e),function(e){var i=o.round(f(this.base,e));return i=e===n[0]&&t.__fixMin?m(i,r[0]):i,i=e===n[1]&&t.__fixMax?m(i,r[1]):i},this)},getMinorTicks:l.getMinorTicks,getLabel:l.getLabel,scale:function(e){return e=s.scale.call(this,e),f(this.base,e)},setExtent:function(e,t){var n=this.base;e=p(e)/p(n),t=p(t)/p(n),l.setExtent.call(this,e,t)},getExtent:function(){var e=this.base,t=s.getExtent.call(this);t[0]=f(e,t[0]),t[1]=f(e,t[1]);var n=this._originalScale,i=n.getExtent();return n.__fixMin&&(t[0]=m(t[0],i[0])),n.__fixMax&&(t[1]=m(t[1],i[1])),t},unionExtent:function(e){this._originalScale.unionExtent(e);var t=this.base;e[0]=p(e[0])/p(t),e[1]=p(e[1])/p(t),s.unionExtent.call(this,e)},unionExtentFromData:function(e,t){this.unionExtent(e.getApproximateExtent(t))},niceTicks:function(e){e=e||10;var t=this._extent,n=t[1]-t[0];if(!(n===1/0||n<=0)){var i=o.quantity(n);for(e/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[o.round(d(t[0]/i)*i),o.round(h(t[1]/i)*i)];this._interval=i,this._niceExtent=r}},niceExtent:function(e){l.niceExtent.call(this,e);var t=this._originalScale;t.__fixMin=e.fixMin,t.__fixMax=e.fixMax}});function m(e,t){return c(e,u(t))}i.each([\"contain\",\"normalize\"],function(e){g.prototype[e]=function(t){return t=p(t)/p(this.base),s[e].call(this,t)}}),g.create=function(){return new g};var v=g;e.exports=v},xGkn:function(e,t,n){\"use strict\";var i=n(\"4mcu\"),r=n(\"EGZi\"),o=n(\"/bQp\"),a=n(\"TcQ7\");e.exports=n(\"vIB/\")(Array,\"Array\",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):r(0,\"keys\"==t?n:\"values\"==t?e[n]:[n,e[n]])},\"values\"),o.Arguments=o.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},xLO3:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"s/lY\"),a=n(\"Pdtn\"),s=n(\"2uoh\"),l=o.valueAxis;function u(e,t){return r.defaults({show:t},e)}var c=i.extendComponentModel({type:\"radar\",optionUpdated:function(){var e=this.get(\"boundaryGap\"),t=this.get(\"splitNumber\"),n=this.get(\"scale\"),i=this.get(\"axisLine\"),o=this.get(\"axisTick\"),l=this.get(\"axisType\"),u=this.get(\"axisLabel\"),c=this.get(\"name\"),h=this.get(\"name.show\"),d=this.get(\"name.formatter\"),f=this.get(\"nameGap\"),p=this.get(\"triggerEvent\"),g=r.map(this.get(\"indicator\")||[],function(g){null!=g.max&&g.max>0&&!g.min?g.min=0:null!=g.min&&g.min<0&&!g.max&&(g.max=0);var m=c;if(null!=g.color&&(m=r.defaults({color:g.color},c)),g=r.merge(r.clone(g),{boundaryGap:e,splitNumber:t,scale:n,axisLine:i,axisTick:o,axisType:l,axisLabel:u,name:g.text,nameLocation:\"end\",nameGap:f,nameTextStyle:m,triggerEvent:p},!1),h||(g.name=\"\"),\"string\"==typeof d){var v=g.name;g.name=d.replace(\"{value}\",null!=v?v:\"\")}else\"function\"==typeof d&&(g.name=d(g.name,g));var y=r.extend(new a(g,null,this.ecModel),s);return y.mainType=\"radar\",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return g}},defaultOption:{zlevel:0,z:0,center:[\"50%\",\"50%\"],radius:\"75%\",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:\"polygon\",axisLine:r.merge({lineStyle:{color:\"#bbb\"}},l.axisLine),axisLabel:u(l.axisLabel,!1),axisTick:u(l.axisTick,!1),axisType:\"interval\",splitLine:u(l.splitLine,!0),splitArea:u(l.splitArea,!0),indicator:[]}});e.exports=c},\"xb/I\":function(e,t,n){var i=n(\"/gxq\"),r=n(\"vXqC\"),o=i.each,a=i.isObject,s=[\"areaStyle\",\"lineStyle\",\"nodeStyle\",\"linkStyle\",\"chordStyle\",\"label\",\"labelLine\"];function l(e){var t=e&&e.itemStyle;if(t)for(var n=0,r=s.length;n<r;n++){var o=s[n],a=t.normal,l=t.emphasis;a&&a[o]&&(e[o]=e[o]||{},e[o].normal?i.merge(e[o].normal,a[o]):e[o].normal=a[o],a[o]=null),l&&l[o]&&(e[o]=e[o]||{},e[o].emphasis?i.merge(e[o].emphasis,l[o]):e[o].emphasis=l[o],l[o]=null)}}function u(e,t,n){if(e&&e[t]&&(e[t].normal||e[t].emphasis)){var r=e[t].normal,o=e[t].emphasis;r&&(n?(e[t].normal=e[t].emphasis=null,i.defaults(e[t],r)):e[t]=r),o&&(e.emphasis=e.emphasis||{},e.emphasis[t]=o)}}function c(e){u(e,\"itemStyle\"),u(e,\"lineStyle\"),u(e,\"areaStyle\"),u(e,\"label\"),u(e,\"labelLine\"),u(e,\"upperLabel\"),u(e,\"edgeLabel\")}function h(e,t){var n=a(e)&&e[t],i=a(n)&&n.textStyle;if(i)for(var o=0,s=r.TEXT_STYLE_OPTIONS.length;o<s;o++){t=r.TEXT_STYLE_OPTIONS[o];i.hasOwnProperty(t)&&(n[t]=i[t])}}function d(e){e&&(c(e),h(e,\"label\"),e.emphasis&&h(e.emphasis,\"label\"))}function f(e){return i.isArray(e)?e:e?[e]:[]}function p(e){return(i.isArray(e)?e[0]:e)||{}}e.exports=function(e,t){o(f(e.series),function(e){a(e)&&function(e){if(a(e)){l(e),c(e),h(e,\"label\"),h(e,\"upperLabel\"),h(e,\"edgeLabel\"),e.emphasis&&(h(e.emphasis,\"label\"),h(e.emphasis,\"upperLabel\"),h(e.emphasis,\"edgeLabel\")),(n=e.markPoint)&&(l(n),d(n)),(r=e.markLine)&&(l(r),d(r));var t=e.markArea;t&&d(t);var n,r,o=e.data;if(\"graph\"===e.type){o=o||e.nodes;var s=e.links||e.edges;if(s&&!i.isTypedArray(s))for(var f=0;f<s.length;f++)d(s[f]);i.each(e.categories,function(e){c(e)})}if(o&&!i.isTypedArray(o))for(f=0;f<o.length;f++)d(o[f]);if((n=e.markPoint)&&n.data){var p=n.data;for(f=0;f<p.length;f++)d(p[f])}if((r=e.markLine)&&r.data){var g=r.data;for(f=0;f<g.length;f++)i.isArray(g[f])?(d(g[f][0]),d(g[f][1])):d(g[f])}\"gauge\"===e.type?(h(e,\"axisLabel\"),h(e,\"title\"),h(e,\"detail\")):\"treemap\"===e.type?(u(e.breadcrumb,\"itemStyle\"),i.each(e.levels,function(e){c(e)})):\"tree\"===e.type&&c(e.leaves)}}(e)});var n=[\"xAxis\",\"yAxis\",\"radiusAxis\",\"angleAxis\",\"singleAxis\",\"parallelAxis\",\"radar\"];t&&n.push(\"valueAxis\",\"categoryAxis\",\"logAxis\",\"timeAxis\"),o(n,function(t){o(f(e[t]),function(e){e&&(h(e,\"axisLabel\"),h(e.axisPointer,\"label\"))})}),o(f(e.parallel),function(e){var t=e&&e.parallelAxisDefault;h(t,\"axisLabel\"),h(t&&t.axisPointer,\"label\")}),o(f(e.calendar),function(e){u(e,\"itemStyle\"),h(e,\"dayLabel\"),h(e,\"monthLabel\"),h(e,\"yearLabel\")}),o(f(e.radar),function(e){h(e,\"name\")}),o(f(e.geo),function(e){a(e)&&(d(e),o(f(e.regions),function(e){d(e)}))}),o(f(e.timeline),function(e){d(e),u(e,\"label\"),u(e,\"itemStyle\"),u(e,\"controlStyle\",!0);var t=e.data;i.isArray(t)&&i.each(t,function(e){i.isObject(e)&&(u(e,\"label\"),u(e,\"itemStyle\"))})}),o(f(e.toolbox),function(e){u(e,\"iconStyle\"),o(e.feature,function(e){u(e,\"iconStyle\")})}),h(p(e.axisPointer),\"label\"),h(p(e.tooltip).axisPointer,\"label\")}},xnc9:function(e,t){e.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},xr8J:function(e,t){var n=Math.round;function i(e,t,i){if(!t)return e;var r=n(2*e);return(r+n(t))%2==0?r/2:(r+(i?1:-1))/2}t.subPixelOptimizeLine=function(e,t,r){if(t){var o=t.x1,a=t.x2,s=t.y1,l=t.y2;e.x1=o,e.x2=a,e.y1=s,e.y2=l;var u=r&&r.lineWidth;u&&(n(2*o)===n(2*a)&&(e.x1=e.x2=i(o,u,!0)),n(2*s)===n(2*l)&&(e.y1=e.y2=i(s,u,!0)))}},t.subPixelOptimizeRect=function(e,t,n){if(t){var r=t.x,o=t.y,a=t.width,s=t.height;e.x=r,e.y=o,e.width=a,e.height=s;var l=n&&n.lineWidth;l&&(e.x=i(r,l,!0),e.y=i(o,l,!0),e.width=Math.max(i(r+a,l,!1)-e.x,0===a?0:1),e.height=Math.max(i(o+s,l,!1)-e.y,0===s?0:1))}},t.subPixelOptimize=i},\"y+7x\":function(e,t,n){\"use strict\";t.__esModule=!0;var i=n(\"urW8\");t.default={methods:{t:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return i.t.apply(this,t)}}}},yEXw:function(e,t,n){var i=n(\"/gxq\"),r=n(\"Y5nL\"),o=n(\"1Xuh\"),a=o.getLayoutParams,s=o.sizeCalculable,l=o.mergeLayoutParam,u=r.extend({type:\"calendar\",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:\"horizontal\",splitLine:{show:!0,lineStyle:{color:\"#000\",width:1,type:\"solid\"}},itemStyle:{color:\"#fff\",borderWidth:1,borderColor:\"#ccc\"},dayLabel:{show:!0,firstDay:0,position:\"start\",margin:\"50%\",nameMap:\"en\",color:\"#000\"},monthLabel:{show:!0,position:\"start\",margin:5,align:\"center\",nameMap:\"en\",formatter:null,color:\"#000\"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:\"#ccc\",fontFamily:\"sans-serif\",fontWeight:\"bolder\",fontSize:20}},init:function(e,t,n,i){var r=a(e);u.superApply(this,\"init\",arguments),c(e,r)},mergeOption:function(e,t){u.superApply(this,\"mergeOption\",arguments),c(this.option,e)}});function c(e,t){var n=e.cellSize;i.isArray(n)?1===n.length&&(n[1]=n[0]):n=e.cellSize=[n,n];var r=i.map([0,1],function(e){return s(t,e)&&(n[e]=\"auto\"),null!=n[e]&&\"auto\"!==n[e]});l(e,t,{type:\"box\",ignoreSize:r})}var h=u;e.exports=h},ylDJ:function(e,t,n){\"use strict\";t.__esModule=!0,t.isEmpty=t.isEqual=t.arrayEquals=t.looseEqual=t.capitalize=t.kebabCase=t.autoprefixer=t.isFirefox=t.isEdge=t.isIE=t.coerceTruthyValueToArray=t.arrayFind=t.arrayFindIndex=t.escapeRegexpString=t.valueEquals=t.generateId=t.getValueByPath=void 0;var i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.noop=function(){},t.hasOwn=function(e,t){return l.call(e,t)},t.toObject=function(e){for(var t={},n=0;n<e.length;n++)e[n]&&u(t,e[n]);return t},t.getPropByPath=function(e,t,n){for(var i=e,r=(t=(t=t.replace(/\\[(\\w+)\\]/g,\".$1\")).replace(/^\\./,\"\")).split(\".\"),o=0,a=r.length;o<a-1&&(i||n);++o){var s=r[o];if(!(s in i)){if(n)throw new Error(\"please transfer a valid prop path to form item!\");break}i=i[s]}return{o:i,k:r[o],v:i?i[r[o]]:null}},t.rafThrottle=function(e){var t=!1;return function(){for(var n=this,i=arguments.length,r=Array(i),o=0;o<i;o++)r[o]=arguments[o];t||(t=!0,window.requestAnimationFrame(function(i){e.apply(n,r),t=!1}))}},t.objToArray=function(e){if(Array.isArray(e))return e;return f(e)?[]:[e]};var r,o=n(\"7+uW\"),a=(r=o)&&r.__esModule?r:{default:r},s=n(\"835U\");var l=Object.prototype.hasOwnProperty;function u(e,t){for(var n in t)e[n]=t[n];return e}t.getValueByPath=function(e,t){for(var n=(t=t||\"\").split(\".\"),i=e,r=null,o=0,a=n.length;o<a;o++){var s=n[o];if(!i)break;if(o===a-1){r=i[s];break}i=i[s]}return r};t.generateId=function(){return Math.floor(1e4*Math.random())},t.valueEquals=function(e,t){if(e===t)return!0;if(!(e instanceof Array))return!1;if(!(t instanceof Array))return!1;if(e.length!==t.length)return!1;for(var n=0;n!==e.length;++n)if(e[n]!==t[n])return!1;return!0},t.escapeRegexpString=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return String(e).replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\")};var c=t.arrayFindIndex=function(e,t){for(var n=0;n!==e.length;++n)if(t(e[n]))return n;return-1},h=(t.arrayFind=function(e,t){var n=c(e,t);return-1!==n?e[n]:void 0},t.coerceTruthyValueToArray=function(e){return Array.isArray(e)?e:e?[e]:[]},t.isIE=function(){return!a.default.prototype.$isServer&&!isNaN(Number(document.documentMode))},t.isEdge=function(){return!a.default.prototype.$isServer&&navigator.userAgent.indexOf(\"Edge\")>-1},t.isFirefox=function(){return!a.default.prototype.$isServer&&!!window.navigator.userAgent.match(/firefox/i)},t.autoprefixer=function(e){if(\"object\"!==(void 0===e?\"undefined\":i(e)))return e;var t=[\"ms-\",\"webkit-\"];return[\"transform\",\"transition\",\"animation\"].forEach(function(n){var i=e[n];n&&i&&t.forEach(function(t){e[t+n]=i})}),e},t.kebabCase=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,\"$1-$2\").replace(t,\"$1-$2\").toLowerCase()},t.capitalize=function(e){return(0,s.isString)(e)?e.charAt(0).toUpperCase()+e.slice(1):e},t.looseEqual=function(e,t){var n=(0,s.isObject)(e),i=(0,s.isObject)(t);return n&&i?JSON.stringify(e)===JSON.stringify(t):!n&&!i&&String(e)===String(t)}),d=t.arrayEquals=function(e,t){if(e=e||[],t=t||[],e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!h(e[n],t[n]))return!1;return!0},f=(t.isEqual=function(e,t){return Array.isArray(e)&&Array.isArray(t)?d(e,t):h(e,t)},t.isEmpty=function(e){if(null==e)return!0;if(\"boolean\"==typeof e)return!1;if(\"number\"==typeof e)return!e;if(e instanceof Error)return\"\"===e.message;switch(Object.prototype.toString.call(e)){case\"[object String]\":case\"[object Array]\":return!e.length;case\"[object File]\":case\"[object Map]\":case\"[object Set]\":return!e.size;case\"[object Object]\":return!Object.keys(e).length}return!1})},\"yt/B\":function(e,t,n){var i=n(\"K0T9\");function r(e){this._target=e.target,this._life=e.life||1e3,this._delay=e.delay||0,this._initialized=!1,this.loop=null!=e.loop&&e.loop,this.gap=e.gap||0,this.easing=e.easing||\"Linear\",this.onframe=e.onframe,this.ondestroy=e.ondestroy,this.onrestart=e.onrestart,this._pausedTime=0,this._paused=!1}r.prototype={constructor:r,step:function(e,t){if(this._initialized||(this._startTime=e+this._delay,this._initialized=!0),this._paused)this._pausedTime+=t;else{var n=(e-this._startTime-this._pausedTime)/this._life;if(!(n<0)){n=Math.min(n,1);var r=this.easing,o=\"string\"==typeof r?i[r]:r,a=\"function\"==typeof o?o(n):n;return this.fire(\"frame\",a),1===n?this.loop?(this.restart(e),\"restart\"):(this._needsRemove=!0,\"destroy\"):null}}},restart:function(e){var t=(e-this._startTime-this._pausedTime)%this._life;this._startTime=e-t+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(e,t){this[e=\"on\"+e]&&this[e](this._target,t)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var o=r;e.exports=o},\"z+gd\":function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){var n=function(){if(\"undefined\"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some(function(e,i){return e[0]===t&&(n=i,!0)}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,\"size\",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),i=this.__entries__[n];return i&&i[1]},t.prototype.set=function(t,n){var i=e(this.__entries__,t);~i?this.__entries__[i][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,i=e(n,t);~i&&n.splice(i,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,i=this.__entries__;n<i.length;n++){var r=i[n];e.call(t,r[1],r[0])}},t}()}(),i=\"undefined\"!=typeof window&&\"undefined\"!=typeof document&&window.document===document,r=void 0!==e&&e.Math===Math?e:\"undefined\"!=typeof self&&self.Math===Math?self:\"undefined\"!=typeof window&&window.Math===Math?window:Function(\"return this\")(),o=\"function\"==typeof requestAnimationFrame?requestAnimationFrame.bind(r):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)},a=2;var s=20,l=[\"top\",\"right\",\"bottom\",\"left\",\"width\",\"height\",\"size\",\"weight\"],u=\"undefined\"!=typeof MutationObserver,c=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,i=!1,r=0;function s(){n&&(n=!1,e()),i&&u()}function l(){o(s)}function u(){var e=Date.now();if(n){if(e-r<a)return;i=!0}else n=!0,i=!1,setTimeout(l,t);r=e}return u}(this.refresh.bind(this),s)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),e.length>0},e.prototype.connect_=function(){i&&!this.connected_&&(document.addEventListener(\"transitionend\",this.onTransitionEnd_),window.addEventListener(\"resize\",this.refresh),u?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){i&&this.connected_&&(document.removeEventListener(\"transitionend\",this.onTransitionEnd_),window.removeEventListener(\"resize\",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(\"DOMSubtreeModified\",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?\"\":t;l.some(function(e){return!!~n.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),h=function(e,t){for(var n=0,i=Object.keys(t);n<i.length;n++){var r=i[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},d=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||r},f=b(0,0,0,0);function p(e){return parseFloat(e)||0}function g(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce(function(t,n){return t+p(e[\"border-\"+n+\"-width\"])},0)}function m(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return f;var i=d(e).getComputedStyle(e),r=function(e){for(var t={},n=0,i=[\"top\",\"right\",\"bottom\",\"left\"];n<i.length;n++){var r=i[n],o=e[\"padding-\"+r];t[r]=p(o)}return t}(i),o=r.left+r.right,a=r.top+r.bottom,s=p(i.width),l=p(i.height);if(\"border-box\"===i.boxSizing&&(Math.round(s+o)!==t&&(s-=g(i,\"left\",\"right\")+o),Math.round(l+a)!==n&&(l-=g(i,\"top\",\"bottom\")+a)),!function(e){return e===d(e).document.documentElement}(e)){var u=Math.round(s+o)-t,c=Math.round(l+a)-n;1!==Math.abs(u)&&(s-=u),1!==Math.abs(c)&&(l-=c)}return b(r.left,r.top,s,l)}var v=\"undefined\"!=typeof SVGGraphicsElement?function(e){return e instanceof d(e).SVGGraphicsElement}:function(e){return e instanceof d(e).SVGElement&&\"function\"==typeof e.getBBox};function y(e){return i?v(e)?function(e){var t=e.getBBox();return b(0,0,t.width,t.height)}(e):m(e):f}function b(e,t,n,i){return{x:e,y:t,width:n,height:i}}var x=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=b(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=y(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),_=function(){return function(e,t){var n,i,r,o,a,s,l,u=(i=(n=t).x,r=n.y,o=n.width,a=n.height,s=\"undefined\"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(s.prototype),h(l,{x:i,y:r,width:o,height:a,top:r,right:i+o,bottom:a+r,left:i}),l);h(this,{target:e,contentRect:u})}}(),w=function(){function e(e,t,i){if(this.activeObservations_=[],this.observations_=new n,\"function\"!=typeof e)throw new TypeError(\"The callback provided as parameter 1 is not a function.\");this.callback_=e,this.controller_=t,this.callbackCtx_=i}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(\"undefined\"!=typeof Element&&Element instanceof Object){if(!(e instanceof d(e).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var t=this.observations_;t.has(e)||(t.set(e,new x(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");if(\"undefined\"!=typeof Element&&Element instanceof Object){if(!(e instanceof d(e).Element))throw new TypeError('parameter 1 is not of type \"Element\".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new _(e.target,e.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),C=\"undefined\"!=typeof WeakMap?new WeakMap:new n,S=function(){return function e(t){if(!(this instanceof e))throw new TypeError(\"Cannot call a class as a function.\");if(!arguments.length)throw new TypeError(\"1 argument required, but only 0 present.\");var n=c.getInstance(),i=new w(t,n,this);C.set(this,i)}}();[\"observe\",\"unobserve\",\"disconnect\"].forEach(function(e){S.prototype[e]=function(){var t;return(t=C.get(this))[e].apply(t,arguments)}});var k=void 0!==r.ResizeObserver?r.ResizeObserver:S;t.default=k}.call(t,n(\"DuR2\"))},\"z+uQ\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"Icdr\"),r=n(\"6n1D\"),o=n(\"uA0k\"),a=n(\"bzOU\"),s=n(\"PiQa\"),l=n(\"Jd65\"),u=n(\"US3d\"),c=n(\"4A6G\"),h=n(\"DDYI\").createClipPath,d=i.extendChartView({type:\"lines\",init:function(){},render:function(e,t,n){var i=e.getData(),r=this._updateLineDraw(i,e),o=e.get(\"zlevel\"),a=e.get(\"effect.trailLength\"),s=n.getZr(),l=\"svg\"===s.painter.getType();l||s.painter.getLayer(o).clear(!0),null==this._lastZlevel||l||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(e)&&a&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var u=e.get(\"clip\",!0)&&h(e.coordinateSystem,!1,e);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},incrementalPrepareRender:function(e,t,n){var i=e.getData();this._updateLineDraw(i,e).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},incrementalRender:function(e,t,n){this._lineDraw.incrementalUpdate(e,t.getData()),this._finished=e.end===t.getData().count()},updateTransform:function(e,t,n){var i=e.getData(),r=e.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=c.reset(e);o.progress&&o.progress({start:0,end:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},_updateLineDraw:function(e,t){var n=this._lineDraw,i=this._showEffect(t),c=!!t.get(\"polyline\"),h=t.pipelineContext.large;return n&&i===this._hasEffet&&c===this._isPolyline&&h===this._isLargeDraw||(n&&n.remove(),n=this._lineDraw=h?new u:new r(c?i?l:s:i?o:a),this._hasEffet=i,this._isPolyline=c,this._isLargeDraw=h,this.group.removeAll()),this.group.add(n.group),n},_showEffect:function(e){return!!e.get(\"effect.show\")},_clearLayer:function(e){var t=e.getZr();\"svg\"===t.painter.getType()||null==this._lastZlevel||t.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(e,t){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(t)},dispose:function(){}});e.exports=d},z81E:function(e,t,n){var i=n(\"Icdr\"),r=n(\"Rfu2\"),o=n(\"/gxq\"),a=n(\"vXqC\").defaultEmphasis,s=n(\"Pdtn\"),l=n(\"HHfb\").encodeHTML,u=n(\"d1IL\"),c=n(\"FCaW\"),h=i.extendSeriesModel({type:\"series.graph\",init:function(e){h.superApply(this,\"init\",arguments);var t=this;function n(){return t._categoriesData}this.legendVisualProvider=new c(n,n),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},mergeOption:function(e){h.superApply(this,\"mergeOption\",arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(e){h.superApply(this,\"mergeDefaultAndTheme\",arguments),a(e,[\"edgeLabel\"],[\"show\"])},getInitialData:function(e,t){var n=e.edges||e.links||[],i=e.data||e.nodes||[],r=this;if(i&&n)return u(i,n,this,!0,function(e,n){e.wrapMethod(\"getItemModel\",function(e){var t=r._categoriesModels,n=e.getShallow(\"category\"),i=t[n];return i&&(i.parentModel=e.parentModel,e.parentModel=i),e});var i=r.getModel(\"edgeLabel\"),o=new s({label:i.option},i.parentModel,t),a=r.getModel(\"emphasis.edgeLabel\"),l=new s({emphasis:{label:a.option}},a.parentModel,t);function u(e){return(e=this.parsePath(e))&&\"label\"===e[0]?o:e&&\"emphasis\"===e[0]&&\"label\"===e[1]?l:this.parentModel}n.wrapMethod(\"getItemModel\",function(e){return e.customizeGetParent(u),e})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(e,t,n){if(\"edge\"===n){var i=this.getData(),r=this.getDataParams(e,n),o=i.graph.getEdgeByIndex(e),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),u=[];return null!=a&&u.push(a),null!=s&&u.push(s),u=l(u.join(\" > \")),r.value&&(u+=\" : \"+l(r.value)),u}return h.superApply(this,\"formatTooltip\",arguments)},_updateCategoriesData:function(){var e=o.map(this.option.categories||[],function(e){return null!=e.value?e:o.extend({value:0},e)}),t=new r([\"value\"],this);t.initData(e),this._categoriesData=t,this._categoriesModels=t.mapArray(function(e){return t.getItemModel(e,!0)})},setZoom:function(e){this.option.zoom=e},setCenter:function(e){this.option.center=e},isAnimationEnabled:function(){return h.superCall(this,\"isAnimationEnabled\")&&!(\"force\"===this.get(\"layout\")&&this.get(\"force.layoutAnimation\"))},defaultOption:{zlevel:0,z:2,coordinateSystem:\"view\",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:\"center\",top:\"center\",symbol:\"circle\",symbolSize:10,edgeSymbol:[\"none\",\"none\"],edgeSymbolSize:10,edgeLabel:{position:\"middle\",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:\"{b}\"},itemStyle:{},lineStyle:{color:\"#aaa\",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),d=h;e.exports=d},\"zAL+\":function(e,t){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=99)}({0:function(e,t,n){\"use strict\";function i(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}n.d(t,\"a\",function(){return i})},99:function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-button-group\"},[this._t(\"default\")],2)};i._withStripped=!0;var r={name:\"ElButtonGroup\"},o=n(0),a=Object(o.a)(r,i,[],!1,null,null,null);a.options.__file=\"packages/button/src/button-group.vue\";var s=a.exports;s.install=function(e){e.component(s.name,s)};t.default=s}})},zAPJ:function(e,t,n){var i=n(\"/gxq\"),r=n(\"0sHC\"),o=n(\"3h1/\"),a=n(\"HHfb\"),s=n(\"dOVI\"),l=n(\"3yJd\"),u=n(\"vjPX\");function c(e,t,n,i,r){var s=h(n.get(\"value\"),t.axis,t.ecModel,n.get(\"seriesDataIndices\"),{precision:n.get(\"label.precision\"),formatter:n.get(\"label.formatter\")}),l=n.getModel(\"label\"),u=a.normalizeCssArray(l.get(\"padding\")||0),c=l.getFont(),d=o.getBoundingRect(s,c),f=r.position,p=d.width+u[1]+u[3],g=d.height+u[0]+u[2],m=r.align;\"right\"===m&&(f[0]-=p),\"center\"===m&&(f[0]-=p/2);var v=r.verticalAlign;\"bottom\"===v&&(f[1]-=g),\"middle\"===v&&(f[1]-=g/2),function(e,t,n,i){var r=i.getWidth(),o=i.getHeight();e[0]=Math.min(e[0]+t,r)-t,e[1]=Math.min(e[1]+n,o)-n,e[0]=Math.max(e[0],0),e[1]=Math.max(e[1],0)}(f,p,g,i);var y=l.get(\"backgroundColor\");y&&\"auto\"!==y||(y=t.get(\"axisLine.lineStyle.color\")),e.label={shape:{x:0,y:0,width:p,height:g,r:l.get(\"borderRadius\")},position:f.slice(),style:{text:s,textFont:c,textFill:l.getTextColor(),textPosition:\"inside\",textPadding:u,fill:y,stroke:l.get(\"borderColor\")||\"transparent\",lineWidth:l.get(\"borderWidth\")||0,shadowBlur:l.get(\"shadowBlur\"),shadowColor:l.get(\"shadowColor\"),shadowOffsetX:l.get(\"shadowOffsetX\"),shadowOffsetY:l.get(\"shadowOffsetY\")},z2:10}}function h(e,t,n,r,o){e=t.scale.parse(e);var a=t.scale.getLabel(e,{precision:o.precision}),s=o.formatter;if(s){var u={value:l.getAxisRawValue(t,e),axisDimension:t.dim,axisIndex:t.index,seriesData:[]};i.each(r,function(e){var t=n.getSeriesByIndex(e.seriesIndex),i=e.dataIndexInside,r=t&&t.getDataParams(i);r&&u.seriesData.push(r)}),i.isString(s)?a=s.replace(\"{value}\",a):i.isFunction(s)&&(a=s(u))}return a}function d(e,t,n){var i=s.create();return s.rotate(i,i,n.rotation),s.translate(i,i,n.position),r.applyTransform([e.dataToCoord(t),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}t.buildElStyle=function(e){var t,n=e.get(\"type\"),i=e.getModel(n+\"Style\");return\"line\"===n?(t=i.getLineStyle()).fill=null:\"shadow\"===n&&((t=i.getAreaStyle()).stroke=null),t},t.buildLabelElOption=c,t.getValueLabel=h,t.getTransformedPosition=d,t.buildCartesianSingleLabelElOption=function(e,t,n,i,r,o){var a=u.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(\"label.margin\"),c(t,i,r,o,{position:d(i.axis,e,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})},t.makeLineShape=function(e,t,n){return{x1:e[n=n||0],y1:e[1-n],x2:t[n],y2:t[1-n]}},t.makeRectShape=function(e,t,n){return{x:e[n=n||0],y:e[1-n],width:t[n],height:t[1-n]}},t.makeSectorShape=function(e,t,n,i,r,o){return{cx:e,cy:t,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}},zL8q:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/dist/\",n(n.s=45)}([function(e,t){e.exports=n(\"AMCD\")},function(e,t){e.exports=n(\"2kvA\")},function(e,t){e.exports=n(\"ylDJ\")},function(e,t){e.exports=n(\"fPll\")},function(e,t){e.exports=n(\"y+7x\")},function(e,t){e.exports=n(\"fKx3\")},function(e,t){e.exports=n(\"7+uW\")},function(e,t){e.exports=n(\"jmaC\")},function(e,t){e.exports=n(\"HJMx\")},function(e,t){e.exports=n(\"aW5l\")},function(e,t){e.exports=n(\"ISYW\")},function(e,t){e.exports=n(\"urW8\")},function(e,t){e.exports=n(\"mtrD\")},function(e,t){e.exports=n(\"02w1\")},function(e,t){e.exports=n(\"7J9s\")},function(e,t){e.exports=n(\"ON3O\")},function(e,t){e.exports=n(\"EKTV\")},function(e,t){e.exports=n(\"fEB+\")},function(e,t){e.exports=n(\"835U\")},function(e,t){e.exports=n(\"E/in\")},function(e,t){e.exports=n(\"eNfa\")},function(e,t){e.exports=n(\"Zcwg\")},function(e,t){e.exports=n(\"1oZe\")},function(e,t){e.exports=n(\"fUqW\")},function(e,t){e.exports=n(\"nvbp\")},function(e,t){e.exports=n(\"uY1a\")},function(e,t){e.exports=n(\"aMwW\")},function(e,t){e.exports=n(\"zTCi\")},function(e,t){e.exports=n(\"hyEB\")},function(e,t){e.exports=n(\"zAL+\")},function(e,t){e.exports=n(\"orbS\")},function(e,t){e.exports=n(\"6Twh\")},function(e,t){e.exports=n(\"s3ue\")},function(e,t){e.exports=n(\"H8dH\")},function(e,t){e.exports=n(\"GegP\")},function(e,t){e.exports=n(\"HzcN\")},function(e,t){e.exports=n(\"e0Bm\")},function(e,t){e.exports=n(\"STLj\")},function(e,t){e.exports=n(\"3fo+\")},function(e,t){e.exports=n(\"DQJY\")},function(e,t){e.exports=n(\"jwfv\")},function(e,t){e.exports=n(\"0kY3\")},function(e,t){e.exports=n(\"kNJA\")},function(e,t){e.exports=n(\"RDoK\")},function(e,t){e.exports=n(\"SXzR\")},function(e,t,n){e.exports=n(46)},function(e,t,n){\"use strict\";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"ul\",{staticClass:\"el-pager\",on:{click:e.onPagerClick}},[e.pageCount>0?n(\"li\",{staticClass:\"number\",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v(\"1\")]):e._e(),e.showPrevMore?n(\"li\",{staticClass:\"el-icon more btn-quickprev\",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter(\"left\")},mouseleave:function(t){e.quickprevIconClass=\"el-icon-more\"}}}):e._e(),e._l(e.pagers,function(t){return n(\"li\",{key:t,staticClass:\"number\",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?n(\"li\",{staticClass:\"el-icon more btn-quicknext\",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter(\"right\")},mouseleave:function(t){e.quicknextIconClass=\"el-icon-more\"}}}):e._e(),e.pageCount>1?n(\"li\",{staticClass:\"number\",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function r(e,t,n,i,r,o,a,s){var l,u=\"function\"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId=\"data-v-\"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var h=u.beforeCreate;u.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:u}}i._withStripped=!0;var o=r({name:\"ElPager\",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass=\"el-icon-more\")},showNextMore:function(e){e||(this.quicknextIconClass=\"el-icon-more\")}},methods:{onPagerClick:function(e){var t=e.target;if(\"UL\"!==t.tagName&&!this.disabled){var n=Number(e.target.textContent),i=this.pageCount,r=this.currentPage,o=this.pagerCount-2;-1!==t.className.indexOf(\"more\")&&(-1!==t.className.indexOf(\"quickprev\")?n=r-o:-1!==t.className.indexOf(\"quicknext\")&&(n=r+o)),isNaN(n)||(n<1&&(n=1),n>i&&(n=i)),n!==r&&this.$emit(\"change\",n)}},onMouseenter:function(e){this.disabled||(\"left\"===e?this.quickprevIconClass=\"el-icon-d-arrow-left\":this.quicknextIconClass=\"el-icon-d-arrow-right\")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,n=Number(this.currentPage),i=Number(this.pageCount),r=!1,o=!1;i>e&&(n>e-t&&(r=!0),n<i-t&&(o=!0));var a=[];if(r&&!o)for(var s=i-(e-2);s<i;s++)a.push(s);else if(!r&&o)for(var l=2;l<e;l++)a.push(l);else if(r&&o)for(var u=Math.floor(e/2)-1,c=n-u;c<=n+u;c++)a.push(c);else for(var h=2;h<i;h++)a.push(h);return this.showPrevMore=r,this.showNextMore=o,a}},data:function(){return{current:null,showPrevMore:!1,showNextMore:!1,quicknextIconClass:\"el-icon-more\",quickprevIconClass:\"el-icon-more\"}}},i,[],!1,null,null,null);o.options.__file=\"packages/pagination/src/pager.vue\";var a=o.exports,s=n(36),l=n.n(s),u=n(37),c=n.n(u),h=n(8),d=n.n(h),f=n(4),p=n.n(f),g=n(2),m={name:\"ElPagination\",props:{pageSize:{type:Number,default:10},small:Boolean,total:Number,pageCount:Number,pagerCount:{type:Number,validator:function(e){return(0|e)===e&&e>4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:\"prev, pager, next, jumper, ->, total\"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var n=e(\"div\",{class:[\"el-pagination\",{\"is-background\":this.background,\"el-pagination--small\":this.small}]}),i={prev:e(\"prev\"),jumper:e(\"jumper\"),pager:e(\"pager\",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e(\"next\"),sizes:e(\"sizes\",{attrs:{pageSizes:this.pageSizes}}),slot:e(\"slot\",[this.$slots.default?this.$slots.default:\"\"]),total:e(\"total\")},r=t.split(\",\").map(function(e){return e.trim()}),o=e(\"div\",{class:\"el-pagination__rightwrapper\"}),a=!1;return n.children=n.children||[],o.children=o.children||[],r.forEach(function(e){\"->\"!==e?a?o.children.push(i[e]):n.children.push(i[e]):a=!0}),a&&n.children.unshift(o),n},components:{Prev:{render:function(e){return e(\"button\",{attrs:{type:\"button\",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:\"btn-prev\",on:{click:this.$parent.prev}},[this.$parent.prevText?e(\"span\",[this.$parent.prevText]):e(\"i\",{class:\"el-icon el-icon-arrow-left\"})])}},Next:{render:function(e){return e(\"button\",{attrs:{type:\"button\",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:\"btn-next\",on:{click:this.$parent.next}},[this.$parent.nextText?e(\"span\",[this.$parent.nextText]):e(\"i\",{class:\"el-icon el-icon-arrow-right\"})])}},Sizes:{mixins:[p.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(g.valueEquals)(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e(\"span\",{class:\"el-pagination__sizes\"},[e(\"el-select\",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||\"\",size:\"mini\",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(n){return e(\"el-option\",{attrs:{value:n,label:n+t.t(\"el.pagination.pagesize\")}})})])])},components:{ElSelect:l.a,ElOption:c.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit(\"update:pageSize\",e),this.$parent.$emit(\"size-change\",e))}}},Jumper:{mixins:[p.a],components:{ElInput:d.a},data:function(){return{userInput:null}},watch:{\"$parent.internalCurrentPage\":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,n=e.target;13===t&&this.handleChange(n.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e(\"span\",{class:\"el-pagination__jump\"},[this.t(\"el.pagination.goto\"),e(\"el-input\",{class:\"el-pagination__editor is-in-pagination\",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:\"number\",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t(\"el.pagination.pageClassifier\")])}},Total:{mixins:[p.a],render:function(e){return\"number\"==typeof this.$parent.total?e(\"span\",{class:\"el-pagination__total\"},[this.t(\"el.pagination.total\",{total:this.$parent.total})]):\"\"}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit(\"prev-click\",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit(\"next-click\",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return\"number\"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),void 0===t&&isNaN(e)?t=1:0===t&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit(\"current-change\",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return\"number\"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):\"number\"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit(\"update:currentPage\",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(m.name,m)}},v=m,y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"dialog-fade\"},on:{\"after-enter\":e.afterEnter,\"after-leave\":e.afterLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-dialog__wrapper\",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[n(\"div\",{key:e.key,ref:\"dialog\",class:[\"el-dialog\",{\"is-fullscreen\":e.fullscreen,\"el-dialog--center\":e.center},e.customClass],style:e.style,attrs:{role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":e.title||\"dialog\"}},[n(\"div\",{staticClass:\"el-dialog__header\"},[e._t(\"title\",[n(\"span\",{staticClass:\"el-dialog__title\"},[e._v(e._s(e.title))])]),e.showClose?n(\"button\",{staticClass:\"el-dialog__headerbtn\",attrs:{type:\"button\",\"aria-label\":\"Close\"},on:{click:e.handleClose}},[n(\"i\",{staticClass:\"el-dialog__close el-icon el-icon-close\"})]):e._e()],2),e.rendered?n(\"div\",{staticClass:\"el-dialog__body\"},[e._t(\"default\")],2):e._e(),e.$slots.footer?n(\"div\",{staticClass:\"el-dialog__footer\"},[e._t(\"footer\")],2):e._e()])])])};y._withStripped=!0;var b=n(14),x=n.n(b),_=n(9),w=n.n(_),C=n(3),S=n.n(C),k=r({name:\"ElDialog\",mixins:[x.a,S.a,w.a],props:{title:{type:String,default:\"\"},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:\"\"},top:{type:String,default:\"15vh\"},beforeClose:Function,center:{type:Boolean,default:!1},destroyOnClose:Boolean},data:function(){return{closed:!1,key:0}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit(\"open\"),this.$el.addEventListener(\"scroll\",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener(\"scroll\",this.updatePopper),this.closed||this.$emit(\"close\"),this.destroyOnClose&&this.$nextTick(function(){t.key++}))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:\"size is removed.\"}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){\"function\"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit(\"update:visible\",!1),this.$emit(\"close\"),this.closed=!0)},updatePopper:function(){this.broadcast(\"ElSelectDropdown\",\"updatePopper\"),this.broadcast(\"ElDropdownMenu\",\"updatePopper\")},afterEnter:function(){this.$emit(\"opened\")},afterLeave:function(){this.$emit(\"closed\")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},y,[],!1,null,null,null);k.options.__file=\"packages/dialog/src/component.vue\";var T=k.exports;T.install=function(e){e.component(T.name,T)};var M=T,D=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.close,expression:\"close\"}],staticClass:\"el-autocomplete\",attrs:{\"aria-haspopup\":\"listbox\",role:\"combobox\",\"aria-expanded\":e.suggestionVisible,\"aria-owns\":e.id}},[n(\"el-input\",e._b({ref:\"input\",on:{input:e.handleInput,change:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.handleKeyEnter(t):null},function(t){return\"button\"in t||!e._k(t.keyCode,\"tab\",9,t.key,\"Tab\")?e.close(t):null}]}},\"el-input\",[e.$props,e.$attrs],!1),[e.$slots.prepend?n(\"template\",{slot:\"prepend\"},[e._t(\"prepend\")],2):e._e(),e.$slots.append?n(\"template\",{slot:\"append\"},[e._t(\"append\")],2):e._e(),e.$slots.prefix?n(\"template\",{slot:\"prefix\"},[e._t(\"prefix\")],2):e._e(),e.$slots.suffix?n(\"template\",{slot:\"suffix\"},[e._t(\"suffix\")],2):e._e()],2),n(\"el-autocomplete-suggestions\",{ref:\"suggestions\",class:[e.popperClass?e.popperClass:\"\"],attrs:{\"visible-arrow\":\"\",\"popper-options\":e.popperOptions,\"append-to-body\":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,i){return n(\"li\",{key:i,class:{highlighted:e.highlightedIndex===i},attrs:{id:e.id+\"-item-\"+i,role:\"option\",\"aria-selected\":e.highlightedIndex===i},on:{click:function(n){e.select(t)}}},[e._t(\"default\",[e._v(\"\\n        \"+e._s(t[e.valueKey])+\"\\n      \")],{item:t})],2)}),0)],1)};D._withStripped=!0;var A=n(15),I=n.n(A),O=n(10),E=n.n(O),L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":e.doDestroy}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showPopper,expression:\"showPopper\"}],staticClass:\"el-autocomplete-suggestion el-popper\",class:{\"is-loading\":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:\"region\"}},[n(\"el-scrollbar\",{attrs:{tag:\"ul\",\"wrap-class\":\"el-autocomplete-suggestion__wrap\",\"view-class\":\"el-autocomplete-suggestion__list\"}},[!e.parent.hideLoading&&e.parent.loading?n(\"li\",[n(\"i\",{staticClass:\"el-icon-loading\"})]):e._t(\"default\")],2)],1)])};L._withStripped=!0;var P=n(5),N=n.n(P),R=n(17),B=n.n(R),z=r({components:{ElScrollbar:B.a},mixins:[N.a,S.a],componentName:\"ElAutocompleteSuggestions\",data:function(){return{parent:this.$parent,dropdownWidth:\"\"}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch(\"ElAutocomplete\",\"item-click\",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input||this.$parent.$refs.input.$refs.textarea,this.referenceList=this.$el.querySelector(\".el-autocomplete-suggestion__list\"),this.referenceList.setAttribute(\"role\",\"listbox\"),this.referenceList.setAttribute(\"id\",this.id)},created:function(){var e=this;this.$on(\"visible\",function(t,n){e.dropdownWidth=n+\"px\",e.showPopper=t})}},L,[],!1,null,null,null);z.options.__file=\"packages/autocomplete/src/autocomplete-suggestions.vue\";var F=z.exports,$=n(22),V=n.n($),j=r({name:\"ElAutocomplete\",mixins:[S.a,V()(\"input\"),w.a],inheritAttrs:!1,componentName:\"ElAutocomplete\",components:{ElInput:d.a,ElAutocompleteSuggestions:F},directives:{Clickoutside:E.a},props:{valueKey:{type:String,default:\"value\"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:\"bottom-start\"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return\"el-autocomplete-\"+Object(g.generateId)()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast(\"ElAutocompleteSuggestions\",\"visible\",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{\"custom-item\":\"custom-item is removed, use scoped slot instead.\",props:\"props is removed, use value-key instead.\"}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error(\"[Element Error][Autocomplete]autocomplete suggestions must be an array\"))}))},handleInput:function(e){if(this.$emit(\"input\",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleChange:function(e){this.$emit(\"change\",e)},handleFocus:function(e){this.activated=!0,this.$emit(\"focus\",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit(\"blur\",e)},handleClear:function(){this.activated=!1,this.$emit(\"clear\")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex<this.suggestions.length?(e.preventDefault(),this.select(this.suggestions[this.highlightedIndex])):this.selectWhenUnmatched&&(this.$emit(\"select\",{value:this.value}),this.$nextTick(function(e){t.suggestions=[],t.highlightedIndex=-1}))},select:function(e){var t=this;this.$emit(\"input\",e[this.valueKey]),this.$emit(\"select\",e),this.$nextTick(function(e){t.suggestions=[],t.highlightedIndex=-1})},highlight:function(e){if(this.suggestionVisible&&!this.loading)if(e<0)this.highlightedIndex=-1;else{e>=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(\".el-autocomplete-suggestion__wrap\"),n=t.querySelectorAll(\".el-autocomplete-suggestion__list li\")[e],i=t.scrollTop,r=n.offsetTop;r+n.scrollHeight>i+t.clientHeight&&(t.scrollTop+=n.scrollHeight),r<i&&(t.scrollTop-=n.scrollHeight),this.highlightedIndex=e,this.getInput().setAttribute(\"aria-activedescendant\",this.id+\"-item-\"+this.highlightedIndex)}},getInput:function(){return this.$refs.input.getInput()}},mounted:function(){var e=this;this.debouncedGetData=I()(this.debounce,this.getData),this.$on(\"item-click\",function(t){e.select(t)});var t=this.getInput();t.setAttribute(\"role\",\"textbox\"),t.setAttribute(\"aria-autocomplete\",\"list\"),t.setAttribute(\"aria-controls\",\"id\"),t.setAttribute(\"aria-activedescendant\",this.id+\"-item-\"+this.highlightedIndex)},beforeDestroy:function(){this.$refs.suggestions.$destroy()}},D,[],!1,null,null,null);j.options.__file=\"packages/autocomplete/src/autocomplete.vue\";var H=j.exports;H.install=function(e){e.component(H.name,H)};var W=H,q=n(12),G=n.n(q),U=n(29),Y=n.n(U),X=r({name:\"ElDropdown\",componentName:\"ElDropdown\",mixins:[S.a,w.a],directives:{Clickoutside:E.a},components:{ElButton:G.a,ElButtonGroup:Y.a},provide:function(){return{dropdown:this}},props:{trigger:{type:String,default:\"hover\"},type:String,size:{type:String,default:\"\"},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},placement:{type:String,default:\"bottom-end\"},visibleArrow:{default:!0},showTimeout:{type:Number,default:250},hideTimeout:{type:Number,default:150},tabindex:{type:Number,default:0}},data:function(){return{timeout:null,visible:!1,triggerElm:null,menuItems:null,menuItemsArray:null,dropdownElm:null,focusing:!1,listId:\"dropdown-menu-\"+Object(g.generateId)()}},computed:{dropdownSize:function(){return this.size||(this.$ELEMENT||{}).size}},mounted:function(){this.$on(\"menu-item-click\",this.handleMenuItemClick)},watch:{visible:function(e){this.broadcast(\"ElDropdownMenu\",\"visible\",e),this.$emit(\"visible-change\",e)},focusing:function(e){var t=this.$el.querySelector(\".el-dropdown-selfdefine\");t&&(e?t.className+=\" focusing\":t.className=t.className.replace(\"focusing\",\"\"))}},methods:{getMigratingConfig:function(){return{props:{\"menu-align\":\"menu-align is renamed to placement.\"}}},show:function(){var e=this;this.triggerElm.disabled||(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!0},\"click\"===this.trigger?0:this.showTimeout))},hide:function(){var e=this;this.triggerElm.disabled||(this.removeTabindex(),this.tabindex>=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},\"click\"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,n=e.target,i=this.menuItemsArray.indexOf(n),r=this.menuItemsArray.length-1,o=void 0;[38,40].indexOf(t)>-1?(o=38===t?0!==i?i-1:0:i<r?i+1:r,this.removeTabindex(),this.resetTabindex(this.menuItems[o]),this.menuItems[o].focus(),e.preventDefault(),e.stopPropagation()):13===t?(this.triggerElmFocus(),n.click(),this.hideOnClick&&(this.visible=!1)):[9,27].indexOf(t)>-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute(\"tabindex\",\"0\")},removeTabindex:function(){this.triggerElm.setAttribute(\"tabindex\",\"-1\"),this.menuItemsArray.forEach(function(e){e.setAttribute(\"tabindex\",\"-1\")})},initAria:function(){this.dropdownElm.setAttribute(\"id\",this.listId),this.triggerElm.setAttribute(\"aria-haspopup\",\"list\"),this.triggerElm.setAttribute(\"aria-controls\",this.listId),this.splitButton||(this.triggerElm.setAttribute(\"role\",\"button\"),this.triggerElm.setAttribute(\"tabindex\",this.tabindex),this.triggerElm.setAttribute(\"class\",(this.triggerElm.getAttribute(\"class\")||\"\")+\" el-dropdown-selfdefine\"))},initEvent:function(){var e=this,t=this.trigger,n=this.show,i=this.hide,r=this.handleClick,o=this.splitButton,a=this.handleTriggerKeyDown,s=this.handleItemKeyDown;this.triggerElm=o?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener(\"keydown\",a),l.addEventListener(\"keydown\",s,!0),o||(this.triggerElm.addEventListener(\"focus\",function(){e.focusing=!0}),this.triggerElm.addEventListener(\"blur\",function(){e.focusing=!1}),this.triggerElm.addEventListener(\"click\",function(){e.focusing=!1})),\"hover\"===t?(this.triggerElm.addEventListener(\"mouseenter\",n),this.triggerElm.addEventListener(\"mouseleave\",i),l.addEventListener(\"mouseenter\",n),l.addEventListener(\"mouseleave\",i)):\"click\"===t&&this.triggerElm.addEventListener(\"click\",r)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit(\"command\",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll(\"[tabindex='-1']\"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,n=this.hide,i=this.splitButton,r=this.type,o=this.dropdownSize,a=i?e(\"el-button-group\",[e(\"el-button\",{attrs:{type:r,size:o},nativeOn:{click:function(e){t.$emit(\"click\",e),n()}}},[this.$slots.default]),e(\"el-button\",{ref:\"trigger\",attrs:{type:r,size:o},class:\"el-dropdown__caret-button\"},[e(\"i\",{class:\"el-dropdown__icon el-icon-arrow-down\"})])]):this.$slots.default;return e(\"div\",{class:\"el-dropdown\",directives:[{name:\"clickoutside\",value:n}]},[a,this.$slots.dropdown])}},void 0,void 0,!1,null,null,null);X.options.__file=\"packages/dropdown/src/dropdown.vue\";var K=X.exports;K.install=function(e){e.component(K.name,K)};var Z=K,J=function(){var e=this.$createElement,t=this._self._c||e;return t(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":this.doDestroy}},[t(\"ul\",{directives:[{name:\"show\",rawName:\"v-show\",value:this.showPopper,expression:\"showPopper\"}],staticClass:\"el-dropdown-menu el-popper\",class:[this.size&&\"el-dropdown-menu--\"+this.size]},[this._t(\"default\")],2)])};J._withStripped=!0;var Q=r({name:\"ElDropdownMenu\",componentName:\"ElDropdownMenu\",mixins:[N.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:[\"dropdown\"],created:function(){var e=this;this.$on(\"updatePopper\",function(){e.showPopper&&e.updatePopper()}),this.$on(\"visible\",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{\"dropdown.placement\":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},J,[],!1,null,null,null);Q.options.__file=\"packages/dropdown/src/dropdown-menu.vue\";var ee=Q.exports;ee.install=function(e){e.component(ee.name,ee)};var te=ee,ne=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"li\",{staticClass:\"el-dropdown-menu__item\",class:{\"is-disabled\":e.disabled,\"el-dropdown-menu__item--divided\":e.divided},attrs:{\"aria-disabled\":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?n(\"i\",{class:e.icon}):e._e(),e._t(\"default\")],2)};ne._withStripped=!0;var ie=r({name:\"ElDropdownItem\",mixins:[S.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch(\"ElDropdown\",\"menu-item-click\",[this.command,this])}}},ne,[],!1,null,null,null);ie.options.__file=\"packages/dropdown/src/dropdown-item.vue\";var re=ie.exports;re.install=function(e){e.component(re.name,re)};var oe=re,ae=ae||{};ae.Utils=ae.Utils||{},ae.Utils.focusFirstDescendant=function(e){for(var t=0;t<e.childNodes.length;t++){var n=e.childNodes[t];if(ae.Utils.attemptFocus(n)||ae.Utils.focusFirstDescendant(n))return!0}return!1},ae.Utils.focusLastDescendant=function(e){for(var t=e.childNodes.length-1;t>=0;t--){var n=e.childNodes[t];if(ae.Utils.attemptFocus(n)||ae.Utils.focusLastDescendant(n))return!0}return!1},ae.Utils.attemptFocus=function(e){if(!ae.Utils.isFocusable(e))return!1;ae.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return ae.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},ae.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute(\"tabIndex\"))return!0;if(e.disabled)return!1;switch(e.nodeName){case\"A\":return!!e.href&&\"ignore\"!==e.rel;case\"INPUT\":return\"hidden\"!==e.type&&\"file\"!==e.type;case\"BUTTON\":case\"SELECT\":case\"TEXTAREA\":return!0;default:return!1}},ae.Utils.triggerEvent=function(e,t){var n=void 0;n=/^mouse|click/.test(t)?\"MouseEvents\":/^key/.test(t)?\"KeyboardEvent\":\"HTMLEvents\";for(var i=document.createEvent(n),r=arguments.length,o=Array(r>2?r-2:0),a=2;a<r;a++)o[a-2]=arguments[a];return i.initEvent.apply(i,[t].concat(o)),e.dispatchEvent?e.dispatchEvent(i):e.fireEvent(\"on\"+t,i),e},ae.Utils.keys={tab:9,enter:13,space:32,left:37,up:38,right:39,down:40,esc:27};var se=ae.Utils,le=function(e,t){this.domNode=t,this.parent=e,this.subMenuItems=[],this.subIndex=0,this.init()};le.prototype.init=function(){this.subMenuItems=this.domNode.querySelectorAll(\"li\"),this.addListeners()},le.prototype.gotoSubIndex=function(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e},le.prototype.addListeners=function(){var e=this,t=se.keys,n=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,function(i){i.addEventListener(\"keydown\",function(i){var r=!1;switch(i.keyCode){case t.down:e.gotoSubIndex(e.subIndex+1),r=!0;break;case t.up:e.gotoSubIndex(e.subIndex-1),r=!0;break;case t.tab:se.triggerEvent(n,\"mouseleave\");break;case t.enter:case t.space:r=!0,i.currentTarget.click()}return r&&(i.preventDefault(),i.stopPropagation()),!1})})};var ue=le,ce=function(e){this.domNode=e,this.submenu=null,this.init()};ce.prototype.init=function(){this.domNode.setAttribute(\"tabindex\",\"0\");var e=this.domNode.querySelector(\".el-menu\");e&&(this.submenu=new ue(this,e)),this.addListeners()},ce.prototype.addListeners=function(){var e=this,t=se.keys;this.domNode.addEventListener(\"keydown\",function(n){var i=!1;switch(n.keyCode){case t.down:se.triggerEvent(n.currentTarget,\"mouseenter\"),e.submenu&&e.submenu.gotoSubIndex(0),i=!0;break;case t.up:se.triggerEvent(n.currentTarget,\"mouseenter\"),e.submenu&&e.submenu.gotoSubIndex(e.submenu.subMenuItems.length-1),i=!0;break;case t.tab:se.triggerEvent(n.currentTarget,\"mouseleave\");break;case t.enter:case t.space:i=!0,n.currentTarget.click()}i&&n.preventDefault()})};var he=ce,de=function(e){this.domNode=e,this.init()};de.prototype.init=function(){var e=this.domNode.childNodes;[].filter.call(e,function(e){return 1===e.nodeType}).forEach(function(e){new he(e)})};var fe=de,pe=n(1),ge=r({name:\"ElMenu\",render:function(e){var t=e(\"ul\",{attrs:{role:\"menubar\"},key:+this.collapse,style:{backgroundColor:this.backgroundColor||\"\"},class:{\"el-menu--horizontal\":\"horizontal\"===this.mode,\"el-menu--collapse\":this.collapse,\"el-menu\":!0}},[this.$slots.default]);return this.collapseTransition?e(\"el-menu-collapse-transition\",[t]):t},componentName:\"ElMenu\",mixins:[S.a,w.a],provide:function(){return{rootMenu:this}},components:{\"el-menu-collapse-transition\":{functional:!0,render:function(e,t){return e(\"transition\",{props:{mode:\"out-in\"},on:{beforeEnter:function(e){e.style.opacity=.2},enter:function(e){Object(pe.addClass)(e,\"el-opacity-transition\"),e.style.opacity=1},afterEnter:function(e){Object(pe.removeClass)(e,\"el-opacity-transition\"),e.style.opacity=\"\"},beforeLeave:function(e){e.dataset||(e.dataset={}),Object(pe.hasClass)(e,\"el-menu--collapse\")?(Object(pe.removeClass)(e,\"el-menu--collapse\"),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth,Object(pe.addClass)(e,\"el-menu--collapse\")):(Object(pe.addClass)(e,\"el-menu--collapse\"),e.dataset.oldOverflow=e.style.overflow,e.dataset.scrollWidth=e.clientWidth,Object(pe.removeClass)(e,\"el-menu--collapse\")),e.style.width=e.scrollWidth+\"px\",e.style.overflow=\"hidden\"},leave:function(e){Object(pe.addClass)(e,\"horizontal-collapse-transition\"),e.style.width=e.dataset.scrollWidth+\"px\"}}},t.children)}}},props:{mode:{type:String,default:\"vertical\"},defaultActive:{type:String,default:\"\"},defaultOpeneds:Array,uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,default:\"hover\"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0}},data:function(){return{activeIndex:this.defaultActive,openedMenus:this.defaultOpeneds&&!this.collapse?this.defaultOpeneds.slice(0):[],items:{},submenus:{}}},computed:{hoverBackground:function(){return this.backgroundColor?this.mixColor(this.backgroundColor,.2):\"\"},isMenuPopup:function(){return\"horizontal\"===this.mode||\"vertical\"===this.mode&&this.collapse}},watch:{defaultActive:function(e){this.items[e]||(this.activeIndex=null),this.updateActiveIndex(e)},defaultOpeneds:function(e){this.collapse||(this.openedMenus=e)},collapse:function(e){e&&(this.openedMenus=[]),this.broadcast(\"ElSubmenu\",\"toggle-collapse\",e)}},methods:{updateActiveIndex:function(e){var t=this.items[e]||this.items[this.activeIndex]||this.items[this.defaultActive];t?(this.activeIndex=t.index,this.initOpenedMenu()):this.activeIndex=null},getMigratingConfig:function(){return{props:{theme:\"theme is removed.\"}}},getColorChannels:function(e){if(e=e.replace(\"#\",\"\"),/^[0-9a-fA-F]{3}$/.test(e)){e=e.split(\"\");for(var t=2;t>=0;t--)e.splice(t,0,e[t]);e=e.join(\"\")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var n=this.getColorChannels(e),i=n.red,r=n.green,o=n.blue;return t>0?(i*=1-t,r*=1-t,o*=1-t):(i+=(255-i)*t,r+=(255-r)*t,o+=(255-o)*t),\"rgb(\"+Math.round(i)+\", \"+Math.round(r)+\", \"+Math.round(o)+\")\"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var n=this.openedMenus;-1===n.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=n.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,n=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit(\"close\",t,n)):(this.openMenu(t,n),this.$emit(\"open\",t,n))},handleItemClick:function(e){var t=this,n=e.index,i=e.indexPath,r=this.activeIndex,o=null!==e.index;o&&(this.activeIndex=e.index),this.$emit(\"select\",n,i,e),(\"horizontal\"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&o&&this.routeToItem(e,function(e){if(t.activeIndex=r,e){if(\"NavigationDuplicated\"===e.name)return;console.error(e)}})},initOpenedMenu:function(){var e=this,t=this.activeIndex,n=this.items[t];n&&\"horizontal\"!==this.mode&&!this.collapse&&n.indexPath.forEach(function(t){var n=e.submenus[t];n&&e.openMenu(t,n.indexPath)})},routeToItem:function(e,t){var n=e.route||e.index;try{this.$router.push(n,function(){},t)}catch(e){console.error(e)}},open:function(e){var t=this,n=this.submenus[e.toString()].indexPath;n.forEach(function(e){return t.openMenu(e,n)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on(\"item-click\",this.handleItemClick),this.$on(\"submenu-click\",this.handleSubmenuClick),\"horizontal\"===this.mode&&new fe(this.$el),this.$watch(\"items\",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);ge.options.__file=\"packages/menu/src/menu.vue\";var me=ge.exports;me.install=function(e){e.component(me.name,me)};var ve=me,ye=n(21),be=n.n(ye),xe={inject:[\"rootMenu\"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;\"ElMenu\"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===[\"ElMenu\",\"ElSubmenu\"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if(\"vertical\"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&\"ElMenu\"!==t.$options.componentName;)\"ElSubmenu\"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+\"px\"}}}},_e={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:N.a.props.offset,boundariesPadding:N.a.props.boundariesPadding,popperOptions:N.a.props.popperOptions},data:N.a.data,methods:N.a.methods,beforeDestroy:N.a.beforeDestroy,deactivated:N.a.deactivated},we=r({name:\"ElSubmenu\",componentName:\"ElSubmenu\",mixins:[xe,S.a,_e],components:{ElCollapseTransition:be.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?\"el-zoom-in-left\":\"el-zoom-in-top\"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,n=this.items;return Object.keys(n).forEach(function(t){n[t].active&&(e=!0)}),Object.keys(t).forEach(function(n){t[n].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||\"\"},activeTextColor:function(){return this.rootMenu.activeTextColor||\"\"},textColor:function(){return this.rootMenu.textColor||\"\"},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return\"horizontal\"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:\"\":\"transparent\",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if([\"ElSubmenu\",\"ElMenuItemGroup\"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;\"hover\"===e.menuTrigger&&\"horizontal\"===e.mode||e.collapse&&\"vertical\"===e.mode||t||this.dispatch(\"ElMenu\",\"submenu-click\",this)},handleMouseenter:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if(\"ActiveXObject\"in window||\"focus\"!==e.type||e.relatedTarget){var i=this.rootMenu,r=this.disabled;\"click\"===i.menuTrigger&&\"horizontal\"===i.mode||!i.collapse&&\"vertical\"===i.mode||r||(this.dispatch(\"ElSubmenu\",\"mouse-enter-child\"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},n),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent(\"mouseenter\")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=this.rootMenu;\"click\"===n.menuTrigger&&\"horizontal\"===n.mode||!n.collapse&&\"vertical\"===n.mode||(this.dispatch(\"ElSubmenu\",\"mouse-leave-child\"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout),this.appendToBody&&t&&\"ElSubmenu\"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if(\"horizontal\"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs[\"submenu-title\"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if(\"horizontal\"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs[\"submenu-title\"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||\"\")}},updatePlacement:function(){this.currentPlacement=\"horizontal\"===this.mode&&this.isFirstLevel?\"bottom-start\":\"right-start\"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on(\"toggle-collapse\",this.handleCollapseToggle),this.$on(\"mouse-enter-child\",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on(\"mouse-leave-child\",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,n=this.active,i=this.opened,r=this.paddingStyle,o=this.titleStyle,a=this.backgroundColor,s=this.rootMenu,l=this.currentPlacement,u=this.menuTransitionName,c=this.mode,h=this.disabled,d=this.popperClass,f=this.$slots,p=this.isFirstLevel,g=e(\"transition\",{attrs:{name:u}},[e(\"div\",{ref:\"menu\",directives:[{name:\"show\",value:i}],class:[\"el-menu--\"+c,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e(\"ul\",{attrs:{role:\"menu\"},class:[\"el-menu el-menu--popup\",\"el-menu--popup-\"+l],style:{backgroundColor:s.backgroundColor||\"\"}},[f.default])])]),m=e(\"el-collapse-transition\",[e(\"ul\",{attrs:{role:\"menu\"},class:\"el-menu el-menu--inline\",directives:[{name:\"show\",value:i}],style:{backgroundColor:s.backgroundColor||\"\"}},[f.default])]),v=\"horizontal\"===s.mode&&p||\"vertical\"===s.mode&&!s.collapse?\"el-icon-arrow-down\":\"el-icon-arrow-right\";return e(\"li\",{class:{\"el-submenu\":!0,\"is-active\":n,\"is-opened\":i,\"is-disabled\":h},attrs:{role:\"menuitem\",\"aria-haspopup\":\"true\",\"aria-expanded\":i},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e(\"div\",{class:\"el-submenu__title\",ref:\"submenu-title\",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[r,o,{backgroundColor:a}]},[f.title,e(\"i\",{class:[\"el-submenu__icon-arrow\",v]})]),this.isMenuPopup?g:m])}},void 0,void 0,!1,null,null,null);we.options.__file=\"packages/menu/src/submenu.vue\";var Ce=we.exports;Ce.install=function(e){e.component(Ce.name,Ce)};var Se=Ce,ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"li\",{staticClass:\"el-menu-item\",class:{\"is-active\":e.active,\"is-disabled\":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:\"menuitem\",tabindex:\"-1\"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},[\"ElMenu\"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?n(\"el-tooltip\",{attrs:{effect:\"dark\",placement:\"right\"}},[n(\"div\",{attrs:{slot:\"content\"},slot:\"content\"},[e._t(\"title\")],2),n(\"div\",{staticStyle:{position:\"absolute\",left:\"0\",top:\"0\",height:\"100%\",width:\"100%\",display:\"inline-block\",\"box-sizing\":\"border-box\",padding:\"0 20px\"}},[e._t(\"default\")],2)]):[e._t(\"default\"),e._t(\"title\")]],2)};ke._withStripped=!0;var Te=n(26),Me=n.n(Te),De=r({name:\"ElMenuItem\",componentName:\"ElMenuItem\",mixins:[xe,S.a],components:{ElTooltip:Me.a},props:{index:{default:null,validator:function(e){return\"string\"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||\"\"},activeTextColor:function(){return this.rootMenu.activeTextColor||\"\"},textColor:function(){return this.rootMenu.textColor||\"\"},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return\"horizontal\"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:\"\":\"transparent\"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){(\"horizontal\"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){(\"horizontal\"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch(\"ElMenu\",\"item-click\",this),this.$emit(\"click\",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},ke,[],!1,null,null,null);De.options.__file=\"packages/menu/src/menu-item.vue\";var Ae=De.exports;Ae.install=function(e){e.component(Ae.name,Ae)};var Ie=Ae,Oe=function(){var e=this.$createElement,t=this._self._c||e;return t(\"li\",{staticClass:\"el-menu-item-group\"},[t(\"div\",{staticClass:\"el-menu-item-group__title\",style:{paddingLeft:this.levelPadding+\"px\"}},[this.$slots.title?this._t(\"title\"):[this._v(this._s(this.title))]],2),t(\"ul\",[this._t(\"default\")],2)])};Oe._withStripped=!0;var Ee=r({name:\"ElMenuItemGroup\",componentName:\"ElMenuItemGroup\",inject:[\"rootMenu\"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&\"ElMenu\"!==t.$options.componentName;)\"ElSubmenu\"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},Oe,[],!1,null,null,null);Ee.options.__file=\"packages/menu/src/menu-item-group.vue\";var Le=Ee.exports;Le.install=function(e){e.component(Le.name,Le)};var Pe=Le,Ne=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"textarea\"===e.type?\"el-textarea\":\"el-input\",e.inputSize?\"el-input--\"+e.inputSize:\"\",{\"is-disabled\":e.inputDisabled,\"is-exceed\":e.inputExceed,\"el-input-group\":e.$slots.prepend||e.$slots.append,\"el-input-group--append\":e.$slots.append,\"el-input-group--prepend\":e.$slots.prepend,\"el-input--prefix\":e.$slots.prefix||e.prefixIcon,\"el-input--suffix\":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},[\"textarea\"!==e.type?[e.$slots.prepend?n(\"div\",{staticClass:\"el-input-group__prepend\"},[e._t(\"prepend\")],2):e._e(),\"textarea\"!==e.type?n(\"input\",e._b({ref:\"input\",staticClass:\"el-input__inner\",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?\"text\":\"password\":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,\"aria-label\":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},\"input\",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?n(\"span\",{staticClass:\"el-input__prefix\"},[e._t(\"prefix\"),e.prefixIcon?n(\"i\",{staticClass:\"el-input__icon\",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?n(\"span\",{staticClass:\"el-input__suffix\"},[n(\"span\",{staticClass:\"el-input__suffix-inner\"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t(\"suffix\"),e.suffixIcon?n(\"i\",{staticClass:\"el-input__icon\",class:e.suffixIcon}):e._e()],e.showClear?n(\"i\",{staticClass:\"el-input__icon el-icon-circle-close el-input__clear\",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?n(\"i\",{staticClass:\"el-input__icon el-icon-view el-input__clear\",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?n(\"span\",{staticClass:\"el-input__count\"},[n(\"span\",{staticClass:\"el-input__count-inner\"},[e._v(\"\\n            \"+e._s(e.textLength)+\"/\"+e._s(e.upperLimit)+\"\\n          \")])]):e._e()],2),e.validateState?n(\"i\",{staticClass:\"el-input__icon\",class:[\"el-input__validateIcon\",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?n(\"div\",{staticClass:\"el-input-group__append\"},[e._t(\"append\")],2):e._e()]:n(\"textarea\",e._b({ref:\"textarea\",staticClass:\"el-textarea__inner\",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,\"aria-label\":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},\"textarea\",e.$attrs,!1)),e.isWordLimitVisible&&\"textarea\"===e.type?n(\"span\",{staticClass:\"el-input__count\"},[e._v(e._s(e.textLength)+\"/\"+e._s(e.upperLimit))]):e._e()],2)};Ne._withStripped=!0;var Re=void 0,Be=\"\\n  height:0 !important;\\n  visibility:hidden !important;\\n  overflow:hidden !important;\\n  position:absolute !important;\\n  z-index:-1000 !important;\\n  top:0 !important;\\n  right:0 !important\\n\",ze=[\"letter-spacing\",\"line-height\",\"padding-top\",\"padding-bottom\",\"font-family\",\"font-weight\",\"font-size\",\"text-rendering\",\"text-transform\",\"width\",\"text-indent\",\"padding-left\",\"padding-right\",\"border-width\",\"box-sizing\"];function Fe(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Re||(Re=document.createElement(\"textarea\"),document.body.appendChild(Re));var i=function(e){var t=window.getComputedStyle(e),n=t.getPropertyValue(\"box-sizing\"),i=parseFloat(t.getPropertyValue(\"padding-bottom\"))+parseFloat(t.getPropertyValue(\"padding-top\")),r=parseFloat(t.getPropertyValue(\"border-bottom-width\"))+parseFloat(t.getPropertyValue(\"border-top-width\"));return{contextStyle:ze.map(function(e){return e+\":\"+t.getPropertyValue(e)}).join(\";\"),paddingSize:i,borderSize:r,boxSizing:n}}(e),r=i.paddingSize,o=i.borderSize,a=i.boxSizing,s=i.contextStyle;Re.setAttribute(\"style\",s+\";\"+Be),Re.value=e.value||e.placeholder||\"\";var l=Re.scrollHeight,u={};\"border-box\"===a?l+=o:\"content-box\"===a&&(l-=r),Re.value=\"\";var c=Re.scrollHeight-r;if(null!==t){var h=c*t;\"border-box\"===a&&(h=h+r+o),l=Math.max(h,l),u.minHeight=h+\"px\"}if(null!==n){var d=c*n;\"border-box\"===a&&(d=d+r+o),l=Math.min(d,l)}return u.height=l+\"px\",Re.parentNode&&Re.parentNode.removeChild(Re),Re=null,u}var $e=n(7),Ve=n.n($e),je=n(19),He=r({name:\"ElInput\",componentName:\"ElInput\",mixins:[S.a,w.a],inheritAttrs:!1,inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:\"text\"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:\"off\"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:\"\"},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:\"el-icon-loading\",success:\"el-icon-circle-check\",error:\"el-icon-circle-close\"}[this.validateState]},textareaStyle:function(){return Ve()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?\"\":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&(\"text\"===this.type||\"textarea\"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return\"number\"==typeof this.value?String(this.value).length:(this.value||\"\").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.change\",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:\"icon is removed, use suffix-icon / prefix-icon instead.\",\"on-icon-click\":\"on-icon-click is removed.\"},events:{click:\"click is removed.\"}}},handleBlur:function(e){this.focused=!1,this.$emit(\"blur\",e),this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.blur\",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if(\"textarea\"===this.type)if(e){var t=e.minRows,n=e.maxRows;this.textareaCalcStyle=Fe(this.$refs.textarea,t,n)}else this.textareaCalcStyle={minHeight:Fe(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit(\"focus\",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,n=t[t.length-1]||\"\";this.isComposing=!Object(je.isKorean)(n)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit(\"input\",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit(\"change\",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(\".el-input__\"+e)||[]);if(t.length){for(var n=null,i=0;i<t.length;i++)if(t[i].parentNode===this.$el){n=t[i];break}if(n){var r={suffix:\"append\",prefix:\"prepend\"}[e];this.$slots[r]?n.style.transform=\"translateX(\"+(\"suffix\"===e?\"-\":\"\")+this.$el.querySelector(\".el-input-group__\"+r).offsetWidth+\"px)\":n.removeAttribute(\"style\")}}},updateIconOffset:function(){this.calcIconOffset(\"prefix\"),this.calcIconOffset(\"suffix\")},clear:function(){this.$emit(\"input\",\"\"),this.$emit(\"change\",\"\"),this.$emit(\"clear\")},handlePasswordVisible:function(){this.passwordVisible=!this.passwordVisible,this.focus()},getInput:function(){return this.$refs.input||this.$refs.textarea},getSuffixVisible:function(){return this.$slots.suffix||this.suffixIcon||this.showClear||this.showPassword||this.isWordLimitVisible||this.validateState&&this.needStatusIcon}},created:function(){this.$on(\"inputSelect\",this.select)},mounted:function(){this.setNativeInputValue(),this.resizeTextarea(),this.updateIconOffset()},updated:function(){this.$nextTick(this.updateIconOffset)}},Ne,[],!1,null,null,null);He.options.__file=\"packages/input/src/input.vue\";var We=He.exports;We.install=function(e){e.component(We.name,We)};var qe=We,Ge=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:[\"el-input-number\",e.inputNumberSize?\"el-input-number--\"+e.inputNumberSize:\"\",{\"is-disabled\":e.inputNumberDisabled},{\"is-without-controls\":!e.controls},{\"is-controls-right\":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?n(\"span\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.decrease,expression:\"decrease\"}],staticClass:\"el-input-number__decrease\",class:{\"is-disabled\":e.minDisabled},attrs:{role:\"button\"},on:{keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.decrease(t):null}}},[n(\"i\",{class:\"el-icon-\"+(e.controlsAtRight?\"arrow-down\":\"minus\")})]):e._e(),e.controls?n(\"span\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.increase,expression:\"increase\"}],staticClass:\"el-input-number__increase\",class:{\"is-disabled\":e.maxDisabled},attrs:{role:\"button\"},on:{keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.increase(t):null}}},[n(\"i\",{class:\"el-icon-\"+(e.controlsAtRight?\"arrow-up\":\"plus\")})]):e._e(),n(\"el-input\",{ref:\"input\",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return\"button\"in t||!e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"])?(t.preventDefault(),e.increase(t)):null},function(t){return\"button\"in t||!e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};Ge._withStripped=!0;var Ue={bind:function(e,t,n){var i=null,r=void 0,o=function(){return n.context[t.expression].apply()},a=function(){Date.now()-r<100&&o(),clearInterval(i),i=null};Object(pe.on)(e,\"mousedown\",function(e){0===e.button&&(r=Date.now(),Object(pe.once)(document,\"mouseup\",a),clearInterval(i),i=setInterval(o,100))})}},Ye=r({name:\"ElInputNumber\",mixins:[V()(\"input\")],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},directives:{repeatClick:Ue},components:{ElInput:d.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:\"\"},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var n=this.getPrecision(this.step),i=Math.pow(10,n);t=Math.round(t/this.step)*i*this.step/i}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit(\"input\",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)<this.min},maxDisabled:function(){return this._increase(this.value,this.step)>this.max},numPrecision:function(){var e=this.value,t=this.step,n=this.getPrecision,i=this.precision,r=n(t);return void 0!==i?(r>i&&console.warn(\"[Element Warn][InputNumber]precision should not be less than the decimal places of step\"),i):Math.max(n(e),r)},controlsAtRight:function(){return this.controls&&\"right\"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if(\"number\"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),n=Math.pow(10,t);e=Math.round(e/this.step)*n*this.step/n}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),n=t.indexOf(\".\"),i=0;return-1!==n&&(i=t.length-n-1),i},_increase:function(e,t){if(\"number\"!=typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e+n*t)/n)},_decrease:function(e,t){if(\"number\"!=typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e-n*t)/n)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit(\"blur\",e)},handleFocus:function(e){this.$emit(\"focus\",e)},setCurrentValue:function(e){var t=this.currentValue;\"number\"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit(\"input\",e),this.$emit(\"change\",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=\"\"===e?void 0:Number(e);isNaN(t)&&\"\"!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute(\"role\",\"spinbutton\"),e.setAttribute(\"aria-valuemax\",this.max),e.setAttribute(\"aria-valuemin\",this.min),e.setAttribute(\"aria-valuenow\",this.currentValue),e.setAttribute(\"aria-disabled\",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute(\"aria-valuenow\",this.currentValue)}},Ge,[],!1,null,null,null);Ye.options.__file=\"packages/input-number/src/input-number.vue\";var Xe=Ye.exports;Xe.install=function(e){e.component(Xe.name,Xe)};var Ke=Xe,Ze=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"label\",{staticClass:\"el-radio\",class:[e.border&&e.radioSize?\"el-radio--\"+e.radioSize:\"\",{\"is-disabled\":e.isDisabled},{\"is-focus\":e.focus},{\"is-bordered\":e.border},{\"is-checked\":e.model===e.label}],attrs:{role:\"radio\",\"aria-checked\":e.model===e.label,\"aria-disabled\":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"space\",32,t.key,[\" \",\"Spacebar\"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[n(\"span\",{staticClass:\"el-radio__input\",class:{\"is-disabled\":e.isDisabled,\"is-checked\":e.model===e.label}},[n(\"span\",{staticClass:\"el-radio__inner\"}),n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],ref:\"radio\",staticClass:\"el-radio__original\",attrs:{type:\"radio\",\"aria-hidden\":\"true\",name:e.name,disabled:e.isDisabled,tabindex:\"-1\"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),n(\"span\",{staticClass:\"el-radio__label\",on:{keydown:function(e){e.stopPropagation()}}},[e._t(\"default\"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Ze._withStripped=!0;var Je=r({name:\"ElRadio\",mixins:[S.a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},componentName:\"ElRadio\",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if(\"ElRadioGroup\"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch(\"ElRadioGroup\",\"input\",[e]):this.$emit(\"input\",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit(\"change\",e.model),e.isGroup&&e.dispatch(\"ElRadioGroup\",\"handleChange\",e.model)})}}},Ze,[],!1,null,null,null);Je.options.__file=\"packages/radio/src/radio.vue\";var Qe=Je.exports;Qe.install=function(e){e.component(Qe.name,Qe)};var et=Qe,tt=function(){var e=this.$createElement;return(this._self._c||e)(this._elTag,{tag:\"component\",staticClass:\"el-radio-group\",attrs:{role:\"radiogroup\"},on:{keydown:this.handleKeydown}},[this._t(\"default\")],2)};tt._withStripped=!0;var nt=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),it=r({name:\"ElRadioGroup\",componentName:\"ElRadioGroup\",inject:{elFormItem:{default:\"\"}},mixins:[S.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},_elTag:function(){return(this.$vnode.data||{}).tag||\"div\"},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on(\"handleChange\",function(t){e.$emit(\"change\",t)})},mounted:function(){var e=this.$el.querySelectorAll(\"[type=radio]\"),t=this.$el.querySelectorAll(\"[role=radio]\")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,n=\"INPUT\"===t.nodeName?\"[type=radio]\":\"[role=radio]\",i=this.$el.querySelectorAll(n),r=i.length,o=[].indexOf.call(i,t),a=this.$el.querySelectorAll(\"[role=radio]\");switch(e.keyCode){case nt.LEFT:case nt.UP:e.stopPropagation(),e.preventDefault(),0===o?(a[r-1].click(),a[r-1].focus()):(a[o-1].click(),a[o-1].focus());break;case nt.RIGHT:case nt.DOWN:o===r-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[o+1].click(),a[o+1].focus())}}},watch:{value:function(e){this.dispatch(\"ElFormItem\",\"el.form.change\",[this.value])}}},tt,[],!1,null,null,null);it.options.__file=\"packages/radio/src/radio-group.vue\";var rt=it.exports;rt.install=function(e){e.component(rt.name,rt)};var ot=rt,at=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"label\",{staticClass:\"el-radio-button\",class:[e.size?\"el-radio-button--\"+e.size:\"\",{\"is-active\":e.value===e.label},{\"is-disabled\":e.isDisabled},{\"is-focus\":e.focus}],attrs:{role:\"radio\",\"aria-checked\":e.value===e.label,\"aria-disabled\":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"space\",32,t.key,[\" \",\"Spacebar\"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.value,expression:\"value\"}],staticClass:\"el-radio-button__orig-radio\",attrs:{type:\"radio\",name:e.name,disabled:e.isDisabled,tabindex:\"-1\"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),n(\"span\",{staticClass:\"el-radio-button__inner\",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t(\"default\"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};at._withStripped=!0;var st=r({name:\"ElRadioButton\",mixins:[S.a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit(\"input\",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if(\"ElRadioGroup\"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||\"\",borderColor:this._radioGroup.fill||\"\",boxShadow:this._radioGroup.fill?\"-1px 0 0 0 \"+this._radioGroup.fill:\"\",color:this._radioGroup.textColor||\"\"}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch(\"ElRadioGroup\",\"handleChange\",e.value)})}}},at,[],!1,null,null,null);st.options.__file=\"packages/radio/src/radio-button.vue\";var lt=st.exports;lt.install=function(e){e.component(lt.name,lt)};var ut=lt,ct=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"label\",{staticClass:\"el-checkbox\",class:[e.border&&e.checkboxSize?\"el-checkbox--\"+e.checkboxSize:\"\",{\"is-disabled\":e.isDisabled},{\"is-bordered\":e.border},{\"is-checked\":e.isChecked}],attrs:{id:e.id}},[n(\"span\",{staticClass:\"el-checkbox__input\",class:{\"is-disabled\":e.isDisabled,\"is-checked\":e.isChecked,\"is-indeterminate\":e.indeterminate,\"is-focus\":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&\"checkbox\",\"aria-checked\":!!e.indeterminate&&\"mixed\"}},[n(\"span\",{staticClass:\"el-checkbox__inner\"}),e.trueLabel||e.falseLabel?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],staticClass:\"el-checkbox__original\",attrs:{type:\"checkbox\",\"aria-hidden\":e.indeterminate?\"true\":\"false\",name:e.name,disabled:e.isDisabled,\"true-value\":e.trueLabel,\"false-value\":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var n=e.model,i=t.target,r=i.checked?e.trueLabel:e.falseLabel;if(Array.isArray(n)){var o=e._i(n,null);i.checked?o<0&&(e.model=n.concat([null])):o>-1&&(e.model=n.slice(0,o).concat(n.slice(o+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],staticClass:\"el-checkbox__original\",attrs:{type:\"checkbox\",\"aria-hidden\":e.indeterminate?\"true\":\"false\",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var n=e.model,i=t.target,r=!!i.checked;if(Array.isArray(n)){var o=e.label,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?n(\"span\",{staticClass:\"el-checkbox__label\"},[e._t(\"default\"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};ct._withStripped=!0;var ht=r({name:\"ElCheckbox\",mixins:[S.a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},componentName:\"ElCheckbox\",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch(\"ElCheckboxGroup\",\"input\",[e])):(this.$emit(\"input\",e),this.selfModel=e)}},isChecked:function(){return\"[object Boolean]\"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if(\"ElCheckboxGroup\"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,n=e.min;return!(!t&&!n)&&this.model.length>=t&&!this.isChecked||this.model.length<=n&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var n=void 0;n=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit(\"change\",n,e),this.$nextTick(function(){t.isGroup&&t.dispatch(\"ElCheckboxGroup\",\"change\",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute(\"aria-controls\",this.controls)},watch:{value:function(e){this.dispatch(\"ElFormItem\",\"el.form.change\",e)}}},ct,[],!1,null,null,null);ht.options.__file=\"packages/checkbox/src/checkbox.vue\";var dt=ht.exports;dt.install=function(e){e.component(dt.name,dt)};var ft=dt,pt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"label\",{staticClass:\"el-checkbox-button\",class:[e.size?\"el-checkbox-button--\"+e.size:\"\",{\"is-disabled\":e.isDisabled},{\"is-checked\":e.isChecked},{\"is-focus\":e.focus}],attrs:{role:\"checkbox\",\"aria-checked\":e.isChecked,\"aria-disabled\":e.isDisabled}},[e.trueLabel||e.falseLabel?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],staticClass:\"el-checkbox-button__original\",attrs:{type:\"checkbox\",name:e.name,disabled:e.isDisabled,\"true-value\":e.trueLabel,\"false-value\":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var n=e.model,i=t.target,r=i.checked?e.trueLabel:e.falseLabel;if(Array.isArray(n)){var o=e._i(n,null);i.checked?o<0&&(e.model=n.concat([null])):o>-1&&(e.model=n.slice(0,o).concat(n.slice(o+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.model,expression:\"model\"}],staticClass:\"el-checkbox-button__original\",attrs:{type:\"checkbox\",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var n=e.model,i=t.target,r=!!i.checked;if(Array.isArray(n)){var o=e.label,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?n(\"span\",{staticClass:\"el-checkbox-button__inner\",style:e.isChecked?e.activeStyle:null},[e._t(\"default\",[e._v(e._s(e.label))])],2):e._e()])};pt._withStripped=!0;var gt=r({name:\"ElCheckboxButton\",mixins:[S.a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.length<this._checkboxGroup.min&&(this.isLimitExceeded=!0),void 0!==this._checkboxGroup.max&&e.length>this._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch(\"ElCheckboxGroup\",\"input\",[e])):void 0!==this.value?this.$emit(\"input\",e):this.selfModel=e}},isChecked:function(){return\"[object Boolean]\"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if(\"ElCheckboxGroup\"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||\"\",borderColor:this._checkboxGroup.fill||\"\",color:this._checkboxGroup.textColor||\"\",\"box-shadow\":\"-1px 0 0 0 \"+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,n=e.min;return!(!t&&!n)&&this.model.length>=t&&!this.isChecked||this.model.length<=n&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var n=void 0;n=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit(\"change\",n,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch(\"ElCheckboxGroup\",\"change\",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},pt,[],!1,null,null,null);gt.options.__file=\"packages/checkbox/src/checkbox-button.vue\";var mt=gt.exports;mt.install=function(e){e.component(mt.name,mt)};var vt=mt,yt=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-checkbox-group\",attrs:{role:\"group\",\"aria-label\":\"checkbox-group\"}},[this._t(\"default\")],2)};yt._withStripped=!0;var bt=r({name:\"ElCheckboxGroup\",componentName:\"ElCheckboxGroup\",mixins:[S.a],inject:{elFormItem:{default:\"\"}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch(\"ElFormItem\",\"el.form.change\",[e])}}},yt,[],!1,null,null,null);bt.options.__file=\"packages/checkbox/src/checkbox-group.vue\";var xt=bt.exports;xt.install=function(e){e.component(xt.name,xt)};var _t=xt,wt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-switch\",class:{\"is-disabled\":e.switchDisabled,\"is-checked\":e.checked},attrs:{role:\"switch\",\"aria-checked\":e.checked,\"aria-disabled\":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[n(\"input\",{ref:\"input\",staticClass:\"el-switch__input\",attrs:{type:\"checkbox\",id:e.id,name:e.name,\"true-value\":e.activeValue,\"false-value\":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?n(\"span\",{class:[\"el-switch__label\",\"el-switch__label--left\",e.checked?\"\":\"is-active\"]},[e.inactiveIconClass?n(\"i\",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?n(\"span\",{attrs:{\"aria-hidden\":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),n(\"span\",{ref:\"core\",staticClass:\"el-switch__core\",style:{width:e.coreWidth+\"px\"}}),e.activeIconClass||e.activeText?n(\"span\",{class:[\"el-switch__label\",\"el-switch__label--right\",e.checked?\"is-active\":\"\"]},[e.activeIconClass?n(\"i\",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?n(\"span\",{attrs:{\"aria-hidden\":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};wt._withStripped=!0;var Ct=r({name:\"ElSwitch\",mixins:[V()(\"input\"),w.a,S.a],inject:{elForm:{default:\"\"}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:\"\"},inactiveIconClass:{type:String,default:\"\"},activeText:String,inactiveText:String,activeColor:{type:String,default:\"\"},inactiveColor:{type:String,default:\"\"},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:\"\"},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit(\"input\",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.change\",[this.value])}},methods:{handleChange:function(e){var t=this,n=this.checked?this.inactiveValue:this.activeValue;this.$emit(\"input\",n),this.$emit(\"change\",n),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{\"on-color\":\"on-color is renamed to active-color.\",\"off-color\":\"off-color is renamed to inactive-color.\",\"on-text\":\"on-text is renamed to active-text.\",\"off-text\":\"off-text is renamed to inactive-text.\",\"on-value\":\"on-value is renamed to active-value.\",\"off-value\":\"off-value is renamed to inactive-value.\",\"on-icon-class\":\"on-icon-class is renamed to active-icon-class.\",\"off-icon-class\":\"off-icon-class is renamed to inactive-icon-class.\"}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},wt,[],!1,null,null,null);Ct.options.__file=\"packages/switch/src/component.vue\";var St=Ct.exports;St.install=function(e){e.component(St.name,St)};var kt=St,Tt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleClose,expression:\"handleClose\"}],staticClass:\"el-select\",class:[e.selectSize?\"el-select--\"+e.selectSize:\"\"],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?n(\"div\",{ref:\"tags\",staticClass:\"el-select__tags\",style:{\"max-width\":e.inputWidth-32+\"px\",width:\"100%\"}},[e.collapseTags&&e.selected.length?n(\"span\",[n(\"el-tag\",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:\"info\",\"disable-transitions\":\"\"},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[n(\"span\",{staticClass:\"el-select__tags-text\"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?n(\"el-tag\",{attrs:{closable:!1,size:e.collapseTagSize,type:\"info\",\"disable-transitions\":\"\"}},[n(\"span\",{staticClass:\"el-select__tags-text\"},[e._v(\"+ \"+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():n(\"transition-group\",{on:{\"after-leave\":e.resetInputHeight}},e._l(e.selected,function(t){return n(\"el-tag\",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:\"info\",\"disable-transitions\":\"\"},on:{close:function(n){e.deleteTag(n,t)}}},[n(\"span\",{staticClass:\"el-select__tags-text\"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:e.query,expression:\"query\"}],ref:\"input\",staticClass:\"el-select__input\",class:[e.selectSize?\"is-\"+e.selectSize:\"\"],style:{\"flex-grow\":\"1\",width:e.inputLength/(e.inputWidth-32)+\"%\",\"max-width\":e.inputWidth-42+\"px\"},attrs:{type:\"text\",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"]))return null;t.preventDefault(),e.navigateOptions(\"next\")},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"]))return null;t.preventDefault(),e.navigateOptions(\"prev\")},function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"esc\",27,t.key,[\"Esc\",\"Escape\"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return\"button\"in t||!e._k(t.keyCode,\"delete\",[8,46],t.key,[\"Backspace\",\"Delete\",\"Del\"])?e.deletePrevTag(t):null},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"tab\",9,t.key,\"Tab\"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),n(\"el-input\",{ref:\"reference\",class:{\"is-focus\":e.visible},attrs:{type:\"text\",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,\"validate-event\":!1,tabindex:e.multiple&&e.filterable?\"-1\":null},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions(\"next\")},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions(\"prev\")},function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"esc\",27,t.key,[\"Esc\",\"Escape\"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"tab\",9,t.key,\"Tab\"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:\"selectedLabel\"}},[e.$slots.prefix?n(\"template\",{slot:\"prefix\"},[e._t(\"prefix\")],2):e._e(),n(\"template\",{slot:\"suffix\"},[n(\"i\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.showClose,expression:\"!showClose\"}],class:[\"el-select__caret\",\"el-input__icon\",\"el-icon-\"+e.iconClass]}),e.showClose?n(\"i\",{staticClass:\"el-select__caret el-input__icon el-icon-circle-close\",on:{click:e.handleClearClick}}):e._e()])],2),n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"before-enter\":e.handleMenuEnter,\"after-leave\":e.doDestroy}},[n(\"el-select-menu\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible&&!1!==e.emptyText,expression:\"visible && emptyText !== false\"}],ref:\"popper\",attrs:{\"append-to-body\":e.popperAppendToBody}},[n(\"el-scrollbar\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.options.length>0&&!e.loading,expression:\"options.length > 0 && !loading\"}],ref:\"scrollbar\",class:{\"is-empty\":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:\"ul\",\"wrap-class\":\"el-select-dropdown__wrap\",\"view-class\":\"el-select-dropdown__list\"}},[e.showNewOption?n(\"el-option\",{attrs:{value:e.query,created:\"\"}}):e._e(),e._t(\"default\")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t(\"empty\"):n(\"p\",{staticClass:\"el-select-dropdown__empty\"},[e._v(\"\\n          \"+e._s(e.emptyText)+\"\\n        \")])]:e._e()],2)],1)],1)};Tt._withStripped=!0;var Mt=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-select-dropdown el-popper\",class:[{\"is-multiple\":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t(\"default\")],2)};Mt._withStripped=!0;var Dt=r({name:\"ElSelectDropdown\",componentName:\"ElSelectDropdown\",mixins:[N.a],props:{placement:{default:\"bottom-start\"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:\"\"}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{\"$parent.inputWidth\":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+\"px\"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on(\"updatePopper\",function(){e.$parent.visible&&e.updatePopper()}),this.$on(\"destroyPopper\",this.destroyPopper)}},Mt,[],!1,null,null,null);Dt.options.__file=\"packages/select/src/select-dropdown.vue\";var At=Dt.exports,It=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"li\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-select-dropdown__item\",class:{selected:e.itemSelected,\"is-disabled\":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t(\"default\",[n(\"span\",[e._v(e._s(e.currentLabel))])])],2)};It._withStripped=!0;var Ot=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Et=r({mixins:[S.a],name:\"ElOption\",componentName:\"ElOption\",inject:[\"select\"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return\"[object object]\"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?\"\":this.value)},currentValue:function(){return this.value||this.label||\"\"},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch(\"ElSelect\",\"setSelected\")},value:function(e,t){var n=this.select,i=n.remote,r=n.valueKey;if(!this.created&&!i){if(r&&\"object\"===(void 0===e?\"undefined\":Ot(e))&&\"object\"===(void 0===t?\"undefined\":Ot(t))&&e[r]===t[r])return;this.dispatch(\"ElSelect\",\"setSelected\")}}},methods:{isEqual:function(e,t){if(this.isObject){var n=this.select.valueKey;return Object(g.getValueByPath)(e,n)===Object(g.getValueByPath)(t,n)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var n=this.select.valueKey;return e&&e.some(function(e){return Object(g.getValueByPath)(e,n)===Object(g.getValueByPath)(t,n)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch(\"ElSelect\",\"handleOptionClick\",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(g.escapeRegexpString)(e),\"i\").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on(\"queryChange\",this.queryChange),this.$on(\"handleGroupDisabled\",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,n=e.multiple?t:[t],i=this.select.cachedOptions.indexOf(this),r=n.indexOf(this);i>-1&&r<0&&this.select.cachedOptions.splice(i,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},It,[],!1,null,null,null);Et.options.__file=\"packages/select/src/option.vue\";var Lt=Et.exports,Pt=n(30),Nt=n.n(Pt),Rt=n(13),Bt=n(11),zt=n.n(Bt),Ft=n(27),$t=n.n(Ft),Vt=r({mixins:[S.a,p.a,V()(\"reference\"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;\"number\"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){\"next\"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):\"prev\"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var n=this.options[this.hoverIndex];!0!==n.disabled&&!0!==n.groupDisabled&&n.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:\"ElSelect\",componentName:\"ElSelect\",inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(g.isIE)()&&!Object(g.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&\"\"!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?\"\":this.visible?\"arrow-up is-reverse\":\"arrow-up\"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t(\"el.select.loading\"):(!this.remote||\"\"!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t(\"el.select.noMatch\"):0===this.options.length?this.noDataText||this.t(\"el.select.noData\"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&\"\"!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return[\"small\",\"mini\"].indexOf(this.selectSize)>-1?\"mini\":\"small\"}},components:{ElInput:d.a,ElSelectMenu:At,ElOption:Lt,ElTag:Nt.a,ElScrollbar:B.a},directives:{Clickoutside:E.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:\"off\"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(Bt.t)(\"el.select.placeholder\")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:\"value\"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:\"\",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:\"\",hoverIndex:-1,query:\"\",previousQuery:null,inputHovering:!1,currentPlaceholder:\"\",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&\"\"!==this.query?this.currentPlaceholder=\"\":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query=\"\",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(g.valueEquals)(e,t)||this.dispatch(\"ElFormItem\",\"el.form.change\",e)},visible:function(e){var t=this;e?(this.broadcast(\"ElSelectDropdown\",\"updatePopper\"),this.filterable&&(this.query=this.remote?\"\":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast(\"ElOption\",\"queryChange\",\"\"),this.broadcast(\"ElOptionGroup\",\"queryChange\")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel=\"\")))):(this.broadcast(\"ElSelectDropdown\",\"destroyPopper\"),this.$refs.input&&this.$refs.input.blur(),this.query=\"\",this.previousQuery=null,this.selectedLabel=\"\",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&\"\"===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit(\"visible-change\",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast(\"ElSelectDropdown\",\"updatePopper\")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll(\"input\");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,n=e.target.value;if(\"compositionend\"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(n)});else{var i=n[n.length-1]||\"\";this.isOnComposition=!Object(je.isKorean)(i)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||\"function\"!=typeof this.filterMethod&&\"function\"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast(\"ElSelectDropdown\",\"updatePopper\")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&\"function\"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):\"function\"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast(\"ElOptionGroup\",\"queryChange\")):(this.filteredOptionsCount=this.optionsCount,this.broadcast(\"ElOption\",\"queryChange\",e),this.broadcast(\"ElOptionGroup\",\"queryChange\")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var n=this.$refs.popper.$el.querySelector(\".el-select-dropdown__wrap\");$t()(n,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(g.valueEquals)(this.value,e)||this.$emit(\"change\",e)},getOption:function(e){for(var t=void 0,n=\"[object object]\"===Object.prototype.toString.call(e).toLowerCase(),i=\"[object null]\"===Object.prototype.toString.call(e).toLowerCase(),r=\"[object undefined]\"===Object.prototype.toString.call(e).toLowerCase(),o=this.cachedOptions.length-1;o>=0;o--){var a=this.cachedOptions[o];if(n?Object(g.getValueByPath)(a.value,this.valueKey)===Object(g.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var s={value:e,currentLabel:n||i||r?\"\":e};return this.multiple&&(s.hitState=!1),s},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var n=[];Array.isArray(this.value)&&this.value.forEach(function(t){n.push(e.getOption(t))}),this.selected=n,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit(\"focus\",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit(\"blur\",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit(\"input\",t),this.emitChange(t)}},managePlaceholder:function(){\"\"!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?\"\":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,n=[].filter.call(t,function(e){return\"INPUT\"===e.tagName})[0],i=e.$refs.tags,r=e.initialInputHeight||40;n.style.height=0===e.selected.length?r+\"px\":Math.max(i?i.clientHeight+(i.clientHeight>r?6:0):0,r)+\"px\",e.visible&&!1!==e.emptyText&&e.broadcast(\"ElSelectDropdown\",\"updatePopper\")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var n=this;if(this.multiple){var i=(this.value||[]).slice(),r=this.getValueIndex(i,e.value);r>-1?i.splice(r,1):(this.multipleLimit<=0||i.length<this.multipleLimit)&&i.push(e.value),this.$emit(\"input\",i),this.emitChange(i),e.created&&(this.query=\"\",this.handleQueryChange(\"\"),this.inputLength=20),this.filterable&&this.$refs.input.focus()}else this.$emit(\"input\",e.value),this.emitChange(e.value),this.visible=!1;this.isSilentBlur=t,this.setSoftFocus(),this.visible||this.$nextTick(function(){n.scrollToOption(e)})},setSoftFocus:function(){this.softFocus=!0;var e=this.$refs.input||this.$refs.reference;e&&e.focus()},getValueIndex:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(\"[object object]\"===Object.prototype.toString.call(t).toLowerCase()){var n=this.valueKey,i=-1;return e.some(function(e,r){return Object(g.getValueByPath)(e,n)===Object(g.getValueByPath)(t,n)&&(i=r,!0)}),i}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:\"\";this.$emit(\"input\",t),this.emitChange(t),this.visible=!1,this.$emit(\"clear\")},deleteTag:function(e,t){var n=this.selected.indexOf(t);if(n>-1&&!this.selectDisabled){var i=this.value.slice();i.splice(n,1),this.$emit(\"input\",i),this.emitChange(i),this.$emit(\"remove-tag\",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var n=0;n!==this.options.length;++n){var i=this.options[n];if(this.query){if(!i.disabled&&!i.groupDisabled&&i.visible){this.hoverIndex=n;break}}else if(i.itemSelected){this.hoverIndex=n;break}}},getValueKey:function(e){return\"[object object]\"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(g.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit(\"input\",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit(\"input\",\"\"),this.debouncedOnInputChange=I()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=I()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on(\"handleOptionClick\",this.handleOptionSelect),this.$on(\"setSelected\",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=\"\"),Object(Rt.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var n=t.$el.querySelector(\"input\");this.initialInputHeight=n.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(Rt.removeResizeListener)(this.$el,this.handleResize)}},Tt,[],!1,null,null,null);Vt.options.__file=\"packages/select/src/select.vue\";var jt=Vt.exports;jt.install=function(e){e.component(jt.name,jt)};var Ht=jt;Lt.install=function(e){e.component(Lt.name,Lt)};var Wt=Lt,qt=function(){var e=this.$createElement,t=this._self._c||e;return t(\"ul\",{directives:[{name:\"show\",rawName:\"v-show\",value:this.visible,expression:\"visible\"}],staticClass:\"el-select-group__wrap\"},[t(\"li\",{staticClass:\"el-select-group__title\"},[this._v(this._s(this.label))]),t(\"li\",[t(\"ul\",{staticClass:\"el-select-group\"},[this._t(\"default\")],2)])])};qt._withStripped=!0;var Gt=r({mixins:[S.a],name:\"ElOptionGroup\",componentName:\"ElOptionGroup\",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast(\"ElOption\",\"handleGroupDisabled\",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on(\"queryChange\",this.queryChange)},mounted:function(){this.disabled&&this.broadcast(\"ElOption\",\"handleGroupDisabled\",this.disabled)}},qt,[],!1,null,null,null);Gt.options.__file=\"packages/select/src/option-group.vue\";var Ut=Gt.exports;Ut.install=function(e){e.component(Ut.name,Ut)};var Yt=Ut,Xt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"button\",{staticClass:\"el-button\",class:[e.type?\"el-button--\"+e.type:\"\",e.buttonSize?\"el-button--\"+e.buttonSize:\"\",{\"is-disabled\":e.buttonDisabled,\"is-loading\":e.loading,\"is-plain\":e.plain,\"is-round\":e.round,\"is-circle\":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?n(\"i\",{staticClass:\"el-icon-loading\"}):e._e(),e.icon&&!e.loading?n(\"i\",{class:e.icon}):e._e(),e.$slots.default?n(\"span\",[e._t(\"default\")],2):e._e()])};Xt._withStripped=!0;var Kt=r({name:\"ElButton\",inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},props:{type:{type:String,default:\"default\"},size:String,icon:{type:String,default:\"\"},nativeType:{type:String,default:\"button\"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit(\"click\",e)}}},Xt,[],!1,null,null,null);Kt.options.__file=\"packages/button/src/button.vue\";var Zt=Kt.exports;Zt.install=function(e){e.component(Zt.name,Zt)};var Jt=Zt,Qt=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-button-group\"},[this._t(\"default\")],2)};Qt._withStripped=!0;var en=r({name:\"ElButtonGroup\"},Qt,[],!1,null,null,null);en.options.__file=\"packages/button/src/button-group.vue\";var tn=en.exports;tn.install=function(e){e.component(tn.name,tn)};var nn=tn,rn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-table\",class:[{\"el-table--fit\":e.fit,\"el-table--striped\":e.stripe,\"el-table--border\":e.border||e.isGroup,\"el-table--hidden\":e.isHidden,\"el-table--group\":e.isGroup,\"el-table--fluid-height\":e.maxHeight,\"el-table--scrollable-x\":e.layout.scrollX,\"el-table--scrollable-y\":e.layout.scrollY,\"el-table--enable-row-hover\":!e.store.states.isComplex,\"el-table--enable-row-transition\":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?\"el-table--\"+e.tableSize:\"\"],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[n(\"div\",{ref:\"hiddenColumns\",staticClass:\"hidden-columns\"},[e._t(\"default\")],2),e.showHeader?n(\"div\",{directives:[{name:\"mousewheel\",rawName:\"v-mousewheel\",value:e.handleHeaderFooterMousewheel,expression:\"handleHeaderFooterMousewheel\"}],ref:\"headerWrapper\",staticClass:\"el-table__header-wrapper\"},[n(\"table-header\",{ref:\"tableHeader\",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+\"px\":\"\"},attrs:{store:e.store,border:e.border,\"default-sort\":e.defaultSort}})],1):e._e(),n(\"div\",{ref:\"bodyWrapper\",staticClass:\"el-table__body-wrapper\",class:[e.layout.scrollX?\"is-scrolling-\"+e.scrollPosition:\"is-scrolling-none\"],style:[e.bodyHeight]},[n(\"table-body\",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,\"row-class-name\":e.rowClassName,\"row-style\":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():n(\"div\",{ref:\"emptyBlock\",staticClass:\"el-table__empty-block\",style:e.emptyBlockStyle},[n(\"span\",{staticClass:\"el-table__empty-text\"},[e._t(\"empty\",[e._v(e._s(e.emptyText||e.t(\"el.table.emptyText\")))])],2)]),e.$slots.append?n(\"div\",{ref:\"appendWrapper\",staticClass:\"el-table__append-wrapper\"},[e._t(\"append\")],2):e._e()],1),e.showSummary?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.data&&e.data.length>0,expression:\"data && data.length > 0\"},{name:\"mousewheel\",rawName:\"v-mousewheel\",value:e.handleHeaderFooterMousewheel,expression:\"handleHeaderFooterMousewheel\"}],ref:\"footerWrapper\",staticClass:\"el-table__footer-wrapper\"},[n(\"table-footer\",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+\"px\":\"\"},attrs:{store:e.store,border:e.border,\"sum-text\":e.sumText||e.t(\"el.table.sumText\"),\"summary-method\":e.summaryMethod,\"default-sort\":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?n(\"div\",{directives:[{name:\"mousewheel\",rawName:\"v-mousewheel\",value:e.handleFixedMousewheel,expression:\"handleFixedMousewheel\"}],ref:\"fixedWrapper\",staticClass:\"el-table__fixed\",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+\"px\":\"\"},e.fixedHeight]},[e.showHeader?n(\"div\",{ref:\"fixedHeaderWrapper\",staticClass:\"el-table__fixed-header-wrapper\"},[n(\"table-header\",{ref:\"fixedTableHeader\",style:{width:e.bodyWidth},attrs:{fixed:\"left\",border:e.border,store:e.store}})],1):e._e(),n(\"div\",{ref:\"fixedBodyWrapper\",staticClass:\"el-table__fixed-body-wrapper\",style:[{top:e.layout.headerHeight+\"px\"},e.fixedBodyHeight]},[n(\"table-body\",{style:{width:e.bodyWidth},attrs:{fixed:\"left\",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,\"row-class-name\":e.rowClassName,\"row-style\":e.rowStyle}}),e.$slots.append?n(\"div\",{staticClass:\"el-table__append-gutter\",style:{height:e.layout.appendHeight+\"px\"}}):e._e()],1),e.showSummary?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.data&&e.data.length>0,expression:\"data && data.length > 0\"}],ref:\"fixedFooterWrapper\",staticClass:\"el-table__fixed-footer-wrapper\"},[n(\"table-footer\",{style:{width:e.bodyWidth},attrs:{fixed:\"left\",border:e.border,\"sum-text\":e.sumText||e.t(\"el.table.sumText\"),\"summary-method\":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?n(\"div\",{directives:[{name:\"mousewheel\",rawName:\"v-mousewheel\",value:e.handleFixedMousewheel,expression:\"handleFixedMousewheel\"}],ref:\"rightFixedWrapper\",staticClass:\"el-table__fixed-right\",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+\"px\":\"\",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+\"px\":\"\"},e.fixedHeight]},[e.showHeader?n(\"div\",{ref:\"rightFixedHeaderWrapper\",staticClass:\"el-table__fixed-header-wrapper\"},[n(\"table-header\",{ref:\"rightFixedTableHeader\",style:{width:e.bodyWidth},attrs:{fixed:\"right\",border:e.border,store:e.store}})],1):e._e(),n(\"div\",{ref:\"rightFixedBodyWrapper\",staticClass:\"el-table__fixed-body-wrapper\",style:[{top:e.layout.headerHeight+\"px\"},e.fixedBodyHeight]},[n(\"table-body\",{style:{width:e.bodyWidth},attrs:{fixed:\"right\",store:e.store,stripe:e.stripe,\"row-class-name\":e.rowClassName,\"row-style\":e.rowStyle,highlight:e.highlightCurrentRow}}),e.$slots.append?n(\"div\",{staticClass:\"el-table__append-gutter\",style:{height:e.layout.appendHeight+\"px\"}}):e._e()],1),e.showSummary?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.data&&e.data.length>0,expression:\"data && data.length > 0\"}],ref:\"rightFixedFooterWrapper\",staticClass:\"el-table__fixed-footer-wrapper\"},[n(\"table-footer\",{style:{width:e.bodyWidth},attrs:{fixed:\"right\",border:e.border,\"sum-text\":e.sumText||e.t(\"el.table.sumText\"),\"summary-method\":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?n(\"div\",{ref:\"rightFixedPatch\",staticClass:\"el-table__fixed-right-patch\",style:{width:e.layout.scrollY?e.layout.gutterWidth+\"px\":\"0\",height:e.layout.headerHeight+\"px\"}}):e._e(),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.resizeProxyVisible,expression:\"resizeProxyVisible\"}],ref:\"resizeProxy\",staticClass:\"el-table__column-resize-proxy\"})])};rn._withStripped=!0;var on=n(16),an=n.n(on),sn=n(35),ln=n(38),un=n.n(ln),cn=\"undefined\"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf(\"firefox\")>-1,hn={bind:function(e,t){var n,i;n=e,i=t.value,n&&n.addEventListener&&n.addEventListener(cn?\"DOMMouseScroll\":\"mousewheel\",function(e){var t=un()(e);i&&i.apply(this,[e,t])})}},dn=n(6),fn=n.n(dn),pn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},gn=function(e){for(var t=e.target;t&&\"HTML\"!==t.tagName.toUpperCase();){if(\"TD\"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},mn=function(e){return null!==e&&\"object\"===(void 0===e?\"undefined\":pn(e))},vn=function(e,t,n,i,r){if(!t&&!i&&(!r||Array.isArray(r)&&!r.length))return e;n=\"string\"==typeof n?\"descending\"===n?-1:1:n&&n<0?-1:1;var o=i?null:function(n,i){return r?(Array.isArray(r)||(r=[r]),r.map(function(t){return\"string\"==typeof t?Object(g.getValueByPath)(n,t):t(n,i,e)})):(\"$key\"!==t&&mn(n)&&\"$value\"in n&&(n=n.$value),[mn(n)?Object(g.getValueByPath)(n,t):n])};return e.map(function(e,t){return{value:e,index:t,key:o?o(e,t):null}}).sort(function(e,t){var r=function(e,t){if(i)return i(e.value,t.value);for(var n=0,r=e.key.length;n<r;n++){if(e.key[n]<t.key[n])return-1;if(e.key[n]>t.key[n])return 1}return 0}(e,t);return r||(r=e.index-t.index),r*n}).map(function(e){return e.value})},yn=function(e,t){var n=null;return e.columns.forEach(function(e){e.id===t&&(n=e)}),n},bn=function(e,t){var n=(t.className||\"\").match(/el-table_[^\\s]+/gm);return n?yn(e,n[0]):null},xn=function(e,t){if(!e)throw new Error(\"row is required when get row identity\");if(\"string\"==typeof t){if(t.indexOf(\".\")<0)return e[t];for(var n=t.split(\".\"),i=e,r=0;r<n.length;r++)i=i[n[r]];return i}if(\"function\"==typeof t)return t.call(null,e)},_n=function(e,t){var n={};return(e||[]).forEach(function(e,i){n[xn(e,t)]={row:e,index:i}}),n};function wn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Cn(e){return void 0!==e&&(e=parseInt(e,10),isNaN(e)&&(e=null)),e}function Sn(e){return\"number\"==typeof e?e:\"string\"==typeof e?/^\\d+(?:px)?$/.test(e)?parseInt(e,10):e:null}function kn(e,t,n){var i=!1,r=e.indexOf(t),o=-1!==r,a=function(){e.push(t),i=!0},s=function(){e.splice(r,1),i=!0};return\"boolean\"==typeof n?n&&!o?a():!n&&o&&s():o?s():a(),i}function Tn(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"children\",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"hasChildren\",r=function(e){return!(Array.isArray(e)&&e.length)};e.forEach(function(e){if(e[i])t(e,null,0);else{var o=e[n];r(o)||function e(o,a,s){t(o,a,s),a.forEach(function(o){if(o[i])t(o,null,s+1);else{var a=o[n];r(a)||e(o,a,s+1)}})}(e,o,0)}})}var Mn={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,n=void 0===t?[]:t,i=e.rowKey,r=e.defaultExpandAll,o=e.expandRows;if(r)this.states.expandRows=n.slice();else if(i){var a=_n(o,i);this.states.expandRows=n.reduce(function(e,t){var n=xn(t,i);return a[n]&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){kn(this.states.expandRows,e,t)&&(this.table.$emit(\"expand-change\",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,n=t.data,i=t.rowKey,r=_n(n,i);this.states.expandRows=e.reduce(function(e,t){var n=r[t];return n&&e.push(n.row),e},[])},isRowExpanded:function(e){var t=this.states,n=t.expandRows,i=void 0===n?[]:n,r=t.rowKey;return r?!!_n(i,r)[xn(e,r)]:-1!==i.indexOf(e)}}},Dn={data:function(){return{states:{_currentRowKey:null,currentRow:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey(),this.states._currentRowKey=e,this.setCurrentRowByKey(e)},restoreCurrentRowKey:function(){this.states._currentRowKey=null},setCurrentRowByKey:function(e){var t=this.states,n=t.data,i=void 0===n?[]:n,r=t.rowKey,o=null;r&&(o=Object(g.arrayFind)(i,function(t){return xn(t,r)===e})),t.currentRow=o},updateCurrentRow:function(e){var t=this.states,n=this.table,i=t.currentRow;if(e&&e!==i)return t.currentRow=e,void n.$emit(\"current-change\",e,i);!e&&i&&(t.currentRow=null,n.$emit(\"current-change\",null,i))},updateCurrentRowData:function(){var e=this.states,t=this.table,n=e.rowKey,i=e._currentRowKey,r=e.data||[],o=e.currentRow;if(-1===r.indexOf(o)&&o){if(n){var a=xn(o,n);this.setCurrentRowByKey(a)}else e.currentRow=null;null===e.currentRow&&t.$emit(\"current-change\",null,o)}else i&&(this.setCurrentRowByKey(i),this.restoreCurrentRowKey())}}},An=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},In={data:function(){return{states:{expandRowKeys:[],treeData:{},indent:16,lazy:!1,lazyTreeNodeMap:{},lazyColumnIdentifier:\"hasChildren\",childrenColumnName:\"children\"}}},computed:{normalizedData:function(){if(!this.states.rowKey)return{};var e=this.states.data||[];return this.normalize(e)},normalizedLazyNode:function(){var e=this.states,t=e.rowKey,n=e.lazyTreeNodeMap,i=e.lazyColumnIdentifier,r=Object.keys(n),o={};return r.length?(r.forEach(function(e){if(n[e].length){var r={children:[]};n[e].forEach(function(e){var n=xn(e,t);r.children.push(n),e[i]&&!o[n]&&(o[n]={children:[]})}),o[e]=r}}),o):o}},watch:{normalizedData:\"updateTreeData\",normalizedLazyNode:\"updateTreeData\"},methods:{normalize:function(e){var t=this.states,n=t.childrenColumnName,i=t.lazyColumnIdentifier,r=t.rowKey,o=t.lazy,a={};return Tn(e,function(e,t,n){var i=xn(e,r);Array.isArray(t)?a[i]={children:t.map(function(e){return xn(e,r)}),level:n}:o&&(a[i]={children:[],lazy:!0,level:n})},n,i),a},updateTreeData:function(){var e=this.normalizedData,t=this.normalizedLazyNode,n=Object.keys(e),i={};if(n.length){var r=this.states,o=r.treeData,a=r.defaultExpandAll,s=r.expandRowKeys,l=r.lazy,u=[],c=function(e,t){var n=a||s&&-1!==s.indexOf(t);return!!(e&&e.expanded||n)};n.forEach(function(t){var n=o[t],r=An({},e[t]);if(r.expanded=c(n,t),r.lazy){var a=n||{},s=a.loaded,l=void 0!==s&&s,h=a.loading,d=void 0!==h&&h;r.loaded=!!l,r.loading=!!d,u.push(t)}i[t]=r});var h=Object.keys(t);l&&h.length&&u.length&&h.forEach(function(e){var n=o[e],r=t[e].children;if(-1!==u.indexOf(e)){if(0!==i[e].children.length)throw new Error(\"[ElTable]children must be an empty array.\");i[e].children=r}else{var a=n||{},s=a.loaded,l=void 0!==s&&s,h=a.loading,d=void 0!==h&&h;i[e]={lazy:!0,loaded:!!l,loading:!!d,expanded:c(n,e),children:r,level:\"\"}}})}this.states.treeData=i,this.updateTableScrollY()},updateTreeExpandKeys:function(e){this.states.expandRowKeys=e,this.updateTreeData()},toggleTreeExpansion:function(e,t){this.assertRowKey();var n=this.states,i=n.rowKey,r=n.treeData,o=xn(e,i),a=o&&r[o];if(o&&a&&\"expanded\"in a){var s=a.expanded;t=void 0===t?!a.expanded:t,r[o].expanded=t,s!==t&&this.table.$emit(\"expand-change\",e,t),this.updateTableScrollY()}},loadOrToggle:function(e){this.assertRowKey();var t=this.states,n=t.lazy,i=t.treeData,r=t.rowKey,o=xn(e,r),a=i[o];n&&a&&\"loaded\"in a&&!a.loaded?this.loadData(e,o,a):this.toggleTreeExpansion(e)},loadData:function(e,t,n){var i=this,r=this.table.load,o=this.states,a=o.lazyTreeNodeMap,s=o.treeData;r&&!s[t].loaded&&(s[t].loading=!0,r(e,n,function(n){if(!Array.isArray(n))throw new Error(\"[ElTable] data must be an array\");s[t].loading=!1,s[t].loaded=!0,s[t].expanded=!0,n.length&&i.$set(a,t,n),i.table.$emit(\"expand-change\",e,!0)}))}}},On=function e(t){var n=[];return t.forEach(function(t){t.children?n.push.apply(n,e(t.children)):n.push(t)}),n},En=fn.a.extend({data:function(){return{states:{rowKey:null,data:[],isComplex:!1,_columns:[],originColumns:[],columns:[],fixedColumns:[],rightFixedColumns:[],leafColumns:[],fixedLeafColumns:[],rightFixedLeafColumns:[],leafColumnsLength:0,fixedLeafColumnsLength:0,rightFixedLeafColumnsLength:0,isAllSelected:!1,selection:[],reserveSelection:!1,selectOnIndeterminate:!1,selectable:null,filters:{},filteredData:null,sortingColumn:null,sortProp:null,sortOrder:null,hoverRow:null}}},mixins:[Mn,Dn,In],methods:{assertRowKey:function(){if(!this.states.rowKey)throw new Error(\"[ElTable] prop row-key is required\")},updateColumns:function(){var e=this.states,t=e._columns||[];e.fixedColumns=t.filter(function(e){return!0===e.fixed||\"left\"===e.fixed}),e.rightFixedColumns=t.filter(function(e){return\"right\"===e.fixed}),e.fixedColumns.length>0&&t[0]&&\"selection\"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var n=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(n).concat(e.rightFixedColumns);var i=On(n),r=On(e.fixedColumns),o=On(e.rightFixedColumns);e.leafColumnsLength=i.length,e.fixedLeafColumnsLength=r.length,e.rightFixedLeafColumnsLength=o.length,e.columns=[].concat(r).concat(i).concat(o),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit(\"selection-change\",[]))},cleanSelection:function(){var e=this.states,t=e.data,n=e.rowKey,i=e.selection,r=void 0;if(n){r=[];var o=_n(i,n),a=_n(t,n);for(var s in o)o.hasOwnProperty(s)&&!a[s]&&r.push(o[s].row)}else r=i.filter(function(e){return-1===t.indexOf(e)});if(r.length){var l=i.filter(function(e){return-1===r.indexOf(e)});e.selection=l,this.table.$emit(\"selection-change\",l.slice())}},toggleRowSelection:function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(kn(this.states.selection,e,t)){var i=(this.states.selection||[]).slice();n&&this.table.$emit(\"select\",i,e),this.table.$emit(\"selection-change\",i)}},_toggleAllSelection:function(){var e=this.states,t=e.data,n=void 0===t?[]:t,i=e.selection,r=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||i.length);e.isAllSelected=r;var o=!1;n.forEach(function(t,n){e.selectable?e.selectable.call(null,t,n)&&kn(i,t,r)&&(o=!0):kn(i,t,r)&&(o=!0)}),o&&this.table.$emit(\"selection-change\",i?i.slice():[]),this.table.$emit(\"select-all\",i)},updateSelectionByRowKey:function(){var e=this.states,t=e.selection,n=e.rowKey,i=e.data,r=_n(t,n);i.forEach(function(e){var i=xn(e,n),o=r[i];o&&(t[o.index]=e)})},updateAllSelected:function(){var e=this.states,t=e.selection,n=e.rowKey,i=e.selectable,r=e.data||[];if(0!==r.length){var o=void 0;n&&(o=_n(t,n));for(var a,s=!0,l=0,u=0,c=r.length;u<c;u++){var h=r[u],d=i&&i.call(null,h,u);if(a=h,o?o[xn(a,n)]:-1!==t.indexOf(a))l++;else if(!i||d){s=!1;break}}0===l&&(s=!1),e.isAllSelected=s}else e.isAllSelected=!1},updateFilters:function(e,t){Array.isArray(e)||(e=[e]);var n=this.states,i={};return e.forEach(function(e){n.filters[e.id]=t,i[e.columnKey||e.id]=t}),i},updateSort:function(e,t,n){this.states.sortingColumn&&this.states.sortingColumn!==e&&(this.states.sortingColumn.order=null),this.states.sortingColumn=e,this.states.sortProp=t,this.states.sortOrder=n},execFilter:function(){var e=this,t=this.states,n=t._data,i=t.filters,r=n;Object.keys(i).forEach(function(n){var i=t.filters[n];if(i&&0!==i.length){var o=yn(e.states,n);o&&o.filterMethod&&(r=r.filter(function(e){return i.some(function(t){return o.filterMethod.call(null,t,e,o)})}))}}),t.filteredData=r},execSort:function(){var e=this.states;e.data=function(e,t){var n=t.sortingColumn;return n&&\"string\"!=typeof n.sortable?vn(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy):e}(e.filteredData,e)},execQuery:function(e){e&&e.filter||this.execFilter(),this.execSort()},clearFilter:function(e){var t=this.states,n=this.table.$refs,i=n.tableHeader,r=n.fixedTableHeader,o=n.rightFixedTableHeader,a={};i&&(a=Ve()(a,i.filterPanels)),r&&(a=Ve()(a,r.filterPanels)),o&&(a=Ve()(a,o.filterPanels));var s=Object.keys(a);if(s.length)if(\"string\"==typeof e&&(e=[e]),Array.isArray(e)){var l=e.map(function(e){return function(e,t){for(var n=null,i=0;i<e.columns.length;i++){var r=e.columns[i];if(r.columnKey===t){n=r;break}}return n}(t,e)});s.forEach(function(e){l.find(function(t){return t.id===e})&&(a[e].filteredValue=[])}),this.commit(\"filterChange\",{column:l,values:[],silent:!0,multi:!0})}else s.forEach(function(e){a[e].filteredValue=[]}),t.filters={},this.commit(\"filterChange\",{column:{},values:[],silent:!0})},clearSort:function(){this.states.sortingColumn&&(this.updateSort(null,null,null),this.commit(\"changeSortCondition\",{silent:!0}))},setExpandRowKeysAdapter:function(e){this.setExpandRowKeys(e),this.updateTreeExpandKeys(e)},toggleRowExpansionAdapter:function(e,t){this.states.columns.some(function(e){return\"expand\"===e.type})?this.toggleRowExpansion(e,t):this.toggleTreeExpansion(e,t)}}});En.prototype.mutations={setData:function(e,t){var n=e._data!==t;e._data=t,this.execQuery(),this.updateCurrentRowData(),this.updateExpandRows(),e.reserveSelection?(this.assertRowKey(),this.updateSelectionByRowKey()):n?this.clearSelection():this.cleanSelection(),this.updateAllSelected(),this.updateTableScrollY()},insertColumn:function(e,t,n,i){var r=e._columns;i&&((r=i.children)||(r=i.children=[])),void 0!==n?r.splice(n,0,t):r.push(t),\"selection\"===t.type&&(e.selectable=t.selectable,e.reserveSelection=t.reserveSelection),this.table.$ready&&(this.updateColumns(),this.scheduleLayout())},removeColumn:function(e,t,n){var i=e._columns;n&&((i=n.children)||(i=n.children=[])),i&&i.splice(i.indexOf(t),1),this.table.$ready&&(this.updateColumns(),this.scheduleLayout())},sort:function(e,t){var n=t.prop,i=t.order,r=t.init;if(n){var o=Object(g.arrayFind)(e.columns,function(e){return e.property===n});o&&(o.order=i,this.updateSort(o,n,i),this.commit(\"changeSortCondition\",{init:r}))}},changeSortCondition:function(e,t){var n=e.sortingColumn,i=e.sortProp,r=e.sortOrder;null===r&&(e.sortingColumn=null,e.sortProp=null);this.execQuery({filter:!0}),t&&(t.silent||t.init)||this.table.$emit(\"sort-change\",{column:n,prop:i,order:r}),this.updateTableScrollY()},filterChange:function(e,t){var n=t.column,i=t.values,r=t.silent,o=this.updateFilters(n,i);this.execQuery(),r||this.table.$emit(\"filter-change\",o),this.updateTableScrollY()},toggleAllSelection:function(){this.toggleAllSelection()},rowSelectedChanged:function(e,t){this.toggleRowSelection(t),this.updateAllSelected()},setHoverRow:function(e,t){e.hoverRow=t},setCurrentRow:function(e,t){this.updateCurrentRow(t)}},En.prototype.commit=function(e){var t=this.mutations;if(!t[e])throw new Error(\"Action not found: \"+e);for(var n=arguments.length,i=Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];t[e].apply(this,[this.states].concat(i))},En.prototype.updateTableScrollY=function(){fn.a.nextTick(this.table.updateScrollY)};var Ln=En;function Pn(e){var t={};return Object.keys(e).forEach(function(n){var i=e[n],r=void 0;\"string\"==typeof i?r=function(){return this.store.states[i]}:\"function\"==typeof i?r=function(){return i.call(this,this.store.states)}:console.error(\"invalid value type\"),r&&(t[n]=r)}),t}var Nn=n(31),Rn=n.n(Nn);var Bn=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.observers=[],this.table=null,this.store=null,this.columns=null,this.fit=!0,this.showHeader=!0,this.height=null,this.scrollX=!1,this.scrollY=!1,this.bodyWidth=null,this.fixedWidth=null,this.rightFixedWidth=null,this.tableHeight=null,this.headerHeight=44,this.appendHeight=0,this.footerHeight=44,this.viewportHeight=null,this.bodyHeight=null,this.fixedBodyHeight=null,this.gutterWidth=Rn()(),t)t.hasOwnProperty(n)&&(this[n]=t[n]);if(!this.table)throw new Error(\"table is required for Table Layout\");if(!this.store)throw new Error(\"store is required for Table Layout\")}return e.prototype.updateScrollY=function(){if(null===this.height)return!1;var e=this.table.bodyWrapper;if(this.table.$el&&e){var t=e.querySelector(\".el-table__body\"),n=this.scrollY,i=t.offsetHeight>this.bodyHeight;return this.scrollY=i,n!==i}return!1},e.prototype.setHeight=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"height\";if(!fn.a.prototype.$isServer){var i=this.table.$el;if(e=Sn(e),this.height=e,!i&&(e||0===e))return fn.a.nextTick(function(){return t.setHeight(e,n)});\"number\"==typeof e?(i.style[n]=e+\"px\",this.updateElsHeight()):\"string\"==typeof e&&(i.style[n]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,\"max-height\")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return fn.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,n=t.headerWrapper,i=t.appendWrapper,r=t.footerWrapper;if(this.appendHeight=i?i.offsetHeight:0,!this.showHeader||n){var o=n?n.querySelector(\".el-table__header tr\"):null,a=this.headerDisplayNone(o),s=this.headerHeight=this.showHeader?n.offsetHeight:0;if(this.showHeader&&!a&&n.offsetWidth>0&&(this.table.columns||[]).length>0&&s<2)return fn.a.nextTick(function(){return e.updateElsHeight()});var l=this.tableHeight=this.table.$el.clientHeight,u=this.footerHeight=r?r.offsetHeight:0;null!==this.height&&(this.bodyHeight=l-s-u+(r?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var c=!(this.store.states.data&&this.store.states.data.length);this.viewportHeight=this.scrollX?l-(c?0:this.gutterWidth):l,this.updateScrollY(),this.notifyObservers(\"scrollable\")}},e.prototype.headerDisplayNone=function(e){if(!e)return!0;for(var t=e;\"DIV\"!==t.tagName;){if(\"none\"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1},e.prototype.updateColumnsWidth=function(){if(!fn.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,n=0,i=this.getFlattenColumns(),r=i.filter(function(e){return\"number\"!=typeof e.width});if(i.forEach(function(e){\"number\"==typeof e.width&&e.realWidth&&(e.realWidth=null)}),r.length>0&&e){i.forEach(function(e){n+=e.width||e.minWidth||80});var o=this.scrollY?this.gutterWidth:0;if(n<=t-o){this.scrollX=!1;var a=t-o-n;if(1===r.length)r[0].realWidth=(r[0].minWidth||80)+a;else{var s=a/r.reduce(function(e,t){return e+(t.minWidth||80)},0),l=0;r.forEach(function(e,t){if(0!==t){var n=Math.floor((e.minWidth||80)*s);l+=n,e.realWidth=(e.minWidth||80)+n}}),r[0].realWidth=(r[0].minWidth||80)+a-l}}else this.scrollX=!0,r.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(n,t),this.table.resizeState.width=this.bodyWidth}else i.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,n+=e.realWidth}),this.scrollX=n>t,this.bodyWidth=n;var u=this.store.states.fixedColumns;if(u.length>0){var c=0;u.forEach(function(e){c+=e.realWidth||e.width}),this.fixedWidth=c}var h=this.store.states.rightFixedColumns;if(h.length>0){var d=0;h.forEach(function(e){d+=e.realWidth||e.width}),this.rightFixedWidth=d}this.notifyObservers(\"columns\")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach(function(n){switch(e){case\"columns\":n.onColumnsChange(t);break;case\"scrollable\":n.onScrollableChange(t);break;default:throw new Error(\"Table Layout don't have event \"+e+\".\")}})},e}(),zn={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error(\"Can not find table layout.\");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(e){var t=this.$el.querySelectorAll(\"colgroup > col\");if(t.length){var n={};e.getFlattenColumns().forEach(function(e){n[e.id]=e});for(var i=0,r=t.length;i<r;i++){var o=t[i],a=o.getAttribute(\"name\"),s=n[a];s&&o.setAttribute(\"width\",s.realWidth||s.width)}}},onScrollableChange:function(e){for(var t=this.$el.querySelectorAll(\"colgroup > col[name=gutter]\"),n=0,i=t.length;n<i;n++){t[n].setAttribute(\"width\",e.scrollY?e.gutterWidth:\"0\")}for(var r=this.$el.querySelectorAll(\"th.gutter\"),o=0,a=r.length;o<a;o++){var s=r[o];s.style.width=e.scrollY?e.gutterWidth+\"px\":\"0\",s.style.display=e.scrollY?\"\":\"none\"}}}},Fn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},$n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Vn={name:\"ElTableBody\",mixins:[zn],components:{ElCheckbox:an.a,ElTooltip:Me.a},props:{store:{required:!0},stripe:Boolean,context:{},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:String,highlight:Boolean},render:function(e){var t=this,n=this.data||[];return e(\"table\",{class:\"el-table__body\",attrs:{cellspacing:\"0\",cellpadding:\"0\",border:\"0\"}},[e(\"colgroup\",[this.columns.map(function(t){return e(\"col\",{attrs:{name:t.id},key:t.id})})]),e(\"tbody\",[n.reduce(function(e,n){return e.concat(t.wrappedRowRender(n,e.length))},[]),e(\"el-tooltip\",{attrs:{effect:this.table.tooltipEffect,placement:\"top\",content:this.tooltipContent},ref:\"tooltip\"})])])},computed:$n({table:function(){return this.$parent}},Pn({data:\"data\",columns:\"columns\",treeIndent:\"indent\",leftFixedLeafCount:\"fixedLeafColumnsLength\",rightFixedLeafCount:\"rightFixedLeafColumnsLength\",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length},hasExpandColumn:function(e){return e.columns.some(function(e){return\"expand\"===e.type})}}),{firstDefaultColumnIndex:function(){return Object(g.arrayFindIndex)(this.columns,function(e){return\"default\"===e.type})}}),watch:{\"store.states.hoverRow\":function(e,t){var n=this;if(this.store.states.isComplex&&!this.$isServer){var i=window.requestAnimationFrame;i||(i=function(e){return setTimeout(e,16)}),i(function(){var i=n.$el.querySelectorAll(\".el-table__row\"),r=i[t],o=i[e];r&&Object(pe.removeClass)(r,\"hover-row\"),o&&Object(pe.addClass)(o,\"hover-row\")})}}},data:function(){return{tooltipContent:\"\"}},created:function(){this.activateTooltip=I()(50,function(e){return e.handleShowPopper()})},methods:{getKeyOfRow:function(e,t){var n=this.table.rowKey;return n?xn(e,n):t},isColumnHidden:function(e){return!0===this.fixed||\"left\"===this.fixed?e>=this.leftFixedLeafCount:\"right\"===this.fixed?e<this.columnsCount-this.rightFixedLeafCount:e<this.leftFixedLeafCount||e>=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,n,i){var r=1,o=1,a=this.table.spanMethod;if(\"function\"==typeof a){var s=a({row:e,column:t,rowIndex:n,columnIndex:i});Array.isArray(s)?(r=s[0],o=s[1]):\"object\"===(void 0===s?\"undefined\":Fn(s))&&(r=s.rowspan,o=s.colspan)}return{rowspan:r,colspan:o}},getRowStyle:function(e,t){var n=this.table.rowStyle;return\"function\"==typeof n?n.call(null,{row:e,rowIndex:t}):n||null},getRowClass:function(e,t){var n=[\"el-table__row\"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&n.push(\"current-row\"),this.stripe&&t%2==1&&n.push(\"el-table__row--striped\");var i=this.table.rowClassName;return\"string\"==typeof i?n.push(i):\"function\"==typeof i&&n.push(i.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&n.push(\"expanded\"),n},getCellStyle:function(e,t,n,i){var r=this.table.cellStyle;return\"function\"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:n,column:i}):r},getCellClass:function(e,t,n,i){var r=[i.id,i.align,i.className];this.isColumnHidden(t)&&r.push(\"is-hidden\");var o=this.table.cellClassName;return\"string\"==typeof o?r.push(o):\"function\"==typeof o&&r.push(o.call(null,{rowIndex:e,columnIndex:t,row:n,column:i})),r.join(\" \")},getColspanRealWidth:function(e,t,n){return t<1?e[n].realWidth:e.map(function(e){return e.realWidth}).slice(n,n+t).reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var n=this.table,i=gn(e);if(i){var r=bn(n,i),o=n.hoverState={cell:i,column:r,row:t};n.$emit(\"cell-mouse-enter\",o.row,o.column,o.cell,e)}var a=e.target.querySelector(\".cell\");if(Object(pe.hasClass)(a,\"el-tooltip\")&&a.childNodes.length){var s=document.createRange();if(s.setStart(a,0),s.setEnd(a,a.childNodes.length),(s.getBoundingClientRect().width+((parseInt(Object(pe.getStyle)(a,\"paddingLeft\"),10)||0)+(parseInt(Object(pe.getStyle)(a,\"paddingRight\"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=i.innerText||i.textContent,l.referenceElm=i,l.$refs.popper&&(l.$refs.popper.style.display=\"none\"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),gn(e)){var n=this.table.hoverState||{};this.table.$emit(\"cell-mouse-leave\",n.row,n.column,n.cell,e)}},handleMouseEnter:I()(30,function(e){this.store.commit(\"setHoverRow\",e)}),handleMouseLeave:I()(30,function(){this.store.commit(\"setHoverRow\",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,\"contextmenu\")},handleDoubleClick:function(e,t){this.handleEvent(e,t,\"dblclick\")},handleClick:function(e,t){this.store.commit(\"setCurrentRow\",t),this.handleEvent(e,t,\"click\")},handleEvent:function(e,t,n){var i=this.table,r=gn(e),o=void 0;r&&(o=bn(i,r))&&i.$emit(\"cell-\"+n,t,o,r,e),i.$emit(\"row-\"+n,t,o,e)},rowRender:function(e,t,n){var i=this,r=this.$createElement,o=this.treeIndent,a=this.columns,s=this.firstDefaultColumnIndex,l=a.map(function(e,t){return i.isColumnHidden(t)}),u=this.getRowClass(e,t),c=!0;return n&&(u.push(\"el-table__row--level-\"+n.level),c=n.display),r(\"tr\",{style:[c?null:{display:\"none\"},this.getRowStyle(e,t)],class:u,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return i.handleDoubleClick(t,e)},click:function(t){return i.handleClick(t,e)},contextmenu:function(t){return i.handleContextMenu(t,e)},mouseenter:function(e){return i.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map(function(u,c){var h=i.getSpan(e,u,t,c),d=h.rowspan,f=h.colspan;if(!d||!f)return null;var p=$n({},u);p.realWidth=i.getColspanRealWidth(a,f,c);var g={store:i.store,_self:i.context||i.table.$vnode.context,column:p,row:e,$index:t};return c===s&&n&&(g.treeNode={indent:n.level*o,level:n.level},\"boolean\"==typeof n.expanded&&(g.treeNode.expanded=n.expanded,\"loading\"in n&&(g.treeNode.loading=n.loading),\"noLazyChildren\"in n&&(g.treeNode.noLazyChildren=n.noLazyChildren))),r(\"td\",{style:i.getCellStyle(t,c,e,u),class:i.getCellClass(t,c,e,u),attrs:{rowspan:d,colspan:f},on:{mouseenter:function(t){return i.handleCellMouseEnter(t,e)},mouseleave:i.handleCellMouseLeave}},[u.renderCell.call(i._renderProxy,i.$createElement,g,l[c])])})])},wrappedRowRender:function(e,t){var n=this,i=this.$createElement,r=this.store,o=r.isRowExpanded,a=r.assertRowKey,s=r.states,l=s.treeData,u=s.lazyTreeNodeMap,c=s.childrenColumnName,h=s.rowKey;if(this.hasExpandColumn&&o(e)){var d=this.table.renderExpanded,f=this.rowRender(e,t);return d?[[f,i(\"tr\",{key:\"expanded-row__\"+f.key},[i(\"td\",{attrs:{colspan:this.columnsCount},class:\"el-table__expanded-cell\"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error(\"[Element Error]renderExpanded is required.\"),f)}if(Object.keys(l).length){a();var p=xn(e,h),g=l[p],m=null;g&&(m={expanded:g.expanded,level:g.level,display:!0},\"boolean\"==typeof g.lazy&&(\"boolean\"==typeof g.loaded&&g.loaded&&(m.noLazyChildren=!(g.children&&g.children.length)),m.loading=g.loading));var v=[this.rowRender(e,t,m)];if(g){var y=0;g.display=!0,function e(i,r){i&&i.length&&r&&i.forEach(function(i){var o={display:r.display&&r.expanded,level:r.level+1},a=xn(i,h);if(void 0===a||null===a)throw new Error(\"for nested data item, row-key is required.\");if((g=$n({},l[a]))&&(o.expanded=g.expanded,g.level=g.level||o.level,g.display=!(!g.expanded||!o.display),\"boolean\"==typeof g.lazy&&(\"boolean\"==typeof g.loaded&&g.loaded&&(o.noLazyChildren=!(g.children&&g.children.length)),o.loading=g.loading)),y++,v.push(n.rowRender(i,t+y,o)),g){var s=u[a]||i[c];e(s,g)}})}(u[p]||e[c],g)}return v}return this.rowRender(e,t)}}},jn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"}},[e.multiple?n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleOutsideClick,expression:\"handleOutsideClick\"},{name:\"show\",rawName:\"v-show\",value:e.showPopper,expression:\"showPopper\"}],staticClass:\"el-table-filter\"},[n(\"div\",{staticClass:\"el-table-filter__content\"},[n(\"el-scrollbar\",{attrs:{\"wrap-class\":\"el-table-filter__wrap\"}},[n(\"el-checkbox-group\",{staticClass:\"el-table-filter__checkbox-group\",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:\"filteredValue\"}},e._l(e.filters,function(t){return n(\"el-checkbox\",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),n(\"div\",{staticClass:\"el-table-filter__bottom\"},[n(\"button\",{class:{\"is-disabled\":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t(\"el.table.confirmFilter\")))]),n(\"button\",{on:{click:e.handleReset}},[e._v(e._s(e.t(\"el.table.resetFilter\")))])])]):n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleOutsideClick,expression:\"handleOutsideClick\"},{name:\"show\",rawName:\"v-show\",value:e.showPopper,expression:\"showPopper\"}],staticClass:\"el-table-filter\"},[n(\"ul\",{staticClass:\"el-table-filter__list\"},[n(\"li\",{staticClass:\"el-table-filter__list-item\",class:{\"is-active\":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t(\"el.table.clearFilter\")))]),e._l(e.filters,function(t){return n(\"li\",{key:t.value,staticClass:\"el-table-filter__list-item\",class:{\"is-active\":e.isActive(t)},attrs:{label:t.value},on:{click:function(n){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])};jn._withStripped=!0;var Hn=[];!fn.a.prototype.$isServer&&document.addEventListener(\"click\",function(e){Hn.forEach(function(t){var n=e.target;t&&t.$el&&(n===t.$el||t.$el.contains(n)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Wn=function(e){e&&Hn.push(e)},qn=function(e){-1!==Hn.indexOf(e)&&Hn.splice(e,1)},Gn=n(32),Un=n.n(Gn),Yn=r({name:\"ElTableFilterPanel\",mixins:[N.a,p.a],directives:{Clickoutside:E.a},components:{ElCheckbox:an.a,ElCheckboxGroup:Un.a,ElScrollbar:B.a},props:{placement:{type:String,default:\"bottom-end\"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,void 0!==e&&null!==e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit(\"filterChange\",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(void 0!==e&&null!==e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener(\"scroll\",function(){e.updatePopper()}),this.$watch(\"showPopper\",function(t){e.column&&(e.column.filterOpened=t),t?Wn(e):qn(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)<b.PopupManager.zIndex&&(this.popperJS._popper.style.zIndex=b.PopupManager.nextZIndex())}}},jn,[],!1,null,null,null);Yn.options.__file=\"packages/table/src/filter-panel.vue\";var Xn=Yn.exports,Kn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Zn=function(e){var t=1;e.forEach(function(e){e.level=1,function e(n,i){if(i&&(n.level=i.level+1,t<n.level&&(t=n.level)),n.children){var r=0;n.children.forEach(function(t){e(t,n),r+=t.colSpan}),n.colSpan=r}else n.colSpan=1}(e)});for(var n=[],i=0;i<t;i++)n.push([]);return function e(t){var n=[];return t.forEach(function(t){t.children?(n.push(t),n.push.apply(n,e(t.children))):n.push(t)}),n}(e).forEach(function(e){e.children?e.rowSpan=1:e.rowSpan=t-e.level+1,n[e.level-1].push(e)}),n},Jn={name:\"ElTableHeader\",mixins:[zn],render:function(e){var t=this,n=this.store.states.originColumns,i=Zn(n,this.columns),r=i.length>1;return r&&(this.$parent.isGroup=!0),e(\"table\",{class:\"el-table__header\",attrs:{cellspacing:\"0\",cellpadding:\"0\",border:\"0\"}},[e(\"colgroup\",[this.columns.map(function(t){return e(\"col\",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e(\"col\",{attrs:{name:\"gutter\"}}):\"\"]),e(\"thead\",{class:[{\"is-group\":r,\"has-gutter\":this.hasGutter}]},[this._l(i,function(n,i){return e(\"tr\",{style:t.getHeaderRowStyle(i),class:t.getHeaderRowClass(i)},[n.map(function(r,o){return e(\"th\",{attrs:{colspan:r.colSpan,rowspan:r.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,r)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,r)},click:function(e){return t.handleHeaderClick(e,r)},contextmenu:function(e){return t.handleHeaderContextMenu(e,r)}},style:t.getHeaderCellStyle(i,o,n,r),class:t.getHeaderCellClass(i,o,n,r),key:r.id},[e(\"div\",{class:[\"cell\",r.filteredValue&&r.filteredValue.length>0?\"highlight\":\"\",r.labelClassName]},[r.renderHeader?r.renderHeader.call(t._renderProxy,e,{column:r,$index:o,store:t.store,_self:t.$parent.$vnode.context}):r.label,r.sortable?e(\"span\",{class:\"caret-wrapper\",on:{click:function(e){return t.handleSortClick(e,r)}}},[e(\"i\",{class:\"sort-caret ascending\",on:{click:function(e){return t.handleSortClick(e,r,\"ascending\")}}}),e(\"i\",{class:\"sort-caret descending\",on:{click:function(e){return t.handleSortClick(e,r,\"descending\")}}})]):\"\",r.filterable?e(\"span\",{class:\"el-table__column-filter-trigger\",on:{click:function(e){return t.handleFilterClick(e,r)}}},[e(\"i\",{class:[\"el-icon-arrow-down\",r.filterOpened?\"el-icon-arrow-up\":\"\"]})]):\"\"])])}),t.hasGutter?e(\"th\",{class:\"gutter\"}):\"\"])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:\"\",order:\"\"}}}},components:{ElCheckbox:an.a},computed:Kn({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Pn({columns:\"columns\",isAllSelected:\"isAllSelected\",leftFixedLeafCount:\"fixedLeafColumnsLength\",rightFixedLeafCount:\"rightFixedLeafColumnsLength\",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick(function(){var t=e.defaultSort,n=t.prop,i=t.order;e.store.commit(\"sort\",{prop:n,order:i,init:!0})})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var n=0,i=0;i<e;i++)n+=t[i].colSpan;var r=n+t[e].colSpan-1;return!0===this.fixed||\"left\"===this.fixed?r>=this.leftFixedLeafCount:\"right\"===this.fixed?n<this.columnsCount-this.rightFixedLeafCount:r<this.leftFixedLeafCount||n>=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return\"function\"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],n=this.table.headerRowClassName;return\"string\"==typeof n?t.push(n):\"function\"==typeof n&&t.push(n.call(null,{rowIndex:e})),t.join(\" \")},getHeaderCellStyle:function(e,t,n,i){var r=this.table.headerCellStyle;return\"function\"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:n,column:i}):r},getHeaderCellClass:function(e,t,n,i){var r=[i.id,i.order,i.headerAlign,i.className,i.labelClassName];0===e&&this.isCellHidden(t,n)&&r.push(\"is-hidden\"),i.children||r.push(\"is-leaf\"),i.sortable&&r.push(\"is-sortable\");var o=this.table.headerCellClassName;return\"string\"==typeof o?r.push(o):\"function\"==typeof o&&r.push(o.call(null,{rowIndex:e,columnIndex:t,row:n,column:i})),r.join(\" \")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit(\"toggleAllSelection\")},handleFilterClick:function(e,t){e.stopPropagation();var n=e.target,i=\"TH\"===n.tagName?n:n.parentNode;if(!Object(pe.hasClass)(i,\"noclick\")){i=i.querySelector(\".el-table__column-filter-trigger\")||i;var r=this.$parent,o=this.filterPanels[t.id];o&&t.filterOpened?o.showPopper=!1:(o||(o=new fn.a(Xn),this.filterPanels[t.id]=o,t.filterPlacement&&(o.placement=t.filterPlacement),o.table=r,o.cell=i,o.column=t,!this.$isServer&&o.$mount(document.createElement(\"div\"))),setTimeout(function(){o.showPopper=!0},16))}},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit(\"header-click\",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit(\"header-contextmenu\",t,e)},handleMouseDown:function(e,t){var n=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var i=this.$parent,r=i.$el.getBoundingClientRect().left,o=this.$el.querySelector(\"th.\"+t.id),a=o.getBoundingClientRect(),s=a.left-r+30;Object(pe.addClass)(o,\"noclick\"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-r,startColumnLeft:a.left-r,tableLeft:r};var l=i.$refs.resizeProxy;l.style.left=this.dragState.startLeft+\"px\",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var u=function(e){var t=e.clientX-n.dragState.startMouseLeft,i=n.dragState.startLeft+t;l.style.left=Math.max(s,i)+\"px\"};document.addEventListener(\"mousemove\",u),document.addEventListener(\"mouseup\",function r(){if(n.dragging){var a=n.dragState,s=a.startColumnLeft,c=a.startLeft,h=parseInt(l.style.left,10)-s;t.width=t.realWidth=h,i.$emit(\"header-dragend\",t.width,c-s,t,e),n.store.scheduleLayout(),document.body.style.cursor=\"\",n.dragging=!1,n.draggingColumn=null,n.dragState={},i.resizeProxyVisible=!1}document.removeEventListener(\"mousemove\",u),document.removeEventListener(\"mouseup\",r),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){Object(pe.removeClass)(o,\"noclick\")},0)})}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var n=e.target;n&&\"TH\"!==n.tagName;)n=n.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var i=n.getBoundingClientRect(),r=document.body.style;i.width>12&&i.right-e.pageX<8?(r.cursor=\"col-resize\",Object(pe.hasClass)(n,\"is-sortable\")&&(n.style.cursor=\"col-resize\"),this.draggingColumn=t):this.dragging||(r.cursor=\"\",Object(pe.hasClass)(n,\"is-sortable\")&&(n.style.cursor=\"pointer\"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor=\"\")},toggleOrder:function(e){var t=e.order,n=e.sortOrders;if(\"\"===t)return n[0];var i=n.indexOf(t||null);return n[i>n.length-2?0:i+1]},handleSortClick:function(e,t,n){e.stopPropagation();for(var i=t.order===n?null:n||this.toggleOrder(t),r=e.target;r&&\"TH\"!==r.tagName;)r=r.parentNode;if(r&&\"TH\"===r.tagName&&Object(pe.hasClass)(r,\"noclick\"))Object(pe.removeClass)(r,\"noclick\");else if(t.sortable){var o=this.store.states,a=o.sortProp,s=void 0,l=o.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),o.sortingColumn=t,a=t.property),s=t.order=i||null,o.sortProp=a,o.sortOrder=s,this.store.commit(\"changeSortCondition\")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Qn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ei={name:\"ElTableFooter\",mixins:[zn],render:function(e){var t=this,n=[];return this.summaryMethod?n=this.summaryMethod({columns:this.columns,data:this.store.states.data}):this.columns.forEach(function(e,i){if(0!==i){var r=t.store.states.data.map(function(t){return Number(t[e.property])}),o=[],a=!0;r.forEach(function(e){if(!isNaN(e)){a=!1;var t=(\"\"+e).split(\".\")[1];o.push(t?t.length:0)}});var s=Math.max.apply(null,o);n[i]=a?\"\":r.reduce(function(e,t){var n=Number(t);return isNaN(n)?e:parseFloat((e+t).toFixed(Math.min(s,20)))},0)}else n[i]=t.sumText}),e(\"table\",{class:\"el-table__footer\",attrs:{cellspacing:\"0\",cellpadding:\"0\",border:\"0\"}},[e(\"colgroup\",[this.columns.map(function(t){return e(\"col\",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e(\"col\",{attrs:{name:\"gutter\"}}):\"\"]),e(\"tbody\",{class:[{\"has-gutter\":this.hasGutter}]},[e(\"tr\",[this.columns.map(function(i,r){return e(\"td\",{key:r,attrs:{colspan:i.colSpan,rowspan:i.rowSpan},class:t.getRowClasses(i,r)},[e(\"div\",{class:[\"cell\",i.labelClassName]},[n[r]])])}),this.hasGutter?e(\"th\",{class:\"gutter\"}):\"\"])])])},props:{fixed:String,store:{required:!0},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:function(){return{prop:\"\",order:\"\"}}}},computed:Qn({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Pn({columns:\"columns\",isAllSelected:\"isAllSelected\",leftFixedLeafCount:\"fixedLeafColumnsLength\",rightFixedLeafCount:\"rightFixedLeafColumnsLength\",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),methods:{isCellHidden:function(e,t,n){if(!0===this.fixed||\"left\"===this.fixed)return e>=this.leftFixedLeafCount;if(\"right\"===this.fixed){for(var i=0,r=0;r<e;r++)i+=t[r].colSpan;return i<this.columnsCount-this.rightFixedLeafCount}return!(this.fixed||!n.fixed)||(e<this.leftFixedCount||e>=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var n=[e.id,e.align,e.labelClassName];return e.className&&n.push(e.className),this.isCellHidden(t,this.columns,e)&&n.push(\"is-hidden\"),e.children||n.push(\"is-leaf\"),n}}},ti=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ni=1,ii=r({name:\"ElTable\",mixins:[p.a,w.a],directives:{Mousewheel:hn},props:{data:{type:Array,default:function(){return[]}},size:String,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],context:{},showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:function(){return{hasChildren:\"hasChildren\",children:\"children\"}}},lazy:Boolean,load:Function},components:{TableHeader:Jn,TableFooter:ei,TableBody:Vn,ElCheckbox:an.a},methods:{getMigratingConfig:function(){return{events:{expand:\"expand is renamed to expand-change\"}}},setCurrentRow:function(e){this.store.commit(\"setCurrentRow\",e)},toggleRowSelection:function(e,t){this.store.toggleRowSelection(e,t,!1),this.store.updateAllSelected()},toggleRowExpansion:function(e,t){this.store.toggleRowExpansionAdapter(e,t)},clearSelection:function(){this.store.clearSelection()},clearFilter:function(e){this.store.clearFilter(e)},clearSort:function(){this.store.clearSort()},handleMouseLeave:function(){this.store.commit(\"setHoverRow\",null),this.hoverState&&(this.hoverState=null)},updateScrollY:function(){this.layout.updateScrollY()&&(this.layout.notifyObservers(\"scrollable\"),this.layout.updateColumnsWidth())},handleFixedMousewheel:function(e,t){var n=this.bodyWrapper;if(Math.abs(t.spinY)>0){var i=n.scrollTop;t.pixelY<0&&0!==i&&e.preventDefault(),t.pixelY>0&&n.scrollHeight-n.clientHeight>i&&e.preventDefault(),n.scrollTop+=Math.ceil(t.pixelY/5)}else n.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var n=t.pixelX,i=t.pixelY;Math.abs(n)>=Math.abs(i)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(sn.throttle)(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,n=e.scrollTop,i=e.offsetWidth,r=e.scrollWidth,o=this.$refs,a=o.headerWrapper,s=o.footerWrapper,l=o.fixedBodyWrapper,u=o.rightFixedBodyWrapper;a&&(a.scrollLeft=t),s&&(s.scrollLeft=t),l&&(l.scrollTop=n),u&&(u.scrollTop=n);var c=r-i-1;this.scrollPosition=t>=c?\"right\":0===t?\"left\":\"middle\"}),bindEvents:function(){this.bodyWrapper.addEventListener(\"scroll\",this.syncPostion,{passive:!0}),this.fit&&Object(Rt.addResizeListener)(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener(\"scroll\",this.syncPostion,{passive:!0}),this.fit&&Object(Rt.removeResizeListener)(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,n=this.resizeState,i=n.width,r=n.height,o=t.offsetWidth;i!==o&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&r!==a&&(e=!0),e&&(this.resizeState.width=o,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit(\"sort\",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit(\"toggleAllSelection\")}},computed:ti({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,n=e.scrollY,i=e.gutterWidth;return t?t-(n?i:0)+\"px\":\"\"},bodyHeight:function(){var e=this.layout,t=e.headerHeight,n=void 0===t?0:t,i=e.bodyHeight,r=e.footerHeight,o=void 0===r?0:r;if(this.height)return{height:i?i+\"px\":\"\"};if(this.maxHeight){var a=Sn(this.maxHeight);if(\"number\"==typeof a)return{\"max-height\":a-o-(this.showHeader?n:0)+\"px\"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+\"px\":\"\"};if(this.maxHeight){var e=Sn(this.maxHeight);if(\"number\"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{\"max-height\":(e-=this.layout.footerHeight)+\"px\"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+\"px\":\"\"}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+\"px\":\"\"}:{height:this.layout.viewportHeight?this.layout.viewportHeight+\"px\":\"\"}},emptyBlockStyle:function(){if(this.data&&this.data.length)return null;var e=\"100%\";return this.layout.appendHeight&&(e=\"calc(100% - \"+this.layout.appendHeight+\"px)\"),{width:this.bodyWidth,height:e}}},Pn({selection:\"selection\",columns:\"columns\",tableData:\"data\",fixedColumns:\"fixedColumns\",rightFixedColumns:\"rightFixedColumns\"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit(\"setData\",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId=\"el-table_\"+ni++,this.debouncedUpdateLayout=Object(sn.debounce)(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit(\"filterChange\",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,n=void 0===t?\"hasChildren\":t,i=e.children,r=void 0===i?\"children\":i;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error(\"Table is required.\");var n=new Ln;return n.table=e,n.toggleAllSelection=I()(10,n._toggleAllSelection),Object.keys(t).forEach(function(e){n.states[e]=t[e]}),n}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:n,childrenColumnName:r}),{layout:new Bn({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:\"left\"}}},rn,[],!1,null,null,null);ii.options.__file=\"packages/table/src/table.vue\";var ri=ii.exports;ri.install=function(e){e.component(ri.name,ri)};var oi=ri,ai={default:{order:\"\"},selection:{width:48,minWidth:48,realWidth:48,order:\"\",className:\"el-table-column--selection\"},expand:{width:48,minWidth:48,realWidth:48,order:\"\"},index:{width:48,minWidth:48,realWidth:48,order:\"\"}},si={selection:{renderHeader:function(e,t){var n=t.store;return e(\"el-checkbox\",{attrs:{disabled:n.states.data&&0===n.states.data.length,indeterminate:n.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var n=t.row,i=t.column,r=t.store,o=t.$index;return e(\"el-checkbox\",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:r.isSelected(n),disabled:!!i.selectable&&!i.selectable.call(null,n,o)},on:{input:function(){r.commit(\"rowSelectedChanged\",n)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||\"#\"},renderCell:function(e,t){var n=t.$index,i=n+1,r=t.column.index;return\"number\"==typeof r?i=n+r:\"function\"==typeof r&&(i=r(n)),e(\"div\",[i])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||\"\"},renderCell:function(e,t){var n=t.row,i=t.store,r=[\"el-table__expand-icon\"];i.states.expandRows.indexOf(n)>-1&&r.push(\"el-table__expand-icon--expanded\");return e(\"div\",{class:r,on:{click:function(e){e.stopPropagation(),i.toggleRowExpansion(n)}}},[e(\"i\",{class:\"el-icon el-icon-arrow-right\"})])},sortable:!1,resizable:!1,className:\"el-table__expand-column\"}};function li(e,t){var n=t.row,i=t.column,r=t.$index,o=i.property,a=o&&Object(g.getPropByPath)(n,o).v;return i&&i.formatter?i.formatter(n,i,a,r):a}var ui=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},ci=1,hi={name:\"ElTableColumn\",props:{type:{type:String,default:\"default\"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{},minWidth:{},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showTooltipWhenOverflow:Boolean,showOverflowTooltip:Boolean,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},index:[Number,Function],sortOrders:{type:Array,default:function(){return[\"ascending\",\"descending\",null]},validator:function(e){return e.every(function(e){return[\"ascending\",\"descending\",null].indexOf(e)>-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return Cn(this.width)},realMinWidth:function(){return void 0!==(e=this.minWidth)&&(e=Cn(e),isNaN(e)&&(e=80)),e;var e},realAlign:function(){return this.align?\"is-\"+this.align:null},realHeaderAlign:function(){return this.headerAlign?\"is-\"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.reduce(function(t,n){return Array.isArray(n)&&n.forEach(function(n){t[n]=e[n]}),t},{})},getColumnElIndex:function(e,t){return[].indexOf.call(e,t)},setColumnWidth:function(e){return this.realWidth&&(e.width=this.realWidth),this.realMinWidth&&(e.minWidth=this.realMinWidth),e.minWidth||(e.minWidth=80),e.realWidth=void 0===e.width?e.minWidth:e.width,e},setColumnForcedProps:function(e){var t=e.type,n=si[t]||{};return Object.keys(n).forEach(function(t){var i=n[t];void 0!==i&&(e[t]=\"className\"===t?e[t]+\" \"+i:i)}),e},setColumnRenders:function(e){var t=this;this.$createElement;this.renderHeader?console.warn(\"[Element Warn][TableColumn]Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header.\"):\"selection\"!==e.type&&(e.renderHeader=function(n,i){var r=t.$scopedSlots.header;return r?r(i):e.label});var n=e.renderCell;return\"expand\"===e.type?(e.renderCell=function(e,t){return e(\"div\",{class:\"cell\"},[n(e,t)])},this.owner.renderExpanded=function(e,n){return t.$scopedSlots.default?t.$scopedSlots.default(n):t.$slots.default}):(n=n||li,e.renderCell=function(i,r){var o=null;o=t.$scopedSlots.default?t.$scopedSlots.default(r):n(i,r);var a=function(e,t){var n=t.row,i=t.treeNode,r=t.store;if(!i)return null;var o=[];if(i.indent&&o.push(e(\"span\",{class:\"el-table__indent\",style:{\"padding-left\":i.indent+\"px\"}})),\"boolean\"!=typeof i.expanded||i.noLazyChildren)o.push(e(\"span\",{class:\"el-table__placeholder\"}));else{var a=[\"el-table__expand-icon\",i.expanded?\"el-table__expand-icon--expanded\":\"\"],s=[\"el-icon-arrow-right\"];i.loading&&(s=[\"el-icon-loading\"]),o.push(e(\"div\",{class:a,on:{click:function(e){e.stopPropagation(),r.loadOrToggle(n)}}},[e(\"i\",{class:s})]))}return o}(i,r),s={class:\"cell\",style:{}};return e.showOverflowTooltip&&(s.class+=\" el-tooltip\",s.style={width:(r.column.realWidth||r.column.width)-1+\"px\"}),i(\"div\",s,[a,o])}),e},registerNormalWatchers:function(){var e=this,t={prop:\"property\",realAlign:\"align\",realHeaderAlign:\"headerAlign\",realWidth:\"width\"},n=[\"label\",\"property\",\"filters\",\"filterMultiple\",\"sortable\",\"index\",\"formatter\",\"className\",\"labelClassName\",\"showOverflowTooltip\"].reduce(function(e,t){return e[t]=t,e},t);Object.keys(n).forEach(function(n){var i=t[n];e.$watch(n,function(t){e.columnConfig[i]=t})})},registerComplexWatchers:function(){var e=this,t={realWidth:\"width\",realMinWidth:\"minWidth\"},n=[\"fixed\"].reduce(function(e,t){return e[t]=t,e},t);Object.keys(n).forEach(function(n){var i=t[n];e.$watch(n,function(t){e.columnConfig[i]=t;var n=\"fixed\"===i;e.owner.store.scheduleLayout(n)})})}},components:{ElCheckbox:an.a},beforeCreate:function(){this.row={},this.column={},this.$index=0,this.columnId=\"\"},created:function(){var e=this.columnOrTableParent;this.isSubColumn=this.owner!==e,this.columnId=(e.tableId||e.columnId)+\"_column_\"+ci++;var t=this.type||\"default\",n=\"\"===this.sortable||this.sortable,i=ui({},ai[t],{id:this.columnId,type:t,property:this.prop||this.property,align:this.realAlign,headerAlign:this.realHeaderAlign,showOverflowTooltip:this.showOverflowTooltip||this.showTooltipWhenOverflow,filterable:this.filters||this.filterMethod,filteredValue:[],filterPlacement:\"\",isColumnGroup:!1,filterOpened:!1,sortable:n,index:this.index}),r=this.getPropsData([\"columnKey\",\"label\",\"className\",\"labelClassName\",\"type\",\"renderHeader\",\"formatter\",\"fixed\",\"resizable\"],[\"sortMethod\",\"sortBy\",\"sortOrders\"],[\"selectable\",\"reserveSelection\"],[\"filterMethod\",\"filters\",\"filterMultiple\",\"filterOpened\",\"filteredValue\",\"filterPlacement\"]);r=function(e,t){var n={},i=void 0;for(i in e)n[i]=e[i];for(i in t)if(wn(t,i)){var r=t[i];void 0!==r&&(n[i]=r)}return n}(i,r),r=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}(this.setColumnRenders,this.setColumnWidth,this.setColumnForcedProps)(r),this.columnConfig=r,this.registerNormalWatchers(),this.registerComplexWatchers()},mounted:function(){var e=this.owner,t=this.columnOrTableParent,n=this.isSubColumn?t.$el.children:t.$refs.hiddenColumns.children,i=this.getColumnElIndex(n,this.$el);e.store.commit(\"insertColumn\",this.columnConfig,i,this.isSubColumn?t.columnConfig:null)},destroyed:function(){if(this.$parent){var e=this.$parent;this.owner.store.commit(\"removeColumn\",this.columnConfig,this.isSubColumn?e.columnConfig:null)}},render:function(e){return e(\"div\",this.$slots.default)},install:function(e){e.component(hi.name,hi)}},di=hi,fi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.ranged?n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleClose,expression:\"handleClose\"}],ref:\"reference\",staticClass:\"el-date-editor el-range-editor el-input__inner\",class:[\"el-date-editor--\"+e.type,e.pickerSize?\"el-range-editor--\"+e.pickerSize:\"\",e.pickerDisabled?\"is-disabled\":\"\",e.pickerVisible?\"is-active\":\"\"],on:{click:e.handleRangeClick,mouseenter:e.handleMouseEnter,mouseleave:function(t){e.showClose=!1},keydown:e.handleKeydown}},[n(\"i\",{class:[\"el-input__icon\",\"el-range__icon\",e.triggerClass]}),n(\"input\",e._b({staticClass:\"el-range-input\",attrs:{autocomplete:\"off\",placeholder:e.startPlaceholder,disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,name:e.name&&e.name[0]},domProps:{value:e.displayValue&&e.displayValue[0]},on:{input:e.handleStartInput,change:e.handleStartChange,focus:e.handleFocus}},\"input\",e.firstInputId,!1)),e._t(\"range-separator\",[n(\"span\",{staticClass:\"el-range-separator\"},[e._v(e._s(e.rangeSeparator))])]),n(\"input\",e._b({staticClass:\"el-range-input\",attrs:{autocomplete:\"off\",placeholder:e.endPlaceholder,disabled:e.pickerDisabled,readonly:!e.editable||e.readonly,name:e.name&&e.name[1]},domProps:{value:e.displayValue&&e.displayValue[1]},on:{input:e.handleEndInput,change:e.handleEndChange,focus:e.handleFocus}},\"input\",e.secondInputId,!1)),e.haveTrigger?n(\"i\",{staticClass:\"el-input__icon el-range__close-icon\",class:[e.showClose?\"\"+e.clearIcon:\"\"],on:{click:e.handleClickIcon}}):e._e()],2):n(\"el-input\",e._b({directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleClose,expression:\"handleClose\"}],ref:\"reference\",staticClass:\"el-date-editor\",class:\"el-date-editor--\"+e.type,attrs:{readonly:!e.editable||e.readonly||\"dates\"===e.type||\"week\"===e.type,disabled:e.pickerDisabled,size:e.pickerSize,name:e.name,placeholder:e.placeholder,value:e.displayValue,validateEvent:!1},on:{focus:e.handleFocus,input:function(t){return e.userInput=t},change:e.handleChange},nativeOn:{keydown:function(t){return e.handleKeydown(t)},mouseenter:function(t){return e.handleMouseEnter(t)},mouseleave:function(t){e.showClose=!1}}},\"el-input\",e.firstInputId,!1),[n(\"i\",{staticClass:\"el-input__icon\",class:e.triggerClass,attrs:{slot:\"prefix\"},on:{click:e.handleFocus},slot:\"prefix\"}),e.haveTrigger?n(\"i\",{staticClass:\"el-input__icon\",class:[e.showClose?\"\"+e.clearIcon:\"\"],attrs:{slot:\"suffix\"},on:{click:e.handleClickIcon},slot:\"suffix\"}):e._e()])};fi._withStripped=!0;var pi=n(0),gi={props:{appendToBody:N.a.props.appendToBody,offset:N.a.props.offset,boundariesPadding:N.a.props.boundariesPadding,arrowOffset:N.a.props.arrowOffset},methods:N.a.methods,data:function(){return Ve()({visibleArrow:!0},N.a.data)},beforeDestroy:N.a.beforeDestroy},mi={date:\"yyyy-MM-dd\",month:\"yyyy-MM\",datetime:\"yyyy-MM-dd HH:mm:ss\",time:\"HH:mm:ss\",week:\"yyyywWW\",timerange:\"HH:mm:ss\",daterange:\"yyyy-MM-dd\",monthrange:\"yyyy-MM\",datetimerange:\"yyyy-MM-dd HH:mm:ss\",year:\"yyyy\"},vi=[\"date\",\"datetime\",\"time\",\"time-select\",\"week\",\"month\",\"year\",\"daterange\",\"monthrange\",\"timerange\",\"datetimerange\",\"dates\"],yi=function(e,t){return\"timestamp\"===t?e.getTime():Object(pi.formatDate)(e,t)},bi=function(e,t){return\"timestamp\"===t?new Date(Number(e)):Object(pi.parseDate)(e,t)},xi=function(e,t){if(Array.isArray(e)&&2===e.length){var n=e[0],i=e[1];if(n&&i)return[yi(n,t),yi(i,t)]}return\"\"},_i=function(e,t,n){if(Array.isArray(e)||(e=e.split(n)),2===e.length){var i=e[0],r=e[1];return[bi(i,t),bi(r,t)]}return[]},wi={default:{formatter:function(e){return e?\"\"+e:\"\"},parser:function(e){return void 0===e||\"\"===e?null:e}},week:{formatter:function(e,t){var n=Object(pi.getWeekNumber)(e),i=e.getMonth(),r=new Date(e);1===n&&11===i&&(r.setHours(0,0,0,0),r.setDate(r.getDate()+3-(r.getDay()+6)%7));var o=Object(pi.formatDate)(r,t);return o=/WW/.test(o)?o.replace(/WW/,n<10?\"0\"+n:n):o.replace(/W/,n)},parser:function(e,t){return wi.date.parser(e,t)}},date:{formatter:yi,parser:bi},datetime:{formatter:yi,parser:bi},daterange:{formatter:xi,parser:_i},monthrange:{formatter:xi,parser:_i},datetimerange:{formatter:xi,parser:_i},timerange:{formatter:xi,parser:_i},time:{formatter:yi,parser:bi},month:{formatter:yi,parser:bi},year:{formatter:yi,parser:bi},number:{formatter:function(e){return e?\"\"+e:\"\"},parser:function(e){var t=Number(e);return isNaN(e)?null:t}},dates:{formatter:function(e,t){return e.map(function(e){return yi(e,t)})},parser:function(e,t){return(\"string\"==typeof e?e.split(\", \"):e).map(function(e){return e instanceof Date?e:bi(e,t)})}}},Ci={left:\"bottom-start\",center:\"bottom\",right:\"bottom-end\"},Si=function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"-\";return e?(0,(wi[n]||wi.default).parser)(e,t||mi[n],i):null},ki=function(e,t,n){return e?(0,(wi[n]||wi.default).formatter)(e,t||mi[n]):null},Ti=function(e,t){var n=function(e,t){var n=e instanceof Date,i=t instanceof Date;return n&&i?e.getTime()===t.getTime():!n&&!i&&e===t},i=e instanceof Array,r=t instanceof Array;return i&&r?e.length===t.length&&e.every(function(e,i){return n(e,t[i])}):!i&&!r&&n(e,t)},Mi=function(e){return\"string\"==typeof e||e instanceof String},Di=function(e){return null===e||void 0===e||Mi(e)||Array.isArray(e)&&2===e.length&&e.every(Mi)},Ai=r({mixins:[S.a,gi],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:\"el-icon-circle-close\"},name:{default:\"\",validator:Di},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:\"\",validator:Di},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:\"left\"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:\"-\"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:d.a},directives:{Clickoutside:E.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.blur\"),this.$emit(\"blur\",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Ti(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch(\"ElFormItem\",\"el.form.change\",e)}},computed:{ranged:function(){return this.type.indexOf(\"range\")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll(\"input\")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,n=e.length;t<n;t++)if(e[t])return!1}else if(e)return!1;return!0},triggerClass:function(){return this.prefixIcon||(-1!==this.type.indexOf(\"time\")?\"el-icon-time\":\"el-icon-date\")},selectionMode:function(){return\"week\"===this.type?\"week\":\"month\"===this.type?\"month\":\"year\"===this.type?\"year\":\"dates\"===this.type?\"dates\":\"day\"},haveTrigger:function(){return void 0!==this.showTrigger?this.showTrigger:-1!==vi.indexOf(this.type)},displayValue:function(){var e=ki(this.parsedValue,this.format,this.type,this.rangeSeparator);return Array.isArray(this.userInput)?[this.userInput[0]||e&&e[0]||\"\",this.userInput[1]||e&&e[1]||\"\"]:null!==this.userInput?this.userInput:e?\"dates\"===this.type?e.join(\", \"):e:\"\"},parsedValue:function(){return this.value?\"time-select\"===this.type?this.value:Object(pi.isDateObject)(this.value)||Array.isArray(this.value)&&this.value.every(pi.isDateObject)?this.value:this.valueFormat?Si(this.value,this.valueFormat,this.type,this.rangeSeparator)||this.value:Array.isArray(this.value)?this.value.map(function(e){return new Date(e)}):new Date(this.value):this.value},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},pickerSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},pickerDisabled:function(){return this.disabled||(this.elForm||{}).disabled},firstInputId:function(){var e={},t=void 0;return(t=this.ranged?this.id&&this.id[0]:this.id)&&(e.id=t),e},secondInputId:function(){var e={},t=void 0;return this.ranged&&(t=this.id&&this.id[1]),t&&(e.id=t),e}},created:function(){this.popperOptions={boundariesPadding:0,gpuAcceleration:!1},this.placement=Ci[this.align]||Ci.left,this.$on(\"fieldReset\",this.handleFieldReset)},methods:{focus:function(){this.ranged?this.handleFocus():this.$refs.reference.focus()},blur:function(){this.refInput.forEach(function(e){return e.blur()})},parseValue:function(e){var t=Object(pi.isDateObject)(e)||Array.isArray(e)&&e.every(pi.isDateObject);return this.valueFormat&&!t&&Si(e,this.valueFormat,this.type,this.rangeSeparator)||e},formatToValue:function(e){var t=Object(pi.isDateObject)(e)||Array.isArray(e)&&e.every(pi.isDateObject);return this.valueFormat&&t?ki(e,this.valueFormat,this.type,this.rangeSeparator):e},parseString:function(e){var t=Array.isArray(e)?this.type:this.type.replace(\"range\",\"\");return Si(e,this.format,t)},formatToString:function(e){var t=Array.isArray(e)?this.type:this.type.replace(\"range\",\"\");return ki(e,this.format,t)},handleMouseEnter:function(){this.readonly||this.pickerDisabled||!this.valueIsEmpty&&this.clearable&&(this.showClose=!0)},handleChange:function(){if(this.userInput){var e=this.parseString(this.displayValue);e&&(this.picker.value=e,this.isValidValue(e)&&(this.emitInput(e),this.userInput=null))}\"\"===this.userInput&&(this.emitInput(null),this.emitChange(null),this.userInput=null)},handleStartInput:function(e){this.userInput?this.userInput=[e.target.value,this.userInput[1]]:this.userInput=[e.target.value,null]},handleEndInput:function(e){this.userInput?this.userInput=[this.userInput[0],e.target.value]:this.userInput=[null,e.target.value]},handleStartChange:function(e){var t=this.parseString(this.userInput&&this.userInput[0]);if(t){this.userInput=[this.formatToString(t),this.displayValue[1]];var n=[t,this.picker.value&&this.picker.value[1]];this.picker.value=n,this.isValidValue(n)&&(this.emitInput(n),this.userInput=null)}},handleEndChange:function(e){var t=this.parseString(this.userInput&&this.userInput[1]);if(t){this.userInput=[this.displayValue[0],this.formatToString(t)];var n=[this.picker.value&&this.picker.value[0],t];this.picker.value=n,this.isValidValue(n)&&(this.emitInput(n),this.userInput=null)}},handleClickIcon:function(e){this.readonly||this.pickerDisabled||(this.showClose?(this.valueOnOpen=this.value,e.stopPropagation(),this.emitInput(null),this.emitChange(null),this.showClose=!1,this.picker&&\"function\"==typeof this.picker.handleClear&&this.picker.handleClear()):this.pickerVisible=!this.pickerVisible)},handleClose:function(){if(this.pickerVisible&&(this.pickerVisible=!1,\"dates\"===this.type)){var e=Si(this.valueOnOpen,this.valueFormat,this.type,this.rangeSeparator)||this.valueOnOpen;this.emitInput(e)}},handleFieldReset:function(e){this.userInput=\"\"===e?null:e},handleFocus:function(){var e=this.type;-1===vi.indexOf(e)||this.pickerVisible||(this.pickerVisible=!0),this.$emit(\"focus\",this)},handleKeydown:function(e){var t=this,n=e.keyCode;return 27===n?(this.pickerVisible=!1,void e.stopPropagation()):9!==n?13===n?((\"\"===this.userInput||this.isValidValue(this.parseString(this.displayValue)))&&(this.handleChange(),this.pickerVisible=this.picker.visible=!1,this.blur()),void e.stopPropagation()):void(this.userInput?e.stopPropagation():this.picker&&this.picker.handleKeydown&&this.picker.handleKeydown(e)):void(this.ranged?setTimeout(function(){-1===t.refInput.indexOf(document.activeElement)&&(t.pickerVisible=!1,t.blur(),e.stopPropagation())},0):(this.handleChange(),this.pickerVisible=this.picker.visible=!1,this.blur(),e.stopPropagation()))},handleRangeClick:function(){var e=this.type;-1===vi.indexOf(e)||this.pickerVisible||(this.pickerVisible=!0),this.$emit(\"focus\",this)},hidePicker:function(){this.picker&&(this.picker.resetView&&this.picker.resetView(),this.pickerVisible=this.picker.visible=!1,this.destroyPopper())},showPicker:function(){var e=this;this.$isServer||(this.picker||this.mountPicker(),this.pickerVisible=this.picker.visible=!0,this.updatePopper(),this.picker.value=this.parsedValue,this.picker.resetView&&this.picker.resetView(),this.$nextTick(function(){e.picker.adjustSpinners&&e.picker.adjustSpinners()}))},mountPicker:function(){var e=this;this.picker=new fn.a(this.panel).$mount(),this.picker.defaultValue=this.defaultValue,this.picker.defaultTime=this.defaultTime,this.picker.popperClass=this.popperClass,this.popperElm=this.picker.$el,this.picker.width=this.reference.getBoundingClientRect().width,this.picker.showTime=\"datetime\"===this.type||\"datetimerange\"===this.type,this.picker.selectionMode=this.selectionMode,this.picker.unlinkPanels=this.unlinkPanels,this.picker.arrowControl=this.arrowControl||this.timeArrowControl||!1,this.$watch(\"format\",function(t){e.picker.format=t});var t=function(){var t=e.pickerOptions;if(t&&t.selectableRange){var n=t.selectableRange,i=wi.datetimerange.parser,r=mi.timerange;n=Array.isArray(n)?n:[n],e.picker.selectableRange=n.map(function(t){return i(t,r,e.rangeSeparator)})}for(var o in t)t.hasOwnProperty(o)&&\"selectableRange\"!==o&&(e.picker[o]=t[o]);e.format&&(e.picker.format=e.format)};t(),this.unwatchPickerOptions=this.$watch(\"pickerOptions\",function(){return t()},{deep:!0}),this.$el.appendChild(this.picker.$el),this.picker.resetView&&this.picker.resetView(),this.picker.$on(\"dodestroy\",this.doDestroy),this.picker.$on(\"pick\",function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=n,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on(\"select-range\",function(t,n,i){0!==e.refInput.length&&(i&&\"min\"!==i?\"max\"===i&&(e.refInput[1].setSelectionRange(t,n),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,n),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),\"function\"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Ti(e,this.valueOnOpen)||(this.$emit(\"change\",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch(\"ElFormItem\",\"el.form.change\",e))},emitInput:function(e){var t=this.formatToValue(e);Ti(this.value,t)||this.$emit(\"input\",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},fi,[],!1,null,null,null);Ai.options.__file=\"packages/date-picker/src/picker.vue\";var Ii=Ai.exports,Oi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-enter\":e.handleEnter,\"after-leave\":e.handleLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-picker-panel el-date-picker el-popper\",class:[{\"has-sidebar\":e.$slots.sidebar||e.shortcuts,\"has-time\":e.showTime},e.popperClass]},[n(\"div\",{staticClass:\"el-picker-panel__body-wrapper\"},[e._t(\"sidebar\"),e.shortcuts?n(\"div\",{staticClass:\"el-picker-panel__sidebar\"},e._l(e.shortcuts,function(t,i){return n(\"button\",{key:i,staticClass:\"el-picker-panel__shortcut\",attrs:{type:\"button\"},on:{click:function(n){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),n(\"div\",{staticClass:\"el-picker-panel__body\"},[e.showTime?n(\"div\",{staticClass:\"el-date-picker__time-header\"},[n(\"span\",{staticClass:\"el-date-picker__editor-wrap\"},[n(\"el-input\",{attrs:{placeholder:e.t(\"el.datepicker.selectDate\"),value:e.visibleDate,size:\"small\"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),n(\"span\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleTimePickClose,expression:\"handleTimePickClose\"}],staticClass:\"el-date-picker__editor-wrap\"},[n(\"el-input\",{ref:\"input\",attrs:{placeholder:e.t(\"el.datepicker.selectTime\"),value:e.visibleTime,size:\"small\"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),n(\"time-picker\",{ref:\"timepicker\",attrs:{\"time-arrow-control\":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"time\"!==e.currentView,expression:\"currentView !== 'time'\"}],staticClass:\"el-date-picker__header\",class:{\"el-date-picker__header--bordered\":\"year\"===e.currentView||\"month\"===e.currentView}},[n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left\",attrs:{type:\"button\",\"aria-label\":e.t(\"el.datepicker.prevYear\")},on:{click:e.prevYear}}),n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"date\"===e.currentView,expression:\"currentView === 'date'\"}],staticClass:\"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left\",attrs:{type:\"button\",\"aria-label\":e.t(\"el.datepicker.prevMonth\")},on:{click:e.prevMonth}}),n(\"span\",{staticClass:\"el-date-picker__header-label\",attrs:{role:\"button\"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),n(\"span\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"date\"===e.currentView,expression:\"currentView === 'date'\"}],staticClass:\"el-date-picker__header-label\",class:{active:\"month\"===e.currentView},attrs:{role:\"button\"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t(\"el.datepicker.month\"+(e.month+1))))]),n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right\",attrs:{type:\"button\",\"aria-label\":e.t(\"el.datepicker.nextYear\")},on:{click:e.nextYear}}),n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"date\"===e.currentView,expression:\"currentView === 'date'\"}],staticClass:\"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right\",attrs:{type:\"button\",\"aria-label\":e.t(\"el.datepicker.nextMonth\")},on:{click:e.nextMonth}})]),n(\"div\",{staticClass:\"el-picker-panel__content\"},[n(\"date-table\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"date\"===e.currentView,expression:\"currentView === 'date'\"}],attrs:{\"selection-mode\":e.selectionMode,\"first-day-of-week\":e.firstDayOfWeek,value:e.value,\"default-value\":e.defaultValue?new Date(e.defaultValue):null,date:e.date,\"cell-class-name\":e.cellClassName,\"disabled-date\":e.disabledDate},on:{pick:e.handleDatePick}}),n(\"year-table\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"year\"===e.currentView,expression:\"currentView === 'year'\"}],attrs:{value:e.value,\"default-value\":e.defaultValue?new Date(e.defaultValue):null,date:e.date,\"disabled-date\":e.disabledDate},on:{pick:e.handleYearPick}}),n(\"month-table\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"month\"===e.currentView,expression:\"currentView === 'month'\"}],attrs:{value:e.value,\"default-value\":e.defaultValue?new Date(e.defaultValue):null,date:e.date,\"disabled-date\":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.footerVisible&&\"date\"===e.currentView,expression:\"footerVisible && currentView === 'date'\"}],staticClass:\"el-picker-panel__footer\"},[n(\"el-button\",{directives:[{name:\"show\",rawName:\"v-show\",value:\"dates\"!==e.selectionMode,expression:\"selectionMode !== 'dates'\"}],staticClass:\"el-picker-panel__link-btn\",attrs:{size:\"mini\",type:\"text\"},on:{click:e.changeToNow}},[e._v(\"\\n        \"+e._s(e.t(\"el.datepicker.now\"))+\"\\n      \")]),n(\"el-button\",{staticClass:\"el-picker-panel__link-btn\",attrs:{plain:\"\",size:\"mini\"},on:{click:e.confirm}},[e._v(\"\\n        \"+e._s(e.t(\"el.datepicker.confirm\"))+\"\\n      \")])],1)])])};Oi._withStripped=!0;var Ei=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":function(t){e.$emit(\"dodestroy\")}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-time-panel el-popper\",class:e.popperClass},[n(\"div\",{staticClass:\"el-time-panel__content\",class:{\"has-seconds\":e.showSeconds}},[n(\"time-spinner\",{ref:\"spinner\",attrs:{\"arrow-control\":e.useArrow,\"show-seconds\":e.showSeconds,\"am-pm-mode\":e.amPmMode,date:e.date},on:{change:e.handleChange,\"select-range\":e.setSelectionRange}})],1),n(\"div\",{staticClass:\"el-time-panel__footer\"},[n(\"button\",{staticClass:\"el-time-panel__btn cancel\",attrs:{type:\"button\"},on:{click:e.handleCancel}},[e._v(e._s(e.t(\"el.datepicker.cancel\")))]),n(\"button\",{staticClass:\"el-time-panel__btn\",class:{confirm:!e.disabled},attrs:{type:\"button\"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t(\"el.datepicker.confirm\")))])])])])};Ei._withStripped=!0;var Li=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-time-spinner\",class:{\"has-seconds\":e.showSeconds}},[e.arrowControl?e._e():[n(\"el-scrollbar\",{ref:\"hours\",staticClass:\"el-time-spinner__wrapper\",attrs:{\"wrap-style\":\"max-height: inherit;\",\"view-class\":\"el-time-spinner__list\",noresize:\"\",tag:\"ul\"},nativeOn:{mouseenter:function(t){e.emitSelectRange(\"hours\")},mousemove:function(t){e.adjustCurrentSpinner(\"hours\")}}},e._l(e.hoursList,function(t,i){return n(\"li\",{key:i,staticClass:\"el-time-spinner__item\",class:{active:i===e.hours,disabled:t},on:{click:function(n){e.handleClick(\"hours\",{value:i,disabled:t})}}},[e._v(e._s((\"0\"+(e.amPmMode?i%12||12:i)).slice(-2))+e._s(e.amPm(i)))])}),0),n(\"el-scrollbar\",{ref:\"minutes\",staticClass:\"el-time-spinner__wrapper\",attrs:{\"wrap-style\":\"max-height: inherit;\",\"view-class\":\"el-time-spinner__list\",noresize:\"\",tag:\"ul\"},nativeOn:{mouseenter:function(t){e.emitSelectRange(\"minutes\")},mousemove:function(t){e.adjustCurrentSpinner(\"minutes\")}}},e._l(e.minutesList,function(t,i){return n(\"li\",{key:i,staticClass:\"el-time-spinner__item\",class:{active:i===e.minutes,disabled:!t},on:{click:function(t){e.handleClick(\"minutes\",{value:i,disabled:!1})}}},[e._v(e._s((\"0\"+i).slice(-2)))])}),0),n(\"el-scrollbar\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showSeconds,expression:\"showSeconds\"}],ref:\"seconds\",staticClass:\"el-time-spinner__wrapper\",attrs:{\"wrap-style\":\"max-height: inherit;\",\"view-class\":\"el-time-spinner__list\",noresize:\"\",tag:\"ul\"},nativeOn:{mouseenter:function(t){e.emitSelectRange(\"seconds\")},mousemove:function(t){e.adjustCurrentSpinner(\"seconds\")}}},e._l(60,function(t,i){return n(\"li\",{key:i,staticClass:\"el-time-spinner__item\",class:{active:i===e.seconds},on:{click:function(t){e.handleClick(\"seconds\",{value:i,disabled:!1})}}},[e._v(e._s((\"0\"+i).slice(-2)))])}),0)],e.arrowControl?[n(\"div\",{staticClass:\"el-time-spinner__wrapper is-arrow\",on:{mouseenter:function(t){e.emitSelectRange(\"hours\")}}},[n(\"i\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.decrease,expression:\"decrease\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-up\"}),n(\"i\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.increase,expression:\"increase\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-down\"}),n(\"ul\",{ref:\"hours\",staticClass:\"el-time-spinner__list\"},e._l(e.arrowHourList,function(t,i){return n(\"li\",{key:i,staticClass:\"el-time-spinner__item\",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?\"\":(\"0\"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),n(\"div\",{staticClass:\"el-time-spinner__wrapper is-arrow\",on:{mouseenter:function(t){e.emitSelectRange(\"minutes\")}}},[n(\"i\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.decrease,expression:\"decrease\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-up\"}),n(\"i\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.increase,expression:\"increase\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-down\"}),n(\"ul\",{ref:\"minutes\",staticClass:\"el-time-spinner__list\"},e._l(e.arrowMinuteList,function(t,i){return n(\"li\",{key:i,staticClass:\"el-time-spinner__item\",class:{active:t===e.minutes}},[e._v(\"\\n          \"+e._s(void 0===t?\"\":(\"0\"+t).slice(-2))+\"\\n        \")])}),0)]),e.showSeconds?n(\"div\",{staticClass:\"el-time-spinner__wrapper is-arrow\",on:{mouseenter:function(t){e.emitSelectRange(\"seconds\")}}},[n(\"i\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.decrease,expression:\"decrease\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-up\"}),n(\"i\",{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:e.increase,expression:\"increase\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-down\"}),n(\"ul\",{ref:\"seconds\",staticClass:\"el-time-spinner__list\"},e._l(e.arrowSecondList,function(t,i){return n(\"li\",{key:i,staticClass:\"el-time-spinner__item\",class:{active:t===e.seconds}},[e._v(\"\\n          \"+e._s(void 0===t?\"\":(\"0\"+t).slice(-2))+\"\\n        \")])}),0)]):e._e()]:e._e()],2)};Li._withStripped=!0;var Pi=r({components:{ElScrollbar:B.a},directives:{repeatClick:Ue},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:\"\"}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(pi.getRangeHours)(this.selectableRange)},minutesList:function(){return Object(pi.getRangeMinutes)(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case\"hours\":this.$emit(\"change\",Object(pi.modifyTime)(this.date,t,this.minutes,this.seconds));break;case\"minutes\":this.$emit(\"change\",Object(pi.modifyTime)(this.date,this.hours,t,this.seconds));break;case\"seconds\":this.$emit(\"change\",Object(pi.modifyTime)(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var n=t.value;t.disabled||(this.modifyDateField(e,n),this.emitSelectRange(e),this.adjustSpinner(e,n))},emitSelectRange:function(e){\"hours\"===e?this.$emit(\"select-range\",0,2):\"minutes\"===e?this.$emit(\"select-range\",3,5):\"seconds\"===e&&this.$emit(\"select-range\",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(n){e.handleScroll(t,n)}};t(\"hours\"),t(\"minutes\"),t(\"seconds\")},handleScroll:function(e){var t=Math.min(Math.round((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),\"hours\"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner(\"hours\",this.hours),this.adjustSpinner(\"minutes\",this.minutes),this.adjustSpinner(\"seconds\",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var n=this.$refs[e].wrap;n&&(n.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){var t=this;this.currentScrollbar||this.emitSelectRange(\"hours\");var n=this.currentScrollbar,i=this.hoursList,r=this[n];if(\"hours\"===this.currentScrollbar){var o=Math.abs(e);e=e>0?1:-1;for(var a=i.length;a--&&o;)i[r=(r+e+i.length)%i.length]||o--;if(i[r])return}else r=(r+e+60)%60;this.modifyDateField(n,r),this.adjustSpinner(n,r),this.$nextTick(function(){return t.emitSelectRange(t.currentScrollbar)})},amPm:function(e){if(!(\"a\"===this.amPmMode.toLowerCase()))return\"\";var t=\"A\"===this.amPmMode,n=e<12?\" am\":\" pm\";return t&&(n=n.toUpperCase()),n},typeItemHeight:function(e){return this.$refs[e].$el.querySelector(\"li\").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},Li,[],!1,null,null,null);Pi.options.__file=\"packages/date-picker/src/basic/time-spinner.vue\";var Ni=Pi.exports,Ri=r({mixins:[p.a],components:{TimeSpinner:Ni},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange(\"hours\")})):this.needInitAdjust=!0},value:function(e){var t=this,n=void 0;e instanceof Date?n=Object(pi.limitTimeRange)(e,this.selectableRange,this.format):e||(n=this.defaultValue?new Date(this.defaultValue):new Date),this.date=n,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(pi.isDate)(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:\"\",format:\"HH:mm:ss\",value:\"\",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||\"\").indexOf(\"ss\")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||\"\").indexOf(\"A\")?\"A\":-1!==(this.format||\"\").indexOf(\"a\")?\"a\":\"\"}},methods:{handleCancel:function(){this.$emit(\"pick\",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(pi.clearMilliseconds)(e),this.isValidValue(this.date)&&this.$emit(\"pick\",this.date,!0))},setSelectionRange:function(e,t){this.$emit(\"select-range\",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var n=Object(pi.clearMilliseconds)(Object(pi.limitTimeRange)(this.date,this.selectableRange,this.format));this.$emit(\"pick\",n,e,t)}},handleKeydown:function(e){var t=e.keyCode,n={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var i=n[t];return this.changeSelectionRange(i),void e.preventDefault()}if(38===t||40===t){var r=n[t];return this.$refs.spinner.scrollDown(r),void e.preventDefault()}},isValidValue:function(e){return Object(pi.timeWithinRange)(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),n=[\"hours\",\"minutes\"].concat(this.showSeconds?[\"seconds\"]:[]),i=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(n[i])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit(\"mounted\")}},Ei,[],!1,null,null,null);Ri.options.__file=\"packages/date-picker/src/panel/time.vue\";var Bi=Ri.exports,zi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"table\",{staticClass:\"el-year-table\",on:{click:e.handleYearTableClick}},[n(\"tbody\",[n(\"tr\",[n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+0)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+1)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+1))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+2)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+2))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+3)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+3))])])]),n(\"tr\",[n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+4)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+4))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+5)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+5))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+6)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+6))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+7)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+7))])])]),n(\"tr\",[n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+8)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+8))])]),n(\"td\",{staticClass:\"available\",class:e.getCellStyle(e.startYear+9)},[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.startYear+9))])]),n(\"td\"),n(\"td\")])])])};zi._withStripped=!0;var Fi=r({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(pi.isDate)(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},n=new Date;return t.disabled=\"function\"==typeof this.disabledDate&&function(e){var t=Object(pi.getDayCountOfYear)(e),n=new Date(e,0,1);return Object(pi.range)(t).map(function(e){return Object(pi.nextDate)(n,e)})}(e).every(this.disabledDate),t.current=Object(g.arrayFindIndex)(Object(g.coerceTruthyValueToArray)(this.value),function(t){return t.getFullYear()===e})>=0,t.today=n.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if(\"A\"===t.tagName){if(Object(pe.hasClass)(t.parentNode,\"disabled\"))return;var n=t.textContent||t.innerText;this.$emit(\"pick\",Number(n))}}}},zi,[],!1,null,null,null);Fi.options.__file=\"packages/date-picker/src/basic/year-table.vue\";var $i=Fi.exports,Vi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"table\",{staticClass:\"el-month-table\",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[n(\"tbody\",e._l(e.rows,function(t,i){return n(\"tr\",{key:i},e._l(t,function(t,i){return n(\"td\",{key:i,class:e.getCellStyle(t)},[n(\"div\",[n(\"a\",{staticClass:\"cell\"},[e._v(e._s(e.t(\"el.datepicker.months.\"+e.months[t.text])))])])])}),0)}),0)])};Vi._withStripped=!0;var ji=function(e){return new Date(e.getFullYear(),e.getMonth())},Hi=function(e){return\"number\"==typeof e||\"string\"==typeof e?ji(new Date(e)).getTime():e instanceof Date?ji(e).getTime():NaN},Wi=r({props:{disabledDate:{},value:{},selectionMode:{default:\"month\"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(pi.isDate)(e)||Array.isArray(e)&&e.every(pi.isDate)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[p.a],watch:{\"rangeState.endDate\":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Hi(e)!==Hi(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Hi(e)!==Hi(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:[\"jan\",\"feb\",\"mar\",\"apr\",\"may\",\"jun\",\"jul\",\"aug\",\"sep\",\"oct\",\"nov\",\"dec\"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var n=new Date(t);return this.date.getFullYear()===n.getFullYear()&&Number(e.text)===n.getMonth()},getCellStyle:function(e){var t=this,n={},i=this.date.getFullYear(),r=new Date,o=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return n.disabled=\"function\"==typeof this.disabledDate&&function(e,t){var n=Object(pi.getDayCountOfMonth)(e,t),i=new Date(e,t,1);return Object(pi.range)(n).map(function(e){return Object(pi.nextDate)(i,e)})}(i,o).every(this.disabledDate),n.current=Object(g.arrayFindIndex)(Object(g.coerceTruthyValueToArray)(this.value),function(e){return e.getFullYear()===i&&e.getMonth()===o})>=0,n.today=r.getFullYear()===i&&r.getMonth()===o,n.default=a.some(function(n){return t.cellMatchesDate(e,n)}),e.inRange&&(n[\"in-range\"]=!0,e.start&&(n[\"start-date\"]=!0),e.end&&(n[\"end-date\"]=!0)),n},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Hi(e),t=Hi(t)||e;var n=[Math.min(e,t),Math.max(e,t)];e=n[0],t=n[1];for(var i=this.rows,r=0,o=i.length;r<o;r++)for(var a=i[r],s=0,l=a.length;s<l;s++){var u=a[s],c=4*r+s,h=new Date(this.date.getFullYear(),c).getTime();u.inRange=e&&h>=e&&h<=t,u.start=e&&h===e,u.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if(\"A\"===t.tagName&&(t=t.parentNode.parentNode),\"DIV\"===t.tagName&&(t=t.parentNode),\"TD\"===t.tagName){var n=t.parentNode.rowIndex,i=t.cellIndex;this.rows[n][i].disabled||n===this.lastRow&&i===this.lastColumn||(this.lastRow=n,this.lastColumn=i,this.$emit(\"changerange\",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*n+i)}}))}}},handleMonthTableClick:function(e){var t=e.target;if(\"A\"===t.tagName&&(t=t.parentNode.parentNode),\"DIV\"===t.tagName&&(t=t.parentNode),\"TD\"===t.tagName&&!Object(pe.hasClass)(t,\"disabled\")){var n=t.cellIndex,i=4*t.parentNode.rowIndex+n,r=this.getMonthOfCell(i);\"range\"===this.selectionMode?this.rangeState.selecting?(r>=this.minDate?this.$emit(\"pick\",{minDate:this.minDate,maxDate:r}):this.$emit(\"pick\",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit(\"pick\",{minDate:r,maxDate:null}),this.rangeState.selecting=!0):this.$emit(\"pick\",i)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,n=this.disabledDate,i=[],r=Hi(new Date),o=0;o<3;o++)for(var a=t[o],s=function(t){var s=a[t];s||(s={row:o,column:t,type:\"normal\",inRange:!1,start:!1,end:!1}),s.type=\"normal\";var l=4*o+t,u=new Date(e.date.getFullYear(),l).getTime();s.inRange=u>=Hi(e.minDate)&&u<=Hi(e.maxDate),s.start=e.minDate&&u===Hi(e.minDate),s.end=e.maxDate&&u===Hi(e.maxDate),u===r&&(s.type=\"today\"),s.text=l;var c=new Date(u);s.disabled=\"function\"==typeof n&&n(c),s.selected=Object(g.arrayFind)(i,function(e){return e.getTime()===c.getTime()}),e.$set(a,t,s)},l=0;l<4;l++)s(l);return t}}},Vi,[],!1,null,null,null);Wi.options.__file=\"packages/date-picker/src/basic/month-table.vue\";var qi=Wi.exports,Gi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"table\",{staticClass:\"el-date-table\",class:{\"is-week-mode\":\"week\"===e.selectionMode},attrs:{cellspacing:\"0\",cellpadding:\"0\"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[n(\"tbody\",[n(\"tr\",[e.showWeekNumber?n(\"th\",[e._v(e._s(e.t(\"el.datepicker.week\")))]):e._e(),e._l(e.WEEKS,function(t,i){return n(\"th\",{key:i},[e._v(e._s(e.t(\"el.datepicker.weeks.\"+t)))])})],2),e._l(e.rows,function(t,i){return n(\"tr\",{key:i,staticClass:\"el-date-table__row\",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,i){return n(\"td\",{key:i,class:e.getCellClasses(t)},[n(\"div\",[n(\"span\",[e._v(\"\\n          \"+e._s(t.text)+\"\\n        \")])])])}),0)})],2)])};Gi._withStripped=!0;var Ui=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"],Yi=function(e){return\"number\"==typeof e||\"string\"==typeof e?Object(pi.clearTime)(new Date(e)).getTime():e instanceof Date?Object(pi.clearTime)(e).getTime():NaN},Xi=r({mixins:[p.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(pi.isDate)(e)||Array.isArray(e)&&e.every(pi.isDate)}},date:{},selectionMode:{default:\"day\"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},cellClassName:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return Ui.concat(Ui).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(pi.getStartDateOfMonth)(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),n=Object(pi.getFirstDayOfMonth)(t),i=Object(pi.getDayCountOfMonth)(t.getFullYear(),t.getMonth()),r=Object(pi.getDayCountOfMonth)(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);n=0===n?7:n;for(var o=this.offsetDay,a=this.tableRows,s=1,l=this.startDate,u=this.disabledDate,c=this.cellClassName,h=\"dates\"===this.selectionMode?Object(g.coerceTruthyValueToArray)(this.value):[],d=Yi(new Date),f=0;f<6;f++){var p=a[f];this.showWeekNumber&&(p[0]||(p[0]={type:\"week\",text:Object(pi.getWeekNumber)(Object(pi.nextDate)(l,7*f+1))}));for(var m=function(t){var a=p[e.showWeekNumber?t+1:t];a||(a={row:f,column:t,type:\"normal\",inRange:!1,start:!1,end:!1}),a.type=\"normal\";var m=7*f+t,v=Object(pi.nextDate)(l,m-o).getTime();if(a.inRange=v>=Yi(e.minDate)&&v<=Yi(e.maxDate),a.start=e.minDate&&v===Yi(e.minDate),a.end=e.maxDate&&v===Yi(e.maxDate),v===d&&(a.type=\"today\"),f>=0&&f<=1){var y=n+o<0?7+n+o:n+o;t+7*f>=y?a.text=s++:(a.text=r-(y-t%7)+1+7*f,a.type=\"prev-month\")}else s<=i?a.text=s++:(a.text=s++-i,a.type=\"next-month\");var b=new Date(v);a.disabled=\"function\"==typeof u&&u(b),a.selected=Object(g.arrayFind)(h,function(e){return e.getTime()===b.getTime()}),a.customClass=\"function\"==typeof c&&c(b),e.$set(p,e.showWeekNumber?t+1:t,a)},v=0;v<7;v++)m(v);if(\"week\"===this.selectionMode){var y=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,x=this.isWeekActive(p[y+1]);p[y].inRange=x,p[y].start=x,p[b].inRange=x,p[b].end=x}}return a}},watch:{\"rangeState.endDate\":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Yi(e)!==Yi(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Yi(e)!==Yi(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var n=new Date(t);return this.year===n.getFullYear()&&this.month===n.getMonth()&&Number(e.text)===n.getDate()},getCellClasses:function(e){var t=this,n=this.selectionMode,i=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],r=[];return\"normal\"!==e.type&&\"today\"!==e.type||e.disabled?r.push(e.type):(r.push(\"available\"),\"today\"===e.type&&r.push(\"today\")),\"normal\"===e.type&&i.some(function(n){return t.cellMatchesDate(e,n)})&&r.push(\"default\"),\"day\"!==n||\"normal\"!==e.type&&\"today\"!==e.type||!this.cellMatchesDate(e,this.value)||r.push(\"current\"),!e.inRange||\"normal\"!==e.type&&\"today\"!==e.type&&\"week\"!==this.selectionMode||(r.push(\"in-range\"),e.start&&r.push(\"start-date\"),e.end&&r.push(\"end-date\")),e.disabled&&r.push(\"disabled\"),e.selected&&r.push(\"selected\"),e.customClass&&r.push(e.customClass),r.join(\" \")},getDateOfCell:function(e,t){var n=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(pi.nextDate)(this.startDate,n)},isWeekActive:function(e){if(\"week\"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),n=t.getFullYear(),i=t.getMonth();if(\"prev-month\"===e.type&&(t.setMonth(0===i?11:i-1),t.setFullYear(0===i?n-1:n)),\"next-month\"===e.type&&(t.setMonth(11===i?0:i+1),t.setFullYear(11===i?n+1:n)),t.setDate(parseInt(e.text,10)),Object(pi.isDate)(this.value)){var r=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return Object(pi.prevDate)(this.value,r).getTime()===t.getTime()}return!1},markRange:function(e,t){e=Yi(e),t=Yi(t)||e;var n=[Math.min(e,t),Math.max(e,t)];e=n[0],t=n[1];for(var i=this.startDate,r=this.rows,o=0,a=r.length;o<a;o++)for(var s=r[o],l=0,u=s.length;l<u;l++)if(!this.showWeekNumber||0!==l){var c=s[l],h=7*o+l+(this.showWeekNumber?-1:0),d=Object(pi.nextDate)(i,h-this.offsetDay).getTime();c.inRange=e&&d>=e&&d<=t,c.start=e&&d===e,c.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if(\"SPAN\"===t.tagName&&(t=t.parentNode.parentNode),\"DIV\"===t.tagName&&(t=t.parentNode),\"TD\"===t.tagName){var n=t.parentNode.rowIndex-1,i=t.cellIndex;this.rows[n][i].disabled||n===this.lastRow&&i===this.lastColumn||(this.lastRow=n,this.lastColumn=i,this.$emit(\"changerange\",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(n,i)}}))}}},handleClick:function(e){var t=e.target;if(\"SPAN\"===t.tagName&&(t=t.parentNode.parentNode),\"DIV\"===t.tagName&&(t=t.parentNode),\"TD\"===t.tagName){var n=t.parentNode.rowIndex-1,i=\"week\"===this.selectionMode?1:t.cellIndex,r=this.rows[n][i];if(!r.disabled&&\"week\"!==r.type){var o,a,s,l=this.getDateOfCell(n,i);if(\"range\"===this.selectionMode)this.rangeState.selecting?(l>=this.minDate?this.$emit(\"pick\",{minDate:this.minDate,maxDate:l}):this.$emit(\"pick\",{minDate:l,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit(\"pick\",{minDate:l,maxDate:null}),this.rangeState.selecting=!0);else if(\"day\"===this.selectionMode)this.$emit(\"pick\",l);else if(\"week\"===this.selectionMode){var u=Object(pi.getWeekNumber)(l),c=l.getFullYear()+\"w\"+u;this.$emit(\"pick\",{year:l.getFullYear(),week:u,value:c,date:l})}else if(\"dates\"===this.selectionMode){var h=this.value||[],d=r.selected?(o=h,(s=\"function\"==typeof(a=function(e){return e.getTime()===l.getTime()})?Object(g.arrayFindIndex)(o,a):o.indexOf(a))>=0?[].concat(o.slice(0,s),o.slice(s+1)):o):[].concat(h,[l]);this.$emit(\"pick\",d)}}}}}},Gi,[],!1,null,null,null);Xi.options.__file=\"packages/date-picker/src/basic/date-table.vue\";var Ki=Xi.exports,Zi=r({mixins:[p.a],directives:{Clickoutside:E.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var n=t.$refs.input.$el;n&&(t.pickerWidth=n.getBoundingClientRect().width+10)})},value:function(e){\"dates\"===this.selectionMode&&this.value||(Object(pi.isDate)(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(pi.isDate)(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){\"month\"===e?\"year\"===this.currentView&&\"month\"===this.currentView||(this.currentView=\"month\"):\"dates\"===e&&(this.currentView=\"date\")}},methods:{proxyTimePickerDataProperties:function(){var e,t=this,n=function(e){t.$refs.timepicker.value=e},i=function(e){t.$refs.timepicker.date=e},r=function(e){t.$refs.timepicker.selectableRange=e};this.$watch(\"value\",n),this.$watch(\"date\",i),this.$watch(\"selectableRange\",r),e=this.timeFormat,t.$refs.timepicker.format=e,n(this.value),i(this.date),r(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit(\"pick\",null)},emit:function(e){for(var t=this,n=arguments.length,i=Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];if(e)if(Array.isArray(e)){var o=e.map(function(e){return t.showTime?Object(pi.clearMilliseconds)(e):Object(pi.clearTime)(e)});this.$emit.apply(this,[\"pick\",o].concat(i))}else this.$emit.apply(this,[\"pick\",this.showTime?Object(pi.clearMilliseconds)(e):Object(pi.clearTime)(e)].concat(i));else this.$emit.apply(this,[\"pick\",e].concat(i));this.userInputDate=null,this.userInputTime=null},showMonthPicker:function(){this.currentView=\"month\"},showYearPicker:function(){this.currentView=\"year\"},prevMonth:function(){this.date=Object(pi.prevMonth)(this.date)},nextMonth:function(){this.date=Object(pi.nextMonth)(this.date)},prevYear:function(){\"year\"===this.currentView?this.date=Object(pi.prevYear)(this.date,10):this.date=Object(pi.prevYear)(this.date)},nextYear:function(){\"year\"===this.currentView?this.date=Object(pi.nextYear)(this.date,10):this.date=Object(pi.nextYear)(this.date)},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleTimePick:function(e,t,n){if(Object(pi.isDate)(e)){var i=this.value?Object(pi.modifyTime)(this.value,e.getHours(),e.getMinutes(),e.getSeconds()):Object(pi.modifyWithTimeString)(this.getDefaultValue(),this.defaultTime);this.date=i,this.emit(this.date,!0)}else this.emit(e,!0);n||(this.timePickerVisible=t)},handleTimePickClose:function(){this.timePickerVisible=!1},handleMonthPick:function(e){\"month\"===this.selectionMode?(this.date=Object(pi.modifyDate)(this.date,this.year,e,1),this.emit(this.date)):(this.date=Object(pi.changeYearMonthAndClampDate)(this.date,this.year,e),this.currentView=\"date\")},handleDatePick:function(e){if(\"day\"===this.selectionMode){var t=this.value?Object(pi.modifyDate)(this.value,e.getFullYear(),e.getMonth(),e.getDate()):Object(pi.modifyWithTimeString)(e,this.defaultTime);this.checkDateWithinRange(t)||(t=Object(pi.modifyDate)(this.selectableRange[0][0],e.getFullYear(),e.getMonth(),e.getDate())),this.date=t,this.emit(this.date,this.showTime)}else\"week\"===this.selectionMode?this.emit(e.date):\"dates\"===this.selectionMode&&this.emit(e,!0)},handleYearPick:function(e){\"year\"===this.selectionMode?(this.date=Object(pi.modifyDate)(this.date,e,0,1),this.emit(this.date)):(this.date=Object(pi.changeYearMonthAndClampDate)(this.date,e,this.month),this.currentView=\"month\")},changeToNow:function(){this.disabledDate&&this.disabledDate(new Date)||!this.checkDateWithinRange(new Date)||(this.date=new Date,this.emit(this.date))},confirm:function(){if(\"dates\"===this.selectionMode)this.emit(this.value);else{var e=this.value?this.value:Object(pi.modifyWithTimeString)(this.getDefaultValue(),this.defaultTime);this.date=new Date(e),this.emit(e)}},resetView:function(){\"month\"===this.selectionMode?this.currentView=\"month\":\"year\"===this.selectionMode?this.currentView=\"year\":this.currentView=\"date\"},handleEnter:function(){document.body.addEventListener(\"keydown\",this.handleKeydown)},handleLeave:function(){this.$emit(\"dodestroy\"),document.body.removeEventListener(\"keydown\",this.handleKeydown)},handleKeydown:function(e){var t=e.keyCode;this.visible&&!this.timePickerVisible&&(-1!==[38,40,37,39].indexOf(t)&&(this.handleKeyControl(t),e.stopPropagation(),e.preventDefault()),13===t&&null===this.userInputDate&&null===this.userInputTime&&this.emit(this.date,!1))},handleKeyControl:function(e){for(var t={year:{38:-4,40:4,37:-1,39:1,offset:function(e,t){return e.setFullYear(e.getFullYear()+t)}},month:{38:-4,40:4,37:-1,39:1,offset:function(e,t){return e.setMonth(e.getMonth()+t)}},week:{38:-1,40:1,37:-1,39:1,offset:function(e,t){return e.setDate(e.getDate()+7*t)}},day:{38:-7,40:7,37:-1,39:1,offset:function(e,t){return e.setDate(e.getDate()+t)}}},n=this.selectionMode,i=this.date.getTime(),r=new Date(this.date.getTime());Math.abs(i-r.getTime())<=31536e6;){var o=t[n];if(o.offset(r,o[e]),\"function\"!=typeof this.disabledDate||!this.disabledDate(r)){this.date=r,this.$emit(\"pick\",r,!0);break}}},handleVisibleTimeChange:function(e){var t=Object(pi.parseDate)(e,this.timeFormat);t&&this.checkDateWithinRange(t)&&(this.date=Object(pi.modifyDate)(t,this.year,this.month,this.monthDate),this.userInputTime=null,this.$refs.timepicker.value=this.date,this.timePickerVisible=!1,this.emit(this.date,!0))},handleVisibleDateChange:function(e){var t=Object(pi.parseDate)(e,this.dateFormat);if(t){if(\"function\"==typeof this.disabledDate&&this.disabledDate(t))return;this.date=Object(pi.modifyTime)(t,this.date.getHours(),this.date.getMinutes(),this.date.getSeconds()),this.userInputDate=null,this.resetView(),this.emit(this.date,!0)}},isValidValue:function(e){return e&&!isNaN(e)&&(\"function\"!=typeof this.disabledDate||!this.disabledDate(e))&&this.checkDateWithinRange(e)},getDefaultValue:function(){return this.defaultValue?new Date(this.defaultValue):new Date},checkDateWithinRange:function(e){return!(this.selectableRange.length>0)||Object(pi.timeWithinRange)(e,this.selectableRange,this.format||\"HH:mm:ss\")}},components:{TimePicker:Bi,YearTable:$i,MonthTable:qi,DateTable:Ki,ElInput:d.a,ElButton:G.a},data:function(){return{popperClass:\"\",date:new Date,value:\"\",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:\"day\",shortcuts:\"\",visible:!1,currentView:\"date\",disabledDate:\"\",cellClassName:\"\",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:\"\",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(pi.getWeekNumber)(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||\"dates\"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(pi.formatDate)(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(pi.formatDate)(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t(\"el.datepicker.year\");if(\"year\"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+\" \"+e+\" - \"+(t+9)+\" \"+e:t+\" - \"+(t+9)}return this.year+\" \"+e},timeFormat:function(){return this.format?Object(pi.extractTimeFormat)(this.format):\"HH:mm:ss\"},dateFormat:function(){return this.format?Object(pi.extractDateFormat)(this.format):\"yyyy-MM-dd\"}}},Oi,[],!1,null,null,null);Zi.options.__file=\"packages/date-picker/src/panel/date.vue\";var Ji=Zi.exports,Qi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":function(t){e.$emit(\"dodestroy\")}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-picker-panel el-date-range-picker el-popper\",class:[{\"has-sidebar\":e.$slots.sidebar||e.shortcuts,\"has-time\":e.showTime},e.popperClass]},[n(\"div\",{staticClass:\"el-picker-panel__body-wrapper\"},[e._t(\"sidebar\"),e.shortcuts?n(\"div\",{staticClass:\"el-picker-panel__sidebar\"},e._l(e.shortcuts,function(t,i){return n(\"button\",{key:i,staticClass:\"el-picker-panel__shortcut\",attrs:{type:\"button\"},on:{click:function(n){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),n(\"div\",{staticClass:\"el-picker-panel__body\"},[e.showTime?n(\"div\",{staticClass:\"el-date-range-picker__time-header\"},[n(\"span\",{staticClass:\"el-date-range-picker__editors-wrap\"},[n(\"span\",{staticClass:\"el-date-range-picker__time-picker-wrap\"},[n(\"el-input\",{ref:\"minInput\",staticClass:\"el-date-range-picker__editor\",attrs:{size:\"small\",disabled:e.rangeState.selecting,placeholder:e.t(\"el.datepicker.startDate\"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,\"min\")},change:function(t){return e.handleDateChange(t,\"min\")}}})],1),n(\"span\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleMinTimeClose,expression:\"handleMinTimeClose\"}],staticClass:\"el-date-range-picker__time-picker-wrap\"},[n(\"el-input\",{staticClass:\"el-date-range-picker__editor\",attrs:{size:\"small\",disabled:e.rangeState.selecting,placeholder:e.t(\"el.datepicker.startTime\"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,\"min\")},change:function(t){return e.handleTimeChange(t,\"min\")}}}),n(\"time-picker\",{ref:\"minTimePicker\",attrs:{\"time-arrow-control\":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),n(\"span\",{staticClass:\"el-icon-arrow-right\"}),n(\"span\",{staticClass:\"el-date-range-picker__editors-wrap is-right\"},[n(\"span\",{staticClass:\"el-date-range-picker__time-picker-wrap\"},[n(\"el-input\",{staticClass:\"el-date-range-picker__editor\",attrs:{size:\"small\",disabled:e.rangeState.selecting,placeholder:e.t(\"el.datepicker.endDate\"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,\"max\")},change:function(t){return e.handleDateChange(t,\"max\")}}})],1),n(\"span\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.handleMaxTimeClose,expression:\"handleMaxTimeClose\"}],staticClass:\"el-date-range-picker__time-picker-wrap\"},[n(\"el-input\",{staticClass:\"el-date-range-picker__editor\",attrs:{size:\"small\",disabled:e.rangeState.selecting,placeholder:e.t(\"el.datepicker.endTime\"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,\"max\")},change:function(t){return e.handleTimeChange(t,\"max\")}}}),n(\"time-picker\",{ref:\"maxTimePicker\",attrs:{\"time-arrow-control\":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),n(\"div\",{staticClass:\"el-picker-panel__content el-date-range-picker__content is-left\"},[n(\"div\",{staticClass:\"el-date-range-picker__header\"},[n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",attrs:{type:\"button\"},on:{click:e.leftPrevYear}}),n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-left\",attrs:{type:\"button\"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",class:{\"is-disabled\":!e.enableYearArrow},attrs:{type:\"button\",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-right\",class:{\"is-disabled\":!e.enableMonthArrow},attrs:{type:\"button\",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),n(\"div\",[e._v(e._s(e.leftLabel))])]),n(\"date-table\",{attrs:{\"selection-mode\":\"range\",date:e.leftDate,\"default-value\":e.defaultValue,\"min-date\":e.minDate,\"max-date\":e.maxDate,\"range-state\":e.rangeState,\"disabled-date\":e.disabledDate,\"cell-class-name\":e.cellClassName,\"first-day-of-week\":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),n(\"div\",{staticClass:\"el-picker-panel__content el-date-range-picker__content is-right\"},[n(\"div\",{staticClass:\"el-date-range-picker__header\"},[e.unlinkPanels?n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",class:{\"is-disabled\":!e.enableYearArrow},attrs:{type:\"button\",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-left\",class:{\"is-disabled\":!e.enableMonthArrow},attrs:{type:\"button\",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",attrs:{type:\"button\"},on:{click:e.rightNextYear}}),n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-right\",attrs:{type:\"button\"},on:{click:e.rightNextMonth}}),n(\"div\",[e._v(e._s(e.rightLabel))])]),n(\"date-table\",{attrs:{\"selection-mode\":\"range\",date:e.rightDate,\"default-value\":e.defaultValue,\"min-date\":e.minDate,\"max-date\":e.maxDate,\"range-state\":e.rangeState,\"disabled-date\":e.disabledDate,\"cell-class-name\":e.cellClassName,\"first-day-of-week\":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?n(\"div\",{staticClass:\"el-picker-panel__footer\"},[n(\"el-button\",{staticClass:\"el-picker-panel__link-btn\",attrs:{size:\"mini\",type:\"text\"},on:{click:e.handleClear}},[e._v(\"\\n        \"+e._s(e.t(\"el.datepicker.clear\"))+\"\\n      \")]),n(\"el-button\",{staticClass:\"el-picker-panel__link-btn\",attrs:{plain:\"\",size:\"mini\",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v(\"\\n        \"+e._s(e.t(\"el.datepicker.confirm\"))+\"\\n      \")])],1):e._e()])])};Qi._withStripped=!0;var er=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(pi.nextDate)(new Date(e),1)]:[new Date,Object(pi.nextDate)(new Date,1)]},tr=r({mixins:[p.a],directives:{Clickoutside:E.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+\" \"+this.t(\"el.datepicker.year\")+\" \"+this.t(\"el.datepicker.month\"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+\" \"+this.t(\"el.datepicker.year\")+\" \"+this.t(\"el.datepicker.month\"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(pi.formatDate)(this.minDate,this.dateFormat):\"\"},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(pi.formatDate)(this.maxDate||this.minDate,this.dateFormat):\"\"},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(pi.formatDate)(this.minDate,this.timeFormat):\"\"},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(pi.formatDate)(this.maxDate||this.minDate,this.timeFormat):\"\"},timeFormat:function(){return this.format?Object(pi.extractTimeFormat)(this.format):\"HH:mm:ss\"},dateFormat:function(){return this.format?Object(pi.extractDateFormat)(this.format):\"yyyy-MM-dd\"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)<new Date(this.rightYear,this.rightMonth)},enableYearArrow:function(){return this.unlinkPanels&&12*this.rightYear+this.rightMonth-(12*this.leftYear+this.leftMonth+1)>=12}},data:function(){return{popperClass:\"\",value:[],defaultValue:null,defaultTime:null,minDate:\"\",maxDate:\"\",leftDate:new Date,rightDate:Object(pi.nextMonth)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:\"\",visible:\"\",disabledDate:\"\",cellClassName:\"\",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:\"\",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDate<t.minDate){t.$refs.maxTimePicker.selectableRange=[[Object(pi.parseDate)(Object(pi.formatDate)(t.minDate,\"HH:mm:ss\"),\"HH:mm:ss\"),Object(pi.parseDate)(\"23:59:59\",\"HH:mm:ss\")]]}}),e&&this.$refs.minTimePicker&&(this.$refs.minTimePicker.date=e,this.$refs.minTimePicker.value=e)},maxDate:function(e){this.dateUserInput.max=null,this.timeUserInput.max=null,e&&this.$refs.maxTimePicker&&(this.$refs.maxTimePicker.date=e,this.$refs.maxTimePicker.value=e)},minTimePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){t.$refs.minTimePicker.date=t.minDate,t.$refs.minTimePicker.value=t.minDate,t.$refs.minTimePicker.adjustSpinners()})},maxTimePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){t.$refs.maxTimePicker.date=t.maxDate,t.$refs.maxTimePicker.value=t.maxDate,t.$refs.maxTimePicker.adjustSpinners()})},value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(pi.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(pi.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),n=this.minDate.getMonth(),i=this.maxDate.getFullYear(),r=this.maxDate.getMonth();this.rightDate=t===i&&n===r?Object(pi.nextMonth)(this.maxDate):this.maxDate}else this.rightDate=Object(pi.nextMonth)(this.leftDate);else this.leftDate=er(this.defaultValue)[0],this.rightDate=Object(pi.nextMonth)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=er(e),n=t[0],i=t[1];this.leftDate=n,this.rightDate=e&&e[1]&&this.unlinkPanels?i:Object(pi.nextMonth)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=er(this.defaultValue)[0],this.rightDate=Object(pi.nextMonth)(this.leftDate),this.$emit(\"pick\",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleDateInput:function(e,t){if(this.dateUserInput[t]=e,e.length===this.dateFormat.length){var n=Object(pi.parseDate)(e,this.dateFormat);if(n){if(\"function\"==typeof this.disabledDate&&this.disabledDate(new Date(n)))return;\"min\"===t?(this.minDate=Object(pi.modifyDate)(this.minDate||new Date,n.getFullYear(),n.getMonth(),n.getDate()),this.leftDate=new Date(n),this.unlinkPanels||(this.rightDate=Object(pi.nextMonth)(this.leftDate))):(this.maxDate=Object(pi.modifyDate)(this.maxDate||new Date,n.getFullYear(),n.getMonth(),n.getDate()),this.rightDate=new Date(n),this.unlinkPanels||(this.leftDate=Object(pi.prevMonth)(n)))}}},handleDateChange:function(e,t){var n=Object(pi.parseDate)(e,this.dateFormat);n&&(\"min\"===t?(this.minDate=Object(pi.modifyDate)(this.minDate,n.getFullYear(),n.getMonth(),n.getDate()),this.minDate>this.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(pi.modifyDate)(this.maxDate,n.getFullYear(),n.getMonth(),n.getDate()),this.maxDate<this.minDate&&(this.minDate=this.maxDate)))},handleTimeInput:function(e,t){var n=this;if(this.timeUserInput[t]=e,e.length===this.timeFormat.length){var i=Object(pi.parseDate)(e,this.timeFormat);i&&(\"min\"===t?(this.minDate=Object(pi.modifyTime)(this.minDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.$nextTick(function(e){return n.$refs.minTimePicker.adjustSpinners()})):(this.maxDate=Object(pi.modifyTime)(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.$nextTick(function(e){return n.$refs.maxTimePicker.adjustSpinners()})))}},handleTimeChange:function(e,t){var n=Object(pi.parseDate)(e,this.timeFormat);n&&(\"min\"===t?(this.minDate=Object(pi.modifyTime)(this.minDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.minDate>this.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(pi.modifyTime)(this.maxDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.maxDate<this.minDate&&(this.minDate=this.maxDate),this.$refs.maxTimePicker.value=this.minDate,this.maxTimePickerVisible=!1))},handleRangePick:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.defaultTime||[],r=Object(pi.modifyWithTimeString)(e.minDate,i[0]),o=Object(pi.modifyWithTimeString)(e.maxDate,i[1]);this.maxDate===o&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=o,this.minDate=r,setTimeout(function(){t.maxDate=o,t.minDate=r},10),n&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,n){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(pi.modifyTime)(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),n||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()<this.minDate.getTime())&&(this.maxDate=new Date(this.minDate))},handleMinTimeClose:function(){this.minTimePickerVisible=!1},handleMaxTimePick:function(e,t,n){this.maxDate&&e&&(this.maxDate=Object(pi.modifyTime)(this.maxDate,e.getHours(),e.getMinutes(),e.getSeconds())),n||(this.maxTimePickerVisible=t),this.maxDate&&this.minDate&&this.minDate.getTime()>this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(pi.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(pi.nextMonth)(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(pi.prevMonth)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(pi.nextMonth)(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(pi.nextYear)(this.rightDate):(this.leftDate=Object(pi.nextYear)(this.leftDate),this.rightDate=Object(pi.nextMonth)(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(pi.nextMonth)(this.rightDate):(this.leftDate=Object(pi.nextMonth)(this.leftDate),this.rightDate=Object(pi.nextMonth)(this.leftDate))},leftNextYear:function(){this.leftDate=Object(pi.nextYear)(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(pi.nextMonth)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(pi.prevYear)(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(pi.prevMonth)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit(\"pick\",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(pi.isDate)(e[0])&&Object(pi.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&(\"function\"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate&&null==this.maxDate&&(this.rangeState.selecting=!1),this.minDate=this.value&&Object(pi.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(pi.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:Bi,DateTable:Ki,ElInput:d.a,ElButton:G.a}},Qi,[],!1,null,null,null);tr.options.__file=\"packages/date-picker/src/panel/date-range.vue\";var nr=tr.exports,ir=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":function(t){e.$emit(\"dodestroy\")}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-picker-panel el-date-range-picker el-popper\",class:[{\"has-sidebar\":e.$slots.sidebar||e.shortcuts},e.popperClass]},[n(\"div\",{staticClass:\"el-picker-panel__body-wrapper\"},[e._t(\"sidebar\"),e.shortcuts?n(\"div\",{staticClass:\"el-picker-panel__sidebar\"},e._l(e.shortcuts,function(t,i){return n(\"button\",{key:i,staticClass:\"el-picker-panel__shortcut\",attrs:{type:\"button\"},on:{click:function(n){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),n(\"div\",{staticClass:\"el-picker-panel__body\"},[n(\"div\",{staticClass:\"el-picker-panel__content el-date-range-picker__content is-left\"},[n(\"div\",{staticClass:\"el-date-range-picker__header\"},[n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",attrs:{type:\"button\"},on:{click:e.leftPrevYear}}),e.unlinkPanels?n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",class:{\"is-disabled\":!e.enableYearArrow},attrs:{type:\"button\",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),n(\"div\",[e._v(e._s(e.leftLabel))])]),n(\"month-table\",{attrs:{\"selection-mode\":\"range\",date:e.leftDate,\"default-value\":e.defaultValue,\"min-date\":e.minDate,\"max-date\":e.maxDate,\"range-state\":e.rangeState,\"disabled-date\":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),n(\"div\",{staticClass:\"el-picker-panel__content el-date-range-picker__content is-right\"},[n(\"div\",{staticClass:\"el-date-range-picker__header\"},[e.unlinkPanels?n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",class:{\"is-disabled\":!e.enableYearArrow},attrs:{type:\"button\",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),n(\"button\",{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",attrs:{type:\"button\"},on:{click:e.rightNextYear}}),n(\"div\",[e._v(e._s(e.rightLabel))])]),n(\"month-table\",{attrs:{\"selection-mode\":\"range\",date:e.rightDate,\"default-value\":e.defaultValue,\"min-date\":e.minDate,\"max-date\":e.maxDate,\"range-state\":e.rangeState,\"disabled-date\":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};ir._withStripped=!0;var rr=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(pi.nextMonth)(new Date(e))]:[new Date,Object(pi.nextMonth)(new Date)]},or=r({mixins:[p.a],directives:{Clickoutside:E.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+\" \"+this.t(\"el.datepicker.year\")},rightLabel:function(){return this.rightDate.getFullYear()+\" \"+this.t(\"el.datepicker.year\")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:\"\",value:[],defaultValue:null,defaultTime:null,minDate:\"\",maxDate:\"\",leftDate:new Date,rightDate:Object(pi.nextYear)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:\"\",visible:\"\",disabledDate:\"\",format:\"\",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(pi.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(pi.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),n=this.maxDate.getFullYear();this.rightDate=t===n?Object(pi.nextYear)(this.maxDate):this.maxDate}else this.rightDate=Object(pi.nextYear)(this.leftDate);else this.leftDate=rr(this.defaultValue)[0],this.rightDate=Object(pi.nextYear)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=rr(e),n=t[0],i=t[1];this.leftDate=n,this.rightDate=e&&e[1]&&n.getFullYear()!==i.getFullYear()&&this.unlinkPanels?i:Object(pi.nextYear)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=rr(this.defaultValue)[0],this.rightDate=Object(pi.nextYear)(this.leftDate),this.$emit(\"pick\",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.defaultTime||[],r=Object(pi.modifyWithTimeString)(e.minDate,i[0]),o=Object(pi.modifyWithTimeString)(e.maxDate,i[1]);this.maxDate===o&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=o,this.minDate=r,setTimeout(function(){t.maxDate=o,t.minDate=r},10),n&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(pi.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(pi.prevYear)(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(pi.nextYear)(this.leftDate)),this.rightDate=Object(pi.nextYear)(this.rightDate)},leftNextYear:function(){this.leftDate=Object(pi.nextYear)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(pi.prevYear)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit(\"pick\",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(pi.isDate)(e[0])&&Object(pi.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&(\"function\"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(pi.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(pi.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:qi,ElInput:d.a,ElButton:G.a}},ir,[],!1,null,null,null);or.options.__file=\"packages/date-picker/src/panel/month-range.vue\";var ar=or.exports,sr=function(e){return\"daterange\"===e||\"datetimerange\"===e?nr:\"monthrange\"===e?ar:Ji},lr={mixins:[Ii],name:\"ElDatePicker\",props:{type:{type:String,default:\"date\"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=sr(e),this.mountPicker()):this.panel=sr(e)}},created:function(){this.panel=sr(this.type)},install:function(e){e.component(lr.name,lr)}},ur=lr,cr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"before-enter\":e.handleMenuEnter,\"after-leave\":function(t){e.$emit(\"dodestroy\")}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],ref:\"popper\",staticClass:\"el-picker-panel time-select el-popper\",class:e.popperClass,style:{width:e.width+\"px\"}},[n(\"el-scrollbar\",{attrs:{noresize:\"\",\"wrap-class\":\"el-picker-panel__content\"}},e._l(e.items,function(t){return n(\"div\",{key:t.value,staticClass:\"time-select-item\",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(n){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])};cr._withStripped=!0;var hr=function(e){var t=(e||\"\").split(\":\");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},dr=function(e,t){var n=hr(e),i=hr(t),r=n.minutes+60*n.hours,o=i.minutes+60*i.hours;return r===o?0:r>o?1:-1},fr=function(e,t){var n=hr(e),i=hr(t),r={hours:n.hours,minutes:n.minutes};return r.minutes+=i.minutes,r.hours+=i.hours,r.hours+=Math.floor(r.minutes/60),r.minutes=r.minutes%60,function(e){return(e.hours<10?\"0\"+e.hours:e.hours)+\":\"+(e.minutes<10?\"0\"+e.minutes:e.minutes)}(r)},pr=r({components:{ElScrollbar:B.a},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit(\"pick\",e.value)},handleClear:function(){this.$emit(\"pick\",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\".selected\",t=this.$refs.popper.querySelector(\".el-picker-panel__content\");$t()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),n=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),i=(t?\".selected\":n&&\".default\")||\".time-select-item:not(.disabled)\";this.$nextTick(function(){return e.scrollToOption(i)})},scrollDown:function(e){for(var t=this.items,n=t.length,i=t.length,r=t.map(function(e){return e.value}).indexOf(this.value);i--;)if(!t[r=(r+e+n)%n].disabled)return void this.$emit(\"pick\",t[r].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var n={40:1,38:-1}[t.toString()];return this.scrollDown(n),void e.stopPropagation()}}},data:function(){return{popperClass:\"\",start:\"09:00\",end:\"18:00\",step:\"00:30\",value:\"\",defaultValue:\"\",visible:!1,minTime:\"\",maxTime:\"\",width:0}},computed:{items:function(){var e=this.start,t=this.end,n=this.step,i=[];if(e&&t&&n)for(var r=e;dr(r,t)<=0;)i.push({value:r,disabled:dr(r,this.minTime||\"-1:-1\")<=0||dr(r,this.maxTime||\"100:100\")>=0}),r=fr(r,n);return i}}},cr,[],!1,null,null,null);pr.options.__file=\"packages/date-picker/src/panel/time-select.vue\";var gr=pr.exports,mr={mixins:[Ii],name:\"ElTimeSelect\",componentName:\"ElTimeSelect\",props:{type:{type:String,default:\"time-select\"}},beforeCreate:function(){this.panel=gr},install:function(e){e.component(mr.name,mr)}},vr=mr,yr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":function(t){e.$emit(\"dodestroy\")}}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-time-range-picker el-picker-panel el-popper\",class:e.popperClass},[n(\"div\",{staticClass:\"el-time-range-picker__content\"},[n(\"div\",{staticClass:\"el-time-range-picker__cell\"},[n(\"div\",{staticClass:\"el-time-range-picker__header\"},[e._v(e._s(e.t(\"el.datepicker.startTime\")))]),n(\"div\",{staticClass:\"el-time-range-picker__body el-time-panel__content\",class:{\"has-seconds\":e.showSeconds,\"is-arrow\":e.arrowControl}},[n(\"time-spinner\",{ref:\"minSpinner\",attrs:{\"show-seconds\":e.showSeconds,\"am-pm-mode\":e.amPmMode,\"arrow-control\":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,\"select-range\":e.setMinSelectionRange}})],1)]),n(\"div\",{staticClass:\"el-time-range-picker__cell\"},[n(\"div\",{staticClass:\"el-time-range-picker__header\"},[e._v(e._s(e.t(\"el.datepicker.endTime\")))]),n(\"div\",{staticClass:\"el-time-range-picker__body el-time-panel__content\",class:{\"has-seconds\":e.showSeconds,\"is-arrow\":e.arrowControl}},[n(\"time-spinner\",{ref:\"maxSpinner\",attrs:{\"show-seconds\":e.showSeconds,\"am-pm-mode\":e.amPmMode,\"arrow-control\":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,\"select-range\":e.setMaxSelectionRange}})],1)])]),n(\"div\",{staticClass:\"el-time-panel__footer\"},[n(\"button\",{staticClass:\"el-time-panel__btn cancel\",attrs:{type:\"button\"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t(\"el.datepicker.cancel\")))]),n(\"button\",{staticClass:\"el-time-panel__btn confirm\",attrs:{type:\"button\",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t(\"el.datepicker.confirm\")))])])])])};yr._withStripped=!0;var br=Object(pi.parseDate)(\"00:00:00\",\"HH:mm:ss\"),xr=Object(pi.parseDate)(\"23:59:59\",\"HH:mm:ss\"),_r=function(e){return Object(pi.modifyDate)(xr,e.getFullYear(),e.getMonth(),e.getDate())},wr=function(e,t){return new Date(Math.min(e.getTime()+t,_r(e).getTime()))},Cr=r({mixins:[p.a],components:{TimeSpinner:Ni},computed:{showSeconds:function(){return-1!==(this.format||\"\").indexOf(\"ss\")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]<this.offset?this.$refs.minSpinner:this.$refs.maxSpinner},btnDisabled:function(){return this.minDate.getTime()>this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||\"\").indexOf(\"A\")?\"A\":-1!==(this.format||\"\").indexOf(\"a\")?\"a\":\"\"}},data:function(){return{popperClass:\"\",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:\"HH:mm:ss\",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=wr(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=wr(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange(\"hours\")}))}},methods:{handleClear:function(){this.$emit(\"pick\",null)},handleCancel:function(){this.$emit(\"pick\",this.oldValue)},handleMinChange:function(e){this.minDate=Object(pi.clearMilliseconds)(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(pi.clearMilliseconds)(e),this.handleChange()},handleChange:function(){var e;this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[(e=this.minDate,Object(pi.modifyDate)(br,e.getFullYear(),e.getMonth(),e.getDate())),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,_r(this.maxDate)]],this.$emit(\"pick\",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit(\"select-range\",e,t,\"min\"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit(\"select-range\",e,t,\"max\"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,n=this.$refs.maxSpinner.selectableRange;this.minDate=Object(pi.limitTimeRange)(this.minDate,t,this.format),this.maxDate=Object(pi.limitTimeRange)(this.maxDate,n,this.format),this.$emit(\"pick\",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],n=[\"hours\",\"minutes\"].concat(this.showSeconds?[\"seconds\"]:[]),i=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,r=t.length/2;i<r?this.$refs.minSpinner.emitSelectRange(n[i]):this.$refs.maxSpinner.emitSelectRange(n[i-r])},isValidValue:function(e){return Array.isArray(e)&&Object(pi.timeWithinRange)(this.minDate,this.$refs.minSpinner.selectableRange)&&Object(pi.timeWithinRange)(this.maxDate,this.$refs.maxSpinner.selectableRange)},handleKeydown:function(e){var t=e.keyCode,n={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var i=n[t];return this.changeSelectionRange(i),void e.preventDefault()}if(38===t||40===t){var r=n[t];return this.spinner.scrollDown(r),void e.preventDefault()}}}},yr,[],!1,null,null,null);Cr.options.__file=\"packages/date-picker/src/panel/time-range.vue\";var Sr=Cr.exports,kr={mixins:[Ii],name:\"ElTimePicker\",props:{isRange:Boolean,arrowControl:Boolean},data:function(){return{type:\"\"}},watch:{isRange:function(e){this.picker?(this.unmountPicker(),this.type=e?\"timerange\":\"time\",this.panel=e?Sr:Bi,this.mountPicker()):(this.type=e?\"timerange\":\"time\",this.panel=e?Sr:Bi)}},created:function(){this.type=this.isRange?\"timerange\":\"time\",this.panel=this.isRange?Sr:Bi},install:function(e){e.component(kr.name,kr)}},Tr=kr,Mr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"span\",[n(\"transition\",{attrs:{name:e.transition},on:{\"after-enter\":e.handleAfterEnter,\"after-leave\":e.handleAfterLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.disabled&&e.showPopper,expression:\"!disabled && showPopper\"}],ref:\"popper\",staticClass:\"el-popover el-popper\",class:[e.popperClass,e.content&&\"el-popover--plain\"],style:{width:e.width+\"px\"},attrs:{role:\"tooltip\",id:e.tooltipId,\"aria-hidden\":e.disabled||!e.showPopper?\"true\":\"false\"}},[e.title?n(\"div\",{staticClass:\"el-popover__title\",domProps:{textContent:e._s(e.title)}}):e._e(),e._t(\"default\",[e._v(e._s(e.content))])],2)]),e._t(\"reference\")],2)};Mr._withStripped=!0;var Dr=r({name:\"ElPopover\",mixins:[N.a],props:{trigger:{type:String,default:\"click\",validator:function(e){return[\"click\",\"focus\",\"hover\",\"manual\"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:\"fade-in-linear\"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return\"el-popover-\"+Object(g.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit(\"show\"):this.$emit(\"hide\"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(pe.addClass)(t,\"el-popover__reference\"),t.setAttribute(\"aria-describedby\",this.tooltipId),t.setAttribute(\"tabindex\",this.tabindex),n.setAttribute(\"tabindex\",0),\"click\"!==this.trigger&&(Object(pe.on)(t,\"focusin\",function(){e.handleFocus();var n=t.__vue__;n&&\"function\"==typeof n.focus&&n.focus()}),Object(pe.on)(n,\"focusin\",this.handleFocus),Object(pe.on)(t,\"focusout\",this.handleBlur),Object(pe.on)(n,\"focusout\",this.handleBlur)),Object(pe.on)(t,\"keydown\",this.handleKeydown),Object(pe.on)(t,\"click\",this.handleClick)),\"click\"===this.trigger?(Object(pe.on)(t,\"click\",this.doToggle),Object(pe.on)(document,\"click\",this.handleDocumentClick)):\"hover\"===this.trigger?(Object(pe.on)(t,\"mouseenter\",this.handleMouseEnter),Object(pe.on)(n,\"mouseenter\",this.handleMouseEnter),Object(pe.on)(t,\"mouseleave\",this.handleMouseLeave),Object(pe.on)(n,\"mouseleave\",this.handleMouseLeave)):\"focus\"===this.trigger&&(this.tabindex<0&&console.warn(\"[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key\"),t.querySelector(\"input, textarea\")?(Object(pe.on)(t,\"focusin\",this.doShow),Object(pe.on)(t,\"focusout\",this.doClose)):(Object(pe.on)(t,\"mousedown\",this.doShow),Object(pe.on)(t,\"mouseup\",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(pe.addClass)(this.referenceElm,\"focusing\"),\"click\"!==this.trigger&&\"focus\"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(pe.removeClass)(this.referenceElm,\"focusing\")},handleBlur:function(){Object(pe.removeClass)(this.referenceElm,\"focusing\"),\"click\"!==this.trigger&&\"focus\"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&\"manual\"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout(function(){e.showPopper=!1},this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&n&&!n.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit(\"after-enter\")},handleAfterLeave:function(){this.$emit(\"after-leave\"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(pe.off)(e,\"click\",this.doToggle),Object(pe.off)(e,\"mouseup\",this.doClose),Object(pe.off)(e,\"mousedown\",this.doShow),Object(pe.off)(e,\"focusin\",this.doShow),Object(pe.off)(e,\"focusout\",this.doClose),Object(pe.off)(e,\"mousedown\",this.doShow),Object(pe.off)(e,\"mouseup\",this.doClose),Object(pe.off)(e,\"mouseleave\",this.handleMouseLeave),Object(pe.off)(e,\"mouseenter\",this.handleMouseEnter),Object(pe.off)(document,\"click\",this.handleDocumentClick)}},Mr,[],!1,null,null,null);Dr.options.__file=\"packages/popover/src/main.vue\";var Ar=Dr.exports,Ir=function(e,t,n){var i=t.expression?t.value:t.arg,r=n.context.$refs[i];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},Or={bind:function(e,t,n){Ir(e,t,n)},inserted:function(e,t,n){Ir(e,t,n)}};fn.a.directive(\"popover\",Or),Ar.install=function(e){e.directive(\"popover\",Or),e.component(Ar.name,Ar)},Ar.directive=Or;var Er=Ar,Lr={name:\"ElTooltip\",mixins:[N.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:\"dark\"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:\"el-fade-in-linear\"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:\"el-tooltip-\"+Object(g.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new fn.a({data:{node:\"\"},render:function(e){return this.node}}).$mount(),this.debounceClose=I()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e(\"transition\",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e(\"div\",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:\"popper\",attrs:{role:\"tooltip\",id:this.tooltipId,\"aria-hidden\":this.disabled||!this.showPopper?\"true\":\"false\"},directives:[{name:\"show\",value:!this.disabled&&this.showPopper}],class:[\"el-tooltip__popper\",\"is-\"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var n=this.getFirstElement();if(!n)return null;var i=n.data=n.data||{};return i.staticClass=this.addTooltipClass(i.staticClass),n},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute(\"aria-describedby\",this.tooltipId),this.$el.setAttribute(\"tabindex\",this.tabindex),Object(pe.on)(this.referenceElm,\"mouseenter\",this.show),Object(pe.on)(this.referenceElm,\"mouseleave\",this.hide),Object(pe.on)(this.referenceElm,\"focus\",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),Object(pe.on)(this.referenceElm,\"blur\",this.handleBlur),Object(pe.on)(this.referenceElm,\"click\",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?Object(pe.addClass)(this.referenceElm,\"focusing\"):Object(pe.removeClass)(this.referenceElm,\"focusing\")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?\"el-tooltip \"+e.replace(\"el-tooltip\",\"\"):\"el-tooltip\"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,n=0;n<e.length;n++)e[n]&&e[n].tag&&(t=e[n]);return t}},beforeDestroy:function(){this.popperVM&&this.popperVM.$destroy()},destroyed:function(){var e=this.referenceElm;1===e.nodeType&&(Object(pe.off)(e,\"mouseenter\",this.show),Object(pe.off)(e,\"mouseleave\",this.hide),Object(pe.off)(e,\"focus\",this.handleFocus),Object(pe.off)(e,\"blur\",this.handleBlur),Object(pe.off)(e,\"click\",this.removeFocusing))},install:function(e){e.component(Lr.name,Lr)}},Pr=Lr,Nr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"msgbox-fade\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-message-box__wrapper\",attrs:{tabindex:\"-1\",role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":e.title||\"dialog\"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[n(\"div\",{staticClass:\"el-message-box\",class:[e.customClass,e.center&&\"el-message-box--center\"]},[null!==e.title?n(\"div\",{staticClass:\"el-message-box__header\"},[n(\"div\",{staticClass:\"el-message-box__title\"},[e.icon&&e.center?n(\"div\",{class:[\"el-message-box__status\",e.icon]}):e._e(),n(\"span\",[e._v(e._s(e.title))])]),e.showClose?n(\"button\",{staticClass:\"el-message-box__headerbtn\",attrs:{type:\"button\",\"aria-label\":\"Close\"},on:{click:function(t){e.handleAction(e.distinguishCancelAndClose?\"close\":\"cancel\")},keydown:function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"enter\",13,t.key,\"Enter\"))return null;e.handleAction(e.distinguishCancelAndClose?\"close\":\"cancel\")}}},[n(\"i\",{staticClass:\"el-message-box__close el-icon-close\"})]):e._e()]):e._e(),n(\"div\",{staticClass:\"el-message-box__content\"},[n(\"div\",{staticClass:\"el-message-box__container\"},[e.icon&&!e.center&&\"\"!==e.message?n(\"div\",{class:[\"el-message-box__status\",e.icon]}):e._e(),\"\"!==e.message?n(\"div\",{staticClass:\"el-message-box__message\"},[e._t(\"default\",[e.dangerouslyUseHTMLString?n(\"p\",{domProps:{innerHTML:e._s(e.message)}}):n(\"p\",[e._v(e._s(e.message))])])],2):e._e()]),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showInput,expression:\"showInput\"}],staticClass:\"el-message-box__input\"},[n(\"el-input\",{ref:\"input\",attrs:{type:e.inputType,placeholder:e.inputPlaceholder},nativeOn:{keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.handleInputEnter(t):null}},model:{value:e.inputValue,callback:function(t){e.inputValue=t},expression:\"inputValue\"}}),n(\"div\",{staticClass:\"el-message-box__errormsg\",style:{visibility:e.editorErrorMessage?\"visible\":\"hidden\"}},[e._v(e._s(e.editorErrorMessage))])],1)]),n(\"div\",{staticClass:\"el-message-box__btns\"},[e.showCancelButton?n(\"el-button\",{class:[e.cancelButtonClasses],attrs:{loading:e.cancelButtonLoading,round:e.roundButton,size:\"small\"},on:{keydown:function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"enter\",13,t.key,\"Enter\"))return null;e.handleAction(\"cancel\")}},nativeOn:{click:function(t){e.handleAction(\"cancel\")}}},[e._v(\"\\n          \"+e._s(e.cancelButtonText||e.t(\"el.messagebox.cancel\"))+\"\\n        \")]):e._e(),n(\"el-button\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showConfirmButton,expression:\"showConfirmButton\"}],ref:\"confirm\",class:[e.confirmButtonClasses],attrs:{loading:e.confirmButtonLoading,round:e.roundButton,size:\"small\"},on:{keydown:function(t){if(!(\"button\"in t)&&e._k(t.keyCode,\"enter\",13,t.key,\"Enter\"))return null;e.handleAction(\"confirm\")}},nativeOn:{click:function(t){e.handleAction(\"confirm\")}}},[e._v(\"\\n          \"+e._s(e.confirmButtonText||e.t(\"el.messagebox.confirm\"))+\"\\n        \")])],1)])])])};Nr._withStripped=!0;var Rr=n(39),Br=n.n(Rr),zr=void 0,Fr={success:\"success\",info:\"info\",warning:\"warning\",error:\"error\"},$r=r({mixins:[x.a,p.a],props:{modal:{default:!0},lockScroll:{default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{default:!0},closeOnPressEscape:{default:!0},closeOnHashChange:{default:!0},center:{default:!1,type:Boolean},roundButton:{default:!1,type:Boolean}},components:{ElInput:d.a,ElButton:G.a},computed:{icon:function(){var e=this.type;return this.iconClass||(e&&Fr[e]?\"el-icon-\"+Fr[e]:\"\")},confirmButtonClasses:function(){return\"el-button--primary \"+this.confirmButtonClass},cancelButtonClasses:function(){return\"\"+this.cancelButtonClass}},methods:{getSafeClose:function(){var e=this,t=this.uid;return function(){e.$nextTick(function(){t===e.uid&&e.doClose()})}},doClose:function(){var e=this;this.visible&&(this.visible=!1,this._closing=!0,this.onClose&&this.onClose(),zr.closeDialog(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose(),setTimeout(function(){e.action&&e.callback(e.action,e)}))},handleWrapperClick:function(){this.closeOnClickModal&&this.handleAction(this.distinguishCancelAndClose?\"close\":\"cancel\")},handleInputEnter:function(){if(\"textarea\"!==this.inputType)return this.handleAction(\"confirm\")},handleAction:function(e){(\"prompt\"!==this.$type||\"confirm\"!==e||this.validate())&&(this.action=e,\"function\"==typeof this.beforeClose?(this.close=this.getSafeClose(),this.beforeClose(e,this,this.close)):this.doClose())},validate:function(){if(\"prompt\"===this.$type){var e=this.inputPattern;if(e&&!e.test(this.inputValue||\"\"))return this.editorErrorMessage=this.inputErrorMessage||Object(Bt.t)(\"el.messagebox.error\"),Object(pe.addClass)(this.getInputElement(),\"invalid\"),!1;var t=this.inputValidator;if(\"function\"==typeof t){var n=t(this.inputValue);if(!1===n)return this.editorErrorMessage=this.inputErrorMessage||Object(Bt.t)(\"el.messagebox.error\"),Object(pe.addClass)(this.getInputElement(),\"invalid\"),!1;if(\"string\"==typeof n)return this.editorErrorMessage=n,Object(pe.addClass)(this.getInputElement(),\"invalid\"),!1}}return this.editorErrorMessage=\"\",Object(pe.removeClass)(this.getInputElement(),\"invalid\"),!0},getFirstFocus:function(){var e=this.$el.querySelector(\".el-message-box__btns .el-button\"),t=this.$el.querySelector(\".el-message-box__btns .el-message-box__title\");return e||t},getInputElement:function(){var e=this.$refs.input.$refs;return e.input||e.textarea},handleClose:function(){this.handleAction(\"close\")}},watch:{inputValue:{immediate:!0,handler:function(e){var t=this;this.$nextTick(function(n){\"prompt\"===t.$type&&null!==e&&t.validate()})}},visible:function(e){var t=this;e&&(this.uid++,\"alert\"!==this.$type&&\"confirm\"!==this.$type||this.$nextTick(function(){t.$refs.confirm.$el.focus()}),this.focusAfterClosed=document.activeElement,zr=new Br.a(this.$el,this.focusAfterClosed,this.getFirstFocus())),\"prompt\"===this.$type&&(e?setTimeout(function(){t.$refs.input&&t.$refs.input.$el&&t.getInputElement().focus()},500):(this.editorErrorMessage=\"\",Object(pe.removeClass)(this.getInputElement(),\"invalid\")))}},mounted:function(){var e=this;this.$nextTick(function(){e.closeOnHashChange&&window.addEventListener(\"hashchange\",e.close)})},beforeDestroy:function(){this.closeOnHashChange&&window.removeEventListener(\"hashchange\",this.close),setTimeout(function(){zr.closeDialog()})},data:function(){return{uid:1,title:void 0,message:\"\",type:\"\",iconClass:\"\",customClass:\"\",showInput:!1,inputValue:null,inputPlaceholder:\"\",inputType:\"text\",inputPattern:null,inputValidator:null,inputErrorMessage:\"\",showConfirmButton:!0,showCancelButton:!1,action:\"\",confirmButtonText:\"\",cancelButtonText:\"\",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonClass:\"\",confirmButtonDisabled:!1,cancelButtonClass:\"\",editorErrorMessage:null,callback:null,dangerouslyUseHTMLString:!1,focusAfterClosed:null,isOnComposition:!1,distinguishCancelAndClose:!1}}},Nr,[],!1,null,null,null);$r.options.__file=\"packages/message-box/src/main.vue\";var Vr=$r.exports,jr=n(23),Hr=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Wr={title:null,message:\"\",type:\"\",iconClass:\"\",showInput:!1,showClose:!0,modalFade:!0,lockScroll:!0,closeOnClickModal:!0,closeOnPressEscape:!0,closeOnHashChange:!0,inputValue:null,inputPlaceholder:\"\",inputType:\"text\",inputPattern:null,inputValidator:null,inputErrorMessage:\"\",showConfirmButton:!0,showCancelButton:!1,confirmButtonPosition:\"right\",confirmButtonHighlight:!1,cancelButtonHighlight:!1,confirmButtonText:\"\",cancelButtonText:\"\",confirmButtonClass:\"\",cancelButtonClass:\"\",customClass:\"\",beforeClose:null,dangerouslyUseHTMLString:!1,center:!1,roundButton:!1,distinguishCancelAndClose:!1},qr=fn.a.extend(Vr),Gr=void 0,Ur=void 0,Yr=[],Xr=function(e){if(Gr){var t=Gr.callback;\"function\"==typeof t&&(Ur.showInput?t(Ur.inputValue,e):t(e)),Gr.resolve&&(\"confirm\"===e?Ur.showInput?Gr.resolve({value:Ur.inputValue,action:e}):Gr.resolve(e):!Gr.reject||\"cancel\"!==e&&\"close\"!==e||Gr.reject(e))}},Kr=function e(){if(Ur||((Ur=new qr({el:document.createElement(\"div\")})).callback=Xr),Ur.action=\"\",(!Ur.visible||Ur.closeTimer)&&Yr.length>0){var t=(Gr=Yr.shift()).options;for(var n in t)t.hasOwnProperty(n)&&(Ur[n]=t[n]);void 0===t.callback&&(Ur.callback=Xr);var i=Ur.callback;Ur.callback=function(t,n){i(t,n),e()},Object(jr.isVNode)(Ur.message)?(Ur.$slots.default=[Ur.message],Ur.message=null):delete Ur.$slots.default,[\"modal\",\"showClose\",\"closeOnClickModal\",\"closeOnPressEscape\",\"closeOnHashChange\"].forEach(function(e){void 0===Ur[e]&&(Ur[e]=!0)}),document.body.appendChild(Ur.$el),fn.a.nextTick(function(){Ur.visible=!0})}},Zr=function e(t,n){if(!fn.a.prototype.$isServer){if(\"string\"==typeof t||Object(jr.isVNode)(t)?(t={message:t},\"string\"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!n&&(n=t.callback),\"undefined\"!=typeof Promise)return new Promise(function(i,r){Yr.push({options:Ve()({},Wr,e.defaults,t),callback:n,resolve:i,reject:r}),Kr()});Yr.push({options:Ve()({},Wr,e.defaults,t),callback:n}),Kr()}};Zr.setDefaults=function(e){Zr.defaults=e},Zr.alert=function(e,t,n){return\"object\"===(void 0===t?\"undefined\":Hr(t))?(n=t,t=\"\"):void 0===t&&(t=\"\"),Zr(Ve()({title:t,message:e,$type:\"alert\",closeOnPressEscape:!1,closeOnClickModal:!1},n))},Zr.confirm=function(e,t,n){return\"object\"===(void 0===t?\"undefined\":Hr(t))?(n=t,t=\"\"):void 0===t&&(t=\"\"),Zr(Ve()({title:t,message:e,$type:\"confirm\",showCancelButton:!0},n))},Zr.prompt=function(e,t,n){return\"object\"===(void 0===t?\"undefined\":Hr(t))?(n=t,t=\"\"):void 0===t&&(t=\"\"),Zr(Ve()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:\"prompt\"},n))},Zr.close=function(){Ur.doClose(),Ur.visible=!1,Yr=[],Gr=null};var Jr=Zr,Qr=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-breadcrumb\",attrs:{\"aria-label\":\"Breadcrumb\",role:\"navigation\"}},[this._t(\"default\")],2)};Qr._withStripped=!0;var eo=r({name:\"ElBreadcrumb\",props:{separator:{type:String,default:\"/\"},separatorClass:{type:String,default:\"\"}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(\".el-breadcrumb__item\");e.length&&e[e.length-1].setAttribute(\"aria-current\",\"page\")}},Qr,[],!1,null,null,null);eo.options.__file=\"packages/breadcrumb/src/breadcrumb.vue\";var to=eo.exports;to.install=function(e){e.component(to.name,to)};var no=to,io=function(){var e=this.$createElement,t=this._self._c||e;return t(\"span\",{staticClass:\"el-breadcrumb__item\"},[t(\"span\",{ref:\"link\",class:[\"el-breadcrumb__inner\",this.to?\"is-link\":\"\"],attrs:{role:\"link\"}},[this._t(\"default\")],2),this.separatorClass?t(\"i\",{staticClass:\"el-breadcrumb__separator\",class:this.separatorClass}):t(\"span\",{staticClass:\"el-breadcrumb__separator\",attrs:{role:\"presentation\"}},[this._v(this._s(this.separator))])])};io._withStripped=!0;var ro=r({name:\"ElBreadcrumbItem\",props:{to:{},replace:Boolean},data:function(){return{separator:\"\",separatorClass:\"\"}},inject:[\"elBreadcrumb\"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute(\"role\",\"link\"),t.addEventListener(\"click\",function(t){var n=e.to,i=e.$router;n&&i&&(e.replace?i.replace(n):i.push(n))})}},io,[],!1,null,null,null);ro.options.__file=\"packages/breadcrumb/src/breadcrumb-item.vue\";var oo=ro.exports;oo.install=function(e){e.component(oo.name,oo)};var ao=oo,so=function(){var e=this.$createElement;return(this._self._c||e)(\"form\",{staticClass:\"el-form\",class:[this.labelPosition?\"el-form--label-\"+this.labelPosition:\"\",{\"el-form--inline\":this.inline}]},[this._t(\"default\")],2)};so._withStripped=!0;var lo=r({name:\"ElForm\",componentName:\"ElForm\",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:\"\"},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+\"px\":\"\"}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on(\"el.form.addField\",function(t){t&&e.fields.push(t)}),this.$on(\"el.form.removeField\",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn(\"[Element Warn][Form]model is required for resetFields to work.\")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(e.length?\"string\"==typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields).forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var n=void 0;\"function\"!=typeof e&&window.Promise&&(n=new window.Promise(function(t,n){e=function(e){e?t(e):n(e)}}));var i=!0,r=0;0===this.fields.length&&e&&e(!0);var o={};return this.fields.forEach(function(n){n.validate(\"\",function(n,a){n&&(i=!1),o=Ve()({},o,a),\"function\"==typeof e&&++r===t.fields.length&&e(i,o)})}),n||void 0}console.warn(\"[Element Warn][Form]model is required for validate to work!\")},validateField:function(e,t){e=[].concat(e);var n=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});n.length?n.forEach(function(e){e.validate(\"\",t)}):console.warn(\"[Element Warn]please pass correct props!\")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error(\"[ElementForm]unpected width \",e);return t},registerLabelWidth:function(e,t){if(e&&t){var n=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(n,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},so,[],!1,null,null,null);lo.options.__file=\"packages/form/src/form.vue\";var uo=lo.exports;uo.install=function(e){e.component(uo.name,uo)};var co=uo,ho=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-form-item\",class:[{\"el-form-item--feedback\":e.elForm&&e.elForm.statusIcon,\"is-error\":\"error\"===e.validateState,\"is-validating\":\"validating\"===e.validateState,\"is-success\":\"success\"===e.validateState,\"is-required\":e.isRequired||e.required,\"is-no-asterisk\":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?\"el-form-item--\"+e.sizeClass:\"\"]},[n(\"label-wrap\",{attrs:{\"is-auto-width\":e.labelStyle&&\"auto\"===e.labelStyle.width,\"update-all\":\"auto\"===e.form.labelWidth}},[e.label||e.$slots.label?n(\"label\",{staticClass:\"el-form-item__label\",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t(\"label\",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),n(\"div\",{staticClass:\"el-form-item__content\",style:e.contentStyle},[e._t(\"default\"),n(\"transition\",{attrs:{name:\"el-zoom-in-top\"}},[\"error\"===e.validateState&&e.showMessage&&e.form.showMessage?e._t(\"error\",[n(\"div\",{staticClass:\"el-form-item__error\",class:{\"el-form-item__error--inline\":\"boolean\"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v(\"\\n          \"+e._s(e.validateMessage)+\"\\n        \")])],{error:e.validateMessage}):e._e()],2)],2)],1)};ho._withStripped=!0;var fo=n(40),po=n.n(fo),go=r({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:[\"elForm\",\"elFormItem\"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var n=this.elForm.autoLabelWidth,i={};if(n&&\"auto\"!==n){var r=parseInt(n,10)-this.computedWidth;r&&(i.marginLeft=r+\"px\")}return e(\"div\",{class:\"el-form-item__label-wrap\",style:i},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"update\";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&(\"update\"===e?this.computedWidth=this.getLabelWidth():\"remove\"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth(\"update\")},updated:function(){this.updateLabelWidth(\"update\")},beforeDestroy:function(){this.updateLabelWidth(\"remove\")}},void 0,void 0,!1,null,null,null);go.options.__file=\"packages/form/src/label-wrap.vue\";var mo=go.exports,vo=r({name:\"ElFormItem\",componentName:\"ElFormItem\",mixins:[S.a],provide:function(){return{elFormItem:this}},inject:[\"elForm\"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:\"\"},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:mo},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?\"error\":\"\"}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if(\"top\"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if(\"top\"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var n=this.labelWidth||this.form.labelWidth;return\"auto\"===n?\"auto\"===this.labelWidth?e.marginLeft=this.computedLabelWidth:\"auto\"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=n,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;\"ElForm\"!==t;)\"ElFormItem\"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(\":\")&&(t=t.replace(/:/,\".\")),Object(g.getPropByPath)(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:\"\",validateMessage:\"\",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:\"\"}},methods:{validate:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.noop;this.validateDisabled=!1;var i=this.getFilteredRule(e);if((!i||0===i.length)&&void 0===this.required)return n(),!0;this.validateState=\"validating\";var r={};i&&i.length>0&&i.forEach(function(e){delete e.trigger}),r[this.prop]=i;var o=new po.a(r),a={};a[this.prop]=this.fieldValue,o.validate(a,{firstFields:!0},function(e,i){t.validateState=e?\"error\":\"success\",t.validateMessage=e?e[0].message:\"\",n(t.validateMessage,i),t.elForm&&t.elForm.$emit(\"validate\",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState=\"\",this.validateMessage=\"\",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState=\"\",this.validateMessage=\"\";var t=this.form.model,n=this.fieldValue,i=this.prop;-1!==i.indexOf(\":\")&&(i=i.replace(/:/,\".\"));var r=Object(g.getPropByPath)(t,i,!0);this.validateDisabled=!0,Array.isArray(n)?r.o[r.k]=[].concat(this.initialValue):r.o[r.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast(\"ElTimeSelect\",\"fieldReset\",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,n=void 0!==this.required?{required:!!this.required}:[],i=Object(g.getPropByPath)(e,this.prop||\"\");return e=e?i.o[this.prop||\"\"]||i.v:[],[].concat(t||e||[]).concat(n)},getFilteredRule:function(e){return this.getRules().filter(function(t){return!t.trigger||\"\"===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return Ve()({},e)})},onFieldBlur:function(){this.validate(\"blur\")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate(\"change\")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+\"px\":\"\"},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on(\"el.form.blur\",this.onFieldBlur),this.$on(\"el.form.change\",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch(\"ElForm\",\"el.form.addField\",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,\"initialValue\",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch(\"ElForm\",\"el.form.removeField\",[this])}},ho,[],!1,null,null,null);vo.options.__file=\"packages/form/src/form-item.vue\";var yo=vo.exports;yo.install=function(e){e.component(yo.name,yo)};var bo=yo,xo=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-tabs__active-bar\",class:\"is-\"+this.rootTabs.tabPosition,style:this.barStyle})};xo._withStripped=!0;var _o=r({name:\"TabBar\",props:{tabs:Array},inject:[\"rootTabs\"],computed:{barStyle:{get:function(){var e=this,t={},n=0,i=0,r=-1!==[\"top\",\"bottom\"].indexOf(this.rootTabs.tabPosition)?\"width\":\"height\",o=\"width\"===r?\"x\":\"y\",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,o){var s=Object(g.arrayFind)(e.$parent.$refs.tabs||[],function(e){return e.id.replace(\"tab-\",\"\")===t.paneName});if(!s)return!1;if(t.active){i=s[\"client\"+a(r)];var l=window.getComputedStyle(s);return\"width\"===r&&e.tabs.length>1&&(i-=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),\"width\"===r&&(n+=parseFloat(l.paddingLeft)),!1}return n+=s[\"client\"+a(r)],!0});var s=\"translate\"+a(o)+\"(\"+n+\"px)\";return t[r]=i+\"px\",t.transform=s,t.msTransform=s,t.webkitTransform=s,t}}}},xo,[],!1,null,null,null);function wo(){}_o.options.__file=\"packages/tabs/src/tab-bar.vue\";var Co=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},So=r({name:\"TabNav\",components:{TabBar:_o.exports},inject:[\"rootTabs\"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:wo},onTabRemove:{type:Function,default:wo},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:\"translate\"+(-1!==[\"top\",\"bottom\"].indexOf(this.rootTabs.tabPosition)?\"X\":\"Y\")+\"(-\"+this.navOffset+\"px)\"}},sizeName:function(){return-1!==[\"top\",\"bottom\"].indexOf(this.rootTabs.tabPosition)?\"width\":\"height\"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll[\"offset\"+Co(this.sizeName)],t=this.navOffset;if(t){var n=t>e?t-e:0;this.navOffset=n}},scrollNext:function(){var e=this.$refs.nav[\"offset\"+Co(this.sizeName)],t=this.$refs.navScroll[\"offset\"+Co(this.sizeName)],n=this.navOffset;if(!(e-n<=t)){var i=e-n>2*t?n+t:e-t;this.navOffset=i}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(\".is-active\");if(t){var n=this.$refs.navScroll,i=-1!==[\"top\",\"bottom\"].indexOf(this.rootTabs.tabPosition),r=t.getBoundingClientRect(),o=n.getBoundingClientRect(),a=i?e.offsetWidth-o.width:e.offsetHeight-o.height,s=this.navOffset,l=s;i?(r.left<o.left&&(l=s-(o.left-r.left)),r.right>o.right&&(l=s+r.right-o.right)):(r.top<o.top&&(l=s-(o.top-r.top)),r.bottom>o.bottom&&(l=s+(r.bottom-o.bottom))),l=Math.max(l,0),this.navOffset=Math.min(l,a)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav[\"offset\"+Co(e)],n=this.$refs.navScroll[\"offset\"+Co(e)],i=this.navOffset;if(n<t){var r=this.navOffset;this.scrollable=this.scrollable||{},this.scrollable.prev=r,this.scrollable.next=r+n<t,t-r<n&&(this.navOffset=t-n)}else this.scrollable=!1,i>0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,n=void 0,i=void 0,r=void 0;-1!==[37,38,39,40].indexOf(t)&&(r=e.currentTarget.querySelectorAll(\"[role=tab]\"),i=Array.prototype.indexOf.call(r,e.target),r[n=37===t||38===t?0===i?r.length-1:i-1:i<r.length-1?i+1:0].focus(),r[n].click(),this.setFocus())},setFocus:function(){this.focusable&&(this.isFocus=!0)},removeFocus:function(){this.isFocus=!1},visibilityChangeHandler:function(){var e=this,t=document.visibilityState;\"hidden\"===t?this.focusable=!1:\"visible\"===t&&setTimeout(function(){e.focusable=!0},50)},windowBlurHandler:function(){this.focusable=!1},windowFocusHandler:function(){var e=this;setTimeout(function(){e.focusable=!0},50)}},updated:function(){this.update()},render:function(e){var t=this,n=this.type,i=this.panes,r=this.editable,o=this.stretch,a=this.onTabClick,s=this.onTabRemove,l=this.navStyle,u=this.scrollable,c=this.scrollNext,h=this.scrollPrev,d=this.changeTab,f=this.setFocus,p=this.removeFocus,g=u?[e(\"span\",{class:[\"el-tabs__nav-prev\",u.prev?\"\":\"is-disabled\"],on:{click:h}},[e(\"i\",{class:\"el-icon-arrow-left\"})]),e(\"span\",{class:[\"el-tabs__nav-next\",u.next?\"\":\"is-disabled\"],on:{click:c}},[e(\"i\",{class:\"el-icon-arrow-right\"})])]:null,m=this._l(i,function(n,i){var o,l=n.name||n.index||i,u=n.isClosable||r;n.index=\"\"+i;var c=u?e(\"span\",{class:\"el-icon-close\",on:{click:function(e){s(n,e)}}}):null,h=n.$slots.label||n.label,d=n.active?0:-1;return e(\"div\",{class:(o={\"el-tabs__item\":!0},o[\"is-\"+t.rootTabs.tabPosition]=!0,o[\"is-active\"]=n.active,o[\"is-disabled\"]=n.disabled,o[\"is-closable\"]=u,o[\"is-focus\"]=t.isFocus,o),attrs:{id:\"tab-\"+l,\"aria-controls\":\"pane-\"+l,role:\"tab\",\"aria-selected\":n.active,tabindex:d},key:\"tab-\"+l,ref:\"tabs\",refInFor:!0,on:{focus:function(){f()},blur:function(){p()},click:function(e){p(),a(n,l,e)},keydown:function(e){!u||46!==e.keyCode&&8!==e.keyCode||s(n,e)}}},[h,c])});return e(\"div\",{class:[\"el-tabs__nav-wrap\",u?\"is-scrollable\":\"\",\"is-\"+this.rootTabs.tabPosition]},[g,e(\"div\",{class:[\"el-tabs__nav-scroll\"],ref:\"navScroll\"},[e(\"div\",{class:[\"el-tabs__nav\",\"is-\"+this.rootTabs.tabPosition,o&&-1!==[\"top\",\"bottom\"].indexOf(this.rootTabs.tabPosition)?\"is-stretch\":\"\"],ref:\"nav\",style:l,attrs:{role:\"tablist\"},on:{keydown:d}},[n?null:e(\"tab-bar\",{attrs:{tabs:i}}),m])])])},mounted:function(){var e=this;Object(Rt.addResizeListener)(this.$el,this.update),document.addEventListener(\"visibilitychange\",this.visibilityChangeHandler),window.addEventListener(\"blur\",this.windowBlurHandler),window.addEventListener(\"focus\",this.windowFocusHandler),setTimeout(function(){e.scrollToActiveTab()},0)},beforeDestroy:function(){this.$el&&this.update&&Object(Rt.removeResizeListener)(this.$el,this.update),document.removeEventListener(\"visibilitychange\",this.visibilityChangeHandler),window.removeEventListener(\"blur\",this.windowBlurHandler),window.removeEventListener(\"focus\",this.windowFocusHandler)}},void 0,void 0,!1,null,null,null);So.options.__file=\"packages/tabs/src/tab-nav.vue\";var ko=r({name:\"ElTabs\",components:{TabNav:So.exports},props:{type:String,activeName:String,closable:Boolean,addable:Boolean,value:{},editable:Boolean,tabPosition:{type:String,default:\"top\"},beforeLeave:Function,stretch:Boolean},provide:function(){return{rootTabs:this}},data:function(){return{currentName:this.value||this.activeName,panes:[]}},watch:{activeName:function(e){this.setCurrentName(e)},value:function(e){this.setCurrentName(e)},currentName:function(e){var t=this;this.$refs.nav&&this.$nextTick(function(){t.$refs.nav.$nextTick(function(e){t.$refs.nav.scrollToActiveTab()})})}},methods:{calcPaneInstances:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var n=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&\"ElTabPane\"===e.componentOptions.Ctor.options.name}).map(function(e){return e.componentInstance}),i=!(n.length===this.panes.length&&n.every(function(t,n){return t===e.panes[n]}));(t||i)&&(this.panes=n)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,n){e.disabled||(this.setCurrentName(t),this.$emit(\"tab-click\",e,n))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit(\"edit\",e.name,\"remove\"),this.$emit(\"tab-remove\",e.name))},handleTabAdd:function(){this.$emit(\"edit\",null,\"add\"),this.$emit(\"tab-add\")},setCurrentName:function(e){var t=this,n=function(){t.currentName=e,t.$emit(\"input\",e)};if(this.currentName!==e&&this.beforeLeave){var i=this.beforeLeave(e,this.currentName);i&&i.then?i.then(function(){n(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==i&&n()}else n()}},render:function(e){var t,n=this.type,i=this.handleTabClick,r=this.handleTabRemove,o=this.handleTabAdd,a=this.currentName,s=this.panes,l=this.editable,u=this.addable,c=this.tabPosition,h=this.stretch,d=e(\"div\",{class:[\"el-tabs__header\",\"is-\"+c]},[l||u?e(\"span\",{class:\"el-tabs__new-tab\",on:{click:o,keydown:function(e){13===e.keyCode&&o()}},attrs:{tabindex:\"0\"}},[e(\"i\",{class:\"el-icon-plus\"})]):null,e(\"tab-nav\",{props:{currentName:a,onTabClick:i,onTabRemove:r,editable:l,type:n,panes:s,stretch:h},ref:\"nav\"})]),f=e(\"div\",{class:\"el-tabs__content\"},[this.$slots.default]);return e(\"div\",{class:(t={\"el-tabs\":!0,\"el-tabs--card\":\"card\"===n},t[\"el-tabs--\"+c]=!0,t[\"el-tabs--border-card\"]=\"border-card\"===n,t)},[\"bottom\"!==c?[d,f]:[f,d]])},created:function(){this.currentName||this.setCurrentName(\"0\"),this.$on(\"tab-nav-update\",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);ko.options.__file=\"packages/tabs/src/tabs.vue\";var To=ko.exports;To.install=function(e){e.component(To.name,To)};var Mo=To,Do=function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.lazy||e.loaded||e.active?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.active,expression:\"active\"}],staticClass:\"el-tab-pane\",attrs:{role:\"tabpanel\",\"aria-hidden\":!e.active,id:\"pane-\"+e.paneName,\"aria-labelledby\":\"tab-\"+e.paneName}},[e._t(\"default\")],2):e._e()};Do._withStripped=!0;var Ao=r({name:\"ElTabPane\",componentName:\"ElTabPane\",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit(\"tab-nav-update\")}},Do,[],!1,null,null,null);Ao.options.__file=\"packages/tabs/src/tab-pane.vue\";var Io=Ao.exports;Io.install=function(e){e.component(Io.name,Io)};var Oo=Io,Eo=r({name:\"ElTag\",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:\"light\",validator:function(e){return-1!==[\"dark\",\"light\",\"plain\"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit(\"close\",e)},handleClick:function(e){this.$emit(\"click\",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,n=this.tagSize,i=this.hit,r=this.effect,o=e(\"span\",{class:[\"el-tag\",t?\"el-tag--\"+t:\"\",n?\"el-tag--\"+n:\"\",r?\"el-tag--\"+r:\"\",i&&\"is-hit\"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e(\"i\",{class:\"el-tag__close el-icon-close\",on:{click:this.handleClose}})]);return this.disableTransitions?o:e(\"transition\",{attrs:{name:\"el-zoom-in-center\"}},[o])}},void 0,void 0,!1,null,null,null);Eo.options.__file=\"packages/tag/src/tag.vue\";var Lo=Eo.exports;Lo.install=function(e){e.component(Lo.name,Lo)};var Po=Lo,No=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-tree\",class:{\"el-tree--highlight-current\":e.highlightCurrent,\"is-dragging\":!!e.dragState.draggingNode,\"is-drop-not-allow\":!e.dragState.allowDrop,\"is-drop-inner\":\"inner\"===e.dragState.dropType},attrs:{role:\"tree\"}},[e._l(e.root.childNodes,function(t){return n(\"el-tree-node\",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,\"render-after-expand\":e.renderAfterExpand,\"show-checkbox\":e.showCheckbox,\"render-content\":e.renderContent},on:{\"node-expand\":e.handleNodeExpand}})}),e.isEmpty?n(\"div\",{staticClass:\"el-tree__empty-block\"},[n(\"span\",{staticClass:\"el-tree__empty-text\"},[e._v(e._s(e.emptyText))])]):e._e(),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.dragState.showDropIndicator,expression:\"dragState.showDropIndicator\"}],ref:\"dropIndicator\",staticClass:\"el-tree__drop-indicator\"})],2)};No._withStripped=!0;var Ro=\"$treeNodeId\",Bo=function(e,t){t&&!t[Ro]&&Object.defineProperty(t,Ro,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},zo=function(e,t){return e?t[e]:t[Ro]},Fo=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();var $o=function(e){for(var t=!0,n=!0,i=!0,r=0,o=e.length;r<o;r++){var a=e[r];(!0!==a.checked||a.indeterminate)&&(t=!1,a.disabled||(i=!1)),(!1!==a.checked||a.indeterminate)&&(n=!1)}return{all:t,none:n,allWithoutDisable:i,half:!t&&!n}},Vo=function e(t){if(0!==t.childNodes.length){var n=$o(t.childNodes),i=n.all,r=n.none,o=n.half;i?(t.checked=!0,t.indeterminate=!1):o?(t.checked=!1,t.indeterminate=!0):r&&(t.checked=!1,t.indeterminate=!1);var a=t.parent;a&&0!==a.level&&(t.store.checkStrictly||e(a))}},jo=function(e,t){var n=e.store.props,i=e.data||{},r=n[t];if(\"function\"==typeof r)return r(i,e);if(\"string\"==typeof r)return i[r];if(void 0===r){var o=i[t];return void 0===o?\"\":o}},Ho=0,Wo=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.id=Ho++,this.text=null,this.checked=!1,this.indeterminate=!1,this.data=null,this.expanded=!1,this.parent=null,this.visible=!0,this.isCurrent=!1,t)t.hasOwnProperty(n)&&(this[n]=t[n]);this.level=0,this.loaded=!1,this.childNodes=[],this.loading=!1,this.parent&&(this.level=this.parent.level+1);var i=this.store;if(!i)throw new Error(\"[Node]store is required!\");i.registerNode(this);var r=i.props;if(r&&void 0!==r.isLeaf){var o=jo(this,\"isLeaf\");\"boolean\"==typeof o&&(this.isLeafByUser=o)}if(!0!==i.lazy&&this.data?(this.setData(this.data),i.defaultExpandAll&&(this.expanded=!0)):this.level>0&&i.lazy&&i.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Bo(this,this.data),this.data){var a=i.defaultExpandedKeys,s=i.key;s&&a&&-1!==a.indexOf(this.key)&&this.expand(null,i.autoExpandParent),s&&void 0!==i.currentNodeKey&&this.key===i.currentNodeKey&&(i.currentNode=this,i.currentNode.isCurrent=!0),i.lazy&&i._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Bo(this,e),this.data=e,this.childNodes=[];for(var t=void 0,n=0,i=(t=0===this.level&&this.data instanceof Array?this.data:jo(this,\"children\")||[]).length;n<i;n++)this.insertChild({data:t[n]})},e.prototype.contains=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return function n(i){for(var r=i.childNodes||[],o=!1,a=0,s=r.length;a<s;a++){var l=r[a];if(l===e||t&&n(l)){o=!0;break}}return o}(this)},e.prototype.remove=function(){var e=this.parent;e&&e.removeChild(this)},e.prototype.insertChild=function(t,n,i){if(!t)throw new Error(\"insertChild error: child is required.\");if(!(t instanceof e)){if(!i){var r=this.getChildren(!0);-1===r.indexOf(t.data)&&(void 0===n||n<0?r.push(t.data):r.splice(n,0,t.data))}Ve()(t,{parent:this,store:this.store}),t=new e(t)}t.level=this.level+1,void 0===n||n<0?this.childNodes.push(t):this.childNodes.splice(n,0,t),this.updateLeafState()},e.prototype.insertBefore=function(e,t){var n=void 0;t&&(n=this.childNodes.indexOf(t)),this.insertChild(e,n)},e.prototype.insertAfter=function(e,t){var n=void 0;t&&-1!==(n=this.childNodes.indexOf(t))&&(n+=1),this.insertChild(e,n)},e.prototype.removeChild=function(e){var t=this.getChildren()||[],n=t.indexOf(e.data);n>-1&&t.splice(n,1);var i=this.childNodes.indexOf(e);i>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(i,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,n=0;n<this.childNodes.length;n++)if(this.childNodes[n].data===e){t=this.childNodes[n];break}t&&this.removeChild(t)},e.prototype.expand=function(e,t){var n=this,i=function(){if(t)for(var i=n.parent;i.level>0;)i.expanded=!0,i=i.parent;n.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(n.checked?n.setChecked(!0,!0):n.store.checkStrictly||Vo(n),i())}):i()},e.prototype.doCreateChildren=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(Ve()({data:e},n),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,n,i){var r=this;if(this.indeterminate=\"half\"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var o=$o(this.childNodes),a=o.all,s=o.allWithoutDisable;this.isLeaf||a||!s||(this.checked=!1,e=!1);var l=function(){if(t){for(var n=r.childNodes,o=0,a=n.length;o<a;o++){var s=n[o];i=i||!1!==e;var l=s.disabled?s.checked:i;s.setChecked(l,t,!0,i)}var u=$o(n),c=u.half,h=u.all;h||(r.checked=h,r.indeterminate=c)}};if(this.shouldLoadData())return void this.loadData(function(){l(),Vo(r)},{checked:!1!==e});l()}var u=this.parent;u&&0!==u.level&&(n||Vo(u))}},e.prototype.getChildren=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var n=this.store.props,i=\"children\";return n&&(i=n.children||\"children\"),void 0===t[i]&&(t[i]=null),e&&!t[i]&&(t[i]=[]),t[i]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],n=this.childNodes.map(function(e){return e.data}),i={},r=[];t.forEach(function(e,t){var o=e[Ro];!!o&&Object(g.arrayFindIndex)(n,function(e){return e[Ro]===o})>=0?i[o]={index:t,data:e}:r.push({index:t,data:e})}),this.store.lazy||n.forEach(function(t){i[t[Ro]]||e.removeChildByData(t)}),r.forEach(function(t){var n=t.index,i=t.data;e.insertChild({data:i},n)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(n).length)e&&e.call(this);else{this.loading=!0;this.store.load(this,function(i){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(i,n),t.updateLeafState(),e&&e.call(t,i)})}},Fo(e,[{key:\"label\",get:function(){return jo(this,\"label\")}},{key:\"key\",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:\"disabled\",get:function(){return jo(this,\"disabled\")}},{key:\"nextSibling\",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:\"previousSibling\",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),qo=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var Go=function(){function e(t){var n=this;for(var i in function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(i)&&(this[i]=t[i]);(this.nodesMap={},this.root=new Wo({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,function(e){n.root.doCreateChildren(e),n._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,n=this.lazy;!function i(r){var o=r.root?r.root.childNodes:r.childNodes;if(o.forEach(function(n){n.visible=t.call(n,e,n.data,n),i(n)}),!r.visible&&o.length){var a;a=!o.some(function(e){return e.visible}),r.root?r.root.visible=!1===a:r.visible=!1===a}e&&(!r.visible||r.isLeaf||n||r.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Wo)return e;var t=\"object\"!==(void 0===e?\"undefined\":qo(e))?e:zo(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var n=this.getNode(t);n.parent.insertBefore({data:e},n)},e.prototype.insertAfter=function(e,t){var n=this.getNode(t);n.parent.insertAfter({data:e},n)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var n=t?this.getNode(t):this.root;n&&n.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],n=this.nodesMap;t.forEach(function(t){var i=n[t];i&&i.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[];return function i(r){(r.root?r.root.childNodes:r.childNodes).forEach(function(r){(r.checked||t&&r.indeterminate)&&(!e||e&&r.isLeaf)&&n.push(r.data),i(r)})}(this),n},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(n){(n.root?n.root.childNodes:n.childNodes).forEach(function(n){n.indeterminate&&e.push(n.data),t(n)})}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e},e.prototype.updateChildren=function(e,t){var n=this.nodesMap[e];if(n){for(var i=n.childNodes,r=i.length-1;r>=0;r--){var o=i[r];this.remove(o.data)}for(var a=0,s=t.length;a<s;a++){var l=t[a];this.append(l,n.data)}}},e.prototype._setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments[2],i=this._getAllNodes().sort(function(e,t){return t.level-e.level}),r=Object.create(null),o=Object.keys(n);i.forEach(function(e){return e.setChecked(!1,!1)});for(var a=0,s=i.length;a<s;a++){var l=i[a],u=l.data[e].toString();if(o.indexOf(u)>-1){for(var c=l.parent;c&&c.level>0;)r[c.data[e]]=!0,c=c.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})}(l)}())}else l.checked&&!r[u]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.key,i={};e.forEach(function(e){i[(e||{})[n]]=!0}),this._setCheckedKeys(n,t,i)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var n=this.key,i={};e.forEach(function(e){i[e]=!0}),this._setCheckedKeys(n,t,i)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var n=t.getNode(e);n&&n.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,n){var i=this.getNode(e);i&&i.setChecked(!!t,n)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],n=this.nodesMap[t];this.setCurrentNode(n)},e.prototype.setCurrentNodeKey=function(e){if(null===e||void 0===e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Uo=function(){var e=this,t=this,n=t.$createElement,i=t._self._c||n;return i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.node.visible,expression:\"node.visible\"}],ref:\"node\",staticClass:\"el-tree-node\",class:{\"is-expanded\":t.expanded,\"is-current\":t.node.isCurrent,\"is-hidden\":!t.node.visible,\"is-focusable\":!t.node.disabled,\"is-checked\":!t.node.disabled&&t.node.checked},attrs:{role:\"treeitem\",tabindex:\"-1\",\"aria-expanded\":t.expanded,\"aria-disabled\":t.node.disabled,\"aria-checked\":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[i(\"div\",{staticClass:\"el-tree-node__content\",style:{\"padding-left\":(t.node.level-1)*t.tree.indent+\"px\"}},[i(\"span\",{class:[{\"is-leaf\":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},\"el-tree-node__expand-icon\",t.tree.iconClass?t.tree.iconClass:\"el-icon-caret-right\"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?i(\"el-checkbox\",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,\"checked\",e)},expression:\"node.checked\"}}):t._e(),t.node.loading?i(\"span\",{staticClass:\"el-tree-node__loading-icon el-icon-loading\"}):t._e(),i(\"node-content\",{attrs:{node:t.node}})],1),i(\"el-collapse-transition\",[!t.renderAfterExpand||t.childNodeRendered?i(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.expanded,expression:\"expanded\"}],staticClass:\"el-tree-node__children\",attrs:{role:\"group\",\"aria-expanded\":t.expanded}},t._l(t.node.childNodes,function(e){return i(\"el-tree-node\",{key:t.getNodeKey(e),attrs:{\"render-content\":t.renderContent,\"render-after-expand\":t.renderAfterExpand,\"show-checkbox\":t.showCheckbox,node:e},on:{\"node-expand\":t.handleChildNodeExpand}})}),1):t._e()])],1)};Uo._withStripped=!0;var Yo=r({name:\"ElTreeNode\",componentName:\"ElTreeNode\",mixins:[S.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:be.a,ElCheckbox:an.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,n=t.tree,i=this.node,r=i.data,o=i.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:n.$vnode.context,node:i,data:r,store:o}):n.$scopedSlots.default?n.$scopedSlots.default({node:i,data:r}):e(\"span\",{class:\"el-tree-node__label\"},[i.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{\"node.indeterminate\":function(e){this.handleSelectChange(this.node.checked,e)},\"node.checked\":function(e){this.handleSelectChange(e,this.node.indeterminate)},\"node.expanded\":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return zo(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit(\"check-change\",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit(\"current-change\",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit(\"node-click\",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events[\"node-contextmenu\"]&&this.tree._events[\"node-contextmenu\"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit(\"node-contextmenu\",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit(\"node-collapse\",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit(\"node-expand\",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var n=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=n.tree.store;n.tree.$emit(\"check\",n.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,n){this.broadcast(\"ElTreeNode\",\"tree-node-expand\",t),this.tree.$emit(\"node-expand\",e,t,n)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit(\"tree-node-drag-start\",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit(\"tree-node-drag-over\",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit(\"tree-node-drag-end\",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var n=this.tree;n||console.warn(\"Can not find node's tree.\");var i=(n.props||{}).children||\"children\";this.$watch(\"node.data.\"+i,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on(\"tree-node-expand\",function(t){e.node!==t&&e.node.collapse()})}},Uo,[],!1,null,null,null);Yo.options.__file=\"packages/tree/src/tree-node.vue\";var Xo=Yo.exports,Ko=r({name:\"ElTree\",mixins:[S.a],components:{ElTreeNode:Xo},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(Bt.t)(\"el.tree.emptyText\")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:\"children\",label:\"label\",disabled:\"disabled\"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){return!e.visible})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute(\"tabindex\",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error(\"[Tree] filterNodeMethod is required when filter\");this.store.filter(e)},getNodeKey:function(e){return zo(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in getNodePath\");var t=this.store.getNode(e);if(!t)return[];for(var n=[t.data],i=t.parent;i&&i!==this.root;)n.push(i.data),i=i.parent;return n.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in getCurrentKey\");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCheckedNodes\");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCheckedKeys\");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,n){this.store.setChecked(e,t,n)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCurrentNode\");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCurrentKey\");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,n){this.broadcast(\"ElTreeNode\",\"tree-node-expand\",t),this.$emit(\"node-expand\",e,t,n)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error(\"[Tree] nodeKey is required in updateKeyChild\");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(\".is-focusable[role=treeitem]\"),this.checkboxItems=this.$el.querySelectorAll(\"input[type=checkbox]\");var e=this.$el.querySelectorAll(\".is-checked[role=treeitem]\");e.length?e[0].setAttribute(\"tabindex\",0):this.treeItems[0]&&this.treeItems[0].setAttribute(\"tabindex\",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf(\"el-tree-node\")){var n=e.keyCode;this.treeItems=this.$el.querySelectorAll(\".is-focusable[role=treeitem]\");var i=this.treeItemArray.indexOf(t),r=void 0;[38,40].indexOf(n)>-1&&(e.preventDefault(),r=38===n?0!==i?i-1:0:i<this.treeItemArray.length-1?i+1:0,this.treeItemArray[r].focus()),[37,39].indexOf(n)>-1&&(e.preventDefault(),t.click());var o=t.querySelector('[type=\"checkbox\"]');[13,32].indexOf(n)>-1&&o&&(e.preventDefault(),o.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new Go({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on(\"tree-node-drag-start\",function(n,i){if(\"function\"==typeof e.allowDrag&&!e.allowDrag(i.node))return n.preventDefault(),!1;n.dataTransfer.effectAllowed=\"move\";try{n.dataTransfer.setData(\"text/plain\",\"\")}catch(e){}t.draggingNode=i,e.$emit(\"node-drag-start\",i.node,n)}),this.$on(\"tree-node-drag-over\",function(n,i){var r=function(e,t){for(var n=e;n&&\"BODY\"!==n.tagName;){if(n.__vue__&&n.__vue__.$options.name===t)return n.__vue__;n=n.parentNode}return null}(n.target,\"ElTreeNode\"),o=t.dropNode;o&&o!==r&&Object(pe.removeClass)(o.$el,\"is-drop-inner\");var a=t.draggingNode;if(a&&r){var s=!0,l=!0,u=!0,c=!0;\"function\"==typeof e.allowDrop&&(s=e.allowDrop(a.node,r.node,\"prev\"),c=l=e.allowDrop(a.node,r.node,\"inner\"),u=e.allowDrop(a.node,r.node,\"next\")),n.dataTransfer.dropEffect=l?\"move\":\"none\",(s||l||u)&&o!==r&&(o&&e.$emit(\"node-drag-leave\",a.node,o.node,n),e.$emit(\"node-drag-enter\",a.node,r.node,n)),(s||l||u)&&(t.dropNode=r),r.node.nextSibling===a.node&&(u=!1),r.node.previousSibling===a.node&&(s=!1),r.node.contains(a.node,!1)&&(l=!1),(a.node===r.node||a.node.contains(r.node))&&(s=!1,l=!1,u=!1);var h=r.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),f=void 0,p=s?l?.25:u?.45:1:-1,g=u?l?.75:s?.55:0:1,m=-9999,v=n.clientY-h.top;f=v<h.height*p?\"before\":v>h.height*g?\"after\":l?\"inner\":\"none\";var y=r.$el.querySelector(\".el-tree-node__expand-icon\").getBoundingClientRect(),b=e.$refs.dropIndicator;\"before\"===f?m=y.top-d.top:\"after\"===f&&(m=y.bottom-d.top),b.style.top=m+\"px\",b.style.left=y.right-d.left+\"px\",\"inner\"===f?Object(pe.addClass)(r.$el,\"is-drop-inner\"):Object(pe.removeClass)(r.$el,\"is-drop-inner\"),t.showDropIndicator=\"before\"===f||\"after\"===f,t.allowDrop=t.showDropIndicator||c,t.dropType=f,e.$emit(\"node-drag-over\",a.node,r.node,n)}}),this.$on(\"tree-node-drag-end\",function(n){var i=t.draggingNode,r=t.dropType,o=t.dropNode;if(n.preventDefault(),n.dataTransfer.dropEffect=\"move\",i&&o){var a={data:i.node.data};\"none\"!==r&&i.node.remove(),\"before\"===r?o.node.parent.insertBefore(a,o.node):\"after\"===r?o.node.parent.insertAfter(a,o.node):\"inner\"===r&&o.node.insertChild(a),\"none\"!==r&&e.store.registerNode(a),Object(pe.removeClass)(o.$el,\"is-drop-inner\"),e.$emit(\"node-drag-end\",i.node,o.node,r,n),\"none\"!==r&&e.$emit(\"node-drop\",i.node,o.node,r,n)}i&&!o&&e.$emit(\"node-drag-end\",i.node,null,r,n),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener(\"keydown\",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll(\"[role=treeitem]\"),this.checkboxItems=this.$el.querySelectorAll(\"input[type=checkbox]\")}},No,[],!1,null,null,null);Ko.options.__file=\"packages/tree/src/tree.vue\";var Zo=Ko.exports;Zo.install=function(e){e.component(Zo.name,Zo)};var Jo=Zo,Qo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-alert-fade\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-alert\",class:[e.typeClass,e.center?\"is-center\":\"\",\"is-\"+e.effect],attrs:{role:\"alert\"}},[e.showIcon?n(\"i\",{staticClass:\"el-alert__icon\",class:[e.iconClass,e.isBigIcon]}):e._e(),n(\"div\",{staticClass:\"el-alert__content\"},[e.title||e.$slots.title?n(\"span\",{staticClass:\"el-alert__title\",class:[e.isBoldTitle]},[e._t(\"title\",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?n(\"p\",{staticClass:\"el-alert__description\"},[e._t(\"default\")],2):e._e(),e.description&&!e.$slots.default?n(\"p\",{staticClass:\"el-alert__description\"},[e._v(e._s(e.description))]):e._e(),n(\"i\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.closable,expression:\"closable\"}],staticClass:\"el-alert__closebtn\",class:{\"is-customed\":\"\"!==e.closeText,\"el-icon-close\":\"\"===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Qo._withStripped=!0;var ea={success:\"el-icon-success\",warning:\"el-icon-warning\",error:\"el-icon-error\"},ta=r({name:\"ElAlert\",props:{title:{type:String,default:\"\"},description:{type:String,default:\"\"},type:{type:String,default:\"info\"},closable:{type:Boolean,default:!0},closeText:{type:String,default:\"\"},showIcon:Boolean,center:Boolean,effect:{type:String,default:\"light\",validator:function(e){return-1!==[\"light\",\"dark\"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit(\"close\")}},computed:{typeClass:function(){return\"el-alert--\"+this.type},iconClass:function(){return ea[this.type]||\"el-icon-info\"},isBigIcon:function(){return this.description||this.$slots.default?\"is-big\":\"\"},isBoldTitle:function(){return this.description||this.$slots.default?\"is-bold\":\"\"}}},Qo,[],!1,null,null,null);ta.options.__file=\"packages/alert/src/main.vue\";var na=ta.exports;na.install=function(e){e.component(na.name,na)};var ia=na,ra=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-notification-fade\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],class:[\"el-notification\",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:\"alert\"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?n(\"i\",{staticClass:\"el-notification__icon\",class:[e.typeClass,e.iconClass]}):e._e(),n(\"div\",{staticClass:\"el-notification__group\",class:{\"is-with-icon\":e.typeClass||e.iconClass}},[n(\"h2\",{staticClass:\"el-notification__title\",domProps:{textContent:e._s(e.title)}}),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.message,expression:\"message\"}],staticClass:\"el-notification__content\"},[e._t(\"default\",[e.dangerouslyUseHTMLString?n(\"p\",{domProps:{innerHTML:e._s(e.message)}}):n(\"p\",[e._v(e._s(e.message))])])],2),e.showClose?n(\"div\",{staticClass:\"el-notification__closeBtn el-icon-close\",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};ra._withStripped=!0;var oa={success:\"success\",info:\"info\",warning:\"warning\",error:\"error\"},aa=r({data:function(){return{visible:!1,title:\"\",message:\"\",duration:4500,type:\"\",showClose:!0,customClass:\"\",iconClass:\"\",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:\"top-right\"}},computed:{typeClass:function(){return this.type&&oa[this.type]?\"el-icon-\"+oa[this.type]:\"\"},horizontalClass:function(){return this.position.indexOf(\"right\")>-1?\"right\":\"left\"},verticalProperty:function(){return/^top-/.test(this.position)?\"top\":\"bottom\"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+\"px\",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener(\"transitionend\",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener(\"transitionend\",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){\"function\"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,\"function\"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener(\"keydown\",this.keydown)},beforeDestroy:function(){document.removeEventListener(\"keydown\",this.keydown)}},ra,[],!1,null,null,null);aa.options.__file=\"packages/notification/src/main.vue\";var sa=aa.exports,la=fn.a.extend(sa),ua=void 0,ca=[],ha=1,da=function e(t){if(!fn.a.prototype.$isServer){var n=(t=Ve()({},t)).onClose,i=\"notification_\"+ha++,r=t.position||\"top-right\";t.onClose=function(){e.close(i,n)},ua=new la({data:t}),Object(jr.isVNode)(t.message)&&(ua.$slots.default=[t.message],t.message=\"REPLACED_BY_VNODE\"),ua.id=i,ua.$mount(),document.body.appendChild(ua.$el),ua.visible=!0,ua.dom=ua.$el,ua.dom.style.zIndex=b.PopupManager.nextZIndex();var o=t.offset||0;return ca.filter(function(e){return e.position===r}).forEach(function(e){o+=e.$el.offsetHeight+16}),o+=16,ua.verticalOffset=o,ca.push(ua),ua}};[\"success\",\"warning\",\"info\",\"error\"].forEach(function(e){da[e]=function(t){return(\"string\"==typeof t||Object(jr.isVNode)(t))&&(t={message:t}),t.type=e,da(t)}}),da.close=function(e,t){var n=-1,i=ca.length,r=ca.filter(function(t,i){return t.id===e&&(n=i,!0)})[0];if(r&&(\"function\"==typeof t&&t(r),ca.splice(n,1),!(i<=1)))for(var o=r.position,a=r.dom.offsetHeight,s=n;s<i-1;s++)ca[s].position===o&&(ca[s].dom.style[r.verticalProperty]=parseInt(ca[s].dom.style[r.verticalProperty],10)-a-16+\"px\")},da.closeAll=function(){for(var e=ca.length-1;e>=0;e--)ca[e].close()};var fa=da,pa=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-slider\",class:{\"is-vertical\":e.vertical,\"el-slider--with-input\":e.showInput},attrs:{role:\"slider\",\"aria-valuemin\":e.min,\"aria-valuemax\":e.max,\"aria-orientation\":e.vertical?\"vertical\":\"horizontal\",\"aria-disabled\":e.sliderDisabled}},[e.showInput&&!e.range?n(\"el-input-number\",{ref:\"input\",staticClass:\"el-slider__input\",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:\"firstValue\"}}):e._e(),n(\"div\",{ref:\"slider\",staticClass:\"el-slider__runway\",class:{\"show-input\":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[n(\"div\",{staticClass:\"el-slider__bar\",style:e.barStyle}),n(\"slider-button\",{ref:\"button1\",attrs:{vertical:e.vertical,\"tooltip-class\":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:\"firstValue\"}}),e.range?n(\"slider-button\",{ref:\"button2\",attrs:{vertical:e.vertical,\"tooltip-class\":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:\"secondValue\"}}):e._e(),e._l(e.stops,function(t,i){return e.showStops?n(\"div\",{key:i,staticClass:\"el-slider__stop\",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[n(\"div\",e._l(e.markList,function(t,i){return n(\"div\",{key:i,staticClass:\"el-slider__stop el-slider__marks-stop\",style:e.getStopStyle(t.position)})}),0),n(\"div\",{staticClass:\"el-slider__marks\"},e._l(e.markList,function(t,i){return n(\"slider-marker\",{key:i,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)};pa._withStripped=!0;var ga=n(41),ma=n.n(ga),va=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{ref:\"button\",staticClass:\"el-slider__button-wrapper\",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:\"0\"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return\"button\"in t||!e._k(t.keyCode,\"left\",37,t.key,[\"Left\",\"ArrowLeft\"])?\"button\"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return\"button\"in t||!e._k(t.keyCode,\"right\",39,t.key,[\"Right\",\"ArrowRight\"])?\"button\"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return\"button\"in t||!e._k(t.keyCode,\"down\",40,t.key,[\"Down\",\"ArrowDown\"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return\"button\"in t||!e._k(t.keyCode,\"up\",38,t.key,[\"Up\",\"ArrowUp\"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[n(\"el-tooltip\",{ref:\"tooltip\",attrs:{placement:\"top\",\"popper-class\":e.tooltipClass,disabled:!e.showTooltip}},[n(\"span\",{attrs:{slot:\"content\"},slot:\"content\"},[e._v(e._s(e.formatValue))]),n(\"div\",{staticClass:\"el-slider__button\",class:{hover:e.hovering,dragging:e.dragging}})])],1)};va._withStripped=!0;var ya=r({name:\"ElSliderButton\",components:{ElTooltip:Me.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+\"%\"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener(\"mousemove\",this.onDragging),window.addEventListener(\"touchmove\",this.onDragging),window.addEventListener(\"mouseup\",this.onDragEnd),window.addEventListener(\"touchend\",this.onDragEnd),window.addEventListener(\"contextmenu\",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,\"touchstart\"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;\"touchmove\"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener(\"mousemove\",this.onDragging),window.removeEventListener(\"touchmove\",this.onDragging),window.removeEventListener(\"mouseup\",this.onDragEnd),window.removeEventListener(\"touchend\",this.onDragEnd),window.removeEventListener(\"contextmenu\",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var n=100/((this.max-this.min)/this.step),i=Math.round(e/n)*n*(this.max-this.min)*.01+this.min;i=parseFloat(i.toFixed(this.precision)),this.$emit(\"input\",i),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},va,[],!1,null,null,null);ya.options.__file=\"packages/slider/src/button.vue\";var ba=ya.exports,xa={name:\"ElMarker\",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t=\"string\"==typeof this.mark?this.mark:this.mark.label;return e(\"div\",{class:\"el-slider__marks-text\",style:this.mark.style||{}},[t])}},_a=r({name:\"ElSlider\",mixins:[S.a],inject:{elForm:{default:\"\"}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:\"small\"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:ma.a,SliderButton:ba,SliderMarker:xa},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,n){return e===t[n]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit(\"input\",[this.minValue,this.maxValue]):this.$emit(\"input\",e)},secondValue:function(){this.range&&this.$emit(\"input\",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,n){return t===e.oldValue[n]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error(\"[Element Error][Slider]min should not be greater than max.\");else{var e=this.value;this.range&&Array.isArray(e)?e[1]<this.min?this.$emit(\"input\",[this.min,this.min]):e[0]>this.max?this.$emit(\"input\",[this.max,this.max]):e[0]<this.min?this.$emit(\"input\",[this.min,e[1]]):e[1]>this.max?this.$emit(\"input\",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch(\"ElFormItem\",\"el.form.change\",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||\"number\"!=typeof e||isNaN(e)||(e<this.min?this.$emit(\"input\",this.min):e>this.max?this.$emit(\"input\",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch(\"ElFormItem\",\"el.form.change\",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var n=void 0;n=Math.abs(this.minValue-t)<Math.abs(this.maxValue-t)?this.firstValue<this.secondValue?\"button1\":\"button2\":this.firstValue>this.secondValue?\"button1\":\"button2\",this.$refs[n].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var n=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-n)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider[\"client\"+(this.vertical?\"Height\":\"Width\")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit(\"change\",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+\"%\"}:{left:e+\"%\"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,n=100*this.step/(this.max-this.min),i=[],r=1;r<t;r++)i.push(r*n);return this.range?i.filter(function(t){return t<100*(e.minValue-e.min)/(e.max-e.min)||t>100*(e.maxValue-e.min)/(e.max-e.min)}):i.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}}):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+\"%\":100*(this.firstValue-this.min)/(this.max-this.min)+\"%\"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+\"%\":\"0%\"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(\"\"+e).split(\".\")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+\"-\"+this.secondValue):(\"number\"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute(\"aria-valuetext\",e),this.$el.setAttribute(\"aria-label\",this.label?this.label:\"slider between \"+this.min+\" and \"+this.max),this.resetSize(),window.addEventListener(\"resize\",this.resetSize)},beforeDestroy:function(){window.removeEventListener(\"resize\",this.resetSize)}},pa,[],!1,null,null,null);_a.options.__file=\"packages/slider/src/main.vue\";var wa=_a.exports;wa.install=function(e){e.component(wa.name,wa)};var Ca=wa,Sa=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-loading-fade\"},on:{\"after-leave\":e.handleAfterLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-loading-mask\",class:[e.customClass,{\"is-fullscreen\":e.fullscreen}],style:{backgroundColor:e.background||\"\"}},[n(\"div\",{staticClass:\"el-loading-spinner\"},[e.spinner?n(\"i\",{class:e.spinner}):n(\"svg\",{staticClass:\"circular\",attrs:{viewBox:\"25 25 50 50\"}},[n(\"circle\",{staticClass:\"path\",attrs:{cx:\"50\",cy:\"50\",r:\"20\",fill:\"none\"}})]),e.text?n(\"p\",{staticClass:\"el-loading-text\"},[e._v(e._s(e.text))]):e._e()])])])};Sa._withStripped=!0;var ka=r({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:\"\"}},methods:{handleAfterLeave:function(){this.$emit(\"after-leave\")},setText:function(e){this.text=e}}},Sa,[],!1,null,null,null);ka.options.__file=\"packages/loading/src/loading.vue\";var Ta=ka.exports,Ma=n(33),Da=n.n(Ma),Aa=fn.a.extend(Ta),Ia={install:function(e){if(!e.prototype.$isServer){var t=function(t,i){i.value?e.nextTick(function(){i.modifiers.fullscreen?(t.originalPosition=Object(pe.getStyle)(document.body,\"position\"),t.originalOverflow=Object(pe.getStyle)(document.body,\"overflow\"),t.maskStyle.zIndex=b.PopupManager.nextZIndex(),Object(pe.addClass)(t.mask,\"is-fullscreen\"),n(document.body,t,i)):(Object(pe.removeClass)(t.mask,\"is-fullscreen\"),i.modifiers.body?(t.originalPosition=Object(pe.getStyle)(document.body,\"position\"),[\"top\",\"left\"].forEach(function(e){var n=\"top\"===e?\"scrollTop\":\"scrollLeft\";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[n]+document.documentElement[n]-parseInt(Object(pe.getStyle)(document.body,\"margin-\"+e),10)+\"px\"}),[\"height\",\"width\"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+\"px\"}),n(document.body,t,i)):(t.originalPosition=Object(pe.getStyle)(t,\"position\"),n(t,t,i)))}):(Da()(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var n=i.modifiers.fullscreen||i.modifiers.body?document.body:t;Object(pe.removeClass)(n,\"el-loading-parent--relative\"),Object(pe.removeClass)(n,\"el-loading-parent--hidden\"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},n=function(t,n,i){n.domVisible||\"none\"===Object(pe.getStyle)(n,\"display\")||\"hidden\"===Object(pe.getStyle)(n,\"visibility\")?n.domVisible&&!0===n.instance.hiding&&(n.instance.visible=!0,n.instance.hiding=!1):(Object.keys(n.maskStyle).forEach(function(e){n.mask.style[e]=n.maskStyle[e]}),\"absolute\"!==n.originalPosition&&\"fixed\"!==n.originalPosition&&Object(pe.addClass)(t,\"el-loading-parent--relative\"),i.modifiers.fullscreen&&i.modifiers.lock&&Object(pe.addClass)(t,\"el-loading-parent--hidden\"),n.domVisible=!0,t.appendChild(n.mask),e.nextTick(function(){n.instance.hiding?n.instance.$emit(\"after-leave\"):n.instance.visible=!0}),n.domInserted=!0)};e.directive(\"loading\",{bind:function(e,n,i){var r=e.getAttribute(\"element-loading-text\"),o=e.getAttribute(\"element-loading-spinner\"),a=e.getAttribute(\"element-loading-background\"),s=e.getAttribute(\"element-loading-custom-class\"),l=i.context,u=new Aa({el:document.createElement(\"div\"),data:{text:l&&l[r]||r,spinner:l&&l[o]||o,background:l&&l[a]||a,customClass:l&&l[s]||s,fullscreen:!!n.modifiers.fullscreen}});e.instance=u,e.mask=u.$el,e.maskStyle={},n.value&&t(e,n)},update:function(e,n){e.instance.setText(e.getAttribute(\"element-loading-text\")),n.oldValue!==n.value&&t(e,n)},unbind:function(e,n){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:n.modifiers})),e.instance&&e.instance.$destroy()}})}}},Oa=Ia,Ea=fn.a.extend(Ta),La={text:null,fullscreen:!0,body:!1,lock:!1,customClass:\"\"},Pa=void 0;Ea.prototype.originalPosition=\"\",Ea.prototype.originalOverflow=\"\",Ea.prototype.close=function(){var e=this;this.fullscreen&&(Pa=void 0),Da()(this,function(t){var n=e.fullscreen||e.body?document.body:e.target;Object(pe.removeClass)(n,\"el-loading-parent--relative\"),Object(pe.removeClass)(n,\"el-loading-parent--hidden\"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var Na=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!fn.a.prototype.$isServer){if(\"string\"==typeof(e=Ve()({},La,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&Pa)return Pa;var t=e.body?document.body:e.target,n=new Ea({el:document.createElement(\"div\"),data:e});return function(e,t,n){var i={};e.fullscreen?(n.originalPosition=Object(pe.getStyle)(document.body,\"position\"),n.originalOverflow=Object(pe.getStyle)(document.body,\"overflow\"),i.zIndex=b.PopupManager.nextZIndex()):e.body?(n.originalPosition=Object(pe.getStyle)(document.body,\"position\"),[\"top\",\"left\"].forEach(function(t){var n=\"top\"===t?\"scrollTop\":\"scrollLeft\";i[t]=e.target.getBoundingClientRect()[t]+document.body[n]+document.documentElement[n]+\"px\"}),[\"height\",\"width\"].forEach(function(t){i[t]=e.target.getBoundingClientRect()[t]+\"px\"})):n.originalPosition=Object(pe.getStyle)(t,\"position\"),Object.keys(i).forEach(function(e){n.$el.style[e]=i[e]})}(e,t,n),\"absolute\"!==n.originalPosition&&\"fixed\"!==n.originalPosition&&Object(pe.addClass)(t,\"el-loading-parent--relative\"),e.fullscreen&&e.lock&&Object(pe.addClass)(t,\"el-loading-parent--hidden\"),t.appendChild(n.$el),fn.a.nextTick(function(){n.visible=!0}),e.fullscreen&&(Pa=n),n}},Ra={install:function(e){e.use(Oa),e.prototype.$loading=Na},directive:Oa,service:Na},Ba=function(){var e=this.$createElement;return(this._self._c||e)(\"i\",{class:\"el-icon-\"+this.name})};Ba._withStripped=!0;var za=r({name:\"ElIcon\",props:{name:String}},Ba,[],!1,null,null,null);za.options.__file=\"packages/icon/src/icon.vue\";var Fa=za.exports;Fa.install=function(e){e.component(Fa.name,Fa)};var $a=Fa,Va={name:\"ElRow\",componentName:\"ElRow\",props:{tag:{type:String,default:\"div\"},gutter:Number,type:String,justify:{type:String,default:\"start\"},align:{type:String,default:\"top\"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft=\"-\"+this.gutter/2+\"px\",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:[\"el-row\",\"start\"!==this.justify?\"is-justify-\"+this.justify:\"\",\"top\"!==this.align?\"is-align-\"+this.align:\"\",{\"el-row--flex\":\"flex\"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(Va.name,Va)}},ja=Va,Ha=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Wa={name:\"ElCol\",props:{span:{type:Number,default:24},tag:{type:String,default:\"div\"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&\"ElRow\"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,n=[],i={};return this.gutter&&(i.paddingLeft=this.gutter/2+\"px\",i.paddingRight=i.paddingLeft),[\"span\",\"offset\",\"pull\",\"push\"].forEach(function(e){(t[e]||0===t[e])&&n.push(\"span\"!==e?\"el-col-\"+e+\"-\"+t[e]:\"el-col-\"+t[e])}),[\"xs\",\"sm\",\"md\",\"lg\",\"xl\"].forEach(function(e){if(\"number\"==typeof t[e])n.push(\"el-col-\"+e+\"-\"+t[e]);else if(\"object\"===Ha(t[e])){var i=t[e];Object.keys(i).forEach(function(t){n.push(\"span\"!==t?\"el-col-\"+e+\"-\"+t+\"-\"+i[t]:\"el-col-\"+e+\"-\"+i[t])})}}),e(this.tag,{class:[\"el-col\",n],style:i},this.$slots.default)},install:function(e){e.component(Wa.name,Wa)}},qa=Wa,Ga=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition-group\",{class:[\"el-upload-list\",\"el-upload-list--\"+e.listType,{\"is-disabled\":e.disabled}],attrs:{tag:\"ul\",name:\"el-list\"}},e._l(e.files,function(t){return n(\"li\",{key:t.uid,class:[\"el-upload-list__item\",\"is-\"+t.status,e.focusing?\"focusing\":\"\"],attrs:{tabindex:\"0\"},on:{keydown:function(n){if(!(\"button\"in n)&&e._k(n.keyCode,\"delete\",[8,46],n.key,[\"Backspace\",\"Delete\",\"Del\"]))return null;!e.disabled&&e.$emit(\"remove\",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t(\"default\",[\"uploading\"!==t.status&&[\"picture-card\",\"picture\"].indexOf(e.listType)>-1?n(\"img\",{staticClass:\"el-upload-list__item-thumbnail\",attrs:{src:t.url,alt:\"\"}}):e._e(),n(\"a\",{staticClass:\"el-upload-list__item-name\",on:{click:function(n){e.handleClick(t)}}},[n(\"i\",{staticClass:\"el-icon-document\"}),e._v(e._s(t.name)+\"\\n      \")]),n(\"label\",{staticClass:\"el-upload-list__item-status-label\"},[n(\"i\",{class:{\"el-icon-upload-success\":!0,\"el-icon-circle-check\":\"text\"===e.listType,\"el-icon-check\":[\"picture-card\",\"picture\"].indexOf(e.listType)>-1}})]),e.disabled?e._e():n(\"i\",{staticClass:\"el-icon-close\",on:{click:function(n){e.$emit(\"remove\",t)}}}),e.disabled?e._e():n(\"i\",{staticClass:\"el-icon-close-tip\"},[e._v(e._s(e.t(\"el.upload.deleteTip\")))]),\"uploading\"===t.status?n(\"el-progress\",{attrs:{type:\"picture-card\"===e.listType?\"circle\":\"line\",\"stroke-width\":\"picture-card\"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),\"picture-card\"===e.listType?n(\"span\",{staticClass:\"el-upload-list__item-actions\"},[e.handlePreview&&\"picture-card\"===e.listType?n(\"span\",{staticClass:\"el-upload-list__item-preview\",on:{click:function(n){e.handlePreview(t)}}},[n(\"i\",{staticClass:\"el-icon-zoom-in\"})]):e._e(),e.disabled?e._e():n(\"span\",{staticClass:\"el-upload-list__item-delete\",on:{click:function(n){e.$emit(\"remove\",t)}}},[n(\"i\",{staticClass:\"el-icon-delete\"})])]):e._e()],{file:t})],2)}),0)};Ga._withStripped=!0;var Ua=n(34),Ya=n.n(Ua),Xa=r({name:\"ElUploadList\",mixins:[p.a],data:function(){return{focusing:!1}},components:{ElProgress:Ya.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Ga,[],!1,null,null,null);Xa.options.__file=\"packages/upload/src/upload-list.vue\";var Ka=Xa.exports,Za=n(24),Ja=n.n(Za);var Qa=function(){var e=this,t=e.$createElement;return(e._self._c||t)(\"div\",{staticClass:\"el-upload-dragger\",class:{\"is-dragover\":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t(\"default\")],2)};Qa._withStripped=!0;var es=r({name:\"ElUploadDrag\",props:{disabled:Boolean},inject:{uploader:{default:\"\"}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit(\"file\",[].slice.call(e.dataTransfer.files).filter(function(e){var n=e.type,i=e.name,r=i.indexOf(\".\")>-1?\".\"+i.split(\".\").pop():\"\",o=n.replace(/\\/.*$/,\"\");return t.split(\",\").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\\..+$/.test(e)?r===e:/\\/\\*$/.test(e)?o===e.replace(/\\/\\*$/,\"\"):!!/^[^\\/]+\\/[^\\/]+$/.test(e)&&n===e})})):this.$emit(\"file\",e.dataTransfer.files)}}}},Qa,[],!1,null,null,null);es.options.__file=\"packages/upload/src/upload-dragger.vue\";var ts=r({inject:[\"uploader\"],components:{UploadDragger:es.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:\"file\"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if(\"undefined\"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,n=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var i=new FormData;e.data&&Object.keys(e.data).forEach(function(t){i.append(t,e.data[t])}),i.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,n){var i=void 0;i=n.response?\"\"+(n.response.error||n.response):n.responseText?\"\"+n.responseText:\"fail to post \"+e+\" \"+n.status;var r=new Error(i);return r.status=n.status,r.method=\"post\",r.url=e,r}(n,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open(\"post\",n,!0),e.withCredentials&&\"withCredentials\"in t&&(t.withCredentials=!0);var r=e.headers||{};for(var o in r)r.hasOwnProperty(o)&&null!==r[o]&&t.setRequestHeader(o,r[o]);return t.send(i),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf(\"image\")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var n=Array.prototype.slice.call(e);this.multiple||(n=n.slice(0,1)),0!==n.length&&n.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var n=this.beforeUpload(e);n&&n.then?n.then(function(n){var i=Object.prototype.toString.call(n);if(\"[object File]\"===i||\"[object Blob]\"===i){for(var r in\"[object Blob]\"===i&&(n=new File([n],e.name,{type:e.type})),e)e.hasOwnProperty(r)&&(n[r]=e[r]);t.post(n)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==n?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var n=e;e.uid&&(n=e.uid),t[n]&&t[n].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,n=e.uid,i={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(n){t.onProgress(n,e)},onSuccess:function(i){t.onSuccess(i,e),delete t.reqs[n]},onError:function(i){t.onError(i,e),delete t.reqs[n]}},r=this.httpRequest(i);this.reqs[n]=r,r&&r.then&&r.then(i.onSuccess,i.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,n=this.drag,i=this.name,r=this.handleChange,o=this.multiple,a=this.accept,s=this.listType,l=this.uploadFiles,u=this.disabled,c={class:{\"el-upload\":!0},on:{click:t,keydown:this.handleKeydown}};return c.class[\"el-upload--\"+s]=!0,e(\"div\",Ja()([c,{attrs:{tabindex:\"0\"}}]),[n?e(\"upload-dragger\",{attrs:{disabled:u},on:{file:l}},[this.$slots.default]):this.$slots.default,e(\"input\",{class:\"el-upload__input\",attrs:{type:\"file\",name:i,multiple:o,accept:a},ref:\"input\",on:{change:r}})])}},void 0,void 0,!1,null,null,null);ts.options.__file=\"packages/upload/src/upload.vue\";var ns=ts.exports;function is(){}var rs=r({name:\"ElUpload\",mixins:[w.a],components:{ElProgress:Ya.a,UploadList:Ka,Upload:ns},provide:function(){return{uploader:this}},inject:{elForm:{default:\"\"}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:\"file\"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:\"select\"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:is},onChange:{type:Function,default:is},onPreview:{type:Function},onSuccess:{type:Function,default:is},onProgress:{type:Function,default:is},onError:{type:Function,default:is},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:\"text\"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:is}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){\"picture-card\"!==e&&\"picture\"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error(\"[Element Error][Upload]\",e)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||\"success\",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:\"ready\",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if(\"picture-card\"===this.listType||\"picture\"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error(\"[Element Error][Upload]\",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var n=this.getFile(t);this.onProgress(e,n,this.uploadFiles),n.status=\"uploading\",n.percentage=e.percent||0},handleSuccess:function(e,t){var n=this.getFile(t);n&&(n.status=\"success\",n.response=e,this.onSuccess(e,n,this.uploadFiles),this.onChange(n,this.uploadFiles))},handleError:function(e,t){var n=this.getFile(t),i=this.uploadFiles;n.status=\"fail\",i.splice(i.indexOf(n),1),this.onError(e,n,this.uploadFiles),this.onChange(n,this.uploadFiles)},handleRemove:function(e,t){var n=this;t&&(e=this.getFile(t));var i=function(){n.abort(e);var t=n.uploadFiles;t.splice(t.indexOf(e),1),n.onRemove(e,t)};if(this.beforeRemove){if(\"function\"==typeof this.beforeRemove){var r=this.beforeRemove(e,this.uploadFiles);r&&r.then?r.then(function(){i()},is):!1!==r&&i()}}else i()},getFile:function(e){var t=void 0;return this.uploadFiles.every(function(n){return!(t=e.uid===n.uid?n:null)}),t},abort:function(e){this.$refs[\"upload-inner\"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return\"ready\"===e.status}).forEach(function(t){e.$refs[\"upload-inner\"].upload(t.raw)})},getMigratingConfig:function(){return{props:{\"default-file-list\":\"default-file-list is renamed to file-list.\",\"show-upload-list\":\"show-upload-list is renamed to show-file-list.\",\"thumbnail-mode\":\"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan\"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf(\"blob:\")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=this,n=void 0;this.showFileList&&(n=e(Ka,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var i=e(\"upload\",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,\"before-upload\":this.beforeUpload,\"with-credentials\":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,\"on-exceed\":this.onExceed,\"on-start\":this.handleStart,\"on-progress\":this.handleProgress,\"on-success\":this.handleSuccess,\"on-error\":this.handleError,\"on-preview\":this.onPreview,\"on-remove\":this.handleRemove,\"http-request\":this.httpRequest},ref:\"upload-inner\"},[this.$slots.trigger||this.$slots.default]);return e(\"div\",[\"picture-card\"===this.listType?n:\"\",this.$slots.trigger?[i,this.$slots.default]:i,this.$slots.tip,\"picture-card\"!==this.listType?n:\"\"])}},void 0,void 0,!1,null,null,null);rs.options.__file=\"packages/upload/src/index.vue\";var os=rs.exports;os.install=function(e){e.component(os.name,os)};var as=os,ss=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-progress\",class:[\"el-progress--\"+e.type,e.status?\"is-\"+e.status:\"\",{\"el-progress--without-text\":!e.showText,\"el-progress--text-inside\":e.textInside}],attrs:{role:\"progressbar\",\"aria-valuenow\":e.percentage,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"}},[\"line\"===e.type?n(\"div\",{staticClass:\"el-progress-bar\"},[n(\"div\",{staticClass:\"el-progress-bar__outer\",style:{height:e.strokeWidth+\"px\"}},[n(\"div\",{staticClass:\"el-progress-bar__inner\",style:e.barStyle},[e.showText&&e.textInside?n(\"div\",{staticClass:\"el-progress-bar__innerText\"},[e._v(e._s(e.content))]):e._e()])])]):n(\"div\",{staticClass:\"el-progress-circle\",style:{height:e.width+\"px\",width:e.width+\"px\"}},[n(\"svg\",{attrs:{viewBox:\"0 0 100 100\"}},[n(\"path\",{staticClass:\"el-progress-circle__track\",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:\"#e5e9f2\",\"stroke-width\":e.relativeStrokeWidth,fill:\"none\"}}),n(\"path\",{staticClass:\"el-progress-circle__path\",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:\"none\",\"stroke-linecap\":e.strokeLinecap,\"stroke-width\":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?n(\"div\",{staticClass:\"el-progress__text\",style:{fontSize:e.progressTextSize+\"px\"}},[e.status?n(\"i\",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};ss._withStripped=!0;var ls=r({name:\"ElProgress\",props:{type:{type:String,default:\"line\",validator:function(e){return[\"line\",\"circle\",\"dashboard\"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return[\"success\",\"exception\",\"warning\"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:\"round\"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:\"\"},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+\"%\",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return\"circle\"===this.type||\"dashboard\"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t=\"dashboard\"===this.type;return\"\\n        M 50 50\\n        m 0 \"+(t?\"\":\"-\")+e+\"\\n        a \"+e+\" \"+e+\" 0 1 1 0 \"+(t?\"-\":\"\")+2*e+\"\\n        a \"+e+\" \"+e+\" 0 1 1 0 \"+(t?\"\":\"-\")+2*e+\"\\n        \"},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return\"dashboard\"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+\"px\"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+\"px, \"+this.perimeter+\"px\",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+\"px, \"+this.perimeter+\"px\",strokeDashoffset:this.strokeDashoffset,transition:\"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease\"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case\"success\":e=\"#13ce66\";break;case\"exception\":e=\"#ff4949\";break;case\"warning\":e=\"#e6a23c\";break;default:e=\"#20a0ff\"}return e},iconClass:function(){return\"warning\"===this.status?\"el-icon-warning\":\"line\"===this.type?\"success\"===this.status?\"el-icon-circle-check\":\"el-icon-circle-close\":\"success\"===this.status?\"el-icon-check\":\"el-icon-close\"},progressTextSize:function(){return\"line\"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return\"function\"==typeof this.format?this.format(this.percentage)||\"\":this.percentage+\"%\"}},methods:{getCurrentColor:function(e){return\"function\"==typeof this.color?this.color(e):\"string\"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),n=0;n<t.length;n++)if(t[n].percentage>e)return t[n].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,n){return\"string\"==typeof e?{color:e,progress:(n+1)*t}:e})}}},ss,[],!1,null,null,null);ls.options.__file=\"packages/progress/src/progress.vue\";var us=ls.exports;us.install=function(e){e.component(us.name,us)};var cs=us,hs=function(){var e=this.$createElement,t=this._self._c||e;return t(\"span\",{staticClass:\"el-spinner\"},[t(\"svg\",{staticClass:\"el-spinner-inner\",style:{width:this.radius/2+\"px\",height:this.radius/2+\"px\"},attrs:{viewBox:\"0 0 50 50\"}},[t(\"circle\",{staticClass:\"path\",attrs:{cx:\"25\",cy:\"25\",r:\"20\",fill:\"none\",stroke:this.strokeColor,\"stroke-width\":this.strokeWidth}})])])};hs._withStripped=!0;var ds=r({name:\"ElSpinner\",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:\"#efefef\"}}},hs,[],!1,null,null,null);ds.options.__file=\"packages/spinner/src/spinner.vue\";var fs=ds.exports;fs.install=function(e){e.component(fs.name,fs)};var ps=fs,gs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-message-fade\"},on:{\"after-leave\":e.handleAfterLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],class:[\"el-message\",e.type&&!e.iconClass?\"el-message--\"+e.type:\"\",e.center?\"is-center\":\"\",e.showClose?\"is-closable\":\"\",e.customClass],style:e.positionStyle,attrs:{role:\"alert\"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?n(\"i\",{class:e.iconClass}):n(\"i\",{class:e.typeClass}),e._t(\"default\",[e.dangerouslyUseHTMLString?n(\"p\",{staticClass:\"el-message__content\",domProps:{innerHTML:e._s(e.message)}}):n(\"p\",{staticClass:\"el-message__content\"},[e._v(e._s(e.message))])]),e.showClose?n(\"i\",{staticClass:\"el-message__closeBtn el-icon-close\",on:{click:e.close}}):e._e()],2)])};gs._withStripped=!0;var ms={success:\"success\",info:\"info\",warning:\"warning\",error:\"error\"},vs=r({data:function(){return{visible:!1,message:\"\",duration:3e3,type:\"info\",iconClass:\"\",customClass:\"\",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?\"el-message__icon el-icon-\"+ms[this.type]:\"\"},positionStyle:function(){return{top:this.verticalOffset+\"px\"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,\"function\"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener(\"keydown\",this.keydown)},beforeDestroy:function(){document.removeEventListener(\"keydown\",this.keydown)}},gs,[],!1,null,null,null);vs.options.__file=\"packages/message/src/main.vue\";var ys=vs.exports,bs=fn.a.extend(ys),xs=void 0,_s=[],ws=1,Cs=function e(t){if(!fn.a.prototype.$isServer){\"string\"==typeof(t=t||{})&&(t={message:t});var n=t.onClose,i=\"message_\"+ws++;t.onClose=function(){e.close(i,n)},(xs=new bs({data:t})).id=i,Object(jr.isVNode)(xs.message)&&(xs.$slots.default=[xs.message],xs.message=null),xs.$mount(),document.body.appendChild(xs.$el);var r=t.offset||20;return _s.forEach(function(e){r+=e.$el.offsetHeight+16}),xs.verticalOffset=r,xs.visible=!0,xs.$el.style.zIndex=b.PopupManager.nextZIndex(),_s.push(xs),xs}};[\"success\",\"warning\",\"info\",\"error\"].forEach(function(e){Cs[e]=function(t){return\"string\"==typeof t&&(t={message:t}),t.type=e,Cs(t)}}),Cs.close=function(e,t){for(var n=_s.length,i=-1,r=void 0,o=0;o<n;o++)if(e===_s[o].id){r=_s[o].$el.offsetHeight,i=o,\"function\"==typeof t&&t(_s[o]),_s.splice(o,1);break}if(!(n<=1||-1===i||i>_s.length-1))for(var a=i;a<n-1;a++){var s=_s[a].$el;s.style.top=parseInt(s.style.top,10)-r-16+\"px\"}},Cs.closeAll=function(){for(var e=_s.length-1;e>=0;e--)_s[e].close()};var Ss=Cs,ks=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-badge\"},[e._t(\"default\"),n(\"transition\",{attrs:{name:\"el-zoom-in-center\"}},[n(\"sup\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:\"!hidden && (content || content === 0 || isDot)\"}],staticClass:\"el-badge__content\",class:[\"el-badge__content--\"+e.type,{\"is-fixed\":e.$slots.default,\"is-dot\":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};ks._withStripped=!0;var Ts=r({name:\"ElBadge\",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return[\"primary\",\"success\",\"warning\",\"info\",\"danger\"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return\"number\"==typeof e&&\"number\"==typeof t&&t<e?t+\"+\":e}}}},ks,[],!1,null,null,null);Ts.options.__file=\"packages/badge/src/main.vue\";var Ms=Ts.exports;Ms.install=function(e){e.component(Ms.name,Ms)};var Ds=Ms,As=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-card\",class:e.shadow?\"is-\"+e.shadow+\"-shadow\":\"is-always-shadow\"},[e.$slots.header||e.header?n(\"div\",{staticClass:\"el-card__header\"},[e._t(\"header\",[e._v(e._s(e.header))])],2):e._e(),n(\"div\",{staticClass:\"el-card__body\",style:e.bodyStyle},[e._t(\"default\")],2)])};As._withStripped=!0;var Is=r({name:\"ElCard\",props:{header:{},bodyStyle:{},shadow:{type:String}}},As,[],!1,null,null,null);Is.options.__file=\"packages/card/src/main.vue\";var Os=Is.exports;Os.install=function(e){e.component(Os.name,Os)};var Es=Os,Ls=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-rate\",attrs:{role:\"slider\",\"aria-valuenow\":e.currentValue,\"aria-valuetext\":e.text,\"aria-valuemin\":\"0\",\"aria-valuemax\":e.max,tabindex:\"0\"},on:{keydown:e.handleKey}},[e._l(e.max,function(t,i){return n(\"span\",{key:i,staticClass:\"el-rate__item\",style:{cursor:e.rateDisabled?\"auto\":\"pointer\"},on:{mousemove:function(n){e.setCurrentValue(t,n)},mouseleave:e.resetCurrentValue,click:function(n){e.selectValue(t)}}},[n(\"i\",{staticClass:\"el-rate__icon\",class:[e.classes[t-1],{hover:e.hoverIndex===t}],style:e.getIconStyle(t)},[e.showDecimalIcon(t)?n(\"i\",{staticClass:\"el-rate__decimal\",class:e.decimalIconClass,style:e.decimalStyle}):e._e()])])}),e.showText||e.showScore?n(\"span\",{staticClass:\"el-rate__text\",style:{color:e.textColor}},[e._v(e._s(e.text))]):e._e()],2)};Ls._withStripped=!0;var Ps=n(18),Ns=r({name:\"ElRate\",mixins:[w.a],inject:{elForm:{default:\"\"}},data:function(){return{pointerAtLeftHalf:!0,currentValue:this.value,hoverIndex:-1}},props:{value:{type:Number,default:0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:[Array,Object],default:function(){return[\"#F7BA2A\",\"#F7BA2A\",\"#F7BA2A\"]}},voidColor:{type:String,default:\"#C6D1DE\"},disabledVoidColor:{type:String,default:\"#EFF2F7\"},iconClasses:{type:[Array,Object],default:function(){return[\"el-icon-star-on\",\"el-icon-star-on\",\"el-icon-star-on\"]}},voidIconClass:{type:String,default:\"el-icon-star-off\"},disabledVoidIconClass:{type:String,default:\"el-icon-star-on\"},disabled:{type:Boolean,default:!1},allowHalf:{type:Boolean,default:!1},showText:{type:Boolean,default:!1},showScore:{type:Boolean,default:!1},textColor:{type:String,default:\"#1f2d3d\"},texts:{type:Array,default:function(){return[\"极差\",\"失望\",\"一般\",\"满意\",\"惊喜\"]}},scoreTemplate:{type:String,default:\"{value}\"}},computed:{text:function(){var e=\"\";return this.showScore?e=this.scoreTemplate.replace(/\\{\\s*value\\s*\\}/,this.rateDisabled?this.value:this.currentValue):this.showText&&(e=this.texts[Math.ceil(this.currentValue)-1]),e},decimalStyle:function(){var e=\"\";return this.rateDisabled?e=this.valueDecimal+\"%\":this.allowHalf&&(e=\"50%\"),{color:this.activeColor,width:e}},valueDecimal:function(){return 100*this.value-100*Math.floor(this.value)},classMap:function(){var e;return Array.isArray(this.iconClasses)?((e={})[this.lowThreshold]=this.iconClasses[0],e[this.highThreshold]={value:this.iconClasses[1],excluded:!0},e[this.max]=this.iconClasses[2],e):this.iconClasses},decimalIconClass:function(){return this.getValueFromMap(this.value,this.classMap)},voidClass:function(){return this.rateDisabled?this.disabledVoidIconClass:this.voidIconClass},activeClass:function(){return this.getValueFromMap(this.currentValue,this.classMap)},colorMap:function(){var e;return Array.isArray(this.colors)?((e={})[this.lowThreshold]=this.colors[0],e[this.highThreshold]={value:this.colors[1],excluded:!0},e[this.max]=this.colors[2],e):this.colors},activeColor:function(){return this.getValueFromMap(this.currentValue,this.colorMap)},classes:function(){var e=[],t=0,n=this.currentValue;for(this.allowHalf&&this.currentValue!==Math.floor(this.currentValue)&&n--;t<n;t++)e.push(this.activeClass);for(;t<this.max;t++)e.push(this.voidClass);return e},rateDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){this.currentValue=e,this.pointerAtLeftHalf=this.value!==Math.floor(this.value)}},methods:{getMigratingConfig:function(){return{props:{\"text-template\":\"text-template is renamed to score-template.\"}}},getValueFromMap:function(e,t){var n=Object.keys(t).filter(function(n){var i=t[n];return!!Object(Ps.isObject)(i)&&i.excluded?e<n:e<=n}).sort(function(e,t){return e-t}),i=t[n[0]];return Object(Ps.isObject)(i)?i.value:i||\"\"},showDecimalIcon:function(e){var t=this.rateDisabled&&this.valueDecimal>0&&e-1<this.value&&e>this.value,n=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||n},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit(\"input\",this.currentValue),this.$emit(\"change\",this.currentValue)):(this.$emit(\"input\",e),this.$emit(\"change\",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,n=e.keyCode;38===n||39===n?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==n&&40!==n||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit(\"input\",t),this.$emit(\"change\",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var n=t.target;Object(pe.hasClass)(n,\"el-rate__item\")&&(n=n.querySelector(\".el-rate__icon\")),Object(pe.hasClass)(n,\"el-rate__decimal\")&&(n=n.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=n.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit(\"input\",0)}},Ls,[],!1,null,null,null);Ns.options.__file=\"packages/rate/src/main.vue\";var Rs=Ns.exports;Rs.install=function(e){e.component(Rs.name,Rs)};var Bs=Rs,zs=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-steps\",class:[!this.simple&&\"el-steps--\"+this.direction,this.simple&&\"el-steps--simple\"]},[this._t(\"default\")],2)};zs._withStripped=!0;var Fs=r({name:\"ElSteps\",mixins:[w.a],props:{space:[Number,String],active:Number,direction:{type:String,default:\"horizontal\"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:\"finish\"},processStatus:{type:String,default:\"process\"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:\"center is removed.\"}}}},watch:{active:function(e,t){this.$emit(\"change\",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},zs,[],!1,null,null,null);Fs.options.__file=\"packages/steps/src/steps.vue\";var $s=Fs.exports;$s.install=function(e){e.component($s.name,$s)};var Vs=$s,js=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-step\",class:[!e.isSimple&&\"is-\"+e.$parent.direction,e.isSimple&&\"is-simple\",e.isLast&&!e.space&&!e.isCenter&&\"is-flex\",e.isCenter&&!e.isVertical&&!e.isSimple&&\"is-center\"],style:e.style},[n(\"div\",{staticClass:\"el-step__head\",class:\"is-\"+e.currentStatus},[n(\"div\",{staticClass:\"el-step__line\",style:e.isLast?\"\":{marginRight:e.$parent.stepOffset+\"px\"}},[n(\"i\",{staticClass:\"el-step__line-inner\",style:e.lineStyle})]),n(\"div\",{staticClass:\"el-step__icon\",class:\"is-\"+(e.icon?\"icon\":\"text\")},[\"success\"!==e.currentStatus&&\"error\"!==e.currentStatus?e._t(\"icon\",[e.icon?n(\"i\",{staticClass:\"el-step__icon-inner\",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():n(\"div\",{staticClass:\"el-step__icon-inner\"},[e._v(e._s(e.index+1))])]):n(\"i\",{staticClass:\"el-step__icon-inner is-status\",class:[\"el-icon-\"+(\"success\"===e.currentStatus?\"check\":\"close\")]})],2)]),n(\"div\",{staticClass:\"el-step__main\"},[n(\"div\",{ref:\"title\",staticClass:\"el-step__title\",class:[\"is-\"+e.currentStatus]},[e._t(\"title\",[e._v(e._s(e.title))])],2),e.isSimple?n(\"div\",{staticClass:\"el-step__arrow\"}):n(\"div\",{staticClass:\"el-step__description\",class:[\"is-\"+e.currentStatus]},[e._t(\"description\",[e._v(e._s(e.description))])],2)])])};js._withStripped=!0;var Hs=r({name:\"ElStep\",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:\"\"}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:\"wait\"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return\"vertical\"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?\"\":t},style:function(){var e={},t=this.$parent.steps.length,n=\"number\"==typeof this.space?this.space+\"px\":this.space?this.space:100/(t-(this.isCenter?0:1))+\"%\";return e.flexBasis=n,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+\"%\":e.marginRight=-this.$parent.stepOffset+\"px\",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&\"error\"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus=\"wait\",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,n={};n.transitionDelay=150*this.index+\"ms\",e===this.$parent.processStatus?(this.currentStatus,t=0):\"wait\"===e&&(t=0,n.transitionDelay=-150*this.index+\"ms\"),n.borderWidth=t&&!this.isSimple?\"1px\":0,\"vertical\"===this.$parent.direction?n.height=t+\"%\":n.width=t+\"%\",this.lineStyle=n}},mounted:function(){var e=this,t=this.$watch(\"index\",function(n){e.$watch(\"$parent.active\",e.updateStatus,{immediate:!0}),e.$watch(\"$parent.processStatus\",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},js,[],!1,null,null,null);Hs.options.__file=\"packages/steps/src/step.vue\";var Ws=Hs.exports;Ws.install=function(e){e.component(Ws.name,Ws)};var qs=Ws,Gs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[n(\"div\",{staticClass:\"el-carousel__container\",style:{height:e.height}},[e.arrowDisplay?n(\"transition\",{attrs:{name:\"carousel-arrow-left\"}},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:(\"always\"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:\"(arrow === 'always' || hover) && (loop || activeIndex > 0)\"}],staticClass:\"el-carousel__arrow el-carousel__arrow--left\",attrs:{type:\"button\"},on:{mouseenter:function(t){e.handleButtonEnter(\"left\")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[n(\"i\",{staticClass:\"el-icon-arrow-left\"})])]):e._e(),e.arrowDisplay?n(\"transition\",{attrs:{name:\"carousel-arrow-right\"}},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:(\"always\"===e.arrow||e.hover)&&(e.loop||e.activeIndex<e.items.length-1),expression:\"(arrow === 'always' || hover) && (loop || activeIndex < items.length - 1)\"}],staticClass:\"el-carousel__arrow el-carousel__arrow--right\",attrs:{type:\"button\"},on:{mouseenter:function(t){e.handleButtonEnter(\"right\")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex+1)}}},[n(\"i\",{staticClass:\"el-icon-arrow-right\"})])]):e._e(),e._t(\"default\")],2),\"none\"!==e.indicatorPosition?n(\"ul\",{class:e.indicatorsClasses},e._l(e.items,function(t,i){return n(\"li\",{key:i,class:[\"el-carousel__indicator\",\"el-carousel__indicator--\"+e.direction,{\"is-active\":i===e.activeIndex}],on:{mouseenter:function(t){e.throttledIndicatorHover(i)},click:function(t){t.stopPropagation(),e.handleIndicatorClick(i)}}},[n(\"button\",{staticClass:\"el-carousel__button\"},[e.hasLabel?n(\"span\",[e._v(e._s(t.label))]):e._e()])])}),0):e._e()])};Gs._withStripped=!0;var Us=n(25),Ys=n.n(Us),Xs=r({name:\"ElCarousel\",props:{initialIndex:{type:Number,default:0},height:String,trigger:{type:String,default:\"hover\"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:String,indicator:{type:Boolean,default:!0},arrow:{type:String,default:\"hover\"},type:String,loop:{type:Boolean,default:!0},direction:{type:String,default:\"horizontal\",validator:function(e){return-1!==[\"horizontal\",\"vertical\"].indexOf(e)}}},data:function(){return{items:[],activeIndex:-1,containerWidth:0,timer:null,hover:!1}},computed:{arrowDisplay:function(){return\"never\"!==this.arrow&&\"vertical\"!==this.direction},hasLabel:function(){return this.items.some(function(e){return e.label.toString().length>0})},carouselClasses:function(){var e=[\"el-carousel\",\"el-carousel--\"+this.direction];return\"card\"===this.type&&e.push(\"el-carousel--card\"),e},indicatorsClasses:function(){var e=[\"el-carousel__indicators\",\"el-carousel__indicators--\"+this.direction];return this.hasLabel&&e.push(\"el-carousel__indicators--labels\"),\"outside\"!==this.indicatorPosition&&\"card\"!==this.type||e.push(\"el-carousel__indicators--outside\"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),t>-1&&this.$emit(\"change\",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var n=this.items.length;return t===n-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?\"left\":!!(0===t&&e.inStage&&this.items[n-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&\"right\"},handleButtonEnter:function(e){var t=this;\"vertical\"!==this.direction&&this.items.forEach(function(n,i){e===t.itemInStage(n,i)&&(n.hover=!0)})},handleButtonLeave:function(){\"vertical\"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return\"ElCarouselItem\"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(n,i){n.translateItem(i,t.activeIndex,e)})},playSlides:function(){this.activeIndex<this.items.length-1?this.activeIndex++:this.loop&&(this.activeIndex=0)},pauseTimer:function(){this.timer&&(clearInterval(this.timer),this.timer=null)},startTimer:function(){this.interval<=0||!this.autoplay||this.timer||(this.timer=setInterval(this.playSlides,this.interval))},setActiveItem:function(e){if(\"string\"==typeof e){var t=this.items.filter(function(t){return t.name===e});t.length>0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn(\"[Element Warn][Carousel]index must be an integer.\");else{var n=this.items.length,i=this.activeIndex;this.activeIndex=e<0?this.loop?n-1:0:e>=n?this.loop?0:n-1:e,i===this.activeIndex&&this.resetItemPosition(i)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){\"hover\"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Ys()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Ys()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Object(Rt.addResizeListener)(e.$el,e.resetItemPosition),e.initialIndex<e.items.length&&e.initialIndex>=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Object(Rt.removeResizeListener)(this.$el,this.resetItemPosition),this.pauseTimer()}},Gs,[],!1,null,null,null);Xs.options.__file=\"packages/carousel/src/main.vue\";var Ks=Xs.exports;Ks.install=function(e){e.component(Ks.name,Ks)};var Zs=Ks,Js={vertical:{offset:\"offsetHeight\",scroll:\"scrollTop\",scrollSize:\"scrollHeight\",size:\"height\",key:\"vertical\",axis:\"Y\",client:\"clientY\",direction:\"top\"},horizontal:{offset:\"offsetWidth\",scroll:\"scrollLeft\",scrollSize:\"scrollWidth\",size:\"width\",key:\"horizontal\",axis:\"X\",client:\"clientX\",direction:\"left\"}};var Qs={name:\"Bar\",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return Js[this.vertical?\"vertical\":\"horizontal\"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,n=this.move,i=this.bar;return e(\"div\",{class:[\"el-scrollbar__bar\",\"is-\"+i.key],on:{mousedown:this.clickTrackHandler}},[e(\"div\",{ref:\"thumb\",class:\"el-scrollbar__thumb\",on:{mousedown:this.clickThumbHandler},style:function(e){var t=e.move,n=e.size,i=e.bar,r={},o=\"translate\"+i.axis+\"(\"+t+\"%)\";return r[i.size]=n,r.transform=o,r.msTransform=o,r.webkitTransform=o,r}({size:t,move:n,bar:i})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(pe.on)(document,\"mousemove\",this.mouseMoveDocumentHandler),Object(pe.on)(document,\"mouseup\",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var n=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=n*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(pe.off)(document,\"mousemove\",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(pe.off)(document,\"mouseup\",this.mouseUpDocumentHandler)}},el={name:\"ElScrollbar\",components:{Bar:Qs},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:\"div\"}},data:function(){return{sizeWidth:\"0\",sizeHeight:\"0\",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=Rn()(),n=this.wrapStyle;if(t){var i=\"-\"+t+\"px\",r=\"margin-bottom: \"+i+\"; margin-right: \"+i+\";\";Array.isArray(this.wrapStyle)?(n=Object(g.toObject)(this.wrapStyle)).marginRight=n.marginBottom=i:\"string\"==typeof this.wrapStyle?n+=r:n=r}var o=e(this.tag,{class:[\"el-scrollbar__view\",this.viewClass],style:this.viewStyle,ref:\"resize\"},this.$slots.default),a=e(\"div\",{ref:\"wrap\",style:n,on:{scroll:this.handleScroll},class:[this.wrapClass,\"el-scrollbar__wrap\",t?\"\":\"el-scrollbar__wrap--hidden-default\"]},[[o]]);return e(\"div\",{class:\"el-scrollbar\"},this.native?[e(\"div\",{ref:\"wrap\",class:[this.wrapClass,\"el-scrollbar__wrap\"],style:n},[[o]])]:[a,e(Qs,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Qs,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})])},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,n=this.wrap;n&&(e=100*n.clientHeight/n.scrollHeight,t=100*n.clientWidth/n.scrollWidth,this.sizeHeight=e<100?e+\"%\":\"\",this.sizeWidth=t<100?t+\"%\":\"\")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(Rt.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(Rt.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(el.name,el)}},tl=el,nl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.ready,expression:\"ready\"}],staticClass:\"el-carousel__item\",class:{\"is-active\":e.active,\"el-carousel__item--card\":\"card\"===e.$parent.type,\"is-in-stage\":e.inStage,\"is-hover\":e.hover,\"is-animating\":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},[\"card\"===e.$parent.type?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.active,expression:\"!active\"}],staticClass:\"el-carousel__mask\"}):e._e(),e._t(\"default\")],2)};nl._withStripped=!0;var il=r({name:\"ElCarouselItem\",props:{name:String,label:{type:[String,Number],default:\"\"}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,n){return 0===t&&e===n-1?-1:t===n-1&&0===e?n:e<t-1&&t-e>=n/2?n+1:e>t+1&&e-t>=n/2?-2:e},calcCardTranslate:function(e,t){var n=this.$parent.$el.offsetWidth;return this.inStage?n*(1.17*(e-t)+1)/4:e<t?-1.83*n/4:3.83*n/4},calcTranslate:function(e,t,n){return this.$parent.$el[n?\"offsetHeight\":\"offsetWidth\"]*(e-t)},translateItem:function(e,t,n){var i=this.$parent.type,r=this.parentDirection,o=this.$parent.items.length;if(\"card\"!==i&&void 0!==n&&(this.animating=e===t||e===n),e!==t&&o>2&&this.$parent.loop&&(e=this.processIndex(e,t,o)),\"card\"===i)\"vertical\"===r&&console.warn(\"[Element Warn][Carousel]vertical direction is not supported in card mode\"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a=\"vertical\"===r;this.translate=this.calcTranslate(e,t,a)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&\"card\"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e={transform:(\"vertical\"===this.parentDirection?\"translateY\":\"translateX\")+\"(\"+this.translate+\"px) scale(\"+this.scale+\")\"};return Object(g.autoprefixer)(e)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},nl,[],!1,null,null,null);il.options.__file=\"packages/carousel/src/item.vue\";var rl=il.exports;rl.install=function(e){e.component(rl.name,rl)};var ol=rl,al=function(){var e=this.$createElement;return(this._self._c||e)(\"div\",{staticClass:\"el-collapse\",attrs:{role:\"tablist\",\"aria-multiselectable\":\"true\"}},[this._t(\"default\")],2)};al._withStripped=!0;var sl=r({name:\"ElCollapse\",componentName:\"ElCollapse\",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit(\"input\",t),this.$emit(\"change\",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:\"\");else{var t=this.activeNames.slice(0),n=t.indexOf(e.name);n>-1?t.splice(n,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on(\"item-click\",this.handleItemClick)}},al,[],!1,null,null,null);sl.options.__file=\"packages/collapse/src/collapse.vue\";var ll=sl.exports;ll.install=function(e){e.component(ll.name,ll)};var ul=ll,cl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-collapse-item\",class:{\"is-active\":e.isActive,\"is-disabled\":e.disabled}},[n(\"div\",{attrs:{role:\"tab\",\"aria-expanded\":e.isActive,\"aria-controls\":\"el-collapse-content-\"+e.id,\"aria-describedby\":\"el-collapse-content-\"+e.id}},[n(\"div\",{staticClass:\"el-collapse-item__header\",class:{focusing:e.focusing,\"is-active\":e.isActive},attrs:{role:\"button\",id:\"el-collapse-head-\"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return\"button\"in t||!e._k(t.keyCode,\"space\",32,t.key,[\" \",\"Spacebar\"])||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t(\"title\",[e._v(e._s(e.title))]),n(\"i\",{staticClass:\"el-collapse-item__arrow el-icon-arrow-right\",class:{\"is-active\":e.isActive}})],2)]),n(\"el-collapse-transition\",[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.isActive,expression:\"isActive\"}],staticClass:\"el-collapse-item__wrap\",attrs:{role:\"tabpanel\",\"aria-hidden\":!e.isActive,\"aria-labelledby\":\"el-collapse-head-\"+e.id,id:\"el-collapse-content-\"+e.id}},[n(\"div\",{staticClass:\"el-collapse-item__content\"},[e._t(\"default\")],2)])])],1)};cl._withStripped=!0;var hl=r({name:\"ElCollapseItem\",componentName:\"ElCollapseItem\",mixins:[S.a],components:{ElCollapseTransition:be.a},data:function(){return{contentWrapStyle:{height:\"auto\",display:\"block\"},contentHeight:0,focusing:!1,isClick:!1,id:Object(g.generateId)()}},inject:[\"collapse\"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch(\"ElCollapse\",\"item-click\",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch(\"ElCollapse\",\"item-click\",this)}}},cl,[],!1,null,null,null);hl.options.__file=\"packages/collapse/src/collapse-item.vue\";var dl=hl.exports;dl.install=function(e){e.component(dl.name,dl)};var fl=dl,pl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:function(){return e.toggleDropDownVisible(!1)},expression:\"() => toggleDropDownVisible(false)\"}],ref:\"reference\",class:[\"el-cascader\",e.realSize&&\"el-cascader--\"+e.realSize,{\"is-disabled\":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[n(\"el-input\",{ref:\"input\",class:{\"is-focus\":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,\"validate-event\":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:\"multiple ? presentText : inputValue\"}},[n(\"template\",{slot:\"suffix\"},[e.clearBtnVisible?n(\"i\",{key:\"clear\",staticClass:\"el-input__icon el-icon-circle-close\",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):n(\"i\",{key:\"arrow-down\",class:[\"el-input__icon\",\"el-icon-arrow-down\",e.dropDownVisible&&\"is-reverse\"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?n(\"div\",{staticClass:\"el-cascader__tags\"},[e._l(e.presentTags,function(t,i){return n(\"el-tag\",{key:t.key,attrs:{type:\"info\",size:e.tagSize,hit:t.hitState,closable:t.closable,\"disable-transitions\":\"\"},on:{close:function(t){e.deleteTag(i)}}},[n(\"span\",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?n(\"input\",{directives:[{name:\"model\",rawName:\"v-model.trim\",value:e.inputValue,expression:\"inputValue\",modifiers:{trim:!0}}],staticClass:\"el-cascader__search-input\",attrs:{type:\"text\",placeholder:e.presentTags.length?\"\":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return\"button\"in t||!e._k(t.keyCode,\"delete\",[8,46],t.key,[\"Backspace\",\"Delete\",\"Del\"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":e.handleDropdownLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.dropDownVisible,expression:\"dropDownVisible\"}],ref:\"popper\",class:[\"el-popper\",\"el-cascader__dropdown\",e.popperClass]},[n(\"el-cascader-panel\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.filtering,expression:\"!filtering\"}],ref:\"panel\",attrs:{options:e.options,props:e.config,border:!1,\"render-label\":e.$scopedSlots.default},on:{\"expand-change\":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:\"checkedValue\"}}),e.filterable?n(\"el-scrollbar\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.filtering,expression:\"filtering\"}],ref:\"suggestionPanel\",staticClass:\"el-cascader__suggestion-panel\",attrs:{tag:\"ul\",\"view-class\":\"el-cascader__suggestion-list\"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,i){return n(\"li\",{key:t.uid,class:[\"el-cascader__suggestion-item\",t.checked&&\"is-checked\"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(i)}}},[n(\"span\",[e._v(e._s(t.text))]),t.checked?n(\"i\",{staticClass:\"el-icon-check\"}):e._e()])}):e._t(\"empty\",[n(\"li\",{staticClass:\"el-cascader__empty-text\"},[e._v(e._s(e.t(\"el.cascader.noMatch\")))])])],2):e._e()],1)])],1)};pl._withStripped=!0;var gl=n(42),ml=n.n(gl),vl=n(28),yl=n.n(vl),bl=yl.a.keys,xl={expandTrigger:{newProp:\"expandTrigger\",type:String},changeOnSelect:{newProp:\"checkStrictly\",type:Boolean},hoverThreshold:{newProp:\"hoverThreshold\",type:Number}},_l={props:{placement:{type:String,default:\"bottom-start\"},appendToBody:N.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:N.a.props.arrowOffset,offset:N.a.props.offset,boundariesPadding:N.a.props.boundariesPadding,popperOptions:N.a.props.popperOptions},methods:N.a.methods,data:N.a.data,beforeDestroy:N.a.beforeDestroy},wl={medium:36,small:32,mini:28},Cl=r({name:\"ElCascader\",directives:{Clickoutside:E.a},mixins:[_l,S.a,p.a,w.a],inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},components:{ElInput:d.a,ElTag:Nt.a,ElScrollbar:B.a,ElCascaderPanel:ml.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(Bt.t)(\"el.cascader.placeholder\")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:\" / \"},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return[\"small\",\"mini\"].indexOf(this.realSize)>-1?\"mini\":\"small\"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(xl).forEach(function(n){var i=xl[n],r=i.newProp,o=i.type,a=t[n]||t[Object(g.kebabCase)(n)];Object(je.isDef)(n)&&!Object(je.isDef)(e[r])&&(o===Boolean&&\"\"===a&&(a=!0),e[r]=a)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{disabled:function(){this.computePresentContent()},value:function(e){Object(g.isEqual)(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value,n=this.dropDownVisible,i=this.config,r=i.checkStrictly,o=i.multiple;Object(g.isEqual)(e,t)&&!Object(Ps.isUndefined)(t)||(this.computePresentContent(),o||r||!n||this.toggleDropDownVisible(!1),this.$emit(\"input\",e),this.$emit(\"change\",e),this.dispatch(\"ElFormItem\",\"el.form.change\",[e]))},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||wl[this.realSize]||40),Object(g.isEmpty)(this.value)||this.computePresentContent(),this.filterHandler=I()(this.debounce,function(){var t=e.inputValue;if(t){var n=e.beforeFilter(t);n&&n.then?n.then(e.getSuggestions):!1!==n?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Object(Rt.addResizeListener)(this.$el,this.updateStyle)},beforeDestroy:function(){Object(Rt.removeResizeListener)(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{\"expand-trigger\":\"expand-trigger is removed, use `props.expandTrigger` instead.\",\"change-on-select\":\"change-on-select is removed, use `props.checkStrictly` instead.\",\"hover-threshold\":\"hover-threshold is removed, use `props.hoverThreshold` instead\"},events:{\"active-item-change\":\"active-item-change is renamed to expand-change\"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var n=this.dropDownVisible,i=this.$refs.input;(e=Object(je.isDef)(e)?e:!n)!==n&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),i.$refs.input.setAttribute(\"aria-expanded\",e),this.$emit(\"visible-change\",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case bl.enter:this.toggleDropDownVisible();break;case bl.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case bl.esc:case bl.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit(\"focus\",e)},handleBlur:function(e){this.$emit(\"blur\",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText=\"\",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit(\"expand-change\",e),this.$emit(\"active-item-change\",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,n=e.$refs,i=n.popper,r=n.suggestionPanel,o=null;t&&r?o=r.$el.querySelector(\".el-cascader__suggestion-item\"):o=i.querySelector(\".el-cascader-menu\").querySelector('.el-cascader-node[tabindex=\"-1\"]');o&&(o.focus(),!t&&o.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){e.config.multiple?(e.computePresentTags(),e.presentText=e.presentTags.length?\" \":null):e.computePresentText()})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!Object(g.isEmpty)(e)){var n=this.panel.getNodeByValue(e);if(n&&(t.checkStrictly||n.isLeaf))return void(this.presentText=n.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,n=this.showAllLevels,i=this.separator,r=this.collapseTags,o=this.getCheckedNodes(t),a=[],s=function(t){return{node:t,key:t.uid,text:t.getText(n,i),hitState:!1,closable:!e&&!t.isDisabled}};if(o.length){var l=o[0],u=o.slice(1),c=u.length;a.push(s(l)),c&&(r?a.push({key:-1,text:\"+ \"+c,closable:!1}):u.forEach(function(e){return a.push(s(e))}))}this.checkedNodes=o,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;Object(Ps.isFunction)(t)||(t=function(e,t){return e.text.includes(t)});var n=this.panel.getFlattedNodes(this.leafOnly).filter(function(n){return!n.isDisabled&&(n.text=n.getText(e.showAllLevels,e.separator)||\"\",t(n,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):n.forEach(function(t){t.checked=Object(g.isEqual)(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=n,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,n=e.target;switch(t){case bl.enter:n.click();break;case bl.up:var i=n.previousElementSibling;i&&i.focus();break;case bl.down:var r=n.nextElementSibling;r&&r.focus();break;case bl.esc:case bl.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,n=this.presentTags,i=n.length-1,r=n[i];this.pressDeleteCount=e?0:t+1,r&&this.pressDeleteCount&&(r.hitState?this.deleteTag(i):r.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,n=this.suggestions[e];if(t){var i=n.checked;n.doCheck(!i),this.panel.calculateMultiCheckedValue()}else this.checkedValue=n.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,n=t[e];this.checkedValue=t.filter(function(t,n){return n!==e}),this.$emit(\"remove-tag\",n)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var n=this.$refs.suggestionPanel,i=e.querySelector(\".el-input__inner\");if(i){var r=e.querySelector(\".el-cascader__tags\"),o=null;if(n&&(o=n.$el))o.querySelector(\".el-cascader__suggestion-list\").style.minWidth=i.offsetWidth+\"px\";if(r){var a=r.offsetHeight,s=Math.max(a+6,t)+\"px\";i.style.height=s,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},pl,[],!1,null,null,null);Cl.options.__file=\"packages/cascader/src/cascader.vue\";var Sl=Cl.exports;Sl.install=function(e){e.component(Sl.name,Sl)};var kl=Sl,Tl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:e.hide,expression:\"hide\"}],class:[\"el-color-picker\",e.colorDisabled?\"is-disabled\":\"\",e.colorSize?\"el-color-picker--\"+e.colorSize:\"\"]},[e.colorDisabled?n(\"div\",{staticClass:\"el-color-picker__mask\"}):e._e(),n(\"div\",{staticClass:\"el-color-picker__trigger\",on:{click:e.handleTrigger}},[n(\"span\",{staticClass:\"el-color-picker__color\",class:{\"is-alpha\":e.showAlpha}},[n(\"span\",{staticClass:\"el-color-picker__color-inner\",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():n(\"span\",{staticClass:\"el-color-picker__empty el-icon-close\"})]),n(\"span\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.value||e.showPanelColor,expression:\"value || showPanelColor\"}],staticClass:\"el-color-picker__icon el-icon-arrow-down\"})]),n(\"picker-dropdown\",{ref:\"dropdown\",class:[\"el-color-picker__panel\",e.popperClass||\"\"],attrs:{color:e.color,\"show-alpha\":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:\"showPicker\"}})],1)};Tl._withStripped=!0;var Ml=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var Dl=function(e,t,n){return[e,t*n/((e=(2-t)*n)<1?e:2-e)||0,e/2]},Al=function(e,t){var n;\"string\"==typeof(n=e)&&-1!==n.indexOf(\".\")&&1===parseFloat(n)&&(e=\"100%\");var i=function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"%\")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),i&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Il={10:\"A\",11:\"B\",12:\"C\",13:\"D\",14:\"E\",15:\"F\"},Ol={A:10,B:11,C:12,D:13,E:14,F:15},El=function(e){return 2===e.length?16*(Ol[e[0].toUpperCase()]||+e[0])+(Ol[e[1].toUpperCase()]||+e[1]):Ol[e[1].toUpperCase()]||+e[1]},Ll=function(e,t,n){e=Al(e,255),t=Al(t,255),n=Al(n,255);var i,r=Math.max(e,t,n),o=Math.min(e,t,n),a=void 0,s=r,l=r-o;if(i=0===r?0:l/r,r===o)a=0;else{switch(r){case e:a=(t-n)/l+(t<n?6:0);break;case t:a=(n-e)/l+2;break;case n:a=(e-t)/l+4}a/=6}return{h:360*a,s:100*i,v:100*s}},Pl=function(e,t,n){e=6*Al(e,360),t=Al(t,100),n=Al(n,100);var i=Math.floor(e),r=e-i,o=n*(1-t),a=n*(1-r*t),s=n*(1-(1-r)*t),l=i%6,u=[n,a,o,o,s,n][l],c=[s,n,n,a,o,o][l],h=[o,o,s,n,n,a][l];return{r:Math.round(255*u),g:Math.round(255*c),b:Math.round(255*h)}},Nl=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this.enableAlpha=!1,this.format=\"hex\",this.value=\"\",t=t||{})t.hasOwnProperty(n)&&(this[n]=t[n]);this.doOnChange()}return e.prototype.set=function(e,t){if(1!==arguments.length||\"object\"!==(void 0===e?\"undefined\":Ml(e)))this[\"_\"+e]=t,this.doOnChange();else for(var n in e)e.hasOwnProperty(n)&&this.set(n,e[n])},e.prototype.get=function(e){return this[\"_\"+e]},e.prototype.toRgb=function(){return Pl(this._hue,this._saturation,this._value)},e.prototype.fromString=function(e){var t=this;if(!e)return this._hue=0,this._saturation=100,this._value=100,void this.doOnChange();var n=function(e,n,i){t._hue=Math.max(0,Math.min(360,e)),t._saturation=Math.max(0,Math.min(100,n)),t._value=Math.max(0,Math.min(100,i)),t.doOnChange()};if(-1!==e.indexOf(\"hsl\")){var i=e.replace(/hsla|hsl|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(function(e){return\"\"!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===i.length?this._alpha=Math.floor(100*parseFloat(i[3])):3===i.length&&(this._alpha=100),i.length>=3){var r=function(e,t,n){n/=100;var i=t/=100,r=Math.max(n,.01);return t*=(n*=2)<=1?n:2-n,i*=r<=1?r:2-r,{h:e,s:100*(0===n?2*i/(r+i):2*t/(n+t)),v:(n+t)/2*100}}(i[0],i[1],i[2]);n(r.h,r.s,r.v)}}else if(-1!==e.indexOf(\"hsv\")){var o=e.replace(/hsva|hsv|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(function(e){return\"\"!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===o.length?this._alpha=Math.floor(100*parseFloat(o[3])):3===o.length&&(this._alpha=100),o.length>=3&&n(o[0],o[1],o[2])}else if(-1!==e.indexOf(\"rgb\")){var a=e.replace(/rgba|rgb|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(function(e){return\"\"!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var s=Ll(a[0],a[1],a[2]);n(s.h,s.s,s.v)}}else if(-1!==e.indexOf(\"#\")){var l=e.replace(\"#\",\"\").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}$/.test(l))return;var u=void 0,c=void 0,h=void 0;3===l.length?(u=El(l[0]+l[0]),c=El(l[1]+l[1]),h=El(l[2]+l[2])):6!==l.length&&8!==l.length||(u=El(l.substring(0,2)),c=El(l.substring(2,4)),h=El(l.substring(4,6))),8===l.length?this._alpha=Math.floor(El(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var d=Ll(u,c,h);n(d.h,d.s,d.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,n=this._value,i=this._alpha,r=this.format;if(this.enableAlpha)switch(r){case\"hsl\":var o=Dl(e,t/100,n/100);this.value=\"hsla(\"+e+\", \"+Math.round(100*o[1])+\"%, \"+Math.round(100*o[2])+\"%, \"+i/100+\")\";break;case\"hsv\":this.value=\"hsva(\"+e+\", \"+Math.round(t)+\"%, \"+Math.round(n)+\"%, \"+i/100+\")\";break;default:var a=Pl(e,t,n),s=a.r,l=a.g,u=a.b;this.value=\"rgba(\"+s+\", \"+l+\", \"+u+\", \"+i/100+\")\"}else switch(r){case\"hsl\":var c=Dl(e,t/100,n/100);this.value=\"hsl(\"+e+\", \"+Math.round(100*c[1])+\"%, \"+Math.round(100*c[2])+\"%)\";break;case\"hsv\":this.value=\"hsv(\"+e+\", \"+Math.round(t)+\"%, \"+Math.round(n)+\"%)\";break;case\"rgb\":var h=Pl(e,t,n),d=h.r,f=h.g,p=h.b;this.value=\"rgb(\"+d+\", \"+f+\", \"+p+\")\";break;default:this.value=function(e){var t=e.r,n=e.g,i=e.b,r=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),n=e%16;return\"\"+(Il[t]||t)+(Il[n]||n)};return isNaN(t)||isNaN(n)||isNaN(i)?\"\":\"#\"+r(t)+r(n)+r(i)}(Pl(e,t,n))}},e}(),Rl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-zoom-in-top\"},on:{\"after-leave\":e.doDestroy}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.showPopper,expression:\"showPopper\"}],staticClass:\"el-color-dropdown\"},[n(\"div\",{staticClass:\"el-color-dropdown__main-wrapper\"},[n(\"hue-slider\",{ref:\"hue\",staticStyle:{float:\"right\"},attrs:{color:e.color,vertical:\"\"}}),n(\"sv-panel\",{ref:\"sl\",attrs:{color:e.color}})],1),e.showAlpha?n(\"alpha-slider\",{ref:\"alpha\",attrs:{color:e.color}}):e._e(),e.predefine?n(\"predefine\",{attrs:{color:e.color,colors:e.predefine}}):e._e(),n(\"div\",{staticClass:\"el-color-dropdown__btns\"},[n(\"span\",{staticClass:\"el-color-dropdown__value\"},[n(\"el-input\",{attrs:{\"validate-event\":!1,size:\"mini\"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return\"button\"in t||!e._k(t.keyCode,\"enter\",13,t.key,\"Enter\")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:\"customInput\"}})],1),n(\"el-button\",{staticClass:\"el-color-dropdown__link-btn\",attrs:{size:\"mini\",type:\"text\"},on:{click:function(t){e.$emit(\"clear\")}}},[e._v(\"\\n        \"+e._s(e.t(\"el.colorpicker.clear\"))+\"\\n      \")]),n(\"el-button\",{staticClass:\"el-color-dropdown__btn\",attrs:{plain:\"\",size:\"mini\"},on:{click:e.confirmValue}},[e._v(\"\\n        \"+e._s(e.t(\"el.colorpicker.confirm\"))+\"\\n      \")])],1)],1)])};Rl._withStripped=!0;var Bl=function(){var e=this.$createElement,t=this._self._c||e;return t(\"div\",{staticClass:\"el-color-svpanel\",style:{backgroundColor:this.background}},[t(\"div\",{staticClass:\"el-color-svpanel__white\"}),t(\"div\",{staticClass:\"el-color-svpanel__black\"}),t(\"div\",{staticClass:\"el-color-svpanel__cursor\",style:{top:this.cursorTop+\"px\",left:this.cursorLeft+\"px\"}},[t(\"div\")])])};Bl._withStripped=!0;var zl=!1,Fl=function(e,t){if(!fn.a.prototype.$isServer){var n=function(e){t.drag&&t.drag(e)},i=function e(i){document.removeEventListener(\"mousemove\",n),document.removeEventListener(\"mouseup\",e),document.onselectstart=null,document.ondragstart=null,zl=!1,t.end&&t.end(i)};e.addEventListener(\"mousedown\",function(e){zl||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener(\"mousemove\",n),document.addEventListener(\"mouseup\",i),zl=!0,t.start&&t.start(e))})}},$l=r({name:\"el-sl-panel\",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get(\"hue\"),value:this.color.get(\"value\")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get(\"saturation\"),t=this.color.get(\"value\"),n=this.$el,i=n.clientWidth,r=n.clientHeight;this.cursorLeft=e*i/100,this.cursorTop=(100-t)*r/100,this.background=\"hsl(\"+this.color.get(\"hue\")+\", 100%, 50%)\"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),n=e.clientX-t.left,i=e.clientY-t.top;n=Math.max(0,n),n=Math.min(n,t.width),i=Math.max(0,i),i=Math.min(i,t.height),this.cursorLeft=n,this.cursorTop=i,this.color.set({saturation:n/t.width*100,value:100-i/t.height*100})}},mounted:function(){var e=this;Fl(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:\"hsl(0, 100%, 50%)\"}}},Bl,[],!1,null,null,null);$l.options.__file=\"packages/color-picker/src/components/sv-panel.vue\";var Vl=$l.exports,jl=function(){var e=this.$createElement,t=this._self._c||e;return t(\"div\",{staticClass:\"el-color-hue-slider\",class:{\"is-vertical\":this.vertical}},[t(\"div\",{ref:\"bar\",staticClass:\"el-color-hue-slider__bar\",on:{click:this.handleClick}}),t(\"div\",{ref:\"thumb\",staticClass:\"el-color-hue-slider__thumb\",style:{left:this.thumbLeft+\"px\",top:this.thumbTop+\"px\"}})])};jl._withStripped=!0;var Hl=r({name:\"el-color-hue-slider\",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get(\"hue\")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),n=this.$refs.thumb,i=void 0;if(this.vertical){var r=e.clientY-t.top;r=Math.min(r,t.height-n.offsetHeight/2),r=Math.max(n.offsetHeight/2,r),i=Math.round((r-n.offsetHeight/2)/(t.height-n.offsetHeight)*360)}else{var o=e.clientX-t.left;o=Math.min(o,t.width-n.offsetWidth/2),o=Math.max(n.offsetWidth/2,o),i=Math.round((o-n.offsetWidth/2)/(t.width-n.offsetWidth)*360)}this.color.set(\"hue\",i)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get(\"hue\");if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetWidth-n.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get(\"hue\");if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetHeight-n.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,n=t.bar,i=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Fl(n,r),Fl(i,r),this.update()}},jl,[],!1,null,null,null);Hl.options.__file=\"packages/color-picker/src/components/hue-slider.vue\";var Wl=Hl.exports,ql=function(){var e=this.$createElement,t=this._self._c||e;return t(\"div\",{staticClass:\"el-color-alpha-slider\",class:{\"is-vertical\":this.vertical}},[t(\"div\",{ref:\"bar\",staticClass:\"el-color-alpha-slider__bar\",style:{background:this.background},on:{click:this.handleClick}}),t(\"div\",{ref:\"thumb\",staticClass:\"el-color-alpha-slider__thumb\",style:{left:this.thumbLeft+\"px\",top:this.thumbTop+\"px\"}})])};ql._withStripped=!0;var Gl=r({name:\"el-color-alpha-slider\",props:{color:{required:!0},vertical:Boolean},watch:{\"color._alpha\":function(){this.update()},\"color.value\":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),n=this.$refs.thumb;if(this.vertical){var i=e.clientY-t.top;i=Math.max(n.offsetHeight/2,i),i=Math.min(i,t.height-n.offsetHeight/2),this.color.set(\"alpha\",Math.round((i-n.offsetHeight/2)/(t.height-n.offsetHeight)*100))}else{var r=e.clientX-t.left;r=Math.max(n.offsetWidth/2,r),r=Math.min(r,t.width-n.offsetWidth/2),this.color.set(\"alpha\",Math.round((r-n.offsetWidth/2)/(t.width-n.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetWidth-n.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetHeight-n.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,n=e.g,i=e.b;return\"linear-gradient(to right, rgba(\"+t+\", \"+n+\", \"+i+\", 0) 0%, rgba(\"+t+\", \"+n+\", \"+i+\", 1) 100%)\"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,n=t.bar,i=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Fl(n,r),Fl(i,r),this.update()}},ql,[],!1,null,null,null);Gl.options.__file=\"packages/color-picker/src/components/alpha-slider.vue\";var Ul=Gl.exports,Yl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-color-predefine\"},[n(\"div\",{staticClass:\"el-color-predefine__colors\"},e._l(e.rgbaColors,function(t,i){return n(\"div\",{key:e.colors[i],staticClass:\"el-color-predefine__color-selector\",class:{selected:t.selected,\"is-alpha\":t._alpha<100},on:{click:function(t){e.handleSelect(i)}}},[n(\"div\",{style:{\"background-color\":t.value}})])}),0)])};Yl._withStripped=!0;var Xl=r({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var n=new Nl;return n.enableAlpha=!0,n.format=\"rgba\",n.fromString(e),n.selected=n.value===t.value,n})}},watch:{\"$parent.currentColor\":function(e){var t=new Nl;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Yl,[],!1,null,null,null);Xl.options.__file=\"packages/color-picker/src/components/predefine.vue\";var Kl=Xl.exports,Zl=r({name:\"el-color-picker-dropdown\",mixins:[N.a,p.a],components:{SvPanel:Vl,HueSlider:Wl,AlphaSlider:Ul,ElInput:d.a,ElButton:G.a,Predefine:Kl},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:\"\"}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:\"\"}},methods:{confirmValue:function(){this.$emit(\"pick\")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,n=e.sl,i=e.hue,r=e.alpha;n&&n.update(),i&&i.update(),r&&r.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},Rl,[],!1,null,null,null);Zl.options.__file=\"packages/color-picker/src/components/picker-dropdown.vue\";var Jl=Zl.exports,Ql=r({name:\"ElColorPicker\",mixins:[S.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:\"\"},elFormItem:{default:\"\"}},directives:{Clickoutside:E.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):\"transparent\"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new Nl({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit(\"active-change\",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit(\"input\",e),this.$emit(\"change\",e),this.dispatch(\"ElFormItem\",\"el.form.change\",e),this.showPicker=!1},clearValue:function(){this.$emit(\"input\",null),this.$emit(\"change\",null),null!==this.value&&this.dispatch(\"ElFormItem\",\"el.form.change\",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof Nl))throw Error(\"color should be instance of Color Class\");var n=e.toRgb(),i=n.r,r=n.g,o=n.b;return t?\"rgba(\"+i+\", \"+r+\", \"+o+\", \"+e.get(\"alpha\")/100+\")\":\"rgb(\"+i+\", \"+r+\", \"+o+\")\"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new Nl({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:Jl}},Tl,[],!1,null,null,null);Ql.options.__file=\"packages/color-picker/src/main.vue\";var eu=Ql.exports;eu.install=function(e){e.component(eu.name,eu)};var tu=eu,nu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-transfer\"},[n(\"transfer-panel\",e._b({ref:\"leftPanel\",attrs:{data:e.sourceData,title:e.titles[0]||e.t(\"el.transfer.titles.0\"),\"default-checked\":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t(\"el.transfer.filterPlaceholder\")},on:{\"checked-change\":e.onSourceCheckedChange}},\"transfer-panel\",e.$props,!1),[e._t(\"left-footer\")],2),n(\"div\",{staticClass:\"el-transfer__buttons\"},[n(\"el-button\",{class:[\"el-transfer__button\",e.hasButtonTexts?\"is-with-texts\":\"\"],attrs:{type:\"primary\",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[n(\"i\",{staticClass:\"el-icon-arrow-left\"}),void 0!==e.buttonTexts[0]?n(\"span\",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),n(\"el-button\",{class:[\"el-transfer__button\",e.hasButtonTexts?\"is-with-texts\":\"\"],attrs:{type:\"primary\",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?n(\"span\",[e._v(e._s(e.buttonTexts[1]))]):e._e(),n(\"i\",{staticClass:\"el-icon-arrow-right\"})])],1),n(\"transfer-panel\",e._b({ref:\"rightPanel\",attrs:{data:e.targetData,title:e.titles[1]||e.t(\"el.transfer.titles.1\"),\"default-checked\":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t(\"el.transfer.filterPlaceholder\")},on:{\"checked-change\":e.onTargetCheckedChange}},\"transfer-panel\",e.$props,!1),[e._t(\"right-footer\")],2)],1)};nu._withStripped=!0;var iu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-transfer-panel\"},[n(\"p\",{staticClass:\"el-transfer-panel__header\"},[n(\"el-checkbox\",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:\"allChecked\"}},[e._v(\"\\n      \"+e._s(e.title)+\"\\n      \"),n(\"span\",[e._v(e._s(e.checkedSummary))])])],1),n(\"div\",{class:[\"el-transfer-panel__body\",e.hasFooter?\"is-with-footer\":\"\"]},[e.filterable?n(\"el-input\",{staticClass:\"el-transfer-panel__filter\",attrs:{size:\"small\",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:\"query\"}},[n(\"i\",{class:[\"el-input__icon\",\"el-icon-\"+e.inputIcon],attrs:{slot:\"prefix\"},on:{click:e.clearQuery},slot:\"prefix\"})]):e._e(),n(\"el-checkbox-group\",{directives:[{name:\"show\",rawName:\"v-show\",value:!e.hasNoMatch&&e.data.length>0,expression:\"!hasNoMatch && data.length > 0\"}],staticClass:\"el-transfer-panel__list\",class:{\"is-filterable\":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:\"checked\"}},e._l(e.filteredData,function(t){return n(\"el-checkbox\",{key:t[e.keyProp],staticClass:\"el-transfer-panel__item\",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[n(\"option-content\",{attrs:{option:t}})],1)}),1),n(\"p\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.hasNoMatch,expression:\"hasNoMatch\"}],staticClass:\"el-transfer-panel__empty\"},[e._v(e._s(e.t(\"el.transfer.noMatch\")))]),n(\"p\",{directives:[{name:\"show\",rawName:\"v-show\",value:0===e.data.length&&!e.hasNoMatch,expression:\"data.length === 0 && !hasNoMatch\"}],staticClass:\"el-transfer-panel__empty\"},[e._v(e._s(e.t(\"el.transfer.noData\")))])],1),e.hasFooter?n(\"p\",{staticClass:\"el-transfer-panel__footer\"},[e._t(\"default\")],2):e._e()])};iu._withStripped=!0;var ru=r({mixins:[p.a],name:\"ElTransferPanel\",componentName:\"ElTransferPanel\",components:{ElCheckboxGroup:Un.a,ElCheckbox:an.a,ElInput:d.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return\"ElTransferPanel\"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),n=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):n.$scopedSlots.default?n.$scopedSlots.default({option:this.option}):e(\"span\",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:\"\",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var n=e.concat(t).filter(function(n){return-1===e.indexOf(n)||-1===t.indexOf(n)});this.$emit(\"checked-change\",e,n)}else this.$emit(\"checked-change\",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],n=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){n.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var n=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var i=[],r=this.checkableData.map(function(e){return e[n.keyProp]});e.forEach(function(e){r.indexOf(e)>-1&&i.push(e)}),this.checkChangeByUser=!1,this.checked=i}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){return\"function\"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,n=this.format,i=n.noChecked,r=n.hasChecked;return i&&r?e>0?r.replace(/\\${checked}/g,e).replace(/\\${total}/g,t):i.replace(/\\${total}/g,t):e+\"/\"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e<this.checkableData.length},hasNoMatch:function(){return this.query.length>0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?\"circle-close\":\"search\"},labelProp:function(){return this.props.label||\"label\"},keyProp:function(){return this.props.key||\"key\"},disabledProp:function(){return this.props.disabled||\"disabled\"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){\"circle-close\"===this.inputIcon&&(this.query=\"\")}}},iu,[],!1,null,null,null);ru.options.__file=\"packages/transfer/src/transfer-panel.vue\";var ou=ru.exports,au=r({name:\"ElTransfer\",mixins:[S.a,p.a,w.a],components:{TransferPanel:ou,ElButton:G.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:\"\"},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:\"label\",key:\"key\",disabled:\"disabled\"}}},targetOrder:{type:String,default:\"original\"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,n){return(t[n[e]]=n)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return\"original\"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,n){var i=e.dataObj[n];return i&&t.push(i),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch(\"ElFormItem\",\"el.form.change\",e)}},methods:{getMigratingConfig:function(){return{props:{\"footer-format\":\"footer-format is renamed to format.\"}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit(\"left-check-change\",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit(\"right-check-change\",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var n=e.indexOf(t);n>-1&&e.splice(n,1)}),this.$emit(\"input\",e),this.$emit(\"change\",e,\"left\",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),n=[],i=this.props.key;this.data.forEach(function(t){var r=t[i];e.leftChecked.indexOf(r)>-1&&-1===e.value.indexOf(r)&&n.push(r)}),t=\"unshift\"===this.targetOrder?n.concat(t):t.concat(n),this.$emit(\"input\",t),this.$emit(\"change\",t,\"right\",this.leftChecked)},clearQuery:function(e){\"left\"===e?this.$refs.leftPanel.query=\"\":\"right\"===e&&(this.$refs.rightPanel.query=\"\")}}},nu,[],!1,null,null,null);au.options.__file=\"packages/transfer/src/main.vue\";var su=au.exports;su.install=function(e){e.component(su.name,su)};var lu=su,uu=function(){var e=this.$createElement;return(this._self._c||e)(\"section\",{staticClass:\"el-container\",class:{\"is-vertical\":this.isVertical}},[this._t(\"default\")],2)};uu._withStripped=!0;var cu=r({name:\"ElContainer\",componentName:\"ElContainer\",props:{direction:String},computed:{isVertical:function(){return\"vertical\"===this.direction||\"horizontal\"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return\"el-header\"===t||\"el-footer\"===t}))}}},uu,[],!1,null,null,null);cu.options.__file=\"packages/container/src/main.vue\";var hu=cu.exports;hu.install=function(e){e.component(hu.name,hu)};var du=hu,fu=function(){var e=this.$createElement;return(this._self._c||e)(\"header\",{staticClass:\"el-header\",style:{height:this.height}},[this._t(\"default\")],2)};fu._withStripped=!0;var pu=r({name:\"ElHeader\",componentName:\"ElHeader\",props:{height:{type:String,default:\"60px\"}}},fu,[],!1,null,null,null);pu.options.__file=\"packages/header/src/main.vue\";var gu=pu.exports;gu.install=function(e){e.component(gu.name,gu)};var mu=gu,vu=function(){var e=this.$createElement;return(this._self._c||e)(\"aside\",{staticClass:\"el-aside\",style:{width:this.width}},[this._t(\"default\")],2)};vu._withStripped=!0;var yu=r({name:\"ElAside\",componentName:\"ElAside\",props:{width:{type:String,default:\"300px\"}}},vu,[],!1,null,null,null);yu.options.__file=\"packages/aside/src/main.vue\";var bu=yu.exports;bu.install=function(e){e.component(bu.name,bu)};var xu=bu,_u=function(){var e=this.$createElement;return(this._self._c||e)(\"main\",{staticClass:\"el-main\"},[this._t(\"default\")],2)};_u._withStripped=!0;var wu=r({name:\"ElMain\",componentName:\"ElMain\"},_u,[],!1,null,null,null);wu.options.__file=\"packages/main/src/main.vue\";var Cu=wu.exports;Cu.install=function(e){e.component(Cu.name,Cu)};var Su=Cu,ku=function(){var e=this.$createElement;return(this._self._c||e)(\"footer\",{staticClass:\"el-footer\",style:{height:this.height}},[this._t(\"default\")],2)};ku._withStripped=!0;var Tu=r({name:\"ElFooter\",componentName:\"ElFooter\",props:{height:{type:String,default:\"60px\"}}},ku,[],!1,null,null,null);Tu.options.__file=\"packages/footer/src/main.vue\";var Mu=Tu.exports;Mu.install=function(e){e.component(Mu.name,Mu)};var Du=Mu,Au=r({name:\"ElTimeline\",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,n={\"el-timeline\":!0,\"is-reverse\":t},i=this.$slots.default||[];return t&&(i=i.reverse()),e(\"ul\",{class:n},[i])}},void 0,void 0,!1,null,null,null);Au.options.__file=\"packages/timeline/src/main.vue\";var Iu=Au.exports;Iu.install=function(e){e.component(Iu.name,Iu)};var Ou=Iu,Eu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"li\",{staticClass:\"el-timeline-item\"},[n(\"div\",{staticClass:\"el-timeline-item__tail\"}),e.$slots.dot?e._e():n(\"div\",{staticClass:\"el-timeline-item__node\",class:[\"el-timeline-item__node--\"+(e.size||\"\"),\"el-timeline-item__node--\"+(e.type||\"\")],style:{backgroundColor:e.color}},[e.icon?n(\"i\",{staticClass:\"el-timeline-item__icon\",class:e.icon}):e._e()]),e.$slots.dot?n(\"div\",{staticClass:\"el-timeline-item__dot\"},[e._t(\"dot\")],2):e._e(),n(\"div\",{staticClass:\"el-timeline-item__wrapper\"},[e.hideTimestamp||\"top\"!==e.placement?e._e():n(\"div\",{staticClass:\"el-timeline-item__timestamp is-top\"},[e._v(\"\\n      \"+e._s(e.timestamp)+\"\\n    \")]),n(\"div\",{staticClass:\"el-timeline-item__content\"},[e._t(\"default\")],2),e.hideTimestamp||\"bottom\"!==e.placement?e._e():n(\"div\",{staticClass:\"el-timeline-item__timestamp is-bottom\"},[e._v(\"\\n      \"+e._s(e.timestamp)+\"\\n    \")])])])};Eu._withStripped=!0;var Lu=r({name:\"ElTimelineItem\",inject:[\"timeline\"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:\"bottom\"},type:String,color:String,size:{type:String,default:\"normal\"},icon:String}},Eu,[],!1,null,null,null);Lu.options.__file=\"packages/timeline/src/item.vue\";var Pu=Lu.exports;Pu.install=function(e){e.component(Pu.name,Pu)};var Nu=Pu,Ru=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"a\",e._b({class:[\"el-link\",e.type?\"el-link--\"+e.type:\"\",e.disabled&&\"is-disabled\",e.underline&&!e.disabled&&\"is-underline\"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},\"a\",e.$attrs,!1),[e.icon?n(\"i\",{class:e.icon}):e._e(),e.$slots.default?n(\"span\",{staticClass:\"el-link--inner\"},[e._t(\"default\")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t(\"icon\"):e._e()]:e._e()],2)};Ru._withStripped=!0;var Bu=r({name:\"ElLink\",props:{type:{type:String,default:\"default\"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit(\"click\",e)}}},Ru,[],!1,null,null,null);Bu.options.__file=\"packages/link/src/main.vue\";var zu=Bu.exports;zu.install=function(e){e.component(zu.name,zu)};var Fu=zu,$u=function(e,t){var n=t._c;return n(\"div\",t._g(t._b({class:[t.data.staticClass,\"el-divider\",\"el-divider--\"+t.props.direction]},\"div\",t.data.attrs,!1),t.listeners),[t.slots().default&&\"vertical\"!==t.props.direction?n(\"div\",{class:[\"el-divider__text\",\"is-\"+t.props.contentPosition]},[t._t(\"default\")],2):t._e()])};$u._withStripped=!0;var Vu=r({name:\"ElDivider\",props:{direction:{type:String,default:\"horizontal\",validator:function(e){return-1!==[\"horizontal\",\"vertical\"].indexOf(e)}},contentPosition:{type:String,default:\"center\",validator:function(e){return-1!==[\"left\",\"center\",\"right\"].indexOf(e)}}}},$u,[],!0,null,null,null);Vu.options.__file=\"packages/divider/src/main.vue\";var ju=Vu.exports;ju.install=function(e){e.component(ju.name,ju)};var Hu=ju,Wu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-image\"},[e.loading?e._t(\"placeholder\",[n(\"div\",{staticClass:\"el-image__placeholder\"})]):e.error?e._t(\"error\",[n(\"div\",{staticClass:\"el-image__error\"},[e._v(e._s(e.t(\"el.image.error\")))])]):n(\"img\",e._g(e._b({staticClass:\"el-image__inner\",class:{\"el-image__inner--center\":e.alignCenter,\"el-image__preview\":e.preview},style:e.imageStyle,attrs:{src:e.src},on:{click:e.clickHandler}},\"img\",e.$attrs,!1),e.$listeners)),e.preview?[e.showViewer?n(\"image-viewer\",{attrs:{\"z-index\":e.zIndex,\"initial-index\":e.imageIndex,\"on-close\":e.closeViewer,\"url-list\":e.previewSrcList}}):e._e()]:e._e()],2)};Wu._withStripped=!0;var qu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"viewer-fade\"}},[n(\"div\",{ref:\"el-image-viewer__wrapper\",staticClass:\"el-image-viewer__wrapper\",style:{\"z-index\":e.zIndex},attrs:{tabindex:\"-1\"}},[n(\"div\",{staticClass:\"el-image-viewer__mask\"}),n(\"span\",{staticClass:\"el-image-viewer__btn el-image-viewer__close\",on:{click:e.hide}},[n(\"i\",{staticClass:\"el-icon-circle-close\"})]),e.isSingle?e._e():[n(\"span\",{staticClass:\"el-image-viewer__btn el-image-viewer__prev\",class:{\"is-disabled\":!e.infinite&&e.isFirst},on:{click:e.prev}},[n(\"i\",{staticClass:\"el-icon-arrow-left\"})]),n(\"span\",{staticClass:\"el-image-viewer__btn el-image-viewer__next\",class:{\"is-disabled\":!e.infinite&&e.isLast},on:{click:e.next}},[n(\"i\",{staticClass:\"el-icon-arrow-right\"})])],n(\"div\",{staticClass:\"el-image-viewer__btn el-image-viewer__actions\"},[n(\"div\",{staticClass:\"el-image-viewer__actions__inner\"},[n(\"i\",{staticClass:\"el-icon-zoom-out\",on:{click:function(t){e.handleActions(\"zoomOut\")}}}),n(\"i\",{staticClass:\"el-icon-zoom-in\",on:{click:function(t){e.handleActions(\"zoomIn\")}}}),n(\"i\",{staticClass:\"el-image-viewer__actions__divider\"}),n(\"i\",{class:e.mode.icon,on:{click:e.toggleMode}}),n(\"i\",{staticClass:\"el-image-viewer__actions__divider\"}),n(\"i\",{staticClass:\"el-icon-refresh-left\",on:{click:function(t){e.handleActions(\"anticlocelise\")}}}),n(\"i\",{staticClass:\"el-icon-refresh-right\",on:{click:function(t){e.handleActions(\"clocelise\")}}})])]),n(\"div\",{staticClass:\"el-image-viewer__canvas\"},e._l(e.urlList,function(t,i){return i===e.index?n(\"img\",{key:t,ref:\"img\",refInFor:!0,staticClass:\"el-image-viewer__img\",style:e.imgStyle,attrs:{src:e.currentImg},on:{load:e.handleImgLoad,error:e.handleImgError,mousedown:e.handleMouseDown}}):e._e()}),0)],2)])};qu._withStripped=!0;var Gu=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Uu={CONTAIN:{name:\"contain\",icon:\"el-icon-full-screen\"},ORIGINAL:{name:\"original\",icon:\"el-icon-c-scale-to-original\"}},Yu=Object(g.isFirefox)()?\"DOMMouseScroll\":\"mousewheel\",Xu=r({name:\"elImageViewer\",props:{urlList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3},onSwitch:{type:Function,default:function(){}},onClose:{type:Function,default:function(){}},initialIndex:{type:Number,default:0}},data:function(){return{index:this.initialIndex,isShow:!1,infinite:!0,loading:!1,mode:Uu.CONTAIN,transform:{scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}},computed:{isSingle:function(){return this.urlList.length<=1},isFirst:function(){return 0===this.index},isLast:function(){return this.index===this.urlList.length-1},currentImg:function(){return this.urlList[this.index]},imgStyle:function(){var e=this.transform,t=e.scale,n=e.deg,i=e.offsetX,r=e.offsetY,o={transform:\"scale(\"+t+\") rotate(\"+n+\"deg)\",transition:e.enableTransition?\"transform .3s\":\"\",\"margin-left\":i+\"px\",\"margin-top\":r+\"px\"};return this.mode===Uu.CONTAIN&&(o.maxWidth=o.maxHeight=\"100%\"),o}},watch:{index:{handler:function(e){this.reset(),this.onSwitch(e)}},currentImg:function(e){var t=this;this.$nextTick(function(e){t.$refs.img[0].complete||(t.loading=!0)})}},methods:{hide:function(){this.deviceSupportUninstall(),this.onClose()},deviceSupportInstall:function(){var e=this;this._keyDownHandler=Object(g.rafThrottle)(function(t){switch(t.keyCode){case 27:e.hide();break;case 32:e.toggleMode();break;case 37:e.prev();break;case 38:e.handleActions(\"zoomIn\");break;case 39:e.next();break;case 40:e.handleActions(\"zoomOut\")}}),this._mouseWheelHandler=Object(g.rafThrottle)(function(t){(t.wheelDelta?t.wheelDelta:-t.detail)>0?e.handleActions(\"zoomIn\",{zoomRate:.015,enableTransition:!1}):e.handleActions(\"zoomOut\",{zoomRate:.015,enableTransition:!1})}),Object(pe.on)(document,\"keydown\",this._keyDownHandler),Object(pe.on)(document,Yu,this._mouseWheelHandler)},deviceSupportUninstall:function(){Object(pe.off)(document,\"keydown\",this._keyDownHandler),Object(pe.off)(document,Yu,this._mouseWheelHandler),this._keyDownHandler=null,this._mouseWheelHandler=null},handleImgLoad:function(e){this.loading=!1},handleImgError:function(e){this.loading=!1,e.target.alt=\"加载失败\"},handleMouseDown:function(e){var t=this;if(!this.loading&&0===e.button){var n=this.transform,i=n.offsetX,r=n.offsetY,o=e.pageX,a=e.pageY;this._dragHandler=Object(g.rafThrottle)(function(e){t.transform.offsetX=i+e.pageX-o,t.transform.offsetY=r+e.pageY-a}),Object(pe.on)(document,\"mousemove\",this._dragHandler),Object(pe.on)(document,\"mouseup\",function(e){Object(pe.off)(document,\"mousemove\",t._dragHandler)}),e.preventDefault()}},reset:function(){this.transform={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}},toggleMode:function(){if(!this.loading){var e=Object.keys(Uu),t=(Object.values(Uu).indexOf(this.mode)+1)%e.length;this.mode=Uu[e[t]],this.reset()}},prev:function(){if(!this.isFirst||this.infinite){var e=this.urlList.length;this.index=(this.index-1+e)%e}},next:function(){if(!this.isLast||this.infinite){var e=this.urlList.length;this.index=(this.index+1)%e}},handleActions:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.loading){var n=Gu({zoomRate:.2,rotateDeg:90,enableTransition:!0},t),i=n.zoomRate,r=n.rotateDeg,o=n.enableTransition,a=this.transform;switch(e){case\"zoomOut\":a.scale>.2&&(a.scale=parseFloat((a.scale-i).toFixed(3)));break;case\"zoomIn\":a.scale=parseFloat((a.scale+i).toFixed(3));break;case\"clocelise\":a.deg+=r;break;case\"anticlocelise\":a.deg-=r}a.enableTransition=o}}},mounted:function(){this.deviceSupportInstall(),this.$refs[\"el-image-viewer__wrapper\"].focus()}},qu,[],!1,null,null,null);Xu.options.__file=\"packages/image/src/image-viewer.vue\";var Ku=Xu.exports,Zu=function(){return void 0!==document.documentElement.style.objectFit},Ju=\"none\",Qu=\"contain\",ec=\"cover\",tc=\"fill\",nc=\"scale-down\",ic=\"\",rc=r({name:\"ElImage\",mixins:[p.a],inheritAttrs:!1,components:{ImageViewer:Ku},props:{src:String,fit:String,lazy:Boolean,scrollContainer:{},previewSrcList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0,showViewer:!1}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Zu()?{\"object-fit\":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Zu()&&this.fit!==tc},preview:function(){var e=this.previewSrcList;return Array.isArray(e)&&e.length>0},imageIndex:function(){var e=0,t=this.previewSrcList.indexOf(this.src);return t>=0&&(e=t),e}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(n){return e.handleLoad(n,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(n){var i=e.$attrs[n];t.setAttribute(n,i)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1,this.error=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit(\"error\",e)},handleLazyLoad:function(){Object(pe.isInContainer)(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=Object(Ps.isHtmlElement)(e)?e:Object(Ps.isString)(e)?document.querySelector(e):Object(pe.getScrollContainer)(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Ys()(200,this.handleLazyLoad),Object(pe.on)(t,\"scroll\",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(pe.off)(e,\"scroll\",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,n=this.imageHeight,i=this.$el,r=i.clientWidth,o=i.clientHeight;if(!(t&&n&&r&&o))return{};var a=t/n<1;e===nc&&(e=t<r&&n<o?Ju:Qu);switch(e){case Ju:return{width:\"auto\",height:\"auto\"};case Qu:return a?{width:\"auto\"}:{height:\"auto\"};case ec:return a?{height:\"auto\"}:{width:\"auto\"};default:return{}}},clickHandler:function(){this.preview&&(ic=document.body.style.overflow,document.body.style.overflow=\"hidden\",this.showViewer=!0)},closeViewer:function(){document.body.style.overflow=ic,this.showViewer=!1}}},Wu,[],!1,null,null,null);rc.options.__file=\"packages/image/src/main.vue\";var oc=rc.exports;oc.install=function(e){e.component(oc.name,oc)};var ac=oc,sc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-calendar\"},[n(\"div\",{staticClass:\"el-calendar__header\"},[n(\"div\",{staticClass:\"el-calendar__title\"},[e._v(\"\\n      \"+e._s(e.i18nDate)+\"\\n    \")]),0===e.validatedRange.length?n(\"div\",{staticClass:\"el-calendar__button-group\"},[n(\"el-button-group\",[n(\"el-button\",{attrs:{type:\"plain\",size:\"mini\"},on:{click:function(t){e.selectDate(\"prev-month\")}}},[e._v(\"\\n          \"+e._s(e.t(\"el.datepicker.prevMonth\"))+\"\\n        \")]),n(\"el-button\",{attrs:{type:\"plain\",size:\"mini\"},on:{click:function(t){e.selectDate(\"today\")}}},[e._v(\"\\n          \"+e._s(e.t(\"el.datepicker.today\"))+\"\\n        \")]),n(\"el-button\",{attrs:{type:\"plain\",size:\"mini\"},on:{click:function(t){e.selectDate(\"next-month\")}}},[e._v(\"\\n          \"+e._s(e.t(\"el.datepicker.nextMonth\"))+\"\\n        \")])],1)],1):e._e()]),0===e.validatedRange.length?n(\"div\",{key:\"no-range\",staticClass:\"el-calendar__body\"},[n(\"date-table\",{attrs:{date:e.date,\"selected-day\":e.realSelectedDay,\"first-day-of-week\":e.realFirstDayOfWeek},on:{pick:e.pickDay}})],1):n(\"div\",{key:\"has-range\",staticClass:\"el-calendar__body\"},e._l(e.validatedRange,function(t,i){return n(\"date-table\",{key:i,attrs:{date:t[0],\"selected-day\":e.realSelectedDay,range:t,\"hide-header\":0!==i,\"first-day-of-week\":e.realFirstDayOfWeek},on:{pick:e.pickDay}})}),1)])};sc._withStripped=!0;var lc=n(20),uc=n.n(lc),cc=r({props:{selectedDay:String,range:{type:Array,validator:function(e){if(!e||!e.length)return!0;var t=e[0],n=e[1];return Object(pi.validateRangeInOneMonth)(t,n)}},date:Date,hideHeader:Boolean,firstDayOfWeek:Number},inject:[\"elCalendar\"],data:function(){return{WEEK_DAYS:Object(pi.getI18nSettings)().dayNames}},methods:{toNestedArr:function(e){return Object(pi.range)(e.length/7).map(function(t,n){var i=7*n;return e.slice(i,i+7)})},getFormateDate:function(e,t){if(!e||-1===[\"prev\",\"current\",\"next\"].indexOf(t))throw new Error(\"invalid day or type\");var n=this.curMonthDatePrefix;return\"prev\"===t?n=this.prevMonthDatePrefix:\"next\"===t&&(n=this.nextMonthDatePrefix),n+\"-\"+(e=(\"00\"+e).slice(-2))},getCellClass:function(e){var t=e.text,n=e.type,i=[n];if(\"current\"===n){var r=this.getFormateDate(t,n);r===this.selectedDay&&i.push(\"is-selected\"),r===this.formatedToday&&i.push(\"is-today\")}return i},pickDay:function(e){var t=e.text,n=e.type,i=this.getFormateDate(t,n);this.$emit(\"pick\",i)},cellRenderProxy:function(e){var t=e.text,n=e.type,i=this.$createElement,r=this.elCalendar.$scopedSlots.dateCell;if(!r)return i(\"span\",[t]);var o=this.getFormateDate(t,n);return r({date:new Date(o),data:{isSelected:this.selectedDay===o,type:n+\"-month\",day:o}})}},computed:{prevMonthDatePrefix:function(){var e=new Date(this.date.getTime());return e.setDate(0),uc.a.format(e,\"yyyy-MM\")},curMonthDatePrefix:function(){return uc.a.format(this.date,\"yyyy-MM\")},nextMonthDatePrefix:function(){var e=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);return uc.a.format(e,\"yyyy-MM\")},formatedToday:function(){return this.elCalendar.formatedToday},isInRange:function(){return this.range&&this.range.length},rows:function(){var e=[];if(this.isInRange){var t=this.range,n=t[0],i=t[1],r=Object(pi.range)(i.getDate()-n.getDate()+1).map(function(e,t){return{text:n.getDate()+t,type:\"current\"}}),o=r.length%7;o=0===o?0:7-o;var a=Object(pi.range)(o).map(function(e,t){return{text:t+1,type:\"next\"}});e=r.concat(a)}else{var s=this.date,l=Object(pi.getFirstDayOfMonth)(s);l=0===l?7:l;var u=\"number\"==typeof this.firstDayOfWeek?this.firstDayOfWeek:1,c=Object(pi.getPrevMonthLastDays)(s,l-u).map(function(e){return{text:e,type:\"prev\"}}),h=Object(pi.getMonthDays)(s).map(function(e){return{text:e,type:\"current\"}});e=[].concat(c,h);var d=Object(pi.range)(42-e.length).map(function(e,t){return{text:t+1,type:\"next\"}});e=e.concat(d)}return this.toNestedArr(e)},weekDays:function(){var e=this.firstDayOfWeek,t=this.WEEK_DAYS;return\"number\"!=typeof e||0===e?t.slice():t.slice(e).concat(t.slice(0,e))}},render:function(){var e=this,t=arguments[0],n=this.hideHeader?null:t(\"thead\",[this.weekDays.map(function(e){return t(\"th\",{key:e},[e])})]);return t(\"table\",{class:{\"el-calendar-table\":!0,\"is-range\":this.isInRange},attrs:{cellspacing:\"0\",cellpadding:\"0\"}},[n,t(\"tbody\",[this.rows.map(function(n,i){return t(\"tr\",{class:{\"el-calendar-table__row\":!0,\"el-calendar-table__row--hide-border\":0===i&&e.hideHeader},key:i},[n.map(function(n,i){return t(\"td\",{key:i,class:e.getCellClass(n),on:{click:e.pickDay.bind(e,n)}},[t(\"div\",{class:\"el-calendar-day\"},[e.cellRenderProxy(n)])])})])})])])}},void 0,void 0,!1,null,null,null);cc.options.__file=\"packages/calendar/src/date-table.vue\";var hc=cc.exports,dc=[\"prev-month\",\"today\",\"next-month\"],fc=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],pc=r({name:\"ElCalendar\",mixins:[p.a],components:{DateTable:hc,ElButton:G.a,ElButtonGroup:Y.a},props:{value:[Date,String,Number],range:{type:Array,validator:function(e){return!Array.isArray(e)||2===e.length&&e.every(function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date})}},firstDayOfWeek:{type:Number,default:1}},provide:function(){return{elCalendar:this}},methods:{pickDay:function(e){this.realSelectedDay=e},selectDate:function(e){if(-1===dc.indexOf(e))throw new Error(\"invalid type \"+e);var t=\"\";(t=\"prev-month\"===e?this.prevMonthDatePrefix+\"-01\":\"next-month\"===e?this.nextMonthDatePrefix+\"-01\":this.formatedToday)!==this.formatedDate&&this.pickDay(t)},toDate:function(e){if(!e)throw new Error(\"invalid val\");return e instanceof Date?e:new Date(e)},rangeValidator:function(e,t){var n=this.realFirstDayOfWeek,i=t?n:0===n?6:n-1,r=(t?\"start\":\"end\")+\" of range should be \"+fc[i]+\".\";return e.getDay()===i||(console.warn(\"[ElementCalendar]\",r,\"Invalid range will be ignored.\"),!1)}},computed:{prevMonthDatePrefix:function(){var e=new Date(this.date.getTime());return e.setDate(0),uc.a.format(e,\"yyyy-MM\")},curMonthDatePrefix:function(){return uc.a.format(this.date,\"yyyy-MM\")},nextMonthDatePrefix:function(){var e=new Date(this.date.getFullYear(),this.date.getMonth()+1,1);return uc.a.format(e,\"yyyy-MM\")},formatedDate:function(){return uc.a.format(this.date,\"yyyy-MM-dd\")},i18nDate:function(){var e=this.date.getFullYear(),t=this.date.getMonth()+1;return e+\" \"+this.t(\"el.datepicker.year\")+\" \"+this.t(\"el.datepicker.month\"+t)},formatedToday:function(){return uc.a.format(this.now,\"yyyy-MM-dd\")},realSelectedDay:{get:function(){return this.value?this.formatedDate:this.selectedDay},set:function(e){this.selectedDay=e;var t=new Date(e);this.$emit(\"input\",t)}},date:function(){if(this.value)return this.toDate(this.value);if(this.realSelectedDay){var e=this.selectedDay.split(\"-\");return new Date(e[0],e[1]-1,e[2])}return this.validatedRange.length?this.validatedRange[0][0]:this.now},validatedRange:function(){var e=this,t=this.range;if(!t)return[];if(2===(t=t.reduce(function(t,n,i){var r=e.toDate(n);return e.rangeValidator(r,0===i)&&(t=t.concat(r)),t},[])).length){var n=t,i=n[0],r=n[1];if(i>r)return console.warn(\"[ElementCalendar]end time should be greater than start time\"),[];if(Object(pi.validateRangeInOneMonth)(i,r))return[[i,r]];var o=[],a=new Date(i.getFullYear(),i.getMonth()+1,1),s=this.toDate(a.getTime()-864e5);if(!Object(pi.validateRangeInOneMonth)(a,r))return console.warn(\"[ElementCalendar]start time and end time interval must not exceed two months\"),[];o.push([i,s]);var l=this.realFirstDayOfWeek,u=a.getDay(),c=0;return u!==l&&(c=0===l?7-u:(c=l-u)>0?c:7+c),(a=this.toDate(a.getTime()+864e5*c)).getDate()<r.getDate()&&o.push([a,r]),o}return[]},realFirstDayOfWeek:function(){return this.firstDayOfWeek<1||this.firstDayOfWeek>6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:\"\",now:new Date}}},sc,[],!1,null,null,null);pc.options.__file=\"packages/calendar/src/main.vue\";var gc=pc.exports;gc.install=function(e){e.component(gc.name,gc)};var mc=gc,vc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-fade-in\"}},[e.visible?n(\"div\",{staticClass:\"el-backtop\",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t(\"default\",[n(\"el-icon\",{attrs:{name:\"caret-top\"}})])],2):e._e()])};vc._withStripped=!0;var yc=function(e){return Math.pow(e,3)},bc=r({name:\"ElBacktop\",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+\"px\"},styleRight:function(){return this.right+\"px\"}},mounted:function(){this.init(),this.throttledScrollHandler=Ys()(300,this.onScroll),this.container.addEventListener(\"scroll\",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error(\"target is not existed: \"+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit(\"click\",e)},scrollToTop:function(){var e=this.el,t=Date.now(),n=e.scrollTop,i=window.requestAnimationFrame||function(e){return setTimeout(e,16)};i(function r(){var o,a=(Date.now()-t)/500;a<1?(e.scrollTop=n*(1-((o=a)<.5?yc(2*o)/2:1-yc(2*(1-o))/2)),i(r)):e.scrollTop=0})}},beforeDestroy:function(){this.container.removeEventListener(\"scroll\",this.throttledScrollHandler)}},vc,[],!1,null,null,null);bc.options.__file=\"packages/backtop/src/main.vue\";var xc=bc.exports;xc.install=function(e){e.component(xc.name,xc)};var _c=xc,wc=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},Cc=function(e){return wc(e,\"offsetHeight\")},Sc=\"ElInfiniteScroll\",kc={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Tc=function(e,t){return Object(Ps.isHtmlElement)(e)?(n=kc,Object.keys(n||{}).map(function(e){return[e,n[e]]})).reduce(function(n,i){var r=i[0],o=i[1],a=o.type,s=o.default,l=e.getAttribute(\"infinite-scroll-\"+r);switch(l=Object(Ps.isUndefined)(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?s:l;break;case Boolean:l=Object(Ps.isDefined)(l)?\"false\"!==l&&Boolean(l):s;break;default:l=a(l)}return n[r]=l,n},{}):{};var n},Mc=function(e){return e.getBoundingClientRect().top},Dc=function(e){var t=this[Sc],n=t.el,i=t.vm,r=t.container,o=t.observer,a=Tc(n,i),s=a.distance;if(!a.disabled){var l=r.getBoundingClientRect();if(l.width||l.height){var u=!1;if(r===n){var c=r.scrollTop+function(e){return wc(e,\"clientHeight\")}(r);u=r.scrollHeight-c<=s}else{u=Cc(n)+Mc(n)-Mc(r)-Cc(r)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var n=window.getComputedStyle(e,null);return t?n[t]:n}(r,\"borderBottomWidth\"))<=s}u&&Object(Ps.isFunction)(e)?e.call(i):o&&(o.disconnect(),this[Sc].observer=null)}}},Ac={name:\"InfiniteScroll\",inserted:function(e,t,n){var i=t.value,r=n.context,o=Object(pe.getScrollContainer)(e,!0),a=Tc(e,r),s=a.delay,l=a.immediate,u=I()(s,Dc.bind(e,i));(e[Sc]={el:e,vm:r,container:o,onScroll:u},o)&&(o.addEventListener(\"scroll\",u),l&&((e[Sc].observer=new MutationObserver(u)).observe(o,{childList:!0,subtree:!0}),u()))},unbind:function(e){var t=e[Sc],n=t.container,i=t.onScroll;n&&n.removeEventListener(\"scroll\",i)},install:function(e){e.directive(Ac.name,Ac)}},Ic=Ac,Oc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"el-page-header\"},[n(\"div\",{staticClass:\"el-page-header__left\",on:{click:function(t){e.$emit(\"back\")}}},[n(\"i\",{staticClass:\"el-icon-back\"}),n(\"div\",{staticClass:\"el-page-header__title\"},[e._t(\"title\",[e._v(e._s(e.title))])],2)]),n(\"div\",{staticClass:\"el-page-header__content\"},[e._t(\"content\",[e._v(e._s(e.content))])],2)])};Oc._withStripped=!0;var Ec=r({name:\"ElPageHeader\",props:{title:{type:String,default:function(){return Object(Bt.t)(\"el.pageHeader.title\")}},content:String}},Oc,[],!1,null,null,null);Ec.options.__file=\"packages/page-header/src/main.vue\";var Lc=Ec.exports;Lc.install=function(e){e.component(Lc.name,Lc)};var Pc=Lc,Nc=function(){var e=this.$createElement,t=this._self._c||e;return t(\"div\",{class:[\"el-cascader-panel\",this.border&&\"is-bordered\"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,n){return t(\"cascader-menu\",{key:n,ref:\"menu\",refInFor:!0,attrs:{index:n,nodes:e}})}),1)};Nc._withStripped=!0;var Rc=n(43),Bc=n.n(Rc),zc=function(e){return e.stopPropagation()},Fc=r({inject:[\"panel\"],components:{ElCheckbox:an.a,ElRadio:Bc.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,n=this.node,i=this.isDisabled,r=this.config,o=r.multiple;!r.checkStrictly&&i||n.loading||(r.lazy&&!n.loaded?t.lazyLoad(n,function(){var t=e.isLeaf;if(t||e.handleExpand(),o){var i=!!t&&n.checked;e.handleMultiCheckChange(i)}}):t.handleExpand(n))},handleCheckChange:function(){var e=this.panel,t=this.value,n=this.node;e.handleCheckChange(t),e.handleExpand(n)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,n=this.isChecked,i=this.config,r=i.checkStrictly;return i.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&n?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,n=this.isLeaf;return t.loading?this.renderLoadingIcon(e):n?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,n=this.config,i=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return n.checkStrictly&&(r.nativeOn.click=zc),e(\"el-checkbox\",Ja()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:i}},r]))},renderRadio:function(e){var t=this.checkedValue,n=this.value,i=this.isDisabled;return Object(g.isEqual)(n,t)&&(n=t),e(\"el-radio\",{attrs:{value:t,label:n,disabled:i},on:{change:this.handleCheckChange},nativeOn:{click:zc}},[e(\"span\")])},renderCheckIcon:function(e){return e(\"i\",{class:\"el-icon-check el-cascader-node__prefix\"})},renderLoadingIcon:function(e){return e(\"i\",{class:\"el-icon-loading el-cascader-node__postfix\"})},renderExpandIcon:function(e){return e(\"i\",{class:\"el-icon-arrow-right el-cascader-node__postfix\"})},renderContent:function(e){var t=this.panel,n=this.node,i=t.renderLabelFn;return e(\"span\",{class:\"el-cascader-node__label\"},[(i?i({node:n,data:n.data}):null)||n.label])}},render:function(e){var t=this,n=this.inActivePath,i=this.inCheckedPath,r=this.isChecked,o=this.isLeaf,a=this.isDisabled,s=this.config,l=this.nodeId,u=s.expandTrigger,c=s.checkStrictly,h=s.multiple,d=!c&&a,f={on:{}};return\"click\"===u?f.on.click=this.handleExpand:(f.on.mouseenter=function(e){t.handleExpand(),t.$emit(\"expand\",e)},f.on.focus=function(e){t.handleExpand(),t.$emit(\"expand\",e)}),!o||a||c||h||(f.on.click=this.handleCheckChange),e(\"li\",Ja()([{attrs:{role:\"menuitem\",id:l,\"aria-expanded\":n,tabindex:d?null:-1},class:{\"el-cascader-node\":!0,\"is-selectable\":c,\"in-active-path\":n,\"in-checked-path\":i,\"is-active\":r,\"is-disabled\":d}},f]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Fc.options.__file=\"packages/cascader-panel/src/cascader-node.vue\";var $c=Fc.exports,Vc=r({name:\"ElCascaderMenu\",mixins:[p.a],inject:[\"panel\"],components:{ElScrollbar:B.a,CascaderNode:$c},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(g.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return\"cascader-menu-\"+this.id+\"-\"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,n=this.hoverTimer,i=this.$refs.hoverZone;if(t&&i)if(t.contains(e.target)){clearTimeout(n);var r=this.$el.getBoundingClientRect().left,o=e.clientX-r,a=this.$el,s=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;i.innerHTML='\\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M'+o+\" \"+u+\" L\"+s+\" 0 V\"+u+' Z\" />\\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M'+o+\" \"+c+\" L\"+s+\" \"+l+\" V\"+c+' Z\" />\\n        '}else n||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML=\"\")},renderEmptyText:function(e){return e(\"div\",{class:\"el-cascader-menu__empty-text\"},[this.t(\"el.cascader.noData\")])},renderNodeList:function(e){var t=this.menuId,n=this.panel.isHoverMenu,i={on:{}};n&&(i.on.expand=this.handleExpand);var r=this.nodes.map(function(n,r){var o=n.hasChildren;return e(\"cascader-node\",Ja()([{key:n.uid,attrs:{node:n,\"node-id\":t+\"-\"+r,\"aria-haspopup\":o,\"aria-owns\":o?t:null}},i]))});return[].concat(r,[n?e(\"svg\",{ref:\"hoverZone\",class:\"el-cascader-menu__hover-zone\"}):null])}},render:function(e){var t=this.isEmpty,n=this.menuId,i={nativeOn:{}};return this.panel.isHoverMenu&&(i.nativeOn.mousemove=this.handleMouseMove),e(\"el-scrollbar\",Ja()([{attrs:{tag:\"ul\",role:\"menu\",id:n,\"wrap-class\":\"el-cascader-menu__wrap\",\"view-class\":{\"el-cascader-menu__list\":!0,\"is-empty\":t}},class:\"el-cascader-menu\"},i]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);Vc.options.__file=\"packages/cascader-panel/src/cascader-menu.vue\";var jc=Vc.exports,Hc=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();var Wc=0,qc=function(){function e(t,n,i){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.data=t,this.config=n,this.parent=i||null,this.level=this.parent?this.parent.level+1:1,this.uid=Wc++,this.initState(),this.initChildren()}return e.prototype.initState=function(){var e=this.config,t=e.value,n=e.label;this.value=this.data[t],this.label=this.data[n],this.pathNodes=this.calculatePathNodes(),this.path=this.pathNodes.map(function(e){return e.value}),this.pathLabels=this.pathNodes.map(function(e){return e.label}),this.loading=!1,this.loaded=!1},e.prototype.initChildren=function(){var t=this,n=this.config,i=n.children,r=this.data[i];this.hasChildren=Array.isArray(r),this.children=(r||[]).map(function(i){return new e(i,n,t)})},e.prototype.calculatePathNodes=function(){for(var e=[this],t=this.parent;t;)e.unshift(t),t=t.parent;return e},e.prototype.getPath=function(){return this.path},e.prototype.getValue=function(){return this.value},e.prototype.getValueByOption=function(){return this.config.emitPath?this.getPath():this.getValue()},e.prototype.getText=function(e,t){return e?this.pathLabels.join(t):this.label},e.prototype.isSameNode=function(e){var t=this.getValueByOption();return this.config.multiple&&Array.isArray(e)?e.some(function(e){return Object(g.isEqual)(e,t)}):Object(g.isEqual)(e,t)},e.prototype.broadcast=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=\"onParent\"+Object(g.capitalize)(e);this.children.forEach(function(t){t&&(t.broadcast.apply(t,[e].concat(n)),t[r]&&t[r].apply(t,n))})},e.prototype.emit=function(e){var t=this.parent,n=\"onChild\"+Object(g.capitalize)(e);if(t){for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];t[n]&&t[n].apply(t,r),t.emit.apply(t,[e].concat(r))}},e.prototype.onParentCheck=function(e){this.isDisabled||this.setCheckState(e)},e.prototype.onChildCheck=function(){var e=this.children.filter(function(e){return!e.isDisabled}),t=!!e.length&&e.every(function(e){return e.checked});this.setCheckState(t)},e.prototype.setCheckState=function(e){var t=this.children.length,n=this.children.reduce(function(e,t){return e+(t.checked?1:t.indeterminate?.5:0)},0);this.checked=e,this.indeterminate=n!==t&&n>0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),n=this.isSameNode(e,t);this.doCheck(n)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast(\"check\",e),this.setCheckState(e),this.emit(\"check\")))},Hc(e,[{key:\"isDisabled\",get:function(){var e=this.data,t=this.parent,n=this.config,i=n.disabled,r=n.checkStrictly;return e[i]||!r&&t&&t.isDisabled}},{key:\"isLeaf\",get:function(){var e=this.data,t=this.loaded,n=this.hasChildren,i=this.children,r=this.config,o=r.lazy,a=r.leaf;if(o){var s=Object(je.isDef)(e[a])?e[a]:!!t&&!i.length;return this.hasChildren=!s,s}return!n}}]),e}();var Gc=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.config=n,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(g.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new qc(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var n=new qc(e,this.config,t);(t?t.children:this.nodes).push(n)},e.prototype.appendNodes=function(e,t){var n=this;(e=Object(g.coerceTruthyValueToArray)(e)).forEach(function(e){return n.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e?this.leafNodes:this.flattedNodes;return t?n:function e(t,n){return t.reduce(function(t,i){return i.isLeaf?t.push(i):(!n&&t.push(i),t=t.concat(e(i.children,n))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return Object(g.valueEquals)(t.path,e)||t.value===e});return t&&t.length?t[0]:null}return null},e}(),Uc=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},Yc=yl.a.keys,Xc={expandTrigger:\"click\",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:g.noop,value:\"value\",label:\"label\",children:\"children\",leaf:\"leaf\",disabled:\"disabled\",hoverThreshold:500},Kc=function(e){return!e.getAttribute(\"aria-owns\")},Zc=function(e,t){var n=e.parentNode;if(n){var i=n.querySelectorAll('.el-cascader-node[tabindex=\"-1\"]');return i[Array.prototype.indexOf.call(i,e)+t]||null}return null},Jc=function(e,t){if(e){var n=e.id.split(\"-\");return Number(n[n.length-2])}},Qc=function(e){e&&(e.focus(),!Kc(e)&&e.click())},eh=r({name:\"ElCascaderPanel\",components:{CascaderMenu:jc},props:{value:{},options:Array,props:Object,border:{type:Boolean,default:!0},renderLabel:Function},provide:function(){return{panel:this}},data:function(){return{checkedValue:null,checkedNodePaths:[],store:[],menus:[],activePath:[],loadCount:0}},computed:{config:function(){return Ve()(Uc({},Xc),this.props||{})},multiple:function(){return this.config.multiple},checkStrictly:function(){return this.config.checkStrictly},leafOnly:function(){return!this.checkStrictly},isHoverMenu:function(){return\"hover\"===this.config.expandTrigger},renderLabelFn:function(){return this.renderLabel||this.$scopedSlots.default}},watch:{options:{handler:function(){this.initStore()},immediate:!0,deep:!0},value:function(){this.syncCheckedValue(),this.checkStrictly&&this.calculateCheckedNodePaths()},checkedValue:function(e){Object(g.isEqual)(e,this.value)||(this.checkStrictly&&this.calculateCheckedNodePaths(),this.$emit(\"input\",e),this.$emit(\"change\",e))}},mounted:function(){Object(g.isEmpty)(this.value)||this.syncCheckedValue()},methods:{initStore:function(){var e=this.config,t=this.options;e.lazy&&Object(g.isEmpty)(t)?this.lazyLoad():(this.store=new Gc(t,e),this.menus=[this.store.getNodes()],this.syncMenuState())},syncCheckedValue:function(){var e=this.value,t=this.checkedValue;Object(g.isEqual)(e,t)||(this.checkedValue=e,this.syncMenuState())},syncMenuState:function(){var e=this.multiple,t=this.checkStrictly;this.syncActivePath(),e&&this.syncMultiCheckState(),t&&this.calculateCheckedNodePaths(),this.$nextTick(this.scrollIntoView)},syncMultiCheckState:function(){var e=this;this.getFlattedNodes(this.leafOnly).forEach(function(t){t.syncCheckState(e.checkedValue)})},syncActivePath:function(){var e=this,t=this.store,n=this.multiple,i=this.activePath,r=this.checkedValue;if(Object(g.isEmpty)(i))if(Object(g.isEmpty)(r))this.activePath=[],this.menus=[t.getNodes()];else{var o=n?r[0]:r,a=((this.getNodeByValue(o)||{}).pathNodes||[]).slice(0,-1);this.expandNodes(a)}else{var s=i.map(function(t){return e.getNodeByValue(t.getValue())});this.expandNodes(s)}},expandNodes:function(e){var t=this;e.forEach(function(e){return t.handleExpand(e,!0)})},calculateCheckedNodePaths:function(){var e=this,t=this.checkedValue,n=this.multiple?Object(g.coerceTruthyValueToArray)(t):[t];this.checkedNodePaths=n.map(function(t){var n=e.getNodeByValue(t);return n?n.pathNodes:[]})},handleKeyDown:function(e){var t=e.target;switch(e.keyCode){case Yc.up:var n=Zc(t,-1);Qc(n);break;case Yc.down:var i=Zc(t,1);Qc(i);break;case Yc.left:var r=this.$refs.menu[Jc(t)-1];if(r){var o=r.$el.querySelector('.el-cascader-node[aria-expanded=\"true\"]');Qc(o)}break;case Yc.right:var a=this.$refs.menu[Jc(t)+1];if(a){var s=a.$el.querySelector('.el-cascader-node[tabindex=\"-1\"]');Qc(s)}break;case Yc.enter:!function(e){if(e){var t=e.querySelector(\"input\");t?t.click():Kc(e)&&e.click()}}(t);break;case Yc.esc:case Yc.tab:this.$emit(\"close\");break;default:return}},handleExpand:function(e,t){var n=this.activePath,i=e.level,r=n.slice(0,i-1),o=this.menus.slice(0,i);if(e.isLeaf||(r.push(e),o.push(e.children)),this.activePath=r,this.menus=o,!t){var a=r.map(function(e){return e.getValue()}),s=n.map(function(e){return e.getValue()});Object(g.valueEquals)(a,s)||(this.$emit(\"active-item-change\",a),this.$emit(\"expand-change\",a))}},handleCheckChange:function(e){this.checkedValue=e},lazyLoad:function(e,t){var n=this,i=this.config;e||(e=e||{root:!0,level:0},this.store=new Gc([],i),this.menus=[this.store.getNodes()]),e.loading=!0;i.lazyLoad(e,function(i){var r=e.root?null:e;if(i&&i.length&&n.store.appendNodes(i,r),e.loading=!1,e.loaded=!0,Array.isArray(n.checkedValue)){var o=n.checkedValue[n.loadCount++],a=n.config.value,s=n.config.leaf;if(Array.isArray(i)&&i.filter(function(e){return e[a]===o}).length>0){var l=n.store.getNodeByValue(o);l.data[s]||n.lazyLoad(l,function(){n.handleExpand(l)}),n.loadCount===n.checkedValue.length&&n.$parent.computePresentText()}}t&&t(i)})},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map(function(e){return e.getValueByOption()})},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach(function(e){var t=e.$el;if(t){var n=t.querySelector(\".el-scrollbar__wrap\"),i=t.querySelector(\".el-cascader-node.is-active\")||t.querySelector(\".el-cascader-node.in-active-path\");$t()(n,i)}})},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter(function(e){return e.checked}):Object(g.isEmpty)(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,n=e.multiple,i=e.emitPath;n?(this.getCheckedNodes(t).filter(function(e){return!e.isDisabled}).forEach(function(e){return e.doCheck(!1)}),this.calculateMultiCheckedValue()):this.checkedValue=i?[]:null}}},Nc,[],!1,null,null,null);eh.options.__file=\"packages/cascader-panel/src/cascader-panel.vue\";var th=eh.exports;th.install=function(e){e.component(th.name,th)};var nh=th,ih=r({name:\"ElAvatar\",props:{size:{type:[Number,String],validator:function(e){return\"string\"==typeof e?[\"large\",\"medium\",\"small\"].includes(e):\"number\"==typeof e}},shape:{type:String,default:\"circle\",validator:function(e){return[\"circle\",\"square\"].includes(e)}},icon:String,src:String,alt:String,srcSet:String,error:Function,fit:{type:String,default:\"cover\"}},data:function(){return{isImageExist:!0}},computed:{avatarClass:function(){var e=this.size,t=this.icon,n=this.shape,i=[\"el-avatar\"];return e&&\"string\"==typeof e&&i.push(\"el-avatar--\"+e),t&&i.push(\"el-avatar--icon\"),n&&i.push(\"el-avatar--\"+n),i.join(\" \")}},methods:{handleError:function(){var e=this.error;!1!==(e?e():void 0)&&(this.isImageExist=!1)},renderAvatar:function(){var e=this.$createElement,t=this.icon,n=this.src,i=this.alt,r=this.isImageExist,o=this.srcSet,a=this.fit;return r&&n?e(\"img\",{attrs:{src:n,alt:i,srcSet:o},on:{error:this.handleError},style:{\"object-fit\":a}}):t?e(\"i\",{class:t}):this.$slots.default}},render:function(){var e=arguments[0],t=this.avatarClass,n=this.size;return e(\"span\",{class:t,style:\"number\"==typeof n?{height:n+\"px\",width:n+\"px\",lineHeight:n+\"px\"}:{}},[this.renderAvatar()])}},void 0,void 0,!1,null,null,null);ih.options.__file=\"packages/avatar/src/main.vue\";var rh=ih.exports;rh.install=function(e){e.component(rh.name,rh)};var oh=rh,ah=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"transition\",{attrs:{name:\"el-drawer-fade\"},on:{\"after-enter\":e.afterEnter,\"after-leave\":e.afterLeave}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:e.visible,expression:\"visible\"}],staticClass:\"el-drawer__wrapper\",attrs:{tabindex:\"-1\"}},[n(\"div\",{staticClass:\"el-drawer__container\",class:e.visible&&\"el-drawer__open\",attrs:{role:\"document\",tabindex:\"-1\"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[n(\"div\",{ref:\"drawer\",staticClass:\"el-drawer\",class:[e.direction,e.customClass],style:e.isHorizontal?\"width: \"+e.size:\"height: \"+e.size,attrs:{\"aria-modal\":\"true\",\"aria-labelledby\":\"el-drawer__title\",\"aria-label\":e.title,role:\"dialog\",tabindex:\"-1\"}},[e.withHeader?n(\"header\",{staticClass:\"el-drawer__header\",attrs:{id:\"el-drawer__title\"}},[e._t(\"title\",[n(\"span\",{attrs:{role:\"heading\",tabindex:\"0\",title:e.title}},[e._v(e._s(e.title))])]),e.showClose?n(\"button\",{staticClass:\"el-drawer__close-btn\",attrs:{\"aria-label\":\"close \"+(e.title||\"drawer\"),type:\"button\"},on:{click:e.closeDrawer}},[n(\"i\",{staticClass:\"el-dialog__close el-icon el-icon-close\"})]):e._e()],2):e._e(),e.rendered?n(\"section\",{staticClass:\"el-drawer__body\"},[e._t(\"default\")],2):e._e()])])])])};ah._withStripped=!0;var sh=r({name:\"ElDrawer\",mixins:[x.a,S.a],props:{appendToBody:{type:Boolean,default:!1},beforeClose:{type:Function},customClass:{type:String,default:\"\"},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},modal:{type:Boolean,default:!0},direction:{type:String,default:\"rtl\",validator:function(e){return-1!==[\"ltr\",\"rtl\",\"ttb\",\"btt\"].indexOf(e)}},modalAppendToBody:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},size:{type:String,default:\"30%\"},title:{type:String,default:\"\"},visible:{type:Boolean},wrapperClosable:{type:Boolean,default:!0},withHeader:{type:Boolean,default:!0}},computed:{isHorizontal:function(){return\"rtl\"===this.direction||\"ltr\"===this.direction}},data:function(){return{closed:!1,prevActiveElement:null}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit(\"open\"),this.appendToBody&&document.body.appendChild(this.$el),this.prevActiveElement=document.activeElement,this.$nextTick(function(){yl.a.focusFirstDescendant(t.$refs.drawer)})):(this.closed||this.$emit(\"close\"),this.$nextTick(function(){t.prevActiveElement&&t.prevActiveElement.focus()}))}},methods:{afterEnter:function(){this.$emit(\"opened\")},afterLeave:function(){this.$emit(\"closed\")},hide:function(e){!1!==e&&(this.$emit(\"update:visible\",!1),this.$emit(\"close\"),!0===this.destroyOnClose&&(this.rendered=!1),this.closed=!0)},handleWrapperClick:function(){this.wrapperClosable&&this.closeDrawer()},closeDrawer:function(){\"function\"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},handleClose:function(){this.closeDrawer()}},mounted:function(){this.visible&&(this.rendered=!0,this.open())},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},ah,[],!1,null,null,null);sh.options.__file=\"packages/drawer/src/main.vue\";var lh=sh.exports;lh.install=function(e){e.component(lh.name,lh)};var uh=lh,ch=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(\"el-popover\",e._b({attrs:{trigger:\"click\"},model:{value:e.visible,callback:function(t){e.visible=t},expression:\"visible\"}},\"el-popover\",e.$attrs,!1),[n(\"div\",{staticClass:\"el-popconfirm\"},[n(\"p\",{staticClass:\"el-popconfirm__main\"},[e.hideIcon?e._e():n(\"i\",{staticClass:\"el-popconfirm__icon\",class:e.icon,style:{color:e.iconColor}}),e._v(\"\\n      \"+e._s(e.title)+\"\\n    \")]),n(\"div\",{staticClass:\"el-popconfirm__action\"},[n(\"el-button\",{attrs:{size:\"mini\",type:e.cancelButtonType},on:{click:e.cancel}},[e._v(\"\\n        \"+e._s(e.cancelButtonText)+\"\\n      \")]),n(\"el-button\",{attrs:{size:\"mini\",type:e.confirmButtonType},on:{click:e.confirm}},[e._v(\"\\n        \"+e._s(e.confirmButtonText)+\"\\n      \")])],1)]),e._t(\"reference\",null,{slot:\"reference\"})],2)};ch._withStripped=!0;var hh=n(44),dh=n.n(hh),fh=r({name:\"ElPopconfirm\",props:{title:{type:String},confirmButtonText:{type:String,default:Object(Bt.t)(\"el.popconfirm.confirmButtonText\")},cancelButtonText:{type:String,default:Object(Bt.t)(\"el.popconfirm.cancelButtonText\")},confirmButtonType:{type:String,default:\"primary\"},cancelButtonType:{type:String,default:\"text\"},icon:{type:String,default:\"el-icon-question\"},iconColor:{type:String,default:\"#f90\"},hideIcon:{type:Boolean,default:!1}},components:{ElPopover:dh.a,ElButton:G.a},data:function(){return{visible:!1}},methods:{confirm:function(){this.visible=!1,this.$emit(\"onConfirm\")},cancel:function(){this.visible=!1,this.$emit(\"onCancel\")}}},ch,[],!1,null,null,null);fh.options.__file=\"packages/popconfirm/src/main.vue\";var ph=fh.exports;ph.install=function(e){e.component(ph.name,ph)};var gh=ph,mh=[v,M,W,Z,te,oe,ve,Se,Ie,Pe,qe,Ke,et,ot,ut,ft,vt,_t,kt,Ht,Wt,Yt,Jt,nn,oi,di,ur,vr,Tr,Er,Pr,no,ao,co,bo,Mo,Oo,Po,Jo,ia,Ca,$a,ja,qa,as,cs,ps,Ds,Es,Bs,Vs,qs,Zs,tl,ol,ul,fl,kl,tu,lu,du,mu,xu,Su,Du,Ou,Nu,Fu,Hu,ac,mc,_c,Pc,nh,oh,uh,gh,be.a],vh=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};zt.a.use(t.locale),zt.a.i18n(t.i18n),mh.forEach(function(t){e.component(t.name,t)}),e.use(Ic),e.use(Ra.directive),e.prototype.$ELEMENT={size:t.size||\"\",zIndex:t.zIndex||2e3},e.prototype.$loading=Ra.service,e.prototype.$msgbox=Jr,e.prototype.$alert=Jr.alert,e.prototype.$confirm=Jr.confirm,e.prototype.$prompt=Jr.prompt,e.prototype.$notify=fa,e.prototype.$message=Ss};\"undefined\"!=typeof window&&window.Vue&&vh(window.Vue);t.default={version:\"2.13.2\",locale:zt.a.use,i18n:zt.a.i18n,install:vh,CollapseTransition:be.a,Loading:Ra,Pagination:v,Dialog:M,Autocomplete:W,Dropdown:Z,DropdownMenu:te,DropdownItem:oe,Menu:ve,Submenu:Se,MenuItem:Ie,MenuItemGroup:Pe,Input:qe,InputNumber:Ke,Radio:et,RadioGroup:ot,RadioButton:ut,Checkbox:ft,CheckboxButton:vt,CheckboxGroup:_t,Switch:kt,Select:Ht,Option:Wt,OptionGroup:Yt,Button:Jt,ButtonGroup:nn,Table:oi,TableColumn:di,DatePicker:ur,TimeSelect:vr,TimePicker:Tr,Popover:Er,Tooltip:Pr,MessageBox:Jr,Breadcrumb:no,BreadcrumbItem:ao,Form:co,FormItem:bo,Tabs:Mo,TabPane:Oo,Tag:Po,Tree:Jo,Alert:ia,Notification:fa,Slider:Ca,Icon:$a,Row:ja,Col:qa,Upload:as,Progress:cs,Spinner:ps,Message:Ss,Badge:Ds,Card:Es,Rate:Bs,Steps:Vs,Step:qs,Carousel:Zs,Scrollbar:tl,CarouselItem:ol,Collapse:ul,CollapseItem:fl,Cascader:kl,ColorPicker:tu,Transfer:lu,Container:du,Header:mu,Aside:xu,Main:Su,Footer:Du,Timeline:Ou,TimelineItem:Nu,Link:Fu,Divider:Hu,Image:ac,Calendar:mc,Backtop:_c,InfiniteScroll:Ic,PageHeader:Pc,CascaderPanel:nh,Avatar:oh,Drawer:uh,Popconfirm:gh}}]).default},zMj2:function(e,t){var n=function(){this.head=null,this.tail=null,this._len=0},i=n.prototype;i.insert=function(e){var t=new r(e);return this.insertEntry(t),t},i.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,e.next=null,this.tail=e):this.head=this.tail=e,this._len++},i.remove=function(e){var t=e.prev,n=e.next;t?t.next=n:this.head=n,n?n.prev=t:this.tail=t,e.next=e.prev=null,this._len--},i.len=function(){return this._len},i.clear=function(){this.head=this.tail=null,this._len=0};var r=function(e){this.value=e,this.next,this.prev},o=function(e){this._list=new n,this._map={},this._maxSize=e||10,this._lastRemovedEntry=null},a=o.prototype;a.put=function(e,t){var n=this._list,i=this._map,o=null;if(null==i[e]){var a=n.len(),s=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var l=n.head;n.remove(l),delete i[l.key],o=l.value,this._lastRemovedEntry=l}s?s.value=t:s=new r(t),s.key=e,n.insertEntry(s),i[e]=s}return o},a.get=function(e){var t=this._map[e],n=this._list;if(null!=t)return t!==n.tail&&(n.remove(t),n.insertEntry(t)),t.value},a.clear=function(){this._list.clear(),this._map={}};var s=o;e.exports=s},zO13:function(e,t,n){var i=n(\"Icdr\"),r=n(\"/gxq\"),o=n(\"0sHC\"),a=n(\"HHfb\"),s=n(\"1Xuh\"),l=n(\"HGSA\"),u=i.extendComponentView({type:\"visualMap\",autoPositionValues:{left:1,right:1,top:1,bottom:1},init:function(e,t){this.ecModel=e,this.api=t,this.visualMapModel},render:function(e,t,n,i){this.visualMapModel=e,!1!==e.get(\"show\")?this.doRender.apply(this,arguments):this.group.removeAll()},renderBackground:function(e){var t=this.visualMapModel,n=a.normalizeCssArray(t.get(\"padding\")||0),i=e.getBoundingRect();e.add(new o.Rect({z2:-1,silent:!0,shape:{x:i.x-n[3],y:i.y-n[0],width:i.width+n[3]+n[1],height:i.height+n[0]+n[2]},style:{fill:t.get(\"backgroundColor\"),stroke:t.get(\"borderColor\"),lineWidth:t.get(\"borderWidth\")}}))},getControllerVisual:function(e,t,n){var i=(n=n||{}).forceState,o=this.visualMapModel,a={};if(\"symbol\"===t&&(a.symbol=o.get(\"itemSymbol\")),\"color\"===t){var s=o.get(\"contentColor\");a.color=s}function u(e){return a[e]}function c(e,t){a[e]=t}var h=o.controllerVisuals[i||o.getValueState(e)],d=l.prepareVisualTypes(h);return r.each(d,function(i){var r=h[i];n.convertOpacityToAlpha&&\"opacity\"===i&&(i=\"colorAlpha\",r=h.__alphaForOpacity),l.dependsOn(i,t)&&r&&r.applyVisual(e,u,c)}),a[t]},positionGroup:function(e){var t=this.visualMapModel,n=this.api;s.positionElement(e,t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})},doRender:r.noop});e.exports=u},zQR9:function(e,t,n){\"use strict\";var i=n(\"h65t\")(!0);n(\"vIB/\")(String,\"String\",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=i(t,n),this._i+=e.length,{value:e,done:!1})})},zTCi:function(e,t,n){\"use strict\";t.__esModule=!0,t.default=function(e,t){if(o.default.prototype.$isServer)return;if(!t)return void(e.scrollTop=0);var n=[],i=t.offsetParent;for(;i&&e!==i&&e.contains(i);)n.push(i),i=i.offsetParent;var r=t.offsetTop+n.reduce(function(e,t){return e+t.offsetTop},0),a=r+t.offsetHeight,s=e.scrollTop,l=s+e.clientHeight;r<s?e.scrollTop=r:a>l&&(e.scrollTop=a-e.clientHeight)};var i,r=n(\"7+uW\"),o=(i=r)&&i.__esModule?i:{default:i}},\"zZZ/\":function(e,t,n){n(\"4Nz2\").__DEV__;var i=n(\"/gxq\"),r=i.createHashMap,o=(i.retrieve,i.each);var a={cartesian2d:function(e,t,n,i){var r=e.getReferringComponents(\"xAxis\")[0],o=e.getReferringComponents(\"yAxis\")[0];t.coordSysDims=[\"x\",\"y\"],n.set(\"x\",r),n.set(\"y\",o),s(r)&&(i.set(\"x\",r),t.firstCategoryDimIndex=0),s(o)&&(i.set(\"y\",o),t.firstCategoryDimIndex,t.firstCategoryDimIndex=1)},singleAxis:function(e,t,n,i){var r=e.getReferringComponents(\"singleAxis\")[0];t.coordSysDims=[\"single\"],n.set(\"single\",r),s(r)&&(i.set(\"single\",r),t.firstCategoryDimIndex=0)},polar:function(e,t,n,i){var r=e.getReferringComponents(\"polar\")[0],o=r.findAxisModel(\"radiusAxis\"),a=r.findAxisModel(\"angleAxis\");t.coordSysDims=[\"radius\",\"angle\"],n.set(\"radius\",o),n.set(\"angle\",a),s(o)&&(i.set(\"radius\",o),t.firstCategoryDimIndex=0),s(a)&&(i.set(\"angle\",a),null==t.firstCategoryDimIndex&&(t.firstCategoryDimIndex=1))},geo:function(e,t,n,i){t.coordSysDims=[\"lng\",\"lat\"]},parallel:function(e,t,n,i){var r=e.ecModel,a=r.getComponent(\"parallel\",e.get(\"parallelIndex\")),l=t.coordSysDims=a.dimensions.slice();o(a.parallelAxisIndex,function(e,o){var a=r.getComponent(\"parallelAxis\",e),u=l[o];n.set(u,a),s(a)&&null==t.firstCategoryDimIndex&&(i.set(u,a),t.firstCategoryDimIndex=o)})}};function s(e){return\"category\"===e.get(\"type\")}t.getCoordSysInfoBySeries=function(e){var t=e.get(\"coordinateSystem\"),n=new function(e){this.coordSysName=e,this.coordSysDims=[],this.axisMap=r(),this.categoryAxisMap=r(),this.firstCategoryDimIndex=null}(t),i=a[t];if(i)return i(e,n,n.axisMap,n.categoryAxisMap),n}},zjhG:function(e,t,n){var i=n(\"Icdr\");n(\"P0a5\"),n(\"z+uQ\");var r=n(\"4A6G\"),o=n(\"nV/6\");i.registerLayout(r),i.registerVisual(o)},zlsk:function(e,t,n){var i=n(\"N1qP\"),r=n(\"8b51\"),o=n(\"0sHC\").linePolygonIntersect;function a(e){var t=[\"x\",\"y\"],n=[\"width\",\"height\"];return{point:function(t,n,i){if(t){var r=i.range;return s(t[e],r)}},rect:function(i,r,o){if(i){var a=o.range,l=[i[t[e]],i[t[e]]+i[n[e]]];return l[1]<l[0]&&l.reverse(),s(l[0],a)||s(l[1],a)||s(a[0],l)||s(a[1],l)}}}}function s(e,t){return t[0]<=e&&e<=t[1]}var l={lineX:a(0),lineY:a(1),rect:{point:function(e,t,n){return e&&n.boundingRect.contain(e[0],e[1])},rect:function(e,t,n){return e&&n.boundingRect.intersect(e)}},polygon:{point:function(e,t,n){return e&&n.boundingRect.contain(e[0],e[1])&&i.contain(n.range,e[0],e[1])},rect:function(e,t,n){var a=n.range;if(!e||a.length<=1)return!1;var s=e.x,l=e.y,u=e.width,c=e.height,h=a[0];return!!(i.contain(a,s,l)||i.contain(a,s+u,l)||i.contain(a,s,l+c)||i.contain(a,s+u,l+c)||r.create(e).contain(h[0],h[1])||o(s,l,s+u,l,a)||o(s,l,s,l+c,a)||o(s+u,l,s+u,l+c,a)||o(s,l+c,s+u,l+c,a))||void 0}}};e.exports=l},zz1u:function(e,t,n){n(\"ecfp\"),n(\"s48c\")}});\n//# sourceMappingURL=vendor.cd39a6c53a9d7599c08c.js.map"
  },
  {
    "path": "wtpy/wrapper/ContractLoader.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2021-05-24 15:05:01\nLastEditors: Wesley\nLastEditTime: 2021-08-13 15:35:59\n'''\nfrom .PlatformHelper import PlatformHelper as ph\nimport os\nfrom ctypes import cdll,c_char_p\n\nfrom enum import Enum\nclass LoaderType(Enum):\n    '''\n    引擎类型\n    枚举变量\n    '''\n    LT_CTP      = 1\n    LT_CTPMini  = 2\n    LT_CTPOpt   = 3\n\ndef getModuleName(lType:LoaderType)->str:\n    if lType == LoaderType.LT_CTP:\n        filename = \"CTPLoader\"\n    elif lType == LoaderType.LT_CTPMini:\n        filename = \"CTPMiniLoader\"\n    elif lType == LoaderType.LT_CTPOpt:\n        filename = \"CTPOptLoader\"\n    else:\n        raise Exception('Invalid loader type')\n        return\n    \n    paths = os.path.split(__file__)\n    exename = ph.getModule(filename)\n    a = (paths[:-1] + (exename,))\n    return os.path.join(*a)\n\n\nclass ContractLoader:\n\n    def __init__(self, lType:LoaderType = LoaderType.LT_CTP):\n        print(getModuleName(lType))\n        self.api = cdll.LoadLibrary(getModuleName(lType))\n        self.api.run.argtypes = [ c_char_p]\n\n    def start(self, cfgfile:str = 'config.ini'):\n        self.api.run(bytes(cfgfile, encoding = \"utf8\"))"
  },
  {
    "path": "wtpy/wrapper/PlatformHelper.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2021-02-26 16:28:57\nLastEditors: Wesley\nLastEditTime: 2021-08-13 15:32:23\n'''\nimport platform\n\nclass PlatformHelper:\n\n    @staticmethod\n    def isPythonX64() -> bool:\n        ret = platform.architecture()\n        return (ret[0] == \"64bit\")\n\n    @staticmethod\n    def isWindows() -> bool:\n        if \"windows\" in platform.system().lower():\n            return True\n\n        return False\n\n    @staticmethod\n    def getModule(moduleName:str, subdir:str=\"\") -> str:\n        dllname = \"\"\n        ext = \"\"\n        prefix = \"\"\n        if PlatformHelper.isWindows(): #windows平台\n            ext = \".dll\"\n            if PlatformHelper.isPythonX64():\n                dllname = \"x64/\"\n            else:\n                dllname = \"x86/\"\n        else:#Linux平台\n            dllname = \"linux/\"\n            prefix = \"lib\"\n            ext = \".so\"\n\n        if subdir != \"\":\n            dllname += subdir + \"/\"\n\n        dllname += prefix + moduleName + ext\n        return dllname\n            "
  },
  {
    "path": "wtpy/wrapper/WtBtWrapper.py",
    "content": "from ctypes import cdll, c_char_p, c_bool, c_ulong, c_uint64, c_double, POINTER, addressof, sizeof\nfrom wtpy.WtCoreDefs import CB_STRATEGY_INIT, CB_STRATEGY_TICK, CB_STRATEGY_CALC, CB_STRATEGY_BAR, CB_STRATEGY_GET_BAR, CB_STRATEGY_GET_TICK, CB_STRATEGY_GET_POSITION\nfrom wtpy.WtCoreDefs import CB_HFTSTRA_CHNL_EVT, CB_HFTSTRA_ENTRUST, CB_HFTSTRA_ORD, CB_HFTSTRA_TRD, CB_SESSION_EVENT\nfrom wtpy.WtCoreDefs import CB_HFTSTRA_ORDQUE, CB_HFTSTRA_ORDDTL, CB_HFTSTRA_TRANS, CB_HFTSTRA_GET_ORDQUE, CB_HFTSTRA_GET_ORDDTL, CB_HFTSTRA_GET_TRANS\nfrom wtpy.WtCoreDefs import CHNL_EVENT_READY, CHNL_EVENT_LOST, CB_ENGINE_EVENT\nfrom wtpy.WtCoreDefs import EVENT_ENGINE_INIT, EVENT_SESSION_BEGIN, EVENT_SESSION_END, EVENT_ENGINE_SCHDL, EVENT_BACKTEST_END\nfrom wtpy.WtCoreDefs import WTSTickStruct, WTSBarStruct, WTSOrdQueStruct, WTSOrdDtlStruct, WTSTransStruct\nfrom .PlatformHelper import PlatformHelper as ph\nfrom wtpy.WtUtilDefs import singleton\nimport os\n\n# Python对接C接口的库\n@singleton\nclass WtBtWrapper:\n    '''\n    Wt平台C接口底层对接模块\n    '''\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n\n    _engine = None\n    \n    # 构造函数，传入动态库名\n    def __init__(self, engine):\n        self._engine = engine\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtBtPorter\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n            \n        self.api.get_version.restype = c_char_p\n        self.api.cta_get_last_entertime.restype = c_uint64\n        self.api.cta_get_first_entertime.restype = c_uint64\n        self.api.cta_get_detail_entertime.restype = c_uint64\n        self.api.cta_enter_long.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_enter_short.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_exit_long.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_exit_short.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_set_position.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.ver = bytes.decode(self.api.get_version())\n\n        self.api.cta_save_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.cta_load_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.cta_load_userdata.restype = c_char_p\n\n        self.api.cta_get_position.restype = c_double\n        self.api.cta_get_position_profit.restype = c_double\n        self.api.cta_get_position_avgpx.restype = c_double\n        self.api.cta_get_detail_cost.restype = c_double\n        self.api.cta_get_detail_profit.restype = c_double\n        self.api.cta_get_price.restype = c_double\n        self.api.cta_get_fund_data.restype = c_double\n\n        self.api.sel_save_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.sel_load_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.sel_load_userdata.restype = c_char_p\n        self.api.sel_get_position.restype = c_double\n        self.api.sel_set_position.argtypes = [c_ulong, c_char_p, c_double, c_char_p]\n\n        self.api.hft_save_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.hft_load_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.hft_load_userdata.restype = c_char_p\n        self.api.hft_get_position.restype = c_double\n        self.api.hft_get_position_profit.restype = c_double\n        self.api.hft_get_undone.restype = c_double\n        \n        self.api.hft_buy.restype = c_char_p\n        self.api.hft_buy.argtypes = [c_ulong, c_char_p, c_double, c_double, c_char_p]\n        self.api.hft_sell.restype = c_char_p\n        self.api.hft_sell.argtypes = [c_ulong, c_char_p, c_double, c_double, c_char_p]\n        # 回测不需要 self.api.hft_cancel_all.restype = c_char_p\n\n        self.api.set_time_range.argtypes = [c_uint64, c_uint64]\n        self.api.enable_tick.argtypes = [c_bool]\n\n    def on_engine_event(self, evtid:int, evtDate:int, evtTime:int):\n        engine = self._engine\n        if evtid == EVENT_ENGINE_INIT:\n            engine.on_init()\n        elif evtid == EVENT_ENGINE_SCHDL:\n            engine.on_schedule(evtDate, evtTime)\n        elif evtid == EVENT_SESSION_BEGIN:\n            engine.on_session_begin(evtDate)\n        elif evtid == EVENT_SESSION_END:\n            engine.on_session_end(evtDate)\n        elif evtid == EVENT_BACKTEST_END:\n            engine.on_backtest_end()\n        return\n\n    def on_stra_init(self, id:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_init()\n        return\n\n    def on_session_event(self, id:int, udate:int, isBegin:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            if isBegin:\n                ctx.on_session_begin(udate)\n            else:\n                ctx.on_session_end(udate)\n        return\n\n    def on_stra_tick(self, id:int, stdCode:str, newTick:POINTER(WTSTickStruct)):\n        engine = self._engine\n        ctx = engine.get_context(id)\n\n        realTick = newTick.contents\n        tick = dict()\n        tick[\"time\"] = realTick.action_date * 1000000000 + realTick.action_time\n        tick[\"open\"] = realTick.open\n        tick[\"high\"] = realTick.high\n        tick[\"low\"] = realTick.low\n        tick[\"price\"] = realTick.price\n        \n        tick[\"bidprice\"] = list()\n        tick[\"bidqty\"] = list()\n        tick[\"askprice\"] = list()\n        tick[\"askqty\"] = list()\n\n        tick[\"upper_limit\"] = realTick.total_volume\n        tick[\"lower_limit\"] = realTick.lower_limit\n        \n        tick[\"total_volume\"] = realTick.total_volume\n        tick[\"volume\"] = realTick.volume\n        tick[\"total_turnover\"] = realTick.total_turnover\n        tick[\"turn_over\"] = realTick.turn_over\n        tick[\"open_interest\"] = realTick.open_interest\n        tick[\"diff_interest\"] = realTick.diff_interest\n\n        for i in range(10):\n            if realTick.bid_qty[i] != 0:\n                tick[\"bidprice\"].append(realTick.bid_prices[i])\n                tick[\"bidqty\"].append(realTick.bid_qty[i])\n\n            if realTick.ask_qty[i] != 0:\n                tick[\"askprice\"].append(realTick.ask_prices[i])\n                tick[\"askqty\"].append(realTick.ask_qty[i])\n\n        if ctx is not None:\n            ctx.on_tick(bytes.decode(stdCode), tick)\n        return\n\n    def on_stra_calc(self, id:int, curDate:int, curTime:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_calculate()\n        return\n\n    def on_stra_calc_done(self, id:int, curDate:int, curTime:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_calculate_done()\n        return\n\n    def on_stra_bar(self, id:int, stdCode:str, period:str, newBar:POINTER(WTSBarStruct)):\n        period = bytes.decode(period)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newBar = newBar.contents\n        curBar = dict()\n        if period[0] == 'd':\n            curBar[\"time\"] = newBar.date\n        else:\n            curBar[\"time\"] = 1990*100000000 + newBar.time\n        curBar[\"bartime\"] = curBar[\"time\"]\n        curBar[\"open\"] = newBar.open\n        curBar[\"high\"] = newBar.high\n        curBar[\"low\"] = newBar.low\n        curBar[\"close\"] = newBar.close\n        curBar[\"volume\"] = newBar.vol\n        if ctx is not None:\n            ctx.on_bar(bytes.decode(stdCode), period, curBar)\n        return\n\n\n    def on_stra_get_bar(self, id:int, stdCode:str, period:str, curBar:POINTER(WTSBarStruct), count:int, isLast:bool):\n        '''\n        获取K线回调，该回调函数因为是python主动发起的，需要同步执行，所以不走事件推送\n        @id     策略id\n        @stdCode   合约代码\n        @period K线周期\n        @curBar 最新一条K线\n        @isLast 是否是最后一条\n        '''\n        engine = self._engine\n        ctx = engine.get_context(id)\n        period = bytes.decode(period)\n\n        bsSize = sizeof(WTSBarStruct)\n        addr = addressof(curBar.contents) # 获取内存地址\n        bars = [None]*count # 预先分配list的长度\n        for i in range(count):\n            realBar = WTSBarStruct.from_address(addr)   # 从内存中直接解析成WTSBarStruct\n            bar = dict()\n            if period[0] == 'd':\n                bar[\"time\"] = realBar.date\n            else:\n                bar[\"time\"] = 1990*100000000 + realBar.time\n            bar[\"bartime\"] = bar[\"time\"]\n            bar[\"open\"] = realBar.open\n            bar[\"high\"] = realBar.high\n            bar[\"low\"] = realBar.low\n            bar[\"close\"] = realBar.close\n            bar[\"volume\"] = realBar.vol\n            bars[i] = bar\n            addr += bsSize\n\n        if ctx is not None:\n            ctx.on_getbars(bytes.decode(stdCode), period, bars, isLast)\n\n    def on_stra_get_tick(self, id:int, stdCode:str, curTick:POINTER(WTSTickStruct), count:int, isLast:bool):\n        '''\n        获取Tick回调，该回调函数因为是python主动发起的，需要同步执行，所以不走事件推送\n        @id         策略id\n        @stdCode       合约代码\n        @curTick    最新一笔Tick\n        @isLast     是否是最后一条\n        '''\n\n        engine = self._engine\n        ctx = engine.get_context(id)\n\n        tsSize = sizeof(WTSTickStruct)\n        addr = addressof(curTick.contents) # 获取内存地址\n        ticks = [None]*count # 预先分配list的长度\n        for idx in range(count):\n            realTick = WTSTickStruct.from_address(addr)   # 从内存中直接解析成WTSTickStruct\n            tick = dict()\n            tick[\"time\"] = realTick.action_date * 1000000000 + realTick.action_time\n            tick[\"open\"] = realTick.open\n            tick[\"high\"] = realTick.high\n            tick[\"low\"] = realTick.low\n            tick[\"price\"] = realTick.price\n\n            tick[\"bidprice\"] = list()\n            tick[\"bidqty\"] = list()\n            tick[\"askprice\"] = list()\n            tick[\"askqty\"] = list()\n            \n            tick[\"total_volume\"] = realTick.total_volume\n            tick[\"volume\"] = realTick.volume\n            tick[\"total_turnover\"] = realTick.total_turnover\n            tick[\"turn_over\"] = realTick.turn_over\n            tick[\"open_interest\"] = realTick.open_interest\n            tick[\"diff_interest\"] = realTick.diff_interest\n\n            for i in range(10):\n                if realTick.bid_qty[i] != 0:\n                    tick[\"bidprice\"].append(realTick.bid_prices[i])\n                    tick[\"bidqty\"].append(realTick.bid_qty[i])\n\n                if realTick.ask_qty[i] != 0:\n                    tick[\"askprice\"].append(realTick.ask_prices[i])\n                    tick[\"askqty\"].append(realTick.ask_qty[i])\n\n            ticks[idx] = tick\n            addr += tsSize\n\n        if ctx is not None:\n            ctx.on_getticks(bytes.decode(stdCode), ticks, isLast)\n\n    def on_stra_get_position(self, id:int, stdCode:str, qty:float, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_getpositions(bytes.decode(stdCode), qty, isLast)\n\n    def on_hftstra_channel_evt(self, id:int, trader:str, evtid:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        \n        if evtid == CHNL_EVENT_READY:\n            ctx.on_channel_ready()\n        elif evtid == CHNL_EVENT_LOST:\n            ctx.on_channel_lost()\n\n    def on_hftstra_order(self, id:int, localid:int, stdCode:str, isBuy:bool, totalQty:float, leftQty:float, price:float, isCanceled:bool, userTag:str):\n        stdCode = bytes.decode(stdCode)\n        userTag = bytes.decode(userTag)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        ctx.on_order(localid, stdCode, isBuy, totalQty, leftQty, price, isCanceled, userTag)\n\n    def on_hftstra_trade(self, id:int, localid:int, stdCode:str, isBuy:bool, qty:float, price:float, userTag:str):\n        stdCode = bytes.decode(stdCode)\n        userTag = bytes.decode(userTag)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        ctx.on_trade(localid, stdCode, isBuy, qty, price, userTag)\n\n    def on_hftstra_entrust(self, id:int, localid:int, stdCode:str, bSucc:bool, message:str, userTag:str):\n        stdCode = bytes.decode(stdCode)\n        message = bytes.decode(message, \"gbk\")\n        userTag = bytes.decode(userTag)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        ctx.on_entrust(localid, stdCode, bSucc, message, userTag)\n\n    def on_hftstra_order_queue(self, id:int, stdCode:str, newOrdQue:POINTER(WTSOrdQueStruct)):\n        stdCode = bytes.decode(stdCode)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newOrdQue = newOrdQue.contents\n        curOrdQue = dict()\n        curOrdQue[\"time\"] = newOrdQue.action_date * 1000000000 + newOrdQue.action_time\n        curOrdQue[\"side\"] = newOrdQue.side\n        curOrdQue[\"price\"] = newOrdQue.price\n        curOrdQue[\"order_items\"] = newOrdQue.order_items\n        curOrdQue[\"qsize\"] = newOrdQue.qsize\n        curOrdQue[\"volumes\"] = list()\n\n        for i in range(50):\n            if newOrdQue.volumes[i] == 0:\n                break\n            else:\n                curOrdQue[\"volumes\"].append(newOrdQue.volumes[i])\n        \n        if ctx is not None:\n            ctx.on_order_queue(stdCode, curOrdQue)\n\n    def on_hftstra_get_order_queue(self, id:int, stdCode:str, newOrdQue:POINTER(WTSOrdQueStruct), count:int, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        szItem = sizeof(WTSOrdQueStruct)\n        addr = addressof(newOrdQue)\n        item_list = [None]*count\n        for i in range(count):\n            realOrdQue = WTSOrdQueStruct.from_address(addr)\n            curOrdQue = dict()\n            curOrdQue[\"time\"] = realOrdQue.action_date * 1000000000 + realOrdQue.action_time\n            curOrdQue[\"side\"] = realOrdQue.side\n            curOrdQue[\"price\"] = realOrdQue.price\n            curOrdQue[\"order_items\"] = realOrdQue.order_items\n            curOrdQue[\"qsize\"] = realOrdQue.qsize\n            curOrdQue[\"volumes\"] = list()\n\n            for i in range(50):\n                if realOrdQue.volumes[i] == 0:\n                    break\n                else:\n                    curOrdQue[\"volumes\"].append(realOrdQue.volumes[i])\n\n            item_list[i] = curOrdQue\n            addr += szItem\n            \n        if ctx is not None:\n            ctx.on_get_order_queue(bytes.decode(stdCode), item_list, isLast)\n\n    def on_hftstra_order_detail(self, id:int, stdCode:str, newOrdDtl:POINTER(WTSOrdDtlStruct)):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newOrdDtl = newOrdDtl.contents\n\n        curOrdDtl = dict()\n        curOrdDtl[\"time\"] = newOrdDtl.action_date * 1000000000 + newOrdDtl.action_time\n        curOrdDtl[\"index\"] = newOrdDtl.index\n        curOrdDtl[\"side\"] = newOrdDtl.side\n        curOrdDtl[\"price\"] = newOrdDtl.price\n        curOrdDtl[\"volume\"] = newOrdDtl.volume\n        curOrdDtl[\"otype\"] = newOrdDtl.otype\n        \n        if ctx is not None:\n            ctx.on_order_detail(stdCode, curOrdDtl)\n\n    def on_hftstra_get_order_detail(self, id:int, stdCode:str, newOrdDtl:POINTER(WTSOrdDtlStruct), count:int, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        szItem = sizeof(WTSOrdDtlStruct)\n        addr = addressof(newOrdDtl)\n        item_list = [None]*count\n        for i in range(count):\n            realOrdDtl = WTSOrdDtlStruct.from_address(addr)\n            curOrdDtl = dict()\n            curOrdDtl[\"time\"] = realOrdDtl.action_date * 1000000000 + realOrdDtl.action_time\n            curOrdDtl[\"index\"] = realOrdDtl.index\n            curOrdDtl[\"side\"] = realOrdDtl.side\n            curOrdDtl[\"price\"] = realOrdDtl.price\n            curOrdDtl[\"volume\"] = realOrdDtl.volume\n            curOrdDtl[\"otype\"] = realOrdDtl.otype\n\n            item_list[i] = curOrdDtl\n            addr += szItem\n            \n        if ctx is not None:\n            ctx.on_get_order_detail(bytes.decode(stdCode), item_list, isLast)\n\n    def on_hftstra_transaction(self, id:int, stdCode:str, newTrans:POINTER(WTSTransStruct)):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newTrans = newTrans.contents\n\n        curTrans = dict()\n        curTrans[\"time\"] = newTrans.action_date * 1000000000 + newTrans.action_time\n        curTrans[\"index\"] = newTrans.index\n        curTrans[\"ttype\"] = newTrans.ttype\n        curTrans[\"side\"] = newTrans.side\n        curTrans[\"price\"] = newTrans.price\n        curTrans[\"volume\"] = newTrans.volume\n        curTrans[\"askorder\"] = newTrans.askorder\n        curTrans[\"bidorder\"] = newTrans.bidorder\n        \n        if ctx is not None:\n            ctx.on_transaction(stdCode, curTrans)\n        \n    def on_hftstra_get_transaction(self, id:int, stdCode:str, newTrans:POINTER(WTSTransStruct), count:int, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        szTrans = sizeof(WTSTransStruct)\n        addr = addressof(newTrans)\n        trans_list = [None]*count\n        for i in range(count):\n            realTrans = WTSTransStruct.from_address(addr)\n            curTrans = dict()\n            curTrans[\"time\"] = realTrans.action_date * 1000000000 + realTrans.action_time\n            curTrans[\"index\"] = realTrans.index\n            curTrans[\"ttype\"] = realTrans.ttype\n            curTrans[\"side\"] = realTrans.side\n            curTrans[\"price\"] = realTrans.price\n            curTrans[\"volume\"] = realTrans.volume\n            curTrans[\"askorder\"] = realTrans.askorder\n            curTrans[\"bidorder\"] = realTrans.bidorder\n            trans_list[i] = curTrans\n            addr += szTrans\n            \n        if ctx is not None:\n            ctx.on_get_transaction(bytes.decode(stdCode), trans_list, isLast)\n\n    def write_log(self, level, message:str, catName:str = \"\"):\n        self.api.write_log(level, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'), bytes(catName, encoding = \"utf8\"))\n\n    def set_time_range(self, beginTime:int, endTime:int):\n        '''\n        设置回测时间区间\n        @beginTime  开始时间，格式如yyyymmddHHMM\n        @endTime    结束时间，格式如yyyymmddHHMM\n        '''\n        self.api.set_time_range(beginTime, endTime)\n\n    def enable_tick(self, bEnabled:bool = True):\n        '''\n        启用tick回测\n        @bEnabled   是否启用\n        '''\n        self.api.enable_tick(bEnabled)\n\n    ### 实盘和回测有差异 ###\n    def run_backtest(self, bNeedDump:bool = False, bAsync:bool = False):\n        self.api.run_backtest(bNeedDump, bAsync)\n\n    def stop_backtest(self):\n        self.api.stop_backtest()\n\n    def release_backtest(self):\n        self.api.release_backtest()\n\n    def clear_cache(self):\n        self.api.clear_cache()\n\n    def config_backtest(self, cfgfile:str = 'config.json', isFile:bool = True):\n        self.api.config_backtest(bytes(cfgfile, encoding = \"utf8\"), isFile)\n    ### 实盘和回测有差异 ###\n\n    def initialize_cta(self, logCfg:str = \"logcfgbt.json\", isFile:bool = True, outDir:str = \"./outputs_bt\"):\n        '''\n        C接口初始化\n        '''\n        self.cb_stra_init = CB_STRATEGY_INIT(self.on_stra_init)\n        self.cb_stra_tick = CB_STRATEGY_TICK(self.on_stra_tick)\n        self.cb_stra_calc = CB_STRATEGY_CALC(self.on_stra_calc)\n        self.cb_stra_calc_done = CB_STRATEGY_CALC(self.on_stra_calc_done)\n        self.cb_stra_bar = CB_STRATEGY_BAR(self.on_stra_bar)\n        self.cb_session_event = CB_SESSION_EVENT(self.on_session_event)\n\n        self.cb_engine_event = CB_ENGINE_EVENT(self.on_engine_event)\n        try:\n            self.api.register_evt_callback(self.cb_engine_event)\n            self.api.register_cta_callbacks(self.cb_stra_init, self.cb_stra_tick, \n                self.cb_stra_calc, self.cb_stra_bar, self.cb_session_event, self.cb_stra_calc_done)\n            self.api.init_backtest(bytes(logCfg, encoding = \"utf8\"), isFile, bytes(outDir, encoding = \"utf8\"))\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader CTA backtest framework initialzied，version：%s\" % (self.ver))\n\n    def initialize_hft(self, logCfg:str = \"logcfgbt.json\", isFile:bool = True, outDir:str = \"./outputs_bt\"):\n        '''\n        C接口初始化\n        '''\n        self.cb_stra_init = CB_STRATEGY_INIT(self.on_stra_init)\n        self.cb_stra_tick = CB_STRATEGY_TICK(self.on_stra_tick)\n        self.cb_stra_bar = CB_STRATEGY_BAR(self.on_stra_bar)\n        self.cb_session_event = CB_SESSION_EVENT(self.on_session_event)\n\n        self.cb_hftstra_channel_evt = CB_HFTSTRA_CHNL_EVT(self.on_hftstra_channel_evt)\n        self.cb_hftstra_order = CB_HFTSTRA_ORD(self.on_hftstra_order)\n        self.cb_hftstra_trade = CB_HFTSTRA_TRD(self.on_hftstra_trade)\n        self.cb_hftstra_entrust = CB_HFTSTRA_ENTRUST(self.on_hftstra_entrust)\n        self.cb_hftstra_order_detail = CB_HFTSTRA_ORDDTL(self.on_hftstra_order_detail)\n        self.cb_hftstra_order_queue = CB_HFTSTRA_ORDQUE(self.on_hftstra_order_queue)\n        self.cb_hftstra_transaction = CB_HFTSTRA_TRANS(self.on_hftstra_transaction)\n\n        self.cb_engine_event = CB_ENGINE_EVENT(self.on_engine_event)\n\n        try:\n            self.api.register_evt_callback(self.cb_engine_event)\n            self.api.register_hft_callbacks(self.cb_stra_init, self.cb_stra_tick, self.cb_stra_bar, \n                self.cb_hftstra_channel_evt, self.cb_hftstra_order, self.cb_hftstra_trade, \n                self.cb_hftstra_entrust, self.cb_hftstra_order_detail, self.cb_hftstra_order_queue, \n                self.cb_hftstra_transaction, self.cb_session_event)\n            self.api.init_backtest(bytes(logCfg, encoding = \"utf8\"), isFile, bytes(outDir, encoding = \"utf8\"))\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader HFT backtest framework initialzied，version：%s\" % (self.ver))\n\n    def initialize_sel(self, logCfg:str = \"logcfgbt.json\", isFile:bool = True, outDir:str = \"./outputs_bt\"):\n        '''\n        C接口初始化\n        '''\n        self.cb_stra_init = CB_STRATEGY_INIT(self.on_stra_init)\n        self.cb_stra_tick = CB_STRATEGY_TICK(self.on_stra_tick)\n        self.cb_stra_calc = CB_STRATEGY_CALC(self.on_stra_calc)\n        self.cb_stra_calc_done = CB_STRATEGY_CALC(self.on_stra_calc_done)\n        self.cb_stra_bar = CB_STRATEGY_BAR(self.on_stra_bar)\n        self.cb_session_event = CB_SESSION_EVENT(self.on_session_event)\n\n        self.cb_engine_event = CB_ENGINE_EVENT(self.on_engine_event)\n\n        try:\n            self.api.register_evt_callback(self.cb_engine_event)\n            self.api.register_sel_callbacks(self.cb_stra_init, self.cb_stra_tick, \n                self.cb_stra_calc, self.cb_stra_bar, self.cb_session_event, self.cb_stra_calc_done)\n            self.api.init_backtest(bytes(logCfg, encoding = \"utf8\"), isFile, bytes(outDir, encoding = \"utf8\"))\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader SEL backtest framework initialzied，version：%s\" % (self.ver))\n\n    def cta_enter_long(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        开多\n        @id         策略id\n        @stdCode    合约代码\n        @qty        手数，大于等于0\n        '''\n        self.api.cta_enter_long(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_exit_long(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        平多\n        @id         策略id\n        @stdCode    合约代码\n        @qty        手数，大于等于0\n        '''\n        self.api.cta_exit_long(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_enter_short(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        开空\n        @id         策略id\n        @stdCode    合约代码\n        @qty        手数，大于等于0\n        '''\n        self.api.cta_enter_short(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_exit_short(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        平空\n        @id         策略id\n        @stdCode    合约代码\n        @qty        手数，大于等于0\n        '''\n        self.api.cta_exit_short(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_get_bars(self, id:int, stdCode:str, period:str, count:int, isMain:bool):\n        '''\n        读取K线\n        @id         策略id\n        @stdCode    合约代码\n        @period     周期，如m1/m3/d1等\n        @count      条数\n        @isMain     是否主K线\n        '''\n        return self.api.cta_get_bars(id, bytes(stdCode, encoding = \"utf8\"), bytes(period, encoding = \"utf8\"), count, isMain, CB_STRATEGY_GET_BAR(self.on_stra_get_bar))\n\n    def cta_get_ticks(self, id:int, stdCode:str, count:int):\n        '''\n        读取Tick\n        @id         策略id\n        @stdCode    合约代码\n        @count      条数\n        '''\n        return self.api.cta_get_ticks(id, bytes(stdCode, encoding = \"utf8\"), count, CB_STRATEGY_GET_TICK(self.on_stra_get_tick))\n\n    def cta_get_position_profit(self, id:int, stdCode:str):\n        '''\n        获取浮动盈亏\n        @id         策略id\n        @stdCode    合约代码\n        @return     指定合约的浮动盈亏\n        '''\n        return self.api.cta_get_position_profit(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_position_avgpx(self, id:int, stdCode:str):\n        '''\n        获取持仓均价\n        @id         策略id\n        @stdCode    合约代码\n        @return     指定合约的持仓均价\n        '''\n        return self.api.cta_get_position_avgpx(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_all_position(self, id:int):\n        '''\n        获取全部持仓\n        @id     策略id\n        '''\n        return self.api.cta_get_all_position(id, CB_STRATEGY_GET_POSITION(self.on_stra_get_position))\n    \n    def cta_get_position(self, id:int, stdCode:str, usertag:str = \"\"):\n        '''\n        获取持仓\n        @id     策略id\n        @stdCode    合约代码\n        @usertag    进场标记，如果为空则获取该合约全部持仓\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.cta_get_position(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\"))\n\n    def cta_get_fund_data(self, id:int, flag:int) -> float:\n        '''\n        获取资金数据\n        @id     策略id\n        @flag   0-动态权益，1-总平仓盈亏，2-总浮动盈亏，3-总手续费\n        @return 资金数据\n        '''\n        return self.api.cta_get_fund_data(id, flag)\n\n    def cta_get_price(self, stdCode:str) -> float:\n        '''\n        @stdCode   合约代码\n        @return     指定合约的最新价格 \n        '''\n        return self.api.cta_get_price(bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_set_position(self, id:int, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        设置目标仓位\n        @id         策略id\n        @stdCode    合约代码\n        @qty        目标仓位，正为多，负为空\n        '''\n        self.api.cta_set_position(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_get_tdate(self) -> int:\n        '''\n        获取当前交易日\n        @return    当前交易日\n        '''\n        return self.api.cta_get_tdate()\n\n    def cta_get_date(self) -> int:\n        '''\n        获取当前日期\n        @return    当前日期 \n        '''\n        return self.api.cta_get_date()\n\n    def cta_get_time(self) -> int:\n        '''\n        获取当前时间\n        @return    当前时间 \n        '''\n        return self.api.cta_get_time()\n\n    def cta_get_first_entertime(self, id:int, stdCode:str) -> int:\n        '''\n        获取当前持仓的首次进场时间\n        @stdCode    合约代码\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_first_entertime(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_last_entertime(self, id:int, stdCode:str) -> int:\n        '''\n        获取当前持仓的最后进场时间\n        @stdCode    合约代码\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_last_entertime(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_last_exittime(self, id:int, stdCode:str) -> int:\n        '''\n        获取当前持仓的最后出场时间\n        @stdCode    合约代码\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_last_exittime(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_log_text(self, id:int, message:str):\n        '''\n        日志输出\n        @id         策略ID\n        @message    日志内容\n        '''\n        self.api.cta_log_text(id, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'))\n\n    def cta_get_detail_entertime(self, id:int, stdCode:str, usertag:str) -> int:\n        '''\n        获取指定标记的持仓的进场时间\n        @id         策略id\n        @stdCode    合约代码\n        @usertag    进场标记\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_detail_entertime(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\")) \n\n    def cta_get_detail_cost(self, id:int, stdCode:str, usertag:str) -> float:\n        '''\n        获取指定标记的持仓的开仓价\n        @id         策略id\n        @stdCode    合约代码\n        @usertag    进场标记\n        @return     开仓价 \n        '''\n        return self.api.cta_get_detail_cost(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\")) \n\n    def cta_get_detail_profit(self, id:int, stdCode:str, usertag:str, flag:int):\n        '''\n        获取指定标记的持仓的盈亏\n        @id         策略id\n        @stdCode       合约代码\n        @usertag    进场标记\n        @flag       盈亏记号，0-浮动盈亏，1-最大浮盈，2-最大亏损（负数）\n        @return     盈亏 \n        '''\n        return self.api.cta_get_detail_profit(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\"), flag) \n\n    def cta_save_user_data(self, id:int, key:str, val:str):\n        '''\n        保存用户数据\n        @id         策略id\n        @key        数据名\n        @val        数据值\n        '''\n        self.api.cta_save_userdata(id, bytes(key, encoding = \"utf8\"), bytes(val, encoding = \"utf8\"))\n\n    def cta_load_user_data(self, id:int, key:str, defVal:str  = \"\"):\n        '''\n        加载用户数据\n        @id         策略id\n        @key        数据名\n        @defVal     默认值\n        '''\n        ret = self.api.cta_load_userdata(id, bytes(key, encoding = \"utf8\"), bytes(defVal, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def cta_sub_ticks(self, id:int, stdCode:str):\n        '''\n        订阅行情\n        @id         策略id\n        @stdCode    品种代码\n        '''\n        self.api.cta_sub_ticks(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_step(self, id:int) -> bool:\n        '''\n        单步执行\n        @id         策略id\n        '''\n        return self.api.cta_step(id)\n\n    \n    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n    '''SEL接口'''\n    def sel_get_bars(self, id:int, stdCode:str, period:str, count:int):\n        '''\n        读取K线\n        @id     策略id\n        @stdCode   合约代码\n        @period 周期，如m1/m3/d1等\n        @count  条数\n        '''\n        return self.api.sel_get_bars(id, bytes(stdCode, encoding = \"utf8\"), bytes(period, encoding = \"utf8\"), count, CB_STRATEGY_GET_BAR(self.on_stra_get_bar))\n\n    def sel_get_ticks(self, id:int, stdCode:str, count:int):\n        '''\n        读取Tick\n        @id     策略id\n        @stdCode   合约代码\n        @count  条数\n        '''\n        return self.api.sel_get_ticks(id, bytes(stdCode, encoding = \"utf8\"), count, CB_STRATEGY_GET_TICK(self.on_stra_get_tick))\n\n    def sel_save_user_data(self, id:int, key:str, val:str):\n        '''\n        保存用户数据\n        @id         策略id\n        @key        数据名\n        @val        数据值\n        '''\n        self.api.sel_save_userdata(id, bytes(key, encoding = \"utf8\"), bytes(val, encoding = \"utf8\"))\n\n    def sel_load_user_data(self, id:int, key:str, defVal:str  = \"\"):\n        '''\n        加载用户数据\n        @id         策略id\n        @key        数据名\n        @defVal     默认值\n        '''\n        ret = self.api.sel_load_userdata(id, bytes(key, encoding = \"utf8\"), bytes(defVal, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def sel_get_all_position(self, id:int):\n        '''\n        获取全部持仓\n        @id     策略id\n        '''\n        return self.api.sel_get_all_position(id, CB_STRATEGY_GET_POSITION(self.on_stra_get_position))\n\n    def sel_get_position(self, id:int, stdCode:str, usertag:str = \"\"):\n        '''\n        获取持仓\n        @id     策略id\n        @stdCode   合约代码\n        @usertag    进场标记，如果为空则获取该合约全部持仓\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.sel_get_position(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\"))\n\n    def sel_get_price(self, stdCode:str):\n        '''\n        @stdCode   合约代码\n        @return 指定合约的最新价格 \n        '''\n        return self.api.sel_get_price(bytes(stdCode, encoding = \"utf8\"))\n\n    def sel_set_position(self, id:int, stdCode:str, qty:float, usertag:str = \"\"):\n        '''\n        设置目标仓位\n        @id     策略id\n        @stdCode   合约代码\n        @qty    目标仓位，正为多，负为空\n        '''\n        self.api.sel_set_position(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"))\n\n    def sel_get_date(self):\n        '''\n        获取当前日期\n        @return    当前日期 \n        '''\n        return self.api.sel_get_date()\n\n    def sel_get_time(self):\n        '''\n        获取当前时间\n        @return    当前时间 \n        '''\n        return self.api.sel_get_time()\n\n    def sel_log_text(self, id:int, message:str):\n        '''\n        日志输出\n        @id         策略ID\n        @message    日志内容\n        '''\n        self.api.sel_log_text(id, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'))\n\n    def sel_sub_ticks(self, id:int, stdCode:str):\n        '''\n        订阅行情\n        @id         策略id\n        @stdCode    品种代码\n        '''\n        self.api.sel_sub_ticks(id, bytes(stdCode, encoding = \"utf8\"))\n\n    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n    '''HFT接口'''\n    def hft_get_bars(self, id:int, stdCode:str, period:str, count:int):\n        '''\n        读取K线\n        @id     策略id\n        @stdCode   合约代码\n        @period 周期，如m1/m3/d1等\n        @count  条数\n        '''\n        return self.api.hft_get_bars(id, bytes(stdCode, encoding = \"utf8\"), bytes(period, encoding = \"utf8\"), count, CB_STRATEGY_GET_BAR(self.on_stra_get_bar))\n\n    def hft_get_ticks(self, id:int, stdCode:str, count:int):\n        '''\n        读取Tick\n        @id     策略id\n        @stdCode   合约代码\n        @count  条数\n        '''\n        return self.api.hft_get_ticks(id, bytes(stdCode, encoding = \"utf8\"), count, CB_STRATEGY_GET_TICK(self.on_stra_get_tick))\n\n    def hft_get_ordque(self, id:int, stdCode:str, count:int):\n        '''\n        读取委托队列\n        @id        策略id\n        @stdCode   合约代码\n        @count     条数\n        '''\n        return self.api.hft_get_ordque(id, bytes(stdCode, encoding = \"utf8\"), count, CB_HFTSTRA_GET_ORDQUE(self.on_hftstra_order_queue))\n\n    def hft_get_orddtl(self, id:int, stdCode:str, count:int):\n        '''\n        读取逐笔委托\n        @id        策略id\n        @stdCode   合约代码\n        @count     条数\n        '''\n        return self.api.hft_get_orddtl(id, bytes(stdCode, encoding = \"utf8\"), count, CB_HFTSTRA_GET_ORDDTL(self.on_hftstra_order_queue))\n\n    def hft_get_trans(self, id:int, stdCode:str, count:int):\n        '''\n        读取逐笔成交\n        @id        策略id\n        @stdCode   合约代码\n        @count     条数\n        '''\n        return self.api.hft_get_trans(id, bytes(stdCode, encoding = \"utf8\"), count, CB_HFTSTRA_GET_TRANS(self.on_hftstra_order_queue))\n\n    def hft_save_user_data(self, id:int, key:str, val:str):\n        '''\n        保存用户数据\n        @id         策略id\n        @key        数据名\n        @val        数据值\n        '''\n        self.api.hft_save_userdata(id, bytes(key, encoding = \"utf8\"), bytes(val, encoding = \"utf8\"))\n\n    def hft_load_user_data(self, id:int, key:str, defVal:str  = \"\"):\n        '''\n        加载用户数据\n        @id         策略id\n        @key        数据名\n        @defVal     默认值\n        '''\n        ret = self.api.hft_load_userdata(id, bytes(key, encoding = \"utf8\"), bytes(defVal, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def hft_get_position(self, id:int, stdCode:str):\n        '''\n        获取持仓\n        @id     策略id\n        @stdCode   合约代码\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.hft_get_position(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_position_profit(self, id:int, stdCode:str):\n        '''\n        获取持仓盈亏\n        @id     策略id\n        @stdCode   合约代码\n        @return 指定持仓的浮动盈亏\n        '''\n        return self.api.hft_get_position_profit(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_undone(self, id:int, stdCode:str):\n        '''\n        获取持仓\n        @id     策略id\n        @stdCode   合约代码\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.hft_get_undone(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_price(self, stdCode:str):\n        '''\n        @stdCode   合约代码\n        @return 指定合约的最新价格 \n        '''\n        return self.api.hft_get_price(bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_date(self):\n        '''\n        获取当前日期\n        @return    当前日期 \n        '''\n        return self.api.hft_get_date()\n\n    def hft_get_time(self):\n        '''\n        获取当前时间\n        @return    当前时间 \n        '''\n        return self.api.hft_get_time()\n\n    def hft_get_secs(self):\n        '''\n        获取当前时间\n        @return    当前时间 \n        '''\n        return self.api.hft_get_secs()\n\n    def hft_log_text(self, id:int, message:str):\n        '''\n        日志输出\n        @id         策略ID\n        @message    日志内容\n        '''\n        self.api.hft_log_text(id, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'))\n\n    def hft_sub_ticks(self, id:int, stdCode:str):\n        '''\n        订阅实时行情数据\n        @id         策略ID\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_ticks(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_sub_order_queue(self, id:int, stdCode:str):\n        '''\n        订阅实时委托队列数据\n        @id         策略ID\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_order_queue(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_sub_order_detail(self, id:int, stdCode:str):\n        '''\n        订阅逐笔委托数据\n        @id         策略ID\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_order_detail(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_sub_transaction(self, id:int, stdCode:str):\n        '''\n        订阅逐笔成交数据\n        @id         策略ID\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_transaction(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_cancel(self, id:int, localid:int):\n        '''\n        撤销指定订单\n        @id         策略ID\n        @localid    下单时返回的本地订单号\n        '''\n        return self.api.hft_cancel(id, localid)\n\n    def hft_cancel_all(self, id:int, stdCode:str, isBuy:bool):\n        '''\n        撤销指定品种的全部买入订单or卖出订单\n        @id         策略ID\n        @stdCode    品种代码\n        @isBuy      买入or卖出\n        '''\n        ret = self.api.hft_cancel_all(id, bytes(stdCode, encoding = \"utf8\"), isBuy)\n        return bytes.decode(ret)\n\n    def hft_buy(self, id:int, stdCode:str, price:float, qty:float, userTag:str):\n        '''\n        买入指令\n        @id         策略ID\n        @stdCode    品种代码\n        @price      买入价格, 0为市价\n        @qty        买入数量\n        '''\n        ret = self.api.hft_buy(id, bytes(stdCode, encoding = \"utf8\"), price, qty, bytes(userTag, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def hft_sell(self, id:int, stdCode:str, price:float, qty:float, userTag:str):\n        '''\n        卖出指令\n        @id         策略ID\n        @stdCode    品种代码\n        @price      卖出价格, 0为市价\n        @qty        卖出数量\n        '''\n        ret = self.api.hft_sell(id, bytes(stdCode, encoding = \"utf8\"), price, qty, bytes(userTag, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def hft_step(self, id:int):\n        '''\n        单步执行\n        @id         策略id\n        '''\n        self.api.hft_step(id)\n\n\n    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n    '''本地撮合接口'''\n    def init_cta_mocker(self, name:str, slippage:int = 0, hook:bool = False, persistData:bool = True) -> int:\n        '''\n        创建策略环境\n        @name      策略名称\n        @return    系统内策略ID \n        '''\n        return self.api.init_cta_mocker(bytes(name, encoding = \"utf8\"), slippage, hook, persistData)\n\n    def init_hft_mocker(self, name:str, hook:bool = False) -> int:\n        '''\n        创建策略环境\n        @name      策略名称\n        @return    系统内策略ID \n        '''\n        return self.api.init_hft_mocker(bytes(name, encoding = \"utf8\"), hook)\n\n    def init_sel_mocker(self, name:str, date:int, time:int, period:str, trdtpl:str = \"CHINA\", session:str = \"TRADING\", slippage:int = 0) -> int:\n        '''\n        创建策略环境\n        @name      策略名称\n        @return    系统内策略ID \n        '''\n        return self.api.init_sel_mocker(bytes(name, encoding = \"utf8\"), date, time, \n            bytes(period, encoding = \"utf8\"), bytes(trdtpl, encoding = \"utf8\"), bytes(session, encoding = \"utf8\"), slippage)"
  },
  {
    "path": "wtpy/wrapper/WtDtHelper.py",
    "content": "from ctypes import cdll, CFUNCTYPE, c_char_p, c_void_p, c_bool, POINTER, c_int, c_uint, c_uint64\nfrom wtpy.WtCoreDefs import WTSTickStruct, WTSBarStruct, BarList, TickList\nfrom wtpy.SessionMgr import SessionInfo\nfrom wtpy.wrapper.PlatformHelper import PlatformHelper as ph\nfrom wtpy.WtUtilDefs import singleton\nimport os\n\nCB_DTHELPER_LOG = CFUNCTYPE(c_void_p,  c_char_p)\nCB_DTHELPER_TICK = CFUNCTYPE(c_void_p,  POINTER(WTSTickStruct), c_uint, c_bool)\nCB_DTHELPER_BAR = CFUNCTYPE(c_void_p,  POINTER(WTSBarStruct), c_uint, c_bool)\n\nCB_DTHELPER_COUNT = CFUNCTYPE(c_void_p,  c_uint)\n\nCB_DTHELPER_BAR_GETTER = CFUNCTYPE(c_bool, POINTER(WTSBarStruct), c_int)\nCB_DTHELPER_TICK_GETTER = CFUNCTYPE(c_bool, POINTER(WTSTickStruct), c_int)\n\ndef on_log_output(message:str):\n    message = bytes.decode(message, 'gbk')\n    print(message)\n\ncb_dthelper_log = CB_DTHELPER_LOG(on_log_output)\n\n@singleton\nclass WtDataHelper:\n    '''\n    Wt平台数据组件C接口底层对接模块\n    '''\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n\n    # 构造函数，传入动态库名\n    def __init__(self):\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtDtHelper\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n        \n        self.cb_dthelper_log = CB_DTHELPER_LOG(on_log_output)\n        self.api.resample_bars.argtypes = [c_char_p, CB_DTHELPER_BAR, CB_DTHELPER_COUNT, c_uint64, c_uint64, c_char_p, c_uint, c_char_p, CB_DTHELPER_LOG]\n\n    def on_log_output(message:str):\n        message = bytes.decode(message, 'gbk')\n        print(message)\n\n    def dump_bars(self, binFolder:str, csvFolder:str, strFilter:str=\"\"):\n        '''\n        将目录下的.dsb格式的历史K线数据导出为.csv格式\\n\n        @binFolder  .dsb文件存储目录\\n\n        @csvFolder  .csv文件的输出目录\\n\n        @strFilter  代码过滤器(暂未启用)\n        '''\n        self.api.dump_bars(bytes(binFolder, encoding=\"utf8\"), bytes(csvFolder, encoding=\"utf8\"), bytes(strFilter, encoding=\"utf8\"), self.cb_dthelper_log)\n\n    def dump_ticks(self, binFolder: str, csvFolder: str, strFilter: str=\"\"):\n        '''\n        将目录下的.dsb格式的历史Tik数据导出为.csv格式\\n\n        @binFolder  .dsb文件存储目录\\n\n        @csvFolder  .csv文件的输出目录\\n\n        @strFilter  代码过滤器(暂未启用)\n        '''\n        self.api.dump_ticks(bytes(binFolder, encoding=\"utf8\"), bytes(csvFolder, encoding=\"utf8\"), bytes(strFilter, encoding=\"utf8\"), self.cb_dthelper_log)\n\n    def trans_csv_bars(self, csvFolder: str, binFolder: str, period: str):\n        '''\n        将目录下的.csv格式的历史K线数据转成.dsb格式\\n\n        @csvFolder  .csv文件的输出目录\\n\n        @binFolder  .dsb文件存储目录\\n\n        @period     K线周期，m1-1分钟线，m5-5分钟线，d-日线\n        '''\n        self.api.trans_csv_bars(bytes(csvFolder, encoding=\"utf8\"), bytes(binFolder, encoding=\"utf8\"), bytes(period, encoding=\"utf8\"), self.cb_dthelper_log)\n\n    def read_dsb_ticks(self, tickFile: str) -> TickList:\n        '''\n        读取.dsb格式的tick数据\\n\n        @tickFile   .dsb的tick数据文件\\n\n        @return     WTSTickStruct的list\n        '''\n        tick_cache = TickList()\n        if 0 == self.api.read_dsb_ticks(bytes(tickFile, encoding=\"utf8\"), CB_DTHELPER_TICK(tick_cache.on_read_tick), CB_DTHELPER_COUNT(tick_cache.on_data_count), self.cb_dthelper_log):\n            return None\n        else:\n            return tick_cache\n\n\n    def read_dsb_bars(self, barFile: str) -> BarList:\n        '''\n        读取.dsb格式的K线数据\\n\n        @tickFile   .dsb的K线数据文件\\n\n        @return     WTSBarStruct的list\n        '''\n        bar_cache = BarList()\n        if 0 == self.api.read_dsb_bars(bytes(barFile, encoding=\"utf8\"), CB_DTHELPER_BAR(bar_cache.on_read_bar), CB_DTHELPER_COUNT(bar_cache.on_data_count), self.cb_dthelper_log):\n            return None\n        else:\n            return bar_cache\n\n    def read_dmb_ticks(self, tickFile: str) -> TickList:\n        '''\n        读取.dmb格式的tick数据\\n\n        @tickFile   .dmb的tick数据文件\\n\n        @return     WTSTickStruct的list\n        '''\n        tick_cache = TickList()\n        if 0 == self.api.read_dmb_ticks(bytes(tickFile, encoding=\"utf8\"), CB_DTHELPER_TICK(tick_cache.on_read_tick), CB_DTHELPER_COUNT(tick_cache.on_data_count), self.cb_dthelper_log):\n            return None\n        else:\n            return tick_cache\n\n    def read_dmb_bars(self, barFile: str) -> BarList:\n        '''\n        读取.dmb格式的K线数据\\n\n        @tickFile   .dmb的K线数据文件\\n\n        @return     WTSBarStruct的list\n        '''\n        bar_cache = BarList()\n        if 0 == self.api.read_dmb_bars(bytes(barFile, encoding=\"utf8\"), CB_DTHELPER_BAR(bar_cache.on_read_bar), CB_DTHELPER_COUNT(bar_cache.on_data_count), self.cb_dthelper_log):\n            return None\n        else:\n            return bar_cache\n\n    def trans_bars(self, barFile:str, getter, count:int, period:str) -> bool:\n        '''\n        将K线转储到dsb文件中\\n\n        @barFile    要存储的文件路径\\n\n        @getter     获取bar的回调函数\\n\n        @count      一共要写入的数据条数\\n\n        @period     周期，m1/m5/d\n        '''\n        cb = CB_DTHELPER_BAR_GETTER(getter)\n        return self.api.trans_bars(bytes(barFile, encoding=\"utf8\"), cb, count, bytes(period, encoding=\"utf8\"), self.cb_dthelper_log)\n\n    def trans_ticks(self, tickFile:str, getter, count:int) -> bool:\n        '''\n        将Tick数据转储到dsb文件中\\n\n        @tickFile   要存储的文件路径\\n\n        @getter     获取tick的回调函数\\n\n        @count      一共要写入的数据条数\n        '''\n        cb = CB_DTHELPER_TICK_GETTER(getter)\n        return self.api.trans_ticks(bytes(tickFile, encoding=\"utf8\"), cb, count, self.cb_dthelper_log)\n\n    def resample_bars(self, barFile:str, period:str, times:int, fromTime:int, endTime:int, sessInfo:SessionInfo) -> BarList:\n        '''\n        重采样K线\\n\n        @barFile    dsb格式的K线数据文件\\n\n        @period     基础K线周期，m1/m5/d\\n\n        @times      重采样倍数，如利用m1生成m3数据时，times为3\\n\n        @fromTime   开始时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMMSS\\n\n        @endTime    结束时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMMSS\\n\n        @sessInfo   交易时间模板\n        '''\n        bar_cache = BarList()\n        if 0 == self.api.resample_bars(bytes(barFile, encoding=\"utf8\"), CB_DTHELPER_BAR(bar_cache.on_read_bar), CB_DTHELPER_COUNT(bar_cache.on_data_count), \n                fromTime, endTime, bytes(period,'utf8'), times, bytes(sessInfo.toString(),'utf8'), self.cb_dthelper_log):\n            return None\n        else:\n            return bar_cache"
  },
  {
    "path": "wtpy/wrapper/WtDtServoApi.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2021-07-27 09:53:43\nLastEditors: Wesley\nLastEditTime: 2021-08-13 15:34:36\n'''\nfrom ctypes import cdll, CFUNCTYPE, c_char_p, c_void_p, c_bool, POINTER, c_uint64, c_uint32\nfrom wtpy.WtCoreDefs import BarList, TickList, WTSBarStruct, WTSTickStruct\nfrom wtpy.wrapper.PlatformHelper import PlatformHelper as ph\nfrom wtpy.WtUtilDefs import singleton\n\nimport os\n\nCB_GET_BAR = CFUNCTYPE(c_void_p,  POINTER(WTSBarStruct), c_uint32, c_bool)\nCB_GET_TICK = CFUNCTYPE(c_void_p,  POINTER(WTSTickStruct), c_uint32, c_bool)\n\n@singleton\nclass WtDtServoApi:\n    '''\n    Wt平台数据组件C接口底层对接模块\n    '''\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n\n    # 构造函数，传入动态库名\n    def __init__(self):\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtDtServo\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n\n        self.api.get_version.restype = c_char_p\n        self.ver = bytes.decode(self.api.get_version())\n\n        self.api.get_bars_by_range.argtypes = [c_char_p, c_char_p, c_uint64, c_uint64, CB_GET_BAR]\n        self.api.get_ticks_by_range.argtypes = [c_char_p, c_uint64, c_uint64, CB_GET_TICK]\n\n        self.api.get_bars_by_count.argtypes = [c_char_p, c_char_p, c_uint32, c_uint64, CB_GET_BAR]\n        self.api.get_ticks_by_count.argtypes = [c_char_p, c_uint32, c_uint64, CB_GET_TICK]\n\n    def initialize(self, cfgfile:str, isFile:bool):\n        self.api.initialize(bytes(cfgfile, encoding = \"utf8\"), isFile)\n\n    def get_bars(self, stdCode:str, period:str, fromTime:int = None, dataCount:int = None, endTime:int = 0) -> BarList:\n        '''\n        重采样K线\\n\n        @stdCode    标准合约代码\\n\n        @period     基础K线周期，m1/m5/d\\n\n        @fromTime   开始时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMM\\n\n        @endTime    结束时间，日线数据格式yyyymmdd，分钟线数据为格式为yyyymmddHHMM，为0则读取到最后一条\n        '''\n        bar_cache = BarList()\n        if fromTime is not None:\n            ret = self.api.get_bars_by_range(bytes(stdCode, encoding=\"utf8\"), bytes(period,'utf8'), fromTime, endTime, CB_GET_BAR(bar_cache.on_read_bar))\n        else:\n            ret = self.api.get_bars_by_count(bytes(stdCode, encoding=\"utf8\"), bytes(period,'utf8'), dataCount, endTime, CB_GET_BAR(bar_cache.on_read_bar))\n\n        if ret == 0:\n            return None\n        else:\n            return bar_cache\n\n    def get_ticks(self, stdCode:str, fromTime:int = None, dataCount:int = None, endTime:int = 0) -> TickList:\n        '''\n        重采样K线\\n\n        @stdCode    标准合约代码\\n\n        @fromTime   开始时间，格式为yyyymmddHHMM\\n\n        @endTime    结束时间，格式为yyyymmddHHMM，为0则读取到最后一条\n        '''\n        tick_cache = TickList()\n        if fromTime is not None:\n            ret = self.api.get_ticks_by_range(bytes(stdCode, encoding=\"utf8\"), fromTime, endTime, CB_GET_TICK(tick_cache.on_read_tick))\n        else:\n            ret = self.api.get_ticks_by_count(bytes(stdCode, encoding=\"utf8\"), dataCount, endTime, CB_GET_TICK(tick_cache.on_read_tick))\n\n        if ret == 0:\n            return None\n        else:\n            return tick_cache"
  },
  {
    "path": "wtpy/wrapper/WtDtWrapper.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2021-07-27 09:53:43\nLastEditors: Wesley\nLastEditTime: 2021-08-13 15:26:16\n'''\nfrom ctypes import cdll, c_char_p, c_bool, POINTER\nfrom .PlatformHelper import PlatformHelper as ph\nfrom wtpy.WtUtilDefs import singleton\nfrom wtpy.WtCoreDefs import WTSTickStruct, CB_PARSER_EVENT, CB_PARSER_SUBCMD\nfrom wtpy.WtCoreDefs import EVENT_PARSER_CONNECT, EVENT_PARSER_DISCONNECT, EVENT_PARSER_INIT, EVENT_PARSER_RELEASE\nimport os\n\n# Python对接C接口的库\n@singleton\nclass WtDtWrapper:\n    '''\n    Wt平台数据组件C接口底层对接模块\n    '''\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n    \n    # 构造函数，传入动态库名\n    def __init__(self):\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtDtPorter\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n        self.api.get_version.restype = c_char_p\n        self.ver = bytes.decode(self.api.get_version())\n\n        self.api.create_ext_parser.restype = c_bool\n        self.api.create_ext_parser.argtypes = [c_char_p]\n\n    def run_datakit(self):\n        '''\n        启动数据组件\n        '''\n        self.api.start()\n\n    def write_log(self, level, message:str, catName:str = \"\"):\n        '''\n        向组件输出日志\n        '''\n        self.api.write_log(level, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'), bytes(catName, encoding = \"utf8\"))\n\n    def initialize(self, cfgfile:str = \"dtcfg.json\", logprofile:str = \"logcfgdt.json\"):\n        '''\n        C接口初始化\n        '''\n        try:\n            self.api.initialize(bytes(cfgfile, encoding = \"utf8\"), bytes(logprofile, encoding = \"utf8\"))\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader datakit initialzied，version：%s\" % (self.ver))\n\n    def create_extended_parser(self, id:str) -> bool:\n        return self.api.create_ext_parser(bytes(id, encoding = \"utf8\"))\n\n    def push_quote_from_exetended_parser(self, id:str, newTick:POINTER(WTSTickStruct), bNeedSlice:bool = True):\n        return self.api.parser_push_quote(bytes(id, encoding = \"utf8\"), newTick, bNeedSlice)\n\n    def register_extended_module_callbacks(self,):\n        self.cb_parser_event = CB_PARSER_EVENT(self.on_parser_event)\n        self.cb_parser_subcmd = CB_PARSER_SUBCMD(self.on_parser_sub)\n\n        self.api.register_parser_callbacks(self.cb_parser_event, self.cb_parser_subcmd)\n        self.api.register_exec_callbacks(self.cb_executer_init, self.cb_executer_cmd)\n\n    def on_parser_event(self, evtId:int, id:str):\n        id = bytes.decode(id)\n        engine = self._engine\n        parser = engine.get_extended_parser(id)\n        if parser is None:\n            return\n        \n        if evtId == EVENT_PARSER_INIT:\n            parser.init(engine)\n        elif evtId == EVENT_PARSER_CONNECT:\n            parser.connect()\n        elif evtId == EVENT_PARSER_DISCONNECT:\n            parser.disconnect()\n        elif evtId == EVENT_PARSER_RELEASE:\n            parser.release()\n\n    def on_parser_sub(self, id:str, fullCode:str, isForSub:bool):\n        id = bytes.decode(id)\n        engine = self._engine\n        parser = engine.get_extended_parser(id)\n        if parser is None:\n            return\n        fullCode = bytes.decode(fullCode)\n        if isForSub:\n            parser.subscribe(fullCode)\n        else:\n            parser.unsubscribe(fullCode)\n"
  },
  {
    "path": "wtpy/wrapper/WtExecApi.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2021-07-27 09:53:43\nLastEditors: Wesley\nLastEditTime: 2021-08-13 15:35:25\n'''\nfrom ctypes import cdll, c_char_p\nfrom .PlatformHelper import PlatformHelper as ph\nfrom wtpy.WtUtilDefs import singleton\nimport os\n\n@singleton\nclass WtExecApi:\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n\n    def __init__(self):\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtExecMon\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n\n        self.api.get_version.restype = c_char_p\n        self.ver = bytes.decode(self.api.get_version())\n\n    def run(self):\n        self.api.run_exec()\n\n    def release(self):\n        self.api.release_exec()\n\n    def write_log(self, level:int, message:str, catName:str = \"\"):\n        self.api.write_log(level, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'), bytes(catName, encoding = \"utf8\"))\n\n    def config(self, cfgfile:str = 'cfgexec.json', isFile:bool = True):\n        self.api.config_exec(bytes(cfgfile, encoding = \"utf8\"), isFile)\n\n    def initialize(self, logCfg:str = \"logcfgexec.json\", isFile:bool = True):\n        '''\n        C接口初始化\n        '''\n        self.api.init_exec(bytes(logCfg, encoding = \"utf8\"), isFile)\n        self.write_log(102, \"WonderTrader independent execution framework initialzied，version：%s\" % (self.ver))\n\n    def set_position(self, stdCode:str, target:float):\n        self.api.set_position(bytes(stdCode, encoding = \"utf8\"), target)\n"
  },
  {
    "path": "wtpy/wrapper/WtMQWrapper.py",
    "content": "'''\nDescripttion: Automatically generated file comment\nversion: \nAuthor: Wesley\nDate: 2021-07-27 09:53:43\nLastEditors: Wesley\nLastEditTime: 2021-08-13 15:35:07\n'''\nfrom ctypes import c_char, cdll, CFUNCTYPE, c_uint32, c_bool, c_void_p, c_char_p, c_ulong\nfrom .PlatformHelper import PlatformHelper as ph\nfrom wtpy.WtUtilDefs import singleton\nimport os\n\nCB_ON_MSG = CFUNCTYPE(c_void_p,  c_uint32, c_char_p, c_char_p, c_uint32)\nCB_ON_LOG = CFUNCTYPE(c_void_p,  c_uint32, c_char_p, c_bool)\n\n# Python对接C接口的库\n@singleton\nclass WtMQWrapper:\n    '''\n    Wt平台数据组件C接口底层对接模块\n    '''\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n    \n    # 构造函数，传入动态库名\n    def __init__(self, mgr):\n        self._mgr = mgr\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtMsgQue\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n\n        self._cb_log = CB_ON_LOG(self.on_mq_log)\n        self.api.regiter_callbacks(self._cb_log)\n\n        self.api.create_server.argtypes = [c_char_p]\n        self.api.create_server.restype = c_ulong\n\n    def on_mq_log(self, id:int, message:str, bServer:bool):\n        print(message.decode())\n\n    def create_server(self, url:str):\n        return self.api.create_server(bytes(url, 'utf-8'))\n\n    def destroy_server(self, id:int):\n        self.api.destroy_server(id)\n\n    def publish_message(self, id:int, topic:str, message:str):\n        message = bytes(message, 'utf-8')\n        self.api.publish_message(id, bytes(topic, 'utf-8'), message, len(message))\n\n    def create_client(self, url:str, cbMsg:CB_ON_MSG):\n        return self.api.create_client(bytes(url, 'utf-8'), cbMsg)\n\n    def destroy_client(self, id:int):\n        self.api.destroy_client(id)\n\n    def subcribe_topic(self, id:int, topic:str):\n        self.api.subscribe_topic(id, bytes(topic, 'utf-8'))\n\n    def start_client(self, id:int):\n        self.api.start_client(id)\n\n"
  },
  {
    "path": "wtpy/wrapper/WtWrapper.py",
    "content": "from ctypes import cdll, c_char_p, c_bool, c_ulong, c_uint64, c_double, POINTER, sizeof, addressof\nfrom wtpy.WtCoreDefs import CB_EXECUTER_CMD, CB_EXECUTER_INIT, CB_PARSER_EVENT, CB_PARSER_SUBCMD\nfrom wtpy.WtCoreDefs import CB_STRATEGY_INIT, CB_STRATEGY_TICK, CB_STRATEGY_CALC, CB_STRATEGY_BAR, CB_STRATEGY_GET_BAR, CB_STRATEGY_GET_TICK, CB_STRATEGY_GET_POSITION\nfrom wtpy.WtCoreDefs import EVENT_PARSER_CONNECT, EVENT_PARSER_DISCONNECT, EVENT_PARSER_INIT, EVENT_PARSER_RELEASE\nfrom wtpy.WtCoreDefs import CB_HFTSTRA_CHNL_EVT, CB_HFTSTRA_ENTRUST, CB_HFTSTRA_ORD, CB_HFTSTRA_TRD, CB_SESSION_EVENT\nfrom wtpy.WtCoreDefs import CB_HFTSTRA_ORDQUE, CB_HFTSTRA_ORDDTL, CB_HFTSTRA_TRANS, CB_HFTSTRA_GET_ORDQUE, CB_HFTSTRA_GET_ORDDTL, CB_HFTSTRA_GET_TRANS\nfrom wtpy.WtCoreDefs import CHNL_EVENT_READY, CHNL_EVENT_LOST, CB_ENGINE_EVENT\nfrom wtpy.WtCoreDefs import EVENT_ENGINE_INIT, EVENT_SESSION_BEGIN, EVENT_SESSION_END, EVENT_ENGINE_SCHDL\nfrom wtpy.WtCoreDefs import WTSTickStruct, WTSBarStruct, WTSOrdQueStruct, WTSOrdDtlStruct, WTSTransStruct\nfrom wtpy.WtUtilDefs import singleton\nfrom .PlatformHelper import PlatformHelper as ph\nimport os\n\n# Python对接C接口的库\n@singleton\nclass WtWrapper:\n    '''\n    Wt平台C接口底层对接模块\n    '''\n\n    # api可以作为公共变量\n    api = None\n    ver = \"Unknown\"\n    \n    # 构造函数，传入动态库名\n    def __init__(self, engine):\n        self._engine = engine\n        paths = os.path.split(__file__)\n        dllname = ph.getModule(\"WtPorter\")\n        a = (paths[:-1] + (dllname,))\n        _path = os.path.join(*a)\n        self.api = cdll.LoadLibrary(_path)\n        \n        self.api.get_version.restype = c_char_p\n        self.api.cta_get_last_entertime.restype = c_uint64\n        self.api.cta_get_first_entertime.restype = c_uint64\n        self.api.cta_get_detail_entertime.restype = c_uint64\n        self.api.cta_enter_long.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_enter_short.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_exit_long.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_exit_short.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.api.cta_set_position.argtypes = [c_ulong, c_char_p, c_double, c_char_p, c_double, c_double]\n        self.ver = bytes.decode(self.api.get_version())\n\n        self.api.cta_save_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.cta_load_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.cta_load_userdata.restype = c_char_p\n\n        self.api.cta_get_position.restype = c_double\n        self.api.cta_get_position_profit.restype = c_double\n        self.api.cta_get_position_avgpx.restype = c_double\n        self.api.cta_get_detail_cost.restype = c_double\n        self.api.cta_get_detail_profit.restype = c_double\n        self.api.cta_get_price.restype = c_double\n        self.api.cta_get_fund_data.restype = c_double\n\n        self.api.sel_save_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.sel_load_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.sel_load_userdata.restype = c_char_p\n        self.api.sel_get_position.restype = c_double\n        self.api.sel_set_position.argtypes = [c_ulong, c_char_p, c_double, c_char_p]\n        self.api.sel_get_price.restype = c_double\n\n        self.api.hft_save_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.hft_load_userdata.argtypes = [c_ulong, c_char_p, c_char_p]\n        self.api.hft_load_userdata.restype = c_char_p\n        self.api.hft_get_position.restype = c_double\n        self.api.hft_get_position_profit.restype = c_double\n        self.api.hft_get_undone.restype = c_double\n        self.api.hft_get_price.restype = c_double\n\n        self.api.hft_buy.restype = c_char_p\n        self.api.hft_buy.argtypes = [c_ulong, c_char_p, c_double, c_double, c_char_p]\n        self.api.hft_sell.restype = c_char_p\n        self.api.hft_sell.argtypes = [c_ulong, c_char_p, c_double, c_double, c_char_p]\n        self.api.hft_cancel_all.restype = c_char_p\n\n        self.api.create_ext_parser.restype = c_bool\n        self.api.create_ext_parser.argtypes = [c_char_p]\n\n    def on_engine_event(self, evtid:int, evtDate:int, evtTime:int):\n        engine = self._engine\n        if evtid == EVENT_ENGINE_INIT:\n            engine.on_init()\n        elif evtid == EVENT_ENGINE_SCHDL:\n            engine.on_schedule(evtDate, evtTime)\n        elif evtid == EVENT_SESSION_BEGIN:\n            engine.on_session_begin(evtDate)\n        elif evtid == EVENT_SESSION_END:\n            engine.on_session_end(evtDate)\n        return\n\n    #回调函数\n    def on_stra_init(self, id:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_init()\n        return\n\n    def on_session_event(self, id:int, udate:int, isBegin:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            if isBegin:\n                ctx.on_session_begin(udate)\n            else:\n                ctx.on_session_end(udate)\n        return\n\n    def on_stra_tick(self, id:int, stdCode:str, newTick:POINTER(WTSTickStruct)):\n        engine = self._engine\n        ctx = engine.get_context(id)\n\n        realTick = newTick.contents\n        tick = dict()\n        tick[\"time\"] = realTick.action_date * 1000000000 + realTick.action_time\n        tick[\"open\"] = realTick.open\n        tick[\"high\"] = realTick.high\n        tick[\"low\"] = realTick.low\n        tick[\"price\"] = realTick.price\n\n        tick[\"bidprice\"] = list()\n        tick[\"bidqty\"] = list()\n        tick[\"askprice\"] = list()\n        tick[\"askqty\"] = list()\n\n        tick[\"upper_limit\"] = realTick.total_volume\n        tick[\"lower_limit\"] = realTick.lower_limit\n\n        tick[\"total_volume\"] = realTick.total_volume\n        tick[\"volume\"] = realTick.volume\n        tick[\"total_turnover\"] = realTick.total_turnover\n        tick[\"turn_over\"] = realTick.turn_over\n        tick[\"open_interest\"] = realTick.open_interest\n        tick[\"diff_interest\"] = realTick.diff_interest\n\n        for i in range(10):\n            if realTick.bid_qty[i] != 0:\n                tick[\"bidprice\"].append(realTick.bid_prices[i])\n                tick[\"bidqty\"].append(realTick.bid_qty[i])\n\n            if realTick.ask_qty[i] != 0:\n                tick[\"askprice\"].append(realTick.ask_prices[i])\n                tick[\"askqty\"].append(realTick.ask_qty[i])\n\n        if ctx is not None:\n            ctx.on_tick(bytes.decode(stdCode), tick)\n        return\n\n    def on_stra_calc(self, id:int, curDate:int, curTime:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_calculate()\n        return\n\n    def on_stra_bar(self, id:int, stdCode:str, period:str, newBar:POINTER(WTSBarStruct)):\n        period = bytes.decode(period)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newBar = newBar.contents\n        curBar = dict()\n        if period[0] == 'd':\n            curBar[\"time\"] = newBar.date\n        else:\n            curBar[\"time\"] = 1990*100000000 + newBar.time\n        curBar[\"bartime\"] = curBar[\"time\"]\n        curBar[\"open\"] = newBar.open\n        curBar[\"high\"] = newBar.high\n        curBar[\"low\"] = newBar.low\n        curBar[\"close\"] = newBar.close\n        curBar[\"volume\"] = newBar.vol\n        if ctx is not None:\n            ctx.on_bar(bytes.decode(stdCode), period, curBar)\n        return\n\n\n    def on_stra_get_bar(self, id:int, stdCode:str, period:str, curBar:POINTER(WTSBarStruct), count:int, isLast:bool):\n        '''\n        获取K线回调，该回调函数因为是python主动发起的，需要同步执行，所以不走事件推送\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @period K线周期\\n\n        @curBar 最新一条K线\\n\n        @isLast 是否是最后一条\n        '''\n        engine = self._engine\n        ctx = engine.get_context(id)\n        period = bytes.decode(period)\n\n        bsSize = sizeof(WTSBarStruct)\n        addr = addressof(curBar.contents) # 获取内存地址\n        bars = [None]*count # 预先分配list的长度\n        for i in range(count):\n            realBar = WTSBarStruct.from_address(addr)   # 从内存中直接解析成WTSBarStruct\n            bar = dict()\n            if period[0] == 'd':\n                bar[\"time\"] = realBar.date\n            else:\n                bar[\"time\"] = 1990*100000000 + realBar.time\n            bar[\"bartime\"] = bar[\"time\"]\n            bar[\"open\"] = realBar.open\n            bar[\"high\"] = realBar.high\n            bar[\"low\"] = realBar.low\n            bar[\"close\"] = realBar.close\n            bar[\"volume\"] = realBar.vol\n            bars[i] = bar\n            addr += bsSize\n\n        if ctx is not None:\n            ctx.on_getbars(bytes.decode(stdCode), period, bars, isLast)\n        return\n\n    def on_stra_get_tick(self, id:int, stdCode:str, curTick:POINTER(WTSTickStruct), count:int, isLast:bool):\n        '''\n        获取Tick回调，该回调函数因为是python主动发起的，需要同步执行，所以不走事件推送\\n\n        @id         策略id\\n\n        @stdCode       合约代码\\n\n        @curTick    最新一笔Tick\\n\n        @isLast     是否是最后一条\n        '''\n        engine = self._engine\n        ctx = engine.get_context(id)\n\n        tsSize = sizeof(WTSTickStruct)\n        addr = addressof(curTick.contents) # 获取内存地址\n        ticks = [None]*count # 预先分配list的长度\n        for idx in range(count):\n            realTick = WTSTickStruct.from_address(addr)   # 从内存中直接解析成WTSTickStruct\n            tick = dict()\n            tick[\"time\"] = realTick.action_date * 1000000000 + realTick.action_time\n            tick[\"open\"] = realTick.open\n            tick[\"high\"] = realTick.high\n            tick[\"low\"] = realTick.low\n            tick[\"price\"] = realTick.price\n\n            tick[\"bidprice\"] = list()\n            tick[\"bidqty\"] = list()\n            tick[\"askprice\"] = list()\n            tick[\"askqty\"] = list()\n            \n            tick[\"total_volume\"] = realTick.total_volume\n            tick[\"volume\"] = realTick.volume\n            tick[\"total_turnover\"] = realTick.total_turnover\n            tick[\"turn_over\"] = realTick.turn_over\n            tick[\"open_interest\"] = realTick.open_interest\n            tick[\"diff_interest\"] = realTick.diff_interest\n\n            for i in range(10):\n                if realTick.bid_qty[i] != 0:\n                    tick[\"bidprice\"].append(realTick.bid_prices[i])\n                    tick[\"bidqty\"].append(realTick.bid_qty[i])\n\n                if realTick.ask_qty[i] != 0:\n                    tick[\"askprice\"].append(realTick.ask_prices[i])\n                    tick[\"askqty\"].append(realTick.ask_qty[i])\n            ticks[idx] = tick\n            addr += tsSize\n\n        if ctx is not None:\n            ctx.on_getticks(bytes.decode(stdCode), ticks, isLast)\n        return\n\n    def on_stra_get_position(self, id:int, stdCode:str, qty:float, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        if ctx is not None:\n            ctx.on_getpositions(bytes.decode(stdCode), qty, isLast)\n\n    def on_hftstra_channel_evt(self, id:int, trader:str, evtid:int):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        \n        if evtid == CHNL_EVENT_READY:\n            ctx.on_channel_ready()\n        elif evtid == CHNL_EVENT_LOST:\n            ctx.on_channel_lost()\n\n    def on_hftstra_order(self, id:int, localid:int, stdCode:str, isBuy:bool, totalQty:float, leftQty:float, price:float, isCanceled:bool, userTag:str):\n        stdCode = bytes.decode(stdCode)\n        userTag = bytes.decode(userTag)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        ctx.on_order(localid, stdCode, isBuy, totalQty, leftQty, price, isCanceled, userTag)\n\n    def on_hftstra_trade(self, id:int, localid:int, stdCode:str, isBuy:bool, qty:float, price:float, userTag:str):\n        stdCode = bytes.decode(stdCode)\n        userTag = bytes.decode(userTag)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        ctx.on_trade(localid, stdCode, isBuy, qty, price, userTag)\n\n    def on_hftstra_entrust(self, id:int, localid:int, stdCode:str, bSucc:bool, message:str, userTag:str):\n        stdCode = bytes.decode(stdCode)\n        message = bytes.decode(message, \"gbk\")\n        userTag = bytes.decode(userTag)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        ctx.on_entrust(localid, stdCode, bSucc, message, userTag)\n\n    def on_hftstra_order_queue(self, id:int, stdCode:str, newOrdQue:POINTER(WTSOrdQueStruct)):\n        stdCode = bytes.decode(stdCode)\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newOrdQue = newOrdQue.contents\n        curOrdQue = dict()\n        curOrdQue[\"time\"] = newOrdQue.action_date * 1000000000 + newOrdQue.action_time\n        curOrdQue[\"side\"] = newOrdQue.side\n        curOrdQue[\"price\"] = newOrdQue.price\n        curOrdQue[\"order_items\"] = newOrdQue.order_items\n        curOrdQue[\"qsize\"] = newOrdQue.qsize\n        curOrdQue[\"volumes\"] = list()\n\n        for i in range(50):\n            if newOrdQue.volumes[i] == 0:\n                break\n            else:\n                curOrdQue[\"volumes\"].append(newOrdQue.volumes[i])\n        \n        if ctx is not None:\n            ctx.on_order_queue(stdCode, curOrdQue)\n\n    def on_hftstra_get_order_queue(self, id:int, stdCode:str, newOrdQue:POINTER(WTSOrdQueStruct), count:int, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        szItem = sizeof(WTSOrdQueStruct)\n        addr = addressof(newOrdQue)\n        item_list = [None]*count\n        for i in range(count):\n            realOrdQue = WTSOrdQueStruct.from_address(addr)\n            curOrdQue = dict()\n            curOrdQue[\"time\"] = realOrdQue.action_date * 1000000000 + realOrdQue.action_time\n            curOrdQue[\"side\"] = realOrdQue.side\n            curOrdQue[\"price\"] = realOrdQue.price\n            curOrdQue[\"order_items\"] = realOrdQue.order_items\n            curOrdQue[\"qsize\"] = realOrdQue.qsize\n            curOrdQue[\"volumes\"] = list()\n\n            for i in range(50):\n                if realOrdQue.volumes[i] == 0:\n                    break\n                else:\n                    curOrdQue[\"volumes\"].append(realOrdQue.volumes[i])\n\n            item_list[i] = curOrdDtl\n            addr += szItem\n            \n        if ctx is not None:\n            ctx.on_get_order_queue(bytes.decode(stdCode), item_list, isLast)\n\n    def on_hftstra_order_detail(self, id:int, stdCode:str, newOrdDtl:POINTER(WTSOrdDtlStruct)):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newOrdDtl = newOrdDtl.contents\n\n        curOrdDtl = dict()\n        curOrdDtl[\"time\"] = newOrdDtl.action_date * 1000000000 + newOrdDtl.action_time\n        curOrdDtl[\"index\"] = newOrdDtl.index\n        curOrdDtl[\"side\"] = newOrdDtl.side\n        curOrdDtl[\"price\"] = newOrdDtl.price\n        curOrdDtl[\"volume\"] = newOrdDtl.volume\n        curOrdDtl[\"otype\"] = newOrdDtl.otype\n        \n        if ctx is not None:\n            ctx.on_order_detail(stdCode, curOrdDtl)\n\n    def on_hftstra_get_order_detail(self, id:int, stdCode:str, newOrdDtl:POINTER(WTSOrdDtlStruct), count:int, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        szItem = sizeof(WTSOrdDtlStruct)\n        addr = addressof(newOrdDtl)\n        item_list = [None]*count\n        for i in range(count):\n            realOrdDtl = WTSOrdDtlStruct.from_address(addr)\n            curOrdDtl = dict()\n            curOrdDtl[\"time\"] = realOrdDtl.action_date * 1000000000 + realOrdDtl.action_time\n            curOrdDtl[\"index\"] = realOrdDtl.index\n            curOrdDtl[\"side\"] = realOrdDtl.side\n            curOrdDtl[\"price\"] = realOrdDtl.price\n            curOrdDtl[\"volume\"] = realOrdDtl.volume\n            curOrdDtl[\"otype\"] = realOrdDtl.otype\n\n            item_list[i] = curOrdDtl\n            addr += szItem\n            \n        if ctx is not None:\n            ctx.on_get_order_detail(bytes.decode(stdCode), item_list, isLast)\n\n    def on_hftstra_transaction(self, id:int, stdCode:str, newTrans:POINTER(WTSTransStruct)):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        newTrans = newTrans.contents\n\n        curTrans = dict()\n        curTrans[\"time\"] = newTrans.action_date * 1000000000 + newTrans.action_time\n        curTrans[\"index\"] = newTrans.index\n        curTrans[\"ttype\"] = newTrans.ttype\n        curTrans[\"side\"] = newTrans.side\n        curTrans[\"price\"] = newTrans.price\n        curTrans[\"volume\"] = newTrans.volume\n        curTrans[\"askorder\"] = newTrans.askorder\n        curTrans[\"bidorder\"] = newTrans.bidorder\n        \n        if ctx is not None:\n            ctx.on_transaction(stdCode, curTrans)\n        \n    def on_hftstra_get_transaction(self, d:int, stdCode:str, newTrans:POINTER(WTSTransStruct), count:int, isLast:bool):\n        engine = self._engine\n        ctx = engine.get_context(id)\n        szTrans = sizeof(WTSTransStruct)\n        addr = addressof(newTrans)\n        trans_list = [None]*count\n        for i in range(count):\n            realTrans = WTSTransStruct.from_address(addr)\n            curTrans = dict()\n            curTrans[\"time\"] = realTrans.action_date * 1000000000 + realTrans.action_time\n            curTrans[\"index\"] = realTrans.index\n            curTrans[\"ttype\"] = realTrans.ttype\n            curTrans[\"side\"] = realTrans.side\n            curTrans[\"price\"] = realTrans.price\n            curTrans[\"volume\"] = realTrans.volume\n            curTrans[\"askorder\"] = realTrans.askorder\n            curTrans[\"bidorder\"] = realTrans.bidorder\n            trans_list[i] = curTrans\n            addr += szTrans\n            \n        if ctx is not None:\n            ctx.on_get_transaction(bytes.decode(stdCode), trans_list, isLast)\n\n    def on_parser_event(self, evtId:int, id:str):\n        id = bytes.decode(id)\n        engine = self._engine\n        parser = engine.get_extended_parser(id)\n        if parser is None:\n            return\n        \n        if evtId == EVENT_PARSER_INIT:\n            parser.init(engine)\n        elif evtId == EVENT_PARSER_CONNECT:\n            parser.connect()\n        elif evtId == EVENT_PARSER_DISCONNECT:\n            parser.disconnect()\n        elif evtId == EVENT_PARSER_RELEASE:\n            parser.release()\n\n    def on_parser_sub(self, id:str, fullCode:str, isForSub:bool):\n        id = bytes.decode(id)\n        engine = self._engine\n        parser = engine.get_extended_parser(id)\n        if parser is None:\n            return\n        fullCode = bytes.decode(fullCode)\n        if isForSub:\n            parser.subscribe(fullCode)\n        else:\n            parser.unsubscribe(fullCode)\n\n    def on_executer_init(self, id:str):\n        engine = self._engine\n        executer = engine.get_extended_executer(id)\n        if executer is None:\n            return\n\n        executer.init()\n\n    def on_executer_cmd(self, id:str, stdCode:str, targetPos:float):\n        engine = self._engine\n        executer = engine.get_extended_executer(id)\n        if executer is None:\n            return\n\n        executer.set_position(stdCode, targetPos)\n\n    def write_log(self, level, message:str, catName:str = \"\"):\n        self.api.write_log(level, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'), bytes(catName, encoding = \"utf8\"))\n\n    ### 实盘和回测有差异 ###\n    def run(self):\n        self.api.run_porter(True)\n\n    def release(self):\n        self.api.release_porter()\n\n    def config(self, cfgfile:str = 'config.json', isFile:bool = True):\n        self.api.config_porter(bytes(cfgfile, encoding = \"utf8\"), isFile)\n\n    def create_extended_parser(self, id:str) -> bool:\n        return self.api.create_ext_parser(bytes(id, encoding = \"utf8\"))\n\n    def create_extended_executer(self, id:str) -> bool:\n        return self.api.create_ext_executer(bytes(id, encoding = \"utf8\"))\n\n    def push_quote_from_exetended_parser(self, id:str, newTick:POINTER(WTSTickStruct), bNeedSlice:bool = True):\n        return self.api.parser_push_quote(bytes(id, encoding = \"utf8\"), newTick, bNeedSlice)\n\n    def register_extended_module_callbacks(self,):\n        self.cb_parser_event = CB_PARSER_EVENT(self.on_parser_event)\n        self.cb_parser_subcmd = CB_PARSER_SUBCMD(self.on_parser_sub)\n        self.cb_executer_init = CB_EXECUTER_INIT(self.on_executer_init)\n        self.cb_executer_cmd = CB_EXECUTER_CMD(self.on_executer_cmd)\n\n        self.api.register_parser_callbacks(self.cb_parser_event, self.cb_parser_subcmd)\n        self.api.register_exec_callbacks(self.cb_executer_init, self.cb_executer_cmd)\n\n    ### 实盘和回测有差异 ###\n    def initialize_cta(self, logCfg:str = \"logcfg.json\", isFile:bool = True, genDir:str = 'generated'):\n        '''\n        C接口初始化\n        '''\n        self.cb_stra_init = CB_STRATEGY_INIT(self.on_stra_init)\n        self.cb_stra_tick = CB_STRATEGY_TICK(self.on_stra_tick)\n        self.cb_stra_calc = CB_STRATEGY_CALC(self.on_stra_calc)\n        self.cb_stra_bar = CB_STRATEGY_BAR(self.on_stra_bar)\n        self.cb_session_event = CB_SESSION_EVENT(self.on_session_event)\n\n        self.cb_engine_event = CB_ENGINE_EVENT(self.on_engine_event)\n        try:\n            self.api.register_evt_callback(self.cb_engine_event)\n            self.api.register_cta_callbacks(self.cb_stra_init, self.cb_stra_tick, self.cb_stra_calc, self.cb_stra_bar, self.cb_session_event)\n            self.api.init_porter(bytes(logCfg, encoding = \"utf8\"), isFile, bytes(genDir, encoding = \"utf8\"))\n            self.register_extended_module_callbacks()\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader CTA production framework initialzied，version：%s\" % (self.ver))\n\n    def initialize_hft(self, logCfg:str = \"logcfg.json\", isFile:bool = True, genDir:str = 'generated'):\n        '''\n        C接口初始化\n        '''\n        self.cb_stra_init = CB_STRATEGY_INIT(self.on_stra_init)\n        self.cb_stra_tick = CB_STRATEGY_TICK(self.on_stra_tick)\n        self.cb_stra_bar = CB_STRATEGY_BAR(self.on_stra_bar)\n        self.cb_session_event = CB_SESSION_EVENT(self.on_session_event)\n\n        self.cb_hftstra_chnl_evt = CB_HFTSTRA_CHNL_EVT(self.on_hftstra_channel_evt)\n        self.cb_hftstra_order = CB_HFTSTRA_ORD(self.on_hftstra_order)\n        self.cb_hftstra_trade = CB_HFTSTRA_TRD(self.on_hftstra_trade)\n        self.cb_hftstra_entrust = CB_HFTSTRA_ENTRUST(self.on_hftstra_entrust)\n        self.cb_hftstra_orddtl = CB_HFTSTRA_ORDDTL(self.on_hftstra_order_detail)\n        self.cb_hftstra_ordque = CB_HFTSTRA_ORDQUE(self.on_hftstra_order_queue)\n        self.cb_hftstra_trans = CB_HFTSTRA_TRANS(self.on_hftstra_transaction)\n\n        self.cb_engine_event = CB_ENGINE_EVENT(self.on_engine_event)\n        try:\n            self.api.register_evt_callback(self.cb_engine_event)\n            self.api.register_hft_callbacks(self.cb_stra_init, self.cb_stra_tick, self.cb_stra_bar, \n                self.cb_hftstra_chnl_evt, self.cb_hftstra_order, self.cb_hftstra_trade, self.cb_hftstra_entrust,\n                self.cb_hftstra_orddtl, self.cb_hftstra_ordque, self.cb_hftstra_trans, self.cb_session_event)\n            self.api.init_porter(bytes(logCfg, encoding = \"utf8\"), isFile, bytes(genDir, encoding = \"utf8\"))\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader HFT production framework initialzied，version：%s\" % (self.ver))\n\n    def initialize_sel(self, logCfg:str = \"logcfg.json\", isFile:bool = True, genDir:str = 'generated'):\n        '''\n        C接口初始化\n        '''\n        self.cb_stra_init = CB_STRATEGY_INIT(self.on_stra_init)\n        self.cb_stra_tick = CB_STRATEGY_TICK(self.on_stra_tick)\n        self.cb_stra_calc = CB_STRATEGY_CALC(self.on_stra_calc)\n        self.cb_stra_bar = CB_STRATEGY_BAR(self.on_stra_bar)\n        self.cb_session_event = CB_SESSION_EVENT(self.on_session_event)\n\n        self.cb_engine_event = CB_ENGINE_EVENT(self.on_engine_event)\n\n        try:\n            self.api.register_evt_callback(self.cb_engine_event)\n            self.api.register_sel_callbacks(self.cb_stra_init, self.cb_stra_tick, self.cb_stra_calc, self.cb_stra_bar, self.cb_session_event)\n            self.api.init_porter(bytes(logCfg, encoding = \"utf8\"), isFile, bytes(genDir, encoding = \"utf8\"))\n            self.register_extended_module_callbacks()\n        except OSError as oe:\n            print(oe)\n\n        self.write_log(102, \"WonderTrader SEL production framework initialzied，version：%s\" % (self.ver))\n\n    def cta_enter_long(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        开多\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @qty        手数，大于等于0\\n\n        '''\n        self.api.cta_enter_long(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_exit_long(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        平多\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @qty        手数，大于等于0\\n\n        '''\n        self.api.cta_exit_long(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_enter_short(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        开空\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @qty        手数，大于等于0\\n\n        '''\n        self.api.cta_enter_short(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_exit_short(self, id:int, stdCode:str, qty:float, usertag:str, limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        平空\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @qty        手数，大于等于0\\n\n        '''\n        self.api.cta_exit_short(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_get_bars(self, id:int, stdCode:str, period:str, count:int, isMain:bool):\n        '''\n        读取K线\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @period     周期，如m1/m3/d1等\\n\n        @count      条数\\n\n        @isMain     是否主K线\n        '''\n        return self.api.cta_get_bars(id, bytes(stdCode, encoding = \"utf8\"), bytes(period, encoding = \"utf8\"), count, isMain, CB_STRATEGY_GET_BAR(self.on_stra_get_bar))\n\n    def cta_get_ticks(self, id:int, stdCode:str, count:int):\n        '''\n        读取Tick\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @count      条数\\n\n        '''\n        return self.api.cta_get_ticks(id, bytes(stdCode, encoding = \"utf8\"), count, CB_STRATEGY_GET_TICK(self.on_stra_get_tick))\n\n    def cta_get_position_profit(self, id:int, stdCode:str):\n        '''\n        获取浮动盈亏\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @return     指定合约的浮动盈亏\n        '''\n        return self.api.cta_get_position_profit(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_position_avgpx(self, id:int, stdCode:str):\n        '''\n        获取持仓均价\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @return     指定合约的持仓均价\n        '''\n        return self.api.cta_get_position_avgpx(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_all_position(self, id:int):\n        '''\n        获取全部持仓\\n\n        @id     策略id\n        '''\n        return self.api.cta_get_all_position(id, CB_STRATEGY_GET_POSITION(self.on_stra_get_position))\n    \n    def cta_get_position(self, id:int, stdCode:str, usertag:str = \"\"):\n        '''\n        获取持仓\\n\n        @id     策略id\\n\n        @stdCode    合约代码\\n\n        @usertag    进场标记，如果为空则获取该合约全部持仓\\n\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.cta_get_position(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\"))\n\n    def cta_get_fund_data(self, id:int, flag:int) -> float:\n        '''\n        获取资金数据\\n\n        @id     策略id\\n\n        @flag   0-动态权益，1-总平仓盈亏，2-总浮动盈亏，3-总手续费\\n\n        @return 资金数据\n        '''\n        return self.api.cta_get_fund_data(id, flag)\n\n    def cta_get_price(self, stdCode:str) -> float:\n        '''\n        @stdCode   合约代码\\n\n        @return     指定合约的最新价格 \n        '''\n        return self.api.cta_get_price(bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_set_position(self, id:int, stdCode:str, qty:float, usertag:str = \"\", limitprice:float = 0.0, stopprice:float = 0.0):\n        '''\n        设置目标仓位\\n\n        @id         策略id\n        @stdCode    合约代码\\n\n        @qty        目标仓位，正为多，负为空\n        '''\n        self.api.cta_set_position(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"), limitprice, stopprice)\n\n    def cta_get_tdate(self) -> int:\n        '''\n        获取当前交易日\\n\n        @return    当前交易日\n        '''\n        return self.api.cta_get_tdate()\n\n    def cta_get_date(self) -> int:\n        '''\n        获取当前日期\\n\n        @return    当前日期 \n        '''\n        return self.api.cta_get_date()\n\n    def cta_get_time(self) -> int:\n        '''\n        获取当前时间\\n\n        @return    当前时间 \n        '''\n        return self.api.cta_get_time()\n\n    def cta_get_first_entertime(self, id:int, stdCode:str) -> int:\n        '''\n        获取当前持仓的首次进场时间\\n\n        @stdCode    合约代码\\n\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_first_entertime(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_last_entertime(self, id:int, stdCode:str) -> int:\n        '''\n        获取当前持仓的最后进场时间\\n\n        @stdCode    合约代码\\n\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_last_entertime(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_get_last_exittime(self, id:int, stdCode:str) -> int:\n        '''\n        获取当前持仓的最后出场时间\\n\n        @stdCode    合约代码\\n\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_last_exittime(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def cta_log_text(self, id:int, message:str):\n        '''\n        日志输出\\n\n        @id         策略ID\\n\n        @message    日志内容\n        '''\n        self.api.cta_log_text(id, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'))\n\n    def cta_get_detail_entertime(self, id:int, stdCode:str, usertag:str) -> int:\n        '''\n        获取指定标记的持仓的进场时间\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @usertag    进场标记\\n\n        @return     进场时间，格式如201907260932 \n        '''\n        return self.api.cta_get_detail_entertime(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\")) \n\n    def cta_get_detail_cost(self, id:int, stdCode:str, usertag:str) -> float:\n        '''\n        获取指定标记的持仓的开仓价\\n\n        @id         策略id\\n\n        @stdCode    合约代码\\n\n        @usertag    进场标记\\n\n        @return     开仓价 \n        '''\n        return self.api.cta_get_detail_cost(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\")) \n\n    def cta_get_detail_profit(self, id:int, stdCode:str, usertag:str, flag:int):\n        '''\n        获取指定标记的持仓的盈亏\\n\n        @id         策略id\\n\n        @stdCode       合约代码\\n\n        @usertag    进场标记\\n\n        @flag       盈亏记号，0-浮动盈亏，1-最大浮盈，2-最大亏损（负数）\\n\n        @return     盈亏 \n        '''\n        return self.api.cta_get_detail_profit(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\"), flag) \n\n    def cta_save_user_data(self, id:int, key:str, val:str):\n        '''\n        保存用户数据\\n\n        @id         策略id\\n\n        @key        数据名\\n\n        @val        数据值\n        '''\n        self.api.cta_save_userdata(id, bytes(key, encoding = \"utf8\"), bytes(val, encoding = \"utf8\"))\n\n    def cta_load_user_data(self, id:int, key:str, defVal:str  = \"\"):\n        '''\n        加载用户数据\\n\n        @id         策略id\\n\n        @key        数据名\\n\n        @defVal     默认值\n        '''\n        ret = self.api.cta_load_userdata(id, bytes(key, encoding = \"utf8\"), bytes(defVal, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def cta_sub_ticks(self, id:int, stdCode:str):\n        '''\n        订阅行情\n        @id         策略id\\n\n        @stdCode    品种代码\n        '''\n        self.api.cta_sub_ticks(id, bytes(stdCode, encoding = \"utf8\"))\n  \n    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n    '''SEL接口'''\n    def sel_get_bars(self, id:int, stdCode:str, period:str, count:int):\n        '''\n        读取K线\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @period 周期，如m1/m3/d1等\\n\n        @count  条数\n        '''\n        return self.api.sel_get_bars(id, bytes(stdCode, encoding = \"utf8\"), bytes(period, encoding = \"utf8\"), count, CB_STRATEGY_GET_BAR(self.on_stra_get_bar))\n\n    def sel_get_ticks(self, id:int, stdCode:str, count:int):\n        '''\n        读取Tick\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @count  条数\\n\n        '''\n        return self.api.sel_get_ticks(id, bytes(stdCode, encoding = \"utf8\"), count, CB_STRATEGY_GET_TICK(self.on_stra_get_tick))\n\n    def sel_save_user_data(self, id:int, key:str, val:str):\n        '''\n        保存用户数据\\n\n        @id         策略id\\n\n        @key        数据名\\n\n        @val        数据值\n        '''\n        self.api.sel_save_userdata(id, bytes(key, encoding = \"utf8\"), bytes(val, encoding = \"utf8\"))\n\n    def sel_load_user_data(self, id:int, key:str, defVal:str  = \"\"):\n        '''\n        加载用户数据\\n\n        @id         策略id\\n\n        @key        数据名\\n\n        @defVal     默认值\n        '''\n        ret = self.api.sel_load_userdata(id, bytes(key, encoding = \"utf8\"), bytes(defVal, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def sel_get_all_position(self, id:int):\n        '''\n        获取全部持仓\\n\n        @id     策略id\n        '''\n        return self.api.sel_get_all_position(id, CB_STRATEGY_GET_POSITION(self.on_stra_get_position))\n\n    def sel_get_position(self, id:int, stdCode:str, usertag:str = \"\"):\n        '''\n        获取持仓\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @usertag    进场标记，如果为空则获取该合约全部持仓\\n\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.sel_get_position(id, bytes(stdCode, encoding = \"utf8\"), bytes(usertag, encoding = \"utf8\"))\n\n    def sel_get_price(self, stdCode:str):\n        '''\n        @stdCode   合约代码\\n\n        @return 指定合约的最新价格 \n        '''\n        return self.api.sel_get_price(bytes(stdCode, encoding = \"utf8\"))\n\n    def sel_set_position(self, id:int, stdCode:str, qty:float, usertag:str = \"\"):\n        '''\n        设置目标仓位\\n\n        @id     策略id\n        @stdCode   合约代码\\n\n        @qty    目标仓位，正为多，负为空\n        '''\n        self.api.sel_set_position(id, bytes(stdCode, encoding = \"utf8\"), qty, bytes(usertag, encoding = \"utf8\"))\n\n    def sel_get_date(self):\n        '''\n        获取当前日期\\n\n        @return    当前日期 \n        '''\n        return self.api.sel_get_date()\n\n    def sel_get_time(self):\n        '''\n        获取当前时间\\n\n        @return    当前时间 \n        '''\n        return self.api.sel_get_time()\n\n    def sel_log_text(self, id:int, message:str):\n        '''\n        日志输出\\n\n        @id         策略ID\\n\n        @message    日志内容\n        '''\n        self.api.sel_log_text(id, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'))\n\n    def sel_sub_ticks(self, id:int, stdCode:str):\n        '''\n        订阅行情\n        @id         策略id\\n\n        @stdCode    品种代码\n        '''\n        self.api.sel_sub_ticks(id, bytes(stdCode, encoding = \"utf8\"))\n\n    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n    '''HFT接口'''\n    def hft_get_bars(self, id:int, stdCode:str, period:str, count:int):\n        '''\n        读取K线\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @period 周期，如m1/m3/d1等\\n\n        @count  条数\n        '''\n        return self.api.hft_get_bars(id, bytes(stdCode, encoding = \"utf8\"), bytes(period, encoding = \"utf8\"), count, CB_STRATEGY_GET_BAR(self.on_stra_get_bar))\n\n    def hft_get_ticks(self, id:int, stdCode:str, count:int):\n        '''\n        读取Tick\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @count  条数\\n\n        '''\n        return self.api.hft_get_ticks(id, bytes(stdCode, encoding = \"utf8\"), count, CB_STRATEGY_GET_TICK(self.on_stra_get_tick))\n\n    def hft_get_ordque(self, id:int, stdCode:str, count:int):\n        '''\n        读取委托队列\\n\n        @id        策略id\\n\n        @stdCode   合约代码\\n\n        @count     条数\\n\n        '''\n        return self.api.hft_get_ordque(id, bytes(stdCode, encoding = \"utf8\"), count, CB_HFTSTRA_GET_ORDQUE(self.on_hftstra_get_order_queue))\n\n    def hft_get_orddtl(self, id:int, stdCode:str, count:int):\n        '''\n        读取逐笔委托\\n\n        @id        策略id\\n\n        @stdCode   合约代码\\n\n        @count     条数\\n\n        '''\n        return self.api.hft_get_orddtl(id, bytes(stdCode, encoding = \"utf8\"), count, CB_HFTSTRA_GET_ORDDTL(self.on_hftstra_get_order_detail))\n\n    def hft_get_trans(self, id:int, stdCode:str, count:int):\n        '''\n        读取逐笔成交\\n\n        @id        策略id\\n\n        @stdCode   合约代码\\n\n        @count     条数\\n\n        '''\n        return self.api.hft_get_trans(id, bytes(stdCode, encoding = \"utf8\"), count, CB_HFTSTRA_GET_TRANS(self.on_hftstra_get_transaction))\n\n    def hft_save_user_data(self, id:int, key:str, val:str):\n        '''\n        保存用户数据\\n\n        @id         策略id\\n\n        @key        数据名\\n\n        @val        数据值\n        '''\n        self.api.hft_save_userdata(id, bytes(key, encoding = \"utf8\"), bytes(val, encoding = \"utf8\"))\n\n    def hft_load_user_data(self, id:int, key:str, defVal:str  = \"\"):\n        '''\n        加载用户数据\\n\n        @id         策略id\\n\n        @key        数据名\\n\n        @defVal     默认值\n        '''\n        ret = self.api.hft_load_userdata(id, bytes(key, encoding = \"utf8\"), bytes(defVal, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def hft_get_position(self, id:int, stdCode:str):\n        '''\n        获取持仓\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.hft_get_position(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_position_profit(self, id:int, stdCode:str):\n        '''\n        获取持仓盈亏\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @return 指定持仓的浮动盈亏\n        '''\n        return self.api.hft_get_position_profit(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_undone(self, id:int, stdCode:str):\n        '''\n        获取持仓\\n\n        @id     策略id\\n\n        @stdCode   合约代码\\n\n        @return 指定合约的持仓手数，正为多，负为空\n        '''\n        return self.api.hft_get_undone(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_price(self, stdCode:str):\n        '''\n        @stdCode   合约代码\\n\n        @return 指定合约的最新价格 \n        '''\n        return self.api.hft_get_price(bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_get_date(self):\n        '''\n        获取当前日期\\n\n        @return    当前日期 \n        '''\n        return self.api.hft_get_date()\n\n    def hft_get_time(self):\n        '''\n        获取当前时间\\n\n        @return    当前时间 \n        '''\n        return self.api.hft_get_time()\n\n    def hft_get_secs(self):\n        '''\n        获取当前时间\\n\n        @return    当前时间 \n        '''\n        return self.api.hft_get_secs()\n\n    def hft_log_text(self, id:int, message:str):\n        '''\n        日志输出\\n\n        @id         策略ID\\n\n        @message    日志内容\n        '''\n        self.api.hft_log_text(id, bytes(message, encoding = \"utf8\").decode('utf-8').encode('gbk'))\n\n    def hft_sub_ticks(self, id:int, stdCode:str):\n        '''\n        订阅实时行情数据\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_ticks(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_sub_order_queue(self, id:int, stdCode:str):\n        '''\n        订阅实时委托队列数据\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_order_queue(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_sub_order_detail(self, id:int, stdCode:str):\n        '''\n        订阅逐笔委托数据\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_order_detail(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_sub_transaction(self, id:int, stdCode:str):\n        '''\n        订阅逐笔成交数据\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\n        '''\n        self.api.hft_sub_transaction(id, bytes(stdCode, encoding = \"utf8\"))\n\n    def hft_cancel(self, id:int, localid:int):\n        '''\n        撤销指定订单\\n\n        @id         策略ID\\n\n        @localid    下单时返回的本地订单号\n        '''\n        return self.api.hft_cancel(id, localid)\n\n    def hft_cancel_all(self, id:int, stdCode:str, isBuy:bool):\n        '''\n        撤销指定品种的全部买入订单or卖出订单\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\\n\n        @isBuy      买入or卖出\n        '''\n        ret = self.api.hft_cancel_all(id, bytes(stdCode, encoding = \"utf8\"), isBuy)\n        return bytes.decode(ret)\n\n    def hft_buy(self, id:int, stdCode:str, price:float, qty:float, userTag:str):\n        '''\n        买入指令\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\\n\n        @price      买入价格, 0为市价\\n\n        @qty        买入数量\n        '''\n        ret = self.api.hft_buy(id, bytes(stdCode, encoding = \"utf8\"), price, qty, bytes(userTag, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    def hft_sell(self, id:int, stdCode:str, price:float, qty:float, userTag:str):\n        '''\n        卖出指令\\n\n        @id         策略ID\\n\n        @stdCode    品种代码\\n\n        @price      卖出价格, 0为市价\\n\n        @qty        卖出数量\n        '''\n        ret = self.api.hft_sell(id, bytes(stdCode, encoding = \"utf8\"), price, qty, bytes(userTag, encoding = \"utf8\"))\n        return bytes.decode(ret)\n\n    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n    '''CTA接口'''\n    def create_cta_context(self, name:str) -> int:\n        '''\n        创建策略环境\\n\n        @name      策略名称\n        @return    系统内策略ID \n        '''\n        return self.api.create_cta_context(bytes(name, encoding = \"utf8\") )\n\n    def create_hft_context(self, name:str, trader:str, agent:bool) -> int:\n        '''\n        创建策略环境\\n\n        @name      策略名称\n        @trader    交易通道ID\n        @agent     数据是否托管\n        @return    系统内策略ID \n        '''\n        return self.api.create_hft_context(bytes(name, encoding = \"utf8\"), bytes(trader, encoding = \"utf8\"), agent)\n\n    def create_sel_context(self, name:str, date:int, time:int, period:str, trdtpl:str = 'CHINA', session:str = \"TRADING\") -> int:\n        '''\n        创建策略环境\\n\n        @name      策略名称\n        @return    系统内策略ID \n        '''\n        return self.api.create_sel_context(bytes(name, encoding = \"utf8\"), date, time, \n            bytes(period, encoding = \"utf8\"), bytes(trdtpl, encoding = \"utf8\"), bytes(session, encoding = \"utf8\"))\n\n    def reg_cta_factories(self, factFolder:str):\n        return self.api.reg_cta_factories(bytes(factFolder, encoding = \"utf8\") )\n\n    def reg_hft_factories(self, factFolder:str):\n        return self.api.reg_hft_factories(bytes(factFolder, encoding = \"utf8\") )\n\n    def reg_sel_factories(self, factFolder:str):\n        return self.api.reg_sel_factories(bytes(factFolder, encoding = \"utf8\") )\n\n    def reg_exe_factories(self, factFolder:str):\n        return self.api.reg_exe_factories(bytes(factFolder, encoding = \"utf8\") )\n\n    "
  },
  {
    "path": "wtpy/wrapper/__init__.py",
    "content": "from .WtWrapper import WtWrapper\nfrom .WtExecApi import WtExecApi\nfrom .WtBtWrapper import WtBtWrapper\nfrom .WtDtWrapper import WtDtWrapper\nfrom .ContractLoader import ContractLoader,LoaderType\nfrom .WtDtHelper import WtDataHelper\nfrom .WtDtServoApi import WtDtServoApi\n\n__all__ = [\"WtWrapper\", \"WtExecApi\", \"WtDtWrapper\", \"WtBtWrapper\", \"ContractLoader\",\"LoaderType\",\"WtDataHelper\",'WtDtServoApi']"
  },
  {
    "path": "wtpy/wrapper/linux/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/linux/executer/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/linux/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/linux/traders/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x64/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x64/executer/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x64/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x64/traders/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x86/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x86/executer/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x86/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "wtpy/wrapper/x86/traders/__init__.py",
    "content": ""
  }
]