|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/sys/sys_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, '46939PBCCVJr6c6VCwcZI01', 'sys_controller');
|
// Scripts/sys/sys_controller.js
|
|
"use strict";
|
|
var PartnerConst = require("partner_const");
|
|
var ActionConst = require("action_const");
|
|
var RoleController = require("role_controller");
|
|
var RoleEvent = require("role_event");
|
|
var AdventureActivityController = require("adventureactivity_controller");
|
|
var AdventureActivityConst = require("adventureactivity_const");
|
|
var SysController = cc.Class({
|
"extends": BaseController,
|
ctor: function ctor() {
|
this.initAttrProtocalsFunList();
|
},
|
registerEvents: function registerEvents() {
|
this.role_vo = RoleController.getInstance().getRoleVo();
|
|
if (this.role_vo) {
|
this.role_assets_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
|
if (key == "lev" || key == "open_day") {
|
this.requestAttrProtocals();
|
}
|
}.bind(this));
|
}
|
|
this.login_event_success = gcore.GlobalEvent.bind(EventId.EVT_RE_LINK_GAME, function () {
|
var GuideController = require("guide_controller");
|
|
if (!RoleController.getInstance().checkRoleSetNameViewIsOpen() && !GuideController.getInstance().isInGuide()) {
|
// 取名界面没打开,并且不在引导中,则跳到主城
|
var MainuiController = require("mainui_controller");
|
|
var MainuiConst = require("mainui_const");
|
|
MainuiController.getInstance().changeMainUIStatus(MainuiConst.btn_index.main_scene);
|
}
|
|
this.resetAttrProtocals();
|
this.requestReLinkProtocals();
|
}.bind(this));
|
},
|
// 登陆时请求的协议
|
requestLoginProtocals: function requestLoginProtocals(finish_cb) {
|
var function_list = [// function () { this.SendProtocal(10906, {}) }.bind(this), // 开服天数
|
// function () { this.SendProtocal(10380, {}) }.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(24600, {});
|
}.bind(this), // 问卷
|
function () {
|
var id = 0;
|
|
if (PLATFORM_TYPR == "SH_SDK") {
|
//深海小程序
|
id = 1;
|
}
|
|
this.SendProtocal(16691, {
|
id: id
|
});
|
}.bind(this), // 爱微游分享状态
|
function () {
|
var id = 0;
|
|
if (PLATFORM_TYPR == "SH_SDK") {
|
//深海小程序
|
id = 1;
|
}
|
|
this.SendProtocal(16693, {
|
id: id
|
});
|
}.bind(this), // 爱微游关注状态
|
function () {
|
if (PLATFORM_TYPR == "SH_SDK") {
|
//深海小程序
|
this.SendProtocal(16695, {});
|
}
|
}.bind(this), // 深海小程序收藏状态
|
function () {
|
this.SendProtocal(10500, {});
|
}.bind(this), // 背包
|
function () {
|
this.SendProtocal(10501, {});
|
}.bind(this), // 背包
|
function () {
|
this.SendProtocal(10325, {});
|
}.bind(this), // 头像信息
|
function () {
|
this.SendProtocal(13006, {});
|
}.bind(this), // 剧情副本基础信息
|
function () {
|
this.SendProtocal(13008, {});
|
}.bind(this), // 剧情副本通关奖励
|
function () {
|
this.SendProtocal(13011, {});
|
}.bind(this), // 剧情副本Buff数据
|
function () {
|
this.SendProtocal(13017, {});
|
}.bind(this), // 剧情副本挂机数据
|
// function () { this.SendProtocal(10905, {}) }.bind(this), // 世界等级
|
function () {
|
this.SendProtocal(20700, {});
|
}.bind(this), // 星河神殿挑战次数
|
function () {
|
this.SendProtocal(30001, {});
|
}.bind(this), // 新主线任务
|
function () {
|
this.SendProtocal(10317, {});
|
}.bind(this), // 点赞数量
|
function () {
|
this.SendProtocal(21100, {});
|
}.bind(this), // 七天登陆
|
function () {
|
this.SendProtocal(13601, {});
|
}.bind(this), // 七日目标
|
function () {
|
this.SendProtocal(16637, {});
|
}.bind(this), // 探宝
|
function () {
|
this.SendProtocal(24700, {});
|
}.bind(this), // 基金
|
function () {
|
this.SendProtocal(21012, {});
|
}.bind(this), // 首充
|
function () {
|
this.SendProtocal(21010, {});
|
}.bind(this), // 每日首充
|
// function () { this.SendProtocal(25000, {}) }.bind(this), // 元素圣殿
|
function () {
|
this.SendProtocal(23606, {});
|
}.bind(this), // 点金
|
function () {
|
this.SendProtocal(24204, {});
|
}.bind(this), // 公会战状态
|
function () {
|
this.SendProtocal(24220, {});
|
}.bind(this), // 公会战宝箱
|
// function () { this.SendProtocal(22200, {}) }.bind(this), // 圣物
|
// function () { this.SendProtocal(24125, {}) }.bind(this), // 神器幻化
|
// function () { this.SendProtocal(24128, {}) }.bind(this), // 神器任务
|
function () {
|
this.SendProtocal(11000, {});
|
}.bind(this), // 英雄数据
|
function () {
|
this.SendProtocal(11040, {});
|
}.bind(this), // 英雄图鉴
|
function () {
|
this.SendProtocal(11037, {});
|
}.bind(this), // 符文祝福
|
function () {
|
this.SendProtocal(11213, {
|
type_list: [{
|
type: PartnerConst.Fun_Form.Drama
|
}, {
|
type: PartnerConst.Fun_Form.Arena
|
}]
|
});
|
}.bind(this), // 阵法
|
function () {
|
this.SendProtocal(24410, {});
|
}.bind(this), // 远征红点
|
// function () { this.SendProtocal(24411, {}) }.bind(this), // 远征派遣红点
|
function () {
|
this.SendProtocal(24400, {});
|
}.bind(this), // 远征数据
|
function () {
|
this.SendProtocal(24405, {});
|
}.bind(this), // 远征支援
|
function () {
|
this.SendProtocal(19807, {});
|
}.bind(this), // 邀请码(自己绑定的角色)
|
function () {
|
this.SendProtocal(19804, {});
|
}.bind(this), // 邀请码红点
|
function () {
|
this.SendProtocal(19800, {});
|
}.bind(this), // 邀请码
|
function () {
|
this.SendProtocal(19802, {});
|
}.bind(this), // 邀请码
|
// function () { this.SendProtocal(24312, {}) }.bind(this), // 天梯是否开启
|
function () {
|
this.SendProtocal(10800, {});
|
}.bind(this), // 邮件
|
function () {
|
this.SendProtocal(10926, {});
|
}.bind(this), // 在线奖励
|
function () {
|
this.SendProtocal(23200, {});
|
}.bind(this), // 召唤数据
|
function () {
|
this.SendProtocal(23214, {});
|
}.bind(this), // 英雄置换
|
// function () { this.SendProtocal(13604, {}) }.bind(this), // 七日目标任务
|
// function () { this.SendProtocal(13607, {}) }.bind(this), // 七日目标等级奖励
|
function () {
|
this.SendProtocal(13030, {});
|
}.bind(this), // 材料副本
|
function () {
|
this.SendProtocal(10400, {});
|
}.bind(this), // 任务列表
|
function () {
|
this.SendProtocal(16400, {});
|
}.bind(this), // 成就列表
|
function () {
|
this.SendProtocal(20300, {});
|
}.bind(this), // 活跃度
|
function () {
|
this.SendProtocal(19906, {});
|
}.bind(this), // 录像馆点赞
|
function () {
|
this.SendProtocal(16707, {});
|
}.bind(this), // 月卡奖励
|
function () {
|
this.SendProtocal(16710, {});
|
}.bind(this), // VIP礼包红点
|
function () {
|
this.SendProtocal(16712, {});
|
}.bind(this), // 累充红点
|
function () {
|
this.SendProtocal(30102, {});
|
}.bind(this), // 皮肤购买红点
|
function () {
|
this.SendProtocal(21006, {});
|
}.bind(this), // 每日礼包
|
function () {
|
this.SendProtocal(24502, {});
|
}.bind(this), // 特权礼包
|
function () {
|
this.SendProtocal(14100, {});
|
}.bind(this), // 签到红点
|
function () {
|
this.SendProtocal(16705, {});
|
}.bind(this), // 月卡信息
|
function () {
|
this.SendProtocal(21008, {});
|
}.bind(this), // 每日礼
|
function () {
|
this.SendProtocal(16635, {});
|
}.bind(this), // 手机绑定奖励状态
|
function () {
|
this.SendProtocal(16697, {});
|
}.bind(this), // 手机绑定奖励状态
|
function () {
|
this.SendProtocal(16633, {});
|
}.bind(this), // 微信公众号状态
|
function () {
|
this.SendProtocal(23205, {});
|
}.bind(this), // 召唤5星必出
|
function () {
|
this.SendProtocal(13040, {});
|
}.bind(this), // 快速作战
|
function () {
|
this.SendProtocal(11320, {});
|
}.bind(this), // 星命塔数据
|
// function () { this.SendProtocal(20706, {}) }.bind(this), // 星河神殿每天第一次登录红点
|
function () {
|
this.SendProtocal(16687, {
|
bid: ActionConst.ActionRankCommonType.open_server
|
});
|
}.bind(this), // 新服限购
|
function () {
|
this.SendProtocal(16687, {
|
bid: ActionConst.ActionRankCommonType.high_value_gift
|
});
|
}.bind(this), // 小额礼包
|
function () {
|
this.SendProtocal(16687, {
|
bid: ActionConst.ActionRankCommonType.mysterious_store
|
});
|
}.bind(this), // 神秘杂货店
|
function () {
|
this.SendProtocal(21020, {});
|
}.bind(this), // 每日1元
|
// function () { this.SendProtocal(25200, {}) }.bind(this), // 天界副本
|
// function () { this.SendProtocal(25219, {}) }.bind(this), // 神装转盘
|
function () {
|
this.SendProtocal(25300, {});
|
}.bind(this), // 战令活动
|
function () {
|
this.SendProtocal(25303, {});
|
}.bind(this), function () {
|
this.SendProtocal(16730, {});
|
}.bind(this), //赠送VIP
|
function () {
|
this.guildRedBagProtocal();
|
}.bind(this), // 公会红包
|
function () {
|
this.adventrueProtocal();
|
}.bind(this), // 冒险
|
function () {
|
this.endlessProtocal();
|
}.bind(this), // 无尽试炼
|
function () {
|
this.voyageProtocal();
|
}.bind(this), // 远航
|
function () {
|
this.SendProtocal(19804, {});
|
}.bind(this) // 邀请码红点
|
];
|
var cur_index = 0;
|
this.ping_timer_id = gcore.Timer.set(function () {
|
function_list[cur_index]();
|
cur_index++; // game.updateProtoProgress(cur_index / function_list.length);
|
|
if (cur_index == function_list.length - 1) {
|
if (finish_cb) finish_cb();
|
}
|
}.bind(this), 20, function_list.length);
|
},
|
requestReLinkProtocals: function requestReLinkProtocals() {
|
var function_list = [function () {
|
this.SendProtocal(10500, {});
|
}.bind(this), // 开服天数
|
function () {
|
this.SendProtocal(10501, {});
|
}.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(13006, {});
|
}.bind(this), // 问卷
|
function () {
|
this.SendProtocal(13008, {});
|
}.bind(this), // 开服天数
|
function () {
|
this.SendProtocal(13011, {});
|
}.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(13017, {});
|
}.bind(this), // 问卷
|
// function () { this.SendProtocal(25000, {}) }.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(24204, {});
|
}.bind(this), // 问卷
|
function () {
|
this.SendProtocal(11000, {});
|
}.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(11040, {});
|
}.bind(this), // 问卷
|
function () {
|
this.SendProtocal(11037, {});
|
}.bind(this), // 开服天数
|
function () {
|
this.SendProtocal(11213, {
|
type_list: [{
|
type: PartnerConst.Fun_Form.Drama
|
}, {
|
type: PartnerConst.Fun_Form.Arena
|
}]
|
});
|
}.bind(this), // 阵法
|
function () {
|
this.SendProtocal(24410, {});
|
}.bind(this), // 问卷
|
// function () { this.SendProtocal(24411, {}) }.bind(this), // 开服天数
|
function () {
|
this.SendProtocal(24400, {});
|
}.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(24405, {});
|
}.bind(this), // 问卷
|
// function () { this.SendProtocal(24312, {}) }.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(23200, {});
|
}.bind(this), // 问卷
|
function () {
|
this.SendProtocal(10400, {});
|
}.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(16400, {});
|
}.bind(this), // 问卷
|
function () {
|
this.SendProtocal(20300, {});
|
}.bind(this), // 开服天数
|
// function () { this.SendProtocal(19906, {}) }.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(21006, {});
|
}.bind(this), // 问卷
|
function () {
|
this.SendProtocal(16705, {});
|
}.bind(this), // 开服天数
|
function () {
|
this.SendProtocal(24700, {});
|
}.bind(this), // 开服时间
|
function () {
|
this.SendProtocal(25300, {});
|
}.bind(this), // 战令任务红点
|
function () {
|
this.guildRedBagProtocal();
|
}.bind(this), // 公会红包
|
function () {
|
this.adventrueProtocal();
|
}.bind(this), // 冒险
|
function () {
|
this.endlessProtocal();
|
}.bind(this), // 无尽试炼
|
function () {
|
this.voyageProtocal();
|
}.bind(this), // 远航
|
function () {
|
this.arenaProtocal();
|
}.bind(this), // 竞技场
|
function () {
|
this.SendProtocal(30001, {});
|
}.bind(this) // 新主线任务
|
];
|
var cur_index = 0;
|
this.ping_timer_id = gcore.Timer.set(function () {
|
function_list[cur_index]();
|
cur_index++;
|
}.bind(this), 10, function_list.length);
|
},
|
|
/******************以下是一些特殊的协议请求*********************/
|
initAttrProtocalsFunList: function initAttrProtocalsFunList(force) {
|
if (force || !this.attr_fun_list) {
|
this.attr_fun_list = [{
|
func: function () {
|
this.adventrueProtocal();
|
}.bind(this),
|
req_flag: false
|
}, {
|
func: function () {
|
this.arenaProtocal();
|
}.bind(this),
|
req_flag: false
|
}, {
|
func: function () {
|
this.endlessProtocal();
|
}.bind(this),
|
req_flag: false
|
}, {
|
func: function () {
|
this.voyageProtocal();
|
}.bind(this),
|
req_flag: false
|
}];
|
}
|
},
|
// 检测是否请求过数据
|
checkProtocalIsCanRequest: function checkProtocalIsCanRequest(id) {
|
if (this.attr_fun_list && this.attr_fun_list[id] && !this.attr_fun_list[id].req_flag) return true;
|
return false;
|
},
|
// 公会红包(只需要登陆和断线时请求,加入公会时,后端会主动推)
|
guildRedBagProtocal: function guildRedBagProtocal() {
|
if (this.role_vo && this.role_vo.gid != 0 && this.role_vo.gsrv_id != "") this.SendProtocal(13534, {});
|
},
|
// 冒险的协议请求
|
adventrueProtocal: function adventrueProtocal(forces) {
|
var is_open = forces;
|
|
if (is_open == null) {
|
is_open = AdventureActivityController.getInstance().isOpenActivity(AdventureActivityConst.Ground_Type.adventure);
|
}
|
|
if (is_open == false) return;
|
if (!this.checkProtocalIsCanRequest(0)) return;
|
this.SendProtocal(20600, {}); // 冒险基础信息
|
|
this.SendProtocal(20601, {}); // 冒险buff信息
|
|
this.SendProtocal(20604, {}); // 冒险伙伴信息数据
|
|
this.SendProtocal(20634, {}); // 冒险宝箱
|
|
if (this.attr_fun_list[0]) {
|
this.attr_fun_list[0].req_flag = true;
|
}
|
},
|
endlessProtocal: function endlessProtocal() {
|
var open_config = Config.endless_data.data_const.open_lev;
|
if (!open_config) return;
|
|
var MainuiController = require("mainui_controller");
|
|
var is_open = MainuiController.getInstance().checkIsOpenByActivate(open_config.val);
|
if (!is_open) return;
|
if (!this.checkProtocalIsCanRequest(2)) return;
|
this.SendProtocal(23900, {});
|
this.SendProtocal(23903, {});
|
this.SendProtocal(23906, {});
|
if (this.attr_fun_list[2]) this.attr_fun_list[2].req_flag = true;
|
},
|
// 远航协议请求
|
voyageProtocal: function voyageProtocal() {
|
var lev_config = Config.shipping_data.data_const["guild_lev"];
|
if (!lev_config || !this.role_vo || lev_config.val > this.role_vo.lev) return;
|
if (!this.checkProtocalIsCanRequest(3)) return;
|
this.SendProtocal(23800, {});
|
this.SendProtocal(23805, {});
|
this.SendProtocal(23821, {});
|
if (this.attr_fun_list[3]) this.attr_fun_list[3].req_flag = true;
|
},
|
resetAttrProtocals: function resetAttrProtocals() {
|
this.initAttrProtocalsFunList(true);
|
},
|
requestAttrProtocals: function requestAttrProtocals() {
|
if (!this.attr_fun_list) return;
|
|
for (var fun_i in this.attr_fun_list) {
|
var fun_info = this.attr_fun_list[fun_i];
|
|
if (!fun_info.req_flag) {
|
fun_info.func();
|
}
|
}
|
},
|
//竞技场的协议请求
|
arenaProtocal: function arenaProtocal() {
|
var config = Config.arena_data.data_const.limit_lev;
|
if (!config || !this.role_vo || this.role_vo.lev < config.val) return;
|
if (!this.checkProtocalIsCanRequest(1)) return;
|
this.SendProtocal(20208, {});
|
this.SendProtocal(20200, {});
|
this.SendProtocal(20250, {});
|
this.SendProtocal(20223, {});
|
if (this.attr_fun_list[1]) this.attr_fun_list[1].req_flag = true;
|
}
|
});
|
module.exports = SysController;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcc3lzXFxzeXNfY29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJQYXJ0bmVyQ29uc3QiLCJyZXF1aXJlIiwiQWN0aW9uQ29uc3QiLCJSb2xlQ29udHJvbGxlciIsIlJvbGVFdmVudCIsIkFkdmVudHVyZUFjdGl2aXR5Q29udHJvbGxlciIsIkFkdmVudHVyZUFjdGl2aXR5Q29uc3QiLCJTeXNDb250cm9sbGVyIiwiY2MiLCJDbGFzcyIsIkJhc2VDb250cm9sbGVyIiwiY3RvciIsImluaXRBdHRyUHJvdG9jYWxzRnVuTGlzdCIsInJlZ2lzdGVyRXZlbnRzIiwicm9sZV92byIsImdldEluc3RhbmNlIiwiZ2V0Um9sZVZvIiwicm9sZV9hc3NldHNfZXZlbnQiLCJiaW5kIiwiRXZlbnRJZCIsIlVQREFURV9ST0xFX0FUVFJJQlVURSIsImtleSIsInZhbHVlIiwicmVxdWVzdEF0dHJQcm90b2NhbHMiLCJsb2dpbl9ldmVudF9zdWNjZXNzIiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsIkVWVF9SRV9MSU5LX0dBTUUiLCJHdWlkZUNvbnRyb2xsZXIiLCJjaGVja1JvbGVTZXROYW1lVmlld0lzT3BlbiIsImlzSW5HdWlkZSIsIk1haW51aUNvbnRyb2xsZXIiLCJNYWludWlDb25zdCIsImNoYW5nZU1haW5VSVN0YXR1cyIsImJ0bl9pbmRleCIsIm1haW5fc2NlbmUiLCJyZXNldEF0dHJQcm90b2NhbHMiLCJyZXF1ZXN0UmVMaW5rUHJvdG9jYWxzIiwicmVxdWVzdExvZ2luUHJvdG9jYWxzIiwiZmluaXNoX2NiIiwiZnVuY3Rpb25fbGlzdCIsIlNlbmRQcm90b2NhbCIsImlkIiwiUExBVEZPUk1fVFlQUiIsInR5cGVfbGlzdCIsInR5cGUiLCJGdW5fRm9ybSIsIkRyYW1hIiwiQXJlbmEiLCJiaWQiLCJBY3Rpb25SYW5rQ29tbW9uVHlwZSIsIm9wZW5fc2VydmVyIiwiaGlnaF92YWx1ZV9naWZ0IiwibXlzdGVyaW91c19zdG9yZSIsImd1aWxkUmVkQmFnUHJvdG9jYWwiLCJhZHZlbnRydWVQcm90b2NhbCIsImVuZGxlc3NQcm90b2NhbCIsInZveWFnZVByb3RvY2FsIiwiY3VyX2luZGV4IiwicGluZ190aW1lcl9pZCIsIlRpbWVyIiwic2V0IiwibGVuZ3RoIiwiYXJlbmFQcm90b2NhbCIsImZvcmNlIiwiYXR0cl9mdW5fbGlzdCIsImZ1bmMiLCJyZXFfZmxhZyIsImNoZWNrUHJvdG9jYWxJc0NhblJlcXVlc3QiLCJnaWQiLCJnc3J2X2lkIiwiZm9yY2VzIiwiaXNfb3BlbiIsImlzT3BlbkFjdGl2aXR5IiwiR3JvdW5kX1R5cGUiLCJhZHZlbnR1cmUiLCJvcGVuX2NvbmZpZyIsIkNvbmZpZyIsImVuZGxlc3NfZGF0YSIsImRhdGFfY29uc3QiLCJvcGVuX2xldiIsImNoZWNrSXNPcGVuQnlBY3RpdmF0ZSIsInZhbCIsImxldl9jb25maWciLCJzaGlwcGluZ19kYXRhIiwibGV2IiwiZnVuX2kiLCJmdW5faW5mbyIsImNvbmZpZyIsImFyZW5hX2RhdGEiLCJsaW1pdF9sZXYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVksR0FBR0MsT0FBTyxDQUFDLGVBQUQsQ0FBMUI7O0FBQ0EsSUFBSUMsV0FBVyxHQUFHRCxPQUFPLENBQUMsY0FBRCxDQUF6Qjs7QUFDQSxJQUFJRSxjQUFjLEdBQUdGLE9BQU8sQ0FBQyxpQkFBRCxDQUE1Qjs7QUFDQSxJQUFJRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxZQUFELENBQXZCOztBQUNBLElBQUlJLDJCQUEyQixHQUFHSixPQUFPLENBQUMsOEJBQUQsQ0FBekM7O0FBQ0EsSUFBSUssc0JBQXNCLEdBQUVMLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJTSxhQUFhLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ3pCLGFBQVNDLGNBRGdCO0FBR3pCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxTQUFLQyx3QkFBTDtBQUNILEdBTHdC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VixFQUF5Qjs7QUFFekIsU0FBSyxJQUFJcUIsS0FBVCxJQUFrQixLQUFLckIsYUFBdkIsRUFBc0M7QUFDbEMsVUFBSXNCLFFBQVEsR0FBRyxLQUFLdEIsYUFBTCxDQUFtQnFCLEtBQW5CLENBQWY7O0FBQ0EsVUFBSSxDQUFDQyxRQUFRLENBQUNwQixRQUFkLEVBQXdCO0FBQ3BCb0IsUUFBQUEsUUFBUSxDQUFDckIsSUFBVDtBQUNIO0FBQ0o7QUFDSixHQWhTd0I7QUFpU3pCO0FBQ0FILEVBQUFBLGFBQWEsRUFBRSx5QkFBVztBQUN0QixRQUFJeUIsTUFBTSxHQUFHWCxNQUFNLENBQUNZLFVBQVAsQ0FBa0JWLFVBQWxCLENBQTZCVyxTQUExQztBQUNBLFFBQUksQ0FBQ0YsTUFBRCxJQUFXLENBQUMsS0FBSzFFLE9BQWpCLElBQTRCLEtBQUtBLE9BQUwsQ0FBYXVFLEdBQWIsR0FBbUJHLE1BQU0sQ0FBQ04sR0FBMUQsRUFDSTtBQUVKLFFBQUksQ0FBQyxLQUFLZCx5QkFBTCxDQUErQixDQUEvQixDQUFMLEVBQXdDO0FBRXhDLFNBQUszQixZQUFMLENBQWtCLEtBQWxCLEVBQXlCLEVBQXpCO0FBQ0EsU0FBS0EsWUFBTCxDQUFrQixLQUFsQixFQUF5QixFQUF6QjtBQUNBLFNBQUtBLFlBQUwsQ0FBa0IsS0FBbEIsRUFBeUIsRUFBekI7QUFDQSxTQUFLQSxZQUFMLENBQWtCLEtBQWxCLEVBQXlCLEVBQXpCO0FBQ0EsUUFBSSxLQUFLd0IsYUFBTCxDQUFtQixDQUFuQixDQUFKLEVBQ0ksS0FBS0EsYUFBTCxDQUFtQixDQUFuQixFQUFzQkUsUUFBdEIsR0FBaUMsSUFBakM7QUFDUDtBQS9Td0IsQ0FBVCxDQUFwQjtBQWtUQXdCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnJGLGFBQWpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUGFydG5lckNvbnN0ID0gcmVxdWlyZShcInBhcnRuZXJfY29uc3RcIilcclxudmFyIEFjdGlvbkNvbnN0ID0gcmVxdWlyZShcImFjdGlvbl9jb25zdFwiKTtcclxudmFyIFJvbGVDb250cm9sbGVyID0gcmVxdWlyZShcInJvbGVfY29udHJvbGxlclwiKTtcclxudmFyIFJvbGVFdmVudCA9IHJlcXVpcmUoXCJyb2xlX2V2ZW50XCIpO1xyXG52YXIgQWR2ZW50dXJlQWN0aXZpdHlDb250cm9sbGVyID0gcmVxdWlyZShcImFkdmVudHVyZWFjdGl2aXR5X2NvbnRyb2xsZXJcIik7XHJcbnZhciBBZHZlbnR1cmVBY3Rpdml0eUNvbnN0PSByZXF1aXJlKFwiYWR2ZW50dXJlYWN0aXZpdHlfY29uc3RcIik7XHJcblxyXG52YXIgU3lzQ29udHJvbGxlciA9IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IEJhc2VDb250cm9sbGVyLFxyXG5cclxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmluaXRBdHRyUHJvdG9jYWxzRnVuTGlzdCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICByZWdpc3RlckV2ZW50czogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdGhpcy5yb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcclxuICAgICAgICBpZiAodGhpcy5yb2xlX3ZvKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm9sZV9hc3NldHNfZXZlbnQgPSB0aGlzLnJvbGVfdm8uYmluZChFdmVudElkLlVQREFURV9ST0xFX0FUVFJJQlVURSwgZnVuY3Rpb24oa2V5LCB2YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICBpZihrZXkgPT0gXCJsZXZcIiB8fCBrZXkgPT0gXCJvcGVuX2RheVwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RBdHRyUHJvdG9jYWxzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9naW5fZXZlbnRfc3VjY2VzcyA9IGdjb3JlLkdsb2JhbEV2ZW50LmJpbmQoRXZlbnRJZC5FVlRfUkVfTElOS19HQU1FLCAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgR3VpZGVDb250cm9sbGVyID0gcmVxdWlyZShcImd1aWRlX2NvbnRyb2xsZXJcIik7XHJcbiAgICAgICAgICAgIGlmICAoIVJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuY2hlY2tSb2xlU2V0TmFtZVZpZXdJc09wZW4oKSAmJiAhR3VpZGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuaXNJbkd1aWRlKCkpeyAvLyDlj5blkI3nlYzpnaLmsqHmiZPlvIDvvIzlubbkuJTkuI3lnKjlvJXlr7zkuK3vvIzliJnot7PliLDkuLvln45cclxuICAgICAgICAgICAgICAgIHZhciBNYWludWlDb250cm9sbGVyID0gcmVxdWlyZShcIm1haW51aV9jb250cm9sbGVyXCIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIE1haW51aUNvbnN0ID0gcmVxdWlyZShcIm1haW51aV9jb25zdFwiKTtcclxuICAgICAgICAgICAgICAgIE1haW51aUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5jaGFuZ2VNYWluVUlTdGF0dXMoTWFpbnVpQ29uc3QuYnRuX2luZGV4Lm1haW5fc2NlbmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRBdHRyUHJvdG9jYWxzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdFJlTGlua1Byb3RvY2FscygpOyAgICAgICAgICAgIFxyXG4gICAgICAgIH0pLmJpbmQodGhpcykpICAgICAgICBcclxuICAgIH0sXHJcblxyXG4gICAgLy8g55m76ZmG5pe26K+35rGC55qE5Y2P6K6uXHJcbiAgICByZXF1ZXN0TG9naW5Qcm90b2NhbHM6IGZ1bmN0aW9uKGZpbmlzaF9jYikge1xyXG4gICAgXHR2YXIgZnVuY3Rpb25fbGlzdCA9IFtcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDkwNiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDM4MCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDYwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGlkID0gMDtcclxuICAgICAgICAgICAgICAgIGlmIChQTEFURk9STV9UWVBSID09IFwiU0hfU0RLXCIpIHsvL+a3sea1t+Wwj+eoi+W6j1xyXG4gICAgICAgICAgICAgICAgICAgIGlkID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDE2NjkxLCB7aWQ6aWR9KVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcyksICAgLy8g54ix5b6u5ri45YiG5Lqr54q25oCBXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoUExBVEZPUk1fVFlQUiA9PSBcIlNIX1NES1wiKSB7Ly/mt7HmtbflsI/nqIvluo9cclxuICAgICAgICAgICAgICAgICAgICBpZCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlbmRQcm90b2NhbCgxNjY5Mywge2lkOmlkfSlcclxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAgIC8vIOeIseW+rua4uOWFs+azqOeKtuaAgVxyXG5cclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKFBMQVRGT1JNX1RZUFIgPT0gXCJTSF9TREtcIikgey8v5rex5rW35bCP56iL5bqPXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMTY2OTUsIHt9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcyksICAgLy8g5rex5rW35bCP56iL5bqP5pS26JeP54q25oCBXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDUwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDog4zljIVcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDUwMSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDog4zljIVcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDMyNSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlpLTlg4/kv6Hmga9cclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAwNiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDliafmg4Xlia/mnKzln7rnoYDkv6Hmga9cclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAwOCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDliafmg4Xlia/mnKzpgJrlhbPlpZblirFcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAxMSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDliafmg4Xlia/mnKxCdWZm5pWw5o2uXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTMwMTcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Ymn5oOF5Ymv5pys5oyC5py65pWw5o2uXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTA5MDUsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5LiW55WM562J57qnXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjA3MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5pif5rKz56We5q6/5oyR5oiY5qyh5pWwXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMzAwMDEsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5paw5Li757q/5Lu75YqhXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTAzMTcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g54K56LWe5pWw6YePXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjExMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5LiD5aSp55m76ZmGXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTM2MDEsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5LiD5pel55uu5qCHXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY2MzcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5o6i5a6dXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQ3MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Z+66YeRXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjEwMTIsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6aaW5YWFXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjEwMTAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5q+P5pel6aaW5YWFXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjUwMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5YWD57Sg5Zyj5q6/XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjM2MDYsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g54K56YeRXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQyMDQsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5YWs5Lya5oiY54q25oCBXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQyMjAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5YWs5Lya5oiY5a6d566xXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjIyMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Zyj54mpXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQxMjUsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g56We5Zmo5bm75YyWXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQxMjgsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g56We5Zmo5Lu75YqhXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTEwMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6Iux6ZuE5pWw5o2uXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTEwNDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6Iux6ZuE5Zu+6Ym0XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTEwMzcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g56ym5paH56Wd56aPXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTEyMTMsIHt0eXBlX2xpc3Q6IFt7dHlwZTogUGFydG5lckNvbnN0LkZ1bl9Gb3JtLkRyYW1hfSwge3R5cGU6IFBhcnRuZXJDb25zdC5GdW5fRm9ybS5BcmVuYX1dfSkgfS5iaW5kKHRoaXMpLCAgICAgLy8g6Zi15rOVXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQ0MTAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6L+c5b6B57qi54K5XHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQ0MTEsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6L+c5b6B5rS+6YGj57qi54K5XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQ0MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6L+c5b6B5pWw5o2uXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQ0MDUsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6L+c5b6B5pSv5o+0XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTk4MDcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6YKA6K+356CB77yI6Ieq5bex57uR5a6a55qE6KeS6Imy77yJXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTk4MDQsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6YKA6K+356CB57qi54K5XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTk4MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6YKA6K+356CBXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTk4MDIsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6YKA6K+356CBXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQzMTIsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5aSp5qKv5piv5ZCm5byA5ZCvXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTA4MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6YKu5Lu2XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTA5MjYsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Zyo57q/5aWW5YqxXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjMyMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Y+s5ZSk5pWw5o2uXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjMyMTQsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g6Iux6ZuE572u5o2iXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTM2MDQsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5LiD5pel55uu5qCH5Lu75YqhXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTM2MDcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5LiD5pel55uu5qCH562J57qn5aWW5YqxXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTMwMzAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5p2Q5paZ5Ymv5pysXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTA0MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Lu75Yqh5YiX6KGoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY0MDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5oiQ5bCx5YiX6KGoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjAzMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5rS76LeD5bqmXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTk5MDYsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5b2V5YOP6aaG54K56LWeXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY3MDcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5pyI5Y2h5aWW5YqxXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY3MTAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8gVklQ56S85YyF57qi54K5XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY3MTIsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g57Sv5YWF57qi54K5XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMzAxMDIsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g55qu6IKk6LSt5Lmw57qi54K5XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjEwMDYsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5q+P5pel56S85YyFXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjQ1MDIsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g54m55p2D56S85YyFXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTQxMDAsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g562+5Yiw57qi54K5XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY3MDUsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5pyI5Y2h5L+h5oGvXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjEwMDgsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5q+P5pel56S8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY2MzUsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5omL5py657uR5a6a5aWW5Yqx54q25oCBXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY2OTcsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5omL5py657uR5a6a5aWW5Yqx54q25oCBXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY2MzMsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5b6u5L+h5YWs5LyX5Y+354q25oCBXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMjMyMDUsIHt9KSB9LmJpbmQodGhpcyksICAgLy8g5Y+s5ZSkNeaYn+W/heWHulxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDEzMDQwLCB7fSkgfS5iaW5kKHRoaXMpLCAgIC8vIOW/q+mAn+S9nOaImFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMTMyMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDmmJ/lkb3loZTmlbDmja5cclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyMDcwNiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDmmJ/msrPnpZ7mrr/mr4/lpKnnrKzkuIDmrKHnmbvlvZXnuqLngrlcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxNjY4Nywge2JpZDogQWN0aW9uQ29uc3QuQWN0aW9uUmFua0NvbW1vblR5cGUub3Blbl9zZXJ2ZXJ9KSB9LmJpbmQodGhpcyksICAgICAgLy8g5paw5pyN6ZmQ6LStXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTY2ODcsIHtiaWQ6IEFjdGlvbkNvbnN0LkFjdGlvblJhbmtDb21tb25UeXBlLmhpZ2hfdmFsdWVfZ2lmdH0pIH0uYmluZCh0aGlzKSwgIC8vIOWwj+mineekvOWMhVxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDE2Njg3LCB7YmlkOiBBY3Rpb25Db25zdC5BY3Rpb25SYW5rQ29tbW9uVHlwZS5teXN0ZXJpb3VzX3N0b3JlfSkgfS5iaW5kKHRoaXMpLCAvLyDnpZ7np5jmnYLotKflupdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyMTAyMCwge30gKX0uYmluZCh0aGlzKSwgLy8g5q+P5pelMeWFg1xyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDI1MjAwLCB7fSkgfS5iaW5kKHRoaXMpLCAgIC8vIOWkqeeVjOWJr+acrFxyXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDI1MjE5LCB7fSkgfS5iaW5kKHRoaXMpLCAgIC8vIOelnuijhei9rOebmFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDI1MzAwLCB7fSkgfS5iaW5kKHRoaXMpLCAgIC8vIOaImOS7pOa0u+WKqFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDI1MzAzLCB7fSkgfS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDE2NzMwLCB7fSkgfS5iaW5kKHRoaXMpLCAvL+i1oOmAgVZJUFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge3RoaXMuZ3VpbGRSZWRCYWdQcm90b2NhbCgpIH0uYmluZCh0aGlzKSwgICAgIC8vIOWFrOS8mue6ouWMhVxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7dGhpcy5hZHZlbnRydWVQcm90b2NhbCgpIH0uYmluZCh0aGlzKSwgICAgICAgLy8g5YaS6ZmpXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHt0aGlzLmVuZGxlc3NQcm90b2NhbCgpIH0uYmluZCh0aGlzKSwgICAgICAgICAvLyDml6DlsL3or5XngrxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge3RoaXMudm95YWdlUHJvdG9jYWwoKSB9LmJpbmQodGhpcyksICAgICAgICAgIC8vIOi/nOiIqiAgICAgXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5TZW5kUHJvdG9jYWwoMTk4MDQsIHt9KSB9LmJpbmQodGhpcyksICAgICAgICAgIC8vIOmCgOivt+eggee6oueCuSAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgXHRdXHJcblxyXG4gICAgXHR2YXIgY3VyX2luZGV4ID0gMDtcclxuICAgIFx0dGhpcy5waW5nX3RpbWVyX2lkID0gZ2NvcmUuVGltZXIuc2V0KGZ1bmN0aW9uKCkge1xyXG4gICAgXHRcdGZ1bmN0aW9uX2xpc3RbY3VyX2luZGV4XSgpO1xyXG4gICAgICAgICAgICBjdXJfaW5kZXggKys7XHJcbiAgICAgICAgICAgIC8vIGdhbWUudXBkYXRlUHJvdG9Qcm9ncmVzcyhjdXJfaW5kZXggLyBmdW5jdGlvbl9saXN0Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGlmIChjdXJfaW5kZXggPT0gZnVuY3Rpb25fbGlzdC5sZW5ndGggLTEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmaW5pc2hfY2IpXHJcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX2NiKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICBcdH0uYmluZCh0aGlzKSwgMjAsIGZ1bmN0aW9uX2xpc3QubGVuZ3RoKVxyXG4gICAgfSxcclxuXHJcbiAgICByZXF1ZXN0UmVMaW5rUHJvdG9jYWxzOiBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgZnVuY3Rpb25fbGlzdCA9IFtcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDUwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDUwMSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAwNiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAwOCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAxMSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMzAxNywge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNTAwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDIwNCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMTAwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMTA0MCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMTAzNywge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMTIxMywge3R5cGVfbGlzdDogW3t0eXBlOiBQYXJ0bmVyQ29uc3QuRnVuX0Zvcm0uRHJhbWF9LCB7dHlwZTogUGFydG5lckNvbnN0LkZ1bl9Gb3JtLkFyZW5hfV19KSB9LmJpbmQodGhpcyksICAgICAvLyDpmLXms5VcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDQxMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDQxMSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDQwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDQwNSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDMxMiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyMzIwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxMDQwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxNjQwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyMDMwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgLy8gZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxOTkwNiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyMTAwNiwge30pIH0uYmluZCh0aGlzKSwgICAvLyDpl67ljbdcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgxNjcwNSwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3lpKnmlbBcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNDcwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDlvIDmnI3ml7bpl7RcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyB0aGlzLlNlbmRQcm90b2NhbCgyNTMwMCwge30pIH0uYmluZCh0aGlzKSwgICAvLyDmiJjku6Tku7vliqHnuqLngrlcclxuXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5ndWlsZFJlZEJhZ1Byb3RvY2FsKCkgfS5iaW5kKHRoaXMpLCAgICAgLy8g5YWs5Lya57qi5YyFXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5hZHZlbnRydWVQcm90b2NhbCgpIH0uYmluZCh0aGlzKSwgICAgICAgLy8g5YaS6ZmpXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy5lbmRsZXNzUHJvdG9jYWwoKSB9LmJpbmQodGhpcyksICAgICAgICAgLy8g5peg5bC96K+V54K8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgdGhpcy52b3lhZ2VQcm90b2NhbCgpIH0uYmluZCh0aGlzKSwgICAgICAgICAgIC8vIOi/nOiIqlxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuYXJlbmFQcm90b2NhbCgpIH0uYmluZCh0aGlzKSwgICAgICAgICAgIC8vIOernuaKgOWculxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHRoaXMuU2VuZFByb3RvY2FsKDMwMDAxLCB7fSkgfS5iaW5kKHRoaXMpLCAgIC8vIOaWsOS4u+e6v+S7u+WKoVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBdXHJcblxyXG4gICAgICAgIHZhciBjdXJfaW5kZXggPSAwO1xyXG4gICAgICAgIHRoaXMucGluZ190aW1lcl9pZCA9IGdjb3JlLlRpbWVyLnNldChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb25fbGlzdFtjdXJfaW5kZXhdKCk7XHJcbiAgICAgICAgICAgIGN1cl9pbmRleCArKztcclxuICAgICAgICB9LmJpbmQodGhpcyksIDEwLCBmdW5jdGlvbl9saXN0Lmxlbmd0aClcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIC8qKioqKioqKioqKioqKioqKirku6XkuIvmmK/kuIDkupvnibnmrornmoTljY/orq7or7fmsYIqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gICAgaW5pdEF0dHJQcm90b2NhbHNGdW5MaXN0OiBmdW5jdGlvbihmb3JjZSkge1xyXG4gICAgICAgIGlmIChmb3JjZSB8fCAhdGhpcy5hdHRyX2Z1bl9saXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0cl9mdW5fbGlzdCA9IFtcclxuICAgICAgICAgICAgICAgIHtmdW5jOiBmdW5jdGlvbiAoKSB7dGhpcy5hZHZlbnRydWVQcm90b2NhbCgpfS5iaW5kKHRoaXMpLCByZXFfZmxhZzogZmFsc2V9LFxyXG4gICAgICAgICAgICAgICAge2Z1bmM6IGZ1bmN0aW9uICgpIHt0aGlzLmFyZW5hUHJvdG9jYWwoKSB9LmJpbmQodGhpcyksIHJlcV9mbGFnOiBmYWxzZX0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7ZnVuYzogZnVuY3Rpb24gKCkge3RoaXMuZW5kbGVzc1Byb3RvY2FsKCkgfS5iaW5kKHRoaXMpLCByZXFfZmxhZzogZmFsc2V9LCAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAge2Z1bmM6IGZ1bmN0aW9uICgpIHt0aGlzLnZveWFnZVByb3RvY2FsKCkgfS5iaW5kKHRoaXMpLCByZXFfZmxhZzogZmFsc2V9LFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmo4DmtYvmmK/lkKbor7fmsYLov4fmlbDmja5cclxuICAgIGNoZWNrUHJvdG9jYWxJc0NhblJlcXVlc3Q6IGZ1bmN0aW9uKGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXR0cl9mdW5fbGlzdCAmJiB0aGlzLmF0dHJfZnVuX2xpc3RbaWRdICYmICF0aGlzLmF0dHJfZnVuX2xpc3RbaWRdLnJlcV9mbGFnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDlhazkvJrnuqLljIUo5Y+q6ZyA6KaB55m76ZmG5ZKM5pat57q/5pe26K+35rGC77yM5Yqg5YWl5YWs5Lya5pe277yM5ZCO56uv5Lya5Li75Yqo5o6oKVxyXG4gICAgZ3VpbGRSZWRCYWdQcm90b2NhbDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucm9sZV92byAmJiB0aGlzLnJvbGVfdm8uZ2lkICE9IDAgJiYgdGhpcy5yb2xlX3ZvLmdzcnZfaWQgIT0gXCJcIilcclxuICAgICAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMTM1MzQsIHt9KVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDlhpLpmannmoTljY/orq7or7fmsYJcclxuICAgIGFkdmVudHJ1ZVByb3RvY2FsOiBmdW5jdGlvbihmb3JjZXMpIHtcclxuICAgICAgICB2YXIgaXNfb3BlbiA9IGZvcmNlcztcclxuICAgICAgICBpZihpc19vcGVuID09IG51bGwpe1xyXG4gICAgICAgICAgICBpc19vcGVuID0gQWR2ZW50dXJlQWN0aXZpdHlDb250cm9sbGVyLmdldEluc3RhbmNlKCkuaXNPcGVuQWN0aXZpdHkoQWR2ZW50dXJlQWN0aXZpdHlDb25zdC5Hcm91bmRfVHlwZS5hZHZlbnR1cmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihpc19vcGVuID09IGZhbHNlKXJldHVybjtcclxuICAgICAgICBpZighdGhpcy5jaGVja1Byb3RvY2FsSXNDYW5SZXF1ZXN0KDApKXJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLlNlbmRQcm90b2NhbCgyMDYwMCwge30pICAvLyDlhpLpmanln7rnoYDkv6Hmga9cclxuICAgICAgICB0aGlzLlNlbmRQcm90b2NhbCgyMDYwMSwge30pICAvLyDlhpLpmalidWZm5L+h5oGvXHJcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMjA2MDQsIHt9KSAgLy8g5YaS6Zmp5LyZ5Ly05L+h5oGv5pWw5o2uXHJcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMjA2MzQsIHt9KSAgLy8g5YaS6Zmp5a6d566xXHJcbiAgICAgICAgaWYodGhpcy5hdHRyX2Z1bl9saXN0WzBdKXtcclxuICAgICAgICAgICAgdGhpcy5hdHRyX2Z1bl9saXN0WzBdLnJlcV9mbGFnID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGVuZGxlc3NQcm90b2NhbDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIG9wZW5fY29uZmlnID0gQ29uZmlnLmVuZGxlc3NfZGF0YS5kYXRhX2NvbnN0Lm9wZW5fbGV2O1xyXG4gICAgICAgIGlmICghb3Blbl9jb25maWcpIHJldHVybjtcclxuICAgICAgICB2YXIgTWFpbnVpQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWludWlfY29udHJvbGxlclwiKTtcclxuICAgICAgICB2YXIgaXNfb3BlbiA9IE1haW51aUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5jaGVja0lzT3BlbkJ5QWN0aXZhdGUob3Blbl9jb25maWcudmFsKTtcclxuICAgICAgICBpZiAoIWlzX29wZW4pIHJldHVyblxyXG4gICAgICAgIGlmICghdGhpcy5jaGVja1Byb3RvY2FsSXNDYW5SZXF1ZXN0KDIpKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzOTAwLCB7fSlcclxuICAgICAgICB0aGlzLlNlbmRQcm90b2NhbCgyMzkwMywge30pXHJcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMjM5MDYsIHt9KVxyXG4gICAgICAgIGlmICh0aGlzLmF0dHJfZnVuX2xpc3RbMl0pXHJcbiAgICAgICAgICAgIHRoaXMuYXR0cl9mdW5fbGlzdFsyXS5yZXFfZmxhZyA9IHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOi/nOiIquWNj+iuruivt+axglxyXG4gICAgdm95YWdlUHJvdG9jYWw6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBsZXZfY29uZmlnID0gQ29uZmlnLnNoaXBwaW5nX2RhdGEuZGF0YV9jb25zdFtcImd1aWxkX2xldlwiXTtcclxuICAgICAgICBpZiAoIWxldl9jb25maWcgfHwgIXRoaXMucm9sZV92byB8fCBsZXZfY29uZmlnLnZhbCA+IHRoaXMucm9sZV92by5sZXYpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tQcm90b2NhbElzQ2FuUmVxdWVzdCgzKSkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLlNlbmRQcm90b2NhbCgyMzgwMCwge30pXHJcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMjM4MDUsIHt9KVxyXG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIzODIxLCB7fSlcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXR0cl9mdW5fbGlzdFszXSlcclxuICAgICAgICAgICAgdGhpcy5hdHRyX2Z1bl9saXN0WzNdLnJlcV9mbGFnID0gdHJ1ZTtcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIHJlc2V0QXR0clByb3RvY2FsczogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdGhpcy5pbml0QXR0clByb3RvY2Fsc0Z1bkxpc3QodHJ1ZSk7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlcXVlc3RBdHRyUHJvdG9jYWxzOiBmdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuYXR0cl9mdW5fbGlzdCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBmdW5faSBpbiB0aGlzLmF0dHJfZnVuX2xpc3QpIHtcclxuICAgICAgICAgICAgdmFyIGZ1bl9pbmZvID0gdGhpcy5hdHRyX2Z1bl9saXN0W2Z1bl9pXTtcclxuICAgICAgICAgICAgaWYgKCFmdW5faW5mby5yZXFfZmxhZykge1xyXG4gICAgICAgICAgICAgICAgZnVuX2luZm8uZnVuYygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v56ue5oqA5Zy655qE5Y2P6K6u6K+35rGCXHJcbiAgICBhcmVuYVByb3RvY2FsOiBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgY29uZmlnID0gQ29uZmlnLmFyZW5hX2RhdGEuZGF0YV9jb25zdC5saW1pdF9sZXY7XHJcbiAgICAgICAgaWYgKCFjb25maWcgfHwgIXRoaXMucm9sZV92byB8fCB0aGlzLnJvbGVfdm8ubGV2IDwgY29uZmlnLnZhbClcclxuICAgICAgICAgICAgcmV0dXJuXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jaGVja1Byb3RvY2FsSXNDYW5SZXF1ZXN0KDEpKSByZXR1cm5cclxuXHJcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMjAyMDgsIHt9KVxyXG4gICAgICAgIHRoaXMuU2VuZFByb3RvY2FsKDIwMjAwLCB7fSlcclxuICAgICAgICB0aGlzLlNlbmRQcm90b2NhbCgyMDI1MCwge30pXHJcbiAgICAgICAgdGhpcy5TZW5kUHJvdG9jYWwoMjAyMjMsIHt9KVxyXG4gICAgICAgIGlmICh0aGlzLmF0dHJfZnVuX2xpc3RbMV0pXHJcbiAgICAgICAgICAgIHRoaXMuYXR0cl9mdW5fbGlzdFsxXS5yZXFfZmxhZyA9IHRydWVcclxuICAgIH0sXHJcbn0pXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IFN5c0NvbnRyb2xsZXI7Il19
|