difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/guildskill/guildskill_controller.js';
                    var __require = nodeEnv ? function (request) {
                        return cc.require(request);
                    } : function (request) {
                        return __quick_compile_project__.require(request, __filename);
                    };
                    function __define (exports, require, module) {
                        if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
cc._RF.push(module, 'ec5e4GZ/kJJUZqoa4DyVHTD', 'guildskill_controller');
// Scripts/mod/guildskill/guildskill_controller.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-01-19 17:37:33
// --------------------------------------------------------------------
var BackpackConst = require("backpack_const");
 
var GuildskillConst = require("guildskill_const");
 
var RoleController = require("role_controller");
 
var GuildskillController = cc.Class({
  "extends": BaseController,
  ctor: function ctor() {},
  // 初始化配置数据
  initConfig: function initConfig() {
    var GuildskillModel = require("guildskill_model");
 
    this.model = new GuildskillModel();
    this.model.initConfig();
  },
  // 返回当前的model
  getModel: function getModel() {
    return this.model;
  },
  // 注册监听事件
  registerEvents: function registerEvents() {
    //背包初始化之后,再请求公会信息,因为要判断是否可以升级技能的
    if (this.backpack_init_event == null) {
      this.backpack_init_event = gcore.GlobalEvent.bind(EventId.GET_ALL_DATA, function (bag_code) {
        if (bag_code != BackpackConst.Bag_Code.BACKPACK) return;
        this.role_vo = RoleController.getInstance().getRoleVo();
 
        if (this.role_vo == null) {
          if (this.init_role_event == null) {
            this.init_role_event = gcore.GlobalEvent.bind(EventId.EVT_ROLE_CREATE_SUCCESS, function () {
              gcore.GlobalEvent.unbind(this.init_role_event);
              this.role_vo = RoleController.getInstance().getRoleVo();
              if (this.role_vo) this.registerRoleEvent();
            }.bind(this));
          }
        } else {
          this.registerRoleEvent();
        }
      }.bind(this));
 
      if (this.re_link_game_event == null) {
        this.login_event_success = gcore.GlobalEvent.bind(EventId.EVT_RE_LINK_GAME, function () {
          var GuideController = require("guide_controller");
 
          if (!GuideController.getInstance().isInGuide()) this.openGuildSkillMainWindow(false);
          this.model.clearGuildCareerSkill();
          this.requestInitProtocal();
        }.bind(this));
      }
    }
  },
  registerRoleEvent: function registerRoleEvent() {
    this.requestInitProtocal(true);
 
    if (this.role_assets_event == null) {
      this.role_assets_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
        if (key == "gid") this.requestInitProtocal();else if (key == "guild") this.model.checkGuildSkillRedStatus();
      }, this);
    }
  },
  //请求技能状态,用于初始化红点
  requestInitProtocal: function requestInitProtocal() {
    if (this.role_vo != null) {
      if (this.role_vo.gid != 0) {
        this.SendProtocal(23703, {});
      } else {
        this.openGuildSkillMainWindow(false);
        this.model.clearGuildCareerSkill();
      }
    }
  },
  // 注册协议接受事件
  registerProtocals: function registerProtocals() {
    // this.RegisterProtocal(1110, this.on1110);
    this.RegisterProtocal(23700, this.handle23700); // 获取指定职业技能信息
 
    this.RegisterProtocal(23701, this.handle23701); // 激活技能
 
    this.RegisterProtocal(23702, this.handle23702); // 更新当前分组技能
 
    this.RegisterProtocal(23703, this.handle23703); // 可学习技能状态
  },
  //打开公会技能的主界面
  openGuildSkillMainWindow: function openGuildSkillMainWindow(status) {
    if (status == false) {
      if (this.main_window != null) {
        this.main_window.close();
        this.main_window = null;
      }
    } else {
      if (this.main_window == null) this.main_window = Utils.createClass("guildskill_main_window");
      this.main_window.open();
    }
  },
  //请求指定职业的技能信息
  requestCareerSkillInfo: function requestCareerSkillInfo(career) {
    career = career || GuildskillConst.index.physics;
    var protocal = {};
    protocal.career = career;
    this.SendProtocal(23700, protocal);
  },
  handle23700: function handle23700(data) {
    this.model.initGuildCareerSkill(data);
  },
  //请求激活技能
  requestActivitySkill: function requestActivitySkill(skill_id) {
    var protocal = {};
    protocal.skill_id = skill_id;
    this.SendProtocal(23701, protocal);
  },
  handle23701: function handle23701(data) {
    message(data.msg);
    if (data.code == 1) this.model.updateGuildCareerSkill(data.career, data.skill_id);
  },
  //更新指定职业的分组技能信息,这个时候是主要升级
  handle23702: function handle23702(data) {
    this.model.upgradeGuildCareerSkill(data.career, data.group_id);
  },
  //可学习技能状态
  handle23703: function handle23703(data) {
    this.model.initGuildSkillStatus(data);
  }
});
module.exports = GuildskillController;
 
