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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/mod/mail/mail_model.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, '3ceddkww6ZLgYYJdNT1CFO/', 'mail_model');
// Scripts/mod/mail/mail_model.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
//      这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2018-12-08 14:17:36
// --------------------------------------------------------------------
var MailController = require("mail_controller");
 
var MailEvent = require("mail_event");
 
var MailVo = require("mail_vo");
 
var NoticeVo = require("notice_vo");
 
var MailModel_MAX_COUNT = 50; //最大邮件数量
 
var MailModel = cc.Class({
  "extends": BaseClass,
  ctor: function ctor() {
    this.ctrl = MailController.getInstance();
    this.initConfig();
  },
  properties: {},
  initConfig: function initConfig() {
    this.mail_list = {}; //所有邮件
 
    this.notice_list = {}; //公告列表
 
    this.red_status_list = {}; //红点状态
  },
  //初始化邮件列表
  initMailList: function initMailList(data_list) {
    if (data_list == null || Utils.next(data_list) == null) return;
 
    for (var i in data_list) {
      var v = data_list[i];
      var key = Utils.getNorKey(v.id, v.srv_id);
      var mail_vo = this.mail_list[key];
 
      if (mail_vo == null) {
        mail_vo = new MailVo();
        this.mail_list[key] = mail_vo;
      }
 
      mail_vo.initAttrData(v);
    } //初始化红点
 
 
    this.checkMailRedSum();
  },
  //设置邮件红点状态
  checkMailRedSum: function checkMailRedSum() {
    var red_num = 0;
 
    for (var k in this.mail_list) {
      if (this.mail_list[k] && this.mail_list[k].status == 0) {
        red_num = red_num + 1;
      }
    }
 
    this.updateRedStatus(1, red_num);
  },
  //新增邮件 10803 
  addMailItem: function addMailItem(data_list) {
    this.initMailList(data_list); //新增一个邮件的时候刷新邮件列表
 
    gcore.GlobalEvent.fire(MailEvent.UPDATE_ITEM);
  },
  //删除没有附件的邮件 10804 
  delMailItem: function delMailItem(data_list) {
    if (data_list == null || Utils.next(data_list) == null) return;
 
    for (var i in data_list) {
      var v = data_list[i];
 
      if (v) {
        var key = Utils.getNorKey(v.id, v.srv_id);
        this.mail_list[key] = null;
      }
    } //删除一个邮件的时候刷新邮件列表
 
 
    gcore.GlobalEvent.fire(MailEvent.UPDATE_ITEM);
  },
  //读取一封邮件,这个时候需要设置一些状态 10805 
  readMailItem: function readMailItem(data) {
    if (data == null) return;
    var key = Utils.getNorKey(data.id, data.srv_id);
    var mail_vo = this.mail_list[key];
    if (mail_vo == null) return;
    mail_vo.setReaded(data.read_time);
    this.checkMailRedSum(); //读取单封邮件的处理
 
    gcore.GlobalEvent.fire(MailEvent.READ_MAIL_INFO, key);
  },
  //提取一个邮件附件 10801 
  getMailGood: function getMailGood(data) {
    if (data == null) return;
    var key = Utils.getNorKey(data.id, data.srv_id);
    var mail_vo = this.mail_list[key];
    mail_vo.removeAssets();
    this.checkMailRedSum(); //提取一个邮件的物品
 
    gcore.GlobalEvent.fire(MailEvent.GET_ITEM_ASSETS, key);
  },
  //一键提取所有邮件  10802 
  getAllMailGood: function getAllMailGood(data_list) {
    if (data_list == null || Utils.next(data_list) == null) return;
 
    for (var i in data_list) {
      var v = data_list[i];
      var key = Utils.getNorKey(v.id, v.srv_id);
 
      if (this.mail_list[key]) {
        this.mail_list[key].removeAssets(v.read_time);
      }
    }
 
    this.checkMailRedSum();
    gcore.GlobalEvent.fire(MailEvent.UPDATE_ITEM);
  },
  //获取邮件列表
  getAllMailArray: function getAllMailArray() {
    var temp_list = [];
 
    for (var k in this.mail_list) {
      var v = this.mail_list[k]; // if (v.time_out <= gcore.SmartSocket.getTime() && Utils.getArrLen(v.assets) == 0 && Utils.getArrLen(v.items) == 0) {
 
      if (v && v.type == 1) {
        temp_list.push(v);
      }
    }
 
    if (temp_list.length > 0) {
      temp_list.sort(Utils.tableLowerSorter(["status", "is_has"]));
    }
 
    return temp_list;
  },
  //获取已读且已经领取的邮件
  getHasReadNonRewardList: function getHasReadNonRewardList() {
    var mail_ids = [];
 
    for (var i in this.mail_list) {
      var v = this.mail_list[i]; //删除邮件的已经领取的邮件
 
      if (v && v.id != null && v.srv_id != null && (v.status == 2 || v.status == 1 && Utils.getArrLen(v.assets) == 0 && Utils.getArrLen(v.items) == 0) && v.type == 1) {
        var mail_data = {};
        mail_data.id = v.id;
        mail_data.srv_id = v.srv_id;
        mail_ids.push(mail_data);
      }
    }
 
    return mail_ids;
  },
  //更新红点状态
  updateRedStatus: function updateRedStatus(bid, num) {
    var red_num = this.red_status_list[bid];
    if (red_num == num) return;
    this.red_status_list[bid] = num; //红点
 
    var list = {
      bid: bid,
      num: num
    };
 
    var MainuiConst = require("mainui_const");
 
    require("mainui_controller").getInstance().setFunctionTipsStatus(MainuiConst.icon.mail, list); //更新红点, 1为邮件 2位公告
 
 
    gcore.GlobalEvent.fire(MailEvent.UPDATEREDSTATUS, bid, num);
  },
  getRedSum: function getRedSum(bid) {
    return this.red_status_list[bid];
  }
});
module.exports = MailModel;
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxtYWlsXFxtYWlsX21vZGVsLmpzIl0sIm5hbWVzIjpbIk1haWxDb250cm9sbGVyIiwicmVxdWlyZSIsIk1haWxFdmVudCIsIk1haWxWbyIsIk5vdGljZVZvIiwiTWFpbE1vZGVsX01BWF9DT1VOVCIsIk1haWxNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwiY3RybCIsImdldEluc3RhbmNlIiwiaW5pdENvbmZpZyIsInByb3BlcnRpZXMiLCJtYWlsX2xpc3QiLCJub3RpY2VfbGlzdCIsInJlZF9zdGF0dXNfbGlzdCIsImluaXRNYWlsTGlzdCIsImRhdGFfbGlzdCIsIlV0aWxzIiwibmV4dCIsImkiLCJ2Iiwia2V5IiwiZ2V0Tm9yS2V5IiwiaWQiLCJzcnZfaWQiLCJtYWlsX3ZvIiwiaW5pdEF0dHJEYXRhIiwiY2hlY2tNYWlsUmVkU3VtIiwicmVkX251bSIsImsiLCJzdGF0dXMiLCJ1cGRhdGVSZWRTdGF0dXMiLCJhZGRNYWlsSXRlbSIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiVVBEQVRFX0lURU0iLCJkZWxNYWlsSXRlbSIsInJlYWRNYWlsSXRlbSIsImRhdGEiLCJzZXRSZWFkZWQiLCJyZWFkX3RpbWUiLCJSRUFEX01BSUxfSU5GTyIsImdldE1haWxHb29kIiwicmVtb3ZlQXNzZXRzIiwiR0VUX0lURU1fQVNTRVRTIiwiZ2V0QWxsTWFpbEdvb2QiLCJnZXRBbGxNYWlsQXJyYXkiLCJ0ZW1wX2xpc3QiLCJ0eXBlIiwicHVzaCIsImxlbmd0aCIsInNvcnQiLCJ0YWJsZUxvd2VyU29ydGVyIiwiZ2V0SGFzUmVhZE5vblJld2FyZExpc3QiLCJtYWlsX2lkcyIsImdldEFyckxlbiIsImFzc2V0cyIsIml0ZW1zIiwibWFpbF9kYXRhIiwiYmlkIiwibnVtIiwibGlzdCIsIk1haW51aUNvbnN0Iiwic2V0RnVuY3Rpb25UaXBzU3RhdHVzIiwiaWNvbiIsIm1haWwiLCJVUERBVEVSRURTVEFU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LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgICDov5nph4zloavlhpnor6bnu4bor7TmmI4s5Li76KaB5aGr5YaZ6K+l5qih5Z2X55qE5Yqf6IO9566A6KaBXG4vLyA8YnIvPkNyZWF0ZTogMjAxOC0xMi0wOCAxNDoxNzozNlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBNYWlsQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWlsX2NvbnRyb2xsZXJcIik7XG52YXIgTWFpbEV2ZW50ID0gcmVxdWlyZShcIm1haWxfZXZlbnRcIik7XG52YXIgTWFpbFZvID0gcmVxdWlyZShcIm1haWxfdm9cIik7XG52YXIgTm90aWNlVm8gPSByZXF1aXJlKFwibm90aWNlX3ZvXCIpO1xuXG52YXIgTWFpbE1vZGVsX01BWF9DT1VOVCA9IDUwICAgICAgICAgICAgLy/mnIDlpKfpgq7ku7bmlbDph49cblxudmFyIE1haWxNb2RlbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlQ2xhc3MsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmN0cmwgPSBNYWlsQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLmluaXRDb25maWcoKVxuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgfSxcblxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tYWlsX2xpc3QgPSB7fTsgICAgICAgICAgICAgICAgLy/miYDmnInpgq7ku7ZcbiAgICAgICAgdGhpcy5ub3RpY2VfbGlzdCA9IHt9OyAgICAgICAgICAgICAgLy/lhazlkYrliJfooahcbiAgICAgICAgdGhpcy5yZWRfc3RhdHVzX2xpc3QgPSB7fTsgICAgICAgICAgLy/nuqLngrnnirbmgIFcbiAgICB9LFxuXG4gICAgLy/liJ3lp4vljJbpgq7ku7bliJfooahcbiAgICBpbml0TWFpbExpc3Q6IGZ1bmN0aW9uIChkYXRhX2xpc3QpIHtcbiAgICAgICAgaWYgKGRhdGFfbGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQoZGF0YV9saXN0KSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2ldO1xuICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICB2YXIgbWFpbF92byA9IHRoaXMubWFpbF9saXN0W2tleV07XG4gICAgICAgICAgICBpZiAobWFpbF92byA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWFpbF92byA9IG5ldyBNYWlsVm8oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haWxfbGlzdFtrZXldID0gbWFpbF92bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1haWxfdm8uaW5pdEF0dHJEYXRhKHYpXG4gICAgICAgIH1cbiAgICAgICAgLy/liJ3lp4vljJbnuqLngrlcbiAgICAgICAgdGhpcy5jaGVja01haWxSZWRTdW0oKTtcbiAgICB9LFxuXG4gICAgLy/orr7nva7pgq7ku7bnuqLngrnnirbmgIFcbiAgICBjaGVja01haWxSZWRTdW06IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlZF9udW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMubWFpbF9saXN0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWlsX2xpc3Rba10gJiYgdGhpcy5tYWlsX2xpc3Rba10uc3RhdHVzID09IDApIHtcbiAgICAgICAgICAgICAgICByZWRfbnVtID0gcmVkX251bSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVSZWRTdGF0dXMoMSwgcmVkX251bSk7XG4gICAgfSxcblxuICAgIC8v5paw5aKe6YKu5Lu2IDEwODAzIFxuICAgIGFkZE1haWxJdGVtOiBmdW5jdGlvbiAoZGF0YV9saXN0KSB7XG4gICAgICAgIHRoaXMuaW5pdE1haWxMaXN0KGRhdGFfbGlzdCk7XG4gICAgICAgIC8v5paw5aKe5LiA5Liq6YKu5Lu255qE5pe25YCZ5Yi35paw6YKu5Lu25YiX6KGoXG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoTWFpbEV2ZW50LlVQREFURV9JVEVNKTtcbiAgICB9LFxuXG4gICAgLy/liKDpmaTmsqHmnInpmYTku7bnmoTpgq7ku7YgMTA4MDQgXG4gICAgZGVsTWFpbEl0ZW06IGZ1bmN0aW9uIChkYXRhX2xpc3QpIHtcbiAgICAgICAgaWYgKGRhdGFfbGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQoZGF0YV9saXN0KSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2ldO1xuICAgICAgICAgICAgaWYodil7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWlsX2xpc3Rba2V5XSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy/liKDpmaTkuIDkuKrpgq7ku7bnmoTml7blgJnliLfmlrDpgq7ku7bliJfooahcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShNYWlsRXZlbnQuVVBEQVRFX0lURU0pO1xuICAgIH0sXG5cbiAgICAvL+ivu+WPluS4gOWwgemCruS7tizov5nkuKrml7blgJnpnIDopoHorr7nva7kuIDkupvnirbmgIEgMTA4MDUgXG4gICAgcmVhZE1haWxJdGVtOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleShkYXRhLmlkLCBkYXRhLnNydl9pZCk7XG4gICAgICAgIHZhciBtYWlsX3ZvID0gdGhpcy5tYWlsX2xpc3Rba2V5XTtcbiAgICAgICAgaWYgKG1haWxfdm8gPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIG1haWxfdm8uc2V0UmVhZGVkKGRhdGEucmVhZF90aW1lKTtcbiAgICAgICAgdGhpcy5jaGVja01haWxSZWRTdW0oKTtcbiAgICAgICAgLy/or7vlj5bljZXlsIHpgq7ku7bnmoTlpITnkIZcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShNYWlsRXZlbnQuUkVBRF9NQUlMX0lORk8sIGtleSk7XG4gICAgfSxcblxuICAgIC8v5o+Q5Y+W5LiA5Liq6YKu5Lu26ZmE5Lu2IDEwODAxIFxuICAgIGdldE1haWxHb29kOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleShkYXRhLmlkLCBkYXRhLnNydl9pZCk7XG4gICAgICAgIHZhciBtYWlsX3ZvID0gdGhpcy5tYWlsX2xpc3Rba2V5XTtcbiAgICAgICAgbWFpbF92by5yZW1vdmVBc3NldHMoKTtcbiAgICAgICAgdGhpcy5jaGVja01haWxSZWRTdW0oKTtcbiAgICAgICAgLy/mj5Dlj5bkuIDkuKrpgq7ku7bnmoTnianlk4FcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShNYWlsRXZlbnQuR0VUX0lURU1fQVNTRVRTLCBrZXkpO1xuICAgIH0sXG5cbiAgICAvL+S4gOmUruaPkOWPluaJgOaciemCruS7tiAgMTA4MDIgXG4gICAgZ2V0QWxsTWFpbEdvb2Q6IGZ1bmN0aW9uIChkYXRhX2xpc3QpIHtcbiAgICAgICAgaWYgKGRhdGFfbGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQoZGF0YV9saXN0KSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2ldO1xuICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWlsX2xpc3Rba2V5XSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbF9saXN0W2tleV0ucmVtb3ZlQXNzZXRzKHYucmVhZF90aW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tNYWlsUmVkU3VtKCk7XG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoTWFpbEV2ZW50LlVQREFURV9JVEVNKTtcbiAgICB9LFxuXG4gICAgLy/ojrflj5bpgq7ku7bliJfooahcbiAgICBnZXRBbGxNYWlsQXJyYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRlbXBfbGlzdCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMubWFpbF9saXN0KSB7XG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMubWFpbF9saXN0W2tdO1xuICAgICAgICAgICAgLy8gaWYgKHYudGltZV9vdXQgPD0gZ2NvcmUuU21hcnRTb2NrZXQuZ2V0VGltZSgpICYmIFV0aWxzLmdldEFyckxlbih2LmFzc2V0cykgPT0gMCAmJiBVdGlscy5nZXRBcnJMZW4odi5pdGVtcykgPT0gMCkge1xuXG4gICAgICAgICAgICBpZiAodiAmJiB2LnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgICAgIHRlbXBfbGlzdC5wdXNoKHYpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbXBfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0ZW1wX2xpc3Quc29ydChVdGlscy50YWJsZUxvd2VyU29ydGVyKFtcInN0YXR1c1wiLCBcImlzX2hhc1wiXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wX2xpc3RcbiAgICB9LFxuXG4gICAgLy/ojrflj5blt7Lor7vkuJTlt7Lnu4/pooblj5bnmoTpgq7ku7ZcbiAgICBnZXRIYXNSZWFkTm9uUmV3YXJkTGlzdDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbWFpbF9pZHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLm1haWxfbGlzdCkge1xuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLm1haWxfbGlzdFtpXTtcbiAgICAgICAgICAgIC8v5Yig6Zmk6YKu5Lu255qE5bey57uP6aKG5Y+W55qE6YKu5Lu2XG4gICAgICAgICAgICBpZiAodiAmJiB2LmlkICE9IG51bGwgJiYgdi5zcnZfaWQgIT0gbnVsbCAmJiAodi5zdGF0dXMgPT0gMiB8fCAodi5zdGF0dXMgPT0gMSAmJiBVdGlscy5nZXRBcnJMZW4odi5hc3NldHMpID09IDAgJiYgVXRpbHMuZ2V0QXJyTGVuKHYuaXRlbXMpID09IDApKSAmJiB2LnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgICAgIHZhciBtYWlsX2RhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICBtYWlsX2RhdGEuaWQgPSB2LmlkO1xuICAgICAgICAgICAgICAgIG1haWxfZGF0YS5zcnZfaWQgPSB2LnNydl9pZDtcbiAgICAgICAgICAgICAgICBtYWlsX2lkcy5wdXNoKG1haWxfZGF0YSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFpbF9pZHNcbiAgICB9LFxuXG4gICAgLy/mm7TmlrDnuqLngrnnirbmgIFcbiAgICB1cGRhdGVSZWRTdGF0dXM6IGZ1bmN0aW9uIChiaWQsIG51bSkge1xuICAgICAgICB2YXIgcmVkX251bSA9IHRoaXMucmVkX3N0YXR1c19saXN0W2JpZF07XG4gICAgICAgIGlmIChyZWRfbnVtID09IG51bSkgcmV0dXJuXG4gICAgICAgIHRoaXMucmVkX3N0YXR1c19saXN0W2JpZF0gPSBudW07XG4gICAgICAgIC8v57qi54K5XG4gICAgICAgIHZhciBsaXN0ID0geyBiaWQ6IGJpZCwgbnVtOiBudW0gfTtcbiAgICAgICAgdmFyIE1haW51aUNvbnN0ID0gcmVxdWlyZShcIm1haW51aV9jb25zdFwiKTtcbiAgICAgICAgcmVxdWlyZShcIm1haW51aV9jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCkuc2V0RnVuY3Rpb25UaXBzU3RhdHVzKE1haW51aUNvbnN0Lmljb24ubWFpbCwgbGlzdClcbiAgICAgICAgLy/mm7TmlrDnuqLngrksIDHkuLrpgq7ku7YgMuS9jeWFrOWRilxuICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKE1haWxFdmVudC5VUERBVEVSRURTVEFUVVMsIGJpZCwgbnVtKTtcbiAgICB9LFxuXG4gICAgZ2V0UmVkU3VtOiBmdW5jdGlvbiAoYmlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZF9zdGF0dXNfbGlzdFtiaWRdXG4gICAgfVxuXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYWlsTW9kZWw7Il19