|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/guild/view/guild_create_panel.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, '1d2faO6rhxJOaYfWW7GOSZ8', 'guild_create_panel');
|
// Scripts/mod/guild/view/guild_create_panel.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: @syg.com(必填, 创建模块的人员)
|
// @description:
|
// 创建公会标签面板
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var GuildController = require("guild_controller");
|
|
var GuildCreatePanel = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("guild", "guild_create_panel");
|
this.ctrl = GuildController.getInstance();
|
this.set_index = 0; //默认不验证
|
|
this.condition_index = 0; // this.had_fill = false;
|
|
this.condition_list = [];
|
this.desc_ = "";
|
this.initConditionList();
|
},
|
initPanel: function initPanel() {
|
var container = this.root_wnd.getChildByName("container");
|
this.set_value = this.seekChild(container, "set_value", cc.Label);
|
this.condition_value = this.seekChild(container, "condition_value", cc.Label);
|
this.condition_left = this.seekChild(container, "condition_left", cc.Button);
|
this.condition_right = this.seekChild(container, "condition_right", cc.Button);
|
this.set_left = this.seekChild(container, "set_left", cc.Button);
|
this.set_right = this.seekChild(container, "set_right", cc.Button);
|
this.edit_title = this.seekChild(container, "edit_title", cc.EditBox);
|
this.declaration_value = this.seekChild(container, "declaration_value", cc.EditBox);
|
this.declaration_value.string = this.desc_;
|
this.declaration_text = this.seekChild(this.declaration_value.node, "TEXT_LABEL", cc.Label);
|
this.declaration_text.enableWrapText = true;
|
this.create_btn = this.seekChild(container, "create_btn", cc.Button);
|
this.create_btn_label = this.seekChild(this.create_btn.node, "Label", cc.Label);
|
this.create_btn_img = this.seekChild(this.create_btn.node, "Sprite", cc.Sprite);
|
this.create_btn_img.node.setScale(0.3, 0.3);
|
var config = gdata("guild_data", "data_const", "create_gold");
|
var gold_num = 100;
|
if (config != null) gold_num = config.val;
|
var item_config = Utils.getItemConfig(gdata("item_data", "data_assets_label2id", "gold"));
|
var item_icon = 2;
|
if (item_config != null) item_icon = item_config.icon;
|
this.create_btn_label.string = cc.js.formatStr("%s %s", gold_num, Utils.TI18N("创建公会"));
|
|
if (PathTool.getItemRes(item_icon)) {
|
this.loadRes(PathTool.getItemRes(item_icon), function (res_object) {
|
this.create_btn_img.spriteFrame = res_object;
|
}.bind(this));
|
}
|
|
this.desc_vip_lb = this.seekChild("desc_vip", cc.Label);
|
var condition = gdata("guild_data", "data_const", "maintain_vip_condition");
|
|
if (condition.val > 0) {
|
this.desc_vip_lb.string = cc.js.formatStr(Utils.TI18N("需达VIP%s才可创建公会"), condition.val);
|
} else {
|
this.desc_vip_lb.node.active = false;
|
}
|
},
|
registerEvent: function registerEvent() {
|
this.condition_left.node.on("click", function () {
|
if (this.condition_index == 0) return;
|
this.condition_index = this.condition_index - 1;
|
this.setGuildConditionInfo(this.condition_index);
|
}, this);
|
this.condition_right.node.on("click", function () {
|
if (this.condition_index + 1 >= this.condition_list.length) return;
|
this.condition_index = this.condition_index + 1;
|
this.setGuildConditionInfo(this.condition_index);
|
}, this);
|
this.set_left.node.on("click", function () {
|
if (this.set_index == 0) return;
|
this.set_index = this.set_index - 1;
|
this.setGuildSetInfo(this.set_index);
|
}, this);
|
this.set_right.node.on("click", function () {
|
if (this.set_index == 1) return;
|
this.set_index = this.set_index + 1;
|
this.setGuildSetInfo(this.set_index);
|
}, this);
|
this.create_btn.node.on(cc.Node.EventType.TOUCH_END, function () {
|
var config = this.condition_list[this.condition_index];
|
var guild_name = this.edit_title.string;
|
|
if (guild_name == "") {
|
message(Utils.TI18N("公会名称不能为空"));
|
} else if (Utils.getByteLen(guild_name) > 12) {
|
message(Utils.TI18N("公会名字不得超过6个文字"));
|
} else {
|
var sign = this.declaration_value.string;
|
if (config != null) this.ctrl.requestCreateGuild(guild_name, sign, self.set_index, config.lev);
|
}
|
}, this);
|
},
|
openRootWnd: function openRootWnd() {},
|
onShow: function onShow() {
|
this.setGuildSetInfo(this.set_index);
|
this.setGuildConditionInfo(this.condition_index);
|
|
if (Config.guild_data.data_sign_length > 0) {
|
var index = Math.floor(Math.random() * Config.guild_data.data_sign_length + 1);
|
var config = Config.guild_data.data_sign[index];
|
|
if (config != null) {
|
this.declaration_value.string = config.sign;
|
this.desc_ = config.sign;
|
}
|
}
|
},
|
addToParent: function addToParent(status) {
|
this.showStatus = status;
|
if (this.root_wnd == null) return;
|
this.setVisible(status); // this.root_wnd.active = status;
|
},
|
initConditionList: function initConditionList() {
|
this.condition_list = [{
|
index: 1,
|
lev: 1,
|
desc: Utils.TI18N("1级")
|
}, {
|
index: 2,
|
lev: 10,
|
desc: Utils.TI18N("10级")
|
}, {
|
index: 3,
|
lev: 20,
|
desc: Utils.TI18N("20级")
|
}, {
|
index: 4,
|
lev: 30,
|
desc: Utils.TI18N("30级")
|
}, {
|
index: 5,
|
lev: 40,
|
desc: Utils.TI18N("40级")
|
}, {
|
index: 6,
|
lev: 50,
|
desc: Utils.TI18N("50级")
|
}, {
|
index: 7,
|
lev: 60,
|
desc: Utils.TI18N("60级")
|
}];
|
},
|
setGuildConditionInfo: function setGuildConditionInfo(index) {
|
var config = this.condition_list[index];
|
if (config != null) this.condition_value.string = config.desc;
|
var status = 1;
|
|
if (index == 0) {
|
status = 1;
|
} else if (index + 1 == this.condition_list.length) {
|
status = 2;
|
} else {
|
status = 3;
|
}
|
|
if (this.condition_status != status) {
|
this.condition_status = status;
|
|
if (status == 1) {
|
Utils.setGreyButton(this.condition_left, true);
|
Utils.setGreyButton(this.condition_right, false);
|
} else if (status == 2) {
|
Utils.setGreyButton(this.condition_left, false);
|
Utils.setGreyButton(this.condition_right, true);
|
} else {
|
Utils.setGreyButton(this.condition_left, false);
|
Utils.setGreyButton(this.condition_right, false);
|
}
|
}
|
},
|
setGuildSetInfo: function setGuildSetInfo(index) {
|
if (index == 0) {
|
this.set_value.string = Utils.TI18N("不需要验证");
|
Utils.setGreyButton(this.set_left, true);
|
Utils.setGreyButton(this.set_right, false);
|
} else if (index == 1) {
|
this.set_value.string = Utils.TI18N("需要验证");
|
Utils.setGreyButton(this.set_left, false);
|
Utils.setGreyButton(this.set_right, true);
|
}
|
},
|
onDelete: function onDelete() {}
|
});
|
module.exports = GuildCreatePanel;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZFxcdmlld1xcZ3VpbGRfY3JlYXRlX3BhbmVsLmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIkd1aWxkQ29udHJvbGxlciIsIkd1aWxkQ3JlYXRlUGFuZWwiLCJjYyIsIkNsYXNzIiwiQmFzZVBhbmVsIiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwiY3RybCIsImdldEluc3RhbmNlIiwic2V0X2luZGV4IiwiY29uZGl0aW9uX2luZGV4IiwiY29uZGl0aW9uX2xpc3QiLCJkZXNjXyIsImluaXRDb25kaXRpb25MaXN0IiwiaW5pdFBhbmVsIiwiY29udGFpbmVyIiwicm9vdF93bmQiLCJnZXRDaGlsZEJ5TmFtZSIsInNldF92YWx1ZSIsInNlZWtDaGlsZCIsIkxhYmVsIiwiY29uZGl0aW9uX3ZhbHVlIiwiY29uZGl0aW9uX2xlZnQiLCJCdXR0b24iLCJjb25kaXRpb25fcmlnaHQiLCJzZXRfbGVmdCIsInNldF9yaWdodCIsImVkaXRfdGl0bGUiLCJFZGl0Qm94IiwiZGVjbGFyYXRpb25fdmFsdWUiLCJzdHJpbmciLCJkZWNsYXJhdGlvbl90ZXh0Iiwibm9kZSIsImVuYWJsZVdyYXBUZXh0IiwiY3JlYXRlX2J0biIsImNyZWF0ZV9idG5fbGFiZWwiLCJjcmVhdGVfYnRuX2ltZyIsIlNwcml0ZSIsInNldFNjYWxlIiwiY29uZmlnIiwiZ2RhdGEiLCJnb2xkX251bSIsInZhbCIsIml0ZW1fY29uZmlnIiwiVXRpbHMiLCJnZXRJdGVtQ29uZmlnIiwiaXRlbV9pY29uIiwiaWNvbiIsImpzIiwiZm9ybWF0U3RyIiwiVEkxOE4iLCJnZXRJdGVtUmVzIiwibG9hZFJlcyIsInJlc19vYmplY3QiLCJzcHJpdGVGcmFtZSIsImJpbmQiLCJkZXNjX3ZpcF9sYiIsImNvbmRpdGlvbiIsImFjdGl2ZSIsInJlZ2lzdGVyRXZlbnQiLCJvbiIsInNldEd1aWxkQ29uZGl0aW9uSW5mbyIsImxlbmd0aCIsInNldEd1aWxkU2V0SW5mbyIsIk5vZGUiLCJFdmVudFR5cGUiLCJUT1VDSF9FTkQiLCJndWlsZF9uYW1lIiwibWVzc2FnZSIsImdldEJ5dGVMZW4iLCJzaWduIiwicmVxdWVzdENyZWF0ZUd1aWxkIiwic2VsZiIsImxldiIsIm9wZW5Sb290V25kIiwib25TaG93IiwiQ29uZmlnIiwiZ3VpbGRfZGF0YSIsImRhdGFfc2lnbl9sZW5ndGgiLCJpbmRleCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImRhdGFfc2lnbiIsImFkZFRvUGFyZW50Iiwic3RhdHVzIiwic2hvd1N0YXR1cyIsInNldFZpc2libGUiLCJkZXNjIiwiY29uZGl0aW9uX3N0YXR1cyIsInNldEdyZXlCdXR0b24iLCJvbkRlbGV0ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFHQSxJQUFJRSxnQkFBZ0IsR0FBR0MsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDNUIsYUFBU0MsU0FEbUI7QUFFNUJDLEVBQUFBLElBQUksRUFBRSxnQkFBWTtBQUNkLFNBQUtDLFVBQUwsR0FBa0JSLFFBQVEsQ0FBQ1MsYUFBVCxDQUF1QixPQUF2QixFQUFnQyxvQkFBaEMsQ0FBbEI7QUFDQSxTQUFLQyxJQUFMLEdBQVlSLGVBQWUsQ0FBQ1MsV0FBaEIsRUFBWjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsQ0FBakIsQ0FIYyxDQUdNOztBQUNwQixTQUFLQyxlQUFMLEdBQXVCLENBQXZCLENBSmMsQ0FLZDs7QUFDQSxTQUFLQyxjQUFMLEdBQXNCLEVBQXRCO0FBQ0EsU0FBS0MsS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLQyxpQkFBTDtBQUNILEdBWDJCO0FBYTVCQyxFQUFBQSxTQUFTLEVBQUUscUJB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Q0FBdkI7QUFvTEFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjdGLGdCQUFqQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gQGF1dGhvcjogQHN5Zy5jb20o5b+F5aGrLCDliJvlu7rmqKHlnZfnmoTkurrlkZgpXHJcbi8vIEBkZXNjcmlwdGlvbjpcclxuLy8gICAgICDliJvlu7rlhazkvJrmoIfnrb7pnaLmnb9cclxuLy8gPGJyLz5DcmVhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xyXG52YXIgR3VpbGRDb250cm9sbGVyID0gcmVxdWlyZShcImd1aWxkX2NvbnRyb2xsZXJcIik7XHJcblxyXG5cclxudmFyIEd1aWxkQ3JlYXRlUGFuZWwgPSBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBCYXNlUGFuZWwsXHJcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcImd1aWxkXCIsIFwiZ3VpbGRfY3JlYXRlX3BhbmVsXCIpO1xyXG4gICAgICAgIHRoaXMuY3RybCA9IEd1aWxkQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0X2luZGV4ID0gMDsgLy/pu5jorqTkuI3pqozor4FcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbl9pbmRleCA9IDA7XHJcbiAgICAgICAgLy8gdGhpcy5oYWRfZmlsbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uX2xpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmRlc2NfID0gXCJcIjtcclxuICAgICAgICB0aGlzLmluaXRDb25kaXRpb25MaXN0KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGluaXRQYW5lbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwiY29udGFpbmVyXCIpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5zZXRfdmFsdWUgPSB0aGlzLnNlZWtDaGlsZChjb250YWluZXIsIFwic2V0X3ZhbHVlXCIsIGNjLkxhYmVsKTtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbl92YWx1ZSA9IHRoaXMuc2Vla0NoaWxkKGNvbnRhaW5lciwgXCJjb25kaXRpb25fdmFsdWVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uX2xlZnQgPSB0aGlzLnNlZWtDaGlsZChjb250YWluZXIsIFwiY29uZGl0aW9uX2xlZnRcIiwgY2MuQnV0dG9uKTtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbl9yaWdodCA9IHRoaXMuc2Vla0NoaWxkKGNvbnRhaW5lciwgXCJjb25kaXRpb25fcmlnaHRcIiwgY2MuQnV0dG9uKTtcclxuICAgICAgICB0aGlzLnNldF9sZWZ0ID0gdGhpcy5zZWVrQ2hpbGQoY29udGFpbmVyLCBcInNldF9sZWZ0XCIsIGNjLkJ1dHRvbik7XHJcbiAgICAgICAgdGhpcy5zZXRfcmlnaHQgPSB0aGlzLnNlZWtDaGlsZChjb250YWluZXIsIFwic2V0X3JpZ2h0XCIsIGNjLkJ1dHRvbik7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdF90aXRsZSA9IHRoaXMuc2Vla0NoaWxkKGNvbnRhaW5lciwgXCJlZGl0X3RpdGxlXCIsIGNjLkVkaXRCb3gpO1xyXG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25fdmFsdWUgPSB0aGlzLnNlZWtDaGlsZChjb250YWluZXIsIFwiZGVjbGFyYXRpb25fdmFsdWVcIiwgY2MuRWRpdEJveCk7XHJcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbl92YWx1ZS5zdHJpbmcgPSB0aGlzLmRlc2NfO1xyXG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25fdGV4dCA9IHRoaXMuc2Vla0NoaWxkKHRoaXMuZGVjbGFyYXRpb25fdmFsdWUubm9kZSwgXCJURVhUX0xBQkVMXCIsIGNjLkxhYmVsKTtcclxuICAgICAgICB0aGlzLmRlY2xhcmF0aW9uX3RleHQuZW5hYmxlV3JhcFRleHQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZV9idG4gPSB0aGlzLnNlZWtDaGlsZChjb250YWluZXIsIFwiY3JlYXRlX2J0blwiLCBjYy5CdXR0b24pO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlX2J0bl9sYWJlbCA9IHRoaXMuc2Vla0NoaWxkKHRoaXMuY3JlYXRlX2J0bi5ub2RlLCBcIkxhYmVsXCIsIGNjLkxhYmVsKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZV9idG5faW1nID0gdGhpcy5zZWVrQ2hpbGQodGhpcy5jcmVhdGVfYnRuLm5vZGUsIFwiU3ByaXRlXCIsIGNjLlNwcml0ZSk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVfYnRuX2ltZy5ub2RlLnNldFNjYWxlKDAuMywgMC4zKTtcclxuXHJcbiAgICAgICAgdmFyIGNvbmZpZyA9IGdkYXRhKFwiZ3VpbGRfZGF0YVwiLCBcImRhdGFfY29uc3RcIiwgXCJjcmVhdGVfZ29sZFwiKTtcclxuICAgICAgICB2YXIgZ29sZF9udW0gPSAxMDA7XHJcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKVxyXG4gICAgICAgICAgICBnb2xkX251bSA9IGNvbmZpZy52YWw7XHJcbiAgICAgICAgdmFyIGl0ZW1fY29uZmlnID0gVXRpbHMuZ2V0SXRlbUNvbmZpZyhnZGF0YShcIml0ZW1fZGF0YVwiLCBcImRhdGFfYXNzZXRzX2xhYmVsMmlkXCIsIFwiZ29sZFwiKSk7XHJcbiAgICAgICAgdmFyIGl0ZW1faWNvbiA9IDI7XHJcbiAgICAgICAgaWYgKGl0ZW1fY29uZmlnICE9IG51bGwpXHJcbiAgICAgICAgICAgIGl0ZW1faWNvbiA9IGl0ZW1fY29uZmlnLmljb247XHJcbiAgICAgICAgdGhpcy5jcmVhdGVfYnRuX2xhYmVsLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihcIiVzICVzXCIsIGdvbGRfbnVtLCBVdGlscy5USTE4TihcIuWIm+W7uuWFrOS8mlwiKSlcclxuICAgICAgICBpZiAoUGF0aFRvb2wuZ2V0SXRlbVJlcyhpdGVtX2ljb24pKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRJdGVtUmVzKGl0ZW1faWNvbiksIGZ1bmN0aW9uIChyZXNfb2JqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZV9idG5faW1nLnNwcml0ZUZyYW1lID0gcmVzX29iamVjdDtcclxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kZXNjX3ZpcF9sYiA9IHRoaXMuc2Vla0NoaWxkKFwiZGVzY192aXBcIixjYy5MYWJlbCk7XHJcbiAgICAgICAgdmFyIGNvbmRpdGlvbiA9IGdkYXRhKFwiZ3VpbGRfZGF0YVwiLCBcImRhdGFfY29uc3RcIiwgXCJtYWludGFpbl92aXBfY29uZGl0aW9uXCIpO1xyXG4gICAgICAgIGlmKGNvbmRpdGlvbi52YWwgPiAwKXtcclxuICAgICAgICAgICAgdGhpcy5kZXNjX3ZpcF9sYi5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCLpnIDovr5WSVAlc+aJjeWPr+WIm+W7uuWFrOS8mlwiKSxjb25kaXRpb24udmFsKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5kZXNjX3ZpcF9sYi5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuY29uZGl0aW9uX2xlZnQubm9kZS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uX2luZGV4ID09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25faW5kZXggPSB0aGlzLmNvbmRpdGlvbl9pbmRleCAtIDE7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0R3VpbGRDb25kaXRpb25JbmZvKHRoaXMuY29uZGl0aW9uX2luZGV4KTtcclxuICAgICAgICB9LCB0aGlzKVxyXG5cclxuICAgICAgICB0aGlzLmNvbmRpdGlvbl9yaWdodC5ub2RlLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25faW5kZXggKyAxID49IHRoaXMuY29uZGl0aW9uX2xpc3QubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uX2luZGV4ID0gdGhpcy5jb25kaXRpb25faW5kZXggKyAxO1xyXG4gICAgICAgICAgICB0aGlzLnNldEd1aWxkQ29uZGl0aW9uSW5mbyh0aGlzLmNvbmRpdGlvbl9pbmRleCk7XHJcbiAgICAgICAgfSwgdGhpcylcclxuICAgICAgICB0aGlzLnNldF9sZWZ0Lm5vZGUub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNldF9pbmRleCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0X2luZGV4ID0gdGhpcy5zZXRfaW5kZXggLSAxO1xyXG4gICAgICAgICAgICB0aGlzLnNldEd1aWxkU2V0SW5mbyh0aGlzLnNldF9pbmRleCk7XHJcbiAgICAgICAgfSwgdGhpcylcclxuICAgICAgICB0aGlzLnNldF9yaWdodC5ub2RlLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXRfaW5kZXggPT0gMSlcclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB0aGlzLnNldF9pbmRleCA9IHRoaXMuc2V0X2luZGV4ICsgMTtcclxuICAgICAgICAgICAgdGhpcy5zZXRHdWlsZFNldEluZm8odGhpcy5zZXRfaW5kZXgpO1xyXG4gICAgICAgIH0sIHRoaXMpXHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlX2J0bi5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25kaXRpb25fbGlzdFt0aGlzLmNvbmRpdGlvbl9pbmRleF07XHJcbiAgICAgICAgICAgIHZhciBndWlsZF9uYW1lID0gdGhpcy5lZGl0X3RpdGxlLnN0cmluZztcclxuICAgICAgICAgICAgaWYgKGd1aWxkX25hbWUgPT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZShVdGlscy5USTE4TihcIuWFrOS8muWQjeensOS4jeiDveS4uuepulwiKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoVXRpbHMuZ2V0Qnl0ZUxlbihndWlsZF9uYW1lKSA+IDEyKSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlKFV0aWxzLlRJMThOKFwi5YWs5Lya5ZCN5a2X5LiN5b6X6LaF6L+HNuS4quaWh+Wtl1wiKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IHRoaXMuZGVjbGFyYXRpb25fdmFsdWUuc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3RybC5yZXF1ZXN0Q3JlYXRlR3VpbGQoZ3VpbGRfbmFtZSwgc2lnbiwgc2VsZi5zZXRfaW5kZXgsIGNvbmZpZy5sZXYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGhpcylcclxuICAgIH0sXHJcblxyXG4gICAgb3BlblJvb3RXbmQ6IGZ1bmN0aW9uICgpIHtcclxuICAgIH0sXHJcblxyXG4gICAgb25TaG93OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRHdWlsZFNldEluZm8odGhpcy5zZXRfaW5kZXgpO1xyXG4gICAgICAgIHRoaXMuc2V0R3VpbGRDb25kaXRpb25JbmZvKHRoaXMuY29uZGl0aW9uX2luZGV4KTtcclxuICAgICAgICBpZiAoQ29uZmlnLmd1aWxkX2RhdGEuZGF0YV9zaWduX2xlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICpDb25maWcuZ3VpbGRfZGF0YS5kYXRhX3NpZ25fbGVuZ3RoICsgMSk7XHJcbiAgICAgICAgICAgIHZhciBjb25maWcgPSBDb25maWcuZ3VpbGRfZGF0YS5kYXRhX3NpZ25baW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVjbGFyYXRpb25fdmFsdWUuc3RyaW5nID0gY29uZmlnLnNpZ247XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2NfID0gY29uZmlnLnNpZ247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFkZFRvUGFyZW50OiBmdW5jdGlvbiAoc3RhdHVzKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U3RhdHVzID0gc3RhdHVzXHJcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgdGhpcy5zZXRWaXNpYmxlKHN0YXR1cylcclxuICAgICAgICAvLyB0aGlzLnJvb3Rfd25kLmFjdGl2ZSA9IHN0YXR1cztcclxuICAgIH0sXHJcblxyXG4gICAgaW5pdENvbmRpdGlvbkxpc3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmNvbmRpdGlvbl9saXN0ID0gW1xyXG4gICAgICAgICAgICB7IGluZGV4OiAxLCBsZXY6IDEsIGRlc2M6IFV0aWxzLlRJMThOKFwiMee6p1wiKSB9LFxyXG4gICAgICAgICAgICB7IGluZGV4OiAyLCBsZXY6IDEwLCBkZXNjOiBVdGlscy5USTE4TihcIjEw57qnXCIpIH0sXHJcbiAgICAgICAgICAgIHsgaW5kZXg6IDMsIGxldjogMjAsIGRlc2M6IFV0aWxzLlRJMThOKFwiMjDnuqdcIikgfSxcclxuICAgICAgICAgICAgeyBpbmRleDogNCwgbGV2OiAzMCwgZGVzYzogVXRpbHMuVEkxOE4oXCIzMOe6p1wiKSB9LFxyXG4gICAgICAgICAgICB7IGluZGV4OiA1LCBsZXY6IDQwLCBkZXNjOiBVdGlscy5USTE4TihcIjQw57qnXCIpIH0sXHJcbiAgICAgICAgICAgIHsgaW5kZXg6IDYsIGxldjogNTAsIGRlc2M6IFV0aWxzLlRJMThOKFwiNTDnuqdcIikgfSxcclxuICAgICAgICAgICAgeyBpbmRleDogNywgbGV2OiA2MCwgZGVzYzogVXRpbHMuVEkxOE4oXCI2MOe6p1wiKSB9LFxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcblxyXG4gICAgc2V0R3VpbGRDb25kaXRpb25JbmZvOiBmdW5jdGlvbiAoaW5kZXgpIHtcclxuICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jb25kaXRpb25fbGlzdFtpbmRleF07XHJcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbl92YWx1ZS5zdHJpbmcgPSBjb25maWcuZGVzYztcclxuICAgICAgICB2YXIgc3RhdHVzID0gMTtcclxuICAgICAgICBpZiAoaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICBzdGF0dXMgPSAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggKyAxID09IHRoaXMuY29uZGl0aW9uX2xpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHN0YXR1cyA9IDI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3RhdHVzID0gMztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uX3N0YXR1cyAhPSBzdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25fc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAgICAgICBpZiAoc3RhdHVzID09IDEpIHtcclxuICAgICAgICAgICAgICAgIFV0aWxzLnNldEdyZXlCdXR0b24odGhpcy5jb25kaXRpb25fbGVmdCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMuY29uZGl0aW9uX3JpZ2h0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IDIpIHtcclxuICAgICAgICAgICAgICAgIFV0aWxzLnNldEdyZXlCdXR0b24odGhpcy5jb25kaXRpb25fbGVmdCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgVXRpbHMuc2V0R3JleUJ1dHRvbih0aGlzLmNvbmRpdGlvbl9yaWdodCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBVdGlscy5zZXRHcmV5QnV0dG9uKHRoaXMuY29uZGl0aW9uX2xlZnQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIFV0aWxzLnNldEdyZXlCdXR0b24odGhpcy5jb25kaXRpb25fcmlnaHQsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgc2V0R3VpbGRTZXRJbmZvOiBmdW5jdGlvbiAoaW5kZXgpIHtcclxuICAgICAgICBpZiAoaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldF92YWx1ZS5zdHJpbmcgPSBVdGlscy5USTE4TihcIuS4jemcgOimgemqjOivgVwiKTtcclxuICAgICAgICAgICAgVXRpbHMuc2V0R3JleUJ1dHRvbih0aGlzLnNldF9sZWZ0LCB0cnVlKTtcclxuICAgICAgICAgICAgVXRpbHMuc2V0R3JleUJ1dHRvbih0aGlzLnNldF9yaWdodCwgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldF92YWx1ZS5zdHJpbmcgPSBVdGlscy5USTE4TihcIumcgOimgemqjOivgVwiKTtcclxuICAgICAgICAgICAgVXRpbHMuc2V0R3JleUJ1dHRvbih0aGlzLnNldF9sZWZ0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIFV0aWxzLnNldEdyZXlCdXR0b24odGhpcy5zZXRfcmlnaHQsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgb25EZWxldGU6IGZ1bmN0aW9uICgpIHtcclxuICAgIH1cclxufSk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEd1aWxkQ3JlYXRlUGFuZWw7Il19
|