|
(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
|