|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/partnersummon/partnersummon_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, '5404dkqo/9HCK53yJeJbyxU', 'partnersummon_model');
|
// Scripts/mod/partnersummon/partnersummon_model.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里填写详细说明,主要填写该模块的功能简要
|
// <br/>Create: {DATE}
|
// --------------------------------------------------------------------
|
var PartnersummonEvent = require("partnersummon_event");
|
|
var PartnersummonConst = require("partnersummon_const");
|
|
var PartnersummonModel = cc.Class({
|
"extends": BaseClass,
|
ctor: function ctor() {},
|
properties: {
|
recruit_list: null,
|
// 卡库的数据
|
recruit_data: null,
|
// 召唤结果
|
had_open_view: false
|
},
|
initConfig: function initConfig() {},
|
setSummonData: function setSummonData(summon_data) {
|
if (!summon_data) return;
|
this.recruit_list = summon_data.recruit_list;
|
this.setShareData(summon_data);
|
this.updateRecruitData();
|
this.updateRedPoint();
|
},
|
// 更新免费召唤次数、下次免费时间
|
updateSummonData: function updateSummonData(update_data) {
|
if (!update_data) return;
|
if (!this.recruit_list) return;
|
|
for (var recruit_i in this.recruit_list) {
|
var recruit_info = this.recruit_list[recruit_i];
|
|
if (recruit_info.group_id === update_data.group_id && recruit_info.draw_list) {
|
for (var draw_i in recruit_info.draw_list) {
|
var draw_info = recruit_info.draw_list[draw_i];
|
|
if (draw_info.times === 1 && draw_info.kv_list) {
|
for (var kv_i in draw_info.kv_list) {
|
var kv_info = draw_info.kv_list[kv_i];
|
if (kv_info.key == PartnersummonConst.Recruit_Key.Free_Count) kv_info.val = update_data.free_times;
|
if (kv_info.key == PartnersummonConst.Recruit_Key.Free_Time) kv_info.val = update_data.free_cd_end;
|
}
|
}
|
}
|
}
|
}
|
|
this.updateRedPoint();
|
gcore.GlobalEvent.fire(PartnersummonEvent.UpdateSummonDataEvent, update_data);
|
},
|
setRecruitData: function setRecruitData(recruit_data) {
|
this.recruit_data = recruit_data;
|
},
|
getRecruitData: function getRecruitData() {
|
return this.recruit_data;
|
},
|
setShareData: function setShareData(data) {},
|
updateRecruitData: function updateRecruitData(data_list) {},
|
// 更新某个卡库的CD时间、次数等数据
|
updateExtendData: function updateExtendData() {},
|
// 获取卡库数据
|
getSummonGroupData: function getSummonGroupData() {
|
var group_data = [];
|
var recruit_config = Config.recruit_data.data_partnersummon_data;
|
var group_item = null;
|
var recruit_config_info = null;
|
var group_id = null;
|
|
for (var recruit_i in recruit_config) {
|
recruit_config_info = recruit_config[recruit_i];
|
|
if (recruit_config_info.is_show === 0) {
|
group_id = recruit_config_info.group_id;
|
var recruit_data = this.getSummonProtoDataByGroupID(group_id);
|
group_item = {};
|
group_item.config_data = recruit_config[recruit_i];
|
group_item.recruit_data = recruit_data;
|
group_item.group_id = recruit_config_info.group_id;
|
group_data.push(group_item);
|
}
|
} // 排序
|
|
|
function sortById(pro) {
|
return function (obj1, obj2) {
|
var c_val1 = obj1.config_data[pro];
|
var c_val2 = obj2.config_data[pro];
|
|
if (c_val1 < c_val2) {
|
return -1;
|
} else {
|
return 1;
|
}
|
|
return 0;
|
};
|
}
|
|
var summon_group_data = group_data.sort(sortById("sort_id"));
|
return summon_group_data;
|
},
|
getSummonProtoDataByGroupID: function getSummonProtoDataByGroupID(group_id) {
|
if (!group_id || !this.recruit_list) return;
|
var recruit_data = null;
|
|
for (var recruit_i in this.recruit_list) {
|
recruit_data = this.recruit_list[recruit_i];
|
|
if (recruit_data.group_id === group_id) {
|
return recruit_data;
|
}
|
}
|
|
return null;
|
},
|
getScoreSummonNeedCount: function getScoreSummonNeedCount() {
|
var count = 0;
|
var score_recruit_info = Config.recruit_data.data_partnersummon_data[PartnersummonConst.Summon_Type.Score];
|
|
if (score_recruit_info.exchange_once && score_recruit_info.exchange_once[0]) {
|
count = score_recruit_info.exchange_once[0][1];
|
}
|
|
return count;
|
},
|
// 更新红点状态
|
updateMainSceneRedPoint: function updateMainSceneRedPoint() {
|
var MainSceneController = require("mainscene_controller");
|
|
var SceneConst = require("scene_const"); // 是否有免费
|
|
|
var is_show_red = false;
|
|
for (var recruit_i in this.recruit_list) {
|
var group_data = this.recruit_list[recruit_i];
|
|
if (group_data.draw_list) {
|
for (var draw_i in group_data.draw_list) {
|
var draw_data = group_data.draw_list[draw_i];
|
|
if (draw_data.kv_list) {
|
for (var time_i in draw_data.kv_list) {
|
var time_info = draw_data.kv_list[time_i];
|
|
if (time_info.key == PartnersummonConst.Recruit_Key.Free_Count && time_info.val > 0) {
|
is_show_red = true;
|
}
|
}
|
}
|
}
|
}
|
} // 如果没有免费切没有从打开过界面企鹅道具数量充足则提示红点
|
|
|
if (!is_show_red && !this.had_open_view) {
|
var BackpackController = require("backpack_controller");
|
|
var normal_item_num = BackpackController.getInstance().getModel().getItemNumByBid(PartnersummonConst.Normal_Id);
|
var advanced_item_num = BackpackController.getInstance().getModel().getItemNumByBid(PartnersummonConst.Normal_Id);
|
if (normal_item_num > 0 || advanced_item_num > 0) is_show_red = true;
|
}
|
|
MainSceneController.getInstance().setBuildRedStatus(SceneConst.CenterSceneBuild.summon, is_show_red);
|
},
|
setOpenPartnerSummonFlag: function setOpenPartnerSummonFlag(status) {
|
this.had_open_view = status;
|
this.updateRedPoint();
|
},
|
updateRedPoint: function updateRedPoint() {
|
RedMgr.getInstance().addCalHandler(this.updateMainSceneRedPoint.bind(this), RedIds.PartnerSummon);
|
},
|
//快速点击间隔
|
clickIntervalStatus: function clickIntervalStatus(status) {
|
this.updateTime = status;
|
},
|
getClickStatus: function getClickStatus() {
|
return this.updateTime;
|
}
|
});
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxwYXJ0bmVyc3VtbW9uXFxwYXJ0bmVyc3VtbW9uX21vZGVsLmpzIl0sIm5hbWVzIjpbIlBhcnRuZXJzdW1tb25FdmVudCIsInJlcXVpcmUiLCJQYXJ0bmVyc3VtbW9uQ29uc3QiLCJQYXJ0bmVyc3VtbW9uTW9kZWwiLCJjYyIsIkNsYXNzIiwiQmFzZUNsYXNzIiwiY3RvciIsInByb3BlcnRpZXMiLCJyZWNydWl0X2xpc3QiLCJyZWNydWl0X2RhdGEiLCJoYWRfb3Blbl92aWV3IiwiaW5pdENvbmZpZyIsInNldFN1bW1vbkRhdGEiLCJzdW1tb25fZGF0YSIsInNldFNoYXJlRGF0YSIsInVwZGF0ZVJlY3J1aXREYXRhIiwidXBkYXRlUmVkUG9pbnQiLCJ1cGRhdGVTdW1tb25EYXRhIiwidXBkYXRlX2RhdGEiLCJyZWNydWl0X2kiLCJyZWNydWl0X2luZm8iLCJncm91cF9pZCIsImRyYXdfbGlzdCIsImRyYXdfaSIsImRyYXdfaW5mbyIsInRpbWVzIiwia3ZfbGlzdCIsImt2X2kiLCJrdl9pbmZvIiwia2V5IiwiUmVjcnVpdF9LZXkiLCJGcmVlX0NvdW50IiwidmFsIiwiZnJlZV90aW1lcyIsIkZyZWVfVGltZSIsImZyZWVfY2RfZW5kIiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsImZpcmUiLCJVcGRhdGVTdW1tb25EYXRhRXZlbnQiLCJzZXRSZWNydWl0RGF0YSIsImdldFJlY3J1aXREYXRhIiwiZGF0YSIsImRhdGFfbGlzdCIsInVwZGF0ZUV4dGVuZERhdGEiLCJnZXRTdW1tb25Hcm91cERhdGEiLCJncm91cF9kYXRhIiwicmVjcnVpdF9jb25maWciLCJDb25maWciLCJkYXRhX3BhcnRuZXJzdW1tb25fZGF0YSIsImdyb3VwX2l0ZW0iLCJyZWNydWl0X2NvbmZpZ19pbmZvIiwiaXNfc2hvdyIsImdldFN1bW1vblByb3RvRGF0YUJ5R3JvdXBJRCIsImNvbmZpZ19kYXRhIiwicHVzaCIsInNvcnRCeUlkIiwicHJvIiwib2JqMSIsIm9iajIiLCJjX3ZhbDEiLCJjX3ZhbDIiLCJzdW1tb25fZ3JvdXBfZGF0YSIsInNvcnQiLCJnZXRTY29yZVN1bW1vbk5lZWRDb3VudCIsImNvdW50Iiwic2NvcmVfcmVjcnVpdF9pbmZvIiwiU3VtbW9uX1R5cGUiLCJTY29yZSIsImV4Y2hhbmdlX29uY2UiLCJ1cGRhdGVNYWluU2NlbmVSZWRQb2ludCIsIk1haW5TY2VuZUNvbnRyb2xsZXIiLCJTY2VuZUNvbnN0IiwiaXNfc2hvd19yZWQiLCJkcmF3X2RhdGEiLCJ0aW1lX2kiLCJ0aW1lX2luZm8iLCJCYWNrcGFja0NvbnRyb2xsZXIiLCJub3JtYWxfaXRlbV9udW0iLCJnZXRJbnN0YW5jZSIsImdldE1vZGVsIiwiZ2V0SXRlbU51bUJ5QmlkIiwiTm9ybWFsX0lkIiwiYWR2YW5jZWRfaXRlbV9udW0iLCJzZXRCdWlsZFJlZFN0YXR1cyIsIkNlbnRlclNjZW5lQnVpbGQiLCJzdW1tb24iLCJzZXRPcGVuUGFydG5lclN1bW1vbkZsYWciLCJzdGF0dXMiLCJSZWRNZ3IiLCJhZGRDYWxIYW5kbGVyIiwiYmluZCIsIlJlZElkcyIsIlBhcnRuZXJTdW1tb24iLCJjbGlja0ludGVydmFsU3RhdHVzIiwidXBkYXRlVGltZSIsImdldENsaWNrU3RhdHVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLGtCQUFrQixHQUFHQyxPQUFPLENBQUMscUJBQUQsQ0FBaEM7O0FBQ0EsSUFBSUMsa0JBQWtCLEdBQUdELE9BQU8sQ0FBQyxxQkFBRCxDQUFoQzs7QUFFQSxJQUFJRSxrQkFBa0IsR0FBR0MsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDOUIsYUFBU0MsU0FEcUI7QUFFOUJDLEVBQUFBLElBQUksRUFBRSxnQkFBWSxDQUNqQixDQUg2QjtBQUs5QkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1JDLElBQUFBLFlBQVksRUFBRSxJQUROO0FBQ29CO0FBQzVCQyxJQUFBQSxZQUFZLEVBQUUs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LFdBQXBCLEdBQWtDSyxpQkFBbEMsQ0FBb0RaLFVBQVUsQ0FBQ2EsZ0JBQVgsQ0FBNEJDLE1BQWhGLEVBQXdGYixXQUF4RjtBQUNILEdBbks2QjtBQXNLOUJjLEVBQUFBLHdCQUF3QixFQUFFLGtDQUFTQyxNQUFULEVBQWlCO0FBQ3ZDLFNBQUs5RSxhQUFMLEdBQXFCOEUsTUFBckI7QUFDQSxTQUFLeEUsY0FBTDtBQUNILEdBeks2QjtBQTJLOUJBLEVBQUFBLGNBQWMsRUFBRSwwQkFBVztBQUN2QnlFLElBQUFBLE1BQU0sQ0FBQ1YsV0FBUCxHQUFxQlcsYUFBckIsQ0FBbUMsS0FBS3BCLHVCQUFMLENBQTZCcUIsSUFBN0IsQ0FBa0MsSUFBbEMsQ0FBbkMsRUFBNEVDLE1BQU0sQ0FBQ0MsYUFBbkY7QUFDSCxHQTdLNkI7QUE4SzlCO0FBQ0FDLEVBQUFBLG1CQS9LOEIsK0JBK0tWTixNQS9LVSxFQStLSDtBQUN2QixTQUFLTyxVQUFMLEdBQWtCUCxNQUFsQjtBQUNILEdBakw2QjtBQWtMOUJRLEVBQUFBLGNBbEw4Qiw0QkFrTGQ7QUFDWixXQUFPLEtBQUtELFVBQVo7QUFDSDtBQXBMNkIsQ0FBVCxDQUF6QiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgICDov5nph4zloavlhpnor6bnu4bor7TmmI4s5Li76KaB5aGr5YaZ6K+l5qih5Z2X55qE5Yqf6IO9566A6KaBXG4vLyA8YnIvPkNyZWF0ZToge0RBVEV9XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFBhcnRuZXJzdW1tb25FdmVudCA9IHJlcXVpcmUoXCJwYXJ0bmVyc3VtbW9uX2V2ZW50XCIpO1xudmFyIFBhcnRuZXJzdW1tb25Db25zdCA9IHJlcXVpcmUoXCJwYXJ0bmVyc3VtbW9uX2NvbnN0XCIpO1xuXG52YXIgUGFydG5lcnN1bW1vbk1vZGVsID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IEJhc2VDbGFzcyxcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgfSxcblxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgcmVjcnVpdF9saXN0OiBudWxsLCAgICAgICAgIC8vIOWNoeW6k+eahOaVsOaNrlxuICAgICAgICByZWNydWl0X2RhdGE6IG51bGwsICAgICAgICAgLy8g5Y+s5ZSk57uT5p6cXG4gICAgICAgIGhhZF9vcGVuX3ZpZXc6IGZhbHNlLFxuICAgIH0sXG5cbiAgICBpbml0Q29uZmlnOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgc2V0U3VtbW9uRGF0YTogZnVuY3Rpb24oc3VtbW9uX2RhdGEpIHtcbiAgICAgICAgaWYgKCFzdW1tb25fZGF0YSkgcmV0dXJuO1xuICAgICAgICB0aGlzLnJlY3J1aXRfbGlzdCA9IHN1bW1vbl9kYXRhLnJlY3J1aXRfbGlzdDtcbiAgICAgICAgdGhpcy5zZXRTaGFyZURhdGEoc3VtbW9uX2RhdGEpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlY3J1aXREYXRhKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVSZWRQb2ludCgpO1xuICAgIH0sXG5cbiAgICAvLyDmm7TmlrDlhY3otLnlj6zllKTmrKHmlbDjgIHkuIvmrKHlhY3otLnml7bpl7RcbiAgICB1cGRhdGVTdW1tb25EYXRhOiBmdW5jdGlvbih1cGRhdGVfZGF0YSkge1xuICAgICAgICBpZiAoIXVwZGF0ZV9kYXRhKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5yZWNydWl0X2xpc3QpIHJldHVybjsgXG4gICAgICAgIGZvciAodmFyIHJlY3J1aXRfaSBpbiB0aGlzLnJlY3J1aXRfbGlzdCkge1xuICAgICAgICAgICAgdmFyIHJlY3J1aXRfaW5mbyA9IHRoaXMucmVjcnVpdF9saXN0W3JlY3J1aXRfaV07XG4gICAgICAgICAgICBpZiAocmVjcnVpdF9pbmZvLmdyb3VwX2lkID09PSB1cGRhdGVfZGF0YS5ncm91cF9pZCAmJiByZWNydWl0X2luZm8uZHJhd19saXN0KSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZHJhd19pIGluIHJlY3J1aXRfaW5mby5kcmF3X2xpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRyYXdfaW5mbyA9IHJlY3J1aXRfaW5mby5kcmF3X2xpc3RbZHJhd19pXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRyYXdfaW5mby50aW1lcyA9PT0gMSAmJiBkcmF3X2luZm8ua3ZfbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIga3ZfaSBpbiBkcmF3X2luZm8ua3ZfbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrdl9pbmZvID0gZHJhd19pbmZvLmt2X2xpc3Rba3ZfaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGt2X2luZm8ua2V5ID09IFBhcnRuZXJzdW1tb25Db25zdC5SZWNydWl0X0tleS5GcmVlX0NvdW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdl9pbmZvLnZhbCA9IHVwZGF0ZV9kYXRhLmZyZWVfdGltZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGt2X2luZm8ua2V5ID09IFBhcnRuZXJzdW1tb25Db25zdC5SZWNydWl0X0tleS5GcmVlX1RpbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt2X2luZm8udmFsID0gdXBkYXRlX2RhdGEuZnJlZV9jZF9lbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVSZWRQb2ludCgpO1xuICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKFBhcnRuZXJzdW1tb25FdmVudC5VcGRhdGVTdW1tb25EYXRhRXZlbnQsIHVwZGF0ZV9kYXRhKTtcbiAgICB9LFxuXG4gICAgc2V0UmVjcnVpdERhdGE6IGZ1bmN0aW9uKHJlY3J1aXRfZGF0YSkge1xuICAgICAgICB0aGlzLnJlY3J1aXRfZGF0YSA9IHJlY3J1aXRfZGF0YVxuICAgIH0sXG5cbiAgICBnZXRSZWNydWl0RGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlY3J1aXRfZGF0YVxuICAgIH0sXG5cbiAgICBzZXRTaGFyZURhdGE6IGZ1bmN0aW9uKGRhdGEpIHtcblxuICAgIH0sXG5cbiAgICB1cGRhdGVSZWNydWl0RGF0YTogZnVuY3Rpb24oZGF0YV9saXN0KSB7XG5cbiAgICB9LFxuXG4gICAgLy8g5pu05paw5p+Q5Liq5Y2h5bqT55qEQ0Tml7bpl7TjgIHmrKHmlbDnrYnmlbDmja5cbiAgICB1cGRhdGVFeHRlbmREYXRhOiBmdW5jdGlvbigpIHtcblxuICAgIH0sXG5cbiAgICAvLyDojrflj5bljaHlupPmlbDmja5cbiAgICBnZXRTdW1tb25Hcm91cERhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZ3JvdXBfZGF0YSA9IFtdXG4gICAgICAgIHZhciByZWNydWl0X2NvbmZpZyA9IENvbmZpZy5yZWNydWl0X2RhdGEuZGF0YV9wYXJ0bmVyc3VtbW9uX2RhdGE7XG5cbiAgICAgICAgdmFyIGdyb3VwX2l0ZW0gPSBudWxsO1xuICAgICAgICB2YXIgcmVjcnVpdF9jb25maWdfaW5mbyA9IG51bGw7XG4gICAgICAgIHZhciBncm91cF9pZCA9IG51bGw7XG4gICAgICAgIGZvciAodmFyIHJlY3J1aXRfaSBpbiByZWNydWl0X2NvbmZpZykge1xuICAgICAgICAgICAgcmVjcnVpdF9jb25maWdfaW5mbyA9IHJlY3J1aXRfY29uZmlnW3JlY3J1aXRfaV07XG4gICAgICAgICAgICBpZiAocmVjcnVpdF9jb25maWdfaW5mby5pc19zaG93ID09PSAwKSB7ICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgZ3JvdXBfaWQgPSByZWNydWl0X2NvbmZpZ19pbmZvLmdyb3VwX2lkO1xuICAgICAgICAgICAgICAgIHZhciByZWNydWl0X2RhdGEgPSB0aGlzLmdldFN1bW1vblByb3RvRGF0YUJ5R3JvdXBJRChncm91cF9pZCk7XG4gICAgICAgICAgICAgICAgZ3JvdXBfaXRlbSA9IHt9O1xuICAgICAgICAgICAgICAgIGdyb3VwX2l0ZW0uY29uZmlnX2RhdGEgPSByZWNydWl0X2NvbmZpZ1tyZWNydWl0X2ldO1xuICAgICAgICAgICAgICAgIGdyb3VwX2l0ZW0ucmVjcnVpdF9kYXRhID0gcmVjcnVpdF9kYXRhO1xuICAgICAgICAgICAgICAgIGdyb3VwX2l0ZW0uZ3JvdXBfaWQgPSByZWNydWl0X2NvbmZpZ19pbmZvLmdyb3VwX2lkO1xuICAgICAgICAgICAgICAgIGdyb3VwX2RhdGEucHVzaChncm91cF9pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOaOkuW6j1xuICAgICAgICBmdW5jdGlvbiBzb3J0QnlJZChwcm8pIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihvYmoxLCBvYmoyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNfdmFsMSA9IG9iajEuY29uZmlnX2RhdGFbcHJvXTtcbiAgICAgICAgICAgICAgICB2YXIgY192YWwyID0gb2JqMi5jb25maWdfZGF0YVtwcm9dO1xuICAgICAgICAgICAgICAgIGlmIChjX3ZhbDEgPCBjX3ZhbDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN1bW1vbl9ncm91cF9kYXRhID0gZ3JvdXBfZGF0YS5zb3J0KHNvcnRCeUlkKFwic29ydF9pZFwiKSk7XG4gICAgICAgIHJldHVybiBzdW1tb25fZ3JvdXBfZGF0YVxuICAgIH0sXG5cbiAgICBnZXRTdW1tb25Qcm90b0RhdGFCeUdyb3VwSUQ6IGZ1bmN0aW9uKGdyb3VwX2lkKSB7XG4gICAgICAgIGlmICghZ3JvdXBfaWQgfHwgIXRoaXMucmVjcnVpdF9saXN0KSByZXR1cm47XG4gICAgICAgIHZhciByZWNydWl0X2RhdGEgPSBudWxsO1xuICAgICAgICBmb3IgKHZhciByZWNydWl0X2kgaW4gdGhpcy5yZWNydWl0X2xpc3QpIHtcbiAgICAgICAgICAgIHJlY3J1aXRfZGF0YSA9IHRoaXMucmVjcnVpdF9saXN0W3JlY3J1aXRfaV07XG4gICAgICAgICAgICBpZiAocmVjcnVpdF9kYXRhLmdyb3VwX2lkID09PSBncm91cF9pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWNydWl0X2RhdGFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG5cbiAgICBnZXRTY29yZVN1bW1vbk5lZWRDb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgIHZhciBzY29yZV9yZWNydWl0X2luZm8gPSBDb25maWcucmVjcnVpdF9kYXRhLmRhdGFfcGFydG5lcnN1bW1vbl9kYXRhW1BhcnRuZXJzdW1tb25Db25zdC5TdW1tb25fVHlwZS5TY29yZV07XG4gICAgICAgIGlmIChzY29yZV9yZWNydWl0X2luZm8uZXhjaGFuZ2Vfb25jZSAmJiBzY29yZV9yZWNydWl0X2luZm8uZXhjaGFuZ2Vfb25jZVswXSkge1xuICAgICAgICAgICAgY291bnQgPSBzY29yZV9yZWNydWl0X2luZm8uZXhjaGFuZ2Vfb25jZVswXVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY291bnRcbiAgICB9LFxuXG4gICAgLy8g5pu05paw57qi54K554q25oCBXG4gICAgdXBkYXRlTWFpblNjZW5lUmVkUG9pbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgTWFpblNjZW5lQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWluc2NlbmVfY29udHJvbGxlclwiKTtcbiAgICAgICAgdmFyIFNjZW5lQ29uc3QgPSByZXF1aXJlKFwic2NlbmVfY29uc3RcIik7XG4gICAgICAgIC8vIOaYr+WQpuacieWFjei0uVxuICAgICAgICB2YXIgaXNfc2hvd19yZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgcmVjcnVpdF9pIGluIHRoaXMucmVjcnVpdF9saXN0KSB7XG4gICAgICAgICAgICB2YXIgZ3JvdXBfZGF0YSA9IHRoaXMucmVjcnVpdF9saXN0W3JlY3J1aXRfaV07XG4gICAgICAgICAgICBpZiAoZ3JvdXBfZGF0YS5kcmF3X2xpc3QpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBkcmF3X2kgaW4gZ3JvdXBfZGF0YS5kcmF3X2xpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRyYXdfZGF0YSA9IGdyb3VwX2RhdGEuZHJhd19saXN0W2RyYXdfaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChkcmF3X2RhdGEua3ZfbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgdGltZV9pIGluIGRyYXdfZGF0YS5rdl9saXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVfaW5mbyA9IGRyYXdfZGF0YS5rdl9saXN0W3RpbWVfaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVfaW5mby5rZXkgPT0gUGFydG5lcnN1bW1vbkNvbnN0LlJlY3J1aXRfS2V5LkZyZWVfQ291bnQgJiYgdGltZV9pbmZvLnZhbCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2hvd19yZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOWmguaenOayoeacieWFjei0ueWIh+ayoeacieS7juaJk+W8gOi/h+eVjOmdouS8gem5hemBk+WFt+aVsOmHj+WFhei2s+WImeaPkOekuue6oueCuVxuICAgICAgICBpZiAoIWlzX3Nob3dfcmVkICYmICF0aGlzLmhhZF9vcGVuX3ZpZXcpIHtcbiAgICAgICAgICAgIHZhciBCYWNrcGFja0NvbnRyb2xsZXIgPSByZXF1aXJlKFwiYmFja3BhY2tfY29udHJvbGxlclwiKTtcbiAgICAgICAgICAgIHZhciBub3JtYWxfaXRlbV9udW0gPSBCYWNrcGFja0NvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRNb2RlbCgpLmdldEl0ZW1OdW1CeUJpZChQYXJ0bmVyc3VtbW9uQ29uc3QuTm9ybWFsX0lkKTtcbiAgICAgICAgICAgIHZhciBhZHZhbmNlZF9pdGVtX251bSA9IEJhY2twYWNrQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLmdldE1vZGVsKCkuZ2V0SXRlbU51bUJ5QmlkKFBhcnRuZXJzdW1tb25Db25zdC5Ob3JtYWxfSWQpOyAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKG5vcm1hbF9pdGVtX251bSA+IDAgfHwgYWR2YW5jZWRfaXRlbV9udW0gPiAwKVxuICAgICAgICAgICAgICAgIGlzX3Nob3dfcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIE1haW5TY2VuZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zZXRCdWlsZFJlZFN0YXR1cyhTY2VuZUNvbnN0LkNlbnRlclNjZW5lQnVpbGQuc3VtbW9uLCBpc19zaG93X3JlZCk7XG4gICAgfSxcblxuXG4gICAgc2V0T3BlblBhcnRuZXJTdW1tb25GbGFnOiBmdW5jdGlvbihzdGF0dXMpIHtcbiAgICAgICAgdGhpcy5oYWRfb3Blbl92aWV3ID0gc3RhdHVzO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlZFBvaW50KCkgICAgXG4gICAgfSxcblxuICAgIHVwZGF0ZVJlZFBvaW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgUmVkTWdyLmdldEluc3RhbmNlKCkuYWRkQ2FsSGFuZGxlcih0aGlzLnVwZGF0ZU1haW5TY2VuZVJlZFBvaW50LmJpbmQodGhpcyksIFJlZElkcy5QYXJ0bmVyU3VtbW9uKTtcbiAgICB9LFxuICAgIC8v5b+r6YCf54K55Ye76Ze06ZqUXG4gICAgY2xpY2tJbnRlcnZhbFN0YXR1cyhzdGF0dXMpe1xuICAgICAgICB0aGlzLnVwZGF0ZVRpbWUgPSBzdGF0dXNcbiAgICB9LFxuICAgIGdldENsaWNrU3RhdHVzKCl7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVRpbWVcbiAgICB9XG59KTsiXX0=
|