@galacean/engine-physics-physx 1.0.0-alpha.7 → 1.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +3 -3
- package/dist/module.js +3 -3
- package/libs/physx.release.js +1 -1
- package/package.json +1 -1
package/dist/module.js
CHANGED
|
@@ -335,7 +335,7 @@ var ShapeFlag;
|
|
|
335
335
|
}
|
|
336
336
|
var controllers = this._controllers;
|
|
337
337
|
for(var i = 0, n = controllers.length; i < n; i++){
|
|
338
|
-
controllers.get(i).
|
|
338
|
+
controllers.get(i)._setLocalPosition(this._position, this._scale);
|
|
339
339
|
}
|
|
340
340
|
this._setLocalPose();
|
|
341
341
|
};
|
|
@@ -687,7 +687,7 @@ var /**
|
|
|
687
687
|
* @internal
|
|
688
688
|
*/ _proto._setLocalPosition = function _setLocalPosition(position, scale) {
|
|
689
689
|
Vector3.multiply(position, scale, this._scaledOffset);
|
|
690
|
-
this.setWorldPosition(
|
|
690
|
+
this.setWorldPosition(position);
|
|
691
691
|
};
|
|
692
692
|
return PhysXCharacterController;
|
|
693
693
|
}();
|
|
@@ -1401,4 +1401,4 @@ var InitializeState;
|
|
|
1401
1401
|
})(InitializeState || (InitializeState = {}));
|
|
1402
1402
|
|
|
1403
1403
|
export { PhysXPhysics, PhysXRuntimeMode };
|
|
1404
|
-
//# sourceMappingURL=module.js.map
|
|
1404
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnN0YW5jZW9mLmpzIiwiLi4vc3JjL2VudW0vUGh5c1hSdW50aW1lTW9kZS50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjAvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX3NldF9wcm90b3R5cGVfb2YuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbmhlcml0cy5qcyIsIi4uL3NyYy9qb2ludC9QaHlzWEpvaW50LnRzIiwiLi4vc3JjL2pvaW50L1BoeXNYRml4ZWRKb2ludC50cyIsIi4uL3NyYy9qb2ludC9QaHlzWEhpbmdlSm9pbnQudHMiLCIuLi9zcmMvam9pbnQvUGh5c1hTcHJpbmdKb2ludC50cyIsIi4uL3NyYy9EaXNvcmRlcmVkQXJyYXkudHMiLCIuLi9zcmMvc2hhcGUvUGh5c1hDb2xsaWRlclNoYXBlLnRzIiwiLi4vc3JjL3NoYXBlL1BoeXNYQm94Q29sbGlkZXJTaGFwZS50cyIsIi4uL3NyYy9zaGFwZS9QaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlLnRzIiwiLi4vc3JjL1BoeXNYQ2hhcmFjdGVyQ29udHJvbGxlci50cyIsIi4uL3NyYy9QaHlzWENvbGxpZGVyLnRzIiwiLi4vc3JjL1BoeXNYRHluYW1pY0NvbGxpZGVyLnRzIiwiLi4vc3JjL1BoeXNYUGh5c2ljc01hbmFnZXIudHMiLCIuLi9zcmMvUGh5c1hQaHlzaWNzTWF0ZXJpYWwudHMiLCIuLi9zcmMvUGh5c1hTdGF0aWNDb2xsaWRlci50cyIsIi4uL3NyYy9zaGFwZS9QaHlzWFBsYW5lQ29sbGlkZXJTaGFwZS50cyIsIi4uL3NyYy9zaGFwZS9QaHlzWFNwaGVyZUNvbGxpZGVyU2hhcGUudHMiLCIuLi9zcmMvUGh5c1hQaHlzaWNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBfaW5zdGFuY2VvZihsZWZ0LCByaWdodCkge1xuICAgIGlmIChyaWdodCAhPSBudWxsICYmIHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgcmlnaHRbU3ltYm9sLmhhc0luc3RhbmNlXSkge1xuICAgICAgICByZXR1cm4gISFyaWdodFtTeW1ib2wuaGFzSW5zdGFuY2VdKGxlZnQpO1xuICAgIH0gZWxzZSByZXR1cm4gbGVmdCBpbnN0YW5jZW9mIHJpZ2h0O1xufVxuZXhwb3J0IHsgX2luc3RhbmNlb2YgYXMgXyB9O1xuIiwiLyoqXG4gKiBQaHlzWCBydW50aW1lIG1vZGUuXG4gKi9cbmV4cG9ydCBlbnVtIFBoeXNYUnVudGltZU1vZGUge1xuICAvKiogVXNlIHdlYkFzc2VtYmx5IG1vZGUgZmlyc3QsIGlmIFdlYkFzc2VtYmx5IG1vZGUgaXMgbm90IHN1cHBvcnRlZCwgcm9sbCBiYWNrIHRvIEphdmFTY3JpcHQgbW9kZS4gICovXG4gIEF1dG8sXG4gIC8qKiBXZWJBc3NlbWJseSBtb2RlLiAqL1xuICBXZWJBc3NlbWJseSxcbiAgLyoqIEphdmFTY3JpcHQgbW9kZS4gKi9cbiAgSmF2YVNjcmlwdFxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIF9zZXRfcHJvdG90eXBlX29mKG8sIHApIHtcbiAgICBfc2V0X3Byb3RvdHlwZV9vZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgICAgIG8uX19wcm90b19fID0gcDtcblxuICAgICAgICByZXR1cm4gbztcbiAgICB9O1xuXG4gICAgcmV0dXJuIF9zZXRfcHJvdG90eXBlX29mKG8sIHApO1xufVxuZXhwb3J0IHsgX3NldF9wcm90b3R5cGVfb2YgYXMgXyB9O1xuIiwiaW1wb3J0IHsgX3NldF9wcm90b3R5cGVfb2YgfSBmcm9tIFwiLi9fc2V0X3Byb3RvdHlwZV9vZi5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gICAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pO1xuXG4gICAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRfcHJvdG90eXBlX29mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0cyBhcyBfIH07XG4iLCJpbXBvcnQgeyBJSm9pbnQgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlciB9IGZyb20gXCIuLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5cbi8qKlxuICogYSBiYXNlIGludGVyZmFjZSBwcm92aWRpbmcgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIFBoeXNYIGpvaW50c1xuICovXG5leHBvcnQgY2xhc3MgUGh5c1hKb2ludCBpbXBsZW1lbnRzIElKb2ludCB7XG4gIHByb3RlY3RlZCBzdGF0aWMgX3hBeGlzID0gbmV3IFZlY3RvcjMoMSwgMCwgMCk7XG4gIHByb3RlY3RlZCBzdGF0aWMgX2RlZmF1bHRWZWMgPSBuZXcgVmVjdG9yMygpO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9kZWZhdWx0UXVhdCA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5cbiAgcHJvdGVjdGVkIF9weEpvaW50OiBhbnk7XG4gIHByb3RlY3RlZCBfY29sbGlkZXI6IFBoeXNYQ29sbGlkZXI7XG4gIHByaXZhdGUgX2Nvbm5lY3RlZEFuY2hvciA9IG5ldyBWZWN0b3IzKCk7XG4gIHByaXZhdGUgX2JyZWFrRm9yY2U6IG51bWJlciA9IE51bWJlci5NQVhfVkFMVUU7XG4gIHByaXZhdGUgX2JyZWFrVG9ycXVlOiBudW1iZXIgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuXG4gIHByb3RlY3RlZCBfcGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3M7XG5cbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MpIHtcbiAgICB0aGlzLl9waHlzWFBoeXNpY3MgPSBwaHlzWFBoeXNpY3M7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElKb2ludC5zZXRDb25uZWN0ZWRDb2xsaWRlciB9XG4gICAqL1xuICBzZXRDb25uZWN0ZWRDb2xsaWRlcih2YWx1ZTogUGh5c1hDb2xsaWRlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0QWN0b3JzKHZhbHVlPy5fcHhBY3RvciB8fCBudWxsLCB0aGlzLl9jb2xsaWRlcj8uX3B4QWN0b3IgfHwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElKb2ludC5zZXRDb25uZWN0ZWRBbmNob3IgfVxuICAgKi9cbiAgc2V0Q29ubmVjdGVkQW5jaG9yKHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgdGhpcy5fY29ubmVjdGVkQW5jaG9yLmNvcHlGcm9tKHZhbHVlKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoMCwgdmFsdWUsIFBoeXNYSm9pbnQuX2RlZmF1bHRRdWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUpvaW50LnNldENvbm5lY3RlZE1hc3NTY2FsZSB9XG4gICAqL1xuICBzZXRDb25uZWN0ZWRNYXNzU2NhbGUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0SW52TWFzc1NjYWxlMCgxIC8gdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSm9pbnQuc2V0Q29ubmVjdGVkSW5lcnRpYVNjYWxlIH1cbiAgICovXG4gIHNldENvbm5lY3RlZEluZXJ0aWFTY2FsZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRJbnZJbmVydGlhU2NhbGUwKDEgLyB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElKb2ludC5zZXRNYXNzU2NhbGUgfVxuICAgKi9cbiAgc2V0TWFzc1NjYWxlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldEludk1hc3NTY2FsZTEoMSAvIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUpvaW50LnNldEluZXJ0aWFTY2FsZSB9XG4gICAqL1xuICBzZXRJbmVydGlhU2NhbGUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0SW52SW5lcnRpYVNjYWxlMSgxIC8gdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSm9pbnQuc2V0QnJlYWtGb3JjZSB9XG4gICAqL1xuICBzZXRCcmVha0ZvcmNlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9icmVha0ZvcmNlID0gdmFsdWU7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRCcmVha0ZvcmNlKHRoaXMuX2JyZWFrRm9yY2UsIHRoaXMuX2JyZWFrVG9ycXVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUpvaW50LnNldEJyZWFrVG9ycXVlIH1cbiAgICovXG4gIHNldEJyZWFrVG9ycXVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9icmVha1RvcnF1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0QnJlYWtGb3JjZSh0aGlzLl9icmVha0ZvcmNlLCB0aGlzLl9icmVha1RvcnF1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBqb2ludCBsb2NhbCBwb3NlIGZvciBhbiBhY3Rvci5cbiAgICogQHBhcmFtIGFjdG9yIDAgZm9yIHRoZSBmaXJzdCBhY3RvciwgMSBmb3IgdGhlIHNlY29uZCBhY3Rvci5cbiAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBsb2NhbCBwb3NpdGlvbiBmb3IgdGhlIGFjdG9yIHRoaXMgam9pbnRcbiAgICogQHBhcmFtIHJvdGF0aW9uIHRoZSBsb2NhbCByb3RhdGlvbiBmb3IgdGhlIGFjdG9yIHRoaXMgam9pbnRcbiAgICovXG4gIHByb3RlY3RlZCBfc2V0TG9jYWxQb3NlKGFjdG9yOiBudW1iZXIsIHBvc2l0aW9uOiBWZWN0b3IzLCByb3RhdGlvbjogUXVhdGVybmlvbik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0TG9jYWxQb3NlKGFjdG9yLCBwb3NpdGlvbiwgcm90YXRpb24pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJRml4ZWRKb2ludCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlciB9IGZyb20gXCIuLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWEpvaW50IH0gZnJvbSBcIi4vUGh5c1hKb2ludFwiO1xuXG4vKipcbiAqIEEgZml4ZWQgam9pbnQgcGVybWl0cyBubyByZWxhdGl2ZSBtb3ZlbWVudCBiZXR3ZWVuIHR3byBjb2xsaWRlcnMuIGllIHRoZSBib2RpZXMgYXJlIGdsdWVkIHRvZ2V0aGVyLlxuICovXG5leHBvcnQgY2xhc3MgUGh5c1hGaXhlZEpvaW50IGV4dGVuZHMgUGh5c1hKb2ludCBpbXBsZW1lbnRzIElGaXhlZEpvaW50IHtcbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MsIGNvbGxpZGVyOiBQaHlzWENvbGxpZGVyKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcbiAgICB0aGlzLl9jb2xsaWRlciA9IGNvbGxpZGVyO1xuICAgIHRoaXMuX3B4Sm9pbnQgPSBwaHlzWFBoeXNpY3MuX3B4UGh5c2ljcy5jcmVhdGVGaXhlZEpvaW50KFxuICAgICAgbnVsbCxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRWZWMsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0UXVhdCxcbiAgICAgIGNvbGxpZGVyLl9weEFjdG9yLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFZlYyxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRRdWF0XG4gICAgKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSUhpbmdlSm9pbnQgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlciB9IGZyb20gXCIuLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWEpvaW50IH0gZnJvbSBcIi4vUGh5c1hKb2ludFwiO1xuXG4vKipcbiAqIEEgam9pbnQgd2hpY2ggYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvIGEgaGluZ2Ugb3IgYXhsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYSGluZ2VKb2ludCBleHRlbmRzIFBoeXNYSm9pbnQgaW1wbGVtZW50cyBJSGluZ2VKb2ludCB7XG4gIHByaXZhdGUgX2F4aXNSb3RhdGlvblF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpO1xuICBwcml2YXRlIF9zd2luZ09mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG4gIHByaXZhdGUgX3ZlbG9jaXR5ID0gbmV3IFZlY3RvcjMoKTtcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpIHtcbiAgICBzdXBlcihwaHlzWFBoeXNpY3MpO1xuICAgIHRoaXMuX2NvbGxpZGVyID0gY29sbGlkZXI7XG4gICAgdGhpcy5fcHhKb2ludCA9IHBoeXNYUGh5c2ljcy5fcHhQaHlzaWNzLmNyZWF0ZVJldm9sdXRlSm9pbnQoXG4gICAgICBudWxsLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFZlYyxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRRdWF0LFxuICAgICAgY29sbGlkZXIuX3B4QWN0b3IsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0VmVjLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFF1YXRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXRBeGlzIH1cbiAgICovXG4gIHNldEF4aXModmFsdWU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICBjb25zdCB4QXhpcyA9IFBoeXNYSm9pbnQuX3hBeGlzO1xuICAgIGNvbnN0IGF4aXNSb3RhdGlvblF1YXRlcm5pb24gPSB0aGlzLl9heGlzUm90YXRpb25RdWF0ZXJuaW9uO1xuICAgIHhBeGlzLnNldCgxLCAwLCAwKTtcbiAgICB2YWx1ZS5ub3JtYWxpemUoKTtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYWNvcyhWZWN0b3IzLmRvdCh4QXhpcywgdmFsdWUpKTtcbiAgICBWZWN0b3IzLmNyb3NzKHhBeGlzLCB2YWx1ZSwgeEF4aXMpO1xuICAgIFF1YXRlcm5pb24ucm90YXRpb25BeGlzQW5nbGUoeEF4aXMsIGFuZ2xlLCBheGlzUm90YXRpb25RdWF0ZXJuaW9uKTtcblxuICAgIHRoaXMuX3NldExvY2FsUG9zZSgwLCB0aGlzLl9zd2luZ09mZnNldCwgYXhpc1JvdGF0aW9uUXVhdGVybmlvbik7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LnNldFN3aW5nT2Zmc2V0IH1cbiAgICovXG4gIHNldFN3aW5nT2Zmc2V0KHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgdGhpcy5fc3dpbmdPZmZzZXQuY29weUZyb20odmFsdWUpO1xuICAgIHRoaXMuX3NldExvY2FsUG9zZSgxLCB0aGlzLl9zd2luZ09mZnNldCwgdGhpcy5fYXhpc1JvdGF0aW9uUXVhdGVybmlvbik7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LmdldEFuZ2xlIH1cbiAgICovXG4gIGdldEFuZ2xlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3B4Sm9pbnQuZ2V0QW5nbGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUhpbmdlSm9pbnQuZ2V0VmVsb2NpdHkgfVxuICAgKi9cbiAgZ2V0VmVsb2NpdHkoKTogUmVhZG9ubHk8VmVjdG9yMz4ge1xuICAgIGNvbnN0IHZlbG9jaXR5ID0gdGhpcy5fdmVsb2NpdHk7XG4gICAgdmVsb2NpdHkuY29weUZyb20odGhpcy5fcHhKb2ludC5nZXRWZWxvY2l0eSgpKTtcbiAgICByZXR1cm4gdmVsb2NpdHk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LnNldEhhcmRMaW1pdENvbmUgfVxuICAgKi9cbiAgc2V0SGFyZExpbWl0KGxvd2VyTGltaXQ6IG51bWJlciwgdXBwZXJMaW1pdDogbnVtYmVyLCBjb250YWN0RGlzdDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRIYXJkTGltaXQobG93ZXJMaW1pdCwgdXBwZXJMaW1pdCwgY29udGFjdERpc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXRIYXJkTGltaXRDb25lIH1cbiAgICovXG4gIHNldFNvZnRMaW1pdChsb3dlckxpbWl0OiBudW1iZXIsIHVwcGVyTGltaXQ6IG51bWJlciwgc3RpZmZuZXNzOiBudW1iZXIsIGRhbXBpbmc6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0U29mdExpbWl0KGxvd2VyTGltaXQsIHVwcGVyTGltaXQsIHN0aWZmbmVzcywgZGFtcGluZyk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LnNldERyaXZlVmVsb2NpdHkgfVxuICAgKi9cbiAgc2V0RHJpdmVWZWxvY2l0eSh2ZWxvY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXREcml2ZVZlbG9jaXR5KHZlbG9jaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUhpbmdlSm9pbnQuc2V0RHJpdmVGb3JjZUxpbWl0IH1cbiAgICovXG4gIHNldERyaXZlRm9yY2VMaW1pdChsaW1pdDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXREcml2ZUZvcmNlTGltaXQobGltaXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXREcml2ZUdlYXJSYXRpbyB9XG4gICAqL1xuICBzZXREcml2ZUdlYXJSYXRpbyhyYXRpbzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXREcml2ZUdlYXJSYXRpbyhyYXRpbyk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LnNldEhpbmdlSm9pbnRGbGFnIH1cbiAgICovXG4gIHNldEhpbmdlSm9pbnRGbGFnKGZsYWc6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldFJldm9sdXRlSm9pbnRGbGFnKGZsYWcsIHZhbHVlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hKb2ludCB9IGZyb20gXCIuL1BoeXNYSm9pbnRcIjtcbmltcG9ydCB7IElTcHJpbmdKb2ludCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlciB9IGZyb20gXCIuLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcblxuLyoqXG4gKiBhIGpvaW50IHRoYXQgbWFpbnRhaW5zIGFuIHVwcGVyIG9yIGxvd2VyIGJvdW5kIChvciBib3RoKSBvbiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzIG9uIGRpZmZlcmVudCBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWFNwcmluZ0pvaW50IGV4dGVuZHMgUGh5c1hKb2ludCBpbXBsZW1lbnRzIElTcHJpbmdKb2ludCB7XG4gIHByaXZhdGUgX3N3aW5nT2Zmc2V0ID0gbmV3IFZlY3RvcjMoKTtcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpIHtcbiAgICBzdXBlcihwaHlzWFBoeXNpY3MpO1xuICAgIHRoaXMuX2NvbGxpZGVyID0gY29sbGlkZXI7XG4gICAgdGhpcy5fcHhKb2ludCA9IHBoeXNYUGh5c2ljcy5fcHhQaHlzaWNzLmNyZWF0ZURpc3RhbmNlSm9pbnQoXG4gICAgICBudWxsLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFZlYyxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRRdWF0LFxuICAgICAgY29sbGlkZXIuX3B4QWN0b3IsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0VmVjLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFF1YXRcbiAgICApO1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0RGlzdGFuY2VKb2ludEZsYWcoMiwgdHJ1ZSk7IC8vIGVuYWJsZSBtYXggZGlzdGFuY2U7XG4gICAgdGhpcy5fcHhKb2ludC5zZXREaXN0YW5jZUpvaW50RmxhZyg0LCB0cnVlKTsgLy8gZW5hYmxlIG1pbiBkaXN0YW5jZTtcbiAgICB0aGlzLl9weEpvaW50LnNldERpc3RhbmNlSm9pbnRGbGFnKDgsIHRydWUpOyAvLyBlbmFibGUgc3ByaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJU3ByaW5nSm9pbnQuc2V0U3dpbmdPZmZzZXQgfVxuICAgKi9cbiAgc2V0U3dpbmdPZmZzZXQodmFsdWU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICB0aGlzLl9zd2luZ09mZnNldC5jb3B5RnJvbSh2YWx1ZSk7XG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKDEsIHZhbHVlLCBQaHlzWEpvaW50Ll9kZWZhdWx0UXVhdCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElTcHJpbmdKb2ludC5zZXRNaW5EaXN0YW5jZSB9XG4gICAqL1xuICBzZXRNaW5EaXN0YW5jZShkaXN0YW5jZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRNaW5EaXN0YW5jZShkaXN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElTcHJpbmdKb2ludC5zZXRNYXhEaXN0YW5jZSB9XG4gICAqL1xuICBzZXRNYXhEaXN0YW5jZShkaXN0YW5jZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRNYXhEaXN0YW5jZShkaXN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElTcHJpbmdKb2ludC5zZXRUb2xlcmFuY2UgfVxuICAgKi9cbiAgc2V0VG9sZXJhbmNlKHRvbGVyYW5jZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRUb2xlcmFuY2UodG9sZXJhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVNwcmluZ0pvaW50LnNldFN0aWZmbmVzcyB9XG4gICAqL1xuICBzZXRTdGlmZm5lc3Moc3RpZmZuZXNzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldFN0aWZmbmVzcyhzdGlmZm5lc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJU3ByaW5nSm9pbnQuc2V0RGFtcGluZyB9XG4gICAqL1xuICBzZXREYW1waW5nKGRhbXBpbmc6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0RGFtcGluZyhkYW1waW5nKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBIaWdoLXBlcmZvcm1hbmNlIHVub3JkZXJlZCBhcnJheSwgZGVsZXRlIHVzZXMgZXhjaGFuZ2UgbWV0aG9kIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UsIGludGVybmFsIGNhcGFjaXR5IG9ubHkgaW5jcmVhc2VzLlxuICovXG5leHBvcnQgY2xhc3MgRGlzb3JkZXJlZEFycmF5PFQ+IHtcbiAgX2VsZW1lbnRzOiBUW107XG5cbiAgbGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvdW50OiBudW1iZXIgPSAwKSB7XG4gICAgdGhpcy5fZWxlbWVudHMgPSBuZXcgQXJyYXk8VD4oY291bnQpO1xuICB9XG5cbiAgYWRkKGVsZW1lbnQ6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IHRoaXMuX2VsZW1lbnRzLmxlbmd0aCkgdGhpcy5fZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICBlbHNlIHRoaXMuX2VsZW1lbnRzW3RoaXMubGVuZ3RoXSA9IGVsZW1lbnQ7XG4gICAgdGhpcy5sZW5ndGgrKztcbiAgfVxuXG4gIGRlbGV0ZShlbGVtZW50OiBUKTogdm9pZCB7XG4gICAgLy9UT0RPOiBJdCBjYW4gYmUgb3B0aW1pemVkIGZvciBjdXN0b20gYmluYXJ5IHNlYXJjaCBhbmQgb3RoZXIgYWxnb3JpdGhtcywgY3VycmVudGx5IHRoaXMuX2VsZW1lbnRzPj10aGlzLmxlbmd0aCB3YXN0ZXMgcGVyZm9ybWFuY2UuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9lbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHRoaXMuZGVsZXRlQnlJbmRleChpbmRleCk7XG4gIH1cblxuICBnZXQoaW5kZXg6IG51bWJlcik6IFQge1xuICAgIGlmIChpbmRleCA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgXCJJbmRleCBpcyBvdXQgb2YgcmFuZ2UuXCI7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50c1tpbmRleF07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEByZXR1cm5zIFRoZSByZXBsYWNlZCBpdGVtIGlzIHVzZWQgdG8gcmVzZXQgaXRzIGluZGV4LlxuICAgKi9cbiAgZGVsZXRlQnlJbmRleChpbmRleDogbnVtYmVyKTogVCB7XG4gICAgdmFyIGVsZW1lbnRzOiBUW10gPSB0aGlzLl9lbGVtZW50cztcbiAgICBsZXQgZW5kOiBUID0gbnVsbDtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLmxlbmd0aCAtIDE7XG4gICAgaWYgKGluZGV4ICE9PSBsYXN0SW5kZXgpIHtcbiAgICAgIGVuZCA9IGVsZW1lbnRzW2xhc3RJbmRleF07XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSBlbmQ7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoLS07XG4gICAgcmV0dXJuIGVuZDtcbiAgfVxuXG4gIGdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRzLmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJQ29sbGlkZXJTaGFwZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBEaXNvcmRlcmVkQXJyYXkgfSBmcm9tIFwiLi4vRGlzb3JkZXJlZEFycmF5XCI7XG5pbXBvcnQgeyBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYXRlcmlhbCB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NNYXRlcmlhbFwiO1xuXG4vKipcbiAqIEZsYWdzIHdoaWNoIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgU2hhcGVzLlxuICovXG5leHBvcnQgZW51bSBTaGFwZUZsYWcge1xuICAvKiogVGhlIHNoYXBlIHdpbGwgcGFydGFrZSBpbiBjb2xsaXNpb24gaW4gdGhlIHBoeXNpY2FsIHNpbXVsYXRpb24uICovXG4gIFNJTVVMQVRJT05fU0hBUEUgPSAxIDw8IDAsXG4gIC8qKiBUaGUgc2hhcGUgd2lsbCBwYXJ0YWtlIGluIHNjZW5lIHF1ZXJpZXMgKHJheSBjYXN0cywgb3ZlcmxhcCB0ZXN0cywgc3dlZXBzLCAuLi4pLiAqL1xuICBTQ0VORV9RVUVSWV9TSEFQRSA9IDEgPDwgMSxcbiAgLyoqIFRoZSBzaGFwZSBpcyBhIHRyaWdnZXIgd2hpY2ggY2FuIHNlbmQgcmVwb3J0cyB3aGVuZXZlciBvdGhlciBzaGFwZXMgZW50ZXIvbGVhdmUgaXRzIHZvbHVtZS4gKi9cbiAgVFJJR0dFUl9TSEFQRSA9IDEgPDwgMlxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBjb2xsaWRlciBzaGFwZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQaHlzWENvbGxpZGVyU2hhcGUgaW1wbGVtZW50cyBJQ29sbGlkZXJTaGFwZSB7XG4gIHN0YXRpYyByZWFkb25seSBoYWxmU3FydDogbnVtYmVyID0gMC43MDcxMDY3ODExODY1NTtcbiAgc3RhdGljIHRyYW5zZm9ybSA9IHtcbiAgICB0cmFuc2xhdGlvbjogbmV3IFZlY3RvcjMoKSxcbiAgICByb3RhdGlvbjogbnVsbFxuICB9O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2NvbnRyb2xsZXJzOiBEaXNvcmRlcmVkQXJyYXk8UGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyPiA9IG5ldyBEaXNvcmRlcmVkQXJyYXk8UGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyPigpO1xuXG4gIHByb3RlY3RlZCBfcGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3M7XG4gIHByb3RlY3RlZCBfc2NhbGU6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygxLCAxLCAxKTtcbiAgcHJvdGVjdGVkIF9wb3NpdGlvbjogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCk7XG4gIHByb3RlY3RlZCBfcm90YXRpb246IFZlY3RvcjMgPSBudWxsO1xuICBwcm90ZWN0ZWQgX2F4aXM6IFF1YXRlcm5pb24gPSBudWxsO1xuICBwcm90ZWN0ZWQgX3BoeXNYUm90YXRpb246IFF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpO1xuXG4gIHByaXZhdGUgX3NoYXBlRmxhZ3M6IFNoYXBlRmxhZyA9IFNoYXBlRmxhZy5TQ0VORV9RVUVSWV9TSEFQRSB8IFNoYXBlRmxhZy5TSU1VTEFUSU9OX1NIQVBFO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B4TWF0ZXJpYWxzOiBhbnlbXSA9IG5ldyBBcnJheSgxKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHhTaGFwZTogYW55O1xuICAvKiogQGludGVybmFsICovXG4gIF9weEdlb21ldHJ5OiBhbnk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2lkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MpIHtcbiAgICB0aGlzLl9waHlzWFBoeXNpY3MgPSBwaHlzWFBoeXNpY3M7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlclNoYXBlLnNldFJvdGF0aW9uIH1cbiAgICovXG4gIHNldFJvdGF0aW9uKHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgdGhpcy5fcm90YXRpb24gPSB2YWx1ZTtcbiAgICBRdWF0ZXJuaW9uLnJvdGF0aW9uWWF3UGl0Y2hSb2xsKHZhbHVlLngsIHZhbHVlLnksIHZhbHVlLnosIHRoaXMuX3BoeXNYUm90YXRpb24pO1xuICAgIHRoaXMuX2F4aXMgJiYgUXVhdGVybmlvbi5tdWx0aXBseSh0aGlzLl9waHlzWFJvdGF0aW9uLCB0aGlzLl9heGlzLCB0aGlzLl9waHlzWFJvdGF0aW9uKTtcbiAgICB0aGlzLl9waHlzWFJvdGF0aW9uLm5vcm1hbGl6ZSgpO1xuICAgIHRoaXMuX3NldExvY2FsUG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5zZXRQb3NpdGlvbiB9XG4gICAqL1xuICBzZXRQb3NpdGlvbih2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcG9zaXRpb24pIHtcbiAgICAgIHRoaXMuX3Bvc2l0aW9uLmNvcHlGcm9tKHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0aGlzLl9jb250cm9sbGVycztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNvbnRyb2xsZXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgY29udHJvbGxlcnMuZ2V0KGkpLl9zZXRMb2NhbFBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uLCB0aGlzLl9zY2FsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlclNoYXBlLnNldFdvcmxkU2NhbGUgfVxuICAgKi9cbiAgc2V0V29ybGRTY2FsZShzY2FsZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3NjYWxlLmNvcHlGcm9tKHNjYWxlKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoKTtcblxuICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdGhpcy5fY29udHJvbGxlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjb250cm9sbGVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnRyb2xsZXJzLmdldChpKS5fc2V0TG9jYWxQb3NpdGlvbih0aGlzLl9wb3NpdGlvbiwgdGhpcy5fc2NhbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuc2V0Q29udGFjdE9mZnNldCB9XG4gICAqIEBkZWZhdWx0IDAuMDJmICogUHhUb2xlcmFuY2VzU2NhbGU6Omxlbmd0aFxuICAgKi9cbiAgc2V0Q29udGFjdE9mZnNldChvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0Q29udGFjdE9mZnNldChvZmZzZXQpO1xuXG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0aGlzLl9jb250cm9sbGVycztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNvbnRyb2xsZXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgY29udHJvbGxlcnMuZ2V0KGkpLl9weENvbnRyb2xsZXIuc2V0Q29udGFjdE9mZnNldChvZmZzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuc2V0TWF0ZXJpYWwgfVxuICAgKi9cbiAgc2V0TWF0ZXJpYWwodmFsdWU6IFBoeXNYUGh5c2ljc01hdGVyaWFsKTogdm9pZCB7XG4gICAgdGhpcy5fcHhNYXRlcmlhbHNbMF0gPSB2YWx1ZS5fcHhNYXRlcmlhbDtcbiAgICB0aGlzLl9weFNoYXBlLnNldE1hdGVyaWFscyh0aGlzLl9weE1hdGVyaWFscyk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlclNoYXBlLnNldElzVHJpZ2dlciB9XG4gICAqL1xuICBzZXRJc1RyaWdnZXIodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RpZnlGbGFnKFNoYXBlRmxhZy5TSU1VTEFUSU9OX1NIQVBFLCAhdmFsdWUpO1xuICAgIHRoaXMuX21vZGlmeUZsYWcoU2hhcGVGbGFnLlRSSUdHRVJfU0hBUEUsIHZhbHVlKTtcbiAgICB0aGlzLl9zZXRTaGFwZUZsYWdzKHRoaXMuX3NoYXBlRmxhZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5kZXN0cm95IH1cbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcHhTaGFwZS5yZWxlYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpbnRlcm5hbFxuICAgKi9cbiAgX3NldFNoYXBlRmxhZ3MoZmxhZ3M6IFNoYXBlRmxhZykge1xuICAgIHRoaXMuX3NoYXBlRmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLl9weFNoYXBlLnNldEZsYWdzKG5ldyB0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4U2hhcGVGbGFncyh0aGlzLl9zaGFwZUZsYWdzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NldExvY2FsUG9zZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBQaHlzWENvbGxpZGVyU2hhcGUudHJhbnNmb3JtO1xuICAgIFZlY3RvcjMubXVsdGlwbHkodGhpcy5fcG9zaXRpb24sIHRoaXMuX3NjYWxlLCB0cmFuc2Zvcm0udHJhbnNsYXRpb24pO1xuICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IHRoaXMuX3BoeXNYUm90YXRpb247XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRMb2NhbFBvc2UodHJhbnNmb3JtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfaW5pdGlhbGl6ZShtYXRlcmlhbDogUGh5c1hQaHlzaWNzTWF0ZXJpYWwsIGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9pZCA9IGlkO1xuICAgIHRoaXMuX3B4TWF0ZXJpYWxzWzBdID0gbWF0ZXJpYWwuX3B4TWF0ZXJpYWw7XG4gICAgdGhpcy5fcHhTaGFwZSA9IHRoaXMuX3BoeXNYUGh5c2ljcy5fcHhQaHlzaWNzLmNyZWF0ZVNoYXBlKFxuICAgICAgdGhpcy5fcHhHZW9tZXRyeSxcbiAgICAgIG1hdGVyaWFsLl9weE1hdGVyaWFsLFxuICAgICAgdHJ1ZSxcbiAgICAgIG5ldyB0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4U2hhcGVGbGFncyh0aGlzLl9zaGFwZUZsYWdzKVxuICAgICk7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRVVUlEKGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgX21vZGlmeUZsYWcoZmxhZzogU2hhcGVGbGFnLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3NoYXBlRmxhZ3MgPSB2YWx1ZSA/IHRoaXMuX3NoYXBlRmxhZ3MgfCBmbGFnIDogdGhpcy5fc2hhcGVGbGFncyAmIH5mbGFnO1xuICB9XG59XG4iLCJpbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IElCb3hDb2xsaWRlclNoYXBlIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYXRlcmlhbCB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NNYXRlcmlhbFwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vUGh5c1hDb2xsaWRlclNoYXBlXCI7XG5cbi8qKlxuICogQm94IGNvbGxpZGVyIHNoYXBlIGluIFBoeXNYLlxuICovXG5leHBvcnQgY2xhc3MgUGh5c1hCb3hDb2xsaWRlclNoYXBlIGV4dGVuZHMgUGh5c1hDb2xsaWRlclNoYXBlIGltcGxlbWVudHMgSUJveENvbGxpZGVyU2hhcGUge1xuICBwcml2YXRlIHN0YXRpYyBfdGVtcEhhbGZFeHRlbnRzID0gbmV3IFZlY3RvcjMoKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaGFsZlNpemU6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xuXG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLCB1bmlxdWVJRDogbnVtYmVyLCBzaXplOiBWZWN0b3IzLCBtYXRlcmlhbDogUGh5c1hQaHlzaWNzTWF0ZXJpYWwpIHtcbiAgICBzdXBlcihwaHlzWFBoeXNpY3MpO1xuXG4gICAgdGhpcy5faGFsZlNpemUuc2V0KHNpemUueCAqIDAuNSwgc2l6ZS55ICogMC41LCBzaXplLnogKiAwLjUpO1xuXG4gICAgdGhpcy5fcHhHZW9tZXRyeSA9IG5ldyBwaHlzWFBoeXNpY3MuX3BoeXNYLlB4Qm94R2VvbWV0cnkoXG4gICAgICB0aGlzLl9oYWxmU2l6ZS54ICogdGhpcy5fc2NhbGUueCxcbiAgICAgIHRoaXMuX2hhbGZTaXplLnkgKiB0aGlzLl9zY2FsZS55LFxuICAgICAgdGhpcy5faGFsZlNpemUueiAqIHRoaXMuX3NjYWxlLnpcbiAgICApO1xuICAgIHRoaXMuX2luaXRpYWxpemUobWF0ZXJpYWwsIHVuaXF1ZUlEKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUJveENvbGxpZGVyU2hhcGUuc2V0U2l6ZSB9XG4gICAqL1xuICBzZXRTaXplKHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgY29uc3QgdGVtcEV4dGVudHMgPSBQaHlzWEJveENvbGxpZGVyU2hhcGUuX3RlbXBIYWxmRXh0ZW50cztcbiAgICB0aGlzLl9oYWxmU2l6ZS5zZXQodmFsdWUueCAqIDAuNSwgdmFsdWUueSAqIDAuNSwgdmFsdWUueiAqIDAuNSk7XG4gICAgVmVjdG9yMy5tdWx0aXBseSh0aGlzLl9oYWxmU2l6ZSwgdGhpcy5fc2NhbGUsIHRlbXBFeHRlbnRzKTtcbiAgICB0aGlzLl9weEdlb21ldHJ5LmhhbGZFeHRlbnRzID0gdGVtcEV4dGVudHM7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRHZW9tZXRyeSh0aGlzLl9weEdlb21ldHJ5KTtcblxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xsZXIodGVtcEV4dGVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5zZXRXb3JsZFNjYWxlIH1cbiAgICovXG4gIG92ZXJyaWRlIHNldFdvcmxkU2NhbGUoc2NhbGU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRXb3JsZFNjYWxlKHNjYWxlKTtcblxuICAgIGNvbnN0IHRlbXBFeHRlbnRzID0gUGh5c1hCb3hDb2xsaWRlclNoYXBlLl90ZW1wSGFsZkV4dGVudHM7XG4gICAgVmVjdG9yMy5tdWx0aXBseSh0aGlzLl9oYWxmU2l6ZSwgdGhpcy5fc2NhbGUsIHRlbXBFeHRlbnRzKTtcbiAgICB0aGlzLl9weEdlb21ldHJ5LmhhbGZFeHRlbnRzID0gdGVtcEV4dGVudHM7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRHZW9tZXRyeSh0aGlzLl9weEdlb21ldHJ5KTtcblxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xsZXIodGVtcEV4dGVudHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ29udHJvbGxlcihleHRlbnRzOiBWZWN0b3IzKSB7XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0aGlzLl9jb250cm9sbGVycztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNvbnRyb2xsZXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgcHhDb250cm9sbGVyID0gY29udHJvbGxlcnMuZ2V0KGkpLl9weENvbnRyb2xsZXI7XG4gICAgICBweENvbnRyb2xsZXIuc2V0SGFsZkhlaWdodChleHRlbnRzLngpO1xuICAgICAgcHhDb250cm9sbGVyLnNldEhhbGZTaWRlRXh0ZW50KGV4dGVudHMueSk7XG4gICAgICBweENvbnRyb2xsZXIuc2V0SGFsZkZvcndhcmRFeHRlbnQoZXh0ZW50cy56KTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IElDYXBzdWxlQ29sbGlkZXJTaGFwZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYXRlcmlhbCB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NNYXRlcmlhbFwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vUGh5c1hDb2xsaWRlclNoYXBlXCI7XG5cbi8qKlxuICogQ2Fwc3VsZSBjb2xsaWRlciBzaGFwZSBpbiBQaHlzWC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYQ2Fwc3VsZUNvbGxpZGVyU2hhcGUgZXh0ZW5kcyBQaHlzWENvbGxpZGVyU2hhcGUgaW1wbGVtZW50cyBJQ2Fwc3VsZUNvbGxpZGVyU2hhcGUge1xuICAvKiogQGludGVybmFsICovXG4gIF9yYWRpdXM6IG51bWJlcjtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfaGFsZkhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIF91cEF4aXM6IENvbGxpZGVyU2hhcGVVcEF4aXMgPSBDb2xsaWRlclNoYXBlVXBBeGlzLlk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MsXG4gICAgdW5pcXVlSUQ6IG51bWJlcixcbiAgICByYWRpdXM6IG51bWJlcixcbiAgICBoZWlnaHQ6IG51bWJlcixcbiAgICBtYXRlcmlhbDogUGh5c1hQaHlzaWNzTWF0ZXJpYWxcbiAgKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcblxuICAgIHRoaXMuX3JhZGl1cyA9IHJhZGl1cztcbiAgICB0aGlzLl9oYWxmSGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xuICAgIHRoaXMuX2F4aXMgPSBuZXcgUXVhdGVybmlvbigwLCAwLCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQsIFBoeXNYQ29sbGlkZXJTaGFwZS5oYWxmU3FydCk7XG4gICAgdGhpcy5fcGh5c1hSb3RhdGlvbi5jb3B5RnJvbSh0aGlzLl9heGlzKTtcblxuICAgIHRoaXMuX3B4R2VvbWV0cnkgPSBuZXcgcGh5c1hQaHlzaWNzLl9waHlzWC5QeENhcHN1bGVHZW9tZXRyeSh0aGlzLl9yYWRpdXMsIHRoaXMuX2hhbGZIZWlnaHQpO1xuICAgIHRoaXMuX2luaXRpYWxpemUobWF0ZXJpYWwsIHVuaXF1ZUlEKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNhcHN1bGVDb2xsaWRlclNoYXBlLnNldFJhZGl1cyB9XG4gICAqL1xuICBzZXRSYWRpdXModmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3JhZGl1cyA9IHZhbHVlO1xuICAgIHN3aXRjaCAodGhpcy5fdXBBeGlzKSB7XG4gICAgICBjYXNlIENvbGxpZGVyU2hhcGVVcEF4aXMuWDpcbiAgICAgICAgdGhpcy5fcHhHZW9tZXRyeS5yYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiBNYXRoLm1heCh0aGlzLl9zY2FsZS55LCB0aGlzLl9zY2FsZS56KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbGxpZGVyU2hhcGVVcEF4aXMuWTpcbiAgICAgICAgdGhpcy5fcHhHZW9tZXRyeS5yYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiBNYXRoLm1heCh0aGlzLl9zY2FsZS54LCB0aGlzLl9zY2FsZS56KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbGxpZGVyU2hhcGVVcEF4aXMuWjpcbiAgICAgICAgdGhpcy5fcHhHZW9tZXRyeS5yYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiBNYXRoLm1heCh0aGlzLl9zY2FsZS54LCB0aGlzLl9zY2FsZS55KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3B4U2hhcGUuc2V0R2VvbWV0cnkodGhpcy5fcHhHZW9tZXRyeSk7XG5cbiAgICBjb25zdCByYWRpdXMgPSB0aGlzLl9weEdlb21ldHJ5LnJhZGl1cztcbiAgICBjb25zdCBjb250cm9sbGVycyA9IHRoaXMuX2NvbnRyb2xsZXJzO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0gY29udHJvbGxlcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBjb250cm9sbGVycy5nZXQoaSkuX3B4Q29udHJvbGxlci5zZXRSYWRpdXMocmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDYXBzdWxlQ29sbGlkZXJTaGFwZS5zZXRIZWlnaHQgfVxuICAgKi9cbiAgc2V0SGVpZ2h0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9oYWxmSGVpZ2h0ID0gdmFsdWUgKiAwLjU7XG4gICAgc3dpdGNoICh0aGlzLl91cEF4aXMpIHtcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5YOlxuICAgICAgICB0aGlzLl9weEdlb21ldHJ5LmhhbGZIZWlnaHQgPSB0aGlzLl9oYWxmSGVpZ2h0ICogdGhpcy5fc2NhbGUueDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbGxpZGVyU2hhcGVVcEF4aXMuWTpcbiAgICAgICAgdGhpcy5fcHhHZW9tZXRyeS5oYWxmSGVpZ2h0ID0gdGhpcy5faGFsZkhlaWdodCAqIHRoaXMuX3NjYWxlLnk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlo6XG4gICAgICAgIHRoaXMuX3B4R2VvbWV0cnkuaGFsZkhlaWdodCA9IHRoaXMuX2hhbGZIZWlnaHQgKiB0aGlzLl9zY2FsZS56O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRHZW9tZXRyeSh0aGlzLl9weEdlb21ldHJ5KTtcblxuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuX3B4R2VvbWV0cnkuaGFsZkhlaWdodCAqIDI7XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0aGlzLl9jb250cm9sbGVycztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNvbnRyb2xsZXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgY29udHJvbGxlcnMuZ2V0KGkpLl9weENvbnRyb2xsZXIuc2V0SGVpZ2h0KGhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2Fwc3VsZUNvbGxpZGVyU2hhcGUuc2V0VXBBeGlzIH1cbiAgICovXG4gIHNldFVwQXhpcyh1cEF4aXM6IENvbGxpZGVyU2hhcGVVcEF4aXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IF9yb3RhdGlvbjogcm90YXRpb24sIF9heGlzOiBheGlzLCBfcGh5c1hSb3RhdGlvbjogcGh5c1hSb3RhdGlvbiB9ID0gdGhpcztcblxuICAgIHRoaXMuX3VwQXhpcyA9IHVwQXhpcztcbiAgICBzd2l0Y2ggKHRoaXMuX3VwQXhpcykge1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlg6XG4gICAgICAgIGF4aXMuc2V0KDAsIDAsIDAsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5ZOlxuICAgICAgICBheGlzLnNldCgwLCAwLCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQsIFBoeXNYQ29sbGlkZXJTaGFwZS5oYWxmU3FydCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlo6XG4gICAgICAgIGF4aXMuc2V0KDAsIFBoeXNYQ29sbGlkZXJTaGFwZS5oYWxmU3FydCwgMCwgUGh5c1hDb2xsaWRlclNoYXBlLmhhbGZTcXJ0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChyb3RhdGlvbikge1xuICAgICAgUXVhdGVybmlvbi5yb3RhdGlvbllhd1BpdGNoUm9sbChyb3RhdGlvbi54LCByb3RhdGlvbi55LCByb3RhdGlvbi56LCBwaHlzWFJvdGF0aW9uKTtcbiAgICAgIFF1YXRlcm5pb24ubXVsdGlwbHkocGh5c1hSb3RhdGlvbiwgYXhpcywgcGh5c1hSb3RhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBoeXNYUm90YXRpb24uY29weUZyb20oYXhpcyk7XG4gICAgfVxuICAgIHRoaXMuX3NldExvY2FsUG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5zZXRXb3JsZFNjYWxlIH1cbiAgICovXG4gIG92ZXJyaWRlIHNldFdvcmxkU2NhbGUoc2NhbGU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRXb3JsZFNjYWxlKHNjYWxlKTtcblxuICAgIGNvbnN0IGdlb21ldHJ5ID0gdGhpcy5fcHhHZW9tZXRyeTtcbiAgICBzd2l0Y2ggKHRoaXMuX3VwQXhpcykge1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlg6XG4gICAgICAgIGdlb21ldHJ5LnJhZGl1cyA9IHRoaXMuX3JhZGl1cyAqIE1hdGgubWF4KHNjYWxlLnksIHNjYWxlLnopO1xuICAgICAgICBnZW9tZXRyeS5oYWxmSGVpZ2h0ID0gdGhpcy5faGFsZkhlaWdodCAqIHNjYWxlLng7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlk6XG4gICAgICAgIGdlb21ldHJ5LnJhZGl1cyA9IHRoaXMuX3JhZGl1cyAqIE1hdGgubWF4KHNjYWxlLngsIHNjYWxlLnopO1xuICAgICAgICBnZW9tZXRyeS5oYWxmSGVpZ2h0ID0gdGhpcy5faGFsZkhlaWdodCAqIHNjYWxlLnk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlo6XG4gICAgICAgIGdlb21ldHJ5LnJhZGl1cyA9IHRoaXMuX3JhZGl1cyAqIE1hdGgubWF4KHNjYWxlLngsIHNjYWxlLnkpO1xuICAgICAgICBnZW9tZXRyeS5oYWxmSGVpZ2h0ID0gdGhpcy5faGFsZkhlaWdodCAqIHNjYWxlLno7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9weFNoYXBlLnNldEdlb21ldHJ5KGdlb21ldHJ5KTtcblxuICAgIGNvbnN0IHJhZGl1cyA9IGdlb21ldHJ5LnJhZGl1cztcbiAgICBjb25zdCBoZWlnaHQgPSBnZW9tZXRyeS5oYWxmSGVpZ2h0ICogMjtcbiAgICBjb25zdCBjb250cm9sbGVycyA9IHRoaXMuX2NvbnRyb2xsZXJzO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0gY29udHJvbGxlcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBjb25zdCBweENvbnRyb2xsZXIgPSBjb250cm9sbGVycy5nZXQoaSkuX3B4Q29udHJvbGxlcjtcbiAgICAgIHB4Q29udHJvbGxlci5zZXRSYWRpdXMocmFkaXVzKTtcbiAgICAgIHB4Q29udHJvbGxlci5zZXRIZWlnaHQoaGVpZ2h0KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgdXAgYXhpcyBvZiB0aGUgY29sbGlkZXIgc2hhcGUuXG4gKi9cbmVudW0gQ29sbGlkZXJTaGFwZVVwQXhpcyB7XG4gIC8qKiBVcCBheGlzIGlzIFguICovXG4gIFgsXG4gIC8qKiBVcCBheGlzIGlzIFkuICovXG4gIFksXG4gIC8qKiBVcCBheGlzIGlzIFouICovXG4gIFpcbn1cbiIsImltcG9ydCB7IElDaGFyYWN0ZXJDb250cm9sbGVyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljcyB9IGZyb20gXCIuL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzTWFuYWdlciB9IGZyb20gXCIuL1BoeXNYUGh5c2ljc01hbmFnZXJcIjtcbmltcG9ydCB7IFBoeXNYQm94Q29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQm94Q29sbGlkZXJTaGFwZVwiO1xuaW1wb3J0IHsgUGh5c1hDYXBzdWxlQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQ2Fwc3VsZUNvbGxpZGVyU2hhcGVcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQ29sbGlkZXJTaGFwZVwiO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNoYXJhY3RlciBjb250cm9sbGVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIElDaGFyYWN0ZXJDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbXBWZWMgPSBuZXcgVmVjdG9yMygpO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2lkOiBudW1iZXI7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B4Q29udHJvbGxlcjogYW55O1xuICAvKiogQGludGVybmFsICovXG4gIF9weE1hbmFnZXI6IFBoeXNYUGh5c2ljc01hbmFnZXI7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3NoYXBlOiBQaHlzWENvbGxpZGVyU2hhcGU7XG4gIHByaXZhdGUgX3NjYWxlZE9mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG4gIHByaXZhdGUgX3Bvc2l0aW9uOiBWZWN0b3IzID0gbnVsbDtcblxuICBwcml2YXRlIF9waHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcztcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcykge1xuICAgIHRoaXMuX3BoeXNYUGh5c2ljcyA9IHBoeXNYUGh5c2ljcztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIubW92ZSB9XG4gICAqL1xuICBtb3ZlKGRpc3A6IFZlY3RvcjMsIG1pbkRpc3Q6IG51bWJlciwgZWxhcHNlZFRpbWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3B4Q29udHJvbGxlci5tb3ZlKGRpc3AsIG1pbkRpc3QsIGVsYXBzZWRUaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuc2V0V29ybGRQb3NpdGlvbiB9XG4gICAqL1xuICBzZXRXb3JsZFBvc2l0aW9uKHBvc2l0aW9uOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICBpZiAodGhpcy5fcHhDb250cm9sbGVyKSB7XG4gICAgICBWZWN0b3IzLmFkZChwb3NpdGlvbiwgdGhpcy5fc2NhbGVkT2Zmc2V0LCBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIuX3RlbXBWZWMpO1xuICAgICAgdGhpcy5fcHhDb250cm9sbGVyLnNldFBvc2l0aW9uKFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlci5fdGVtcFZlYyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2hhcmFjdGVyQ29udHJvbGxlci5nZXRXb3JsZFBvc2l0aW9uIH1cbiAgICovXG4gIGdldFdvcmxkUG9zaXRpb24ocG9zaXRpb246IFZlY3RvcjMpOiB2b2lkIHtcbiAgICBwb3NpdGlvbi5jb3B5RnJvbSh0aGlzLl9weENvbnRyb2xsZXIuZ2V0UG9zaXRpb24oKSk7XG4gICAgcG9zaXRpb24uc3VidHJhY3QodGhpcy5fc2NhbGVkT2Zmc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuc2V0U3RlcE9mZnNldCB9XG4gICAqL1xuICBzZXRTdGVwT2Zmc2V0KG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhDb250cm9sbGVyLnNldFN0ZXBPZmZzZXQob2Zmc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuc2V0Tm9uV2Fsa2FibGVNb2RlIH1cbiAgICovXG4gIHNldE5vbldhbGthYmxlTW9kZShmbGFnOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weENvbnRyb2xsZXIuc2V0Tm9uV2Fsa2FibGVNb2RlKGZsYWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2hhcmFjdGVyQ29udHJvbGxlci5zZXRVcERpcmVjdGlvbiB9XG4gICAqL1xuICBzZXRVcERpcmVjdGlvbih1cDogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3B4Q29udHJvbGxlci5zZXRVcERpcmVjdGlvbih1cCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDaGFyYWN0ZXJDb250cm9sbGVyLnNldFNsb3BlTGltaXQgfVxuICAgKi9cbiAgc2V0U2xvcGVMaW1pdChzbG9wZUxpbWl0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weENvbnRyb2xsZXIuc2V0U2xvcGVMaW1pdChzbG9wZUxpbWl0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuYWRkU2hhcGUgfVxuICAgKi9cbiAgYWRkU2hhcGUoc2hhcGU6IFBoeXNYQ29sbGlkZXJTaGFwZSk6IHZvaWQge1xuICAgIHRoaXMuX3B4TWFuYWdlciAmJiB0aGlzLl9jcmVhdGVQWENvbnRyb2xsZXIodGhpcy5fcHhNYW5hZ2VyLCBzaGFwZSk7XG4gICAgdGhpcy5fc2hhcGUgPSBzaGFwZTtcbiAgICBzaGFwZS5fY29udHJvbGxlcnMuYWRkKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2hhcmFjdGVyQ29udHJvbGxlci5yZW1vdmVTaGFwZSB9XG4gICAqL1xuICByZW1vdmVTaGFwZShzaGFwZTogUGh5c1hDb2xsaWRlclNoYXBlKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVBYQ29udHJvbGxlcigpO1xuICAgIHRoaXMuX3NoYXBlID0gbnVsbDtcbiAgICBzaGFwZS5fY29udHJvbGxlcnMuZGVsZXRlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2hhcmFjdGVyQ29udHJvbGxlci5kZXN0cm95IH1cbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVBYQ29udHJvbGxlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2NyZWF0ZVBYQ29udHJvbGxlcihweE1hbmFnZXI6IFBoeXNYUGh5c2ljc01hbmFnZXIsIHNoYXBlOiBQaHlzWENvbGxpZGVyU2hhcGUpOiB2b2lkIHtcbiAgICBsZXQgZGVzYzogYW55O1xuICAgIGlmIChzaGFwZSBpbnN0YW5jZW9mIFBoeXNYQm94Q29sbGlkZXJTaGFwZSkge1xuICAgICAgZGVzYyA9IG5ldyB0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4Qm94Q29udHJvbGxlckRlc2MoKTtcbiAgICAgIGRlc2MuaGFsZkhlaWdodCA9IHNoYXBlLl9oYWxmU2l6ZS54O1xuICAgICAgZGVzYy5oYWxmU2lkZUV4dGVudCA9IHNoYXBlLl9oYWxmU2l6ZS55O1xuICAgICAgZGVzYy5oYWxmRm9yd2FyZEV4dGVudCA9IHNoYXBlLl9oYWxmU2l6ZS56O1xuICAgIH0gZWxzZSBpZiAoc2hhcGUgaW5zdGFuY2VvZiBQaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlKSB7XG4gICAgICBkZXNjID0gbmV3IHRoaXMuX3BoeXNYUGh5c2ljcy5fcGh5c1guUHhDYXBzdWxlQ29udHJvbGxlckRlc2MoKTtcbiAgICAgIGRlc2MucmFkaXVzID0gc2hhcGUuX3JhZGl1cztcbiAgICAgIGRlc2MuaGVpZ2h0ID0gc2hhcGUuX2hhbGZIZWlnaHQgKiAyO1xuICAgICAgZGVzYy5jbGltYmluZ01vZGUgPSAxOyAvLyBjb25zdHJhaW50IG1vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgXCJ1bnN1cHBvcnRlZCBzaGFwZSB0eXBlXCI7XG4gICAgfVxuXG4gICAgZGVzYy5zZXRNYXRlcmlhbChzaGFwZS5fcHhNYXRlcmlhbHNbMF0pO1xuXG4gICAgdGhpcy5fcHhDb250cm9sbGVyID0gcHhNYW5hZ2VyLl9nZXRDb250cm9sbGVyTWFuYWdlcigpLmNyZWF0ZUNvbnRyb2xsZXIoZGVzYyk7XG4gICAgdGhpcy5fcHhDb250cm9sbGVyLnNldFVVSUQoc2hhcGUuX2lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9kZXN0cm95UFhDb250cm9sbGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9weENvbnRyb2xsZXIpIHtcbiAgICAgIHRoaXMuX3B4Q29udHJvbGxlci5yZWxlYXNlKCk7XG4gICAgICB0aGlzLl9weENvbnRyb2xsZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9zZXRMb2NhbFBvc2l0aW9uKHBvc2l0aW9uOiBWZWN0b3IzLCBzY2FsZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIFZlY3RvcjMubXVsdGlwbHkocG9zaXRpb24sIHNjYWxlLCB0aGlzLl9zY2FsZWRPZmZzZXQpO1xuICAgIHRoaXMuc2V0V29ybGRQb3NpdGlvbihwb3NpdGlvbik7XG4gIH1cbn1cbiIsImltcG9ydCB7IElDb2xsaWRlciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQ29sbGlkZXJTaGFwZVwiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIG9mIHBoeXNpY2FsIGNvbGxpZGVyLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGh5c1hDb2xsaWRlciBpbXBsZW1lbnRzIElDb2xsaWRlciB7XG4gIHByaXZhdGUgc3RhdGljIF90ZW1wVHJhbnNmb3JtOiB7XG4gICAgdHJhbnNsYXRpb246IFZlY3RvcjM7XG4gICAgcm90YXRpb246IFF1YXRlcm5pb247XG4gIH0gPSB7IHRyYW5zbGF0aW9uOiBudWxsLCByb3RhdGlvbjogbnVsbCB9O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B4QWN0b3I6IGFueTtcblxuICBwcm90ZWN0ZWQgX3BoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzO1xuXG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzKSB7XG4gICAgdGhpcy5fcGh5c1hQaHlzaWNzID0gcGh5c1hQaHlzaWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXIuYWRkU2hhcGUgfVxuICAgKi9cbiAgYWRkU2hhcGUoc2hhcGU6IFBoeXNYQ29sbGlkZXJTaGFwZSk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3IuYXR0YWNoU2hhcGUoc2hhcGUuX3B4U2hhcGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXIucmVtb3ZlU2hhcGUgfVxuICAgKi9cbiAgcmVtb3ZlU2hhcGUoc2hhcGU6IFBoeXNYQ29sbGlkZXJTaGFwZSk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3IuZGV0YWNoU2hhcGUoc2hhcGUuX3B4U2hhcGUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXIuc2V0V29ybGRUcmFuc2Zvcm0gfVxuICAgKi9cbiAgc2V0V29ybGRUcmFuc2Zvcm0ocG9zaXRpb246IFZlY3RvcjMsIHJvdGF0aW9uOiBRdWF0ZXJuaW9uKTogdm9pZCB7XG4gICAgdGhpcy5fcHhBY3Rvci5zZXRHbG9iYWxQb3NlKHRoaXMuX3RyYW5zZm9ybShwb3NpdGlvbiwgcm90YXRpb24pLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyLmdldFdvcmxkVHJhbnNmb3JtIH1cbiAgICovXG4gIGdldFdvcmxkVHJhbnNmb3JtKG91dFBvc2l0aW9uOiBWZWN0b3IzLCBvdXRSb3RhdGlvbjogUXVhdGVybmlvbik6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IHRoaXMuX3B4QWN0b3IuZ2V0R2xvYmFsUG9zZSgpO1xuICAgIG91dFBvc2l0aW9uLnNldCh0cmFuc2Zvcm0udHJhbnNsYXRpb24ueCwgdHJhbnNmb3JtLnRyYW5zbGF0aW9uLnksIHRyYW5zZm9ybS50cmFuc2xhdGlvbi56KTtcbiAgICBvdXRSb3RhdGlvbi5zZXQodHJhbnNmb3JtLnJvdGF0aW9uLngsIHRyYW5zZm9ybS5yb3RhdGlvbi55LCB0cmFuc2Zvcm0ucm90YXRpb24ueiwgdHJhbnNmb3JtLnJvdGF0aW9uLncpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXIuZGVzdHJveSB9XG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3IucmVsZWFzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3RyYW5zZm9ybShwb3M6IFZlY3RvcjMsIHJvdDogUXVhdGVybmlvbik6IHsgdHJhbnNsYXRpb246IFZlY3RvcjM7IHJvdGF0aW9uOiBRdWF0ZXJuaW9uIH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFBoeXNYQ29sbGlkZXIuX3RlbXBUcmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtLnRyYW5zbGF0aW9uID0gcG9zO1xuICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IHJvdC5ub3JtYWxpemUoKTtcbiAgICByZXR1cm4gdHJhbnNmb3JtO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJRHluYW1pY0NvbGxpZGVyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NcIjtcblxuLyoqXG4gKiBUaGUgY29sbGlzaW9uIGRldGVjdGlvbiBtb2RlIGNvbnN0YW50cyB1c2VkIGZvciBQaHlzWER5bmFtaWNDb2xsaWRlci5jb2xsaXNpb25EZXRlY3Rpb25Nb2RlLlxuICogKi9cbmV4cG9ydCBlbnVtIENvbGxpc2lvbkRldGVjdGlvbk1vZGUge1xuICAvKiogQ29udGludW91cyBjb2xsaXNpb24gZGV0ZWN0aW9uIGlzIG9mZiBmb3IgdGhpcyBkeW5hbWljIGNvbGxpZGVyLiAqL1xuICBEaXNjcmV0ZSxcbiAgLyoqIENvbnRpbnVvdXMgY29sbGlzaW9uIGRldGVjdGlvbiBpcyBvbiBmb3IgY29sbGlkaW5nIHdpdGggc3RhdGljIG1lc2ggZ2VvbWV0cnkuICovXG4gIENvbnRpbnVvdXMsXG4gIC8qKiBDb250aW51b3VzIGNvbGxpc2lvbiBkZXRlY3Rpb24gaXMgb24gZm9yIGNvbGxpZGluZyB3aXRoIHN0YXRpYyBhbmQgZHluYW1pYyBnZW9tZXRyeS4gKi9cbiAgQ29udGludW91c0R5bmFtaWMsXG4gIC8qKiBTcGVjdWxhdGl2ZSBjb250aW51b3VzIGNvbGxpc2lvbiBkZXRlY3Rpb24gaXMgb24gZm9yIHN0YXRpYyBhbmQgZHluYW1pYyBnZW9tZXRyaWVzICovXG4gIENvbnRpbnVvdXNTcGVjdWxhdGl2ZVxufVxuXG4vKipcbiAqIEEgZHluYW1pYyBjb2xsaWRlciBjYW4gYWN0IHdpdGggc2VsZi1kZWZpbmVkIG1vdmVtZW50IG9yIHBoeXNpY2FsIGZvcmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWER5bmFtaWNDb2xsaWRlciBleHRlbmRzIFBoeXNYQ29sbGlkZXIgaW1wbGVtZW50cyBJRHluYW1pY0NvbGxpZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbXBUcmFuc2xhdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZW1wUm90YXRpb24gPSBuZXcgUXVhdGVybmlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLCBwb3NpdGlvbjogVmVjdG9yMywgcm90YXRpb246IFF1YXRlcm5pb24pIHtcbiAgICBzdXBlcihwaHlzWFBoeXNpY3MpO1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IHRoaXMuX3RyYW5zZm9ybShwb3NpdGlvbiwgcm90YXRpb24pO1xuICAgIHRoaXMuX3B4QWN0b3IgPSBwaHlzWFBoeXNpY3MuX3B4UGh5c2ljcy5jcmVhdGVSaWdpZER5bmFtaWModHJhbnNmb3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRMaW5lYXJEYW1waW5nIH1cbiAgICovXG4gIHNldExpbmVhckRhbXBpbmcodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0TGluZWFyRGFtcGluZyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0QW5ndWxhckRhbXBpbmcgfVxuICAgKi9cbiAgc2V0QW5ndWxhckRhbXBpbmcodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0QW5ndWxhckRhbXBpbmcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldExpbmVhclZlbG9jaXR5IH1cbiAgICovXG4gIHNldExpbmVhclZlbG9jaXR5KHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgdGhpcy5fcHhBY3Rvci5zZXRMaW5lYXJWZWxvY2l0eSh2YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0QW5ndWxhclZlbG9jaXR5IH1cbiAgICovXG4gIHNldEFuZ3VsYXJWZWxvY2l0eSh2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0QW5ndWxhclZlbG9jaXR5KHZhbHVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRNYXNzIH1cbiAgICovXG4gIHNldE1hc3ModmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0TWFzcyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0Q2VudGVyT2ZNYXNzIH1cbiAgICovXG4gIHNldENlbnRlck9mTWFzcyhwb3NpdGlvbjogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0Q01hc3NMb2NhbFBvc2UocG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldEluZXJ0aWFUZW5zb3IgfVxuICAgKi9cbiAgc2V0SW5lcnRpYVRlbnNvcih2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0TWFzc1NwYWNlSW5lcnRpYVRlbnNvcih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0TWF4QW5ndWxhclZlbG9jaXR5IH1cbiAgICovXG4gIHNldE1heEFuZ3VsYXJWZWxvY2l0eSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhBY3Rvci5zZXRNYXhBbmd1bGFyVmVsb2NpdHkodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldE1heERlcGVuZXRyYXRpb25WZWxvY2l0eSB9XG4gICAqL1xuICBzZXRNYXhEZXBlbmV0cmF0aW9uVmVsb2NpdHkodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0TWF4RGVwZW5ldHJhdGlvblZlbG9jaXR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRTbGVlcFRocmVzaG9sZCB9XG4gICAqIEBkZWZhdWx0IDFlLTVmICogUHhUb2xlcmFuY2VzU2NhbGU6OnNwZWVkICogUHhUb2xlcmFuY2VzU2NhbGU6OnNwZWVkXG4gICAqL1xuICBzZXRTbGVlcFRocmVzaG9sZCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhBY3Rvci5zZXRTbGVlcFRocmVzaG9sZCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0U29sdmVySXRlcmF0aW9ucyB9XG4gICAqL1xuICBzZXRTb2x2ZXJJdGVyYXRpb25zKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldFNvbHZlckl0ZXJhdGlvbkNvdW50cyh2YWx1ZSwgMSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0Q29sbGlzaW9uRGV0ZWN0aW9uTW9kZSB9XG4gICAqL1xuICBzZXRDb2xsaXNpb25EZXRlY3Rpb25Nb2RlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIENvbGxpc2lvbkRldGVjdGlvbk1vZGUuQ29udGludW91czpcbiAgICAgICAgdGhpcy5fcHhBY3Rvci5zZXRSaWdpZEJvZHlGbGFnKHRoaXMuX3BoeXNYUGh5c2ljcy5fcGh5c1guUHhSaWdpZEJvZHlGbGFnLmVFTkFCTEVfQ0NELCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbGxpc2lvbkRldGVjdGlvbk1vZGUuQ29udGludW91c0R5bmFtaWM6XG4gICAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0UmlnaWRCb2R5RmxhZyh0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4UmlnaWRCb2R5RmxhZy5lRU5BQkxFX0NDRF9GUklDVElPTiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaXNpb25EZXRlY3Rpb25Nb2RlLkNvbnRpbnVvdXNTcGVjdWxhdGl2ZTpcbiAgICAgICAgdGhpcy5fcHhBY3Rvci5zZXRSaWdpZEJvZHlGbGFnKHRoaXMuX3BoeXNYUGh5c2ljcy5fcGh5c1guUHhSaWdpZEJvZHlGbGFnLmVFTkFCTEVfU1BFQ1VMQVRJVkVfQ0NELCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbGxpc2lvbkRldGVjdGlvbk1vZGUuRGlzY3JldGU6XG4gICAgICAgIGNvbnN0IHBoeXNYID0gdGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWDtcbiAgICAgICAgdGhpcy5fcHhBY3Rvci5zZXRSaWdpZEJvZHlGbGFnKHBoeXNYLlB4UmlnaWRCb2R5RmxhZy5lRU5BQkxFX0NDRCwgZmFsc2UpO1xuICAgICAgICB0aGlzLl9weEFjdG9yLnNldFJpZ2lkQm9keUZsYWcocGh5c1guUHhSaWdpZEJvZHlGbGFnLmVFTkFCTEVfQ0NEX0ZSSUNUSU9OLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0UmlnaWRCb2R5RmxhZyhwaHlzWC5QeFJpZ2lkQm9keUZsYWcuZUVOQUJMRV9TUEVDVUxBVElWRV9DQ0QsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldElzS2luZW1hdGljIH1cbiAgICovXG4gIHNldElzS2luZW1hdGljKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9weEFjdG9yLnNldFJpZ2lkQm9keUZsYWcodGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeFJpZ2lkQm9keUZsYWcuZUtJTkVNQVRJQywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0UmlnaWRCb2R5RmxhZyh0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4UmlnaWRCb2R5RmxhZy5lS0lORU1BVElDLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldENvbnN0cmFpbnRzIH1cbiAgICovXG4gIHNldENvbnN0cmFpbnRzKGZsYWdzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldFJpZ2lkRHluYW1pY0xvY2tGbGFncyhmbGFncyk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuYWRkRm9yY2UgfVxuICAgKi9cbiAgYWRkRm9yY2UoZm9yY2U6IFZlY3RvcjMpIHtcbiAgICB0aGlzLl9weEFjdG9yLmFkZEZvcmNlKHsgeDogZm9yY2UueCwgeTogZm9yY2UueSwgejogZm9yY2UueiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5hZGRUb3JxdWUgfVxuICAgKi9cbiAgYWRkVG9ycXVlKHRvcnF1ZTogVmVjdG9yMykge1xuICAgIHRoaXMuX3B4QWN0b3IuYWRkVG9ycXVlKHsgeDogdG9ycXVlLngsIHk6IHRvcnF1ZS55LCB6OiB0b3JxdWUueiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5tb3ZlIH1cbiAgICovXG4gIG1vdmUocG9zaXRpb25PclJvdGF0aW9uOiBWZWN0b3IzIHwgUXVhdGVybmlvbiwgcm90YXRpb24/OiBRdWF0ZXJuaW9uKTogdm9pZCB7XG4gICAgaWYgKHJvdGF0aW9uKSB7XG4gICAgICB0aGlzLl9weEFjdG9yLnNldEtpbmVtYXRpY1RhcmdldChwb3NpdGlvbk9yUm90YXRpb24sIHJvdGF0aW9uKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wVHJhbnNsYXRpb24gPSBQaHlzWER5bmFtaWNDb2xsaWRlci5fdGVtcFRyYW5zbGF0aW9uO1xuICAgIGNvbnN0IHRlbXBSb3RhdGlvbiA9IFBoeXNYRHluYW1pY0NvbGxpZGVyLl90ZW1wUm90YXRpb247XG4gICAgdGhpcy5nZXRXb3JsZFRyYW5zZm9ybSh0ZW1wVHJhbnNsYXRpb24sIHRlbXBSb3RhdGlvbik7XG4gICAgaWYgKHBvc2l0aW9uT3JSb3RhdGlvbiBpbnN0YW5jZW9mIFZlY3RvcjMpIHtcbiAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0S2luZW1hdGljVGFyZ2V0KHBvc2l0aW9uT3JSb3RhdGlvbiwgdGVtcFJvdGF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcHhBY3Rvci5zZXRLaW5lbWF0aWNUYXJnZXQodGVtcFRyYW5zbGF0aW9uLCBwb3NpdGlvbk9yUm90YXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zbGVlcCB9XG4gICAqL1xuICBzbGVlcCgpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fcHhBY3Rvci5wdXRUb1NsZWVwKCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIud2FrZVVwIH1cbiAgICovXG4gIHdha2VVcCgpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fcHhBY3Rvci53YWtlVXAoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSVBoeXNpY3NNYW5hZ2VyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBSYXksIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgRGlzb3JkZXJlZEFycmF5IH0gZnJvbSBcIi4vRGlzb3JkZXJlZEFycmF5XCI7XG5pbXBvcnQgeyBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIgfSBmcm9tIFwiLi9QaHlzWENoYXJhY3RlckNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQ29sbGlkZXJTaGFwZVwiO1xuXG4vKipcbiAqIEEgbWFuYWdlciBpcyBhIGNvbGxlY3Rpb24gb2YgY29sbGlkZXJzIGFuZCBjb25zdHJhaW50cyB3aGljaCBjYW4gaW50ZXJhY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWFBoeXNpY3NNYW5hZ2VyIGltcGxlbWVudHMgSVBoeXNpY3NNYW5hZ2VyIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHhDb250cm9sbGVyTWFuYWdlcjogYW55ID0gbnVsbDtcblxuICBwcml2YXRlIHN0YXRpYyBfdGVtcFBvc2l0aW9uOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbXBOb3JtYWw6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xuXG4gIHByaXZhdGUgX3BoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzO1xuICBwcml2YXRlIF9weFJheWNhc3RIaXQ6IGFueTtcbiAgcHJpdmF0ZSBfcHhGaWx0ZXJEYXRhOiBhbnk7XG5cbiAgcHJpdmF0ZSBfcHhTY2VuZTogYW55O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ29udGFjdEVudGVyPzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNvbnRhY3RFeGl0PzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNvbnRhY3RTdGF5PzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vblRyaWdnZXJFbnRlcj86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25UcmlnZ2VyRXhpdD86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25UcmlnZ2VyU3RheT86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZDtcblxuICBwcml2YXRlIF9jdXJyZW50RXZlbnRzOiBEaXNvcmRlcmVkQXJyYXk8VHJpZ2dlckV2ZW50PiA9IG5ldyBEaXNvcmRlcmVkQXJyYXk8VHJpZ2dlckV2ZW50PigpO1xuICBwcml2YXRlIF9ldmVudE1hcDogUmVjb3JkPG51bWJlciwgUmVjb3JkPG51bWJlciwgVHJpZ2dlckV2ZW50Pj4gPSB7fTtcbiAgcHJpdmF0ZSBfZXZlbnRQb29sOiBUcmlnZ2VyRXZlbnRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLFxuICAgIG9uQ29udGFjdEVudGVyPzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkLFxuICAgIG9uQ29udGFjdEV4aXQ/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25Db250YWN0U3RheT86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvblRyaWdnZXJFbnRlcj86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvblRyaWdnZXJFeGl0PzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkLFxuICAgIG9uVHJpZ2dlclN0YXk/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWRcbiAgKSB7XG4gICAgdGhpcy5fcGh5c1hQaHlzaWNzID0gcGh5c1hQaHlzaWNzO1xuXG4gICAgY29uc3QgcGh5c1ggPSBwaHlzWFBoeXNpY3MuX3BoeXNYO1xuXG4gICAgdGhpcy5fcHhSYXljYXN0SGl0ID0gbmV3IHBoeXNYLlB4UmF5Y2FzdEhpdCgpO1xuICAgIHRoaXMuX3B4RmlsdGVyRGF0YSA9IG5ldyBwaHlzWC5QeFF1ZXJ5RmlsdGVyRGF0YSgpO1xuICAgIHRoaXMuX3B4RmlsdGVyRGF0YS5mbGFncyA9IG5ldyBwaHlzWC5QeFF1ZXJ5RmxhZ3MoUXVlcnlGbGFnLlNUQVRJQyB8IFF1ZXJ5RmxhZy5EWU5BTUlDIHwgUXVlcnlGbGFnLlBSRV9GSUxURVIpO1xuXG4gICAgdGhpcy5fb25Db250YWN0RW50ZXIgPSBvbkNvbnRhY3RFbnRlcjtcbiAgICB0aGlzLl9vbkNvbnRhY3RFeGl0ID0gb25Db250YWN0RXhpdDtcbiAgICB0aGlzLl9vbkNvbnRhY3RTdGF5ID0gb25Db250YWN0U3RheTtcbiAgICB0aGlzLl9vblRyaWdnZXJFbnRlciA9IG9uVHJpZ2dlckVudGVyO1xuICAgIHRoaXMuX29uVHJpZ2dlckV4aXQgPSBvblRyaWdnZXJFeGl0O1xuICAgIHRoaXMuX29uVHJpZ2dlclN0YXkgPSBvblRyaWdnZXJTdGF5O1xuXG4gICAgY29uc3QgdHJpZ2dlckNhbGxiYWNrID0ge1xuICAgICAgb25Db250YWN0QmVnaW46IChpbmRleDEsIGluZGV4MikgPT4ge1xuICAgICAgICB0aGlzLl9vbkNvbnRhY3RFbnRlcihpbmRleDEsIGluZGV4Mik7XG4gICAgICB9LFxuICAgICAgb25Db250YWN0RW5kOiAoaW5kZXgxLCBpbmRleDIpID0+IHtcbiAgICAgICAgdGhpcy5fb25Db250YWN0RXhpdChpbmRleDEsIGluZGV4Mik7XG4gICAgICB9LFxuICAgICAgb25Db250YWN0UGVyc2lzdDogKGluZGV4MSwgaW5kZXgyKSA9PiB7XG4gICAgICAgIHRoaXMuX29uQ29udGFjdFN0YXkoaW5kZXgxLCBpbmRleDIpO1xuICAgICAgfSxcbiAgICAgIG9uVHJpZ2dlckJlZ2luOiAoaW5kZXgxLCBpbmRleDIpID0+IHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBpbmRleDEgPCBpbmRleDIgPyB0aGlzLl9nZXRUcmlnZ2VyKGluZGV4MSwgaW5kZXgyKSA6IHRoaXMuX2dldFRyaWdnZXIoaW5kZXgyLCBpbmRleDEpO1xuICAgICAgICBldmVudC5zdGF0ZSA9IFRyaWdnZXJFdmVudFN0YXRlLkVudGVyO1xuICAgICAgICB0aGlzLl9jdXJyZW50RXZlbnRzLmFkZChldmVudCk7XG4gICAgICB9LFxuICAgICAgb25UcmlnZ2VyRW5kOiAoaW5kZXgxLCBpbmRleDIpID0+IHtcbiAgICAgICAgbGV0IGV2ZW50OiBUcmlnZ2VyRXZlbnQ7XG4gICAgICAgIGlmIChpbmRleDEgPCBpbmRleDIpIHtcbiAgICAgICAgICBjb25zdCBzdWJNYXAgPSB0aGlzLl9ldmVudE1hcFtpbmRleDFdO1xuICAgICAgICAgIGV2ZW50ID0gc3ViTWFwW2luZGV4Ml07XG4gICAgICAgICAgc3ViTWFwW2luZGV4Ml0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc3ViTWFwID0gdGhpcy5fZXZlbnRNYXBbaW5kZXgyXTtcbiAgICAgICAgICBldmVudCA9IHN1Yk1hcFtpbmRleDFdO1xuICAgICAgICAgIHN1Yk1hcFtpbmRleDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0YXRlID0gVHJpZ2dlckV2ZW50U3RhdGUuRXhpdDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcHhQaHlzaWNzID0gcGh5c1hQaHlzaWNzLl9weFBoeXNpY3M7XG4gICAgY29uc3QgcGh5c1hTaW11bGF0aW9uQ2FsbGJhY2tJbnN0YW5jZSA9IHBoeXNYLlB4U2ltdWxhdGlvbkV2ZW50Q2FsbGJhY2suaW1wbGVtZW50KHRyaWdnZXJDYWxsYmFjayk7XG4gICAgY29uc3Qgc2NlbmVEZXNjID0gcGh5c1guZ2V0RGVmYXVsdFNjZW5lRGVzYyhweFBoeXNpY3MuZ2V0VG9sZXJhbmNlc1NjYWxlKCksIDAsIHBoeXNYU2ltdWxhdGlvbkNhbGxiYWNrSW5zdGFuY2UpO1xuICAgIHRoaXMuX3B4U2NlbmUgPSBweFBoeXNpY3MuY3JlYXRlU2NlbmUoc2NlbmVEZXNjKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYW5hZ2VyLnNldEdyYXZpdHkgfVxuICAgKi9cbiAgc2V0R3Jhdml0eSh2YWx1ZTogVmVjdG9yMykge1xuICAgIHRoaXMuX3B4U2NlbmUuc2V0R3Jhdml0eSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5hZGRDb2xsaWRlclNoYXBlIH1cbiAgICovXG4gIGFkZENvbGxpZGVyU2hhcGUoY29sbGlkZXJTaGFwZTogUGh5c1hDb2xsaWRlclNoYXBlKSB7XG4gICAgdGhpcy5fZXZlbnRNYXBbY29sbGlkZXJTaGFwZS5faWRdID0ge307XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5yZW1vdmVDb2xsaWRlclNoYXBlIH1cbiAgICovXG4gIHJlbW92ZUNvbGxpZGVyU2hhcGUoY29sbGlkZXJTaGFwZTogUGh5c1hDb2xsaWRlclNoYXBlKSB7XG4gICAgY29uc3QgeyBfZXZlbnRQb29sOiBldmVudFBvb2wsIF9jdXJyZW50RXZlbnRzOiBjdXJyZW50RXZlbnRzIH0gPSB0aGlzO1xuICAgIGNvbnN0IHsgX2lkOiBzaGFwZUlEIH0gPSBjb2xsaWRlclNoYXBlO1xuICAgIGZvciAobGV0IGkgPSBjdXJyZW50RXZlbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBldmVudCA9IGN1cnJlbnRFdmVudHMuZ2V0KGkpO1xuICAgICAgaWYgKGV2ZW50LmluZGV4MSA9PSBzaGFwZUlEIHx8IGV2ZW50LmluZGV4MiA9PSBzaGFwZUlEKSB7XG4gICAgICAgIGN1cnJlbnRFdmVudHMuZGVsZXRlQnlJbmRleChpKTtcbiAgICAgICAgZXZlbnRQb29sLnB1c2goZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBkZWxldGUgdGhpcy5fZXZlbnRNYXBbc2hhcGVJRF07XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5hZGRDb2xsaWRlciB9XG4gICAqL1xuICBhZGRDb2xsaWRlcihjb2xsaWRlcjogUGh5c1hDb2xsaWRlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4U2NlbmUuYWRkQWN0b3IoY29sbGlkZXIuX3B4QWN0b3IsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hbmFnZXIucmVtb3ZlQ29sbGlkZXIgfVxuICAgKi9cbiAgcmVtb3ZlQ29sbGlkZXIoY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weFNjZW5lLnJlbW92ZUFjdG9yKGNvbGxpZGVyLl9weEFjdG9yLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYW5hZ2VyLmFkZENoYXJhY3RlckNvbnRyb2xsZXIgfVxuICAgKi9cbiAgYWRkQ2hhcmFjdGVyQ29udHJvbGxlcihjaGFyYWN0ZXJDb250cm9sbGVyOiBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICAvLyBQaHlzeCBoYXZlIG5vIEFQSSB0byByZW1vdmUvcmVhZGQgY2N0IGludG8gc2NlbmUuXG4gICAgaWYgKCFjaGFyYWN0ZXJDb250cm9sbGVyLl9weENvbnRyb2xsZXIpIHtcbiAgICAgIGNvbnN0IHNoYXBlID0gY2hhcmFjdGVyQ29udHJvbGxlci5fc2hhcGU7XG4gICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgY29uc3QgbGFzdFBYTWFuYWdlciA9IGNoYXJhY3RlckNvbnRyb2xsZXIuX3B4TWFuYWdlcjtcbiAgICAgICAgaWYgKGxhc3RQWE1hbmFnZXIgIT09IHRoaXMpIHtcbiAgICAgICAgICBsYXN0UFhNYW5hZ2VyICYmIGNoYXJhY3RlckNvbnRyb2xsZXIuX2Rlc3Ryb3lQWENvbnRyb2xsZXIoKTtcbiAgICAgICAgICBjaGFyYWN0ZXJDb250cm9sbGVyLl9jcmVhdGVQWENvbnRyb2xsZXIodGhpcywgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNoYXJhY3RlckNvbnRyb2xsZXIuX3B4TWFuYWdlciA9IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5yZW1vdmVDaGFyYWN0ZXJDb250cm9sbGVyIH1cbiAgICovXG4gIHJlbW92ZUNoYXJhY3RlckNvbnRyb2xsZXIoY2hhcmFjdGVyQ29udHJvbGxlcjogUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyKTogdm9pZCB7XG4gICAgY2hhcmFjdGVyQ29udHJvbGxlci5fcHhNYW5hZ2VyID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYW5hZ2VyLnVwZGF0ZSB9XG4gICAqL1xuICB1cGRhdGUoZWxhcHNlZFRpbWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpbXVsYXRlKGVsYXBzZWRUaW1lKTtcbiAgICB0aGlzLl9mZXRjaFJlc3VsdHMoKTtcbiAgICB0aGlzLl9maXJlRXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYW5hZ2VyLnJheWNhc3QgfVxuICAgKi9cbiAgcmF5Y2FzdChcbiAgICByYXk6IFJheSxcbiAgICBkaXN0YW5jZTogbnVtYmVyLFxuICAgIG9uUmF5Y2FzdDogKG9iajogbnVtYmVyKSA9PiBib29sZWFuLFxuICAgIGhpdD86IChzaGFwZVVuaXF1ZUlEOiBudW1iZXIsIGRpc3RhbmNlOiBudW1iZXIsIHBvc2l0aW9uOiBWZWN0b3IzLCBub3JtYWw6IFZlY3RvcjMpID0+IHZvaWRcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBfcHhSYXljYXN0SGl0OiBweEhpdFJlc3VsdCB9ID0gdGhpcztcbiAgICBkaXN0YW5jZSA9IE1hdGgubWluKGRpc3RhbmNlLCAzLjRlMzgpOyAvLyBmbG9hdDMyIG1heCB2YWx1ZSBsaW1pdCBpbiBwaHlzeCByYXljYXN0LlxuXG4gICAgY29uc3QgcmF5Y2FzdENhbGxiYWNrID0ge1xuICAgICAgcHJlRmlsdGVyOiAoZmlsdGVyRGF0YSwgaW5kZXgsIGFjdG9yKSA9PiB7XG4gICAgICAgIGlmIChvblJheWNhc3QoaW5kZXgpKSB7XG4gICAgICAgICAgcmV0dXJuIDI7IC8vIGVCTE9DS1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAwOyAvLyBlTk9ORVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcG9zdEZpbHRlcjogKGZpbHRlckRhdGEsIGhpdCkgPT4ge31cbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcHhTY2VuZS5yYXljYXN0U2luZ2xlKFxuICAgICAgcmF5Lm9yaWdpbixcbiAgICAgIHJheS5kaXJlY3Rpb24sXG4gICAgICBkaXN0YW5jZSxcbiAgICAgIHB4SGl0UmVzdWx0LFxuICAgICAgdGhpcy5fcHhGaWx0ZXJEYXRhLFxuICAgICAgdGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeFF1ZXJ5RmlsdGVyQ2FsbGJhY2suaW1wbGVtZW50KHJheWNhc3RDYWxsYmFjaylcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCAmJiBoaXQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IF90ZW1wUG9zaXRpb246IHBvc2l0aW9uLCBfdGVtcE5vcm1hbDogbm9ybWFsIH0gPSBQaHlzWFBoeXNpY3NNYW5hZ2VyO1xuICAgICAgY29uc3QgeyBwb3NpdGlvbjogcHhQb3NpdGlvbiwgbm9ybWFsOiBweE5vcm1hbCB9ID0gcHhIaXRSZXN1bHQ7XG4gICAgICBwb3NpdGlvbi5zZXQocHhQb3NpdGlvbi54LCBweFBvc2l0aW9uLnksIHB4UG9zaXRpb24ueik7XG4gICAgICBub3JtYWwuc2V0KHB4Tm9ybWFsLngsIHB4Tm9ybWFsLnksIHB4Tm9ybWFsLnopO1xuXG4gICAgICBoaXQocHhIaXRSZXN1bHQuZ2V0U2hhcGUoKS5nZXRVVUlEKCksIHB4SGl0UmVzdWx0LmRpc3RhbmNlLCBwb3NpdGlvbiwgbm9ybWFsKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9nZXRDb250cm9sbGVyTWFuYWdlcigpOiBhbnkge1xuICAgIGxldCBweENvbnRyb2xsZXJNYW5hZ2VyID0gdGhpcy5fcHhDb250cm9sbGVyTWFuYWdlcjtcbiAgICBpZiAocHhDb250cm9sbGVyTWFuYWdlciA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fcHhDb250cm9sbGVyTWFuYWdlciA9IHB4Q29udHJvbGxlck1hbmFnZXIgPSB0aGlzLl9weFNjZW5lLmNyZWF0ZUNvbnRyb2xsZXJNYW5hZ2VyKCk7XG4gICAgfVxuICAgIHJldHVybiBweENvbnRyb2xsZXJNYW5hZ2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2ltdWxhdGUoZWxhcHNlZFRpbWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4U2NlbmUuc2ltdWxhdGUoZWxhcHNlZFRpbWUsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmV0Y2hSZXN1bHRzKGJsb2NrOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuX3B4U2NlbmUuZmV0Y2hSZXN1bHRzKGJsb2NrKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRyaWdnZXIoaW5kZXgxOiBudW1iZXIsIGluZGV4MjogbnVtYmVyKTogVHJpZ2dlckV2ZW50IHtcbiAgICBsZXQgZXZlbnQ6IFRyaWdnZXJFdmVudDtcbiAgICBpZiAodGhpcy5fZXZlbnRQb29sLmxlbmd0aCkge1xuICAgICAgZXZlbnQgPSB0aGlzLl9ldmVudFBvb2wucG9wKCk7XG4gICAgICBldmVudC5pbmRleDEgPSBpbmRleDE7XG4gICAgICBldmVudC5pbmRleDIgPSBpbmRleDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50ID0gbmV3IFRyaWdnZXJFdmVudChpbmRleDEsIGluZGV4Mik7XG4gICAgfVxuICAgIHRoaXMuX2V2ZW50TWFwW2luZGV4MV1baW5kZXgyXSA9IGV2ZW50O1xuICAgIHJldHVybiBldmVudDtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcmVFdmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IF9ldmVudFBvb2w6IGV2ZW50UG9vbCwgX2N1cnJlbnRFdmVudHM6IGN1cnJlbnRFdmVudHMgfSA9IHRoaXM7XG4gICAgZm9yIChsZXQgaSA9IGN1cnJlbnRFdmVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gY3VycmVudEV2ZW50cy5nZXQoaSk7XG4gICAgICBpZiAoZXZlbnQuc3RhdGUgPT0gVHJpZ2dlckV2ZW50U3RhdGUuRW50ZXIpIHtcbiAgICAgICAgdGhpcy5fb25UcmlnZ2VyRW50ZXIoZXZlbnQuaW5kZXgxLCBldmVudC5pbmRleDIpO1xuICAgICAgICBldmVudC5zdGF0ZSA9IFRyaWdnZXJFdmVudFN0YXRlLlN0YXk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnN0YXRlID09IFRyaWdnZXJFdmVudFN0YXRlLlN0YXkpIHtcbiAgICAgICAgdGhpcy5fb25UcmlnZ2VyU3RheShldmVudC5pbmRleDEsIGV2ZW50LmluZGV4Mik7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnN0YXRlID09IFRyaWdnZXJFdmVudFN0YXRlLkV4aXQpIHtcbiAgICAgICAgdGhpcy5fb25UcmlnZ2VyRXhpdChldmVudC5pbmRleDEsIGV2ZW50LmluZGV4Mik7XG4gICAgICAgIGN1cnJlbnRFdmVudHMuZGVsZXRlQnlJbmRleChpKTtcbiAgICAgICAgZXZlbnRQb29sLnB1c2goZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcmluZyBmbGFncyBmb3Igc2NlbmUgcXVlcmllcy5cbiAqL1xuZW51bSBRdWVyeUZsYWcge1xuICBTVEFUSUMgPSAxIDw8IDAsXG4gIERZTkFNSUMgPSAxIDw8IDEsXG4gIFBSRV9GSUxURVIgPSAxIDw8IDIsXG4gIFBPU1RfRklMVEVSID0gMSA8PCAzLFxuICBBTllfSElUID0gMSA8PCA0LFxuICBOT19CTE9DSyA9IDEgPDwgNVxufVxuXG4vKipcbiAqIFBoeXNpY3Mgc3RhdGVcbiAqL1xuZW51bSBUcmlnZ2VyRXZlbnRTdGF0ZSB7XG4gIEVudGVyLFxuICBTdGF5LFxuICBFeGl0XG59XG5cbi8qKlxuICogVHJpZ2dlciBldmVudCB0byBzdG9yZSBpbnRlcmFjdGl2ZSBvYmplY3QgaWRzIGFuZCBzdGF0ZS5cbiAqL1xuY2xhc3MgVHJpZ2dlckV2ZW50IHtcbiAgc3RhdGU6IFRyaWdnZXJFdmVudFN0YXRlO1xuICBpbmRleDE6IG51bWJlcjtcbiAgaW5kZXgyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaW5kZXgxOiBudW1iZXIsIGluZGV4MjogbnVtYmVyKSB7XG4gICAgdGhpcy5pbmRleDEgPSBpbmRleDE7XG4gICAgdGhpcy5pbmRleDIgPSBpbmRleDI7XG4gIH1cbn1cbiIsImltcG9ydCB7IElQaHlzaWNzTWF0ZXJpYWwgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljcyB9IGZyb20gXCIuL1BoeXNYUGh5c2ljc1wiO1xuXG4vKipcbiAqIFBoeXNpY3MgbWF0ZXJpYWwgZGVzY3JpYmVzIGhvdyB0byBoYW5kbGUgY29sbGlkaW5nIG9iamVjdHMgKGZyaWN0aW9uLCBib3VuY2luZXNzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYUGh5c2ljc01hdGVyaWFsIGltcGxlbWVudHMgSVBoeXNpY3NNYXRlcmlhbCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B4TWF0ZXJpYWw6IGFueTtcblxuICBwcm90ZWN0ZWQgX3BoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLFxuICAgIHN0YXRpY0ZyaWN0aW9uOiBudW1iZXIsXG4gICAgZHluYW1pY0ZyaWN0aW9uOiBudW1iZXIsXG4gICAgYm91bmNpbmVzczogbnVtYmVyLFxuICAgIGZyaWN0aW9uQ29tYmluZTogQ29tYmluZU1vZGUsXG4gICAgYm91bmNlQ29tYmluZTogQ29tYmluZU1vZGVcbiAgKSB7XG4gICAgdGhpcy5fcGh5c1hQaHlzaWNzID0gcGh5c1hQaHlzaWNzO1xuICAgIGNvbnN0IHB4TWF0ZXJpYWwgPSBwaHlzWFBoeXNpY3MuX3B4UGh5c2ljcy5jcmVhdGVNYXRlcmlhbChzdGF0aWNGcmljdGlvbiwgZHluYW1pY0ZyaWN0aW9uLCBib3VuY2luZXNzKTtcbiAgICBweE1hdGVyaWFsLnNldEZyaWN0aW9uQ29tYmluZU1vZGUoZnJpY3Rpb25Db21iaW5lKTtcbiAgICBweE1hdGVyaWFsLnNldFJlc3RpdHV0aW9uQ29tYmluZU1vZGUoYm91bmNlQ29tYmluZSk7XG4gICAgdGhpcy5fcHhNYXRlcmlhbCA9IHB4TWF0ZXJpYWw7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWF0ZXJpYWwuc2V0Qm91bmNpbmVzcyB9XG4gICAqL1xuICBzZXRCb3VuY2luZXNzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9weE1hdGVyaWFsLnNldFJlc3RpdHV0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYXRlcmlhbC5zZXREeW5hbWljRnJpY3Rpb24gfVxuICAgKi9cbiAgc2V0RHluYW1pY0ZyaWN0aW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9weE1hdGVyaWFsLnNldER5bmFtaWNGcmljdGlvbih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWF0ZXJpYWwuc2V0U3RhdGljRnJpY3Rpb24gfVxuICAgKi9cbiAgc2V0U3RhdGljRnJpY3Rpb24odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3B4TWF0ZXJpYWwuc2V0U3RhdGljRnJpY3Rpb24odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hdGVyaWFsLnNldEJvdW5jZUNvbWJpbmUgfVxuICAgKi9cbiAgc2V0Qm91bmNlQ29tYmluZSh2YWx1ZTogQ29tYmluZU1vZGUpIHtcbiAgICB0aGlzLl9weE1hdGVyaWFsLnNldFJlc3RpdHV0aW9uQ29tYmluZU1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hdGVyaWFsLnNldEZyaWN0aW9uQ29tYmluZSB9XG4gICAqL1xuICBzZXRGcmljdGlvbkNvbWJpbmUodmFsdWU6IENvbWJpbmVNb2RlKSB7XG4gICAgdGhpcy5fcHhNYXRlcmlhbC5zZXRGcmljdGlvbkNvbWJpbmVNb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYXRlcmlhbC5kZXN0cm95IH1cbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcHhNYXRlcmlhbC5yZWxlYXNlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgaG93IHBoeXNpY3MgbWF0ZXJpYWxzIG9mIHRoZSBjb2xsaWRpbmcgb2JqZWN0cyBhcmUgY29tYmluZWQuXG4gKi9cbmVudW0gQ29tYmluZU1vZGUge1xuICAvKiogQXZlcmFnZXMgdGhlIGZyaWN0aW9uL2JvdW5jZSBvZiB0aGUgdHdvIGNvbGxpZGluZyBtYXRlcmlhbHMuICovXG4gIEF2ZXJhZ2UsXG4gIC8qKiBVc2VzIHRoZSBzbWFsbGVyIGZyaWN0aW9uL2JvdW5jZSBvZiB0aGUgdHdvIGNvbGxpZGluZyBtYXRlcmlhbHMuICovXG4gIE1pbmltdW0sXG4gIC8qKiBNdWx0aXBsaWVzIHRoZSBmcmljdGlvbi9ib3VuY2Ugb2YgdGhlIHR3byBjb2xsaWRpbmcgbWF0ZXJpYWxzLiAqL1xuICBNdWx0aXBseSxcbiAgLyoqIFVzZXMgdGhlIGxhcmdlciBmcmljdGlvbi9ib3VuY2Ugb2YgdGhlIHR3byBjb2xsaWRpbmcgbWF0ZXJpYWxzLiAqL1xuICBNYXhpbXVtXG59XG4iLCJpbXBvcnQgeyBJU3RhdGljQ29sbGlkZXIgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlciB9IGZyb20gXCIuL1BoeXNYQ29sbGlkZXJcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljcyB9IGZyb20gXCIuL1BoeXNYUGh5c2ljc1wiO1xuXG4vKipcbiAqIEEgc3RhdGljIGNvbGxpZGVyIGNvbXBvbmVudCB0aGF0IHdpbGwgbm90IG1vdmUuXG4gKiBAcmVtYXJrcyBNb3N0bHkgdXNlZCBmb3Igb2JqZWN0IHdoaWNoIGFsd2F5cyBzdGF5cyBhdCB0aGUgc2FtZSBwbGFjZSBhbmQgbmV2ZXIgbW92ZXMgYXJvdW5kLlxuICovXG5leHBvcnQgY2xhc3MgUGh5c1hTdGF0aWNDb2xsaWRlciBleHRlbmRzIFBoeXNYQ29sbGlkZXIgaW1wbGVtZW50cyBJU3RhdGljQ29sbGlkZXIge1xuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgcG9zaXRpb246IFZlY3RvcjMsIHJvdGF0aW9uOiBRdWF0ZXJuaW9uKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcbiAgICB0aGlzLl9weEFjdG9yID0gcGh5c1hQaHlzaWNzLl9weFBoeXNpY3MuY3JlYXRlUmlnaWRTdGF0aWModGhpcy5fdHJhbnNmb3JtKHBvc2l0aW9uLCByb3RhdGlvbikpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJUGxhbmVDb2xsaWRlclNoYXBlIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljcyB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljc01hdGVyaWFsIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc01hdGVyaWFsXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9QaHlzWENvbGxpZGVyU2hhcGVcIjtcblxuLyoqXG4gKiBQbGFuZSBjb2xsaWRlciBzaGFwZSBpbiBQaHlzWC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYUGxhbmVDb2xsaWRlclNoYXBlIGV4dGVuZHMgUGh5c1hDb2xsaWRlclNoYXBlIGltcGxlbWVudHMgSVBsYW5lQ29sbGlkZXJTaGFwZSB7XG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLCB1bmlxdWVJRDogbnVtYmVyLCBtYXRlcmlhbDogUGh5c1hQaHlzaWNzTWF0ZXJpYWwpIHtcbiAgICBzdXBlcihwaHlzWFBoeXNpY3MpO1xuICAgIHRoaXMuX2F4aXMgPSBuZXcgUXVhdGVybmlvbigwLCAwLCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQsIFBoeXNYQ29sbGlkZXJTaGFwZS5oYWxmU3FydCk7XG4gICAgdGhpcy5fcGh5c1hSb3RhdGlvbi5jb3B5RnJvbSh0aGlzLl9heGlzKTtcblxuICAgIHRoaXMuX3B4R2VvbWV0cnkgPSBuZXcgcGh5c1hQaHlzaWNzLl9waHlzWC5QeFBsYW5lR2VvbWV0cnkoKTtcbiAgICB0aGlzLl9pbml0aWFsaXplKG1hdGVyaWFsLCB1bmlxdWVJRCk7XG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgSVNwaGVyZUNvbGxpZGVyU2hhcGUgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljcyB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljc01hdGVyaWFsIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc01hdGVyaWFsXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9QaHlzWENvbGxpZGVyU2hhcGVcIjtcblxuLyoqXG4gKiBTcGhlcmUgY29sbGlkZXIgc2hhcGUgaW4gUGh5c1guXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWFNwaGVyZUNvbGxpZGVyU2hhcGUgZXh0ZW5kcyBQaHlzWENvbGxpZGVyU2hhcGUgaW1wbGVtZW50cyBJU3BoZXJlQ29sbGlkZXJTaGFwZSB7XG4gIHByaXZhdGUgX3JhZGl1czogbnVtYmVyO1xuICBwcml2YXRlIF9tYXhTY2FsZTogbnVtYmVyID0gMTtcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgdW5pcXVlSUQ6IG51bWJlciwgcmFkaXVzOiBudW1iZXIsIG1hdGVyaWFsOiBQaHlzWFBoeXNpY3NNYXRlcmlhbCkge1xuICAgIHN1cGVyKHBoeXNYUGh5c2ljcyk7XG5cbiAgICB0aGlzLl9yYWRpdXMgPSByYWRpdXM7XG5cbiAgICB0aGlzLl9weEdlb21ldHJ5ID0gbmV3IHBoeXNYUGh5c2ljcy5fcGh5c1guUHhTcGhlcmVHZW9tZXRyeSh0aGlzLl9yYWRpdXMgKiB0aGlzLl9tYXhTY2FsZSk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZShtYXRlcmlhbCwgdW5pcXVlSUQpO1xuICAgIHRoaXMuX3NldExvY2FsUG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJU3BoZXJlQ29sbGlkZXJTaGFwZS5zZXRSYWRpdXMgfVxuICAgKi9cbiAgc2V0UmFkaXVzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9yYWRpdXMgPSB2YWx1ZTtcbiAgICB0aGlzLl9weEdlb21ldHJ5LnJhZGl1cyA9IHZhbHVlICogdGhpcy5fbWF4U2NhbGU7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRHZW9tZXRyeSh0aGlzLl9weEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuc2V0V29ybGRTY2FsZSB9XG4gICAqL1xuICBvdmVycmlkZSBzZXRXb3JsZFNjYWxlKHNjYWxlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0V29ybGRTY2FsZShzY2FsZSk7XG5cbiAgICB0aGlzLl9tYXhTY2FsZSA9IE1hdGgubWF4KHNjYWxlLngsIHNjYWxlLnkpO1xuICAgIHRoaXMuX3B4R2VvbWV0cnkucmFkaXVzID0gdGhpcy5fcmFkaXVzICogdGhpcy5fbWF4U2NhbGU7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRHZW9tZXRyeSh0aGlzLl9weEdlb21ldHJ5KTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgSUJveENvbGxpZGVyU2hhcGUsXG4gIElDYXBzdWxlQ29sbGlkZXJTaGFwZSxcbiAgSUNoYXJhY3RlckNvbnRyb2xsZXIsXG4gIElEeW5hbWljQ29sbGlkZXIsXG4gIElGaXhlZEpvaW50LFxuICBJSGluZ2VKb2ludCxcbiAgSVBoeXNpY3MsXG4gIElQaHlzaWNzTWFuYWdlcixcbiAgSVBoeXNpY3NNYXRlcmlhbCxcbiAgSVBsYW5lQ29sbGlkZXJTaGFwZSxcbiAgSVNwaGVyZUNvbGxpZGVyU2hhcGUsXG4gIElTcHJpbmdKb2ludCxcbiAgSVN0YXRpY0NvbGxpZGVyXG59IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMywgdmVyc2lvbiB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBQaHlzWFJ1bnRpbWVNb2RlIH0gZnJvbSBcIi4vZW51bS9QaHlzWFJ1bnRpbWVNb2RlXCI7XG5pbXBvcnQgeyBQaHlzWEZpeGVkSm9pbnQgfSBmcm9tIFwiLi9qb2ludC9QaHlzWEZpeGVkSm9pbnRcIjtcbmltcG9ydCB7IFBoeXNYSGluZ2VKb2ludCB9IGZyb20gXCIuL2pvaW50L1BoeXNYSGluZ2VKb2ludFwiO1xuaW1wb3J0IHsgUGh5c1hTcHJpbmdKb2ludCB9IGZyb20gXCIuL2pvaW50L1BoeXNYU3ByaW5nSm9pbnRcIjtcbmltcG9ydCB7IFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlciB9IGZyb20gXCIuL1BoeXNYQ2hhcmFjdGVyQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlciB9IGZyb20gXCIuL1BoeXNYQ29sbGlkZXJcIjtcbmltcG9ydCB7IFBoeXNYRHluYW1pY0NvbGxpZGVyIH0gZnJvbSBcIi4vUGh5c1hEeW5hbWljQ29sbGlkZXJcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljc01hbmFnZXIgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NNYW5hZ2VyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYXRlcmlhbCB9IGZyb20gXCIuL1BoeXNYUGh5c2ljc01hdGVyaWFsXCI7XG5pbXBvcnQgeyBQaHlzWFN0YXRpY0NvbGxpZGVyIH0gZnJvbSBcIi4vUGh5c1hTdGF0aWNDb2xsaWRlclwiO1xuaW1wb3J0IHsgUGh5c1hCb3hDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vc2hhcGUvUGh5c1hCb3hDb2xsaWRlclNoYXBlXCI7XG5pbXBvcnQgeyBQaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vc2hhcGUvUGh5c1hDYXBzdWxlQ29sbGlkZXJTaGFwZVwiO1xuaW1wb3J0IHsgUGh5c1hQbGFuZUNvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9zaGFwZS9QaHlzWFBsYW5lQ29sbGlkZXJTaGFwZVwiO1xuaW1wb3J0IHsgUGh5c1hTcGhlcmVDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vc2hhcGUvUGh5c1hTcGhlcmVDb2xsaWRlclNoYXBlXCI7XG5cbi8qKlxuICogUGh5c1ggb2JqZWN0IGNyZWF0aW9uLlxuICovXG5cbmV4cG9ydCBjbGFzcyBQaHlzWFBoeXNpY3MgaW1wbGVtZW50cyBJUGh5c2ljcyB7XG4gIC8qKiBAaW50ZXJuYWwgUGh5c1ggd2FzbSBvYmplY3QgKi9cbiAgX3BoeXNYOiBhbnk7XG4gIC8qKiBAaW50ZXJuYWwgUGh5c1ggRm91bmRhdGlvbiBTREsgc2luZ2xldG9uIGNsYXNzICovXG4gIF9weEZvdW5kYXRpb246IGFueTtcbiAgLyoqIEBpbnRlcm5hbCBQaHlzWCBwaHlzaWNzIG9iamVjdCAqL1xuICBfcHhQaHlzaWNzOiBhbnk7XG5cbiAgcHJpdmF0ZSBfcnVuVGltZU1vZGU6IFBoeXNYUnVudGltZU1vZGU7XG4gIHByaXZhdGUgX2luaXRpYWxpemVTdGF0ZTogSW5pdGlhbGl6ZVN0YXRlID0gSW5pdGlhbGl6ZVN0YXRlLlVuaW5pdGlhbGl6ZWQ7XG4gIHByaXZhdGUgX2luaXRpYWxpemVQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHJ1bnRpbWVNb2RlOiBQaHlzWFJ1bnRpbWVNb2RlID0gUGh5c1hSdW50aW1lTW9kZS5BdXRvKSB7XG4gICAgdGhpcy5fcnVuVGltZU1vZGUgPSBydW50aW1lTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIFBoeXNYUGh5c2ljcy5cbiAgICogQHBhcmFtIHJ1bnRpbWVNb2RlIC0gUnVudGltZSBtb2RlXG4gICAqIEByZXR1cm5zIFByb21pc2Ugb2JqZWN0XG4gICAqL1xuICBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplU3RhdGUgPT09IEluaXRpYWxpemVTdGF0ZS5Jbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5pdGlhbGl6ZVN0YXRlID09PSBJbml0aWFsaXplU3RhdGUuSW5pdGlhbGl6aW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZVByb21pc2U7XG4gICAgfVxuXG4gICAgbGV0IHJ1bnRpbWVNb2RlID0gdGhpcy5fcnVuVGltZU1vZGU7XG4gICAgY29uc3Qgc2NyaXB0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgc2NyaXB0Lm9ubG9hZCA9IHJlc29sdmU7XG4gICAgICBzY3JpcHQub25lcnJvciA9IHJlamVjdDtcbiAgICAgIGlmIChydW50aW1lTW9kZSA9PSBQaHlzWFJ1bnRpbWVNb2RlLkF1dG8pIHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkID0gKCgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBXZWJBc3NlbWJseSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKFVpbnQ4QXJyYXkub2YoMHgwLCAweDYxLCAweDczLCAweDZkLCAweDAxLCAweDAwLCAweDAwLCAweDAwKSk7XG4gICAgICAgICAgICAgIGlmIChtb2R1bGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5Nb2R1bGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuSW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pKCk7XG4gICAgICAgIGlmIChzdXBwb3J0ZWQpIHtcbiAgICAgICAgICBydW50aW1lTW9kZSA9IFBoeXNYUnVudGltZU1vZGUuV2ViQXNzZW1ibHk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcnVudGltZU1vZGUgPSBQaHlzWFJ1bnRpbWVNb2RlLkphdmFTY3JpcHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJ1bnRpbWVNb2RlID09IFBoeXNYUnVudGltZU1vZGUuSmF2YVNjcmlwdCkge1xuICAgICAgICBzY3JpcHQuc3JjID0gYGh0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vb3MvbGliL29hc2lzLWVuZ2luZS9waHlzaWNzLXBoeXN4LyR7dmVyc2lvbn0vbGlicy9waHlzeC5yZWxlYXNlLmpzLmpzYDtcbiAgICAgIH0gZWxzZSBpZiAocnVudGltZU1vZGUgPT0gUGh5c1hSdW50aW1lTW9kZS5XZWJBc3NlbWJseSkge1xuICAgICAgICBzY3JpcHQuc3JjID0gYGh0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vb3MvbGliL2dhbGFjZWFuL2VuZ2luZS1waHlzaWNzLXBoeXN4LyR7dmVyc2lvbn0vbGlicy9waHlzeC5yZWxlYXNlLmpzYDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGluaXRpYWxpemVQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc2NyaXB0UHJvbWlzZVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgKDxhbnk+d2luZG93KS5QSFlTWCgpLnRoZW4oKFBIWVNYKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2luaXQoUEhZU1gpO1xuICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplU3RhdGUgPSBJbml0aWFsaXplU3RhdGUuSW5pdGlhbGl6ZWQ7XG4gICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQaHlzWCBsb2FkZWQuXCIpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCByZWplY3QpLFxuICAgICAgICAgIHJlamVjdFxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZVByb21pc2UgPSBpbml0aWFsaXplUHJvbWlzZTtcbiAgICByZXR1cm4gaW5pdGlhbGl6ZVByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveSBQaHlzWFBoeXNpY3MuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9waHlzWC5QeENsb3NlRXh0ZW5zaW9ucygpO1xuICAgIHRoaXMuX3B4UGh5c2ljcy5yZWxlYXNlKCk7XG4gICAgdGhpcy5fcHhGb3VuZGF0aW9uLnJlbGVhc2UoKTtcbiAgICB0aGlzLl9waHlzWCA9IG51bGw7XG4gICAgdGhpcy5fcHhGb3VuZGF0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9weFBoeXNpY3MgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVQaHlzaWNzTWFuYWdlciB9XG4gICAqL1xuICBjcmVhdGVQaHlzaWNzTWFuYWdlcihcbiAgICBvbkNvbnRhY3RCZWdpbj86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvbkNvbnRhY3RFbmQ/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25Db250YWN0U3RheT86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvblRyaWdnZXJCZWdpbj86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvblRyaWdnZXJFbmQ/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25UcmlnZ2VyU3RheT86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZFxuICApOiBJUGh5c2ljc01hbmFnZXIge1xuICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgUGh5c1hQaHlzaWNzTWFuYWdlcihcbiAgICAgIHRoaXMsXG4gICAgICBvbkNvbnRhY3RCZWdpbixcbiAgICAgIG9uQ29udGFjdEVuZCxcbiAgICAgIG9uQ29udGFjdFN0YXksXG4gICAgICBvblRyaWdnZXJCZWdpbixcbiAgICAgIG9uVHJpZ2dlckVuZCxcbiAgICAgIG9uVHJpZ2dlclN0YXlcbiAgICApO1xuICAgIHJldHVybiBtYW5hZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVTdGF0aWNDb2xsaWRlciB9XG4gICAqL1xuICBjcmVhdGVTdGF0aWNDb2xsaWRlcihwb3NpdGlvbjogVmVjdG9yMywgcm90YXRpb246IFF1YXRlcm5pb24pOiBJU3RhdGljQ29sbGlkZXIge1xuICAgIHJldHVybiBuZXcgUGh5c1hTdGF0aWNDb2xsaWRlcih0aGlzLCBwb3NpdGlvbiwgcm90YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVEeW5hbWljQ29sbGlkZXIgfVxuICAgKi9cbiAgY3JlYXRlRHluYW1pY0NvbGxpZGVyKHBvc2l0aW9uOiBWZWN0b3IzLCByb3RhdGlvbjogUXVhdGVybmlvbik6IElEeW5hbWljQ29sbGlkZXIge1xuICAgIHJldHVybiBuZXcgUGh5c1hEeW5hbWljQ29sbGlkZXIodGhpcywgcG9zaXRpb24sIHJvdGF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlQ2hhcmFjdGVyQ29udHJvbGxlciB9XG4gICAqL1xuICBjcmVhdGVDaGFyYWN0ZXJDb250cm9sbGVyKCk6IElDaGFyYWN0ZXJDb250cm9sbGVyIHtcbiAgICByZXR1cm4gbmV3IFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlUGh5c2ljc01hdGVyaWFsIH1cbiAgICovXG4gIGNyZWF0ZVBoeXNpY3NNYXRlcmlhbChcbiAgICBzdGF0aWNGcmljdGlvbjogbnVtYmVyLFxuICAgIGR5bmFtaWNGcmljdGlvbjogbnVtYmVyLFxuICAgIGJvdW5jaW5lc3M6IG51bWJlcixcbiAgICBmcmljdGlvbkNvbWJpbmU6IG51bWJlcixcbiAgICBib3VuY2VDb21iaW5lOiBudW1iZXJcbiAgKTogSVBoeXNpY3NNYXRlcmlhbCB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWFBoeXNpY3NNYXRlcmlhbCh0aGlzLCBzdGF0aWNGcmljdGlvbiwgZHluYW1pY0ZyaWN0aW9uLCBib3VuY2luZXNzLCBmcmljdGlvbkNvbWJpbmUsIGJvdW5jZUNvbWJpbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVCb3hDb2xsaWRlclNoYXBlIH1cbiAgICovXG4gIGNyZWF0ZUJveENvbGxpZGVyU2hhcGUodW5pcXVlSUQ6IG51bWJlciwgc2l6ZTogVmVjdG9yMywgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsKTogSUJveENvbGxpZGVyU2hhcGUge1xuICAgIHJldHVybiBuZXcgUGh5c1hCb3hDb2xsaWRlclNoYXBlKHRoaXMsIHVuaXF1ZUlELCBzaXplLCBtYXRlcmlhbCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzLmNyZWF0ZVNwaGVyZUNvbGxpZGVyU2hhcGUgfVxuICAgKi9cbiAgY3JlYXRlU3BoZXJlQ29sbGlkZXJTaGFwZSh1bmlxdWVJRDogbnVtYmVyLCByYWRpdXM6IG51bWJlciwgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsKTogSVNwaGVyZUNvbGxpZGVyU2hhcGUge1xuICAgIHJldHVybiBuZXcgUGh5c1hTcGhlcmVDb2xsaWRlclNoYXBlKHRoaXMsIHVuaXF1ZUlELCByYWRpdXMsIG1hdGVyaWFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlUGxhbmVDb2xsaWRlclNoYXBlIH1cbiAgICovXG4gIGNyZWF0ZVBsYW5lQ29sbGlkZXJTaGFwZSh1bmlxdWVJRDogbnVtYmVyLCBtYXRlcmlhbDogUGh5c1hQaHlzaWNzTWF0ZXJpYWwpOiBJUGxhbmVDb2xsaWRlclNoYXBlIHtcbiAgICByZXR1cm4gbmV3IFBoeXNYUGxhbmVDb2xsaWRlclNoYXBlKHRoaXMsIHVuaXF1ZUlELCBtYXRlcmlhbCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzLmNyZWF0ZUNhcHN1bGVDb2xsaWRlclNoYXBlIH1cbiAgICovXG4gIGNyZWF0ZUNhcHN1bGVDb2xsaWRlclNoYXBlKFxuICAgIHVuaXF1ZUlEOiBudW1iZXIsXG4gICAgcmFkaXVzOiBudW1iZXIsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICAgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsXG4gICk6IElDYXBzdWxlQ29sbGlkZXJTaGFwZSB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlKHRoaXMsIHVuaXF1ZUlELCByYWRpdXMsIGhlaWdodCwgbWF0ZXJpYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVGaXhlZEpvaW50IH1cbiAgICovXG4gIGNyZWF0ZUZpeGVkSm9pbnQoY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpOiBJRml4ZWRKb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWEZpeGVkSm9pbnQodGhpcywgY29sbGlkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVIaW5nZUpvaW50IH1cbiAgICovXG4gIGNyZWF0ZUhpbmdlSm9pbnQoY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpOiBJSGluZ2VKb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWEhpbmdlSm9pbnQodGhpcywgY29sbGlkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVTcHJpbmdKb2ludCB9XG4gICAqL1xuICBjcmVhdGVTcHJpbmdKb2ludChjb2xsaWRlcjogUGh5c1hDb2xsaWRlcik6IElTcHJpbmdKb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWFNwcmluZ0pvaW50KHRoaXMsIGNvbGxpZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXQocGh5c1g6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnNpb24gPSBwaHlzWC5QWF9QSFlTSUNTX1ZFUlNJT047XG4gICAgY29uc3QgZGVmYXVsdEVycm9yQ2FsbGJhY2sgPSBuZXcgcGh5c1guUHhEZWZhdWx0RXJyb3JDYWxsYmFjaygpO1xuICAgIGNvbnN0IGFsbG9jYXRvciA9IG5ldyBwaHlzWC5QeERlZmF1bHRBbGxvY2F0b3IoKTtcbiAgICBjb25zdCBweEZvdW5kYXRpb24gPSBwaHlzWC5QeENyZWF0ZUZvdW5kYXRpb24odmVyc2lvbiwgYWxsb2NhdG9yLCBkZWZhdWx0RXJyb3JDYWxsYmFjayk7XG4gICAgY29uc3QgcHhQaHlzaWNzID0gcGh5c1guUHhDcmVhdGVQaHlzaWNzKHZlcnNpb24sIHB4Rm91bmRhdGlvbiwgbmV3IHBoeXNYLlB4VG9sZXJhbmNlc1NjYWxlKCksIGZhbHNlLCBudWxsKTtcblxuICAgIHBoeXNYLlB4SW5pdEV4dGVuc2lvbnMocHhQaHlzaWNzLCBudWxsKTtcbiAgICB0aGlzLl9waHlzWCA9IHBoeXNYO1xuICAgIHRoaXMuX3B4Rm91bmRhdGlvbiA9IHB4Rm91bmRhdGlvbjtcbiAgICB0aGlzLl9weFBoeXNpY3MgPSBweFBoeXNpY3M7XG4gIH1cbn1cblxuZW51bSBJbml0aWFsaXplU3RhdGUge1xuICBVbmluaXRpYWxpemVkLFxuICBJbml0aWFsaXppbmcsXG4gIEluaXRpYWxpemVkXG59XG4iXSwibmFtZXMiOlsiUGh5c1hSdW50aW1lTW9kZSIsIkF1dG8iLCJXZWJBc3NlbWJseSIsIkphdmFTY3JpcHQiLCJQaHlzWEpvaW50IiwicGh5c1hQaHlzaWNzIiwiX2Nvbm5lY3RlZEFuY2hvciIsIlZlY3RvcjMiLCJfYnJlYWtGb3JjZSIsIk51bWJlciIsIk1BWF9WQUxVRSIsIl9icmVha1RvcnF1ZSIsIl9waHlzWFBoeXNpY3MiLCJzZXRDb25uZWN0ZWRDb2xsaWRlciIsInZhbHVlIiwiX3B4Sm9pbnQiLCJzZXRBY3RvcnMiLCJfcHhBY3RvciIsIl9jb2xsaWRlciIsInNldENvbm5lY3RlZEFuY2hvciIsImNvcHlGcm9tIiwiX3NldExvY2FsUG9zZSIsIl9kZWZhdWx0UXVhdCIsInNldENvbm5lY3RlZE1hc3NTY2FsZSIsInNldEludk1hc3NTY2FsZTAiLCJzZXRDb25uZWN0ZWRJbmVydGlhU2NhbGUiLCJzZXRJbnZJbmVydGlhU2NhbGUwIiwic2V0TWFzc1NjYWxlIiwic2V0SW52TWFzc1NjYWxlMSIsInNldEluZXJ0aWFTY2FsZSIsInNldEludkluZXJ0aWFTY2FsZTEiLCJzZXRCcmVha0ZvcmNlIiwic2V0QnJlYWtUb3JxdWUiLCJhY3RvciIsInBvc2l0aW9uIiwicm90YXRpb24iLCJzZXRMb2NhbFBvc2UiLCJfeEF4aXMiLCJfZGVmYXVsdFZlYyIsIlF1YXRlcm5pb24iLCJQaHlzWEZpeGVkSm9pbnQiLCJjb2xsaWRlciIsIl9weFBoeXNpY3MiLCJjcmVhdGVGaXhlZEpvaW50IiwiUGh5c1hIaW5nZUpvaW50IiwiX2F4aXNSb3RhdGlvblF1YXRlcm5pb24iLCJfc3dpbmdPZmZzZXQiLCJfdmVsb2NpdHkiLCJjcmVhdGVSZXZvbHV0ZUpvaW50Iiwic2V0QXhpcyIsInhBeGlzIiwiYXhpc1JvdGF0aW9uUXVhdGVybmlvbiIsInNldCIsIm5vcm1hbGl6ZSIsImFuZ2xlIiwiTWF0aCIsImFjb3MiLCJkb3QiLCJjcm9zcyIsInJvdGF0aW9uQXhpc0FuZ2xlIiwic2V0U3dpbmdPZmZzZXQiLCJnZXRBbmdsZSIsImdldFZlbG9jaXR5IiwidmVsb2NpdHkiLCJzZXRIYXJkTGltaXQiLCJsb3dlckxpbWl0IiwidXBwZXJMaW1pdCIsImNvbnRhY3REaXN0Iiwic2V0U29mdExpbWl0Iiwic3RpZmZuZXNzIiwiZGFtcGluZyIsInNldERyaXZlVmVsb2NpdHkiLCJzZXREcml2ZUZvcmNlTGltaXQiLCJsaW1pdCIsInNldERyaXZlR2VhclJhdGlvIiwicmF0aW8iLCJzZXRIaW5nZUpvaW50RmxhZyIsImZsYWciLCJzZXRSZXZvbHV0ZUpvaW50RmxhZyIsIlBoeXNYU3ByaW5nSm9pbnQiLCJjcmVhdGVEaXN0YW5jZUpvaW50Iiwic2V0RGlzdGFuY2VKb2ludEZsYWciLCJzZXRNaW5EaXN0YW5jZSIsImRpc3RhbmNlIiwic2V0TWF4RGlzdGFuY2UiLCJzZXRUb2xlcmFuY2UiLCJ0b2xlcmFuY2UiLCJzZXRTdGlmZm5lc3MiLCJzZXREYW1waW5nIiwiRGlzb3JkZXJlZEFycmF5IiwiY291bnQiLCJsZW5ndGgiLCJfZWxlbWVudHMiLCJBcnJheSIsImFkZCIsImVsZW1lbnQiLCJwdXNoIiwiZGVsZXRlIiwiaW5kZXgiLCJpbmRleE9mIiwiZGVsZXRlQnlJbmRleCIsImdldCIsImVsZW1lbnRzIiwiZW5kIiwibGFzdEluZGV4IiwiZ2FyYmFnZUNvbGxlY3Rpb24iLCJTaGFwZUZsYWciLCJTSU1VTEFUSU9OX1NIQVBFIiwiU0NFTkVfUVVFUllfU0hBUEUiLCJUUklHR0VSX1NIQVBFIiwiUGh5c1hDb2xsaWRlclNoYXBlIiwiX2NvbnRyb2xsZXJzIiwiX3NjYWxlIiwiX3Bvc2l0aW9uIiwiX3JvdGF0aW9uIiwiX2F4aXMiLCJfcGh5c1hSb3RhdGlvbiIsIl9zaGFwZUZsYWdzIiwiX3B4TWF0ZXJpYWxzIiwic2V0Um90YXRpb24iLCJyb3RhdGlvbllhd1BpdGNoUm9sbCIsIngiLCJ5IiwieiIsIm11bHRpcGx5Iiwic2V0UG9zaXRpb24iLCJjb250cm9sbGVycyIsImkiLCJuIiwiX3NldExvY2FsUG9zaXRpb24iLCJzZXRXb3JsZFNjYWxlIiwic2NhbGUiLCJzZXRDb250YWN0T2Zmc2V0Iiwib2Zmc2V0IiwiX3B4U2hhcGUiLCJfcHhDb250cm9sbGVyIiwic2V0TWF0ZXJpYWwiLCJfcHhNYXRlcmlhbCIsInNldE1hdGVyaWFscyIsInNldElzVHJpZ2dlciIsIl9tb2RpZnlGbGFnIiwiX3NldFNoYXBlRmxhZ3MiLCJkZXN0cm95IiwicmVsZWFzZSIsImZsYWdzIiwic2V0RmxhZ3MiLCJfcGh5c1giLCJQeFNoYXBlRmxhZ3MiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGlvbiIsIl9pbml0aWFsaXplIiwibWF0ZXJpYWwiLCJpZCIsIl9pZCIsImNyZWF0ZVNoYXBlIiwiX3B4R2VvbWV0cnkiLCJzZXRVVUlEIiwiaGFsZlNxcnQiLCJQaHlzWEJveENvbGxpZGVyU2hhcGUiLCJ1bmlxdWVJRCIsInNpemUiLCJfaGFsZlNpemUiLCJQeEJveEdlb21ldHJ5Iiwic2V0U2l6ZSIsInRlbXBFeHRlbnRzIiwiX3RlbXBIYWxmRXh0ZW50cyIsImhhbGZFeHRlbnRzIiwic2V0R2VvbWV0cnkiLCJfdXBkYXRlQ29udHJvbGxlciIsImV4dGVudHMiLCJweENvbnRyb2xsZXIiLCJzZXRIYWxmSGVpZ2h0Iiwic2V0SGFsZlNpZGVFeHRlbnQiLCJzZXRIYWxmRm9yd2FyZEV4dGVudCIsIlBoeXNYQ2Fwc3VsZUNvbGxpZGVyU2hhcGUiLCJyYWRpdXMiLCJoZWlnaHQiLCJfdXBBeGlzIiwiWSIsIl9yYWRpdXMiLCJfaGFsZkhlaWdodCIsIlB4Q2Fwc3VsZUdlb21ldHJ5Iiwic2V0UmFkaXVzIiwiWCIsIm1heCIsIloiLCJzZXRIZWlnaHQiLCJoYWxmSGVpZ2h0Iiwic2V0VXBBeGlzIiwidXBBeGlzIiwiYXhpcyIsInBoeXNYUm90YXRpb24iLCJnZW9tZXRyeSIsIkNvbGxpZGVyU2hhcGVVcEF4aXMiLCJQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIiLCJfc2NhbGVkT2Zmc2V0IiwibW92ZSIsImRpc3AiLCJtaW5EaXN0IiwiZWxhcHNlZFRpbWUiLCJzZXRXb3JsZFBvc2l0aW9uIiwiX3RlbXBWZWMiLCJnZXRXb3JsZFBvc2l0aW9uIiwiZ2V0UG9zaXRpb24iLCJzdWJ0cmFjdCIsInNldFN0ZXBPZmZzZXQiLCJzZXROb25XYWxrYWJsZU1vZGUiLCJzZXRVcERpcmVjdGlvbiIsInVwIiwic2V0U2xvcGVMaW1pdCIsInNsb3BlTGltaXQiLCJhZGRTaGFwZSIsInNoYXBlIiwiX3B4TWFuYWdlciIsIl9jcmVhdGVQWENvbnRyb2xsZXIiLCJfc2hhcGUiLCJyZW1vdmVTaGFwZSIsIl9kZXN0cm95UFhDb250cm9sbGVyIiwicHhNYW5hZ2VyIiwiZGVzYyIsIlB4Qm94Q29udHJvbGxlckRlc2MiLCJoYWxmU2lkZUV4dGVudCIsImhhbGZGb3J3YXJkRXh0ZW50IiwiUHhDYXBzdWxlQ29udHJvbGxlckRlc2MiLCJjbGltYmluZ01vZGUiLCJfZ2V0Q29udHJvbGxlck1hbmFnZXIiLCJjcmVhdGVDb250cm9sbGVyIiwiUGh5c1hDb2xsaWRlciIsImF0dGFjaFNoYXBlIiwiZGV0YWNoU2hhcGUiLCJzZXRXb3JsZFRyYW5zZm9ybSIsInNldEdsb2JhbFBvc2UiLCJfdHJhbnNmb3JtIiwiZ2V0V29ybGRUcmFuc2Zvcm0iLCJvdXRQb3NpdGlvbiIsIm91dFJvdGF0aW9uIiwiZ2V0R2xvYmFsUG9zZSIsInciLCJwb3MiLCJyb3QiLCJfdGVtcFRyYW5zZm9ybSIsIkNvbGxpc2lvbkRldGVjdGlvbk1vZGUiLCJEaXNjcmV0ZSIsIkNvbnRpbnVvdXMiLCJDb250aW51b3VzRHluYW1pYyIsIkNvbnRpbnVvdXNTcGVjdWxhdGl2ZSIsIlBoeXNYRHluYW1pY0NvbGxpZGVyIiwiY3JlYXRlUmlnaWREeW5hbWljIiwic2V0TGluZWFyRGFtcGluZyIsInNldEFuZ3VsYXJEYW1waW5nIiwic2V0TGluZWFyVmVsb2NpdHkiLCJzZXRBbmd1bGFyVmVsb2NpdHkiLCJzZXRNYXNzIiwic2V0Q2VudGVyT2ZNYXNzIiwic2V0Q01hc3NMb2NhbFBvc2UiLCJzZXRJbmVydGlhVGVuc29yIiwic2V0TWFzc1NwYWNlSW5lcnRpYVRlbnNvciIsInNldE1heEFuZ3VsYXJWZWxvY2l0eSIsInNldE1heERlcGVuZXRyYXRpb25WZWxvY2l0eSIsInNldFNsZWVwVGhyZXNob2xkIiwic2V0U29sdmVySXRlcmF0aW9ucyIsInNldFNvbHZlckl0ZXJhdGlvbkNvdW50cyIsInNldENvbGxpc2lvbkRldGVjdGlvbk1vZGUiLCJzZXRSaWdpZEJvZHlGbGFnIiwiUHhSaWdpZEJvZHlGbGFnIiwiZUVOQUJMRV9DQ0QiLCJlRU5BQkxFX0NDRF9GUklDVElPTiIsImVFTkFCTEVfU1BFQ1VMQVRJVkVfQ0NEIiwicGh5c1giLCJzZXRJc0tpbmVtYXRpYyIsImVLSU5FTUFUSUMiLCJzZXRDb25zdHJhaW50cyIsInNldFJpZ2lkRHluYW1pY0xvY2tGbGFncyIsImFkZEZvcmNlIiwiZm9yY2UiLCJhZGRUb3JxdWUiLCJ0b3JxdWUiLCJwb3NpdGlvbk9yUm90YXRpb24iLCJzZXRLaW5lbWF0aWNUYXJnZXQiLCJ0ZW1wVHJhbnNsYXRpb24iLCJfdGVtcFRyYW5zbGF0aW9uIiwidGVtcFJvdGF0aW9uIiwiX3RlbXBSb3RhdGlvbiIsInNsZWVwIiwicHV0VG9TbGVlcCIsIndha2VVcCIsIlBoeXNYUGh5c2ljc01hbmFnZXIiLCJvbkNvbnRhY3RFbnRlciIsIm9uQ29udGFjdEV4aXQiLCJvbkNvbnRhY3RTdGF5Iiwib25UcmlnZ2VyRW50ZXIiLCJvblRyaWdnZXJFeGl0Iiwib25UcmlnZ2VyU3RheSIsIl9weENvbnRyb2xsZXJNYW5hZ2VyIiwiX2N1cnJlbnRFdmVudHMiLCJfZXZlbnRNYXAiLCJfZXZlbnRQb29sIiwiX3B4UmF5Y2FzdEhpdCIsIlB4UmF5Y2FzdEhpdCIsIl9weEZpbHRlckRhdGEiLCJQeFF1ZXJ5RmlsdGVyRGF0YSIsIlB4UXVlcnlGbGFncyIsIlF1ZXJ5RmxhZyIsIlNUQVRJQyIsIkRZTkFNSUMiLCJQUkVfRklMVEVSIiwiX29uQ29udGFjdEVudGVyIiwiX29uQ29udGFjdEV4aXQiLCJfb25Db250YWN0U3RheSIsIl9vblRyaWdnZXJFbnRlciIsIl9vblRyaWdnZXJFeGl0IiwiX29uVHJpZ2dlclN0YXkiLCJ0cmlnZ2VyQ2FsbGJhY2siLCJvbkNvbnRhY3RCZWdpbiIsImluZGV4MSIsImluZGV4MiIsIm9uQ29udGFjdEVuZCIsIm9uQ29udGFjdFBlcnNpc3QiLCJvblRyaWdnZXJCZWdpbiIsImV2ZW50IiwiX2dldFRyaWdnZXIiLCJzdGF0ZSIsIkVudGVyIiwib25UcmlnZ2VyRW5kIiwic3ViTWFwIiwidW5kZWZpbmVkIiwiRXhpdCIsInB4UGh5c2ljcyIsInBoeXNYU2ltdWxhdGlvbkNhbGxiYWNrSW5zdGFuY2UiLCJQeFNpbXVsYXRpb25FdmVudENhbGxiYWNrIiwiaW1wbGVtZW50Iiwic2NlbmVEZXNjIiwiZ2V0RGVmYXVsdFNjZW5lRGVzYyIsImdldFRvbGVyYW5jZXNTY2FsZSIsIl9weFNjZW5lIiwiY3JlYXRlU2NlbmUiLCJzZXRHcmF2aXR5IiwiYWRkQ29sbGlkZXJTaGFwZSIsImNvbGxpZGVyU2hhcGUiLCJyZW1vdmVDb2xsaWRlclNoYXBlIiwiZXZlbnRQb29sIiwiY3VycmVudEV2ZW50cyIsInNoYXBlSUQiLCJhZGRDb2xsaWRlciIsImFkZEFjdG9yIiwicmVtb3ZlQ29sbGlkZXIiLCJyZW1vdmVBY3RvciIsImFkZENoYXJhY3RlckNvbnRyb2xsZXIiLCJjaGFyYWN0ZXJDb250cm9sbGVyIiwibGFzdFBYTWFuYWdlciIsInJlbW92ZUNoYXJhY3RlckNvbnRyb2xsZXIiLCJ1cGRhdGUiLCJfc2ltdWxhdGUiLCJfZmV0Y2hSZXN1bHRzIiwiX2ZpcmVFdmVudCIsInJheWNhc3QiLCJyYXkiLCJvblJheWNhc3QiLCJoaXQiLCJweEhpdFJlc3VsdCIsIm1pbiIsInJheWNhc3RDYWxsYmFjayIsInByZUZpbHRlciIsImZpbHRlckRhdGEiLCJwb3N0RmlsdGVyIiwicmVzdWx0IiwicmF5Y2FzdFNpbmdsZSIsIm9yaWdpbiIsImRpcmVjdGlvbiIsIlB4UXVlcnlGaWx0ZXJDYWxsYmFjayIsIl90ZW1wUG9zaXRpb24iLCJfdGVtcE5vcm1hbCIsIm5vcm1hbCIsInB4Tm9ybWFsIiwicHhQb3NpdGlvbiIsImdldFNoYXBlIiwiZ2V0VVVJRCIsInB4Q29udHJvbGxlck1hbmFnZXIiLCJjcmVhdGVDb250cm9sbGVyTWFuYWdlciIsInNpbXVsYXRlIiwiYmxvY2siLCJmZXRjaFJlc3VsdHMiLCJwb3AiLCJUcmlnZ2VyRXZlbnQiLCJTdGF5IiwiUE9TVF9GSUxURVIiLCJBTllfSElUIiwiTk9fQkxPQ0siLCJUcmlnZ2VyRXZlbnRTdGF0ZSIsIlBoeXNYUGh5c2ljc01hdGVyaWFsIiwic3RhdGljRnJpY3Rpb24iLCJkeW5hbWljRnJpY3Rpb24iLCJib3VuY2luZXNzIiwiZnJpY3Rpb25Db21iaW5lIiwiYm91bmNlQ29tYmluZSIsInB4TWF0ZXJpYWwiLCJjcmVhdGVNYXRlcmlhbCIsInNldEZyaWN0aW9uQ29tYmluZU1vZGUiLCJzZXRSZXN0aXR1dGlvbkNvbWJpbmVNb2RlIiwic2V0Qm91bmNpbmVzcyIsInNldFJlc3RpdHV0aW9uIiwic2V0RHluYW1pY0ZyaWN0aW9uIiwic2V0U3RhdGljRnJpY3Rpb24iLCJzZXRCb3VuY2VDb21iaW5lIiwic2V0RnJpY3Rpb25Db21iaW5lIiwiQ29tYmluZU1vZGUiLCJBdmVyYWdlIiwiTWluaW11bSIsIk11bHRpcGx5IiwiTWF4aW11bSIsIlBoeXNYU3RhdGljQ29sbGlkZXIiLCJjcmVhdGVSaWdpZFN0YXRpYyIsIlBoeXNYUGxhbmVDb2xsaWRlclNoYXBlIiwiUHhQbGFuZUdlb21ldHJ5IiwiUGh5c1hTcGhlcmVDb2xsaWRlclNoYXBlIiwiX21heFNjYWxlIiwiUHhTcGhlcmVHZW9tZXRyeSIsIlBoeXNYUGh5c2ljcyIsInJ1bnRpbWVNb2RlIiwiX2luaXRpYWxpemVTdGF0ZSIsIlVuaW5pdGlhbGl6ZWQiLCJfcnVuVGltZU1vZGUiLCJpbml0aWFsaXplIiwiSW5pdGlhbGl6ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkluaXRpYWxpemluZyIsIl9pbml0aWFsaXplUHJvbWlzZSIsInNjcmlwdFByb21pc2UiLCJyZWplY3QiLCJzY3JpcHQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJhc3luYyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJzdXBwb3J0ZWQiLCJpbnN0YW50aWF0ZSIsIm1vZHVsZSIsIk1vZHVsZSIsIlVpbnQ4QXJyYXkiLCJvZiIsIkluc3RhbmNlIiwiZSIsInNyYyIsInZlcnNpb24iLCJpbml0aWFsaXplUHJvbWlzZSIsInRoZW4iLCJ3aW5kb3ciLCJQSFlTWCIsIl9pbml0IiwiY29uc29sZSIsImxvZyIsImNhdGNoIiwiUHhDbG9zZUV4dGVuc2lvbnMiLCJfcHhGb3VuZGF0aW9uIiwiY3JlYXRlUGh5c2ljc01hbmFnZXIiLCJtYW5hZ2VyIiwiY3JlYXRlU3RhdGljQ29sbGlkZXIiLCJjcmVhdGVEeW5hbWljQ29sbGlkZXIiLCJjcmVhdGVDaGFyYWN0ZXJDb250cm9sbGVyIiwiY3JlYXRlUGh5c2ljc01hdGVyaWFsIiwiY3JlYXRlQm94Q29sbGlkZXJTaGFwZSIsImNyZWF0ZVNwaGVyZUNvbGxpZGVyU2hhcGUiLCJjcmVhdGVQbGFuZUNvbGxpZGVyU2hhcGUiLCJjcmVhdGVDYXBzdWxlQ29sbGlkZXJTaGFwZSIsImNyZWF0ZUhpbmdlSm9pbnQiLCJjcmVhdGVTcHJpbmdKb2ludCIsIlBYX1BIWVNJQ1NfVkVSU0lPTiIsImRlZmF1bHRFcnJvckNhbGxiYWNrIiwiUHhEZWZhdWx0RXJyb3JDYWxsYmFjayIsImFsbG9jYXRvciIsIlB4RGVmYXVsdEFsbG9jYXRvciIsInB4Rm91bmRhdGlvbiIsIlB4Q3JlYXRlRm91bmRhdGlvbiIsIlB4Q3JlYXRlUGh5c2ljcyIsIlB4VG9sZXJhbmNlc1NjYWxlIiwiUHhJbml0RXh0ZW5zaW9ucyIsIkluaXRpYWxpemVTdGF0ZSJdLCJtYXBwaW5ncyI6Ijs7QUFBTyxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3pDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0FBQ3JGLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCxLQUFLLE1BQU0sT0FBTyxJQUFJLFlBQVksS0FBSyxDQUFDO0FBQ3hDOztBQ0pBOztJQUdPLElBQUEsaUJBQUE7VUFBS0EsZ0JBQWdCLEVBQUE7QUFBaEJBLElBQUFBLGdCQUFBQSxDQUFBQSxnQkFDVix5R0FDQUMsTUFBQUEsQ0FBQUEsR0FBQUEsQ0FBQUEsQ0FBQUEsR0FBQUEsTUFBQUEsQ0FBQUE7QUFGVUQsSUFBQUEsZ0JBQUFBLENBQUFBLGdCQUdWLDBCQUNBRSxhQUFBQSxDQUFBQSxHQUFBQSxDQUFBQSxDQUFBQSxHQUFBQSxhQUFBQSxDQUFBQTtBQUpVRixJQUFBQSxnQkFBQUEs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
|