cc._RF.pop();
                    }
                    if (nodeEnv) {
                        __define(__module.exports, __require, __module);
                    }
                    else {
                        __quick_compile_project__.registerModuleFunc(__filename, function () {
                            __define(__module.exports, __require, __module);
                        });
                    }
                })();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZHNraWxsXFxndWlsZHNraWxsX2NvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQmFja3BhY2tDb25zdCIsInJlcXVpcmUiLCJHdWlsZHNraWxsQ29uc3QiLCJSb2xlQ29udHJvbGxlciIsIkd1aWxkc2tpbGxDb250cm9sbGVyIiwiY2MiLCJDbGFzcyIsIkJhc2VDb250cm9sbGVyIiwiY3RvciIsImluaXRDb25maWciLCJHdWlsZHNraWxsTW9kZWwiLCJtb2RlbCIsImdldE1vZGVsIiwicmVnaXN0ZXJFdmVudHMiLCJiYWNrcGFja19pbml0X2V2ZW50IiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsImJpbmQiLCJFdmVudElkIiwiR0VUX0FMTF9EQVRBIiwiYmFnX2NvZGUiLCJCYWdfQ29kZSIsIkJBQ0tQQUNLIiwicm9sZV92byIsImdldEluc3RhbmNlIiwiZ2V0Um9sZVZvIiwiaW5pdF9yb2xlX2V2ZW50IiwiRVZUX1JPTEVfQ1JFQVRFX1NVQ0NFU1MiLCJ1bmJpbmQiLCJyZWdpc3RlclJvbGVFdmVudCIsInJlX2xpbmtfZ2FtZV9ldmVudCIsImxvZ2luX2V2ZW50X3N1Y2Nlc3MiLCJFVlRfUkVfTElOS19HQU1FIiwiR3VpZGVDb250cm9sbGVyIiwiaXNJbkd1aWRlIiwib3Blbkd1aWxkU2tpbGxNYWluV2luZG93IiwiY2xlYXJHdWlsZENhcmVlclNraWxsIiwicmVxdWVzdEluaXRQcm90b2NhbCIsInJvbGVfYXNzZXRzX2V2ZW50IiwiVVBEQVRFX1JPTEVfQVRUUklCVVRFIiwia2V5IiwidmFsdWUiLCJjaGVja0d1aWxkU2tpbGxSZWRTdGF0dXMiLCJnaWQiLCJTZW5kUHJvdG9jYWwiLCJyZWdpc3RlclByb3RvY2FscyIsIlJlZ2lzdGVyUHJvdG9jYWwiLCJoYW5kbGUyMzcwMCIsImhhbmRsZTIzNzAxIiwiaGFuZGxlMjM3MDIiLCJoYW5kbGUyMzcwMyIsInN0YXR1cyIsIm1haW5fd2luZG93IiwiY2xvc2UiLCJVdGlscyIsImNyZWF0ZUNsYXNzIiwib3BlbiIsInJlcXVlc3RDYXJlZXJTa2lsbEluZm8iLCJjYXJlZXIiLCJpbmRleCIsInBoeXNpY3MiLCJwcm90b2NhbCIsImRhdGEiLCJpbml0R3VpbGRDYXJlZXJTa2lsbCIsInJlcXVlc3RBY3Rpdml0eVNraWxsIiwic2tpbGxfaWQiLCJtZXNzYWdlIiwibXNnIiwiY29kZSIsInVwZGF0ZUd1aWxkQ2FyZWVyU2tpbGwiLCJ1cGdyYWRlR3VpbGRDYXJlZXJTa2lsbCIsImdyb3VwX2lkIiwiaW5pdEd1aWxkU2tpbGxTdGF0dXMiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLGFBQWEsR0FBR0MsT0FBTyxDQUFDLGdCQUFELENBQTNCOztBQUNBLElBQUlDLGVBQWUsR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQTdCOztBQUNBLElBQUlFLGNBQWMsR0FBR0YsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUVBLElBQUlHLG9CQUFvQixHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUNoQyxhQUFTQyxjQUR1QjtBQUVoQ0MsRUFBQUEsSUFBSSxFQUFFLGdCQUFZLENBQ2pCLENBSCtCO0FBS2hDO0FBQ0FDLEVBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixRQUFJQyxlQUFlLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFFQSxTQUFLVSxLQUFMLEdBQWEsSUFBSUQsZUFBSixFQUFiO0FBQ0EsU0FBS0MsS0FBTCxDQUFXRixVQUFYO0FBQ0gsR0FYK0I7QUFhaEM7QUFDQUcsRUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLFdBQU8sS0FBS0QsS0FBWjtBQUNILEdBaEIrQjtBQWtCaEM7QUFDQUUsRUFBQUEsY0FBYyxFQUFFLDBCQUFZO0FBQ3hCO0FBQ0EsUUFBSSxLQUFLQyxtQkFBTCxJQUE0QixJQUFoQyxFQUFzQztBQUNsQyxXQUFLQSxtQkFB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Q3RDLFFBQUlKLFFBQVEsR0FBRyxFQUFmO0FBQ0FBLElBQUFBLFFBQVEsQ0FBQ0ksUUFBVCxHQUFvQkEsUUFBcEI7QUFDQSxTQUFLckIsWUFBTCxDQUFrQixLQUFsQixFQUF5QmlCLFFBQXpCO0FBQ0gsR0FwSCtCO0FBc0hoQ2IsRUFBQUEsV0FBVyxFQUFFLHFCQUFVYyxJQUFWLEVBQWdCO0FBQ3pCSSxJQUFBQSxPQUFPLENBQUNKLElBQUksQ0FBQ0ssR0FBTixDQUFQO0FBQ0EsUUFBSUwsSUFBSSxDQUFDTSxJQUFMLElBQWEsQ0FBakIsRUFDSSxLQUFLekQsS0FBTCxDQUFXMEQsc0JBQVgsQ0FBa0NQLElBQUksQ0FBQ0osTUFBdkMsRUFBK0NJLElBQUksQ0FBQ0csUUFBcEQ7QUFDUCxHQTFIK0I7QUE0SGhDO0FBQ0FoQixFQUFBQSxXQUFXLEVBQUUscUJBQVVhLElBQVYsRUFBZ0I7QUFDekIsU0FBS25ELEtBQUwsQ0FBVzJELHVCQUFYLENBQW1DUixJQUFJLENBQUNKLE1BQXhDLEVBQWdESSxJQUFJLENBQUNTLFFBQXJEO0FBQ0gsR0EvSCtCO0FBaUloQztBQUNBckIsRUFBQUEsV0FBVyxFQUFFLHFCQUFVWSxJQUFWLEVBQWdCO0FBQ3pCLFNBQUtuRCxLQUFMLENBQVc2RCxvQkFBWCxDQUFnQ1YsSUFBaEM7QUFDSDtBQXBJK0IsQ0FBVCxDQUEzQjtBQXVJQVcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdEUsb0JBQWpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGF1dGhvcjogeHh4QHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXG4vLyBAZGVzY3JpcHRpb246XG4vLyAgICAgIOi/memHjOWhq+WGmeivpue7huivtOaYjizkuLvopoHloavlhpnor6XmqKHlnZfnmoTlip/og73nroDopoFcbi8vIDxici8+Q3JlYXRlOiAyMDE5LTAxLTE5IDE3OjM3OjMzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIEJhY2twYWNrQ29uc3QgPSByZXF1aXJlKFwiYmFja3BhY2tfY29uc3RcIik7XG52YXIgR3VpbGRza2lsbENvbnN0ID0gcmVxdWlyZShcImd1aWxkc2tpbGxfY29uc3RcIik7XG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpO1xuXG52YXIgR3VpbGRza2lsbENvbnRyb2xsZXIgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZUNvbnRyb2xsZXIsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgIH0sXG5cbiAgICAvLyDliJ3lp4vljJbphY3nva7mlbDmja5cbiAgICBpbml0Q29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBHdWlsZHNraWxsTW9kZWwgPSByZXF1aXJlKFwiZ3VpbGRza2lsbF9tb2RlbFwiKTtcblxuICAgICAgICB0aGlzLm1vZGVsID0gbmV3IEd1aWxkc2tpbGxNb2RlbCgpO1xuICAgICAgICB0aGlzLm1vZGVsLmluaXRDb25maWcoKTtcbiAgICB9LFxuXG4gICAgLy8g6L+U5Zue5b2T5YmN55qEbW9kZWxcbiAgICBnZXRNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9LFxuXG4gICAgLy8g5rOo5YaM55uR5ZCs5LqL5Lu2XG4gICAgcmVnaXN0ZXJFdmVudHM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy/og4zljIXliJ3lp4vljJbkuYvlkI4s5YaN6K+35rGC5YWs5Lya5L+h5oGvLOWboOS4uuimgeWIpOaWreaYr+WQpuWPr+S7peWNh+e6p+aKgOiDveeahFxuICAgICAgICBpZiAodGhpcy5iYWNrcGFja19pbml0X2V2ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuYmFja3BhY2tfaW5pdF9ldmVudCA9IGdjb3JlLkdsb2JhbEV2ZW50LmJpbmQoRXZlbnRJZC5HRVRfQUxMX0RBVEEsIGZ1bmN0aW9uIChiYWdfY29kZSkge1xuICAgICAgICAgICAgICAgIGlmIChiYWdfY29kZSAhPSBCYWNrcGFja0NvbnN0LkJhZ19Db2RlLkJBQ0tQQUNLKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB0aGlzLnJvbGVfdm8gPSBSb2xlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldFJvbGVWbygpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvbGVfdm8gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0X3JvbGVfZXZlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0X3JvbGVfZXZlbnQgPSBnY29yZS5HbG9iYWxFdmVudC5iaW5kKEV2ZW50SWQuRVZUX1JPTEVfQ1JFQVRFX1NVQ0NFU1MsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY29yZS5HbG9iYWxFdmVudC51bmJpbmQodGhpcy5pbml0X3JvbGVfZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucm9sZV92bylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJvbGVFdmVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJvbGVFdmVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcblxuICAgICAgICAgICAgaWYgKHRoaXMucmVfbGlua19nYW1lX2V2ZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luX2V2ZW50X3N1Y2Nlc3MgPSBnY29yZS5HbG9iYWxFdmVudC5iaW5kKEV2ZW50SWQuRVZUX1JFX0xJTktfR0FNRSwgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIEd1aWRlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJndWlkZV9jb250cm9sbGVyXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUd1aWRlQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmlzSW5HdWlkZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuR3VpbGRTa2lsbE1haW5XaW5kb3coZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmNsZWFyR3VpbGRDYXJlZXJTa2lsbCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RJbml0UHJvdG9jYWwoKTtcbiAgICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHJlZ2lzdGVyUm9sZUV2ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdEluaXRQcm90b2NhbCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucm9sZV9hc3NldHNfZXZlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5yb2xlX2Fzc2V0c19ldmVudCA9IHRoaXMucm9sZV92by5iaW5kKEV2ZW50SWQuVVBEQVRFX1JPTEVfQVRUUklCVVRFLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gXCJnaWRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0SW5pdFByb3RvY2FsKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09IFwiZ3VpbGRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5jaGVja0d1aWxkU2tpbGxSZWRTdGF0dXMoKTtcbiAgICAgICAgICAgIH0sIHRoaXMpXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy/or7fmsYLmioDog73nirbmgIHvvIznlKjkuo7liJ3lp4vljJbnuqLngrlcbiAgICByZXF1ZXN0SW5pdFByb3RvY2FsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnJvbGVfdm8gIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucm9sZV92by5naWQgIT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzNzAzLCB7fSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbkd1aWxkU2tpbGxNYWluV2luZG93KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLmNsZWFyR3VpbGRDYXJlZXJTa2lsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIOazqOWGjOWNj+iuruaOpeWPl+S6i+S7tlxuICAgIHJlZ2lzdGVyUHJvdG9jYWxzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgxMTEwLCB0aGlzLm9uMTExMCk7XG4gICAgICAgIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgyMzcwMCwgdGhpcy5oYW5kbGUyMzcwMCkgICAgICAgICAvLyDojrflj5bmjIflrprogYzkuJrmioDog73kv6Hmga9cbiAgICAgICAgdGhpcy5SZWdpc3RlclByb3RvY2FsKDIzNzAxLCB0aGlzLmhhbmRsZTIzNzAxKSAgICAgICAgIC8vIOa/gOa0u+aKgOiDvVxuICAgICAgICB0aGlzLlJlZ2lzdGVyUHJvdG9jYWwoMjM3MDIsIHRoaXMuaGFuZGxlMjM3MDIpICAgICAgICAgLy8g5pu05paw5b2T5YmN5YiG57uE5oqA6IO9XG4gICAgICAgIHRoaXMuUmVnaXN0ZXJQcm90b2NhbCgyMzcwMywgdGhpcy5oYW5kbGUyMzcwMykgICAgICAgICAvLyDlj6/lrabkuaDmioDog73nirbmgIFcbiAgICB9LFxuXG4gICAgLy/miZPlvIDlhazkvJrmioDog73nmoTkuLvnlYzpnaJcbiAgICBvcGVuR3VpbGRTa2lsbE1haW5XaW5kb3c6IGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWFpbl93aW5kb3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbl93aW5kb3cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5fd2luZG93ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1haW5fd2luZG93ID09IG51bGwpXG4gICAgICAgICAgICAgICAgdGhpcy5tYWluX3dpbmRvdyA9IFV0aWxzLmNyZWF0ZUNsYXNzKFwiZ3VpbGRza2lsbF9tYWluX3dpbmRvd1wiKTtcbiAgICAgICAgICAgIHRoaXMubWFpbl93aW5kb3cub3BlbigpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8v6K+35rGC5oyH5a6a6IGM5Lia55qE5oqA6IO95L+h5oGvXG4gICAgcmVxdWVzdENhcmVlclNraWxsSW5mbzogZnVuY3Rpb24gKGNhcmVlcikge1xuICAgICAgICBjYXJlZXIgPSBjYXJlZXIgfHwgR3VpbGRza2lsbENvbnN0LmluZGV4LnBoeXNpY3M7XG4gICAgICAgIHZhciBwcm90b2NhbCA9IHt9O1xuICAgICAgICBwcm90b2NhbC5jYXJlZXIgPSBjYXJlZXI7XG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzNzAwLCBwcm90b2NhbCk7XG4gICAgfSxcblxuICAgIGhhbmRsZTIzNzAwOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB0aGlzLm1vZGVsLmluaXRHdWlsZENhcmVlclNraWxsKGRhdGEpO1xuICAgIH0sXG5cbiAgICAvL+ivt+axgua/gOa0u+aKgOiDvVxuICAgIHJlcXVlc3RBY3Rpdml0eVNraWxsOiBmdW5jdGlvbiAoc2tpbGxfaWQpIHtcbiAgICAgICAgdmFyIHByb3RvY2FsID0ge307XG4gICAgICAgIHByb3RvY2FsLnNraWxsX2lkID0gc2tpbGxfaWQ7XG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzNzAxLCBwcm90b2NhbCk7XG4gICAgfSxcblxuICAgIGhhbmRsZTIzNzAxOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBtZXNzYWdlKGRhdGEubXNnKTtcbiAgICAgICAgaWYgKGRhdGEuY29kZSA9PSAxKVxuICAgICAgICAgICAgdGhpcy5tb2RlbC51cGRhdGVHdWlsZENhcmVlclNraWxsKGRhdGEuY2FyZWVyLCBkYXRhLnNraWxsX2lkKTtcbiAgICB9LFxuXG4gICAgLy/mm7TmlrDmjIflrprogYzkuJrnmoTliIbnu4TmioDog73kv6Hmga/vvIzov5nkuKrml7blgJnmmK/kuLvopoHljYfnuqdcbiAgICBoYW5kbGUyMzcwMjogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdGhpcy5tb2RlbC51cGdyYWRlR3VpbGRDYXJlZXJTa2lsbChkYXRhLmNhcmVlciwgZGF0YS5ncm91cF9pZCk7XG4gICAgfSxcblxuICAgIC8v5Y+v5a2m5Lmg5oqA6IO954q25oCBXG4gICAgaGFuZGxlMjM3MDM6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMubW9kZWwuaW5pdEd1aWxkU2tpbGxTdGF0dXMoZGF0YSk7XG4gICAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gR3VpbGRza2lsbENvbnRyb2xsZXI7Il19