231 lines
27 KiB
JavaScript
231 lines
27 KiB
JavaScript
|
|
(function() {
|
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
|
var __module = nodeEnv ? module : {exports:{}};
|
|
var __filename = 'preview-scripts/assets/Script/Block.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, '2bf4dXY+rJG37abLKiCEh7s', 'Block');
|
|
// Script/Block.ts
|
|
|
|
"use strict";
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var GameData_1 = require("./GameData");
|
|
var GameManager_1 = require("./GameManager");
|
|
var Notification_1 = require("./tool/Notification");
|
|
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
|
var NewClass = /** @class */ (function (_super) {
|
|
__extends(NewClass, _super);
|
|
function NewClass() {
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
_this.label = null;
|
|
_this.text = 'hello';
|
|
return _this;
|
|
}
|
|
// LIFE-CYCLE CALLBACKS:
|
|
NewClass.prototype.onLoad = function () {
|
|
this.node.getComponent(cc.PolygonCollider).enabled = true;
|
|
this.speed = 10;
|
|
this.num = 0;
|
|
this.move = false;
|
|
if (this.node.name.length > 6) {
|
|
this.num = parseInt(this.node.name.substring(5, 7));
|
|
}
|
|
else
|
|
this.num = parseInt(this.node.name.substring(5, 6));
|
|
this.speed = GameData_1.default._instance.BLOCK_INFO[this.num - 1].speed;
|
|
this.init();
|
|
};
|
|
NewClass.prototype.start = function () {
|
|
};
|
|
NewClass.prototype.init = function () {
|
|
var _this = this;
|
|
var speedTemp = this.speed;
|
|
this.getSpeed();
|
|
if (this.num > GameData_1.default._instance.GM_INFO.blockScale) {
|
|
if (this.speed < GameData_1.default._instance.LEVEL_INFO.slowSpeed)
|
|
this.speed = GameData_1.default._instance.LEVEL_INFO.slowSpeed;
|
|
}
|
|
else {
|
|
if (this.speed < GameData_1.default._instance.LEVEL_INFO.fastSpeed)
|
|
this.speed = GameData_1.default._instance.LEVEL_INFO.fastSpeed;
|
|
}
|
|
if (this.speed > speedTemp)
|
|
this.speed = speedTemp;
|
|
if (this.num != 13 && !GameData_1.default._instance.GM_INFO.probation) {
|
|
GameData_1.default._instance.CLICK_DATA.block = this.num;
|
|
GameData_1.default._instance.CLICK_DATA.speed = this.speed;
|
|
this.getDifficulty();
|
|
GameManager_1.default._instance.Air2.push(this.speed);
|
|
if (GameManager_1.default._instance.Air2.length > 99) {
|
|
console.log("被限制后", GameManager_1.default._instance.Air2);
|
|
}
|
|
}
|
|
else {
|
|
if (GameManager_1.default._instance.block) {
|
|
var random = parseInt(Math.random() * 3 + "") + 1;
|
|
this.speed = GameManager_1.default._instance.block.getComponent("Block").speed + random;
|
|
}
|
|
this.node.getComponent(cc.PolygonCollider).enabled = false;
|
|
this.node.getComponent(cc.BoxCollider).enabled = false;
|
|
GameData_1.default._instance.CLICK_DATA.fakeSpeed = this.speed;
|
|
}
|
|
this.move = true;
|
|
this.tween =
|
|
cc.tween(this.node)
|
|
.to(this.speed, { x: -this.node.x })
|
|
.call(function () {
|
|
_this.move = false;
|
|
})
|
|
.start();
|
|
};
|
|
NewClass.prototype.getSpeed = function () {
|
|
//先加范围 厚的
|
|
var reduceSpeed = GameData_1.default._instance.LEVEL_INFO.reduceSpeed;
|
|
if (reduceSpeed > 35)
|
|
reduceSpeed = 35;
|
|
reduceSpeed = parseInt(Math.random() * reduceSpeed + "");
|
|
var random = Math.random() * 10;
|
|
var max = 1;
|
|
if (GameData_1.default._instance.LEVEL_INFO.speed < 1.3)
|
|
max = 9;
|
|
else if (GameData_1.default._instance.LEVEL_INFO.speed < 1.5)
|
|
max = 7;
|
|
else if (GameData_1.default._instance.LEVEL_INFO.speed < 1.8)
|
|
max = 5;
|
|
else if (GameData_1.default._instance.LEVEL_INFO.speed < 2)
|
|
max = 3;
|
|
if (random > max)
|
|
reduceSpeed = -reduceSpeed;
|
|
//先乘以系数
|
|
this.speed = this.speed / GameData_1.default._instance.LEVEL_INFO.speed;
|
|
this.speed = parseInt(this.speed * 10 / 10 + "");
|
|
//后减去随机值
|
|
reduceSpeed = parseInt(reduceSpeed * 10 / 10 + "");
|
|
this.speed = this.speed - reduceSpeed / 10;
|
|
if (this.num != 13) {
|
|
GameManager_1.default._instance.Air.push(this.speed);
|
|
if (GameManager_1.default._instance.Air.length == 99) {
|
|
console.log("初始数据", GameManager_1.default._instance.Air);
|
|
}
|
|
}
|
|
};
|
|
NewClass.prototype.getDifficulty = function () {
|
|
var difficulty1 = 0;
|
|
var sudu = Math.abs(this.speed - GameManager_1.default._instance.oldSpeed);
|
|
difficulty1 = (sudu / 10 + 1) * (11 - this.speed);
|
|
if (difficulty1 <= 1)
|
|
difficulty1 = 1;
|
|
else if (difficulty1 >= 7)
|
|
difficulty1 = 7;
|
|
var difficulty2 = 0;
|
|
if (this.node.width < 180)
|
|
difficulty2 = 0;
|
|
else if (this.node.width < 199)
|
|
difficulty2 = 0.5;
|
|
else
|
|
difficulty2 = 1;
|
|
var difficulty3 = 0;
|
|
if (GameManager_1.default._instance.interfere == true) {
|
|
difficulty3 = 1;
|
|
}
|
|
var difficulty4 = 0;
|
|
if (this.num > 6) {
|
|
difficulty4 = 1;
|
|
}
|
|
GameManager_1.default._instance.oldSpeed = this.speed;
|
|
this.difficulty = 0;
|
|
this.difficulty = difficulty1 + difficulty2 + difficulty3 + difficulty4;
|
|
this.difficulty = parseInt(this.difficulty * 10 + "");
|
|
GameData_1.default._instance.CLICK_DATA.difficulty = this.difficulty / 10;
|
|
GameManager_1.default._instance.difficultyArray += GameData_1.default._instance.CLICK_DATA.difficulty;
|
|
if (GameData_1.default._instance.CLICK_DATA.difficulty > GameData_1.default._instance.GM_INFO.difficultyMax)
|
|
GameData_1.default._instance.GM_INFO.difficultyMax = GameData_1.default._instance.CLICK_DATA.difficulty;
|
|
};
|
|
NewClass.prototype.setScore = function (fen) {
|
|
var score = 0;
|
|
var difficulty = this.difficulty / 10;
|
|
var layer = GameData_1.default._instance.LEVEL_INFO.layer;
|
|
var doubleHit = GameData_1.default._instance.LEVEL_INFO.doubleHit;
|
|
score = parseInt(fen * difficulty * layer * doubleHit + "");
|
|
Notification_1.Notification.emit("addScore", score);
|
|
};
|
|
NewClass.prototype.hide = function () {
|
|
var _this = this;
|
|
cc.tween(this.node)
|
|
.to(0.2, { opacity: 0 })
|
|
.call(function () {
|
|
_this.node.active = false;
|
|
_this.node.removeFromParent();
|
|
_this.node = null;
|
|
})
|
|
.start();
|
|
};
|
|
NewClass.prototype.onCollisionEnter = function (other, self) {
|
|
if (GameManager_1.default._instance) {
|
|
if (GameManager_1.default._instance.over == true) {
|
|
return;
|
|
}
|
|
}
|
|
if (other.node.name == "Player") {
|
|
var max = self.name.length;
|
|
var ColliderName = other.name.substring(6, max);
|
|
if (this.move == true) {
|
|
this.move = false;
|
|
if (this.tween) {
|
|
this.tween.stop();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
NewClass.prototype.update = function (dt) {
|
|
};
|
|
__decorate([
|
|
property(cc.Label)
|
|
], NewClass.prototype, "label", void 0);
|
|
__decorate([
|
|
property
|
|
], NewClass.prototype, "text", void 0);
|
|
NewClass = __decorate([
|
|
ccclass
|
|
], NewClass);
|
|
return NewClass;
|
|
}(cc.Component));
|
|
exports.default = NewClass;
|
|
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsNkNBQXdDO0FBQ3hDLG9EQUFtRDtBQUM3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQW1LQztRQWhLRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O0lBNkozQixDQUFDO0lBdEpHLHdCQUF3QjtJQUV4Qix5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JEOztZQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELHdCQUFLLEdBQUw7SUFDQSxDQUFDO0lBRUQsdUJBQUksR0FBSjtRQUFBLGlCQXFDQztRQXBDRyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBQztZQUNoRCxJQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVM7Z0JBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1NBQ2hIO2FBQ0k7WUFDRCxJQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVM7Z0JBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1NBQ2hIO1FBQ0QsSUFBRyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUVsRCxJQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBQztZQUN2RCxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDL0Msa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixxQkFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxJQUFHLHFCQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFDO2dCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBQyxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsRDtTQUNKO2FBQ0c7WUFDQSxJQUFHLHFCQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBQztnQkFDM0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQzthQUNqRjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZELGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLO1lBQ1YsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUNsQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUM7aUJBQy9CLElBQUksQ0FBQztnQkFDRixLQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDLENBQUM7aUJBQ0QsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLFVBQVU7UUFDVixJQUFJLFdBQVcsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzVELElBQUcsV0FBVyxHQUFHLEVBQUU7WUFBRSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ3JDLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxHQUFHO1lBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNqRCxJQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRztZQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDdEQsSUFBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLEdBQUc7WUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ3RELElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFHLE1BQU0sR0FBRyxHQUFHO1lBQUUsV0FBVyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQzVDLE9BQU87UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0MsU0FBUztRQUNULFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsR0FBQyxFQUFFLENBQUM7UUFDekMsSUFBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUNmLHFCQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFDLHFCQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7SUFDTCxDQUFDO0lBRUQsZ0NBQWEsR0FBYjtRQUNJLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsV0FBVyxHQUFHLENBQUMsSUFBSSxHQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBRyxXQUFXLElBQUksQ0FBQztZQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDaEMsSUFBRyxXQUFXLElBQUksQ0FBQztZQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRztZQUFFLFdBQVcsR0FBRyxDQUFDLENBQUM7YUFDckMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHO1lBQUUsV0FBVyxHQUFHLEdBQUcsQ0FBQzs7WUFDNUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBRyxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFDO1lBQ3ZDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBQztZQUNaLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDbkI7UUFDRCxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsR0FBRyxXQUFXLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxHQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0RCxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUMsRUFBRSxDQUFDO1FBQzlELHFCQUFXLENBQUMsU0FBUyxDQUFDLGVBQWUsSUFBSyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQ25GLElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYTtZQUNsRixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7SUFDNUYsQ0FBQztJQUVELDJCQUFRLEdBQVIsVUFBUyxHQUFHO1FBQ1IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEMsSUFBSSxLQUFLLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNoRCxJQUFJLFNBQVMsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3hELEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVELDJCQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsdUJBQUksR0FBSjtRQUFBLGlCQVNDO1FBUkcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDbkIsSUFBSSxDQUFDO1lBQ0YsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLEtBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QixLQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUM7YUFDRCxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFRCxtQ0FBZ0IsR0FBaEIsVUFBaUIsS0FBa0IsRUFBRSxJQUFpQjtRQUNsRCxJQUFHLHFCQUFXLENBQUMsU0FBUyxFQUFDO1lBQ3JCLElBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDbEMsT0FBTzthQUNWO1NBQ0o7UUFDRCxJQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQztZQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBQztvQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNyQjthQUNKO1NBQ0o7SUFDTCxDQUFDO0lBRUQseUJBQU0sR0FBTixVQUFRLEVBQUU7SUFDVixDQUFDO0lBL0pEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7MkNBQ0k7SUFHdkI7UUFEQyxRQUFROzBDQUNjO0lBTk4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQW1LNUI7SUFBRCxlQUFDO0NBbktELEFBbUtDLENBbktxQyxFQUFFLENBQUMsU0FBUyxHQW1LakQ7a0JBbktvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdhbWVEYXRhIGZyb20gXCIuL0dhbWVEYXRhXCI7XHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL3Rvb2wvTm90aWZpY2F0aW9uJztcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcbiAgICB0d2VlbjogY2MuVHdlZW48Y2MuTm9kZT47XHJcbiAgICBzcGVlZDogbnVtYmVyOyAgLy/np7vliqjpgJ/luqbvvIzml7bpl7Tlj4LmlbDvvIzkvY3np7vkuKrlm7rlrppcclxuICAgIG1vdmU6IGJvb2xlYW47ICAvL+aYr+WQpuWcqOenu+WKqOeKtuaAgeOAglxyXG4gICAgbnVtOiBudW1iZXI7XHJcbiAgICBkaWZmaWN1bHR5OiBudW1iZXI7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlBvbHlnb25Db2xsaWRlcikuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IDEwO1xyXG4gICAgICAgIHRoaXMubnVtID0gMDtcclxuICAgICAgICB0aGlzLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLm5vZGUubmFtZS5sZW5ndGggPiA2KXtcclxuICAgICAgICAgICAgdGhpcy5udW0gPSBwYXJzZUludCh0aGlzLm5vZGUubmFtZS5zdWJzdHJpbmcoNSw3KSlcclxuICAgICAgICB9ZWxzZSAgdGhpcy5udW0gPSBwYXJzZUludCh0aGlzLm5vZGUubmFtZS5zdWJzdHJpbmcoNSw2KSlcclxuICAgICAgICB0aGlzLnNwZWVkID0gR2FtZURhdGEuX2luc3RhbmNlLkJMT0NLX0lORk9bdGhpcy5udW0tMV0uc3BlZWQ7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKXtcclxuICAgICAgICBsZXQgc3BlZWRUZW1wID0gdGhpcy5zcGVlZDtcclxuICAgICAgICB0aGlzLmdldFNwZWVkKCk7XHJcbiAgICAgICAgaWYodGhpcy5udW0gPiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5ibG9ja1NjYWxlKXtcclxuICAgICAgICAgICAgaWYodGhpcy5zcGVlZCA8IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNsb3dTcGVlZCl0aGlzLnNwZWVkID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc2xvd1NwZWVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYodGhpcy5zcGVlZCA8IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmZhc3RTcGVlZCl0aGlzLnNwZWVkID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZmFzdFNwZWVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnNwZWVkID4gc3BlZWRUZW1wKSB0aGlzLnNwZWVkID0gc3BlZWRUZW1wO1xyXG5cclxuICAgICAgICBpZih0aGlzLm51bSAhPSAxMyAmJiAhR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ucHJvYmF0aW9uKXtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuYmxvY2sgPSB0aGlzLm51bTtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuc3BlZWQgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgICAgICB0aGlzLmdldERpZmZpY3VsdHkoKTtcclxuICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLkFpcjIucHVzaCh0aGlzLnNwZWVkKTtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLkFpcjIubGVuZ3RoID4gOTkpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLooqvpmZDliLblkI5cIixHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmJsb2NrKXtcclxuICAgICAgICAgICAgICAgIGxldCByYW5kb20gPSBwYXJzZUludChNYXRoLnJhbmRvbSgpKjMrXCJcIikgKyAxXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwZWVkID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLmJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnNwZWVkICsgcmFuZG9tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuUG9seWdvbkNvbGxpZGVyKS5lbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuQm94Q29sbGlkZXIpLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZmFrZVNwZWVkID0gdGhpcy5zcGVlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb3ZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gXHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50byh0aGlzLnNwZWVkLHt4Oi10aGlzLm5vZGUueH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubW92ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3BlZWQoKXtcclxuICAgICAgICAvL+WFiOWKoOiMg+WbtCAg5Y6a55qEXHJcbiAgICAgICAgbGV0IHJlZHVjZVNwZWVkID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucmVkdWNlU3BlZWQ7XHJcbiAgICAgICAgaWYocmVkdWNlU3BlZWQgPiAzNSkgcmVkdWNlU3BlZWQgPSAzNVxyXG4gICAgICAgIHJlZHVjZVNwZWVkID0gcGFyc2VJbnQoTWF0aC5yYW5kb20oKSpyZWR1Y2VTcGVlZCArIFwiXCIpO1xyXG4gICAgICAgIGxldCByYW5kb20gPSBNYXRoLnJhbmRvbSgpKjEwO1xyXG4gICAgICAgIGxldCBtYXggPSAxO1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkIDwgMS4zKSBtYXggPSA5O1xyXG4gICAgICAgIGVsc2UgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQgPCAxLjUpIG1heCA9IDc7XHJcbiAgICAgICAgZWxzZSBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zcGVlZCA8IDEuOCkgbWF4ID0gNTtcclxuICAgICAgICBlbHNlIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkIDwgMikgbWF4ID0gMztcclxuICAgICAgICBpZihyYW5kb20gPiBtYXgpIHJlZHVjZVNwZWVkID0gLXJlZHVjZVNwZWVkO1xyXG4gICAgICAgIC8v5YWI5LmY5Lul57O75pWwXHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHRoaXMuc3BlZWQvR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQ7XHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHBhcnNlSW50KHRoaXMuc3BlZWQqMTAvMTAgKyBcIlwiKTtcclxuICAgICAgICAvL+WQjuWHj+WOu+maj+acuuWAvCBcclxuICAgICAgICByZWR1Y2VTcGVlZCA9IHBhcnNlSW50KHJlZHVjZVNwZWVkKjEwLzEwICsgXCJcIik7XHJcbiAgICAgICAgdGhpcy5zcGVlZCA9IHRoaXMuc3BlZWQgLSByZWR1Y2VTcGVlZC8xMDtcclxuICAgICAgICBpZih0aGlzLm51bSAhPSAxMyApe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyLnB1c2godGhpcy5zcGVlZCk7XHJcbiAgICAgICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5BaXIubGVuZ3RoID09IDk5KXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Yid5aeL5pWw5o2uXCIsR2FtZU1hbmFnZXIuX2luc3RhbmNlLkFpcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGlmZmljdWx0eSgpe1xyXG4gICAgICAgIHZhciBkaWZmaWN1bHR5MSA9IDA7XHJcbiAgICAgICAgdmFyIHN1ZHUgPSBNYXRoLmFicyh0aGlzLnNwZWVkIC0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLm9sZFNwZWVkKTtcclxuICAgICAgICBkaWZmaWN1bHR5MSA9IChzdWR1LzEwKzEpKigxMS10aGlzLnNwZWVkKTtcclxuICAgICAgICBpZihkaWZmaWN1bHR5MSA8PSAxKSBkaWZmaWN1bHR5MSA9IDE7XHJcbiAgICAgICAgZWxzZSBpZihkaWZmaWN1bHR5MSA+PSA3KSBkaWZmaWN1bHR5MSA9IDc7XHJcbiAgICAgICAgdmFyIGRpZmZpY3VsdHkyID0gMDtcclxuICAgICAgICBpZih0aGlzLm5vZGUud2lkdGggPCAxODApIGRpZmZpY3VsdHkyID0gMDtcclxuICAgICAgICBlbHNlIGlmKHRoaXMubm9kZS53aWR0aCA8IDE5OSkgZGlmZmljdWx0eTIgPSAwLjU7XHJcbiAgICAgICAgZWxzZSBkaWZmaWN1bHR5MiA9IDE7XHJcbiAgICAgICAgdmFyIGRpZmZpY3VsdHkzID0gMDtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuaW50ZXJmZXJlID09IHRydWUpe1xyXG4gICAgICAgICAgICBkaWZmaWN1bHR5MyA9IDE7XHJcbiAgICAgICAgfSBcclxuICAgICAgICB2YXIgZGlmZmljdWx0eTQgPSAwO1xyXG4gICAgICAgIGlmKHRoaXMubnVtID4gNil7XHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHk0ID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLm9sZFNwZWVkID0gdGhpcy5zcGVlZDtcclxuICAgICAgICB0aGlzLmRpZmZpY3VsdHkgID0gMDtcclxuICAgICAgICB0aGlzLmRpZmZpY3VsdHkgPSBkaWZmaWN1bHR5MSArIGRpZmZpY3VsdHkyICsgZGlmZmljdWx0eTMgKyBkaWZmaWN1bHR5NDtcclxuICAgICAgICB0aGlzLmRpZmZpY3VsdHkgID0gcGFyc2VJbnQodGhpcy5kaWZmaWN1bHR5ICoxMCArIFwiXCIpO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmRpZmZpY3VsdHkgPSB0aGlzLmRpZmZpY3VsdHkvMTA7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLmRpZmZpY3VsdHlBcnJheSArPSAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZGlmZmljdWx0eTtcclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5kaWZmaWN1bHR5ID4gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlmZmljdWx0eU1heClcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlmZmljdWx0eU1heCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmRpZmZpY3VsdHk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2NvcmUoZmVuKXtcclxuICAgICAgICBsZXQgc2NvcmUgPSAwO1xyXG4gICAgICAgIGxldCBkaWZmaWN1bHR5ID0gdGhpcy5kaWZmaWN1bHR5IC8gMTA7XHJcbiAgICAgICAgbGV0IGxheWVyID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ubGF5ZXI7XHJcbiAgICAgICAgbGV0IGRvdWJsZUhpdCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmRvdWJsZUhpdDtcclxuICAgICAgICBzY29yZSA9IHBhcnNlSW50KGZlbiAqIGRpZmZpY3VsdHkgKiBsYXllciAqIGRvdWJsZUhpdCArIFwiXCIpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwiYWRkU2NvcmVcIixzY29yZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZSgpe1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZSA9IG51bGw7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNvbGxpc2lvbkVudGVyKG90aGVyOiBjYy5Db2xsaWRlciwgc2VsZjogY2MuQ29sbGlkZXIpIHtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Upe1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Uub3ZlciA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihvdGhlci5ub2RlLm5hbWUgPT0gXCJQbGF5ZXJcIil7XHJcbiAgICAgICAgICAgIGxldCBtYXggPSBzZWxmLm5hbWUubGVuZ3RoO1xyXG4gICAgICAgICAgICBsZXQgQ29sbGlkZXJOYW1lID0gb3RoZXIubmFtZS5zdWJzdHJpbmcoNixtYXgpO1xyXG4gICAgICAgICAgICBpZih0aGlzLm1vdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHdlZW4pe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdlZW4uc3RvcCgpOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|