(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/script/mk/utils/StringUtil.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, '4c029tekfZLEKj9xvuITEwf', 'StringUtil'); // script/mk/utils/StringUtil.ts "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * 字符串工具类 * @author 薛鸿潇 */ var StringUtil = /** @class */ (function () { function StringUtil() { /** * 颜色表 */ this.str_color = { /** 红色1 */ red1: '#be2c1d', /** 棕色1 */ bro1: '#4E301B', }; } /** * 将数据表里的字符串转成相对颜色 * @param 需要转换的字符串 比如 "你好[red中国]" 其中“中国”为红色...你好[red{s40}中国] * @return 返回一个富文本字符串 * @author xhx */ StringUtil.prototype.getTextByStringInData = function (str) { var newStr = str; var i = 0; var begin; var end; var sub; var searchValue; var replaceValue; var color_key; // 解析颜色 while (i < str.length) { begin = str.indexOf("[", i); end = str.indexOf("]", begin); if (begin != -1 && end != -1) //把[redXXX]转成富文本 { searchValue = str.slice(begin, end + 1); // 颜色内容 color_key = str.slice(begin + 1, begin + 5); var color_str = this.str_color[color_key]; if (color_str) { sub = str.slice(begin + 6, end); replaceValue = this.getColorStringColor(sub, color_str); newStr = newStr.replace(searchValue, replaceValue); } i = end; } else { break; } } var size_index = 0; var size_begin = 0; var size_end = 0; var size_searchValue; // let size_sub: string // 解析尺寸{40=100%},100%是40尺寸.例子2:[bro对目标造成][red{40=104%}][bro攻击伤害] while (size_index < newStr.length) { size_begin = newStr.indexOf("{", size_index); size_end = newStr.indexOf("}", size_begin); if (size_begin != -1 && size_end != -1) { // 尺寸内容 size_searchValue = newStr.slice(size_begin, size_end + 1); var size_value = newStr.slice(size_begin + 1, size_begin + 3); var size_sub = size_searchValue.slice(4, size_searchValue.length - 1); if (size_sub) { var new_value = '' + size_sub + ''; newStr = newStr.replace(size_searchValue, new_value); } size_index = size_end; } else { break; } } return newStr; }; /**按品质转换字符串颜色 */ StringUtil.prototype.getColorStringColor = function (str, color_str) { if (str === void 0) { str = '#FFFFFF'; } return '' + str + ''; }; /** * 阿拉伯数字 转 汉字 * @param num 要转的数字 * @returns 汉字数字 * @author xhx */ StringUtil.prototype.arabicToChinese = function (num) { var unit_section = ['', '万', '亿', '万亿', '亿亿']; var unit_chn = ['', '十', '百', '千']; var chars = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']; var unit_index = 0; var str_ins = '', zh_str = ''; var need_zero = false; var SectionToChinese = function (section) { var _zh_str = ''; var _unit_index = 0; var zero = true; while (section > 0) { var v = section % 10; var _str_ins = ''; if (v === 0) { if (!zero) { zero = true; _zh_str = chars[v] + _zh_str; } } else { zero = false; if (_unit_index !== 1 || section > 1) { _str_ins = chars[v]; } _str_ins += unit_chn[_unit_index]; _zh_str = _str_ins + _zh_str; } ++_unit_index; section = Math.floor(section / 10); } return _zh_str; }; if (num === 0) { return chars[0]; } while (num > 0) { var section = num % 10000; if (need_zero) { zh_str = chars[0] + zh_str; } str_ins = SectionToChinese(section); str_ins += (section !== 0) ? unit_section[unit_index] : unit_section[0]; zh_str = str_ins + zh_str; need_zero = (section < 1000) && (section > 0); num = Math.floor(num / 10000); ++unit_index; } return zh_str; }; /** * 限制字符串长度,超出部分用...代替 * @param str 要拆分的字符串 * @param max_len 最大长度 * @returns 被限制后的字符串 * @author xhx */ StringUtil.prototype.getNewLimitStr = function (str, max_len) { var arr_str = str.split(""); var new_str = ''; max_len = arr_str.length >= max_len ? max_len : arr_str.length; //字符串不能超出的长度,否则用...显示 for (var i = 0; i < max_len; i++) { if (i == (max_len - 1)) { new_str += '...'; } else { new_str += arr_str[i]; } } return new_str; }; return StringUtil; }()); exports.default = StringUtil; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcdXRpbHNcXFN0cmluZ1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0dBR0c7QUFDSDtJQUFBO1FBRUk7O1dBRUc7UUFDSyxjQUFTLEdBQUc7WUFDaEIsVUFBVTtZQUNWLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVTtZQUNWLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUE7SUF3SkwsQ0FBQztJQXRKRzs7Ozs7T0FLRztJQUNJLDBDQUFxQixHQUE1QixVQUE2QixHQUFXO1FBQ3BDLElBQUksTUFBTSxHQUFXLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBVyxDQUFDLENBQUM7UUFDbEIsSUFBSSxLQUFhLENBQUM7UUFDbEIsSUFBSSxHQUFXLENBQUM7UUFDaEIsSUFBSSxHQUFXLENBQUM7UUFDaEIsSUFBSSxXQUFtQixDQUFDO1FBQ3hCLElBQUksWUFBb0IsQ0FBQztRQUN6QixJQUFJLFNBQWlCLENBQUM7UUFFdEIsT0FBTztRQUNQLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUMsZ0JBQWdCO2FBQzdDO2dCQUNJLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU87Z0JBQ1AsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLElBQUksU0FB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QUM7SUFDbkIsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0FsS0EsQUFrS0MsSUFBQSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDlrZfnrKbkuLLlt6XlhbfnsbtcclxuICogQGF1dGhvciDolpvpuL/mvYdcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ1V0aWwge1xyXG5cclxuICAgIC8qKiBcclxuICAgICAqIOminOiJsuihqFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0cl9jb2xvciA9IHtcclxuICAgICAgICAvKiog57qi6ImyMSAqL1xyXG4gICAgICAgIHJlZDE6ICcjYmUyYzFkJyxcclxuICAgICAgICAvKiog5qOV6ImyMSAqL1xyXG4gICAgICAgIGJybzE6ICcjNEUzMDFCJyxcclxuICAgIH1cclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiDlsIbmlbDmja7ooajph4znmoTlrZfnrKbkuLLovazmiJDnm7jlr7npopzoibJcclxuICAgICAqIEBwYXJhbSDpnIDopoHovazmjaLnmoTlrZfnrKbkuLIg5q+U5aaCICBcIuS9oOWlvVtyZWTkuK3lm71dXCIg5YW25Lit4oCc5Lit5Zu94oCd5Li657qi6ImyLi4u5L2g5aW9W3JlZHtzNDB95Lit5Zu9XVxyXG4gICAgICogQHJldHVybiDov5Tlm57kuIDkuKrlr4zmlofmnKzlrZfnrKbkuLJcclxuICAgICAqIEBhdXRob3IgeGh4XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRUZXh0QnlTdHJpbmdJbkRhdGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHZhciBuZXdTdHI6IHN0cmluZyA9IHN0cjtcclxuICAgICAgICB2YXIgaTogbnVtYmVyID0gMDtcclxuICAgICAgICB2YXIgYmVnaW46IG51bWJlcjtcclxuICAgICAgICB2YXIgZW5kOiBudW1iZXI7XHJcbiAgICAgICAgdmFyIHN1Yjogc3RyaW5nO1xyXG4gICAgICAgIHZhciBzZWFyY2hWYWx1ZTogc3RyaW5nO1xyXG4gICAgICAgIHZhciByZXBsYWNlVmFsdWU6IHN0cmluZztcclxuICAgICAgICB2YXIgY29sb3Jfa2V5OiBzdHJpbmc7XHJcblxyXG4gICAgICAgIC8vIOino+aekOminOiJslxyXG4gICAgICAgIHdoaWxlIChpIDwgc3RyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBiZWdpbiA9IHN0ci5pbmRleE9mKFwiW1wiLCBpKTtcclxuICAgICAgICAgICAgZW5kID0gc3RyLmluZGV4T2YoXCJdXCIsIGJlZ2luKTtcclxuICAgICAgICAgICAgaWYgKGJlZ2luICE9IC0xICYmIGVuZCAhPSAtMSkvL+aKiltyZWRYWFhd6L2s5oiQ5a+M5paH5pysXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlID0gc3RyLnNsaWNlKGJlZ2luLCBlbmQgKyAxKTtcclxuICAgICAgICAgICAgICAgIC8vIOminOiJsuWGheWuuVxyXG4gICAgICAgICAgICAgICAgY29sb3Jfa2V5ID0gc3RyLnNsaWNlKGJlZ2luICsgMSwgYmVnaW4gKyA1KTtcclxuICAgICAgICAgICAgICAgIGxldCBjb2xvcl9zdHIgPSB0aGlzLnN0cl9jb2xvcltjb2xvcl9rZXldXHJcbiAgICAgICAgICAgICAgICBpZiAoY29sb3Jfc3RyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViID0gc3RyLnNsaWNlKGJlZ2luICsgNiwgZW5kKTtcclxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlVmFsdWUgPSB0aGlzLmdldENvbG9yU3RyaW5nQ29sb3Ioc3ViLCBjb2xvcl9zdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1N0ciA9IG5ld1N0ci5yZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaSA9IGVuZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzaXplX2luZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGxldCBzaXplX2JlZ2luOiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGxldCBzaXplX2VuZDogbnVtYmVyID0gMDtcclxuICAgICAgICBsZXQgc2l6ZV9zZWFyY2hWYWx1ZTogc3RyaW5nO1xyXG4gICAgICAgIC8vIGxldCBzaXplX3N1Yjogc3RyaW5nXHJcblxyXG4gICAgICAgIC8vIOino+aekOWwuuWvuHs0MD0xMDAlfSwxMDAl5pivNDDlsLrlr7gu5L6L5a2QMu+8mlticm/lr7nnm67moIfpgKDmiJBdW3JlZHs0MD0xMDQlfV1bYnJv5pS75Ye75Lyk5a6zXVxyXG4gICAgICAgIHdoaWxlIChzaXplX2luZGV4IDwgbmV3U3RyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzaXplX2JlZ2luID0gbmV3U3RyLmluZGV4T2YoXCJ7XCIsIHNpemVfaW5kZXgpO1xyXG4gICAgICAgICAgICBzaXplX2VuZCA9IG5ld1N0ci5pbmRleE9mKFwifVwiLCBzaXplX2JlZ2luKTtcclxuICAgICAgICAgICAgaWYgKHNpemVfYmVnaW4gIT0gLTEgJiYgc2l6ZV9lbmQgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIC8vIOWwuuWvuOWGheWuuVxyXG4gICAgICAgICAgICAgICAgc2l6ZV9zZWFyY2hWYWx1ZSA9IG5ld1N0ci5zbGljZShzaXplX2JlZ2luLCBzaXplX2VuZCArIDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNpemVfdmFsdWUgPSBuZXdTdHIuc2xpY2Uoc2l6ZV9iZWdpbiArIDEsIHNpemVfYmVnaW4gKyAzKTtcclxuICAgICAgICAgICAgICAgIGxldCBzaXplX3N1YiA9IHNpemVfc2VhcmNoVmFsdWUuc2xpY2UoNCwgc2l6ZV9zZWFyY2hWYWx1ZS5sZW5ndGggLSAxKTtcclxuICAgICAgICAgICAgICAgIGlmIChzaXplX3N1Yikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdfdmFsdWUgPSAnPHNpemUgPSAnICsgc2l6ZV92YWx1ZSArICc+JyArIHNpemVfc3ViICsgJzwvY29sb3I+JztcclxuICAgICAgICAgICAgICAgICAgICBuZXdTdHIgPSBuZXdTdHIucmVwbGFjZShzaXplX3NlYXJjaFZhbHVlLCBuZXdfdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNpemVfaW5kZXggPSBzaXplX2VuZDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdHI7XHJcbiAgICB9XHJcbiAgICAvKirmjInlk4HotKjovazmjaLlrZfnrKbkuLLpopzoibIgKi9cclxuICAgIHByaXZhdGUgZ2V0Q29sb3JTdHJpbmdDb2xvcihzdHI6IHN0cmluZyA9ICcjRkZGRkZGJywgY29sb3Jfc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAnPGNvbG9yPScgKyBjb2xvcl9zdHIgKyAnPicgKyBzdHIgKyAnPC9jb2xvcj4nO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmYv+aLieS8r+aVsOWtlyDovawg5rGJ5a2XXHJcbiAgICAgKiBAcGFyYW0gbnVtIOimgei9rOeahOaVsOWtl1xyXG4gICAgICogQHJldHVybnMg5rGJ5a2X5pWw5a2XXHJcbiAgICAgKiBAYXV0aG9yIHhoeFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXJhYmljVG9DaGluZXNlKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgdW5pdF9zZWN0aW9uID0gWycnLCAn5LiHJywgJ+S6vycsICfkuIfkur8nLCAn5Lq/5Lq/J107XHJcbiAgICAgICAgbGV0IHVuaXRfY2huID0gWycnLCAn5Y2BJywgJ+eZvicsICfljYMnXTtcclxuICAgICAgICBsZXQgY2hhcnMgPSBbJ+mbticsICfkuIAnLCAn5LqMJywgJ+S4iScsICflm5snLCAn5LqUJywgJ+WFrScsICfkuIMnLCAn5YWrJywgJ+S5nSddO1xyXG4gICAgICAgIGxldCB1bml0X2luZGV4ID0gMDtcclxuICAgICAgICBsZXQgc3RyX2lucyA9ICcnLCB6aF9zdHIgPSAnJztcclxuICAgICAgICBsZXQgbmVlZF96ZXJvID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCBTZWN0aW9uVG9DaGluZXNlID0gZnVuY3Rpb24gKHNlY3Rpb24pIHtcclxuICAgICAgICAgICAgbGV0IF96aF9zdHIgPSAnJztcclxuICAgICAgICAgICAgbGV0IF91bml0X2luZGV4ID0gMDtcclxuICAgICAgICAgICAgbGV0IHplcm8gPSB0cnVlO1xyXG4gICAgICAgICAgICB3aGlsZSAoc2VjdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgICAgIGxldCB2ID0gc2VjdGlvbiAlIDEwO1xyXG4gICAgICAgICAgICAgICAgbGV0IF9zdHJfaW5zID0gJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAodiA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghemVybykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6ZXJvID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3poX3N0ciA9IGNoYXJzW3ZdICsgX3poX3N0cjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHplcm8gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VuaXRfaW5kZXggIT09IDEgfHwgc2VjdGlvbiA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3N0cl9pbnMgPSBjaGFyc1t2XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIF9zdHJfaW5zICs9IHVuaXRfY2huW191bml0X2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBfemhfc3RyID0gX3N0cl9pbnMgKyBfemhfc3RyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKytfdW5pdF9pbmRleDtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBNYXRoLmZsb29yKHNlY3Rpb24gLyAxMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIF96aF9zdHI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKG51bSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hhcnNbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3aGlsZSAobnVtID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgc2VjdGlvbiA9IG51bSAlIDEwMDAwO1xyXG4gICAgICAgICAgICBpZiAobmVlZF96ZXJvKSB7XHJcbiAgICAgICAgICAgICAgICB6aF9zdHIgPSBjaGFyc1swXSArIHpoX3N0cjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHJfaW5zID0gU2VjdGlvblRvQ2hpbmVzZShzZWN0aW9uKTtcclxuICAgICAgICAgICAgc3RyX2lucyArPSAoc2VjdGlvbiAhPT0gMCkgPyB1bml0X3NlY3Rpb25bdW5pdF9pbmRleF0gOiB1bml0X3NlY3Rpb25bMF07XHJcbiAgICAgICAgICAgIHpoX3N0ciA9IHN0cl9pbnMgKyB6aF9zdHI7XHJcbiAgICAgICAgICAgIG5lZWRfemVybyA9IChzZWN0aW9uIDwgMTAwMCkgJiYgKHNlY3Rpb24gPiAwKTtcclxuICAgICAgICAgICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyAxMDAwMCk7XHJcbiAgICAgICAgICAgICsrdW5pdF9pbmRleDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB6aF9zdHI7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOmZkOWItuWtl+espuS4sumVv+W6pu+8jOi2heWHuumDqOWIhueUqC4uLuS7o+abv1xyXG4gICAgICogQHBhcmFtIHN0ciDopoHmi4bliIbnmoTlrZfnrKbkuLJcclxuICAgICAqIEBwYXJhbSBtYXhfbGVuIOacgOWkp+mVv+W6plxyXG4gICAgICogQHJldHVybnMg6KKr6ZmQ5Yi25ZCO55qE5a2X56ym5LiyXHJcbiAgICAgKiBAYXV0aG9yIHhoeFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TmV3TGltaXRTdHIoc3RyOiBzdHJpbmcsIG1heF9sZW46IG51bWJlcikge1xyXG4gICAgICAgIGxldCBhcnJfc3RyID0gc3RyLnNwbGl0KFwiXCIpO1xyXG4gICAgICAgIGxldCBuZXdfc3RyID0gJyc7XHJcbiAgICAgICAgbWF4X2xlbiA9IGFycl9zdHIubGVuZ3RoID49IG1heF9sZW4gPyBtYXhfbGVuIDogYXJyX3N0ci5sZW5ndGg7Ly/lrZfnrKbkuLLkuI3og73otoXlh7rnmoTplb/luqbvvIzlkKbliJnnlKguLi7mmL7npLpcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heF9sZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaSA9PSAobWF4X2xlbiAtIDEpKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdfc3RyICs9ICcuLi4nO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmV3X3N0ciArPSBhcnJfc3RyW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdfc3RyO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuIl19