@phenixrts/sdk 2025.2.2-beta.584 → 2025.2.2
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/channels/debug/channels.js +2 -2
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +2 -2
- package/channels/debug.private/package.json +1 -1
- package/channels/debug.provideGlobalScope/channels.js +2 -2
- package/channels/debug.provideGlobalScope/package.json +1 -1
- package/channels/es5.debug.private/channels.js +2 -2
- package/channels/es5.debug.private/package.json +1 -1
- package/channels/min/channels.js +1 -1
- package/channels/min/channels.js.map +1 -1
- package/channels/min/package.json +1 -1
- package/channels/min.private/channels.js +1 -1
- package/channels/min.private/channels.js.map +1 -1
- package/channels/min.private/package.json +1 -1
- package/channels/min.provideGlobalScope/channels.js +1 -1
- package/channels/min.provideGlobalScope/channels.js.map +1 -1
- package/channels/min.provideGlobalScope/package.json +1 -1
- package/channels/package.json +1 -1
- package/full/debug/full.js +2 -2
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +2 -2
- package/full/debug.private/package.json +1 -1
- package/full/min/full.js +1 -1
- package/full/min/full.js.map +1 -1
- package/full/min/package.json +1 -1
- package/full/min.private/full.js +1 -1
- package/full/min.private/full.js.map +1 -1
- package/full/min.private/package.json +1 -1
- package/full/package.json +1 -1
- package/package.json +1 -1
- package/publish/debug/package.json +1 -1
- package/publish/debug/publish.js +2 -2
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +2 -2
- package/publish/min/package.json +1 -1
- package/publish/min/publish.js +1 -1
- package/publish/min/publish.js.map +1 -1
- package/publish/min.private/package.json +1 -1
- package/publish/min.private/publish.js +1 -1
- package/publish/min.private/publish.js.map +1 -1
- package/publish/package.json +1 -1
|
@@ -10449,7 +10449,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
10449
10449
|
key: "sdkVersion",
|
|
10450
10450
|
get: function get() {
|
|
10451
10451
|
try {
|
|
10452
|
-
return "2025-08-
|
|
10452
|
+
return "2025-08-14T15:38:21.184Z (2025.2.2)";
|
|
10453
10453
|
} catch (e) {
|
|
10454
10454
|
return this._defaultVersion;
|
|
10455
10455
|
}
|
|
@@ -11968,4 +11968,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11968
11968
|
/******/ })()
|
|
11969
11969
|
;
|
|
11970
11970
|
});
|
|
11971
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ZBO0FBQ0E7QUFDQTs7QUFFcUQ7QUFDVDtBQUNRO0FBQ2hCO0FBQ2dCO0FBRXBELElBQU1LLHFCQUFxQixHQUFHLGtCQUFrQjtBQUFDLElBRTVCQywwQkFBMEI7RUFNN0MsU0FBQUEsMkJBQUEsRUFBYztJQUFBQywySUFBQSxPQUFBRCwwQkFBQTtJQUFBRSwySUFBQSx1QkFMa0MsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBLG9DQUdmQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBRzdELElBQUksQ0FBQ0MsYUFBYSxHQUFHLElBQUlSLG1EQUFPLENBQVUsSUFBSSxDQUFDO0lBQy9DLElBQUksQ0FBQ1MscUJBQXFCLEdBQUcsSUFBSVIsMkRBQWUsQ0FBQyxJQUFJLENBQUNPLGFBQWEsQ0FBQztJQUNwRSxJQUFJLENBQUNFLFVBQVUsQ0FBQyxDQUFDO0VBQ25CO0VBQUMsT0FBQUMsd0lBQUEsQ0FBQVIsMEJBQUE7SUFBQVMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE2QztNQUMzQyxPQUFPLElBQUksQ0FBQ0oscUJBQXFCO0lBQ25DO0VBQUM7SUFBQUcsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT0Msc0JBQXNCQSxDQUFBLEVBQVc7TUFDdEMsT0FBT1QsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQ1MseUJBQXlCO0lBQ3BEO0VBQUM7SUFBQUosR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT0csT0FBT0EsQ0FBQSxFQUFTO01BQ3JCLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUM3QjtFQUFDO0lBQUFMLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFKLFVBQVVBLENBQUEsRUFBUztNQUFBLElBQUFTLEtBQUE7TUFDekIsSUFBTUMsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQTtRQUFBLE9BQVNELEtBQUksQ0FBQ1gsYUFBYSxDQUFDTSxLQUFLLEdBQUcsQ0FBQ2pCLGdFQUFXLENBQUNpQixLQUFLLENBQUNPLGdCQUFnQjtNQUFBO01BQ25HLElBQU1DLG9CQUFvQixHQUFHLEtBQUs7TUFFbEN6QixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDUyx3QkFBd0IsQ0FBQ3JCLHFCQUFxQixFQUFFa0Isc0JBQXNCLEVBQUVFLG9CQUFvQixDQUFDO01BRS9HLElBQUksQ0FBQ0osWUFBWSxDQUFDTSxHQUFHLENBQUMsSUFBSTFCLHdEQUFVLENBQUM7UUFBQSxPQUFNRCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDVywyQkFBMkIsQ0FBQ3ZCLHFCQUFxQixFQUFFa0Isc0JBQXNCLEVBQUVFLG9CQUFvQixDQUFDO01BQUEsRUFBQyxDQUFDO0lBQ2pLO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNDSDtBQUNBO0FBQ0E7QUFGQSxJQUlxQkssZUFBZTtFQUFBLFNBQUFBLGdCQUFBO0lBQUF2QiwySUFBQSxPQUFBdUIsZUFBQTtFQUFBO0VBQUEsT0FBQWhCLHdJQUFBLENBQUFnQixlQUFBO0lBQUFmLEdBQUE7SUFBQUMsR0FBQSxFQWtCbEMsU0FBQUEsSUFBQSxFQUEyQztNQUN6QyxPQUFPYyxlQUFlLENBQUNDLHNCQUFzQjtJQUMvQztFQUFDO0lBQUFoQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU8sSUFBSSxDQUFDZ0IsWUFBWTtJQUMxQjtFQUFDO0lBQUFqQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXlDO01BQ3ZDLE9BQU8sSUFBSSxDQUFDaUIsb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQWxCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0M7TUFDOUIsT0FBT2MsZUFBZSxDQUFDSSxVQUFVO0lBQ25DO0VBQUM7SUFBQW5CLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDSyxXQUFXO0lBQ3BDO0VBQUM7SUFBQXBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDTSxXQUFXO0lBQ3BDO0VBQUM7SUFBQXJCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDTyxXQUFXO0lBQ3BDO0VBQUM7SUFBQXRCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDUSxXQUFXO0lBQ3BDO0VBQUM7SUFBQXZCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDUyxXQUFXO0lBQ3BDO0VBQUM7SUFBQXhCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDVSxXQUFXO0lBQ3BDO0VBQUM7SUFBQXpCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDVyxXQUFXO0lBQ3BDO0VBQUM7SUFBQTFCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBT2MsZUFBZSxDQUFDWSxXQUFXO0lBQ3BDO0VBQUM7SUFBQTNCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8wQixRQUFRQSxDQUFBLEVBQVk7TUFDekIsT0FBT2IsZUFBZSxDQUFDYyxTQUFTO0lBQ2xDO0VBQUM7SUFBQTdCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWU0QiwwQkFBMEJBLENBQUEsRUFBVztNQUNsRCxJQUFJLENBQUNDLFNBQVMsSUFBSSxDQUFDQSxTQUFTLENBQUNDLFNBQVMsRUFBRTtRQUN0QyxPQUFPLEVBQUU7TUFDWDtNQUVBLElBQU1DLHFCQUFxQixHQUFHRixTQUFTLENBQUNDLFNBQVMsQ0FBQ0UsS0FBSyxDQUFDbkIsZUFBZSxDQUFDb0IsMkJBQTJCLENBQUM7TUFFcEcsSUFBSUYscUJBQXFCLElBQUlBLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3JELE9BQU9BLHFCQUFxQixDQUFDLENBQUMsQ0FBQztNQUNqQztNQUVBLE9BQU9sQixlQUFlLENBQUNxQiwrQkFBK0IsQ0FBQyxDQUFDO0lBQzFEO0VBQUM7SUFBQXBDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWVtQyxnQkFBZ0JBLENBQUEsRUFBVztNQUN4QyxJQUFJLENBQUN0QixlQUFlLENBQUNDLHNCQUFzQixFQUFFO1FBQzNDLE9BQU8sRUFBRTtNQUNYO01BRUEsSUFBTXNCLGVBQWUsR0FBR3ZCLGVBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QixLQUFLLENBQUMsR0FBRyxDQUFDO01BRXpFLElBQUksQ0FBQ0QsZUFBZSxJQUFJLENBQUNBLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMzQyxPQUFPLEVBQUU7TUFDWDtNQUVBLE9BQU9BLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDM0I7RUFBQztJQUFBdEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZXNDLHdCQUF3QkEsQ0FBQSxFQUFXO01BQ2hELElBQUksQ0FBQ3pCLGVBQWUsQ0FBQ0Msc0JBQXNCLEVBQUU7UUFDM0MsT0FBTyxDQUFDO01BQ1Y7TUFFQSxJQUFNeUIsa0JBQWtCLEdBQUcxQixlQUFlLENBQUNDLHNCQUFzQixDQUFDdUIsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUU1RSxJQUFJLENBQUNFLGtCQUFrQixJQUFJLENBQUNBLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2pELE9BQU8sQ0FBQztNQUNWO01BRUEsSUFBTUMsV0FBVyxHQUFHRCxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7TUFFekMsSUFBSSxDQUFDQyxXQUFXLEVBQUU7UUFDaEIsT0FBTyxDQUFDO01BQ1Y7TUFFQSxPQUFPQyxNQUFNLENBQUNELFdBQVcsQ0FBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvQztFQUFDO0lBQUF2QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFla0MsK0JBQStCQSxDQUFBLEVBQVc7TUFDdkQsSUFBSSxDQUFDTCxTQUFTLElBQUksQ0FBQ0EsU0FBUyxDQUFDQyxTQUFTLEVBQUU7UUFDdEMsT0FBTyxFQUFFO01BQ1g7TUFFQSxJQUFNQSxTQUFTLEdBQUdELFNBQVMsQ0FBQ0MsU0FBUztNQUNyQyxJQUFNWSxJQUFJLEdBQUdaLFNBQVMsQ0FBQ2EsT0FBTyxDQUFDLE9BQU8sQ0FBQztNQUV2QyxJQUFJRCxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ1o7UUFDQSxhQUFBRSxNQUFBLENBQWFDLFFBQVEsQ0FBQ2YsU0FBUyxDQUFDZ0IsU0FBUyxDQUFDSixJQUFJLEdBQUcsQ0FBQyxFQUFFWixTQUFTLENBQUNhLE9BQU8sQ0FBQyxHQUFHLEVBQUVELElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO01BQ3hGO01BRUEsSUFBTUssT0FBTyxHQUFHakIsU0FBUyxDQUFDYSxPQUFPLENBQUMsVUFBVSxDQUFDO01BRTdDLElBQUlJLE9BQU8sR0FBRyxDQUFDLEVBQUU7UUFDZjtRQUNBLElBQU1DLE9BQU8sR0FBR2xCLFNBQVMsQ0FBQ2EsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUV4QyxhQUFBQyxNQUFBLENBQWFDLFFBQVEsQ0FBQ2YsU0FBUyxDQUFDZ0IsU0FBUyxDQUFDRSxPQUFPLEdBQUcsQ0FBQyxFQUFFbEIsU0FBUyxDQUFDYSxPQUFPLENBQUMsR0FBRyxFQUFFSyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztNQUM5RjtNQUVBLE9BQU8sRUFBRTtJQUNYO0VBQUM7QUFBQTtBQUFBQyxnQkFBQSxHQTdJa0JwQyxlQUFlO0FBQUF0QiwySUFBQSxDQUFmc0IsZUFBZSxpQ0FDb0IsNEpBQTRKO0FBQUF0QiwySUFBQSxDQUQvTHNCLGVBQWUsNEJBRWVBLGdCQUFlLENBQUNlLDBCQUEwQixDQUFDLENBQUM7QUFBQXJDLDJJQUFBLENBRjFFc0IsZUFBZSxrQkFHS0EsZ0JBQWUsQ0FBQ3NCLGdCQUFnQixDQUFDLENBQUM7QUFBQTVDLDJJQUFBLENBSHREc0IsZUFBZSwwQkFJYUEsZ0JBQWUsQ0FBQ3lCLHdCQUF3QixDQUFDLENBQUM7QUFBQS9DLDJJQUFBLENBSnRFc0IsZUFBZSxlQU1HLGlEQUFpRCxDQUFFcUMsSUFBSSxFQUFBQyxVQUFBLEdBQUN0QixTQUFTLGNBQUFzQixVQUFBLHVCQUFUQSxVQUFBLENBQVdyQixTQUFTLENBQUM7QUFBQXZDLDJJQUFBLENBTi9Gc0IsZUFBZSxnQkFPSSxVQUFVLENBQUVxQyxJQUFJLEVBQUFFLFdBQUEsR0FBQ3ZCLFNBQVMsY0FBQXVCLFdBQUEsdUJBQVRBLFdBQUEsQ0FBV3RCLFNBQVMsQ0FBQztBQUFBdkMsMklBQUEsQ0FQekRzQixlQUFlLGlCQVNJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQTlELDJJQUFBLENBVGhGc0IsZUFBZSxpQkFVSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUE5RCwySUFBQSxDQVZoRnNCLGVBQWUsaUJBV0lBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBOUQsMklBQUEsQ0FYaEZzQixlQUFlLGlCQVlJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQTlELDJJQUFBLENBWmhGc0IsZUFBZSxpQkFhSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUE5RCwySUFBQSxDQWJoRnNCLGVBQWUsaUJBY0lBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBOUQsMklBQUEsQ0FkaEZzQixlQUFlLGlCQWVJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQTlELDJJQUFBLENBZmhGc0IsZUFBZSxpQkFnQklBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCckc7QUFDQTtBQUNBOztBQUVzRTtBQUNYO0FBQ0s7QUFDVjs7QUFFdEQ7QUFDQTtBQUFBLElBQ3FCSyxpQ0FBaUM7RUFBQSxTQUFBQSxrQ0FBQTtJQUFBcEUsMklBQUEsT0FBQW9FLGlDQUFBO0VBQUE7RUFBQSxPQUFBN0Qsd0lBQUEsQ0FBQTZELGlDQUFBO0lBQUE1RCxHQUFBO0lBQUFFLEtBQUEsRUFDcEQsU0FBYzJELGNBQWNBLENBQUNDLElBQVksRUFBVTtNQUNqRCxPQUFPRixpQ0FBaUMsQ0FBQ0csa0JBQWtCLENBQUNELElBQUksQ0FBQztJQUNuRTtFQUFDO0lBQUE5RCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFjOEQsZUFBZUEsQ0FBQ0YsSUFBWSxFQUFXO01BQ25ELE9BQU9GLGlDQUFpQyxDQUFDSyxtQkFBbUIsQ0FBQ0gsSUFBSSxDQUFDO0lBQ3BFO0VBQUM7SUFBQTlELEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0U7TUFDbEUsT0FBTztRQUNMLHNCQUFzQixFQUFFdUQsdUVBQXFCLENBQUNVLHlDQUF5QyxDQUFDVCxpRUFBZ0IsQ0FBQ1UscUJBQXFCLENBQUM7UUFDL0gsc0JBQXNCLEVBQUVULG1FQUFtQixDQUFDVSxxQ0FBcUMsQ0FBQ1QsOERBQWMsQ0FBQ1UsbUJBQW1CLENBQUM7UUFDckgsOEJBQThCLEVBQUVYLG1FQUFtQixDQUFDVSxxQ0FBcUMsQ0FBQ1QsOERBQWMsQ0FBQ1csMEJBQTBCLENBQUM7UUFDcEksZ0NBQWdDLEVBQUVaLG1FQUFtQixDQUFDVSxxQ0FBcUMsQ0FBQ1QsOERBQWMsQ0FBQ1ksNEJBQTRCLENBQUM7UUFDeEksc0JBQXNCLEVBQUUsRUFBRTtRQUMxQixZQUFZLEVBQUUsRUFBRTtRQUNoQixpQkFBaUIsRUFBRTtNQUNyQixDQUFDO0lBQ0g7RUFBQztJQUFBdkUsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRTtNQUNwRSxPQUFPO1FBQ0wsdUNBQXVDLEVBQUUsSUFBSTtRQUM3QyxnREFBZ0QsRUFBRSxJQUFJO1FBQ3RELDRDQUE0QyxFQUFFLElBQUk7UUFDbEQsa0RBQWtELEVBQUU7TUFDdEQsQ0FBQztJQUNIO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2Q0g7QUFDQTtBQUNBOztBQUVxRDtBQUNZO0FBQUEsSUFFNUN3RSx1QkFBdUI7RUEwQjFDLFNBQUFBLHdCQUFBLEVBQXNCO0lBQUFqRiwySUFBQSxPQUFBaUYsdUJBQUE7SUFDcEIsTUFBTSxJQUFJQyxLQUFLLENBQUMsd0VBQXdFLENBQUM7RUFDM0Y7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQTBFLHVCQUFBO0lBQUF6RSxHQUFBO0lBQUFFLEtBQUEsRUEzQkQsU0FBT3lFLHNCQUFzQkEsQ0FBQSxFQUFTO01BQ3BDLElBQUlILHNFQUFpQixDQUFDSSx1Q0FBdUMsRUFBRTtRQUM3RCxJQUFJLENBQUNDLDRCQUE0QixDQUFDLENBQUM7TUFDckM7SUFDRjtFQUFDO0lBQUE3RSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlMkUsNEJBQTRCQSxDQUFBLEVBQVM7TUFDbEQsSUFBSUwsc0VBQWlCLENBQUNNLHlCQUF5QixFQUFFO1FBQy9DN0YsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzZFLGNBQWMsQ0FBQyxJQUFJLENBQUNDLHVDQUF1QyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7TUFDM0YsQ0FBQyxNQUFNO1FBQ0xoRyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ0YsVUFBVSxDQUFDLElBQUksQ0FBQ0YsdUNBQXVDLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7TUFDMUY7SUFDRjtFQUFDO0lBQUFqRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlOEUsdUNBQXVDQSxDQUFBLEVBQVM7TUFDN0QsSUFBSUcsR0FBNEIsR0FBR2xHLGdFQUFXLENBQUNpQixLQUFLLENBQUNrRixxQkFBcUIsQ0FBbUIsS0FBSyxDQUFDO01BRW5HRCxHQUFHLENBQUNFLEdBQUcsR0FBR3BHLGdFQUFXLENBQUNpQixLQUFLLENBQUNvRixHQUFHLENBQUNDLGVBQWUsQ0FBQyxJQUFJQyxJQUFJLENBQUMsQ0FBQyxJQUFJQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUNyRk4sR0FBRyxDQUFDTyxPQUFPLEdBQUcsWUFBVztRQUN2QnpHLGdFQUFXLENBQUNpQixLQUFLLENBQUNvRixHQUFHLENBQUNLLGVBQWUsQ0FBQyxJQUFJLENBQUNOLEdBQUcsQ0FBQztRQUUvQ0YsR0FBRyxHQUFHLElBQUk7TUFDWixDQUFDO0lBQ0g7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0JIO0FBQ0E7QUFDQTs7QUFFcUQ7QUFFVDtBQUNRO0FBQ2hCO0FBQUEsSUFFZlMsY0FBYztFQU9qQyxTQUFBQSxlQUFBLEVBQWM7SUFBQXBHLDJJQUFBLE9BQUFvRyxjQUFBO0lBQUFuRywySUFBQSx1QkFOa0MsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLDJJQUFBLHVCQUMzQlIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzJGLG1CQUFtQixLQUFLQyxTQUFTO0lBQUFyRywySUFBQSxlQUN2QyxJQUFJTCxtREFBTyxDQUFxQjBHLFNBQVMsQ0FBQztJQUFBckcsMklBQUEseUJBQ2hDLElBQUlMLG1EQUFPLENBQXFCMEcsU0FBUyxDQUFDO0lBQUFyRywySUFBQSxzQ0FDN0IsSUFBSUwsbURBQU8sQ0FBcUIwRyxTQUFTLENBQUM7SUFHcEgsSUFBSSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxFQUFFO01BQ3JCO0lBQ0Y7SUFFQSxJQUFJLENBQUNDLDJCQUEyQixDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ3pCO0VBQUMsT0FBQWxHLHdJQUFBLENBQUE2RixjQUFBO0lBQUE1RixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJCO01BQ3pCLE9BQU8sSUFBSSxDQUFDaUcsWUFBWTtJQUMxQjtFQUFDO0lBQUFsRyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDa0csSUFBSTtJQUNsQjtFQUFDO0lBQUFuRyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlEO01BQy9DLE9BQU8sSUFBSSxDQUFDbUcsY0FBYztJQUM1QjtFQUFDO0lBQUFwRyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThEO01BQzVELE9BQU8sSUFBSSxDQUFDb0csMkJBQTJCO0lBQ3pDO0VBQUM7SUFBQXJHLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUM3QjtFQUFDO0lBQUFMLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFvRyw2QkFBNkJBLENBQUEsRUFBVztNQUFBLElBQUFDLElBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7TUFDOUMsUUFBQUgsSUFBQSxJQUFBQyxxQkFBQSxJQUFBQyxzQkFBQSxHQUFPeEgsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzJGLG1CQUFtQixjQUFBWSxzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDRSxRQUFRLGNBQUFILHFCQUFBLGNBQUFBLHFCQUFBLElBQUFFLHNCQUFBLEdBQUl6SCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMkYsbUJBQW1CLGNBQUFhLHNCQUFBLHVCQUFyQ0Esc0JBQUEsQ0FBdUNFLFdBQVcsY0FBQUwsSUFBQSxjQUFBQSxJQUFBLEdBQUksQ0FBQyxDQUFDO0lBQ3BIO0VBQUM7SUFBQXZHLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVEyRyxnQkFBZ0JBLENBQUEsRUFBVztNQUFBLElBQUFDLEtBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7TUFDakMsUUFBQUgsS0FBQSxJQUFBQyxzQkFBQSxJQUFBQyxzQkFBQSxHQUFPL0gsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzJGLG1CQUFtQixjQUFBbUIsc0JBQUEsdUJBQXJDQSxzQkFBQSxDQUF1Q0UsYUFBYSxjQUFBSCxzQkFBQSxjQUFBQSxzQkFBQSxJQUFBRSxzQkFBQSxHQUFJaEksZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzJGLG1CQUFtQixjQUFBb0Isc0JBQUEsdUJBQXJDQSxzQkFBQSxDQUF1Q0UsSUFBSSxjQUFBTCxLQUFBLGNBQUFBLEtBQUEsR0FBSSxTQUFTO0lBQ3pIO0VBQUM7SUFBQTlHLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFrSCxnQkFBZ0JBLENBQUEsRUFBVztNQUFBLElBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO01BQ2pDLFFBQUFELHNCQUFBLElBQUFDLHNCQUFBLEdBQU9ySSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMkYsbUJBQW1CLGNBQUF5QixzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDQyxHQUFHLGNBQUFGLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksQ0FBQyxDQUFDO0lBQ3pEO0VBQUM7SUFBQXJILEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE4RiwyQkFBMkJBLENBQUEsRUFBUztNQUFBLElBQUF6RixLQUFBO1FBQUFpSCxzQkFBQTtNQUMxQyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQTtRQUFBLE9BQWVsSCxLQUFJLENBQUMwRixnQkFBZ0IsQ0FBQyxDQUFDO01BQUE7TUFFcEQsQ0FBQXVCLHNCQUFBLEdBQUF2SSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMkYsbUJBQW1CLGNBQUEyQixzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDRSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVELFFBQVEsQ0FBQztNQUUzRSxJQUFJLENBQUNuSCxZQUFZLENBQUNNLEdBQUcsQ0FBQyxJQUFJMUIsd0RBQVUsQ0FBQztRQUFBLElBQUF5SSxzQkFBQTtRQUFBLFFBQUFBLHNCQUFBLEdBQU0xSSxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDMkYsbUJBQW1CLGNBQUE4QixzQkFBQSx1QkFBckNBLHNCQUFBLENBQXVDQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVILFFBQVEsQ0FBQztNQUFBLEVBQUMsQ0FBQztJQUM3SDtFQUFDO0lBQUF6SCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRK0YsZ0JBQWdCQSxDQUFBLEVBQVM7TUFDL0IsSUFBSSxDQUFDRSxJQUFJLENBQUNqRyxLQUFLLEdBQUcsSUFBSSxDQUFDa0gsZ0JBQWdCLENBQUMsQ0FBQztNQUN6QyxJQUFJLENBQUNoQixjQUFjLENBQUNsRyxLQUFLLEdBQUcsSUFBSSxDQUFDMkcsZ0JBQWdCLENBQUMsQ0FBQztNQUNuRCxJQUFJLENBQUNSLDJCQUEyQixDQUFDbkcsS0FBSyxHQUFHLElBQUksQ0FBQ29HLDZCQUE2QixDQUFDLENBQUM7SUFDL0U7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RFSDtBQUNBO0FBQ0E7O0FBRWlEO0FBQ0Y7QUFDTjtBQUVaO0FBQ3VCO0FBRTdDLElBQU00QixtQkFBbUI7RUFPOUIsU0FBQUEsb0JBQVlDLFlBQW9CLEVBQUU7SUFBQTNJLDJJQUFBLE9BQUEwSSxtQkFBQTtJQUFBekksMklBQUEsa0JBTkV3SSw2REFBYSxDQUFDRyxTQUFTLENBQUMscUJBQXFCLENBQUM7SUFBQTNJLDJJQUFBLHlCQUNoRHVJLGdEQUFHLENBQUNLLGNBQWM7SUFBQTVJLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBLDJCQUd6QixLQUFLO0lBRzlCLElBQUksQ0FBQzZJLFVBQVUsR0FBRzVJLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDNEksYUFBYSxHQUFHSixZQUFZO0VBQ25DO0VBQUMsT0FBQXBJLHdJQUFBLENBQUFtSSxtQkFBQTtJQUFBbEksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXNJLE9BQU9BLENBQUNDLFFBQWdCLEVBQVE7TUFDOUIsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ2IsNERBQVcsQ0FBQ2MsY0FBYyxFQUFFRixRQUFRLENBQUM7SUFDL0Q7RUFBQztJQUFBekksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTBJLElBQUlBLENBQUEsRUFBUztNQUNYLElBQUksQ0FBQ0Ysa0JBQWtCLENBQUNiLDREQUFXLENBQUNnQixXQUFXLENBQUM7SUFDbEQ7RUFBQztJQUFBN0ksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUXdJLGtCQUFrQkEsQ0FBQ0ksVUFBdUIsRUFBRUwsUUFBaUIsRUFBUTtNQUMzRSxJQUFJLElBQUksQ0FBQ00sZ0JBQWdCLEVBQUU7UUFDekI7TUFDRjtNQUVBLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUcsSUFBSTtNQUU1QixJQUFNcEosR0FBRyxHQUFHRCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO01BQ3RCLElBQU1xSixTQUFTLEdBQUdySixHQUFHLEdBQUcsSUFBSSxDQUFDMkksVUFBVTtNQUN2QyxJQUFNVyxVQUFVLEdBQUcsSUFBSW5CLDJEQUFVLENBQUNnQixVQUFVLENBQUMsQ0FBQ0ksT0FBTyxDQUFDLENBQUM7TUFFdkQsSUFBSSxDQUFDYixjQUFjLENBQUNjLElBQUksQ0FBQztRQUN2QkwsVUFBVSxFQUFWQSxVQUFVO1FBQ1ZNLE9BQU8sRUFBRSxDQUFDekosR0FBRyxHQUFHLElBQUksQ0FBQzRJLGFBQWEsSUFBSSxJQUFJO1FBQzFDckksS0FBSyxFQUFFO1VBQUNtSixNQUFNLEVBQUVMO1FBQVMsQ0FBQztRQUMxQlAsUUFBUSxFQUFSQTtNQUNGLENBQUMsQ0FBQztNQUVGLElBQUksQ0FBQ2EsT0FBTyxDQUFDQyxJQUFJLENBQ2Ysc0NBQXNDLEVBQ3RDLElBQUl4QixzREFBUyxDQUFDcEksR0FBRyxHQUFHLElBQUksQ0FBQzRJLGFBQWEsQ0FBQyxDQUFDaUIsV0FBVyxDQUFDLENBQUMsRUFDckRmLFFBQVEsRUFDUlEsVUFBVSxFQUNWLElBQUlsQixzREFBUyxDQUFDaUIsU0FBUyxDQUFDLENBQUNRLFdBQVcsQ0FBQyxDQUN2QyxDQUFDO0lBQ0g7RUFBQztBQUFBLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4REg7QUFDQTtBQUNBOztBQUVvRDtBQUVoQjtBQUdwQyxJQUFNRSxtQkFBbUIsR0FBRyxTQUFTO0FBQUMsSUFFakJDLGNBQWM7RUFBQSxTQUFBQSxlQUFBO0lBQUFuSywySUFBQSxPQUFBbUssY0FBQTtFQUFBO0VBQUEsT0FBQTVKLHdJQUFBLENBQUE0SixjQUFBO0lBQUEzSixHQUFBO0lBQUFFLEtBQUEsRUFHakMsU0FBTzBKLFVBQVVBLENBQUNDLEtBQXVCLEVBQWE7TUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQ0MsdUJBQXVCLENBQUNELEtBQUssQ0FBQyxFQUFFO1FBQ3hDRixjQUFjLENBQUNMLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHlCQUF5QixFQUFFRixLQUFLLENBQUM7UUFFOUQsT0FBTyxJQUFJSixrREFBUyxDQUFDLElBQUksQ0FBQztNQUM1QjtNQUVBLElBQUk7UUFDRixJQUFNTyxZQUFZLEdBQUdDLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxNQUFNLENBQUNSLG1CQUFtQixDQUFDUyxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFNQyxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDTixZQUFZLENBQUM7UUFFMUNJLFNBQVMsQ0FBQ1AsS0FBSyxHQUFHUSxJQUFJLENBQUNDLEtBQUssQ0FBQ0YsU0FBUyxDQUFDUCxLQUFLLENBQUM7UUFFN0MsT0FBTyxJQUFJSixrREFBUyxDQUFDVyxTQUFTLENBQUM7TUFDakMsQ0FBQyxDQUFDLE9BQU9HLENBQUMsRUFBRTtRQUNWWixjQUFjLENBQUNMLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDBCQUEwQixFQUFFUSxDQUFDLENBQUM7UUFFM0QsT0FBTyxJQUFJZCxrREFBUyxDQUFDLElBQUksQ0FBQztNQUM1QjtJQUNGO0VBQUM7SUFBQXpKLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU80Six1QkFBdUJBLENBQUNELEtBQXVCLEVBQVc7TUFDL0QsT0FBTyxDQUFDLENBQUNBLEtBQUssSUFBSUEsS0FBSyxDQUFDVyxVQUFVLENBQUNkLG1CQUFtQixDQUFDO0lBQ3pEO0VBQUM7QUFBQTtBQUFBakssMklBQUEsQ0ExQmtCa0ssY0FBYyxhQUNDMUIsNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWjdFO0FBQ0E7QUFDQTs7QUFFcUQ7QUFBQSxJQVloQ3FCLFNBQVM7RUFJNUIsU0FBQUEsVUFBWVcsU0FBNEIsRUFBRTtJQUFBLElBQUFLLGdCQUFBLEVBQUFDLGlCQUFBO0lBQUFsTCwySUFBQSxPQUFBaUssU0FBQTtJQUFBaEssMklBQUE7SUFBQUEsMklBQUE7SUFDeEMsSUFBSSxDQUFDa0wsY0FBYyxHQUFHLENBQUFQLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFUSxhQUFhLEtBQUksRUFBRTtJQUNwRCxJQUFJLENBQUNDLE1BQU0sR0FBRztNQUNaQyxHQUFHLEVBQUVWLFNBQVMsYUFBVEEsU0FBUyxnQkFBQUssZ0JBQUEsR0FBVEwsU0FBUyxDQUFFUCxLQUFLLGNBQUFZLGdCQUFBLGVBQWhCQSxnQkFBQSxDQUFrQkssR0FBRyxHQUFHLElBQUk3TCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDb0YsR0FBRyxDQUFDOEUsU0FBUyxDQUFDUCxLQUFLLENBQUNpQixHQUFHLENBQUMsR0FBRyxJQUFJO01BQ2xGQyxZQUFZLEVBQUUsQ0FBQVgsU0FBUyxhQUFUQSxTQUFTLHdCQUFBTSxpQkFBQSxHQUFUTixTQUFTLENBQUVQLEtBQUssY0FBQWEsaUJBQUEsdUJBQWhCQSxpQkFBQSxDQUFrQkssWUFBWSxLQUFJO0lBQ2xELENBQUM7RUFDSDtFQUFDLE9BQUFoTCx3SUFBQSxDQUFBMEosU0FBQTtJQUFBekosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQjtNQUNwQixPQUFPLElBQUksQ0FBQzRLLE1BQU0sQ0FBQ0MsR0FBRztJQUN4QjtFQUFDO0lBQUE5SyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZCO01BQzNCLE9BQU8sSUFBSSxDQUFDNEssTUFBTSxDQUFDRSxZQUFZO0lBQ2pDO0VBQUM7SUFBQS9LLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0I7TUFDcEIsT0FBTyxJQUFJLENBQUMwSyxjQUFjO0lBQzVCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdENIO0FBQ0E7QUFDQTtBQUZBLElBY3FCSyxhQUFhO0VBQUEsU0FBQUEsY0FBQTtJQUFBeEwsMklBQUEsT0FBQXdMLGFBQUE7RUFBQTtFQUFBLE9BQUFqTCx3SUFBQSxDQUFBaUwsYUFBQTtJQUFBaEwsR0FBQTtJQUFBQyxHQUFBLEVBTWhDLFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBTyxJQUFJLENBQUNnTCxvQkFBb0I7SUFDbEM7RUFBQztJQUFBakwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLElBQUksQ0FBQ2lMLFNBQVM7SUFDdkI7RUFBQztJQUFBbEwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE2QztNQUMzQyxPQUFPLElBQUksQ0FBQ2tMLFlBQVk7SUFDMUI7RUFBQztJQUFBbkwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPLElBQUksQ0FBQ21MLGFBQWE7SUFDM0I7RUFBQztJQUFBcEwsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT21MLGFBQWFBLENBQUEsRUFBUztNQUMzQixJQUFJO1FBQ0YsSUFBTUMsUUFBUSxHQUFHQyxzRkFBWTtRQUU3QixJQUFJLENBQUNOLG9CQUFvQixHQUFHLHFCQUFxQixJQUFJSyxRQUFRLEdBQUdBLFFBQVEsQ0FBQ0UsbUJBQW1CLEdBQUcsSUFBSTtRQUNuRyxJQUFJLENBQUNOLFNBQVMsR0FBRyxVQUFVLElBQUlJLFFBQVEsR0FBR0EsUUFBUSxDQUFDRyxRQUFRLEdBQUcsS0FBSztRQUNuRSxJQUFJLENBQUNOLFlBQVksR0FBRyxhQUFhLElBQUlHLFFBQVEsR0FBR0EsUUFBUSxDQUFDSSxXQUFXLEdBQUcsS0FBSztRQUM1RSxJQUFJLENBQUNOLGFBQWEsR0FBRyxjQUFjLElBQUlFLFFBQVEsR0FBR0EsUUFBUSxDQUFDSyxZQUFZLEdBQUcsS0FBSztNQUNqRixDQUFDLENBQUMsT0FBT3BCLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQ1Usb0JBQW9CLEdBQUcsSUFBSTtRQUNoQyxJQUFJLENBQUNDLFNBQVMsR0FBRyxLQUFLO1FBQ3RCLElBQUksQ0FBQ0MsWUFBWSxHQUFHLEtBQUs7UUFDekIsSUFBSSxDQUFDQyxhQUFhLEdBQUcsS0FBSztNQUM1QjtJQUNGO0VBQUM7QUFBQTtBQUFBM0wsMklBQUEsQ0FwQ2tCdUwsYUFBYTtBQUFBdkwsMklBQUEsQ0FBYnVMLGFBQWE7QUFBQXZMLDJJQUFBLENBQWJ1TCxhQUFhO0FBQUF2TCwySUFBQSxDQUFidUwsYUFBYTtBQUFBO0FBdUNsQ0EsYUFBYSxDQUFDSyxhQUFhLENBQUMsQ0FBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckQ3QjtBQUNBO0FBQ0E7O0FBRXFEO0FBQ0E7QUFBQSxJQUVoQzdHLGlCQUFpQjtFQUFBLFNBQUFBLGtCQUFBO0lBQUFoRiwySUFBQSxPQUFBZ0YsaUJBQUE7RUFBQTtFQUFBLE9BQUF6RSx3SUFBQSxDQUFBeUUsaUJBQUE7SUFBQXhFLEdBQUE7SUFBQUMsR0FBQSxFQUNwQyxTQUFBQSxJQUFBLEVBQTBDO01BQ3hDO01BQ0EsT0FBT2MsNERBQWUsQ0FBQzZLLFVBQVUsSUFDL0I3Syw0REFBZSxDQUFDOEssVUFBVSxJQUMxQjlLLDREQUFlLENBQUMrSyxVQUFVLElBQzFCL0ssNERBQWUsQ0FBQ2dMLFVBQVU7SUFDOUI7RUFBQztJQUFBL0wsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPdUUsaUJBQWlCLENBQUN3SCxxQkFBcUI7SUFDaEQ7RUFBQztJQUFBaE0sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQztNQUNBLE9BQU9jLDREQUFlLENBQUNrTCxVQUFVLElBQy9CbEwsNERBQWUsQ0FBQ21MLFVBQVUsSUFDMUJuTCw0REFBZSxDQUFDb0wsVUFBVSxJQUMxQnBMLDREQUFlLENBQUNxTCxVQUFVO0lBQzlCO0VBQUM7SUFBQXBNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBT2MsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxRQUFRLElBQUl0TCw0REFBZSxDQUFDdUwsbUJBQW1CLElBQUksRUFBRTtJQUM5RjtFQUFDO0lBQUF0TSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU9jLDREQUFlLENBQUNzTCxXQUFXLEtBQUssUUFBUSxJQUFJdEwsNERBQWUsQ0FBQ3VMLG1CQUFtQixJQUFJLEVBQUUsSUFDMUZ2TCw0REFBZSxDQUFDc0wsV0FBVyxLQUFLLFNBQVMsSUFBSXRMLDREQUFlLENBQUN1TCxtQkFBbUIsSUFBSSxFQUFFO0lBQzFGO0VBQUM7SUFBQXRNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0M7TUFDcEMsT0FBT2MsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxRQUFRLElBQUl0TCw0REFBZSxDQUFDdUwsbUJBQW1CLElBQUksRUFBRSxJQUMxRnZMLDREQUFlLENBQUNzTCxXQUFXLEtBQUssU0FBUyxJQUFJdEwsNERBQWUsQ0FBQ3VMLG1CQUFtQixJQUFJLEVBQUU7SUFDMUY7RUFBQztJQUFBdE0sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxRDtNQUNuRCxPQUFPYyw0REFBZSxDQUFDc0wsV0FBVyxLQUFLLFFBQVEsSUFBSXRMLDREQUFlLENBQUN1TCxtQkFBbUIsSUFBSSxFQUFFO0lBQzlGO0VBQUM7SUFBQXRNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0Q7TUFDbEQsT0FBT2MsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxTQUFTLElBQUl0TCw0REFBZSxDQUFDdUwsbUJBQW1CLElBQUksRUFBRTtJQUMvRjtFQUFDO0lBQUF0TSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXlDO01BQ3ZDLE9BQU9jLDREQUFlLENBQUNzTCxXQUFXLEtBQUssUUFBUSxJQUM3Q3RMLDREQUFlLENBQUNzTCxXQUFXLEtBQUssZ0JBQWdCO0lBQ3BEO0VBQUM7SUFBQXJNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBT2MsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxJQUFJO0lBQzdDO0VBQUM7SUFBQXJNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBOEQ7TUFBQSxJQUFBc00sa0JBQUE7TUFDNUQsT0FBT3hMLDREQUFlLENBQUNzTCxXQUFXLEtBQUssUUFBUSxJQUFJLFNBQUFFLGtCQUFBLEdBQU90TixnRUFBVyxDQUFDaUIsS0FBSyxjQUFBcU0sa0JBQUEsdUJBQWpCQSxrQkFBQSxDQUFtQm5ILHFCQUFxQixNQUFLLFVBQVU7SUFDbkg7RUFBQztJQUFBcEYsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnRDtNQUM5QyxPQUFPYyw0REFBZSxDQUFDc0wsV0FBVyxLQUFLLFFBQVEsSUFBSXRMLDREQUFlLENBQUN1TCxtQkFBbUIsSUFBSSxFQUFFLElBQzFGdkwsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxTQUFTLElBQUl0TCw0REFBZSxDQUFDdUwsbUJBQW1CLElBQUksRUFBRSxJQUN0RnZMLDREQUFlLENBQUNzTCxXQUFXLEtBQUssUUFBUTtJQUM1QztFQUFDO0lBQUFyTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStCO01BQzdCLE9BQU9jLDREQUFlLENBQUNhLFFBQVEsQ0FBQyxDQUFDO0lBQ25DO0VBQUM7SUFBQTVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBTyxFQUFFLE9BQU91TSx5QkFBeUIsS0FBSyxXQUFXLElBQ3ZELE9BQU9DLHlCQUF5QixLQUFLLFdBQVcsQ0FBQztJQUNyRDtFQUFDO0lBQUF6TSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBEO01BQ3hELE9BQU8sT0FBT3lNLGNBQWMsS0FBSyxXQUFXLElBQUksT0FBT0EsY0FBYyxDQUFDQyxTQUFTLENBQUNDLG9CQUFvQixLQUFLLFdBQVc7SUFDdEg7RUFBQztJQUFBNU0sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RDtNQUNyRCxPQUFPLE9BQU80TSxxQkFBcUIsS0FBSyxXQUFXO0lBQ3JEO0VBQUM7SUFBQTdNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkQ7TUFBQSxJQUFBNk0sbUJBQUE7TUFDekQsT0FBTyxTQUFBQSxtQkFBQSxHQUFPN04sZ0VBQVcsQ0FBQ2lCLEtBQUssY0FBQTRNLG1CQUFBLHVCQUFqQkEsbUJBQUEsQ0FBbUJDLGdCQUFnQixDQUFDSixTQUFTLENBQUNLLHlCQUF5QixNQUFLLFdBQVc7SUFDdkc7RUFBQztJQUFBaE4sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUErRDtNQUM3RCxPQUFPdUUsaUJBQWlCLENBQUN5SSxvQ0FBb0MsS0FDdkR6SSxpQkFBaUIsQ0FBQzBJLG1DQUFtQyxJQUFJMUksaUJBQWlCLENBQUMySSxnQ0FBZ0MsQ0FBQztJQUNwSDtFQUFDO0lBQUFuTixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW9EO01BQ2xELE9BQU9jLDREQUFlLENBQUNzTCxXQUFXLEtBQUssU0FBUyxJQUFJdEwsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxRQUFRO0lBQzlGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakdIO0FBQ0E7QUFDQTtBQUZBLElBWXFCZSxVQUFVO0VBQUEsU0FBQUEsV0FBQTtJQUFBNU4sMklBQUEsT0FBQTROLFVBQUE7RUFBQTtFQUFBLE9BQUFyTix3SUFBQSxDQUFBcU4sVUFBQTtJQUFBcE4sR0FBQTtJQUFBQyxHQUFBLEVBRzdCLFNBQUFBLElBQUEsRUFBc0Q7TUFDcEQsT0FBTyxJQUFJLENBQUNvTixvQkFBb0I7SUFDbEM7RUFBQztJQUFBck4sR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT29OLGVBQWVBLENBQUEsRUFBUztNQUM3QixJQUFJO1FBQ0YsSUFBTUMsVUFBVSxHQUFHQywyQ0FBYztRQUVqQyxJQUFJLENBQUNILG9CQUFvQixHQUFHLFdBQVcsSUFBSUUsVUFBVSxHQUFHQSxVQUFVLENBQUNFLFNBQVMsR0FBRztVQUFDQyxVQUFVLEVBQUU7UUFBRSxDQUFDO01BQ2pHLENBQUMsQ0FBQyxPQUFPbkQsQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDOEMsb0JBQW9CLEdBQUc7VUFBQ0ssVUFBVSxFQUFFO1FBQUUsQ0FBQztNQUM5QztJQUNGO0VBQUM7QUFBQTtBQUFBak8sMklBQUEsQ0Fma0IyTixVQUFVO0FBQUE7QUFrQi9CQSxVQUFVLENBQUNFLGVBQWUsQ0FBQyxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUI1QjtBQUNBO0FBQ0E7O0FBVW9DO0FBQ2dCO0FBRTdDLElBQU1yTyxXQUFXO0VBUXRCLFNBQUFBLFlBQVkwTyxtQkFBeUMsRUFBRTtJQUFBbk8sMklBQUEsT0FBQVAsV0FBQTtJQUFBUSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUNyRCxJQUFJLENBQUNtTyxTQUFTLEdBQUdELG1CQUFtQixDQUFDRSxRQUFRO0lBQzdDLElBQUksQ0FBQ0MsU0FBUyxHQUFHSCxtQkFBbUIsQ0FBQ0ksUUFBUTtJQUM3QyxJQUFJLENBQUMxSyxVQUFVLEdBQUdzSyxtQkFBbUIsQ0FBQzVMLFNBQVM7SUFDL0MsSUFBSSxDQUFDaU0sT0FBTyxHQUFHTCxtQkFBbUIsQ0FBQ00sTUFBTTtFQUMzQztFQUFDLE9BQUFsTyx3SUFBQSxDQUFBZCxXQUFBO0lBQUFlLEdBQUE7SUFBQUMsR0FBQSxFQW1CRCxTQUFBQSxJQUFBLEVBQWdDO01BQzlCLE9BQU8sSUFBSSxDQUFDK04sT0FBTyxDQUFDRSxRQUFRO0lBQzlCO0VBQUM7SUFBQWxPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0Q7TUFDOUMsT0FBTyxJQUFJLENBQUMrTixPQUFPLENBQUNqQixnQkFBZ0I7SUFDdEM7RUFBQztJQUFBL00sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUNwQyxPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ0csV0FBVztJQUNqQztFQUFDO0lBQUFuTyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdEO01BQzlDLE9BQU8sSUFBSSxDQUFDK04sT0FBTyxDQUFDSSxnQkFBZ0I7SUFDdEM7RUFBQztJQUFBcE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUNwQyxPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ0ssV0FBVztJQUNqQztFQUFDO0lBQUFyTyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWtEO01BQ2hELE9BQU8sSUFBSSxDQUFDK04sT0FBTyxDQUFDTSxpQkFBaUI7SUFDdkM7RUFBQztJQUFBdE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEwRDtNQUN4RCxPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ08scUJBQXFCO0lBQzNDO0VBQUM7SUFBQXZPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBOEM7TUFDNUMsT0FBTyxJQUFJLENBQUMrTixPQUFPLENBQUNRLGVBQWU7SUFDckM7RUFBQztJQUFBeE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQjtNQUNwQixPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQzFJLEdBQUc7SUFDekI7RUFBQztJQUFBdEYsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ1MsZUFBZTtJQUNyQztFQUFDO0lBQUF6TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNJO01BQ3BJLE9BQU8sSUFBSSxDQUFDMk4sU0FBUyxDQUFDbEcsZ0JBQWdCLENBQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDMkksU0FBUyxDQUFDO0lBQzdEO0VBQUM7SUFBQTVOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0k7TUFDbEksT0FBTyxJQUFJLENBQUMrTixPQUFPLENBQUN0RyxnQkFBZ0IsQ0FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMrSSxPQUFPLENBQUM7SUFDekQ7RUFBQztJQUFBaE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RDtNQUNyRCxPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ1UsYUFBYSxDQUFDekosSUFBSSxDQUFDLElBQUksQ0FBQytJLE9BQU8sQ0FBQztJQUN0RDtFQUFDO0lBQUFoTyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNEO01BQ3BELE9BQU8sSUFBSSxDQUFDK04sT0FBTyxDQUFDVyxZQUFZLENBQUMxSixJQUFJLENBQUMsSUFBSSxDQUFDK0ksT0FBTyxDQUFDO0lBQ3JEO0VBQUM7SUFBQWhPLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUY7TUFDakYsT0FBTyxJQUFJLENBQUMyTixTQUFTLENBQUNnQixhQUFhLENBQUMzSixJQUFJLENBQUMsSUFBSSxDQUFDMkksU0FBUyxDQUFDO0lBQzFEO0VBQUM7SUFBQTVOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0M7TUFDcEMsT0FBTyxJQUFJLENBQUMyTixTQUFTLENBQUNpQixRQUFRLENBQUM1SixJQUFJLENBQUMsSUFBSSxDQUFDMkksU0FBUyxDQUFDO0lBQ3JEO0VBQUM7SUFBQTVOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0M7TUFDOUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDMk4sU0FBUyxDQUFDa0IsTUFBTTtJQUNoQztFQUFDO0lBQUE5TyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBGO01BQ3hGLE9BQU8sSUFBSSxDQUFDMk4sU0FBUyxDQUFDbUIsYUFBYSxDQUFDOUosSUFBSSxDQUFDLElBQUksQ0FBQzJJLFNBQVMsQ0FBQztJQUMxRDtFQUFDO0lBQUE1TixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNGO01BQ3BGLE9BQU8sSUFBSSxDQUFDK04sT0FBTyxDQUFDZ0IsS0FBSyxDQUFDL0osSUFBSSxDQUFDLElBQUksQ0FBQytJLE9BQU8sQ0FBQztJQUM5QztFQUFDO0lBQUFoTyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStCO01BQzdCLE9BQU8sSUFBSSxDQUFDNk4sU0FBUyxDQUFDbUIsUUFBUTtJQUNoQztFQUFDO0lBQUFqUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZCO01BQzNCLE9BQU8sSUFBSSxDQUFDNk4sU0FBUyxDQUFDb0IsTUFBTTtJQUM5QjtFQUFDO0lBQUFsUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJEO01BQ3pELE9BQU8sSUFBSSxDQUFDb0QsVUFBVSxDQUFDOEwsVUFBVTtJQUNuQztFQUFDO0lBQUFuUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU8sSUFBSSxDQUFDb0QsVUFBVSxDQUFDK0wsTUFBTTtJQUMvQjtFQUFDO0lBQUFwUCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDK04sT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDQSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7SUFDL0U7RUFBQztJQUFBaE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRDtNQUNwRCxPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ2pKLGNBQWMsQ0FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQytJLE9BQU8sQ0FBQztJQUN2RDtFQUFDO0lBQUFoTyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXlJO01BQ3ZJLE9BQU8sSUFBSSxDQUFDMk4sU0FBUyxDQUFDaEcsbUJBQW1CLENBQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDMkksU0FBUyxDQUFDO0lBQ2hFO0VBQUM7SUFBQTVOLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUk7TUFDckksT0FBTyxJQUFJLENBQUMrTixPQUFPLENBQUNwRyxtQkFBbUIsQ0FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMrSSxPQUFPLENBQUM7SUFDNUQ7RUFBQztJQUFBaE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3RjtNQUN0RixPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQ3FCLFdBQVcsQ0FBQ3BLLElBQUksQ0FBQyxJQUFJLENBQUMrSSxPQUFPLENBQUM7SUFDcEQ7RUFBQztJQUFBaE8sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RjtNQUNyRixPQUFPLElBQUksQ0FBQytOLE9BQU8sQ0FBQzlJLFVBQVUsQ0FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQytJLE9BQU8sQ0FBQztJQUNuRDtFQUFDO0lBQUFoTyxHQUFBO0lBQUFFLEtBQUEsRUFuSUQsU0FBY29QLFdBQVdBLENBQUMzQixtQkFBeUMsRUFBUTtNQUN6RSxJQUFJLElBQUksQ0FBQzRCLFNBQVMsQ0FBQ3JQLEtBQUssRUFBRTtRQUN4QixNQUFNLElBQUl3RSxLQUFLLENBQUMsc0NBQXNDLENBQUM7TUFDekQ7O01BRUE7TUFDQSxJQUFJLENBQUM2SyxTQUFTLENBQUNyUCxLQUFLLEdBQUcsSUFBSWpCLFdBQVcsQ0FBQzBPLG1CQUFtQixDQUFDO0lBQzdEO0VBQUM7SUFBQTNOLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWNzUCxXQUFXQSxDQUFBLEVBQXlDO01BQ2hFLE9BQU92USxXQUFXLENBQUN3USxpQkFBaUI7SUFDdEM7RUFBQztJQUFBelAsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBY3dQLFNBQVNBLENBQUNDLFFBQThDLEVBQWU7TUFDbkYsT0FBTzFRLFdBQVcsQ0FBQ3dRLGlCQUFpQixDQUFDQyxTQUFTLENBQUNDLFFBQVEsQ0FBQztJQUMxRDtFQUFDO0FBQUE7QUFxSEZDLFlBQUEsR0FuSlkzUSxXQUFXO0FBQUFRLDJJQUFBLENBQVhSLFdBQVcsZUFDYyxJQUFJRyxtREFBTyxDQUFzQixJQUFJLENBQUM7QUFBQUssMklBQUEsQ0FEL0RSLFdBQVcsdUJBRXNCLElBQUlJLDJEQUFlLENBQXNCSixZQUFXLENBQUNzUSxTQUFTLENBQUM7QUFtSjdHLCtEQUFldFEsV0FBVyxDQUFDdVEsV0FBVyxDQUFDLENBQUMsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwS3hDO0FBQ0E7QUFDQTtBQUZBLElBTXFCdFEsVUFBVTtFQUk3QixTQUFBQSxXQUFZMlEsVUFBc0IsRUFBRTtJQUFBclEsMklBQUEsT0FBQU4sVUFBQTtJQUFBTywySUFBQTtJQUFBQSwySUFBQTtJQUNsQyxJQUFJLENBQUNxUSxTQUFTLEdBQUcsS0FBSztJQUN0QixJQUFJLENBQUNDLFdBQVcsR0FBR0YsVUFBVTtFQUMvQjtFQUFDLE9BQUE5UCx3SUFBQSxDQUFBYixVQUFBO0lBQUFjLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksSUFBSSxDQUFDeVAsU0FBUyxFQUFFO1FBQ2xCO01BQ0Y7TUFFQSxJQUFJLENBQUNBLFNBQVMsR0FBRyxJQUFJO01BRXJCLE9BQU8sSUFBSSxDQUFDQyxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEM7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2Qkg7QUFDQTtBQUNBO0FBRkEsSUFNcUI3USxjQUFjO0VBQUEsU0FBQUEsZUFBQTtJQUFBSywySUFBQSxPQUFBTCxjQUFBO0lBQUFNLDJJQUFBLGdCQUNPLEVBQUU7RUFBQTtFQUFBLE9BQUFNLHdJQUFBLENBQUFaLGNBQUE7SUFBQWEsR0FBQTtJQUFBRSxLQUFBLEVBRTFDLFNBQUFVLEdBQUdBLENBQUNpUCxVQUF1QixFQUFRO01BQ2pDLElBQUksQ0FBQ0ksS0FBSyxDQUFDOUcsSUFBSSxDQUFDMEcsVUFBVSxDQUFDO0lBQzdCO0VBQUM7SUFBQTdQLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQzRQLEtBQUssQ0FBQ0MsT0FBTyxDQUFDLFVBQUFMLFVBQVU7UUFBQSxPQUFJQSxVQUFVLENBQUN4UCxPQUFPLENBQUMsQ0FBQztNQUFBLEVBQUM7TUFDdEQsSUFBSSxDQUFDNFAsS0FBSyxDQUFDOUYsTUFBTSxHQUFHLENBQUM7SUFDdkI7RUFBQztJQUFBbkssR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWlRLFFBQVFBLENBQUEsRUFBVztNQUNqQixxQ0FBQXJOLE1BQUEsQ0FBcUMsSUFBSSxDQUFDbU4sS0FBSyxDQUFDOUYsTUFBTTtJQUN4RDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFNaUcsd0JBQXdCLEdBQUcsRUFBRTtBQUFDLElBRWZDLE9BQU87RUE0QzFCLFNBQUFBLFFBQUEsRUFBc0I7SUFBQTdRLDJJQUFBLE9BQUE2USxPQUFBO0lBQ3BCLE1BQU0sSUFBSTNMLEtBQUssQ0FBQyx3REFBd0QsQ0FBQztFQUMzRTtFQUFDLE9BQUEzRSx3SUFBQSxDQUFBc1EsT0FBQTtJQUFBclEsR0FBQTtJQUFBRSxLQUFBLEVBN0NELFNBQU9vUSxpQkFBaUJBLENBQUNwUSxLQUFhLEVBQVU7TUFDOUMsSUFBSXFRLHlCQUF5QixHQUFHLENBQUM7TUFDakMsSUFBSUMsTUFBTSxHQUFHdFEsS0FBSztNQUVsQixJQUFJc1EsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNkQSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ1pELHlCQUF5QixFQUFFO01BQzdCO01BRUEsT0FBT0YsT0FBTyxDQUFDSSx3QkFBd0IsQ0FBQ0QsTUFBTSxDQUFDLEdBQUdELHlCQUF5QixJQUFJQyxNQUFNLEtBQUtFLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxNQUFNLENBQUMsR0FBR0gsT0FBTyxDQUFDTyx1QkFBdUIsQ0FBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqSztFQUFDO0lBQUF4USxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlMlEsV0FBV0EsQ0FBQzNRLEtBQWEsRUFBRTRRLFNBQWlCLEVBQVU7TUFDbkUsSUFBTUMsS0FBSyxHQUFHTCxJQUFJLENBQUNNLEdBQUcsQ0FBQyxFQUFFLEVBQUVGLFNBQVMsQ0FBQztNQUVyQyxPQUFPSixJQUFJLENBQUNPLEtBQUssQ0FBQy9RLEtBQUssR0FBRzZRLEtBQUssQ0FBQyxHQUFHQSxLQUFLO0lBQzFDO0VBQUM7SUFBQS9RLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWV1USx3QkFBd0JBLENBQUN2USxLQUFhLEVBQVU7TUFDN0QsSUFBSWdSLG1CQUFtQixHQUFHLENBQUM7TUFDM0IsSUFBSVYsTUFBTSxHQUFHdFEsS0FBSztNQUVsQixPQUFPc1EsTUFBTSxJQUFJLEVBQUUsRUFBRTtRQUNuQkEsTUFBTSxHQUFHQSxNQUFNLEdBQUcsRUFBRTtRQUNwQlUsbUJBQW1CLEVBQUU7TUFDdkI7TUFFQSxPQUFPQSxtQkFBbUI7SUFDNUI7RUFBQztJQUFBbFIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZTBRLHVCQUF1QkEsQ0FBQzFRLEtBQWEsRUFBVTtNQUM1RCxJQUFNaVIsYUFBYSxHQUFHalIsS0FBSztNQUMzQixJQUFJa1IsYUFBYSxHQUFHVixJQUFJLENBQUNDLEtBQUssQ0FBQ3pRLEtBQUssQ0FBQztNQUNyQyxJQUFJbVIsS0FBSyxHQUFHLENBQUM7TUFFYixPQUFPRCxhQUFhLEtBQUtELGFBQWEsSUFBSUUsS0FBSyxHQUFHakIsd0JBQXdCLEVBQUU7UUFDMUVpQixLQUFLLEVBQUU7UUFDUEQsYUFBYSxHQUFHZixPQUFPLENBQUNRLFdBQVcsQ0FBQ00sYUFBYSxFQUFFRSxLQUFLLENBQUM7TUFDM0Q7TUFFQSxPQUFPQSxLQUFLO0lBQ2Q7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqREg7QUFDQTtBQUNBO0FBRkEsSUFJcUJDLE9BQU87RUFhMUIsU0FBQUEsUUFBQSxFQUFzQjtJQUFBOVIsMklBQUEsT0FBQThSLE9BQUE7SUFDcEIsTUFBTSxJQUFJNU0sS0FBSyxDQUFDLHdEQUF3RCxDQUFDO0VBQzNFO0VBQUMsT0FBQTNFLHdJQUFBLENBQUF1UixPQUFBO0lBQUF0UixHQUFBO0lBQUFFLEtBQUEsRUFkRCxTQUFPcVIsTUFBTUEsQ0FBQ3BILE1BQWMsRUFBVTtNQUNwQyxJQUFNcUgsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBQSxFQUFpQjtRQUN2QyxPQUFPZCxJQUFJLENBQUNhLE1BQU0sQ0FBQyxDQUFDLENBQUNwQixRQUFRLENBQUMsRUFBRSxDQUFDLENBQUNuTixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztNQUNwRCxDQUFDO01BRUQsSUFBTXlPLEtBQWEsR0FBR2YsSUFBSSxDQUFDZ0IsSUFBSSxDQUFDdkgsTUFBTSxHQUFHLEVBQUUsQ0FBQztNQUU1QyxPQUFPLElBQUl3SCxLQUFLLENBQUNGLEtBQUssQ0FBQyxDQUFDRyxJQUFJLENBQUNKLGtCQUFrQixDQUFDLENBQUNLLE1BQU0sQ0FBQyxVQUFDQyxNQUFNLEVBQUVDLElBQUksRUFBSztRQUN4RSxPQUFPRCxNQUFNLEdBQUdDLElBQUksQ0FBQyxDQUFDO01BQ3hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQy9PLFNBQVMsQ0FBQyxDQUFDLEVBQUVtSCxNQUFNLENBQUM7SUFDN0I7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7O0FDZkg7QUFDQTtBQUNBOztBQUVPLFNBQVM2SCxpQkFBaUJBLENBQUNDLENBQVEsRUFBUztFQUNqRCxNQUFNLElBQUl2TixLQUFLLHNCQUFBNUIsTUFBQSxDQUFzQm1QLENBQUMsb0NBQWlDLENBQUM7QUFDMUU7QUFFQSwrREFBZUQsaUJBQWlCLEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhDO0FBQ0E7QUFDQTtBQUZBLElBTXFCRSxTQUFTO0VBQUEsU0FBQUEsVUFBQTtJQUFBMVMsMklBQUEsT0FBQTBTLFNBQUE7SUFBQXpTLDJJQUFBLHFCQUNXLEVBQUU7RUFBQTtFQUFBLE9BQUFNLHdJQUFBLENBQUFtUyxTQUFBO0lBQUFsUyxHQUFBO0lBQUFDLEdBQUEsRUFFekMsU0FBQUEsSUFBQSxFQUE4QjtNQUM1QixPQUFPLElBQUksQ0FBQ2tTLFVBQVU7SUFDeEI7RUFBQztJQUFBblMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQVUsR0FBR0EsQ0FBQ3dSLFFBQW1CLEVBQVE7TUFDN0IsSUFBSSxDQUFDRCxVQUFVLENBQUNoSixJQUFJLENBQUNpSixRQUFRLENBQUM7SUFDaEM7RUFBQztJQUFBcFMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW1TLE1BQU1BLENBQUNELFFBQW1CLEVBQVE7TUFDaEMsSUFBSSxDQUFDRCxVQUFVLEdBQUcsSUFBSSxDQUFDQSxVQUFVLENBQUNOLE1BQU0sQ0FBQyxVQUFDUyxLQUFLLEVBQUVDLElBQUksRUFBSztRQUN4RCxJQUFJLEVBQUVBLElBQUksS0FBS0gsUUFBUSxDQUFDLEVBQUU7VUFDeEJFLEtBQUssQ0FBQ25KLElBQUksQ0FBQ29KLElBQUksQ0FBQztRQUNsQjtRQUVBLE9BQU9ELEtBQUs7TUFDZCxDQUFDLEVBQUUsRUFBc0IsQ0FBQztJQUM1QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6Qkg7QUFDQTtBQUNBOztBQUdzQztBQUFBLElBRWpCRyxlQUFlO0VBbUJsQyxTQUFBQSxnQkFBWUMsU0FBdUIsRUFBRTtJQUFBbFQsMklBQUEsT0FBQWlULGVBQUE7SUFBQWhULDJJQUFBO0lBQ25DLElBQUksQ0FBQ2tULFVBQVUsR0FBR0QsU0FBUztFQUM3QjtFQUFDLE9BQUEzUyx3SUFBQSxDQUFBMFMsZUFBQTtJQUFBelMsR0FBQTtJQUFBRSxLQUFBLEVBbEJELFNBQUEwUyxHQUFHQSxDQUFDQyxRQUFzQixFQUFFQyxPQUFlLEVBQUVDLFFBQWdCLEVBQUVDLElBQVUsRUFBUTtNQUMvRSxJQUFJSCxRQUFRLEdBQUcsSUFBSSxDQUFDRixVQUFVLEVBQUU7UUFDOUI7TUFDRjtNQUVBLElBQU1NLFdBQVcsTUFBQW5RLE1BQUEsQ0FBTWtRLElBQUksQ0FBQ0UsV0FBVyxDQUFDLENBQUMsUUFBQXBRLE1BQUEsQ0FBS2lRLFFBQVEsU0FBQWpRLE1BQUEsQ0FBTTBQLGlEQUFZLENBQUNLLFFBQVEsQ0FBQyxRQUFBL1AsTUFBQSxDQUFLZ1EsT0FBTyxDQUFFO01BRWhHLElBQUlELFFBQVEsR0FBR0wsaURBQVksQ0FBQ1csSUFBSSxFQUFFO1FBQ2hDQyxPQUFPLENBQUNSLEdBQUcsQ0FBQ0ssV0FBVyxDQUFDO1FBRXhCO01BQ0Y7TUFFQUcsT0FBTyxDQUFDckosS0FBSyxDQUFDa0osV0FBVyxDQUFDO0lBQzVCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4Qkg7QUFDQTtBQUNBOztBQUVBOztBQUlpRTtBQUUxRCxJQUFLVCxZQUFZLDBCQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7QUFTdkIsSUFJb0JhLE1BQU07RUFrTXpCLFNBQUFBLE9BQVlOLFFBQWdCLEVBQUVPLFNBQW9CLEVBQUVaLFNBQTJCLEVBQUU7SUFBQWxULDJJQUFBLE9BQUE2VCxNQUFBO0lBQUE1VCwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUMvRSxJQUFJLENBQUM4VCxTQUFTLEdBQUdSLFFBQVE7SUFDekIsSUFBSSxDQUFDWixVQUFVLEdBQUdtQixTQUFTO0lBQzNCLElBQUksQ0FBQ1gsVUFBVSxHQUFHRCxTQUFTO0VBQzdCO0VBQUMsT0FBQTNTLHdJQUFBLENBQUFzVCxNQUFBO0lBQUFyVCxHQUFBO0lBQUFDLEdBQUEsRUFqTUQsU0FBQUEsSUFBQSxFQUF1QjtNQUNyQixPQUFPLElBQUksQ0FBQ3NULFNBQVM7SUFDdkI7RUFBQztJQUFBdlQsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyQjtNQUN6QixPQUFPLElBQUksQ0FBQ2tTLFVBQVU7SUFDeEI7RUFBQztJQUFBblMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFrQztNQUNoQyxPQUFPLElBQUksQ0FBQzBTLFVBQVU7SUFDeEI7RUFBQztJQUFBM1MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXNULEtBQUtBLENBQUEsRUFBcUI7TUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQ2IsVUFBVSxDQUFDelMsS0FBSyxJQUFJLElBQUksQ0FBQ3lTLFVBQVUsQ0FBQ3pTLEtBQUssR0FBR3NTLFlBQVksQ0FBQ2lCLEtBQUssRUFBRTtRQUN4RTtNQUNGO01BQUMsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUF4SixNQUFBLEVBSE15SixJQUFJLE9BQUFqQyxLQUFBLENBQUErQixJQUFBLEdBQUFHLElBQUEsTUFBQUEsSUFBQSxHQUFBSCxJQUFBLEVBQUFHLElBQUE7UUFBSkQsSUFBSSxDQUFBQyxJQUFBLElBQUFGLFNBQUEsQ0FBQUUsSUFBQTtNQUFBO01BS1gsSUFBSSxDQUFDakIsR0FBRyxDQUFDSixZQUFZLENBQUNpQixLQUFLLEVBQUVHLElBQUksQ0FBQztJQUNwQztFQUFDO0lBQUE1VCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBNFQsS0FBS0EsQ0FBQSxFQUFxQjtNQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDbkIsVUFBVSxDQUFDelMsS0FBSyxJQUFJLElBQUksQ0FBQ3lTLFVBQVUsQ0FBQ3pTLEtBQUssR0FBR3NTLFlBQVksQ0FBQ3VCLEtBQUssRUFBRTtRQUN4RTtNQUNGO01BQUMsU0FBQUMsS0FBQSxHQUFBTCxTQUFBLENBQUF4SixNQUFBLEVBSE15SixJQUFJLE9BQUFqQyxLQUFBLENBQUFxQyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSkwsSUFBSSxDQUFBSyxLQUFBLElBQUFOLFNBQUEsQ0FBQU0sS0FBQTtNQUFBO01BS1gsSUFBSSxDQUFDckIsR0FBRyxDQUFDSixZQUFZLENBQUN1QixLQUFLLEVBQUVILElBQUksQ0FBQztJQUNwQztFQUFDO0lBQUE1VCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBcUosSUFBSUEsQ0FBQSxFQUFxQjtNQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDb0osVUFBVSxDQUFDelMsS0FBSyxJQUFJLElBQUksQ0FBQ3lTLFVBQVUsQ0FBQ3pTLEtBQUssR0FBR3NTLFlBQVksQ0FBQzBCLElBQUksRUFBRTtRQUN2RTtNQUNGO01BQUMsU0FBQUMsS0FBQSxHQUFBUixTQUFBLENBQUF4SixNQUFBLEVBSEt5SixJQUFJLE9BQUFqQyxLQUFBLENBQUF3QyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSlIsSUFBSSxDQUFBUSxLQUFBLElBQUFULFNBQUEsQ0FBQVMsS0FBQTtNQUFBO01BS1YsSUFBSSxDQUFDeEIsR0FBRyxDQUFDSixZQUFZLENBQUMwQixJQUFJLEVBQUVOLElBQUksQ0FBQztJQUNuQztFQUFDO0lBQUE1VCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbVUsSUFBSUEsQ0FBQSxFQUFxQjtNQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDMUIsVUFBVSxDQUFDelMsS0FBSyxJQUFJLElBQUksQ0FBQ3lTLFVBQVUsQ0FBQ3pTLEtBQUssR0FBR3NTLFlBQVksQ0FBQ1csSUFBSSxFQUFFO1FBQ3ZFO01BQ0Y7TUFBQyxTQUFBbUIsS0FBQSxHQUFBWCxTQUFBLENBQUF4SixNQUFBLEVBSEt5SixJQUFJLE9BQUFqQyxLQUFBLENBQUEyQyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSlgsSUFBSSxDQUFBVyxLQUFBLElBQUFaLFNBQUEsQ0FBQVksS0FBQTtNQUFBO01BS1YsSUFBSSxDQUFDM0IsR0FBRyxDQUFDSixZQUFZLENBQUNXLElBQUksRUFBRVMsSUFBSSxDQUFDO0lBQ25DO0VBQUM7SUFBQTVULEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE2SixLQUFLQSxDQUFBLEVBQXFCO01BQ3hCLElBQUksQ0FBQyxJQUFJLENBQUM0SSxVQUFVLENBQUN6UyxLQUFLLElBQUksSUFBSSxDQUFDeVMsVUFBVSxDQUFDelMsS0FBSyxHQUFHc1MsWUFBWSxDQUFDOU4sS0FBSyxFQUFFO1FBQ3hFO01BQ0Y7TUFBQyxTQUFBOFAsS0FBQSxHQUFBYixTQUFBLENBQUF4SixNQUFBLEVBSE15SixJQUFJLE9BQUFqQyxLQUFBLENBQUE2QyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSmIsSUFBSSxDQUFBYSxLQUFBLElBQUFkLFNBQUEsQ0FBQWMsS0FBQTtNQUFBO01BS1gsSUFBSSxDQUFDN0IsR0FBRyxDQUFDSixZQUFZLENBQUM5TixLQUFLLEVBQUVrUCxJQUFJLENBQUM7SUFDcEM7RUFBQztJQUFBNVQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXdVLEtBQUtBLENBQUEsRUFBcUI7TUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQy9CLFVBQVUsQ0FBQ3pTLEtBQUssSUFBSSxJQUFJLENBQUN5UyxVQUFVLENBQUN6UyxLQUFLLEdBQUdzUyxZQUFZLENBQUNtQyxLQUFLLEVBQUU7UUFDeEU7TUFDRjtNQUFDLFNBQUFDLEtBQUEsR0FBQWpCLFNBQUEsQ0FBQXhKLE1BQUEsRUFITXlKLElBQUksT0FBQWpDLEtBQUEsQ0FBQWlELEtBQUEsR0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKakIsSUFBSSxDQUFBaUIsS0FBQSxJQUFBbEIsU0FBQSxDQUFBa0IsS0FBQTtNQUFBO01BS1gsSUFBSSxDQUFDakMsR0FBRyxDQUFDSixZQUFZLENBQUNtQyxLQUFLLEVBQUVmLElBQUksQ0FBQztJQUNwQztFQUFDO0lBQUE1VCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRMFMsR0FBR0EsQ0FBQ2tDLEtBQWEsRUFBRWxCLElBQVMsRUFBUTtNQUFBLElBQUFyVCxLQUFBO01BQzFDLElBQU15UyxJQUFJLEdBQUcsSUFBSXRULElBQUksQ0FBQyxDQUFDO01BQ3ZCLElBQU1vVCxPQUFPLEdBQUcsSUFBSSxDQUFDaUMsbUJBQW1CLENBQUNuQixJQUFJLENBQUM7TUFFOUMsSUFBSSxDQUFDekIsVUFBVSxDQUFDalMsS0FBSyxDQUFDZ1EsT0FBTyxDQUFDLFVBQUNrQyxRQUFtQixFQUFLO1FBQ3JEQSxRQUFRLENBQUNRLEdBQUcsQ0FBQ2tDLEtBQUssRUFBRWhDLE9BQU8sRUFBRXZTLEtBQUksQ0FBQ3dTLFFBQVEsRUFBRUMsSUFBSSxDQUFDO01BQ25ELENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQWhULEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE2VSxtQkFBbUJBLENBQUNuQixJQUFTLEVBQVU7TUFBQSxJQUFBb0IsTUFBQTtNQUM3QyxJQUFJQyx5QkFBeUIsR0FBR3JCLElBQUksQ0FBQyxDQUFDLENBQUM7TUFDdkMsSUFBSXNCLEtBQUssR0FBRyxDQUFDO01BRWIsT0FBT0QseUJBQXlCLENBQUNwUyxPQUFPLElBQUkrUSxJQUFJLENBQUN6SixNQUFNLEdBQUcsQ0FBQyxJQUFJK0ssS0FBSyxJQUFJLENBQUMsRUFBRTtRQUN6RUEsS0FBSyxHQUFHRCx5QkFBeUIsQ0FBQ3BTLE9BQU8sQ0FBQyxHQUFHLEVBQUVxUyxLQUFLLENBQUM7UUFFckQsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtVQUNiLElBQU0vTixJQUFJLEdBQUc4Tix5QkFBeUIsQ0FBQ2pTLFNBQVMsQ0FBQ2tTLEtBQUssR0FBRyxDQUFDLEVBQUVBLEtBQUssR0FBRyxDQUFDLENBQUM7VUFFdEUsUUFBUS9OLElBQUk7WUFDVixLQUFLLEdBQUc7Y0FDTjtjQUNBOE4seUJBQXlCLEdBQUdBLHlCQUF5QixDQUFDalMsU0FBUyxDQUFDLENBQUMsRUFBRWtTLEtBQUssQ0FBQyxHQUFHRCx5QkFBeUIsQ0FBQ2pTLFNBQVMsQ0FBQ2tTLEtBQUssR0FBRyxDQUFDLENBQUM7Y0FDMUhBLEtBQUssRUFBRTtjQUVQO1lBQ0YsS0FBSyxHQUFHO1lBQ1IsS0FBSyxHQUFHO2NBQ047Y0FDQXRCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR3FCLHlCQUF5QixHQUFHLElBQUksQ0FBQ0UsZUFBZSxDQUN4RCxJQUFJLENBQUNoRixRQUFRLENBQUN5RCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdEJxQix5QkFBeUIsRUFDekJDLEtBQ0YsQ0FBQztjQUNEdEIsSUFBSSxDQUFDd0IsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Y0FFakI7WUFDRixLQUFLLEdBQUc7Y0FDTjtjQUNBeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHcUIseUJBQXlCLEdBQUcsSUFBSSxDQUFDRSxlQUFlLENBQ3hELElBQUksQ0FBQ0UsU0FBUyxDQUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3ZCcUIseUJBQXlCLEVBQ3pCQyxLQUNGLENBQUM7Y0FFRHRCLElBQUksQ0FBQ3dCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2NBRWpCO1lBQ0Y7Y0FDRSxPQUFPeEIsSUFBSSxDQUFDekQsUUFBUSxDQUFDLENBQUM7VUFDMUI7UUFDRjtNQUNGO01BRUEsSUFBSXlELElBQUksQ0FBQ3pKLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkJ5SixJQUFJLEdBQUdBLElBQUksQ0FBQy9CLE1BQU0sQ0FBQyxVQUFDeUQsV0FBbUIsRUFBRUMsWUFBNEIsRUFBRUwsS0FBYSxFQUFFTSxLQUFlLEVBQUs7VUFDeEcsSUFBSU4sS0FBSyxHQUFHLENBQUMsS0FBS00sS0FBSyxDQUFDckwsTUFBTSxJQUFJb0wsWUFBWSxZQUFZN1EsS0FBSyxFQUFFO1lBQy9ELElBQUlGLHNFQUFpQixDQUFDaVIsNkJBQTZCLEVBQUU7Y0FDbkQsT0FBT0gsV0FBVyxHQUFHLElBQUksR0FBR04sTUFBSSxDQUFDN0UsUUFBUSxDQUFDb0YsWUFBWSxDQUFDRyxLQUFLLENBQUM7WUFDL0Q7WUFFQSxPQUFPSixXQUFXLEdBQUcsSUFBSSxHQUFHTixNQUFJLENBQUM3RSxRQUFRLENBQUNvRixZQUFZLENBQUN6QyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUdrQyxNQUFJLENBQUM3RSxRQUFRLENBQUNvRixZQUFZLENBQUNHLEtBQUssQ0FBQztVQUM1RztVQUVBLE9BQU9KLFdBQVcsT0FBQXhTLE1BQUEsQ0FBT2tTLE1BQUksQ0FBQzdFLFFBQVEsQ0FBQ29GLFlBQVksQ0FBQyxNQUFHO1FBQ3pELENBQUMsQ0FBQztNQUNKO01BRUEsT0FBTzNCLElBQUksQ0FBQ3pELFFBQVEsQ0FBQyxDQUFDO0lBQ3hCO0VBQUM7SUFBQW5RLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFtVixTQUFTQSxDQUFDTSxHQUFRLEVBQVU7TUFDbEMsSUFBTUMsS0FBZSxHQUFHLEVBQUU7TUFFMUIsSUFBSTtRQUNGLE9BQU92TCxJQUFJLENBQUNnTCxTQUFTLENBQ25CTSxHQUFHLFlBQVlqUixLQUFLLEdBQUcsSUFBSSxDQUFDeUwsUUFBUSxDQUFDd0YsR0FBRyxDQUFDLEdBQUdBLEdBQUcsRUFDL0MsVUFBQ0UsQ0FBQyxFQUFFM1YsS0FBSyxFQUFLO1VBQ1osSUFBSSxDQUFDLENBQUNBLEtBQUssSUFBSUEsS0FBSyxZQUFZNFYsTUFBTSxFQUFFO1lBQ3RDLElBQUlGLEtBQUssQ0FBQ3JTLFFBQVEsQ0FBQ3JELEtBQUssQ0FBQyxFQUFFO2NBQ3pCLE9BQU8sYUFBYTtZQUN0QjtZQUVBMFYsS0FBSyxDQUFDek0sSUFBSSxDQUFDakosS0FBSyxDQUFDO1VBQ25CO1VBRUEsT0FBT0EsS0FBSztRQUNkLENBQUMsRUFDRCxDQUNGLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT3FLLENBQUMsRUFBRTtRQUNWLE9BQU8saUNBQWlDO01BQzFDO0lBQ0Y7RUFBQztJQUFBdkssR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUWlWLGVBQWVBLENBQUNZLFFBQWEsRUFBRWQseUJBQWlDLEVBQUVDLEtBQWEsRUFBVTtNQUMvRixPQUFPRCx5QkFBeUIsQ0FBQ2pTLFNBQVMsQ0FBQyxDQUFDLEVBQUVrUyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMvRSxRQUFRLENBQUM0RixRQUFRLENBQUMsR0FBR2QseUJBQXlCLENBQUNqUyxTQUFTLENBQUNrUyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2pJO0VBQUM7SUFBQWxWLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFpUSxRQUFRQSxDQUFDNkYsSUFBUyxFQUFVO01BQ2xDLElBQUksT0FBT0EsSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixPQUFPQSxJQUFJO01BQ2I7TUFFQSxJQUFJLE9BQU9BLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDN0IsT0FBT0EsSUFBSSxHQUFHLE1BQU0sR0FBRyxPQUFPO01BQ2hDO01BRUEsSUFBSSxPQUFPQSxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzVCLE9BQU9BLElBQUksQ0FBQzdGLFFBQVEsQ0FBQyxDQUFDO01BQ3hCO01BRUEsSUFBSThGLFdBQVcsR0FBRyxFQUFFO01BRXBCLElBQUlELElBQUksRUFBRTtRQUNSLElBQUksT0FBT0EsSUFBSSxLQUFLLFVBQVUsRUFBRTtVQUM5QkMsV0FBVyxHQUFHRCxJQUFJLENBQUM3RixRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLE1BQU0sSUFBSTZGLElBQUksWUFBWUYsTUFBTSxFQUFFO1VBQ2pDLElBQUk7WUFDRkcsV0FBVyxHQUFHRCxJQUFJLENBQUM3RixRQUFRLENBQUMsQ0FBQztVQUMvQixDQUFDLENBQUMsT0FBTzVGLENBQUMsRUFBRTtZQUNWMEwsV0FBVyxHQUFHLDZCQUE2QjtVQUM3QztRQUNGO01BQ0Y7TUFFQSxPQUFPQSxXQUFXO0lBQ3BCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2Tkg7QUFDQTtBQUNBOztBQUV5RDtBQUNYO0FBQUEsSUFFekJ0UyxjQUFjO0VBQUEsU0FBQUEsZUFBQTtJQUFBbkUsMklBQUEsT0FBQW1FLGNBQUE7RUFBQTtFQUFBLE9BQUE1RCx3SUFBQSxDQUFBNEQsY0FBQTtJQUFBM0QsR0FBQTtJQUFBQyxHQUFBLEVBQ2pDLFNBQUFBLElBQUEsRUFBK0M7TUFDN0MsT0FBT3VTLHdEQUFZLENBQUN4SCxrRUFBYSxDQUFDUyxRQUFRLENBQUM7SUFDN0M7RUFBQztJQUFBekwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRDtNQUNwRCxPQUFPdVMsd0RBQVksQ0FBQ3hILGtFQUFhLENBQUNXLFlBQVksQ0FBQztJQUNqRDtFQUFDO0lBQUEzTCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdEO01BQ3RELE9BQU91Uyx3REFBWSxDQUFDMEIsSUFBSTtJQUMxQjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEJIO0FBQ0E7QUFDQTs7QUFHZ0U7QUFDNUI7QUFDYztBQUNGO0FBQ2M7QUFDVztBQUNNO0FBQ2pDO0FBQUEsSUFFekJqTSxhQUFhO0VBNERoQyxTQUFBQSxjQUFBLEVBQXNCO0lBQUF6SSwySUFBQSxPQUFBeUksYUFBQTtJQUNwQixNQUFNLElBQUl2RCxLQUFLLENBQUMsOERBQThELENBQUM7RUFDakY7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQWtJLGFBQUE7SUFBQWpJLEdBQUE7SUFBQUMsR0FBQSxFQXhERCxTQUFBQSxJQUFBLEVBQTREO01BQzFELE9BQU9nSSxhQUFhLENBQUNxTyx1QkFBdUI7SUFDOUM7RUFBQztJQUFBdFcsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT2tJLFNBQVNBLENBQUMySyxRQUFnQixFQUFXO01BQzFDLElBQUksT0FBT0EsUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUNoQ0EsUUFBUSxHQUFHLEtBQUs7TUFDbEI7TUFFQSxJQUFNd0QsTUFBTSxHQUFHdE8sYUFBYSxDQUFDdU8sUUFBUSxDQUFDekQsUUFBUSxDQUFDO01BRS9DLElBQUl3RCxNQUFNLEVBQUU7UUFDVixPQUFPQSxNQUFNO01BQ2Y7TUFFQSxPQUFPdE8sYUFBYSxDQUFDdU8sUUFBUSxDQUFDekQsUUFBUSxDQUFDLEdBQUcsSUFBSU0sK0NBQU0sQ0FBQ04sUUFBUSxFQUFFLElBQUksQ0FBQ1osVUFBVSxFQUFFLElBQUksQ0FBQ1EsVUFBVSxDQUFDO0lBQ2xHO0VBQUM7SUFBQTNTLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU91VywyQ0FBMkNBLENBQUEsRUFBUztNQUN6RHhPLGFBQWEsQ0FBQ3lPLGlCQUFpQixDQUFDLENBQUM7TUFDakN6TyxhQUFhLENBQUMwTyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUxTyxhQUFhLENBQUMyTyxrQkFBa0IsQ0FBQzNSLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUMvRmdELGFBQWEsQ0FBQzBPLHlCQUF5QixDQUFDLFdBQVcsRUFBRTFPLGFBQWEsQ0FBQzRPLG9CQUFvQixDQUFDNVIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JHO0VBQUM7SUFBQWpGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWV3VyxpQkFBaUJBLENBQUEsRUFBUztNQUN2QyxJQUFNSSxjQUFjLEdBQUdULHlFQUE0QixDQUFDeFMsY0FBYyxDQUFDLHNCQUFzQixDQUFxQjtNQUU5RyxJQUFJMk8saURBQVksQ0FBQ3NFLGNBQWMsQ0FBQyxFQUFFO1FBQ2hDLElBQUksQ0FBQ25FLFVBQVUsQ0FBQ29FLFlBQVksQ0FBQ3ZFLGlEQUFZLENBQUNzRSxjQUFjLENBQUMsQ0FBQztNQUM1RDtNQUVBO0lBQ0Y7RUFBQztJQUFBOVcsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZXlXLHlCQUF5QkEsQ0FBQzdTLElBQVksRUFBRWtULGFBQTRDLEVBQVE7TUFDekcsSUFBTUYsY0FBYyxHQUFHVCx5RUFBNEIsQ0FBQ3hTLGNBQWMsV0FBQWYsTUFBQSxDQUFXZ0IsSUFBSSxtQkFBZ0IsQ0FBcUI7TUFFdEgsSUFBSWdULGNBQWMsS0FBSyxLQUFLLEVBQUU7UUFDNUI7TUFDRjtNQUVBRSxhQUFhLENBQUN4RSxpREFBWSxDQUFDc0UsY0FBYyxDQUFDLENBQUM7SUFDN0M7RUFBQztJQUFBOVcsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZTBXLGtCQUFrQkEsQ0FBQzlCLEtBQW1CLEVBQVE7TUFDM0QsSUFBSSxDQUFDM0MsVUFBVSxDQUFDdlIsR0FBRyxDQUFDLElBQUk2Uix3REFBZSxDQUFDcUMsS0FBSyxJQUFJblIsd0RBQWMsQ0FBQ1csMEJBQTBCLENBQUMsQ0FBQztJQUM5RjtFQUFDO0lBQUF0RSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlMlcsb0JBQW9CQSxDQUFDL0IsS0FBbUIsRUFBUTtNQUM3RCxJQUFJLENBQUN3Qix1QkFBdUIsQ0FBQzVELFNBQVMsR0FBR29DLEtBQUssSUFBSW5SLHdEQUFjLENBQUNZLDRCQUE0QjtNQUU3RixJQUFJLENBQUM0TixVQUFVLENBQUN2UixHQUFHLENBQUMsSUFBSXVWLG1FQUFpQixDQUFDLElBQUksQ0FBQ0csdUJBQXVCLENBQUMsQ0FBQztJQUMxRTtFQUFDO0FBQUE7QUFBQTdXLDJJQUFBLENBMURrQndJLGFBQWEsY0FDeUIsQ0FBQyxDQUFDO0FBQUF4SSwySUFBQSxDQUR4Q3dJLGFBQWEsZ0JBRU8sSUFBSWlLLGtEQUFTLENBQUMsQ0FBQztBQUFBelMsMklBQUEsQ0FGbkN3SSxhQUFhLGdCQUdjLElBQUlpTyx5REFBZ0IsQ0FBQyxDQUFDO0FBQUF6VywySUFBQSxDQUhqRHdJLGFBQWEsNkJBSWlDLElBQUltTyx5RUFBc0IsQ0FBQyxDQUFDO0FBSjdEO0FBaUVsQ25PLGFBQWEsQ0FBQ3dPLDJDQUEyQyxDQUFDLENBQUMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9FM0Q7QUFDQTtBQUNBOztBQUUwRDtBQUNGO0FBQUEsSUFFbkMvUyxtQkFBbUI7RUFBQSxTQUFBQSxvQkFBQTtJQUFBbEUsMklBQUEsT0FBQWtFLG1CQUFBO0VBQUE7RUFBQSxPQUFBM0Qsd0lBQUEsQ0FBQTJELG1CQUFBO0lBQUExRCxHQUFBO0lBQUFFLEtBQUEsRUFDdEMsU0FBT2tFLHFDQUFxQ0EsQ0FBQzZTLFlBQTBCLEVBQW9CO01BQ3pGLFFBQVFBLFlBQVk7UUFDbEIsS0FBS3pFLGlEQUFZLENBQUMwRSxHQUFHO1VBQ25CLE9BQU8sS0FBSztRQUNkLEtBQUsxRSxpREFBWSxDQUFDaUIsS0FBSztVQUNyQixPQUFPLE9BQU87UUFDaEIsS0FBS2pCLGlEQUFZLENBQUN1QixLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQixLQUFLdkIsaURBQVksQ0FBQzBCLElBQUk7VUFDcEIsT0FBTyxPQUFPO1FBQ2hCLEtBQUsxQixpREFBWSxDQUFDVyxJQUFJO1VBQ3BCLE9BQU8sTUFBTTtRQUNmLEtBQUtYLGlEQUFZLENBQUM5TixLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQixLQUFLOE4saURBQVksQ0FBQ21DLEtBQUs7VUFDckIsT0FBTyxPQUFPO1FBQ2hCLEtBQUtuQyxpREFBWSxDQUFDMkUsR0FBRztVQUNuQixPQUFPLEtBQUs7UUFDZDtVQUNFbkYsbUVBQWlCLENBQUNpRixZQUFZLENBQUM7TUFDbkM7SUFDRjtFQUFDO0lBQUFqWCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPa1gscUNBQXFDQSxDQUFDQyxnQkFBa0MsRUFBZ0I7TUFDN0YsUUFBUUEsZ0JBQWdCO1FBQ3RCLEtBQUssS0FBSztVQUNSLE9BQU83RSxpREFBWSxDQUFDMEUsR0FBRztRQUN6QixLQUFLLE9BQU87VUFDVixPQUFPMUUsaURBQVksQ0FBQ2lCLEtBQUs7UUFDM0IsS0FBSyxPQUFPO1VBQ1YsT0FBT2pCLGlEQUFZLENBQUN1QixLQUFLO1FBQzNCLEtBQUssTUFBTTtVQUNULE9BQU92QixpREFBWSxDQUFDMEIsSUFBSTtRQUMxQixLQUFLLE1BQU07VUFDVCxPQUFPMUIsaURBQVksQ0FBQ1csSUFBSTtRQUMxQixLQUFLLE9BQU87VUFDVixPQUFPWCxpREFBWSxDQUFDOU4sS0FBSztRQUMzQixLQUFLLE9BQU87VUFDVixPQUFPOE4saURBQVksQ0FBQ21DLEtBQUs7UUFDM0IsS0FBSyxLQUFLO1VBQ1IsT0FBT25DLGlEQUFZLENBQUMyRSxHQUFHO1FBQ3pCO1VBQ0VuRixtRUFBaUIsQ0FBQ3FGLGdCQUFnQixDQUFDO01BQ3ZDO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcERIO0FBQ0E7QUFDQTs7QUFFOEM7QUFBQSxJQUd6Qm5CLGdCQUFnQjtFQUFBLFNBQUFBLGlCQUFBO0lBQUExVywySUFBQSxPQUFBMFcsZ0JBQUE7SUFBQXpXLDJJQUFBLHFCQUNBa0UsdURBQWMsQ0FBQ1UsbUJBQW1CO0VBQUE7RUFBQSxPQUFBdEUsd0lBQUEsQ0FBQW1XLGdCQUFBO0lBQUFsVyxHQUFBO0lBQUFDLEdBQUEsRUFFckUsU0FBQUEsSUFBQSxFQUEwQjtNQUN4QixPQUFPLElBQUksQ0FBQzBTLFVBQVU7SUFDeEI7RUFBQztJQUFBM1MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTZXLFlBQVlBLENBQUNyRSxTQUF1QixFQUFRO01BQzFDLElBQUksQ0FBQ0MsVUFBVSxHQUFHRCxTQUFTO0lBQzdCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaEJIO0FBQ0E7QUFDQTs7QUFFc0Q7QUFDSTtBQUNsQjtBQUFBLElBRW5CNUssVUFBVTtFQUc3QixTQUFBQSxXQUFZeVAsT0FBb0IsRUFBRTtJQUFBL1gsMklBQUEsT0FBQXNJLFVBQUE7SUFBQXJJLDJJQUFBO0lBQ2hDLElBQUksQ0FBQytYLFFBQVEsR0FBR0QsT0FBTztFQUN6QjtFQUFDLE9BQUF4WCx3SUFBQSxDQUFBK0gsVUFBQTtJQUFBOUgsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWdKLE9BQU9BLENBQUEsRUFBVztNQUNoQixPQUFPckIsb0RBQVcsQ0FBQyxJQUFJLENBQUMyUCxRQUFRLENBQUM7SUFDbkM7RUFBQztJQUFBeFgsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXVYLGlCQUFpQkEsQ0FBQSxFQUFtQjtNQUNsQyxRQUFRLElBQUksQ0FBQ0QsUUFBUTtRQUNuQixLQUFLM1Asb0RBQVcsQ0FBQzZQLGdCQUFnQjtVQUMvQixPQUFPSixpRUFBYyxDQUFDSyxTQUFTO1FBQ2pDLEtBQUs5UCxvREFBVyxDQUFDK1AsK0JBQStCO1VBQzlDLE9BQU9OLGlFQUFjLENBQUNLLFNBQVM7UUFDakMsS0FBSzlQLG9EQUFXLENBQUNnUSxPQUFPO1VBQ3RCLE9BQU9QLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBS3RQLG9EQUFXLENBQUNpUSxTQUFTO1VBQ3hCLE9BQU9SLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBS3RQLG9EQUFXLENBQUNjLGNBQWM7VUFDN0IsT0FBTzJPLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBS3RQLG9EQUFXLENBQUNnQixXQUFXO1VBQzFCLE9BQU95TyxpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUt0UCxvREFBVyxDQUFDa1EsYUFBYTtVQUM1QixPQUFPVCxpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUt0UCxvREFBVyxDQUFDbVEsMEJBQTBCO1VBQ3pDLE9BQU9WLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBS3RQLG9EQUFXLENBQUNvUSxXQUFXO1VBQzFCLE9BQU9YLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBS3RQLG9EQUFXLENBQUNxUSxpQkFBaUI7VUFDaEMsT0FBT1osaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLdFAsb0RBQVcsQ0FBQ3NRLHFCQUFxQjtVQUNwQyxPQUFPYixpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUt0UCxvREFBVyxDQUFDdVEscUJBQXFCO1VBQ3BDLE9BQU9kLGlFQUFjLENBQUNILEdBQUc7UUFDM0I7VUFDRW5GLG1FQUFpQixDQUFDLElBQUksQ0FBQ3dGLFFBQVEsQ0FBQztNQUNwQztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaERIO0FBQ0E7QUFDQTs7QUFFcUQ7QUFDSDtBQUUzQyxJQUFLRixjQUFjLDBCQUFkQSxjQUFjO0VBQWRBLGNBQWMsQ0FBZEEsY0FBYztFQUFkQSxjQUFjLENBQWRBLGNBQWM7RUFBZEEsY0FBYyxDQUFkQSxjQUFjO0VBQUEsT0FBZEEsY0FBYztBQUFBO0FBSXpCLElBSW9CZSxvQkFBb0I7RUFBQSxTQUFBQSxxQkFBQTtJQUFBN1ksMklBQUEsT0FBQTZZLG9CQUFBO0lBQUE1WSwySUFBQSxlQUN4QixtREFBbUQ7SUFBQUEsMklBQUEsbUJBQ3ZDLEdBQUc7SUFBQUEsMklBQUEscUJBQ0QsR0FBRztJQUFBQSwySUFBQSx1QkFDRCxHQUFHO0lBQUFBLDJJQUFBLHFCQUNHZ0UseURBQWdCLENBQUNVLHFCQUFxQjtFQUFBO0VBQUEsT0FBQXBFLHdJQUFBLENBQUFzWSxvQkFBQTtJQUFBclksR0FBQTtJQUFBQyxHQUFBLEVBRTNFLFNBQUFBLElBQUEsRUFBa0I7TUFDaEIsT0FBTyxJQUFJLENBQUNxWSxJQUFJO0lBQ2xCLENBQUM7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQVFDLEdBQVcsRUFBRTtNQUNuQixJQUFNQyxVQUFVLEdBQUcsSUFBSXhaLGdFQUFXLENBQUNpQixLQUFLLENBQUNvRixHQUFHLENBQUNrVCxHQUFHLENBQUM7TUFFakRDLFVBQVUsQ0FBQ0MsUUFBUSxHQUFHRCxVQUFVLENBQUNDLFFBQVEsR0FBRyxVQUFVO01BRXRELElBQUksQ0FBQ0osSUFBSSxHQUFHRyxVQUFVLENBQUN0SSxRQUFRLENBQUMsQ0FBQztJQUNuQztFQUFDO0lBQUFuUSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBCO01BQ3hCLE9BQU8sSUFBSSxDQUFDMFksWUFBWTtJQUMxQixDQUFDO0lBQUFKLEdBQUEsRUFFRCxTQUFBQSxJQUFnQkssV0FBbUIsRUFBRTtNQUNuQyxJQUFJLENBQUNELFlBQVksR0FBR0MsV0FBVztJQUNqQztFQUFDO0lBQUE1WSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNCO01BQ3BCLE9BQU8sSUFBSSxDQUFDNFksUUFBUTtJQUN0QixDQUFDO0lBQUFOLEdBQUEsRUFFRCxTQUFBQSxJQUFZTyxPQUFlLEVBQUU7TUFDM0IsSUFBSSxDQUFDRCxRQUFRLEdBQUdDLE9BQU87SUFDekI7RUFBQztJQUFBOVksR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QjtNQUN0QixPQUFPLElBQUksQ0FBQzhZLFVBQVU7SUFDeEIsQ0FBQztJQUFBUixHQUFBLEVBRUQsU0FBQUEsSUFBY1MsU0FBaUIsRUFBRTtNQUMvQixJQUFJLENBQUNELFVBQVUsR0FBR0MsU0FBUztJQUM3QjtFQUFDO0lBQUFoWixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdDO01BQzlCLE9BQU8sSUFBSSxDQUFDMFMsVUFBVTtJQUN4QixDQUFDO0lBQUE0RixHQUFBLEVBRUQsU0FBQUEsSUFBYzdGLFNBQXlCLEVBQUU7TUFDdkMsSUFBSSxDQUFDQyxVQUFVLEdBQUdELFNBQVM7SUFDN0I7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRUg7QUFDQTtBQUNBOztBQUU4QztBQUM4QjtBQUMvQztBQUNrQjtBQUNGO0FBQ2dCO0FBQUEsSUFFeEMwRyxjQUFjO0VBc0NqQyxTQUFBQSxlQUFBLEVBQXNCO0lBQUE1WiwySUFBQSxPQUFBNFosY0FBQTtJQUNwQixNQUFNLElBQUkxVSxLQUFLLENBQUMsK0RBQStELENBQUM7RUFDbEY7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQXFaLGNBQUE7SUFBQXBaLEdBQUE7SUFBQUUsS0FBQSxFQXJDRCxTQUFPbVosaUJBQWlCQSxDQUFDYixHQUFXLEVBQWtCO01BQ3BELElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQixNQUFNLElBQUk5VCxLQUFLLDJDQUFBNUIsTUFBQSxDQUFBd1csbUlBQUEsQ0FBa0RkLEdBQUcsT0FBRyxDQUFDO01BQzFFO01BRUEsSUFBTWUsZUFBZSxHQUFHSCxjQUFjLENBQUNJLGdCQUFnQixDQUFDaEIsR0FBRyxDQUFDO01BRTVELElBQUllLGVBQWUsRUFBRTtRQUNuQixPQUFPQSxlQUFlO01BQ3hCO01BRUEsSUFBTUUsb0JBQW9CLEdBQUcsSUFBSXBCLDZEQUFvQixDQUFDLENBQUM7TUFFdkRvQixvQkFBb0IsQ0FBQ1QsU0FBUyxHQUFHaFIsZ0RBQUcsQ0FBQzBSLGVBQWU7TUFDcERELG9CQUFvQixDQUFDWCxPQUFPLEdBQUc5USxnREFBRyxDQUFDOFEsT0FBTyxDQUFDNVksS0FBSztNQUNoRHVaLG9CQUFvQixDQUFDakIsR0FBRyxHQUFHVSx5REFBWSxDQUFDUyxlQUFlLENBQUNuQixHQUFHLENBQUM7TUFDNURpQixvQkFBb0IsQ0FBQ2IsV0FBVyxHQUFHTyx3REFBVyxDQUFDUyxxQkFBcUIsQ0FBQ3BCLEdBQUcsQ0FBQztNQUV6RWlCLG9CQUFvQixDQUFDL0csU0FBUyxHQUFHbFAsK0RBQXFCLENBQUNxVyx5Q0FBeUMsQ0FBQzdSLGdEQUFHLENBQUM4UixjQUFjLENBQUM7TUFFcEgsT0FBT1YsY0FBYyxDQUFDSSxnQkFBZ0IsQ0FBQ2hCLEdBQUcsQ0FBQyxHQUFHLElBQUlTLHVEQUFjLENBQUNRLG9CQUFvQixDQUFDO0lBQ3hGO0VBQUM7SUFBQXpaLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU82WixpQkFBaUJBLENBQUNELGNBQThCLEVBQVE7TUFDN0QsSUFBTVAsZUFBZSxHQUFHekQsTUFBTSxDQUFDa0UsTUFBTSxDQUFDWixjQUFjLENBQUNJLGdCQUFnQixDQUFDO01BRXRFLElBQUlELGVBQWUsSUFBSUEsZUFBZSxDQUFDcFAsTUFBTSxFQUFFO1FBQzdDb1AsZUFBZSxDQUFDckosT0FBTyxDQUFDLFVBQUE3SCxjQUFjLEVBQUk7VUFDeEMsSUFBTW9SLG9CQUFvQixHQUFHcFIsY0FBYyxDQUFDb1Isb0JBQW9CO1VBRWhFQSxvQkFBb0IsQ0FBQy9HLFNBQVMsR0FBR29ILGNBQWM7UUFDakQsQ0FBQyxDQUFDO01BQ0o7SUFDRjtFQUFDO0FBQUE7QUFBQXJhLDJJQUFBLENBcENrQjJaLGNBQWMsc0JBQ3VDLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDWDVFLHVLQUFBN08sQ0FBQSxFQUFBMFAsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUF6TixTQUFBLFlBQUErTixTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUE3RSxNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsQ0FBQTlOLFNBQUEsVUFBQWtPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBM1EsQ0FBQSxFQUFBNFEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBblcsSUFBQSxDQUFBc0YsQ0FBQSxNQUFBNlEsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQXBRLENBQUEsRUFBQTBRLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQTVRLE1BQUEsRUFBQThQLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQWpRLENBQUEsSUFBQWlRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQWxRLENBQUEsR0FBQW9RLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQS9aLEtBQUEsRUFBQXVhLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsQ0FBQWdCLE1BQUEsS0FBQXZCLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQWpRLENBQUEsY0FBQTBQLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFsSyxJQUFBLENBQUFvSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBalEsQ0FBQSxFQUFBa1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQTVhLEtBQUEsRUFBQStaLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWUsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXpCLENBQUEsR0FBQW5FLE1BQUEsQ0FBQTZGLGNBQUEsTUFBQWxCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBZSwwQkFBQSxDQUFBL08sU0FBQSxHQUFBK04sU0FBQSxDQUFBL04sU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUF2USxDQUFBLFdBQUF1TCxNQUFBLENBQUE4RixjQUFBLEdBQUE5RixNQUFBLENBQUE4RixjQUFBLENBQUFyUixDQUFBLEVBQUFtUiwwQkFBQSxLQUFBblIsQ0FBQSxDQUFBc1IsU0FBQSxHQUFBSCwwQkFBQSxFQUFBYixtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBK1AsQ0FBQSx5QkFBQS9QLENBQUEsQ0FBQW9DLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBcFEsQ0FBQSxXQUFBa1IsaUJBQUEsQ0FBQTlPLFNBQUEsR0FBQStPLDBCQUFBLEVBQUFiLG1CQUFBLENBQUFGLENBQUEsaUJBQUFlLDBCQUFBLEdBQUFiLG1CQUFBLENBQUFhLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBakIsbUJBQUEsQ0FBQWEsMEJBQUEsRUFBQXBCLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFvQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBeEIsQ0FBQSxFQUFBeUIsQ0FBQSxFQUFBbkIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBMUUsTUFBQSxDQUFBb0csY0FBQSxRQUFBMUIsQ0FBQSx1QkFBQWpRLENBQUEsSUFBQWlRLENBQUEsUUFBQUssbUJBQUEsWUFBQXNCLG1CQUFBNVIsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLFlBQUEzUCxDQUFBLGdCQUFBNlIsT0FBQSxDQUFBbEMsQ0FBQSxFQUFBRSxDQUFBLEVBQUE3UCxDQUFBLFNBQUEyUCxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBalEsQ0FBQSxFQUFBMlAsQ0FBQSxJQUFBaGEsS0FBQSxFQUFBa2EsQ0FBQSxFQUFBaUMsVUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsWUFBQSxHQUFBckMsQ0FBQSxFQUFBc0MsUUFBQSxHQUFBdEMsQ0FBQSxNQUFBMVAsQ0FBQSxDQUFBMlAsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXFEO0FBRUQ7QUFDUTtBQUNEO0FBQ3JCO0FBSXRDLElBQU15QyxnQkFBZ0IsR0FBRyxJQUFJO0FBQzdCLElBQU1DLGtCQUFrQixHQUFHLElBQUk7QUFBQyxJQWtDWDFELGNBQWM7RUFTakMsU0FBQUEsZUFBWVEsb0JBQTBDLEVBQUU7SUFBQSxJQUFBbFosS0FBQTtJQUFBZiwySUFBQSxPQUFBeVosY0FBQTtJQUFBeFosMklBQUEsa0JBUnBCd0ksNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLGdCQUFnQixDQUFDO0lBQUEzSSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQSxtQkFHcEMsRUFBRTtJQUFBQSwySUFBQSxxQkFDYixLQUFLO0lBQUFBLDJJQUFBLHdCQUNYLENBQUM7SUFBQUEsMklBQUEsa0JBQ1AsRUFBRTtJQUdsQixJQUFJLENBQUNtZCxxQkFBcUIsR0FBR25ELG9CQUFvQjtJQUNqRCxJQUFJLENBQUNvRCxtQkFBbUIsR0FBRyxJQUFJTCxnRUFBa0IsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQ00sa0NBQWtDLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsVUFBQUMsZ0JBQWdCLEVBQUk7TUFDakV6YyxLQUFJLENBQUMwYyxPQUFPLEdBQUdELGdCQUFnQjtJQUNqQyxDQUFDLENBQUM7RUFDSjtFQUFDLE9BQUFqZCx3SUFBQSxDQUFBa1osY0FBQTtJQUFBalosR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpRDtNQUMvQyxPQUFPLElBQUksQ0FBQzJjLHFCQUFxQjtJQUNuQztFQUFDO0lBQUE1YyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaUosSUFBSUEsQ0FBQytULE1BQWUsRUFBUTtNQUMxQixJQUFPelUsUUFBUSxHQUFtRHlVLE1BQU0sQ0FBakV6VSxRQUFRO1FBQUV2SSxLQUFLLEdBQTRDZ2QsTUFBTSxDQUF2RGhkLEtBQUs7UUFBRWlkLGFBQWEsR0FBNkJELE1BQU0sQ0FBaERDLGFBQWE7UUFBRS9ULE9BQU8sR0FBb0I4VCxNQUFNLENBQWpDOVQsT0FBTztRQUFFZ1UsUUFBUSxHQUFVRixNQUFNLENBQXhCRSxRQUFRO1FBQUVDLElBQUksR0FBSUgsTUFBTSxDQUFkRyxJQUFJO01BQzlELElBQU12VSxVQUFVLEdBQUcsSUFBSWhCLG1EQUFVLENBQUNvVixNQUFNLENBQUNwVSxVQUFVLENBQUM7TUFFcEQsSUFBSSxJQUFJLENBQUM4VCxxQkFBcUIsQ0FBQ2xLLFNBQVMsR0FBRzVKLFVBQVUsQ0FBQzJPLGlCQUFpQixDQUFDLENBQUMsRUFBRTtRQUN6RTtNQUNGO01BRUEsSUFBTTZGLFlBQVksR0FBRztRQUNuQkMsU0FBUyxFQUFFLElBQUk3ZCxJQUFJLENBQUMsQ0FBQyxDQUFDd1QsV0FBVyxDQUFDLENBQUM7UUFDbkM0RixPQUFPLEVBQUUsSUFBSSxDQUFDOEQscUJBQXFCLENBQUM5RCxPQUFPO1FBQzNDRSxTQUFTLEVBQUUsSUFBSSxDQUFDNEQscUJBQXFCLENBQUM1RCxTQUFTO1FBQy9DdlEsUUFBUSxFQUFSQSxRQUFRO1FBQ1J5VSxNQUFNLEVBQUVwVSxVQUFVLENBQUNJLE9BQU8sQ0FBQyxDQUFDO1FBQzVCaEosS0FBSyxFQUFMQSxLQUFLO1FBQ0xpZCxhQUFhLEVBQWJBLGFBQWE7UUFDYkssaUJBQWlCLEVBQUUsSUFBSSxDQUFDUCxPQUFPO1FBQy9CckUsV0FBVyxFQUFFLElBQUksQ0FBQ2dFLHFCQUFxQixDQUFDaEUsV0FBVztRQUNuRDFWLE9BQU8sRUFBRXVaLG1FQUFjLENBQUNnQixVQUFVO1FBQ2xDclUsT0FBTyxFQUFQQSxPQUFPO1FBQ1BnVSxRQUFRLEVBQVJBLFFBQVE7UUFDUkMsSUFBSSxFQUFKQTtNQUNGLENBQUM7TUFFRCxJQUFJLENBQUM3RixRQUFRLENBQUNyTyxJQUFJLENBQUNtVSxZQUFZLENBQUM7TUFFaEMsSUFBTUksT0FBTyxHQUFHLElBQUksQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUMxQztFQUFDO0lBQUEzZCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRNGMsa0NBQWtDQSxDQUFBLEVBQW9CO01BQzVELE9BQU8sSUFBSWMsT0FBTyxDQUFTLFVBQUFDLHVCQUF1QixFQUFJO1FBQ3BELElBQU1DLHVCQUF1QixHQUFHN2UsZ0VBQVcsQ0FBQ3lRLFNBQVMsQ0FBQyxVQUFBcU8sV0FBVyxFQUFJO1VBQ25FLElBQUksQ0FBQ0EsV0FBVyxFQUFFO1lBQ2hCO1VBQ0Y7VUFFQUYsdUJBQXVCLENBQUNFLFdBQVcsQ0FBQ2YsZ0JBQWdCLENBQUM7VUFDckRlLFdBQVcsQ0FBQzdZLFVBQVUsQ0FBQztZQUFBLE9BQU00WSx1QkFBdUIsQ0FBQ3pkLE9BQU8sQ0FBQyxDQUFDO1VBQUEsR0FBRSxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDO01BQ0osQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBTCxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBaUwsWUFBQSxHQUFBNlMsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUFnQyxRQUEwQkMsZUFBcUM7UUFBQSxJQUFBQyxRQUFBO1FBQUEsT0FBQXBDLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FDdkQrRCxRQUFRLEdBQUcsSUFBSWxmLGdFQUFXLENBQUNpQixLQUFLLENBQUNnTyxRQUFRLENBQUMsQ0FBQztjQUVqRGlRLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRWhVLElBQUksQ0FBQ2dMLFNBQVMsQ0FBQztnQkFBQ2lKLE9BQU8sRUFBRUo7Y0FBZSxDQUFDLENBQUMsQ0FBQztjQUFDRSxRQUFBLENBQUFoRSxDQUFBO2NBQUEsT0FFM0RuYixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDOE8sS0FBSyxDQUFDLElBQUksQ0FBQzROLHFCQUFxQixDQUFDcEUsR0FBRyxFQUFFO2dCQUNuRStGLE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVMO2NBQ1IsQ0FBQyxDQUFDO1lBQUE7Y0FBQSxPQUFBQyxRQUFBLENBQUFqRCxDQUFBLElBQUFpRCxRQUFBLENBQUFsRCxDQUFBO1VBQUE7UUFBQSxHQUFBK0MsT0FBQTtNQUFBLENBQ0g7TUFBQSxTQVRhdlMsV0FBV0EsQ0FBQStTLEVBQUE7UUFBQSxPQUFBdFQsWUFBQSxDQUFBdVQsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBWGpJLFdBQVc7SUFBQTtFQUFBO0lBQUExTCxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBeWUsa0JBQUEsR0FBQVgsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQVd6QixTQUFBMkMsU0FBQTtRQUFBLElBQUE1SixNQUFBO1FBQUEsSUFBQWtKLGVBQUE7UUFBQSxPQUFBbkMsWUFBQSxHQUFBQyxDQUFBLFdBQUE2QyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXpFLENBQUE7WUFBQTtjQUFBLE1BQ00sSUFBSSxDQUFDNUMsUUFBUSxDQUFDck4sTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMyVSxVQUFVLElBQUksQ0FBQzdmLGdFQUFXLENBQUNpQixLQUFLO2dCQUFBMmUsU0FBQSxDQUFBekUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQXlFLFNBQUEsQ0FBQTFELENBQUE7WUFBQTtjQUl0RSxJQUFJLENBQUMyRCxVQUFVLEdBQUcsSUFBSTtjQUVoQlosZUFBZSxHQUFHLElBQUksQ0FBQzFHLFFBQVEsQ0FBQ3VILEtBQUssQ0FBQyxDQUFDLEVBQUVyQyxnQkFBZ0IsQ0FBQztjQUVoRSxJQUFJLENBQUNsRixRQUFRLEdBQUcsSUFBSSxDQUFDQSxRQUFRLENBQUN1SCxLQUFLLENBQUNyQyxnQkFBZ0IsQ0FBQztjQUFDLE9BQUFtQyxTQUFBLENBQUExRCxDQUFBLElBRS9DLElBQUksQ0FBQ3pQLFdBQVcsQ0FBQ3dTLGVBQWUsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLFVBQUFpQyxRQUFRLEVBQUk7Z0JBQ3hELElBQUloSyxNQUFJLENBQUNpSyw2QkFBNkIsQ0FBQ0QsUUFBUSxDQUFDLEVBQUU7a0JBQ2hELElBQUloSyxNQUFJLENBQUN3QyxRQUFRLENBQUNyTixNQUFNLElBQUl3UyxrQkFBa0IsRUFBRTtvQkFDOUMzSCxNQUFJLENBQUNrSyxhQUFhLEVBQUU7b0JBRXBCamdCLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUMsWUFBTTtzQkFDakM4UCxNQUFJLENBQUN3QyxRQUFRLE1BQUExVSxNQUFBLENBQUFxYyw4SUFBQSxDQUFPakIsZUFBZSxHQUFBaUIsOElBQUEsQ0FBS25LLE1BQUksQ0FBQ3dDLFFBQVEsRUFBQztzQkFFdER4QyxNQUFJLENBQUM4SixVQUFVLEdBQUcsS0FBSztzQkFFdkIsSUFBTXBCLE9BQU8sR0FBRzFJLE1BQUksQ0FBQzJJLGlCQUFpQixDQUFDLENBQUM7b0JBQzFDLENBQUMsRUFBRTNJLE1BQUksQ0FBQzZILG1CQUFtQixDQUFDdUMsMkNBQTJDLENBQUNwSyxNQUFJLENBQUNrSyxhQUFhLENBQUMsQ0FBQztvQkFFNUY7a0JBQ0Y7a0JBRUFsSyxNQUFJLENBQUMxTCxPQUFPLENBQUNTLEtBQUssQ0FBQyw0REFBNEQsRUFBRWlMLE1BQUksQ0FBQ3dDLFFBQVEsQ0FBQ3JOLE1BQU0sRUFBRStULGVBQWUsQ0FBQy9ULE1BQU0sQ0FBQztnQkFDaEk7Z0JBRUE2SyxNQUFJLENBQUM4SixVQUFVLEdBQUcsS0FBSztnQkFDdkI5SixNQUFJLENBQUNrSyxhQUFhLEdBQUcsQ0FBQztnQkFFdEIsSUFBTXhCLE9BQU8sR0FBRzFJLE1BQUksQ0FBQzJJLGlCQUFpQixDQUFDLENBQUM7Z0JBRXhDLE9BQU9xQixRQUFRO2NBQ2pCLENBQUMsQ0FBQyxDQUFDSyxLQUFLLENBQUMsWUFBTTtnQkFDYnJLLE1BQUksQ0FBQzhKLFVBQVUsR0FBRyxLQUFLO2dCQUV2QixJQUFNcEIsT0FBTyxHQUFHMUksTUFBSSxDQUFDMkksaUJBQWlCLENBQUMsQ0FBQztjQUMxQyxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUFpQixRQUFBO01BQUEsQ0FDSDtNQUFBLFNBekNhakIsaUJBQWlCQSxDQUFBO1FBQUEsT0FBQWdCLGtCQUFBLENBQUFELEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQWpCZ0ssaUJBQWlCO0lBQUE7RUFBQTtJQUFBM2QsR0FBQTtJQUFBRSxLQUFBLEVBMkMvQixTQUFRK2UsNkJBQTZCQSxDQUFBMVksSUFBQSxFQUE4QjtNQUFBLElBQTVCK1ksTUFBTSxHQUFBL1ksSUFBQSxDQUFOK1ksTUFBTTtNQUMzQyxPQUFPLFVBQVUsQ0FBQ2xjLElBQUksQ0FBQ2tjLE1BQU0sQ0FBQ25QLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0M7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7QUN2S0g7QUFDQTtBQUNBO0FBRkEsSUFJS3RJLFdBQVcsMEJBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUEsRUFBWEEsV0FBVztBQWVoQiwrREFBZUEsV0FBVyxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkIxQjtBQUNBO0FBQ0E7O0FBRTBFO0FBQ2hCO0FBQUEsSUFFckNyRSxxQkFBcUI7RUFBQSxTQUFBQSxzQkFBQTtJQUFBaEUsMklBQUEsT0FBQWdFLHFCQUFBO0VBQUE7RUFBQSxPQUFBekQsd0lBQUEsQ0FBQXlELHFCQUFBO0lBQUF4RCxHQUFBO0lBQUFFLEtBQUEsRUFDeEMsU0FBT2dFLHlDQUF5Q0EsQ0FBQzRWLGNBQThCLEVBQXNCO01BQ25HLFFBQVFBLGNBQWM7UUFDcEIsS0FBS3hDLGlFQUFjLENBQUNKLEdBQUc7VUFDckIsT0FBTyxLQUFLO1FBQ2QsS0FBS0ksaUVBQWMsQ0FBQ0ssU0FBUztVQUMzQixPQUFPLFdBQVc7UUFDcEIsS0FBS0wsaUVBQWMsQ0FBQ0gsR0FBRztVQUNyQixPQUFPLEtBQUs7UUFDZDtVQUNFbkYsbUVBQWlCLENBQUM4SCxjQUFjLENBQUM7TUFDckM7SUFDRjtFQUFDO0lBQUE5WixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPMloseUNBQXlDQSxDQUFDMEYsa0JBQXNDLEVBQWtCO01BQ3ZHLFFBQVFBLGtCQUFrQjtRQUN4QixLQUFLLEtBQUs7VUFDUixPQUFPakksaUVBQWMsQ0FBQ0osR0FBRztRQUMzQixLQUFLLFdBQVc7VUFDZCxPQUFPSSxpRUFBYyxDQUFDSyxTQUFTO1FBQ2pDLEtBQUssS0FBSztVQUNSLE9BQU9MLGlFQUFjLENBQUNILEdBQUc7UUFDM0I7VUFDRW5GLG1FQUFpQixDQUFDdU4sa0JBQWtCLENBQUM7TUFDekM7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaENIO0FBQ0E7QUFDQTs7QUFFeUQ7QUFDTTtBQUFBLElBRTFDOWIsZ0JBQWdCO0VBQUEsU0FBQUEsaUJBQUE7SUFBQWpFLDJJQUFBLE9BQUFpRSxnQkFBQTtFQUFBO0VBQUEsT0FBQTFELHdJQUFBLENBQUEwRCxnQkFBQTtJQUFBekQsR0FBQTtJQUFBQyxHQUFBLEVBQ25DLFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBT3FYLHlFQUFjLENBQUN0TSxrRUFBYSxDQUFDVSxXQUFXLENBQUM7SUFDbEQ7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDVEgsdUtBQUFuQixDQUFBLEVBQUEwUCxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQXpOLFNBQUEsWUFBQStOLFNBQUEsR0FBQU4sQ0FBQSxHQUFBTSxTQUFBLEVBQUFDLENBQUEsR0FBQTdFLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxDQUFBOU4sU0FBQSxVQUFBa08sbUJBQUEsQ0FBQUYsQ0FBQSx1QkFBQVQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxNQUFBQyxDQUFBLEdBQUFULENBQUEsUUFBQVUsQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQVgsQ0FBQSxLQUFBYyxDQUFBLEVBQUEzUSxDQUFBLEVBQUE0USxDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUFuVyxJQUFBLENBQUFzRixDQUFBLE1BQUE2USxDQUFBLFdBQUFBLEVBQUFuQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUUsQ0FBQSxHQUFBcFEsQ0FBQSxFQUFBMFEsQ0FBQSxDQUFBYixDQUFBLEdBQUFGLENBQUEsRUFBQWlCLENBQUEsZ0JBQUFDLEVBQUFsQixDQUFBLEVBQUFFLENBQUEsU0FBQUssQ0FBQSxHQUFBUCxDQUFBLEVBQUFTLENBQUEsR0FBQVAsQ0FBQSxFQUFBSCxDQUFBLE9BQUFlLENBQUEsSUFBQUYsQ0FBQSxLQUFBUixDQUFBLElBQUFMLENBQUEsR0FBQWMsQ0FBQSxDQUFBNVEsTUFBQSxFQUFBOFAsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQU8sQ0FBQSxDQUFBZCxDQUFBLEdBQUFtQixDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQSxFQUFBTSxDQUFBLEdBQUFiLENBQUEsS0FBQU4sQ0FBQSxRQUFBSSxDQUFBLEdBQUFlLENBQUEsS0FBQWpCLENBQUEsTUFBQU8sQ0FBQSxHQUFBSCxDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBalEsQ0FBQSxJQUFBaVEsQ0FBQSxPQUFBWSxDQUFBLE1BQUFkLENBQUEsR0FBQUosQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBWixDQUFBLFFBQUFDLENBQUEsTUFBQVEsQ0FBQSxDQUFBQyxDQUFBLEdBQUFkLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFJLENBQUEsT0FBQVksQ0FBQSxHQUFBQyxDQUFBLEtBQUFmLENBQUEsR0FBQUosQ0FBQSxRQUFBTSxDQUFBLE1BQUFKLENBQUEsSUFBQUEsQ0FBQSxHQUFBaUIsQ0FBQSxNQUFBYixDQUFBLE1BQUFOLENBQUEsRUFBQU0sQ0FBQSxNQUFBSixDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBWixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBaUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFaLENBQUEscUJBQUFFLENBQUEsRUFBQVMsQ0FBQSxFQUFBTSxDQUFBLFFBQUFQLENBQUEsWUFBQVEsU0FBQSx1Q0FBQU4sQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBTSxDQUFBLEdBQUFaLENBQUEsR0FBQU0sQ0FBQSxFQUFBSixDQUFBLEdBQUFVLENBQUEsR0FBQXBCLENBQUEsR0FBQVEsQ0FBQSxPQUFBbFEsQ0FBQSxHQUFBb1EsQ0FBQSxNQUFBSyxDQUFBLEtBQUFSLENBQUEsS0FBQUMsQ0FBQSxHQUFBQSxDQUFBLFFBQUFBLENBQUEsU0FBQVEsQ0FBQSxDQUFBYixDQUFBLFFBQUFnQixDQUFBLENBQUFYLENBQUEsRUFBQUUsQ0FBQSxLQUFBTSxDQUFBLENBQUFiLENBQUEsR0FBQU8sQ0FBQSxHQUFBTSxDQUFBLENBQUFDLENBQUEsR0FBQVAsQ0FBQSxhQUFBRyxDQUFBLE1BQUFOLENBQUEsUUFBQUMsQ0FBQSxLQUFBSCxDQUFBLFlBQUFMLENBQUEsR0FBQU8sQ0FBQSxDQUFBRixDQUFBLFdBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBakssSUFBQSxDQUFBd0ssQ0FBQSxFQUFBRyxDQUFBLFVBQUFXLFNBQUEsMkNBQUFyQixDQUFBLENBQUFzQixJQUFBLFNBQUF0QixDQUFBLEVBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBL1osS0FBQSxFQUFBdWEsQ0FBQSxTQUFBQSxDQUFBLG9CQUFBQSxDQUFBLEtBQUFSLENBQUEsR0FBQU8sQ0FBQSxDQUFBZ0IsTUFBQSxLQUFBdkIsQ0FBQSxDQUFBakssSUFBQSxDQUFBd0ssQ0FBQSxHQUFBQyxDQUFBLFNBQUFFLENBQUEsR0FBQVcsU0FBQSx1Q0FBQWhCLENBQUEsZ0JBQUFHLENBQUEsT0FBQUQsQ0FBQSxHQUFBalEsQ0FBQSxjQUFBMFAsQ0FBQSxJQUFBZSxDQUFBLEdBQUFDLENBQUEsQ0FBQWIsQ0FBQSxRQUFBTyxDQUFBLEdBQUFULENBQUEsQ0FBQWxLLElBQUEsQ0FBQW9LLENBQUEsRUFBQWEsQ0FBQSxPQUFBRSxDQUFBLGtCQUFBbEIsQ0FBQSxJQUFBTyxDQUFBLEdBQUFqUSxDQUFBLEVBQUFrUSxDQUFBLE1BQUFFLENBQUEsR0FBQVYsQ0FBQSxjQUFBYSxDQUFBLG1CQUFBNWEsS0FBQSxFQUFBK1osQ0FBQSxFQUFBc0IsSUFBQSxFQUFBUCxDQUFBLFNBQUFkLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsUUFBQVEsQ0FBQSxnQkFBQVQsVUFBQSxjQUFBZSxrQkFBQSxjQUFBQywyQkFBQSxLQUFBekIsQ0FBQSxHQUFBbkUsTUFBQSxDQUFBNkYsY0FBQSxNQUFBbEIsQ0FBQSxNQUFBTCxDQUFBLElBQUFILENBQUEsQ0FBQUEsQ0FBQSxJQUFBRyxDQUFBLFNBQUFTLG1CQUFBLENBQUFaLENBQUEsT0FBQUcsQ0FBQSxpQ0FBQUgsQ0FBQSxHQUFBVSxDQUFBLEdBQUFlLDBCQUFBLENBQUEvTyxTQUFBLEdBQUErTixTQUFBLENBQUEvTixTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsWUFBQUssRUFBQXZRLENBQUEsV0FBQXVMLE1BQUEsQ0FBQThGLGNBQUEsR0FBQTlGLE1BQUEsQ0FBQThGLGNBQUEsQ0FBQXJSLENBQUEsRUFBQW1SLDBCQUFBLEtBQUFuUixDQUFBLENBQUFzUixTQUFBLEdBQUFILDBCQUFBLEVBQUFiLG1CQUFBLENBQUF0USxDQUFBLEVBQUErUCxDQUFBLHlCQUFBL1AsQ0FBQSxDQUFBb0MsU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBRCxDQUFBLEdBQUFwUSxDQUFBLFdBQUFrUixpQkFBQSxDQUFBOU8sU0FBQSxHQUFBK08sMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQUYsQ0FBQSxpQkFBQWUsMEJBQUEsR0FBQWIsbUJBQUEsQ0FBQWEsMEJBQUEsaUJBQUFELGlCQUFBLEdBQUFBLGlCQUFBLENBQUFLLFdBQUEsd0JBQUFqQixtQkFBQSxDQUFBYSwwQkFBQSxFQUFBcEIsQ0FBQSx3QkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxHQUFBRSxtQkFBQSxDQUFBRixDQUFBLEVBQUFMLENBQUEsZ0JBQUFPLG1CQUFBLENBQUFGLENBQUEsRUFBQVAsQ0FBQSxpQ0FBQVMsbUJBQUEsQ0FBQUYsQ0FBQSw4REFBQW9CLFlBQUEsWUFBQUEsYUFBQSxhQUFBQyxDQUFBLEVBQUF4QixDQUFBLEVBQUF5QixDQUFBLEVBQUFuQixDQUFBO0FBQUEsU0FBQUQsb0JBQUF0USxDQUFBLEVBQUEyUCxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxRQUFBTyxDQUFBLEdBQUExRSxNQUFBLENBQUFvRyxjQUFBLFFBQUExQixDQUFBLHVCQUFBalEsQ0FBQSxJQUFBaVEsQ0FBQSxRQUFBSyxtQkFBQSxZQUFBc0IsbUJBQUE1UixDQUFBLEVBQUEyUCxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxhQUFBSyxFQUFBSixDQUFBLEVBQUFFLENBQUEsSUFBQVMsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsWUFBQTNQLENBQUEsZ0JBQUE2UixPQUFBLENBQUFsQyxDQUFBLEVBQUFFLENBQUEsRUFBQTdQLENBQUEsU0FBQTJQLENBQUEsR0FBQU0sQ0FBQSxHQUFBQSxDQUFBLENBQUFqUSxDQUFBLEVBQUEyUCxDQUFBLElBQUFoYSxLQUFBLEVBQUFrYSxDQUFBLEVBQUFpQyxVQUFBLEdBQUFwQyxDQUFBLEVBQUFxQyxZQUFBLEdBQUFyQyxDQUFBLEVBQUFzQyxRQUFBLEdBQUF0QyxDQUFBLE1BQUExUCxDQUFBLENBQUEyUCxDQUFBLElBQUFFLENBQUEsSUFBQUUsQ0FBQSxhQUFBQSxDQUFBLGNBQUFBLENBQUEsbUJBQUFPLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQTtBQURBO0FBQ0E7QUFDQTs7QUFFb0Q7QUFFaEI7QUFDNkI7QUFHUztBQVNuRSxJQUFLd0Ysd0JBQXdCLDBCQUF4QkEsd0JBQXdCO0VBQXhCQSx3QkFBd0IsQ0FBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCLENBQXhCQSx3QkFBd0I7RUFBQSxPQUF4QkEsd0JBQXdCO0FBQUE7QUFLN0IsSUFBTUMsaUJBQXdDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQUMsSUFFdERDLHFCQUFxQjtFQXNHeEMsU0FBQUEsc0JBQUEsRUFBc0I7SUFBQW5nQiwySUFBQSxPQUFBbWdCLHFCQUFBO0lBQ3BCLE1BQU0sSUFBSWpiLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQztFQUN6RjtFQUFDLE9BQUEzRSx3SUFBQSxDQUFBNGYscUJBQUE7SUFBQTNmLEdBQUE7SUFBQUMsR0FBQSxFQWhHRCxTQUFBQSxJQUFBLEVBQW9FO01BQ2xFLE9BQU8wZixxQkFBcUIsQ0FBQ0Msc0JBQXNCO0lBQ3JEO0VBQUM7SUFBQTVmLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8yZix5QkFBeUJBLENBQUEsRUFBUztNQUN2QyxJQUFJcmIsc0VBQWlCLENBQUNzYixtQkFBbUIsRUFBRTtRQUN6QyxJQUFNcEMsT0FBTyxHQUFHaUMscUJBQXFCLENBQUNJLGlDQUFpQyxDQUFDLENBQUMsQ0FDdEVWLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQztVQUFBLE9BQUlvVixxQkFBcUIsQ0FBQ3JXLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDJDQUEyQyxFQUFFUSxDQUFDLENBQUM7UUFBQSxFQUFDO01BQ3BHO0lBQ0Y7RUFBQztJQUFBdkssR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQThmLGtDQUFBLEdBQUFoQyw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQWdDLFFBQUE7UUFBQSxPQUFBbEMsWUFBQSxHQUFBQyxDQUFBLFdBQUFvQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQWhFLENBQUE7WUFBQTtjQUFBLE9BQUFnRSxRQUFBLENBQUFqRCxDQUFBLElBQ1N3RSxxQkFBcUIsQ0FBQ00sT0FBTyxHQUFHO2dCQUNyQ0MsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCQyxjQUFjLEVBQUVSLHFCQUFxQixDQUFDUyx5QkFBeUIsQ0FBQyxDQUFDLENBQzlEZixLQUFLLENBQUMsVUFBQTlVLENBQUMsRUFBSTtrQkFDVm9WLHFCQUFxQixDQUFDTSxPQUFPLEdBQUcsSUFBSTtrQkFFcEMsTUFBTTFWLENBQUM7Z0JBQ1QsQ0FBQztjQUNMLENBQUM7VUFBQTtRQUFBLEdBQUEwVCxPQUFBO01BQUEsQ0FDRjtNQUFBLFNBVlk4QixpQ0FBaUNBLENBQUE7UUFBQSxPQUFBQyxrQ0FBQSxDQUFBdEIsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBakNvTSxpQ0FBaUM7SUFBQTtFQUFBO0lBQUEvZixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBbWdCLDBCQUFBLEdBQUFyQyw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBWTlDLFNBQUFxRSxTQUFBO1FBQUEsSUFBQUosU0FBQTtVQUFBSyxVQUFBO1VBQUFDLHdCQUFBO1VBQUF0Z0IsS0FBQTtVQUFBdWdCLGFBQUE7VUFBQUMsTUFBQSxHQUFBL00sU0FBQTtRQUFBLE9BQUFvSSxZQUFBLEdBQUFDLENBQUEsV0FBQTJFLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkcsQ0FBQTtZQUFBO2NBQXVDOEYsU0FBcUMsR0FBQVEsTUFBQSxDQUFBdlcsTUFBQSxRQUFBdVcsTUFBQSxRQUFBNWEsU0FBQSxHQUFBNGEsTUFBQSxNQUFHLFVBQVU7Y0FBRUgsVUFBVSxHQUFBRyxNQUFBLENBQUF2VyxNQUFBLFFBQUF1VyxNQUFBLFFBQUE1YSxTQUFBLEdBQUE0YSxNQUFBLE1BQUdoQixpQkFBaUI7Y0FBRWMsd0JBQWtELEdBQUFFLE1BQUEsQ0FBQXZXLE1BQUEsUUFBQXVXLE1BQUEsUUFBQTVhLFNBQUEsR0FBQTRhLE1BQUEsTUFBR2pCLHdCQUF3QixDQUFDbUIsUUFBUTtjQUFBLE1BQzNNakIscUJBQXFCLENBQUNNLE9BQU8sSUFBSU4scUJBQXFCLENBQUNNLE9BQU8sQ0FBQ0MsU0FBUyxLQUFLQSxTQUFTLElBQUlNLHdCQUF3QixLQUFLZix3QkFBd0IsQ0FBQ21CLFFBQVEsSUFBSSxJQUFJLENBQUNDLGdDQUFnQyxDQUFDTixVQUFVLENBQUM7Z0JBQUFJLFNBQUEsQ0FBQXZHLENBQUE7Z0JBQUE7Y0FBQTtjQUN6TWxhLEtBQUssR0FBR3lmLHFCQUFxQixDQUFDTSxPQUFPLENBQUNFLGNBQWM7Y0FFMURSLHFCQUFxQixDQUFDTSxPQUFPLEdBQUcsSUFBSTtjQUFDLE9BQUFVLFNBQUEsQ0FBQXhGLENBQUEsSUFFOUJqYixLQUFLO1lBQUE7Y0FHUnVnQixhQUEyQyxHQUFHamMsc0VBQWlCLENBQUMwSSxtQ0FBbUMsR0FBRztnQkFBQ3NULHdCQUF3QixFQUFFQSx3QkFBd0IsS0FBS2Ysd0JBQXdCLENBQUNxQjtjQUFPLENBQUMsR0FBR2hiLFNBQVM7Y0FBQSxPQUFBNmEsU0FBQSxDQUFBeEYsQ0FBQSxJQUUxTXdFLHFCQUFxQixDQUFDQyxzQkFBc0IsQ0FBQzFmLEtBQUssQ0FBQzZnQixvQkFBb0IsQ0FBQ04sYUFBYSxDQUFDLENBQzFGMUQsSUFBSTtnQkFBQSxJQUFBeFcsSUFBQSxHQUFBeVgsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUFDLFNBQUEyQyxTQUFNdUIsY0FBYztrQkFBQSxJQUFBYSxzQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxPQUFBLEVBQUFDLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO2tCQUFBLE9BQUExRixZQUFBLEdBQUFDLENBQUEsV0FBQTZDLFNBQUE7b0JBQUEsa0JBQUFBLFNBQUEsQ0FBQXpFLENBQUE7c0JBQUE7d0JBQ2xCNEcsc0JBQXNCLEdBQUdiLGNBQWMsQ0FBQ2Esc0JBQXNCO3dCQUM5REMsaUJBQXNDLEdBQUcsRUFBRTt3QkFDM0NDLGlCQUFzQyxHQUFHLEVBQUU7d0JBQUEsS0FFN0NGLHNCQUFzQjswQkFBQW5DLFNBQUEsQ0FBQXpFLENBQUE7MEJBQUE7d0JBQUE7d0JBQ3hCbUcsVUFBVSxDQUFDclEsT0FBTyxDQUFDLFVBQUFtTixJQUFJLEVBQUk7MEJBQ3pCLElBQUlBLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ3BCNEQsaUJBQWlCLENBQUM5WCxJQUFJLENBQUNnWCxjQUFjLENBQUN1QixjQUFjLENBQUNyRSxJQUFJLEVBQUU7OEJBQUM2QyxTQUFTLEVBQVRBOzRCQUFTLENBQUMsQ0FBQyxDQUFDOzRCQUV4RTswQkFDRjswQkFFQSxJQUFJN0MsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDcEI2RCxpQkFBaUIsQ0FBQy9YLElBQUksQ0FBQ2dYLGNBQWMsQ0FBQ3VCLGNBQWMsQ0FBQ3JFLElBQUksRUFBRTs4QkFBQzZDLFNBQVMsRUFBVEE7NEJBQVMsQ0FBQyxDQUFDLENBQUM7NEJBRXhFOzBCQUNGO3dCQUNGLENBQUMsQ0FBQzt3QkFBQ2tCLEVBQUEsR0FHREgsaUJBQWlCO3dCQUFBSSxHQUFBLEdBQ2pCSCxpQkFBaUI7d0JBQUFJLEdBQUEsR0FDRG5CLGNBQWM7d0JBQUF0QixTQUFBLENBQUF6RSxDQUFBO3dCQUFBLE9BQ1orRixjQUFjLENBQUN3QixXQUFXLENBQUM3YixTQUFTLENBQUM7c0JBQUE7d0JBQUF5YixHQUFBLEdBQUExQyxTQUFBLENBQUEzRCxDQUFBO3dCQUFBLE9BQUEyRCxTQUFBLENBQUExRCxDQUFBOzBCQUh2RDhGLGlCQUFpQixFQUFBRyxFQUFBOzBCQUNqQkYsaUJBQWlCLEVBQUFHLEdBQUE7MEJBQ2pCbEIsY0FBYyxFQUFBbUIsR0FBQTswQkFDZE0sVUFBVSxFQUFBTDt3QkFBQTtzQkFBQTt3QkFJUkosT0FBTyxHQUFHakIsU0FBUyxLQUFLLFVBQVUsR0FBRzswQkFDekMyQixtQkFBbUIsRUFBRSxJQUFJOzBCQUN6QkMsbUJBQW1CLEVBQUU7d0JBQ3ZCLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQUFOLEdBQUEsR0FHWXJCLGNBQWM7d0JBQUF0QixTQUFBLENBQUF6RSxDQUFBO3dCQUFBLE9BQ1orRixjQUFjLENBQUN3QixXQUFXLENBQUNSLE9BQU8sQ0FBQztzQkFBQTt3QkFBQU0sR0FBQSxHQUFBNUMsU0FBQSxDQUFBM0QsQ0FBQTt3QkFBQSxPQUFBMkQsU0FBQSxDQUFBMUQsQ0FBQTswQkFEckRnRixjQUFjLEVBQUFxQixHQUFBOzBCQUNkSSxVQUFVLEVBQUFIO3dCQUFBO29CQUFBO2tCQUFBLEdBQUE3QyxRQUFBO2dCQUFBLENBRWI7Z0JBQUEsaUJBQUFILEVBQUE7a0JBQUEsT0FBQWxZLElBQUEsQ0FBQW1ZLEtBQUEsT0FBQS9LLFNBQUE7Z0JBQUE7Y0FBQSxJQUFDO1VBQUE7UUFBQSxHQUFBMk0sUUFBQTtNQUFBLENBQ0w7TUFBQSxTQWxEWUYseUJBQXlCQSxDQUFBO1FBQUEsT0FBQUMsMEJBQUEsQ0FBQTNCLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQXpCeU0seUJBQXlCO0lBQUE7RUFBQTtJQUFBcGdCLEdBQUE7SUFBQUUsS0FBQSxFQW9EdEMsU0FBZTJnQixnQ0FBZ0NBLENBQUNrQixXQUFrQyxFQUFXO01BQzNGLElBQUlBLFdBQVcsQ0FBQzVYLE1BQU0sS0FBS3VWLGlCQUFpQixDQUFDdlYsTUFBTSxFQUFFO1FBQ25ELE9BQU8sS0FBSztNQUNkO01BRUEsSUFBTTZYLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSXhNLEtBQTRCO1FBQUEsT0FBS0EsS0FBSyxDQUFDM0QsTUFBTSxDQUFDLFVBQUNvUSxjQUFjLEVBQUU1RSxJQUFJLEVBQUs7VUFDL0Y0RSxjQUFjLENBQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDNEUsY0FBYyxDQUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFFdEQsT0FBTzRFLGNBQWM7UUFDdkIsQ0FBQyxFQUFFO1VBQ0RDLEtBQUssRUFBRSxDQUFDO1VBQ1JDLEtBQUssRUFBRTtRQUNULENBQUMsQ0FBQztNQUFBO01BQ0YsSUFBTUMsaUJBQWlCLEdBQUdKLGVBQWUsQ0FBQ0QsV0FBVyxDQUFDO01BQ3RELElBQU1NLHdCQUF3QixHQUFHTCxlQUFlLENBQUN0QyxpQkFBaUIsQ0FBQztNQUVuRSxPQUFPMEMsaUJBQWlCLENBQUNGLEtBQUssS0FBS0csd0JBQXdCLENBQUNILEtBQUssSUFBSUUsaUJBQWlCLENBQUNELEtBQUssS0FBS0Usd0JBQXdCLENBQUNGLEtBQUs7SUFDakk7RUFBQztBQUFBO0FBQUExaUIsMklBQUEsQ0FwR2tCa2dCLHFCQUFxQixhQUNOMVgsNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLHVCQUF1QixDQUFDO0FBQUEzSSwySUFBQSxDQUQvRGtnQixxQkFBcUIsNEJBRTBDLElBQUl2Z0IsbURBQU8sQ0FBeUIsSUFBSW9nQixxRUFBNEIsQ0FBQyxDQUFDLENBQUM7QUFBQS9mLDJJQUFBLENBRnRJa2dCLHFCQUFxQjtBQUFBO0FBMkcxQ0EscUJBQXFCLENBQUNFLHlCQUF5QixDQUFDLENBQUMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNySWpEO0FBQ0E7QUFDQTtBQUZBLElBSXFCeUMsdUJBQXVCO0VBK0IxQyxTQUFBQSx3QkFBQSxFQUFzQjtJQUFBOWlCLDJJQUFBLE9BQUE4aUIsdUJBQUE7SUFDcEIsTUFBTSxJQUFJNWQsS0FBSyxDQUFDLHdFQUF3RSxDQUFDO0VBQzNGO0VBQUMsT0FBQTNFLHdJQUFBLENBQUF1aUIsdUJBQUE7SUFBQXRpQixHQUFBO0lBQUFFLEtBQUEsRUFoQ0QsU0FBT3FpQixrQkFBa0JBLENBQUM5QixhQUErQixFQUFvQjtNQUMzRSxJQUFNK0IsVUFBMEIsR0FBRyxFQUFFO01BRXJDLElBQUksQ0FBQy9CLGFBQWEsQ0FBQytCLFVBQVUsRUFBRTtRQUM3QixPQUFPL0IsYUFBYTtNQUN0QjtNQUVBLEtBQUssSUFBSWpHLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2lHLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQ3JZLE1BQU0sRUFBRXFRLENBQUMsRUFBRSxFQUFFO1FBQ3hELElBQU1pSSxJQUFjLEdBQUcsRUFBRTtRQUV6QixLQUFLLElBQUl2TixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEVBQUUsRUFBRTtVQUN0QyxJQUFNc0QsR0FBRyxHQUFHaUksYUFBYSxDQUFDK0IsVUFBVSxDQUFDaEksQ0FBQyxDQUFDLENBQUNpSSxJQUFJLENBQUN2TixLQUFLLENBQUM7VUFFbkQsSUFBSXNELEdBQUcsRUFBRTtZQUNQaUssSUFBSSxDQUFDdFosSUFBSSxDQUFDc1gsYUFBYSxDQUFDK0IsVUFBVSxDQUFDaEksQ0FBQyxDQUFDLENBQUNpSSxJQUFJLENBQUN2TixLQUFLLENBQUMsQ0FBQztVQUNwRDtRQUNGO1FBRUFzTixVQUFVLENBQUNyWixJQUFJLENBQUM7VUFDZHNaLElBQUksRUFBRUEsSUFBSTtVQUNWQyxRQUFRLEVBQUVqQyxhQUFhLENBQUMrQixVQUFVLENBQUNoSSxDQUFDLENBQUMsQ0FBQ2tJLFFBQVE7VUFDOUNDLFVBQVUsRUFBRWxDLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQ2hJLENBQUMsQ0FBQyxDQUFDbUk7UUFDMUMsQ0FBQyxDQUFDO01BQ0o7TUFFQWxDLGFBQWEsQ0FBQytCLFVBQVUsR0FBR0EsVUFBVTtNQUVyQyxPQUFPL0IsYUFBYTtJQUN0QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDaENILHVLQUFBbFcsQ0FBQSxFQUFBMFAsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUF6TixTQUFBLFlBQUErTixTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUE3RSxNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsQ0FBQTlOLFNBQUEsVUFBQWtPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBM1EsQ0FBQSxFQUFBNFEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBblcsSUFBQSxDQUFBc0YsQ0FBQSxNQUFBNlEsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQXBRLENBQUEsRUFBQTBRLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQTVRLE1BQUEsRUFBQThQLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQWpRLENBQUEsSUFBQWlRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQWxRLENBQUEsR0FBQW9RLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQS9aLEtBQUEsRUFBQXVhLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsQ0FBQWdCLE1BQUEsS0FBQXZCLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQWpRLENBQUEsY0FBQTBQLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFsSyxJQUFBLENBQUFvSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBalEsQ0FBQSxFQUFBa1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQTVhLEtBQUEsRUFBQStaLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWUsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXpCLENBQUEsR0FBQW5FLE1BQUEsQ0FBQTZGLGNBQUEsTUFBQWxCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBZSwwQkFBQSxDQUFBL08sU0FBQSxHQUFBK04sU0FBQSxDQUFBL04sU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUF2USxDQUFBLFdBQUF1TCxNQUFBLENBQUE4RixjQUFBLEdBQUE5RixNQUFBLENBQUE4RixjQUFBLENBQUFyUixDQUFBLEVBQUFtUiwwQkFBQSxLQUFBblIsQ0FBQSxDQUFBc1IsU0FBQSxHQUFBSCwwQkFBQSxFQUFBYixtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBK1AsQ0FBQSx5QkFBQS9QLENBQUEsQ0FBQW9DLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBcFEsQ0FBQSxXQUFBa1IsaUJBQUEsQ0FBQTlPLFNBQUEsR0FBQStPLDBCQUFBLEVBQUFiLG1CQUFBLENBQUFGLENBQUEsaUJBQUFlLDBCQUFBLEdBQUFiLG1CQUFBLENBQUFhLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBakIsbUJBQUEsQ0FBQWEsMEJBQUEsRUFBQXBCLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFvQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBeEIsQ0FBQSxFQUFBeUIsQ0FBQSxFQUFBbkIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBMUUsTUFBQSxDQUFBb0csY0FBQSxRQUFBMUIsQ0FBQSx1QkFBQWpRLENBQUEsSUFBQWlRLENBQUEsUUFBQUssbUJBQUEsWUFBQXNCLG1CQUFBNVIsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLFlBQUEzUCxDQUFBLGdCQUFBNlIsT0FBQSxDQUFBbEMsQ0FBQSxFQUFBRSxDQUFBLEVBQUE3UCxDQUFBLFNBQUEyUCxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBalEsQ0FBQSxFQUFBMlAsQ0FBQSxJQUFBaGEsS0FBQSxFQUFBa2EsQ0FBQSxFQUFBaUMsVUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsWUFBQSxHQUFBckMsQ0FBQSxFQUFBc0MsUUFBQSxHQUFBdEMsQ0FBQSxNQUFBMVAsQ0FBQSxDQUFBMlAsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXFEO0FBQ1k7QUFFN0I7QUFFQTtBQStCcEMsSUFBTTRJLHNCQUFzQixHQUFHLElBQUk7QUFBQyxJQUVmQyxvQkFBb0I7RUFVdkMsU0FBQUEscUJBQVkzQyxjQUErQixFQUFFNEMsV0FBd0IsRUFBRUMsc0JBQThCLEVBQUU7SUFBQXhqQiwySUFBQSxPQUFBc2pCLG9CQUFBO0lBQUFyakIsMklBQUE7SUFBQUEsMklBQUEsK0JBUnZELFNBQVM7SUFBQUEsMklBQUEsK0JBQ1QsU0FBUztJQUFBQSwySUFBQSx3QkFDYyxJQUFJTCxtREFBTyxDQUE4QixDQUFDLENBQUMsQ0FBQztJQUFBSywySUFBQTtJQUFBQSwySUFBQSw0QkFFdkYsSUFBSTtJQUFBQSwySUFBQSx5QkFDUSxJQUFJO0lBQUFBLDJJQUFBO0lBSTFDLElBQUksQ0FBQ3dqQixlQUFlLEdBQUc5QyxjQUFjO0lBQ3JDLElBQUksQ0FBQytDLHVCQUF1QixHQUFHRixzQkFBc0I7SUFDckQsSUFBSSxDQUFDRyxnQkFBZ0IsR0FBR0osV0FBVyxDQUFDSyxTQUFTLENBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsS0FBSztNQUFBLE9BQUlBLEtBQUssQ0FBQ2pHLElBQUk7SUFBQSxFQUFDLElBQUksRUFBRTtJQUU5RSxJQUFJLElBQUksQ0FBQzRGLGVBQWUsRUFBRTtNQUFBLElBQUFNLHFCQUFBLEVBQUFDLHNCQUFBO01BQ3hCLElBQUksQ0FBQ2hmLHNFQUFpQixDQUFDaWYsdUJBQXVCLEtBQUFGLHFCQUFBLEdBQUksSUFBSSxDQUFDTixlQUFlLGNBQUFNLHFCQUFBLGdCQUFBQyxzQkFBQSxHQUFwQkQscUJBQUEsQ0FBc0JHLHdCQUF3QixjQUFBRixzQkFBQSxlQUE5Q0Esc0JBQUEsQ0FBZ0RHLEdBQUcsRUFBRTtRQUNyRyxJQUFNQyxTQUFTLEdBQUcsSUFBSWhCLGtEQUFTLENBQUMsSUFBSSxDQUFDSyxlQUFlLENBQUNTLHdCQUF3QixDQUFDQyxHQUFHLENBQUM7UUFFbEYsSUFBSSxDQUFDRSxvQkFBb0IsR0FBR0QsU0FBUyxDQUFDRSxVQUFVO1FBQ2hELElBQUksQ0FBQ0Msb0JBQW9CLEdBQUdILFNBQVMsQ0FBQ0ksVUFBVTtNQUNsRDtNQUVBLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUM7SUFDeEI7RUFDRjtFQUFDLE9BQUFsa0Isd0lBQUEsQ0FBQStpQixvQkFBQTtJQUFBOWlCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBeUQ7TUFDdkQsT0FBTyxJQUFJLENBQUNpa0IsYUFBYTtJQUMzQjtFQUFDO0lBQUFsa0IsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUcsT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDOGpCLGlCQUFpQixHQUFHLEtBQUs7TUFDOUIsSUFBSSxDQUFDbEIsZUFBZSxHQUFHLElBQUk7TUFFM0IsSUFBSSxJQUFJLENBQUNtQixjQUFjLEVBQUU7UUFDdkJubEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFlBQVksQ0FBQyxJQUFJLENBQUN5VixjQUFjLENBQUM7UUFDbkQsSUFBSSxDQUFDQSxjQUFjLEdBQUcsSUFBSTtNQUM1QjtJQUNGO0VBQUM7SUFBQXBrQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBbWtCLGdCQUFBLEdBQUFyRyw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQWdDLFFBQUE7UUFBQSxJQUFBcUcsc0JBQUE7VUFBQS9qQixLQUFBO1FBQUEsSUFBQWdrQixRQUFBLEVBQUFDLGtCQUFBLEVBQUE5RyxPQUFBO1FBQUEsT0FBQTNCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FBQSxLQUNNNVYsc0VBQWlCLENBQUNpZ0IsNEJBQTRCO2dCQUFBckcsUUFBQSxDQUFBaEUsQ0FBQTtnQkFBQTtjQUFBO2NBQUFnRSxRQUFBLENBQUFoRSxDQUFBO2NBQUEsT0FDMUIsSUFBSSxDQUFDc0sscUJBQXFCLENBQUMsQ0FBQztZQUFBO2NBQTVDaEgsUUFBTyxHQUFBVSxRQUFBLENBQUFsRCxDQUFBO2NBQUEsT0FBQWtELFFBQUEsQ0FBQWpELENBQUE7WUFBQTtjQUtmO2NBQ01xSixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJalMsSUFBa0I7Z0JBQUEsT0FBYUEsSUFBSSxDQUFDb1MsRUFBRSxDQUFDcGhCLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUdnUCxJQUFJLENBQUNvUyxFQUFFLENBQUNwaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxFQUFFO2NBQUE7Y0FBQTZhLFFBQUEsQ0FBQWhFLENBQUE7Y0FBQSxRQUFBa0ssc0JBQUEsR0FDbkgsSUFBSSxDQUFDckIsZUFBZSxjQUFBcUIsc0JBQUEsdUJBQXBCQSxzQkFBQSxDQUFzQk0sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUN2RDdILElBQUksQ0FBQyxVQUFBOEgsS0FBSyxFQUFJO2dCQUNiLElBQU1DLGFBQW1DLEdBQUcsQ0FBQyxDQUFDO2dCQUU5QyxJQUFJRCxLQUFLLEVBQUU7a0JBQ1QsSUFBSUUsYUFBYSxHQUFHeGtCLEtBQUksQ0FBQzJpQix1QkFBdUI7a0JBQ2hELElBQUk4QiwyQkFBK0M7a0JBRW5ESCxLQUFLLENBQUMzVSxPQUFPLENBQUMsVUFBQStVLE1BQU0sRUFBSTtvQkFDdEIsSUFBSUEsTUFBTSxDQUFDOWQsSUFBSSxLQUFLLGdCQUFnQixJQUFJOGQsTUFBTSxDQUFDQyxvQkFBb0IsRUFBRTtzQkFDbkVILGFBQWEsR0FBR0UsTUFBTSxDQUFDQyxvQkFBb0IsR0FBRyxJQUFJO3NCQUVsRCxJQUFJSixhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQzFCQSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUNDLGFBQWEsR0FBR0EsYUFBYTtzQkFDdEQ7c0JBRUEsSUFBSUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMxQkEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDQyxhQUFhLEdBQUdBLGFBQWE7c0JBQ3REO29CQUNGO29CQUVBLElBQUlFLE1BQU0sQ0FBQzlkLElBQUksS0FBSyxnQkFBZ0IsSUFBSThkLE1BQU0sQ0FBQ0QsMkJBQTJCLEVBQUU7c0JBQzFFQSwyQkFBMkIsR0FBR0MsTUFBTSxDQUFDRCwyQkFBMkI7c0JBRWhFLElBQUlGLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDMUJBLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQ0UsMkJBQTJCLEdBQUdBLDJCQUEyQjtzQkFDbEY7c0JBRUEsSUFBSUYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMxQkEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDRSwyQkFBMkIsR0FBR0EsMkJBQTJCO3NCQUNsRjtvQkFDRjtvQkFFQSxJQUFJQyxNQUFNLENBQUM5ZCxJQUFJLEtBQUssYUFBYSxFQUFFO3NCQUNqQyxJQUFNa1csS0FBSSxHQUFHNEgsTUFBTSxDQUFDNUgsSUFBSSxJQUFJNEgsTUFBTSxDQUFDRSxTQUFTLElBQUlYLGtCQUFrQixDQUFDUyxNQUFNLENBQUM7c0JBQzFFLElBQUlHLEtBQUssR0FBRyxFQUFFO3NCQUVkUCxLQUFLLENBQUMzVSxPQUFPLENBQUMsVUFBQXFDLElBQUksRUFBSTt3QkFDcEIsSUFBSUEsSUFBSSxDQUFDb1MsRUFBRSxLQUFLTSxNQUFNLENBQUNJLE9BQU8sRUFBRTswQkFDOUJELEtBQUssR0FBRzdTLElBQUksQ0FBQytTLFFBQVE7d0JBQ3ZCO3NCQUNGLENBQUMsQ0FBQztzQkFFRixJQUFJakksS0FBSSxJQUFJOWMsS0FBSSxDQUFDNGlCLGdCQUFnQixDQUFDNWYsUUFBUSxDQUFDOFosS0FBSSxDQUFDLEVBQUU7d0JBQUEsSUFBQWtJLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO3dCQUNoRCxJQUFNQyxLQUFLLEdBQUdiLE1BQU0sQ0FBQ2MsYUFBYSxJQUFJLENBQUM7d0JBQ3ZDLElBQU1DLHFCQUFxQixJQUFBVCxxQkFBQSxJQUFBQyxzQkFBQSxHQUFHamxCLEtBQUksQ0FBQzJqQixhQUFhLENBQUNoa0IsS0FBSyxjQUFBc2xCLHNCQUFBLHdCQUFBQyxzQkFBQSxHQUF4QkQsc0JBQUEsQ0FBMkJuSSxLQUFJLENBQUMsY0FBQW9JLHNCQUFBLHVCQUFoQ0Esc0JBQUEsQ0FBa0NNLGFBQWEsY0FBQVIscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxDQUFDO3dCQUNsRixJQUFNVSxVQUFVLEdBQUdILEtBQUssR0FBR0UscUJBQXFCO3dCQUNoRCxJQUFNRSxTQUFTLEdBQUdqQixNQUFNLENBQUMxSCxTQUFTLElBQUksRUFBQW1JLHNCQUFBLEdBQUFubEIsS0FBSSxDQUFDMmpCLGFBQWEsQ0FBQ2hrQixLQUFLLGNBQUF3bEIsc0JBQUEsd0JBQUFDLHNCQUFBLEdBQXhCRCxzQkFBQSxDQUEyQnJJLEtBQUksQ0FBQyxjQUFBc0ksc0JBQUEsdUJBQWhDQSxzQkFBQSxDQUFrQ3BJLFNBQVMsS0FBSSxDQUFDLENBQUM7d0JBQ3ZGLElBQU00SSxPQUFPLEdBQUdGLFVBQVUsSUFBSUMsU0FBUyxHQUFHeFYsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxHQUFHc1YsVUFBVSxHQUNqRUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7d0JBRXZCcEIsYUFBYSxDQUFDekgsS0FBSSxDQUFDLEdBQUc7MEJBQ3BCK0ksSUFBSSxFQUFFbkIsTUFBTSxDQUFDbUIsSUFBSTswQkFDakJqQixTQUFTLEVBQUU5SCxLQUFJOzBCQUNmRSxTQUFTLEVBQUUwSCxNQUFNLENBQUMxSCxTQUFTOzBCQUMzQjRJLE9BQU8sRUFBUEEsT0FBTzswQkFDUEosYUFBYSxFQUFFZCxNQUFNLENBQUNjLGFBQWE7MEJBQ25DTSxXQUFXLEVBQUVwQixNQUFNLENBQUNvQixXQUFXOzBCQUMvQkMsZUFBZSxFQUFFckIsTUFBTSxDQUFDcUIsZUFBZTswQkFDdkNsQixLQUFLLEVBQUVBLEtBQUssSUFBSTdrQixLQUFJLENBQUNnbUIsY0FBYyxDQUFDbEosS0FBSSxDQUFDOzBCQUN6QzBILGFBQWEsRUFBYkE7d0JBQ0YsQ0FBQzt3QkFFRCxJQUFJRSxNQUFNLENBQUNELDJCQUEyQixJQUFJQSwyQkFBMkIsRUFBRTswQkFDckVGLGFBQWEsQ0FBQ3pILEtBQUksQ0FBQyxDQUFDMkgsMkJBQTJCLEdBQUdDLE1BQU0sQ0FBQ0QsMkJBQTJCLElBQUlBLDJCQUEyQjt3QkFDckg7d0JBRUEsSUFBSTNILEtBQUksS0FBSyxPQUFPLEtBQUF1SSxzQkFBQSxHQUFJcmxCLEtBQUksQ0FBQzJqQixhQUFhLENBQUNoa0IsS0FBSyxjQUFBMGxCLHNCQUFBLGdCQUFBQyxzQkFBQSxHQUF4QkQsc0JBQUEsQ0FBMEJ6RCxLQUFLLGNBQUEwRCxzQkFBQSxlQUEvQkEsc0JBQUEsQ0FBaUNXLGFBQWEsRUFBRTswQkFDdEUxQixhQUFhLENBQUN6SCxLQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRzRILE1BQU0sQ0FBQ3VCLGFBQWE7MEJBRTNELElBQU1DLEdBQUcsR0FBRyxDQUFDeEIsTUFBTSxDQUFDdUIsYUFBYSxHQUFHam1CLEtBQUksQ0FBQzJqQixhQUFhLENBQUNoa0IsS0FBSyxDQUFDaWlCLEtBQUssQ0FBQ3FFLGFBQWEsS0FDN0UxQixhQUFhLENBQUN6SCxLQUFJLENBQUMsQ0FBQ0UsU0FBUyxHQUFHaGQsS0FBSSxDQUFDMmpCLGFBQWEsQ0FBQ2hrQixLQUFLLENBQUNpaUIsS0FBSyxDQUFDNUUsU0FBUyxDQUFDLEdBQzFFLElBQUk7MEJBRU51SCxhQUFhLENBQUN6SCxLQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBR29KLEdBQUcsR0FBRy9WLElBQUksQ0FBQ08sS0FBSyxDQUFDd1YsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO3dCQUNwRTtzQkFDRjtvQkFDRjtrQkFDRixDQUFDLENBQUM7Z0JBQ0o7Z0JBRUFsbUIsS0FBSSxDQUFDMmpCLGFBQWEsQ0FBQ2hrQixLQUFLLEdBQUc0a0IsYUFBYTtjQUMxQyxDQUFDLENBQUMsQ0FBQy9ILElBQUksQ0FBQyxZQUFNO2dCQUNaLElBQUl4YyxLQUFJLENBQUM0akIsaUJBQWlCLEVBQUU7a0JBQzFCNWpCLEtBQUksQ0FBQzZqQixjQUFjLEdBQUdubEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQztvQkFBQSxPQUFNM0UsS0FBSSxDQUFDMGpCLGVBQWUsQ0FBQyxDQUFDO2tCQUFBLEdBQUVwQixzQkFBc0IsQ0FBQztnQkFDMUc7Y0FDRixDQUFDLENBQUM7WUFBQTtjQXRGRW5GLE9BQU8sR0FBQVUsUUFBQSxDQUFBbEQsQ0FBQTtZQUFBO2NBQUEsT0FBQWtELFFBQUEsQ0FBQWpELENBQUE7VUFBQTtRQUFBLEdBQUE4QyxPQUFBO01BQUEsQ0F1RmQ7TUFBQSxTQWhHYWdHLGVBQWVBLENBQUE7UUFBQSxPQUFBSSxnQkFBQSxDQUFBM0YsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBZnNRLGVBQWU7SUFBQTtFQUFBO0lBQUFqa0IsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXdtQixzQkFBQSxHQUFBMUksNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQWtHN0IsU0FBQTJDLFNBQUE7UUFBQSxJQUFBK0gsc0JBQUE7VUFBQTNSLE1BQUE7UUFBQSxJQUFBMEksT0FBQTtRQUFBLE9BQUEzQixZQUFBLEdBQUFDLENBQUEsV0FBQTZDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBekUsQ0FBQTtZQUFBO2NBQUF5RSxTQUFBLENBQUF6RSxDQUFBO2NBQUEsUUFBQXVNLHNCQUFBLEdBQ3dCLElBQUksQ0FBQzFELGVBQWUsY0FBQTBELHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JDLGNBQWMsQ0FBQyxDQUFDLENBQUM3SixJQUFJLENBQUMsVUFBQThILEtBQUssRUFBSTtnQkFDekUsSUFBTUMsYUFBbUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlDLElBQUlDLGFBQWEsR0FBRy9QLE1BQUksQ0FBQ2tPLHVCQUF1QjtnQkFFaEQyQixLQUFLLENBQUNnQyxNQUFNLENBQUMsQ0FBQyxDQUFDM1csT0FBTyxDQUFDLFVBQUErVSxNQUFNLEVBQUk7a0JBQy9CQSxNQUFNLENBQUM2QixLQUFLLENBQUMsQ0FBQyxDQUFDNVcsT0FBTyxDQUFDLFVBQUFwTSxJQUFJLEVBQUk7b0JBQzdCLElBQUlBLElBQUksS0FBSyxTQUFTLEVBQUU7c0JBQ3RCaWhCLGFBQWEsR0FBR0UsTUFBTSxDQUFDOEIsSUFBSSxDQUFDampCLElBQUksQ0FBQztvQkFDbkM7a0JBQ0YsQ0FBQyxDQUFDO2tCQUVGLElBQUltaEIsTUFBTSxDQUFDOWQsSUFBSSxLQUFLLE1BQU0sRUFBRTtvQkFBQSxJQUFBNmYscUJBQUEsRUFBQUMsc0JBQUE7b0JBQzFCLElBQU05QixTQUFTLEdBQUdGLE1BQU0sQ0FBQzhCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzVXLFFBQVEsQ0FBQyxDQUFDO29CQUVyRDJVLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLEdBQUc7c0JBQUM1SCxTQUFTLEVBQUU3ZCxJQUFJLENBQUNDLEdBQUcsQ0FBQztvQkFBQyxDQUFDO29CQUNsRG1sQixhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHRixNQUFNLENBQUM4QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM1VyxRQUFRLENBQUMsQ0FBQztvQkFDakUyVSxhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHQSxTQUFTO29CQUNqREwsYUFBYSxDQUFDSyxTQUFTLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBR0YsTUFBTSxDQUFDOEIsSUFBSSxDQUFDLGVBQWUsQ0FBQztvQkFDeEVqQyxhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHRixNQUFNLENBQUM4QixJQUFJLENBQUMsYUFBYSxDQUFDO29CQUNwRWpDLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBR0YsTUFBTSxDQUFDOEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDO29CQUM1RWpDLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUdGLE1BQU0sQ0FBQzhCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzVXLFFBQVEsQ0FBQyxDQUFDLElBQUk2RSxNQUFJLENBQUN1UixjQUFjLENBQUNwQixTQUFTLENBQUM7b0JBQzdHTCxhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHSixhQUFhO29CQUV6RCxJQUFJSSxTQUFTLEtBQUssT0FBTyxLQUFBNkIscUJBQUEsR0FBSWhTLE1BQUksQ0FBQ2tQLGFBQWEsQ0FBQ2hrQixLQUFLLGNBQUE4bUIscUJBQUEsZ0JBQUFDLHNCQUFBLEdBQXhCRCxxQkFBQSxDQUEwQjdFLEtBQUssY0FBQThFLHNCQUFBLGVBQS9CQSxzQkFBQSxDQUFpQ1QsYUFBYSxFQUFFO3NCQUMzRTFCLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUdGLE1BQU0sQ0FBQzhCLElBQUksQ0FBQyxlQUFlLENBQUM7c0JBQ3hFakMsYUFBYSxDQUFDSyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDTCxhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDcUIsYUFBYSxHQUFHeFIsTUFBSSxDQUFDa1AsYUFBYSxDQUFDaGtCLEtBQUssQ0FBQ2lpQixLQUFLLENBQUNxRSxhQUFhLEtBQ3JIMUIsYUFBYSxDQUFDSyxTQUFTLENBQUMsQ0FBQzVILFNBQVMsR0FBR3ZJLE1BQUksQ0FBQ2tQLGFBQWEsQ0FBQ2hrQixLQUFLLENBQUNpaUIsS0FBSyxDQUFDNUUsU0FBUyxDQUFDLEdBQ2pGLElBQUksSUFBSSxDQUFDO29CQUNYO2tCQUNGO2dCQUNGLENBQUMsQ0FBQztnQkFDRnZJLE1BQUksQ0FBQ2tQLGFBQWEsQ0FBQ2hrQixLQUFLLEdBQUc0a0IsYUFBYTtjQUMxQyxDQUFDLENBQUMsQ0FBQy9ILElBQUksQ0FBQyxZQUFNO2dCQUNaLElBQUkvSCxNQUFJLENBQUNtUCxpQkFBaUIsRUFBRTtrQkFDMUJuUCxNQUFJLENBQUNvUCxjQUFjLEdBQUdubEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQztvQkFBQSxPQUFNOFAsTUFBSSxDQUFDaVAsZUFBZSxDQUFDLENBQUM7a0JBQUEsR0FBRXBCLHNCQUFzQixDQUFDO2dCQUMxRztjQUNGLENBQUMsQ0FBQztZQUFBO2NBcENJbkYsT0FBTyxHQUFBbUIsU0FBQSxDQUFBM0QsQ0FBQTtZQUFBO2NBQUEsT0FBQTJELFNBQUEsQ0FBQTFELENBQUE7VUFBQTtRQUFBLEdBQUF5RCxRQUFBO01BQUEsQ0FxQ2Q7TUFBQSxTQXRDYThGLHFCQUFxQkEsQ0FBQTtRQUFBLE9BQUFnQyxzQkFBQSxDQUFBaEksS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBckIrUSxxQkFBcUI7SUFBQTtFQUFBO0lBQUExa0IsR0FBQTtJQUFBRSxLQUFBLEVBd0NuQyxTQUFRcW1CLGNBQWNBLENBQUNwZixJQUFZLEVBQVU7TUFDM0MsUUFBUUEsSUFBSTtRQUNWLEtBQUssT0FBTztVQUNWLE9BQU8sSUFBSSxDQUFDMGMsb0JBQW9CLElBQUksU0FBUztRQUMvQyxLQUFLLE9BQU87VUFDVixPQUFPLElBQUksQ0FBQ0Usb0JBQW9CLElBQUksU0FBUztRQUMvQztVQUNFLE9BQU8sU0FBUztNQUNwQjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdE9IO0FBQ0E7QUFDQTtBQUZBLElBSXFCbkIsU0FBUztFQU81QixTQUFBQSxVQUFZZSxHQUFXLEVBQUU7SUFBQW5rQiwySUFBQSxPQUFBb2pCLFNBQUE7SUFBQW5qQiwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUN2QixJQUFJLENBQUN5bkIsSUFBSSxHQUFHdkQsR0FBRztJQUVmLElBQU13RCxlQUFlLEdBQUcsSUFBSSxDQUFDRCxJQUFJLENBQUMza0IsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUN2RCxJQUFNNmtCLGdCQUFnQixHQUFHLElBQUksQ0FBQ0YsSUFBSSxDQUFDM2tCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztJQUUxRCxJQUFJLENBQUM4a0IsV0FBVyxHQUFHLElBQUksQ0FBQ0MsVUFBVSxDQUFDLE9BQU8sRUFBRUgsZUFBZSxDQUFDO0lBQzVELElBQUksQ0FBQ0ksV0FBVyxHQUFHLElBQUksQ0FBQ0QsVUFBVSxDQUFDLE9BQU8sRUFBRUgsZUFBZSxDQUFDO0lBQzVELElBQUksQ0FBQ0ssb0JBQW9CLEdBQUcsSUFBSSxDQUFDQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUVMLGdCQUFnQixDQUFDO0lBQ2hGLElBQUksQ0FBQ00sb0JBQW9CLEdBQUcsSUFBSSxDQUFDRCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUVMLGdCQUFnQixDQUFDO0VBQ2xGO0VBQUMsT0FBQXJuQix3SUFBQSxDQUFBNmlCLFNBQUE7SUFBQTVpQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXlCO01BQ3ZCLE9BQU8sSUFBSSxDQUFDb25CLFdBQVc7SUFDekI7RUFBQztJQUFBcm5CLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBeUI7TUFDdkIsT0FBTyxJQUFJLENBQUNzbkIsV0FBVztJQUN6QjtFQUFDO0lBQUF2bkIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtQztNQUNqQyxPQUFPLElBQUksQ0FBQ3VuQixvQkFBb0I7SUFDbEM7RUFBQztJQUFBeG5CLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUM7TUFDakMsT0FBTyxJQUFJLENBQUN5bkIsb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQTFuQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRdW5CLG9CQUFvQkEsQ0FBQ3RnQixJQUFZLEVBQUVpZ0IsZ0JBQTBCLEVBQVc7TUFDOUUsSUFBTU8saUJBQWlCLEdBQUdQLGdCQUFnQixDQUFDUSxJQUFJLENBQUMsVUFBQUMsUUFBUTtRQUFBLE9BQUlBLFFBQVEsQ0FBQ3JkLFVBQVUsQ0FBQ3JELElBQUksQ0FBQztNQUFBLEVBQUM7TUFFdEYsSUFBSSxDQUFDd2dCLGlCQUFpQixFQUFFO1FBQ3RCLE9BQU8sS0FBSztNQUNkO01BRUEsT0FBTyxDQUFDQSxpQkFBaUIsQ0FBQ3BrQixRQUFRLGFBQWEsQ0FBQztJQUNsRDtFQUFDO0lBQUF2RCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRb25CLFVBQVVBLENBQUNuZ0IsSUFBWSxFQUFFZ2dCLGVBQTBCLEVBQVU7TUFBQSxJQUFBVyxxQkFBQTtNQUNuRSxJQUFNQyxLQUFLLEdBQUcsRUFBQUQscUJBQUEsR0FBQVgsZUFBZSxDQUFDUyxJQUFJLENBQUMsVUFBQUksT0FBTztRQUFBLE9BQUlBLE9BQU8sQ0FBQ3prQixRQUFRLE1BQUFULE1BQUEsQ0FBTXFFLElBQUksQ0FBRSxDQUFDO01BQUEsRUFBQyxjQUFBMmdCLHFCQUFBLHVCQUE5REEscUJBQUEsQ0FBZ0V2bEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7TUFDakcsSUFBTTBsQixhQUFhLEdBQUdkLGVBQWUsQ0FBQ1MsSUFBSSxDQUFDLFVBQUFJLE9BQU87UUFBQSxPQUFJQSxPQUFPLENBQUN6a0IsUUFBUSxhQUFBVCxNQUFBLENBQWFpbEIsS0FBSyxDQUFFLENBQUM7TUFBQSxFQUFDO01BQzVGLElBQU1HLFNBQVMsR0FBRyxDQUFBRCxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRTFsQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksRUFBRTtNQUNwRCxJQUFNNGxCLFNBQVMsR0FBR0QsU0FBUyxDQUFDM2xCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFFekMsT0FBTzRsQixTQUFTO0lBQ2xCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ3ZESCx1S0FBQTVkLENBQUEsRUFBQTBQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBek4sU0FBQSxZQUFBK04sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUE5TixTQUFBLFVBQUFrTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQTNRLENBQUEsRUFBQTRRLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQW5XLElBQUEsQ0FBQXNGLENBQUEsTUFBQTZRLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUFwUSxDQUFBLEVBQUEwUSxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUE1USxNQUFBLEVBQUE4UCxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFqUSxDQUFBLElBQUFpUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUFsUSxDQUFBLEdBQUFvUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUEvWixLQUFBLEVBQUF1YSxDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFnQixNQUFBLEtBQUF2QixDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFqUSxDQUFBLGNBQUEwUCxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBbEssSUFBQSxDQUFBb0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQWpRLENBQUEsRUFBQWtRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUE1YSxLQUFBLEVBQUErWixDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFlLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF6QixDQUFBLEdBQUFuRSxNQUFBLENBQUE2RixjQUFBLE1BQUFsQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWUsMEJBQUEsQ0FBQS9PLFNBQUEsR0FBQStOLFNBQUEsQ0FBQS9OLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBdlEsQ0FBQSxXQUFBdUwsTUFBQSxDQUFBOEYsY0FBQSxHQUFBOUYsTUFBQSxDQUFBOEYsY0FBQSxDQUFBclIsQ0FBQSxFQUFBbVIsMEJBQUEsS0FBQW5SLENBQUEsQ0FBQXNSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQStQLENBQUEseUJBQUEvUCxDQUFBLENBQUFvQyxTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFELENBQUEsR0FBQXBRLENBQUEsV0FBQWtSLGlCQUFBLENBQUE5TyxTQUFBLEdBQUErTywwQkFBQSxFQUFBYixtQkFBQSxDQUFBRixDQUFBLGlCQUFBZSwwQkFBQSxHQUFBYixtQkFBQSxDQUFBYSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWpCLG1CQUFBLENBQUFhLDBCQUFBLEVBQUFwQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBb0IsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXhCLENBQUEsRUFBQXlCLENBQUEsRUFBQW5CLENBQUE7QUFBQSxTQUFBRCxvQkFBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQTFFLE1BQUEsQ0FBQW9HLGNBQUEsUUFBQTFCLENBQUEsdUJBQUFqUSxDQUFBLElBQUFpUSxDQUFBLFFBQUFLLG1CQUFBLFlBQUFzQixtQkFBQTVSLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxZQUFBM1AsQ0FBQSxnQkFBQTZSLE9BQUEsQ0FBQWxDLENBQUEsRUFBQUUsQ0FBQSxFQUFBN1AsQ0FBQSxTQUFBMlAsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWpRLENBQUEsRUFBQTJQLENBQUEsSUFBQWhhLEtBQUEsRUFBQWthLENBQUEsRUFBQWlDLFVBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFlBQUEsR0FBQXJDLENBQUEsRUFBQXNDLFFBQUEsR0FBQXRDLENBQUEsTUFBQTFQLENBQUEsQ0FBQTJQLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBO0FBQ3FEO0FBQ0Q7QUFHYTtBQUFBLElBRzNEbU8scUJBQXFCO0VBSXpCLFNBQUFBLHNCQUFZM0gsYUFBZ0MsRUFBRTtJQUFBamhCLDJJQUFBLE9BQUE0b0IscUJBQUE7SUFBQTNvQiwySUFBQSxrQkFIVndJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztJQUFBM0ksMklBQUE7SUFJbEYsSUFBSStFLHNFQUFpQixDQUFDNmpCLDhCQUE4QixFQUFFO01BQ3BEO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUNwRixlQUFlLEdBQUcsSUFBSXFGLHVCQUF1QixDQUFDN0gsYUFBYSxDQUFDO01BRWpFO0lBQ0Y7SUFFQSxJQUFJLENBQUN3QyxlQUFlLEdBQUcsSUFBSWhrQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDb08saUJBQWlCLENBQUNtUyxhQUFhLENBQUM7RUFDL0U7RUFBQyxPQUFBMWdCLHdJQUFBLENBQUFxb0IscUJBQUE7SUFBQXBvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDZ2pCLGVBQWU7SUFDN0I7RUFBQztJQUFBampCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEQ7TUFBQSxJQUFBc2pCLHFCQUFBO01BQzFELE9BQU8sRUFBQUEscUJBQUEsT0FBSSxDQUFDTixlQUFlLGNBQUFNLHFCQUFBLHVCQUFwQkEscUJBQUEsQ0FBc0JnRix1QkFBdUIsS0FBSSxJQUFJO0lBQzlEO0VBQUM7SUFBQXZvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZEO01BQUEsSUFBQXVqQixzQkFBQTtNQUMzRCxPQUFPLEVBQUFBLHNCQUFBLE9BQUksQ0FBQ1AsZUFBZSxjQUFBTyxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCRSx3QkFBd0IsS0FBSSxJQUFJO0lBQy9EO0VBQUM7SUFBQTFqQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXFEO01BQUEsSUFBQXFrQixzQkFBQTtNQUNuRCxPQUFPLEVBQUFBLHNCQUFBLE9BQUksQ0FBQ3JCLGVBQWUsY0FBQXFCLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JrRSxlQUFlLEtBQUksSUFBSTtJQUN0RDtFQUFDO0lBQUF4b0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1RDtNQUFBLElBQUEwbUIsc0JBQUE7TUFDckQsT0FBTyxFQUFBQSxzQkFBQSxPQUFJLENBQUMxRCxlQUFlLGNBQUEwRCxzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCOEIsa0JBQWtCLEtBQUksSUFBSTtJQUN6RDtFQUFDO0lBQUF6b0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUFBLElBQUF5b0Isc0JBQUE7TUFDdEMsT0FBTyxTQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ3pGLGVBQWUsY0FBQXlGLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JDLGdCQUFnQixNQUFLLFVBQVU7SUFDckU7RUFBQztJQUFBM29CLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFBQSxJQUFBMm9CLHNCQUFBO01BQ3RDLE9BQU8sU0FBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUMzRixlQUFlLGNBQUEyRixzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCQyxnQkFBZ0IsTUFBSyxVQUFVO0lBQ3JFO0VBQUM7SUFBQTdvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQUEsSUFBQTZvQixzQkFBQTtNQUNyQyxPQUFPLENBQUN0a0Isc0VBQWlCLENBQUN1a0IsdUJBQXVCLElBQUksU0FBQUQsc0JBQUEsR0FBTyxJQUFJLENBQUM3RixlQUFlLGNBQUE2RixzQkFBQSx1QkFBcEJBLHNCQUFBLENBQXNCRSxlQUFlLE1BQUssVUFBVTtJQUNsSDtFQUFDO0lBQUFocEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUFBLElBQUFncEIsc0JBQUE7TUFDcEMsT0FBTyxDQUFDemtCLHNFQUFpQixDQUFDd0gscUJBQXFCLElBQUksU0FBQWlkLHNCQUFBLEdBQU8sSUFBSSxDQUFDaEcsZUFBZSxjQUFBZ0csc0JBQUEsdUJBQXBCQSxzQkFBQSxDQUFzQnZILGNBQWMsTUFBSyxVQUFVO0lBQy9HO0VBQUM7SUFBQTFoQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBZ3BCLFlBQUEsR0FBQWxMLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBZ0MsUUFBa0JrRCxPQUF5QjtRQUFBLElBQUE1Z0IsS0FBQTtRQUFBLE9BQUF3YixZQUFBLEdBQUFDLENBQUEsV0FBQW9DLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBaEUsQ0FBQTtZQUFBO2NBQUEsSUFDcEMsSUFBSSxDQUFDNkksZUFBZTtnQkFBQTdFLFFBQUEsQ0FBQWhFLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ2pCLElBQUkxVixLQUFLLENBQUMsK0JBQStCLENBQUM7WUFBQTtjQUFBLEtBRzlDRixzRUFBaUIsQ0FBQzJrQiw2QkFBNkI7Z0JBQUEvSyxRQUFBLENBQUFoRSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBZ0UsUUFBQSxDQUFBakQsQ0FBQSxJQUsxQyxJQUFJeUMsT0FBTyxDQUFDLFVBQUN3TCxPQUFPLEVBQUVDLE1BQU07Z0JBQUEsT0FBSzlvQixLQUFJLENBQUMwaUIsZUFBZSxDQUFDdEIsV0FBVyxDQUFDeUgsT0FBTyxFQUFFQyxNQUFNLEVBQUVsSSxPQUFPLENBQUM7Y0FBQSxFQUFDO1lBQUE7Y0FBQSxPQUFBL0MsUUFBQSxDQUFBakQsQ0FBQSxJQUc5RixJQUFJLENBQUM4SCxlQUFlLENBQUN0QixXQUFXLENBQUNSLE9BQU8sQ0FBQztVQUFBO1FBQUEsR0FBQWxELE9BQUE7TUFBQSxDQUNqRDtNQUFBLFNBZEswRCxXQUFXQSxDQUFBbEQsRUFBQTtRQUFBLE9BQUF5SyxZQUFBLENBQUF4SyxLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFYZ08sV0FBVztJQUFBO0VBQUE7SUFBQTNoQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBb3BCLGFBQUEsR0FBQXRMLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0FnQmpCLFNBQUEyQyxTQUFtQnVDLE9BQTBCO1FBQUEsSUFBQW5NLE1BQUE7UUFBQSxPQUFBK0csWUFBQSxHQUFBQyxDQUFBLFdBQUE2QyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXpFLENBQUE7WUFBQTtjQUFBLElBQ3RDLElBQUksQ0FBQzZJLGVBQWU7Z0JBQUFwRSxTQUFBLENBQUF6RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNqQixJQUFJMVYsS0FBSyxDQUFDLCtCQUErQixDQUFDO1lBQUE7Y0FBQSxLQUc5Q0Ysc0VBQWlCLENBQUMya0IsNkJBQTZCO2dCQUFBdEssU0FBQSxDQUFBekUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQXlFLFNBQUEsQ0FBQTFELENBQUEsSUFLMUMsSUFBSXlDLE9BQU8sQ0FBQyxVQUFDd0wsT0FBTyxFQUFFQyxNQUFNO2dCQUFBLE9BQUtyVSxNQUFJLENBQUNpTyxlQUFlLENBQUNzRyxZQUFZLENBQUNILE9BQU8sRUFBRUMsTUFBTSxFQUFFbEksT0FBTyxDQUFDO2NBQUEsRUFBQztZQUFBO2NBQUEsT0FBQXRDLFNBQUEsQ0FBQTFELENBQUEsSUFHL0YsSUFBSSxDQUFDOEgsZUFBZSxDQUFDc0csWUFBWSxDQUFDcEksT0FBTyxDQUFDO1VBQUE7UUFBQSxHQUFBdkMsUUFBQTtNQUFBLENBQ2xEO01BQUEsU0FkSzJLLFlBQVlBLENBQUFDLEdBQUE7UUFBQSxPQUFBRixhQUFBLENBQUE1SyxLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFaNFYsWUFBWTtJQUFBO0VBQUE7SUFBQXZwQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBdXBCLG9CQUFBLEdBQUF6TCw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBZ0JsQixTQUFBcUUsU0FBMEJvSixXQUFzQztRQUFBLE9BQUEzTixZQUFBLEdBQUFDLENBQUEsV0FBQTJFLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkcsQ0FBQTtZQUFBO2NBQUEsSUFDekQsSUFBSSxDQUFDNkksZUFBZTtnQkFBQXRDLFNBQUEsQ0FBQXZHLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ2pCLElBQUkxVixLQUFLLENBQUMsK0JBQStCLENBQUM7WUFBQTtjQUFBLE9BQUFpYyxTQUFBLENBQUF4RixDQUFBLElBRzNDLElBQUksQ0FBQzhILGVBQWUsQ0FBQzBHLG1CQUFtQixDQUFDbmxCLHNFQUFpQixDQUFDMmtCLDZCQUE2QixHQUM3RixJQUFJNWEscUJBQXFCLENBQUNtYixXQUFXLENBQUMsR0FBR0EsV0FBVyxDQUFDO1VBQUE7UUFBQSxHQUFBcEosUUFBQTtNQUFBLENBQ3hEO01BQUEsU0FQS3FKLG1CQUFtQkEsQ0FBQUMsR0FBQTtRQUFBLE9BQUFILG9CQUFBLENBQUEvSyxLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFuQmdXLG1CQUFtQjtJQUFBO0VBQUE7SUFBQTNwQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMnBCLHFCQUFBLEdBQUE3TCw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBU3pCLFNBQUE2TixTQUEyQkosV0FBc0M7UUFBQSxJQUFBSyxnQkFBQTtRQUFBLElBQUFDLFNBQUE7UUFBQSxPQUFBak8sWUFBQSxHQUFBQyxDQUFBLFdBQUFpTyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTdQLENBQUE7WUFBQTtjQUFBLElBQzFELElBQUksQ0FBQzZJLGVBQWU7Z0JBQUFnSCxTQUFBLENBQUE3UCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNqQixJQUFJMVYsS0FBSyxDQUFDLCtCQUErQixDQUFDO1lBQUE7Y0FHNUNzbEIsU0FBUyxJQUFBRCxnQkFBQSxHQUFHTCxXQUFXLENBQUMvRixHQUFHLGNBQUFvRyxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUI3bkIsS0FBSyxDQUFDLFlBQVksQ0FBQztjQUV0RCxJQUFJOG5CLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMxZ0IsT0FBTyxDQUFDK0ssSUFBSSxDQUFDLCtCQUErQixDQUFDO2NBQ3BEO2NBQUMsT0FBQTRWLFNBQUEsQ0FBQTlPLENBQUEsSUFFTSxJQUFJLENBQUM4SCxlQUFlLENBQUNpSCxvQkFBb0IsQ0FBQzFsQixzRUFBaUIsQ0FBQzJrQiw2QkFBNkIsR0FDOUYsSUFBSTVhLHFCQUFxQixDQUFDbWIsV0FBVyxDQUFDLEdBQUdBLFdBQVcsQ0FBQztVQUFBO1FBQUEsR0FBQUksUUFBQTtNQUFBLENBQ3hEO01BQUEsU0FiS0ksb0JBQW9CQSxDQUFBQyxHQUFBO1FBQUEsT0FBQU4scUJBQUEsQ0FBQW5MLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQXBCdVcsb0JBQW9CO0lBQUE7RUFBQTtJQUFBbHFCLEdBQUE7SUFBQUUsS0FBQSxFQWUxQixTQUFBa3FCLFVBQVVBLENBQUEsRUFBbUI7TUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQ25ILGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQ21ILFVBQVUsQ0FBQyxDQUFDO0lBQzFDO0VBQUM7SUFBQXBxQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbXFCLFlBQVlBLENBQUEsRUFBcUI7TUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQ3BILGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQ29ILFlBQVksQ0FBQyxDQUFDO0lBQzVDO0VBQUM7SUFBQXJxQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBMGtCLFFBQVFBLENBQUMwRixRQUFrQyxFQUEyQjtNQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDckgsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDdWUsZUFBZSxDQUFDMkIsUUFBUSxDQUFDMEYsUUFBUSxDQUFDO0lBQ2hEO0VBQUM7SUFBQXRxQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBMG1CLGNBQWNBLENBQUEsRUFBbUM7TUFBQSxJQUFBMkQsTUFBQTtNQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDdEgsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSWtaLE9BQU8sQ0FBQyxVQUFBd0wsT0FBTyxFQUFJO1FBQzVCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLElBQU0xTCxPQUFPLEdBQUc2TSxNQUFJLENBQUN0SCxlQUFlLENBQUMyQixRQUFRLENBQUN3RSxPQUFPLENBQUM7TUFDeEQsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBcHBCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF3SCxnQkFBZ0JBLENBQTRDUCxJQUFPLEVBQUVNLFFBQW1GLEVBQUUwWixPQUEyQyxFQUFRO01BQzNNLElBQUksQ0FBQyxJQUFJLENBQUM4QixlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJdmUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsSUFBSSxDQUFDdWUsZUFBZSxDQUFDdmIsZ0JBQWdCLENBQUNQLElBQUksRUFBRU0sUUFBUSxFQUFFMFosT0FBTyxDQUFDO0lBQ2hFO0VBQUM7SUFBQW5oQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBMEgsbUJBQW1CQSxDQUE0Q1QsSUFBTyxFQUFFTSxRQUFtRixFQUFFMFosT0FBMkMsRUFBUTtNQUM5TSxJQUFJLENBQUMsSUFBSSxDQUFDOEIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQ3JiLG1CQUFtQixDQUFDVCxJQUFJLEVBQUVNLFFBQVEsRUFBRTBaLE9BQU8sQ0FBQztJQUNuRTtFQUFDO0lBQUFuaEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQThvQixlQUFlQSxDQUFBLEVBQXdCO01BQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMvRixlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJdmUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsT0FBTyxJQUFJLENBQUN1ZSxlQUFlLENBQUMrRixlQUFlLENBQUMsQ0FBQztJQUMvQztFQUFDO0lBQUFocEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXdoQixjQUFjQSxDQUFDNWQsSUFBWSxFQUFFcWQsT0FBOEIsRUFBcUI7TUFDOUUsSUFBSSxDQUFDLElBQUksQ0FBQzhCLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQ3ZCLGNBQWMsQ0FBQzVkLElBQUksRUFBRXFkLE9BQU8sQ0FBQztJQUMzRDtFQUFDO0lBQUFuaEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXNxQixTQUFTQSxDQUFDekgsV0FBd0IsRUFBUTtNQUFBLElBQUEwSCxNQUFBO01BQ3hDMUgsV0FBVyxDQUFDSyxTQUFTLENBQUMsQ0FBQyxDQUFDbFQsT0FBTyxDQUFDLFVBQUFvVCxLQUFLLEVBQUk7UUFDdkMsSUFBSSxDQUFDbUgsTUFBSSxDQUFDeEgsZUFBZSxFQUFFO1VBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztRQUNsRDtRQUVBK2xCLE1BQUksQ0FBQ3hILGVBQWUsQ0FBQ3lILFFBQVEsQ0FBQ3BILEtBQUssQ0FBQztNQUN0QyxDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUF0akIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXlvQixnQkFBZ0JBLENBQUEsRUFBcUI7TUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQzFGLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQzBGLGdCQUFnQixDQUFDLENBQUM7SUFDaEQ7RUFBQztJQUFBM29CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUEyb0IsZ0JBQWdCQSxDQUFDcEksYUFBK0IsRUFBUTtNQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDd0MsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQzRGLGdCQUFnQixDQUFDcEksYUFBYSxDQUFDO0lBQ3REO0VBQUM7SUFBQXpnQixHQUFBO0lBQUFDLEdBQUEsRUFVRCxTQUFBQSxJQUFBLEVBQW1GO01BQ2pGLElBQUksQ0FBQyxJQUFJLENBQUNnakIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDdWUsZUFBZSxDQUFDMEgsT0FBTztJQUNyQyxDQUFDO0lBQUFwUyxHQUFBLEVBZEQsU0FBQUEsSUFBWXFTLE9BQTRFLEVBQUU7TUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQzNILGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxJQUFJLENBQUN1ZSxlQUFlLENBQUMwSCxPQUFPLEdBQUdDLE9BQU87SUFDeEM7RUFBQztJQUFBNXFCLEdBQUE7SUFBQUMsR0FBQSxFQWtCRCxTQUFBQSxJQUFBLEVBQXNHO01BQ3BHLElBQUksQ0FBQyxJQUFJLENBQUNnakIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDdWUsZUFBZSxDQUFDNEgsY0FBYztJQUM1QyxDQUFDO0lBQUF0UyxHQUFBLEVBZEQsU0FBQUEsSUFBbUJxUyxPQUF3RixFQUFFO01BQzNHLElBQUksQ0FBQyxJQUFJLENBQUMzSCxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJdmUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsSUFBSSxDQUFDdWUsZUFBZSxDQUFDNEgsY0FBYyxHQUFHRCxPQUFPO0lBQy9DO0VBQUM7SUFBQTVxQixHQUFBO0lBQUFDLEdBQUEsRUFrQkQsU0FBQUEsSUFBQSxFQUEyRjtNQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDZ2pCLGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxPQUFPLElBQUksQ0FBQ3VlLGVBQWUsQ0FBQzZILHVCQUF1QjtJQUNyRCxDQUFDO0lBQUF2UyxHQUFBLEVBZEQsU0FBQUEsSUFBNEJxUyxPQUFvRSxFQUFFO01BQ2hHLElBQUksQ0FBQyxJQUFJLENBQUMzSCxlQUFlLEVBQUU7UUFDekIsTUFBTSxJQUFJdmUsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ2xEO01BRUEsSUFBSSxDQUFDdWUsZUFBZSxDQUFDNkgsdUJBQXVCLEdBQUdGLE9BQU87SUFDeEQ7RUFBQztJQUFBNXFCLEdBQUE7SUFBQUMsR0FBQSxFQWtCRCxTQUFBQSxJQUFBLEVBQThGO01BQzVGLElBQUksQ0FBQyxJQUFJLENBQUNnakIsZUFBZSxFQUFFO1FBQ3pCLE1BQU0sSUFBSXZlLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztNQUNsRDtNQUVBLE9BQU8sSUFBSSxDQUFDdWUsZUFBZSxDQUFDOEgsMEJBQTBCO0lBQ3hELENBQUM7SUFBQXhTLEdBQUEsRUFkRCxTQUFBQSxJQUErQnFTLE9BQW9FLEVBQUU7TUFDbkcsSUFBSSxDQUFDLElBQUksQ0FBQzNILGVBQWUsRUFBRTtRQUN6QixNQUFNLElBQUl2ZSxLQUFLLENBQUMsK0JBQStCLENBQUM7TUFDbEQ7TUFFQSxJQUFJLENBQUN1ZSxlQUFlLENBQUM4SCwwQkFBMEIsR0FBR0gsT0FBTztJQUMzRDtFQUFDO0lBQUE1cUIsR0FBQTtJQUFBRSxLQUFBLEVBVUQsU0FBQThxQixLQUFLQSxDQUFBLEVBQVM7TUFBQSxJQUFBQyxzQkFBQTtNQUNaLENBQUFBLHNCQUFBLE9BQUksQ0FBQ2hJLGVBQWUsY0FBQWdJLHNCQUFBLHVCQUFwQkEsc0JBQUEsQ0FBc0JELEtBQUssQ0FBQyxDQUFDO0lBQy9CO0VBQUM7SUFBQWhyQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBRyxPQUFPQSxDQUFBLEVBQVM7TUFDZCxJQUFJLENBQUM0aUIsZUFBZSxHQUFHLElBQUk7SUFDN0I7RUFBQztBQUFBO0FBR0gsK0RBQWVtRixxQkFBcUIsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkNuU3BDLHVLQUFBN2QsQ0FBQSxFQUFBMFAsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUF6TixTQUFBLFlBQUErTixTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUE3RSxNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsQ0FBQTlOLFNBQUEsVUFBQWtPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBM1EsQ0FBQSxFQUFBNFEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBblcsSUFBQSxDQUFBc0YsQ0FBQSxNQUFBNlEsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQXBRLENBQUEsRUFBQTBRLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQTVRLE1BQUEsRUFBQThQLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQWpRLENBQUEsSUFBQWlRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQWxRLENBQUEsR0FBQW9RLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQS9aLEtBQUEsRUFBQXVhLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsQ0FBQWdCLE1BQUEsS0FBQXZCLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQWpRLENBQUEsY0FBQTBQLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFsSyxJQUFBLENBQUFvSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBalEsQ0FBQSxFQUFBa1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQTVhLEtBQUEsRUFBQStaLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWUsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXpCLENBQUEsR0FBQW5FLE1BQUEsQ0FBQTZGLGNBQUEsTUFBQWxCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBZSwwQkFBQSxDQUFBL08sU0FBQSxHQUFBK04sU0FBQSxDQUFBL04sU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUF2USxDQUFBLFdBQUF1TCxNQUFBLENBQUE4RixjQUFBLEdBQUE5RixNQUFBLENBQUE4RixjQUFBLENBQUFyUixDQUFBLEVBQUFtUiwwQkFBQSxLQUFBblIsQ0FBQSxDQUFBc1IsU0FBQSxHQUFBSCwwQkFBQSxFQUFBYixtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBK1AsQ0FBQSx5QkFBQS9QLENBQUEsQ0FBQW9DLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBcFEsQ0FBQSxXQUFBa1IsaUJBQUEsQ0FBQTlPLFNBQUEsR0FBQStPLDBCQUFBLEVBQUFiLG1CQUFBLENBQUFGLENBQUEsaUJBQUFlLDBCQUFBLEdBQUFiLG1CQUFBLENBQUFhLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBakIsbUJBQUEsQ0FBQWEsMEJBQUEsRUFBQXBCLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFvQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBeEIsQ0FBQSxFQUFBeUIsQ0FBQSxFQUFBbkIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBMUUsTUFBQSxDQUFBb0csY0FBQSxRQUFBMUIsQ0FBQSx1QkFBQWpRLENBQUEsSUFBQWlRLENBQUEsUUFBQUssbUJBQUEsWUFBQXNCLG1CQUFBNVIsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLFlBQUEzUCxDQUFBLGdCQUFBNlIsT0FBQSxDQUFBbEMsQ0FBQSxFQUFBRSxDQUFBLEVBQUE3UCxDQUFBLFNBQUEyUCxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBalEsQ0FBQSxFQUFBMlAsQ0FBQSxJQUFBaGEsS0FBQSxFQUFBa2EsQ0FBQSxFQUFBaUMsVUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsWUFBQSxHQUFBckMsQ0FBQSxFQUFBc0MsUUFBQSxHQUFBdEMsQ0FBQSxNQUFBMVAsQ0FBQSxDQUFBMlAsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7QUFDcUQ7QUFHTztBQUFBLElBRXZDdUYsNEJBQTRCO0VBQUEsU0FBQUEsNkJBQUE7SUFBQWhnQiwySUFBQSxPQUFBZ2dCLDRCQUFBO0VBQUE7RUFBQSxPQUFBemYsd0lBQUEsQ0FBQXlmLDRCQUFBO0lBQUF4ZixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBZ3JCLHFCQUFBLEdBQUFsTiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBQy9DLFNBQUFnQyxRQUEyQndDLGFBQWdDO1FBQUEsT0FBQTFFLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FBQSxPQUFBZ0UsUUFBQSxDQUFBakQsQ0FBQSxJQUNsRCxJQUFJeUMsT0FBTyxDQUFrQixVQUFBdU4sNEJBQTRCLEVBQUk7Z0JBQ2xFLElBQU1yTix1QkFBdUIsR0FBRzdlLGdFQUFXLENBQUN5USxTQUFTLENBQUMsVUFBQXFPLFdBQVcsRUFBSTtrQkFDbkUsSUFBSSxDQUFDQSxXQUFXLEVBQUU7b0JBQ2hCO2tCQUNGO2tCQUVBb04sNEJBQTRCLENBQUMsSUFBSS9DLDhEQUFxQixDQUFDM0gsYUFBYSxDQUFDLENBQUM7a0JBQ3RFM0MsdUJBQXVCLENBQUN6ZCxPQUFPLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDO2NBQ0osQ0FBQyxDQUFDO1VBQUE7UUFBQSxHQUFBNGQsT0FBQTtNQUFBLENBQ0g7TUFBQSxTQVhLOEMsb0JBQW9CQSxDQUFBdEMsRUFBQTtRQUFBLE9BQUF5TSxxQkFBQSxDQUFBeE0sS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBcEJvTixvQkFBb0I7SUFBQTtFQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1Q1QjtBQUNBO0FBQ0E7QUFGQSxJQU9xQjFoQixlQUFlO0VBR2xDLFNBQUFBLGdCQUFZK3JCLE9BQW1CLEVBQUU7SUFBQTVyQiwySUFBQSxPQUFBSCxlQUFBO0lBQUFJLDJJQUFBO0lBQy9CLElBQUksQ0FBQzRyQixRQUFRLEdBQUdELE9BQU87RUFDekI7RUFBQyxPQUFBcnJCLHdJQUFBLENBQUFWLGVBQUE7SUFBQVcsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFlO01BQ2IsT0FBTyxJQUFJLENBQUNvckIsUUFBUSxDQUFDbnJCLEtBQUs7SUFDNUI7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBd1AsU0FBU0EsQ0FBQ2pJLFFBQTRCLEVBQWU7TUFDbkQsT0FBTyxJQUFJLENBQUM0akIsUUFBUSxDQUFDM2IsU0FBUyxDQUFDakksUUFBUSxDQUFDO0lBQzFDO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEJIO0FBQ0E7QUFDQTs7QUFHNEM7QUFBQSxJQUd0QzZqQixrQkFBa0IsMEJBQUFDLFdBQUE7RUFDdEIsU0FBQUQsbUJBQVlFLFNBQWMsRUFBRS9qQixRQUFXLEVBQUU7SUFBQWpJLDJJQUFBLE9BQUE4ckIsa0JBQUE7SUFBQSxPQUFBRyxVQUFBLE9BQUFILGtCQUFBLEdBQ2pDLFlBQU07TUFDVixJQUFNSSxHQUFHLEdBQUdGLFNBQVMsQ0FBQzNvQixPQUFPLENBQUM0RSxRQUFRLENBQUM7TUFFdkMsSUFBSWlrQixHQUFHLElBQUksQ0FBQyxFQUFFO1FBQ1pGLFNBQVMsQ0FBQ3BXLE1BQU0sQ0FBQ3NXLEdBQUcsRUFBRSxDQUFDLENBQUM7TUFDMUI7SUFDRixDQUFDO0VBQ0g7RUFBQ0MscUlBQUEsQ0FBQUwsa0JBQUEsRUFBQUMsV0FBQTtFQUFBLE9BQUF4ckIsd0lBQUEsQ0FBQXVyQixrQkFBQTtBQUFBLEVBVGlDcHNCLHdEQUFVO0FBQUEsSUFZekJFLE9BQU87RUFJMUIsU0FBQUEsUUFBWWMsS0FBUSxFQUFFO0lBQUFWLDJJQUFBLE9BQUFKLE9BQUE7SUFBQUssMklBQUE7SUFBQUEsMklBQUE7SUFDcEIsSUFBSSxDQUFDbXNCLFVBQVUsR0FBRyxFQUFFO0lBQ3BCLElBQUksQ0FBQ0MsTUFBTSxHQUFHM3JCLEtBQUs7RUFDckI7RUFBQyxPQUFBSCx3SUFBQSxDQUFBWCxPQUFBO0lBQUFZLEdBQUE7SUFBQUMsR0FBQSxFQXdCRCxTQUFBQSxJQUFBLEVBQWU7TUFDYixPQUFPLElBQUksQ0FBQzRyQixNQUFNO0lBQ3BCLENBQUM7SUFBQXRULEdBQUEsRUF4QkQsU0FBQUEsSUFBVXJZLEtBQVEsRUFBRTtNQUNsQixJQUFJNHJCLE9BQU8sR0FBRyxJQUFJLENBQUNELE1BQU0sS0FBSzNyQixLQUFLO01BRW5DLElBQUk0ckIsT0FBTyxJQUFJNXJCLEtBQUssRUFBRTtRQUNwQixJQUFNNnJCLFVBQVUsR0FBRzdyQixLQUFrQztRQUVyRCxJQUFJLE9BQU82ckIsVUFBVSxDQUFDQyxNQUFNLEtBQUssVUFBVSxFQUFFO1VBQzNDRixPQUFPLEdBQUcsQ0FBQ0MsVUFBVSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDSCxNQUFNLENBQUM7UUFDM0M7TUFDRjtNQUVBLElBQUksQ0FBQ0MsT0FBTyxFQUFFO1FBQ1o7TUFDRjtNQUVBLElBQUksQ0FBQ0QsTUFBTSxHQUFHM3JCLEtBQUs7TUFFbkIsU0FBQStyQixFQUFBLE1BQUFDLElBQUEsR0FBQS9NLDhJQUFBLENBQTJCLElBQUksQ0FBQ3lNLFVBQVUsR0FBQUssRUFBQSxHQUFBQyxJQUFBLENBQUEvaEIsTUFBQSxFQUFBOGhCLEVBQUEsSUFBRztRQUF4QyxJQUFNeGtCLFFBQVEsR0FBQXlrQixJQUFBLENBQUFELEVBQUE7UUFDakJ4a0IsUUFBUSxDQUFDdkgsS0FBSyxDQUFDO01BQ2pCO0lBQ0Y7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFNRCxTQUFBd1AsU0FBU0EsQ0FBQ2pJLFFBQTRCLEVBQWU7TUFDbkQsSUFBSSxDQUFDbWtCLFVBQVUsQ0FBQ3ppQixJQUFJLENBQUMxQixRQUFRLENBQUM7TUFFOUJBLFFBQVEsQ0FBQyxJQUFJLENBQUNva0IsTUFBTSxDQUFDO01BRXJCLE9BQU8sSUFBSVAsa0JBQWtCLENBQXFCLElBQUksQ0FBQ00sVUFBVSxFQUFFbmtCLFFBQVEsQ0FBQztJQUM5RTtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3REg7QUFDQTtBQUNBOztBQUVxRDtBQUFBLElBRWhDMFIsV0FBVztFQUFBLFNBQUFBLFlBQUE7SUFBQTNaLDJJQUFBLE9BQUEyWixXQUFBO0VBQUE7RUFBQSxPQUFBcFosd0lBQUEsQ0FBQW9aLFdBQUE7SUFBQW5aLEdBQUE7SUFBQUUsS0FBQSxFQUM5QixTQUFPMFoscUJBQXFCQSxDQUFDcEIsR0FBVyxFQUFVO01BQ2hELElBQUk7UUFDRixJQUFNMlQsT0FBTyxHQUFHLElBQUlsdEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ29GLEdBQUcsQ0FBQ2tULEdBQUcsQ0FBQztRQUU5QyxPQUFPMlQsT0FBTyxDQUFDQyxNQUFNO01BQ3ZCLENBQUMsQ0FBQyxPQUFPN2hCLENBQUMsRUFBRTtRQUNWLE9BQU8sRUFBRTtNQUNYO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2ZIO0FBQ0E7QUFDQTs7QUFFdUQ7QUFDSDtBQUNkO0FBQ0Y7QUFDZ0I7QUFDSTtBQUVRO0FBQ1I7QUFDTTtBQUNpQjtBQUMwQjtBQUVuQztBQUNOO0FBQ1A7QUFDSjtBQUNzQjtBQUVWO0FBQ3ZCO0FBQ0Y7QUFDWTtBQUNHO0FBQ0k7QUFNM0QsSUFBTXBDLFlBQVksR0FBRyxFQUFBbWtCLHFCQUFBLEdBQUFydEIsaUVBQVcsQ0FBQ3VRLFdBQVcsQ0FBQyxDQUFDLENBQUN0UCxLQUFLLGNBQUFvc0IscUJBQUEsdUJBQS9CQSxxQkFBQSxDQUFpQ25rQixZQUFZLEtBQUl6SSxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0FBQUMsSUFlNURxSSxHQUFHO0VBbVd0QixTQUFBQSxJQUFBLEVBQXNCO0lBQUF4SSwySUFBQSxPQUFBd0ksR0FBQTtJQUNwQixNQUFNLElBQUl0RCxLQUFLLENBQUMsb0RBQW9ELENBQUM7RUFDdkU7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQWlJLEdBQUE7SUFBQWhJLEdBQUE7SUFBQUMsR0FBQSxFQTFVRCxTQUFBQSxJQUFBLEVBQWtDO01BQ2hDLE9BQU9rSSxZQUFZO0lBQ3JCO0VBQUM7SUFBQW5JLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUQ7TUFDakQsT0FBTyxJQUFJLENBQUNnTCxvQkFBb0I7SUFDbEM7RUFBQztJQUFBakwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUNwQyxPQUFPLElBQUksQ0FBQzRZLFFBQVE7SUFDdEI7RUFBQztJQUFBN1ksR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxQztNQUNuQyxPQUFPK0gsR0FBRyxDQUFDdWtCLGdCQUFnQjtJQUM3QjtFQUFDO0lBQUF2c0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtQztNQUNqQyxPQUFPK0gsR0FBRyxDQUFDd2tCLGdCQUFnQjtJQUM3QjtFQUFDO0lBQUF4c0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPK0gsR0FBRyxDQUFDeWtCLG9CQUFvQjtJQUNqQztFQUFDO0lBQUF6c0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPK0gsR0FBRyxDQUFDMGtCLHFCQUFxQjtJQUNsQztFQUFDO0lBQUExc0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0RTtNQUMxRSxPQUFPK0gsR0FBRyxDQUFDMmtCLDhCQUE4QjtJQUMzQztFQUFDO0lBQUEzc0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPK0gsR0FBRyxDQUFDNGtCLDRCQUE0QjtJQUN6QztFQUFDO0lBQUE1c0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyRDtNQUN6RCxPQUFPK0gsR0FBRyxDQUFDNmtCLHFDQUFxQztJQUNsRDtFQUFDO0lBQUE3c0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPK0gsR0FBRyxDQUFDOGtCLDZCQUE2QjtJQUMxQztFQUFDO0lBQUE5c0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEwRDtNQUN4RCxPQUFPK0gsR0FBRyxDQUFDK2tCLG9DQUFvQztJQUNqRDtFQUFDO0lBQUEvc0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRDtNQUNwRCxPQUFPLElBQUksQ0FBQytzQixnQ0FBZ0M7SUFDOUM7RUFBQztJQUFBaHRCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkQ7TUFDekQsT0FBTyxJQUFJLENBQUNndEIscUNBQXFDO0lBQ25EO0VBQUM7SUFBQWp0QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStFO01BQzdFLE9BQU8sSUFBSSxDQUFDaXRCLGdCQUFnQjtJQUM5QjtFQUFDO0lBQUFsdEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRjtNQUNqRixPQUFPLElBQUksQ0FBQ2t0QixrQkFBa0I7SUFDaEM7RUFBQztJQUFBbnRCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkU7TUFDekUsT0FBTyxJQUFJLENBQUNtdEIsWUFBWTtJQUMxQjtFQUFDO0lBQUFwdEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPK0gsR0FBRyxDQUFDcWxCLGVBQWU7SUFDNUI7RUFBQztJQUFBcnRCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkU7TUFDekUsT0FBTyxJQUFJLENBQUNxdEIsMkJBQTJCO0lBQ3pDO0VBQUM7SUFBQXR0QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJDO01BQ3pDLE9BQU8sSUFBSSxDQUFDc3RCLGFBQWE7SUFDM0I7RUFBQztJQUFBdnRCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0U7TUFDbEUsT0FBTyxJQUFJLENBQUN1dEIsK0NBQStDO0lBQzdELENBQUM7SUFBQWpWLEdBQUEsRUFFRCxTQUFBQSxJQUEwRGtWLGFBQXFCLEVBQUU7TUFDL0UsSUFBSSxDQUFDRCwrQ0FBK0MsR0FBR0MsYUFBYTtJQUN0RTtFQUFDO0lBQUF6dEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPeUQsb0VBQW1CLENBQUNVLHFDQUFxQyxDQUFDLElBQUksQ0FBQ2tGLE9BQU8sQ0FBQ29KLFNBQVMsQ0FBQ3hTLEtBQUssQ0FBQztJQUNoRztFQUFDO0lBQUFGLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0Q7TUFDOUMsT0FBT3VELHdFQUFxQixDQUFDVSx5Q0FBeUMsQ0FBQzhELEdBQUcsQ0FBQzBsQixlQUFlLENBQUN4dEIsS0FBSyxDQUFDO0lBQ25HO0VBQUM7SUFBQUYsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPYyw2REFBZTtJQUN4QjtFQUFDO0lBQUFmLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU95dEIsMkJBQTJCQSxDQUFBLEVBQVM7TUFBQSxJQUFBcHRCLEtBQUE7TUFDekMsSUFBTXF0QixzQkFBc0IsR0FBRzNsQiw2REFBYSxDQUFDMmxCLHNCQUFzQjtNQUVuRUEsc0JBQXNCLENBQUM1VSxTQUFTLEdBQUdoUixHQUFHLENBQUMwUixlQUFlO01BQ3REa1Usc0JBQXNCLENBQUN6bEIsWUFBWSxHQUFHSCxHQUFHLENBQUNHLFlBQVk7TUFFdEQsSUFBTTBsQixrQkFBa0IsR0FBRzdsQixHQUFHLENBQUMyUSxZQUFZLENBQUNqSixTQUFTLENBQUMsVUFBQWtKLFdBQVcsRUFBSTtRQUNuRWdWLHNCQUFzQixDQUFDaFYsV0FBVyxHQUFHQSxXQUFXO01BQ2xELENBQUMsQ0FBQztNQUNGLElBQU1rVixtQkFBbUIsR0FBRzlsQixHQUFHLENBQUMrbEIsWUFBWSxDQUFDcmUsU0FBUyxDQUFDLFVBQUF4UCxLQUFLLEVBQUk7UUFDOUQsSUFBTTh0QixpQkFBaUIsR0FBR3p0QixLQUFJLENBQUMrSSxPQUFPLENBQUNnSyxTQUFTLENBQUNwVCxLQUFLLENBQUMwbkIsSUFBSSxDQUFDLFVBQUF4VixRQUFRO1VBQUEsT0FBSUEsUUFBUSxZQUFZK0Qsb0VBQWlCO1FBQUEsRUFBQztRQUU5RyxJQUFJNlgsaUJBQWlCLEVBQUU7VUFDckJKLHNCQUFzQixDQUFDcFYsR0FBRyxHQUFHdFksS0FBSztVQUVsQ0ssS0FBSSxDQUFDK0ksT0FBTyxDQUFDZ0ssU0FBUyxDQUFDakIsTUFBTSxDQUFDMmIsaUJBQWlCLENBQUM7VUFDaER6dEIsS0FBSSxDQUFDK0ksT0FBTyxDQUFDZ0ssU0FBUyxDQUFDMVMsR0FBRyxDQUFDLElBQUl1VixvRUFBaUIsQ0FBQ3lYLHNCQUFzQixDQUFDLENBQUM7VUFDekVydEIsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsK0JBQStCLEVBQUVxa0Isc0JBQXNCLENBQUNwVixHQUFHLENBQUM7UUFDaEY7TUFDRixDQUFDLENBQUM7TUFDRixJQUFNeVYsY0FBYyxHQUFHam1CLEdBQUcsQ0FBQzZRLFFBQVEsQ0FBQ25KLFNBQVMsQ0FBQyxVQUFBb0osT0FBTyxFQUFJO1FBQ3ZELElBQU1rVixpQkFBaUIsR0FBR3p0QixLQUFJLENBQUMrSSxPQUFPLENBQUNnSyxTQUFTLENBQUNwVCxLQUFLLENBQUMwbkIsSUFBSSxDQUFDLFVBQUF4VixRQUFRO1VBQUEsT0FBSUEsUUFBUSxZQUFZK0Qsb0VBQWlCO1FBQUEsRUFBQztRQUU5RyxJQUFJNlgsaUJBQWlCLElBQUlsVixPQUFPLEVBQUU7VUFDaEM4VSxzQkFBc0IsQ0FBQzlVLE9BQU8sR0FBR0EsT0FBTztVQUV4Q3ZZLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ2dLLFNBQVMsQ0FBQ2pCLE1BQU0sQ0FBQzJiLGlCQUFpQixDQUFDO1VBQ2hEenRCLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ2dLLFNBQVMsQ0FBQzFTLEdBQUcsQ0FBQyxJQUFJdVYsb0VBQWlCLENBQUN5WCxzQkFBc0IsQ0FBQyxDQUFDO1VBQ3pFcnRCLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG1DQUFtQyxFQUFFcWtCLHNCQUFzQixDQUFDOVUsT0FBTyxDQUFDO1FBQ3hGO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBOVksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT2d1Qix5QkFBeUJBLENBQUEsRUFBUztNQUN2Q2xtQixHQUFHLENBQUNxbEIsZUFBZSxHQUFHalUsZ0VBQWMsQ0FBQ0MsaUJBQWlCLENBQUNnVCxnRUFBWSxDQUFDdmhCLEdBQUcsQ0FBQzVLLEtBQUssQ0FBQztNQUM5RThILEdBQUcsQ0FBQzRVLHFCQUFxQixHQUFHNVUsR0FBRyxDQUFDcWxCLGVBQWUsQ0FBQzVULG9CQUFvQjtNQUVwRXpSLEdBQUcsQ0FBQzRVLHFCQUFxQixDQUFDNUQsU0FBUyxHQUFHaFIsR0FBRyxDQUFDMFIsZUFBZTtNQUV6RCxJQUFNbVUsa0JBQWtCLEdBQUc3bEIsR0FBRyxDQUFDMlEsWUFBWSxDQUFDakosU0FBUyxDQUFDLFVBQUFrSixXQUFXLEVBQUk7UUFDbkU1USxHQUFHLENBQUM0VSxxQkFBcUIsQ0FBQ2hFLFdBQVcsR0FBR0EsV0FBVztNQUNyRCxDQUFDLENBQUM7TUFDRixJQUFNa1YsbUJBQW1CLEdBQUc5bEIsR0FBRyxDQUFDK2xCLFlBQVksQ0FBQ3JlLFNBQVMsQ0FBQyxVQUFBeFAsS0FBSyxFQUFJO1FBQzlEOEgsR0FBRyxDQUFDNFUscUJBQXFCLENBQUNwRSxHQUFHLEdBQUd0WSxLQUFLO01BQ3ZDLENBQUMsQ0FBQztNQUNGLElBQU0rdEIsY0FBYyxHQUFHam1CLEdBQUcsQ0FBQzZRLFFBQVEsQ0FBQ25KLFNBQVMsQ0FBQyxVQUFBb0osT0FBTyxFQUFJO1FBQ3ZEOVEsR0FBRyxDQUFDNFUscUJBQXFCLENBQUM5RCxPQUFPLEdBQUdBLE9BQU87TUFDN0MsQ0FBQyxDQUFDO01BQ0YsSUFBTTVZLEtBQUssR0FBR21XLDBFQUE0QixDQUFDeFMsY0FBYyxDQUFDLHNCQUFzQixDQUF1QjtNQUV2RyxJQUFJM0QsS0FBSyxFQUFFO1FBQ1RrWixnRUFBYyxDQUFDVyxpQkFBaUIsQ0FBQ3pDLDBFQUFjLENBQUNwWCxLQUFLLENBQUMsQ0FBQztNQUN6RDtNQUVBLElBQU1pdUIscUJBQXFCLEdBQUdubUIsR0FBRyxDQUFDMGxCLGVBQWUsQ0FBQ2hlLFNBQVMsQ0FBQyxVQUFBb0ssY0FBYyxFQUFJO1FBQzVFVixnRUFBYyxDQUFDVyxpQkFBaUIsQ0FBQ0QsY0FBYyxDQUFDO01BQ2xELENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQTlaLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9rdUIsMERBQTBEQSxDQUFBLEVBQVM7TUFDeEUsSUFBSSxDQUFDeEIsNEJBQTRCLEdBQUd2VywwRUFBNEIsQ0FBQ3JTLGVBQWUsQ0FBQyx1Q0FBdUMsQ0FBQztNQUN6SCxJQUFJLENBQUNzRixPQUFPLENBQUNDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUNxakIsNEJBQTRCLENBQUM7TUFFdEc7SUFDRjtFQUFDO0lBQUE1c0IsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT211QixtRUFBbUVBLENBQUEsRUFBUztNQUNqRixJQUFJLENBQUN4QixxQ0FBcUMsR0FBR3hXLDBFQUE0QixDQUFDclMsZUFBZSxDQUFDLGdEQUFnRCxDQUFDO01BQzNJLElBQUksQ0FBQ3NGLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLElBQUksQ0FBQ3NqQixxQ0FBcUMsQ0FBQztNQUV4SDtJQUNGO0VBQUM7SUFBQTdzQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPb3VCLDhEQUE4REEsQ0FBQSxFQUFTO01BQzVFLElBQUksQ0FBQ3RCLGdDQUFnQyxHQUFHM1csMEVBQTRCLENBQUNyUyxlQUFlLENBQUMsNENBQTRDLENBQUM7TUFDbEksSUFBSSxDQUFDc0YsT0FBTyxDQUFDQyxJQUFJLENBQUMscURBQXFELEVBQUUsSUFBSSxDQUFDeWpCLGdDQUFnQyxDQUFDO01BRS9HO0lBQ0Y7RUFBQztJQUFBaHRCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9xdUIsbUVBQW1FQSxDQUFBLEVBQVM7TUFDakYsSUFBSSxDQUFDdEIscUNBQXFDLEdBQUc1VywwRUFBNEIsQ0FBQ3JTLGVBQWUsQ0FBQyxrREFBa0QsQ0FBQztNQUM3SSxJQUFJLENBQUNzRixPQUFPLENBQUNDLElBQUksQ0FBQyxzRUFBc0UsRUFBRSxJQUFJLENBQUMwakIscUNBQXFDLENBQUM7TUFFckk7SUFDRjtFQUFDO0lBQUFqdEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3N1QixrREFBa0RBLENBQUEsRUFBUztNQUNoRXhtQixHQUFHLENBQUN5bUIsWUFBWSxDQUFDL2UsU0FBUyxDQUFDLFVBQUF4UCxLQUFLLEVBQUk7UUFDbEM4SCxHQUFHLENBQUMrbEIsWUFBWSxDQUFDN3RCLEtBQUssR0FBRzhILEdBQUcsQ0FBQzJSLGVBQWUsQ0FBQ3paLEtBQUssQ0FBQztRQUNuRDhILEdBQUcsQ0FBQzJRLFlBQVksQ0FBQ3pZLEtBQUssR0FBR2laLHFEQUFXLENBQUNTLHFCQUFxQixDQUFDMVosS0FBSyxDQUFDO01BQ25FLENBQUMsQ0FBQztNQUVGLElBQU13dUIsWUFBWSxHQUFHclksMEVBQTRCLENBQUN4UyxjQUFjLENBQUMsc0JBQXNCLENBQUM7TUFFeEYsSUFBSTZxQixZQUFZLEVBQUU7UUFDaEIsSUFBTXRrQixTQUFTLEdBQUdULGdFQUFjLENBQUNDLFVBQVUsQ0FBQzhrQixZQUFZLENBQUM7UUFFekQxbUIsR0FBRyxDQUFDNlEsUUFBUSxDQUFDM1ksS0FBSyxHQUFHa0ssU0FBUyxDQUFDME8sT0FBTztRQUN0Q3VULGdFQUFZLENBQUN2aEIsR0FBRyxDQUFDNUssS0FBSyxHQUFHLENBQUNrSyxTQUFTLENBQUNVLEdBQUcsSUFBSTlDLEdBQUcsQ0FBQ3ltQixZQUFZLENBQUN2dUIsS0FBSyxFQUFFaVEsUUFBUSxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDN0csT0FBTyxDQUFDQyxJQUFJLENBQUMsd0RBQXdELEVBQUV2QixHQUFHLENBQUN5bUIsWUFBWSxDQUFDdnVCLEtBQUssQ0FBQztRQUVuRztNQUNGO01BRUEsSUFBTXl1QixRQUFRLEdBQUd0WSwwRUFBNEIsQ0FBQ3hTLGNBQWMsQ0FBQyxZQUFZLENBQUM7TUFFMUUsSUFBSThxQixRQUFRLEVBQUU7UUFDWnRDLGdFQUFZLENBQUN2aEIsR0FBRyxDQUFDNUssS0FBSyxHQUFHeXVCLFFBQVE7UUFDakMsSUFBSSxDQUFDcmxCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlFQUF5RSxFQUFFdkIsR0FBRyxDQUFDeW1CLFlBQVksQ0FBQ3Z1QixLQUFLLENBQUM7UUFFcEg7TUFDRjtNQUVBLElBQU0wdUIsWUFBWSxHQUFHdlksMEVBQTRCLENBQUN4UyxjQUFjLENBQUMsaUJBQWlCLENBQUM7TUFFbkYsSUFBSStxQixZQUFZLEVBQUU7UUFDaEIsSUFBTTdRLFdBQVcsR0FBRzllLGlFQUFXLENBQUN1USxXQUFXLENBQUMsQ0FBQyxDQUFDdFAsS0FBSztRQUNuRCxJQUFNNEssR0FBRyxHQUFHLElBQUlpVCxXQUFXLENBQUN6WSxHQUFHLENBQUNzcEIsWUFBWSxDQUFDO1FBRTdDOWpCLEdBQUcsQ0FBQzROLFFBQVEsR0FBRyxrQkFBa0I7UUFDakMyVCxnRUFBWSxDQUFDdmhCLEdBQUcsQ0FBQzVLLEtBQUssR0FBRzRLLEdBQUcsQ0FBQ3FGLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQzdHLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDhFQUE4RSxFQUFFdkIsR0FBRyxDQUFDeW1CLFlBQVksQ0FBQ3Z1QixLQUFLLENBQUM7UUFFekg7TUFDRjtJQUNGO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzJ1QixNQUFNQSxDQUFDOVEsV0FBZ0MsRUFBUTtNQUNwRCxJQUFJLENBQUNBLFdBQVcsRUFBRTtRQUNoQjtNQUNGO01BRUEsSUFBSSxJQUFJLENBQUMrUSxZQUFZLENBQUM1dUIsS0FBSyxFQUFFO1FBQzNCLElBQUksQ0FBQ29KLE9BQU8sQ0FBQytLLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztRQUVoRDtNQUNGO01BRUEwSixXQUFXLENBQUNnUixzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBTTtRQUNqRC9tQixHQUFHLENBQUMzSCxPQUFPLENBQUMsQ0FBQztNQUNmLENBQUMsQ0FBQztNQUVGMkgsR0FBRyxDQUFDd21CLGtEQUFrRCxDQUFDLENBQUM7TUFDeER4bUIsR0FBRyxDQUFDa21CLHlCQUF5QixDQUFDLENBQUM7TUFDL0JsbUIsR0FBRyxDQUFDMmxCLDJCQUEyQixDQUFDLENBQUM7TUFFakMsSUFBSSxDQUFDTCwyQkFBMkIsR0FBRyxJQUFJL3RCLHdFQUEwQixDQUFDLENBQUM7TUFFbkUsSUFBSSxDQUFDK0osT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDcWpCLDRCQUE0QixDQUFDO01BQ3RHLElBQUksQ0FBQ3RqQixPQUFPLENBQUNDLElBQUksQ0FBQyx5REFBeUQsRUFBRSxJQUFJLENBQUNzakIscUNBQXFDLENBQUM7TUFDeEgsSUFBSSxDQUFDdmpCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHFEQUFxRCxFQUFFLElBQUksQ0FBQ3lqQixnQ0FBZ0MsQ0FBQztNQUMvRyxJQUFJLENBQUMxakIsT0FBTyxDQUFDQyxJQUFJLENBQUMsc0VBQXNFLEVBQUUsSUFBSSxDQUFDMGpCLHFDQUFxQyxDQUFDO01BRXJJLElBQUksQ0FBQzZCLFlBQVksQ0FBQzV1QixLQUFLLEdBQUcsSUFBSTtJQUNoQztFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU84dUIsSUFBSUEsQ0FBQzdOLE9BQXNCLEVBQVE7TUFDeEMsSUFBSSxDQUFDQSxPQUFPLEVBQUU7UUFDWjtNQUNGO01BRUEsSUFBTThOLDhCQUFtRixHQUFHOU4sT0FBTztNQUVuRyxJQUFJOE4sOEJBQThCLENBQUNsUixXQUFXLEVBQUU7UUFDOUM5ZSxpRUFBVyxDQUFDcVEsV0FBVyxDQUFDMmYsOEJBQThCLENBQUNsUixXQUFXLENBQUM7TUFDckU7TUFFQSxJQUFJb0QsT0FBTyxDQUFDc04sWUFBWSxFQUFFO1FBQ3hCcEMsZ0VBQVksQ0FBQ3ZoQixHQUFHLENBQUM1SyxLQUFLLEdBQUdpaEIsT0FBTyxDQUFDc04sWUFBWTtNQUMvQztNQUVBLElBQUl0TixPQUFPLENBQUMrTixxQkFBcUIsRUFBRTtRQUNqQ3ZQLG1FQUFxQixDQUFDdVAscUJBQXFCLENBQUNodkIsS0FBSyxHQUFHaWhCLE9BQU8sQ0FBQytOLHFCQUFxQjtNQUNuRjtNQUVBLElBQUkvTixPQUFPLENBQUNySCxjQUFjLElBQUl4QywwRUFBYyxDQUFDNkosT0FBTyxDQUFDckgsY0FBYyxDQUFDLEVBQUU7UUFDcEU5UixHQUFHLENBQUMwbEIsZUFBZSxDQUFDeHRCLEtBQUssR0FBR3NELHdFQUFxQixDQUFDcVcseUNBQXlDLENBQUNzSCxPQUFPLENBQUNySCxjQUFjLENBQUM7TUFDckg7TUFFQSxJQUFJcUgsT0FBTyxDQUFDbEssWUFBWSxJQUFJekUsd0RBQVksQ0FBQzJPLE9BQU8sQ0FBQ2xLLFlBQVksQ0FBQyxFQUFFO1FBQzlELElBQUksQ0FBQzNOLE9BQU8sQ0FBQ29KLFNBQVMsQ0FBQ3FFLFlBQVksQ0FBQ3JULG9FQUFtQixDQUFDMFQscUNBQXFDLENBQUMrSixPQUFPLENBQUNsSyxZQUFZLENBQUMsQ0FBQztNQUN0SDtNQUVBLElBQUlrSyxPQUFPLENBQUNnTyxtQkFBbUIsSUFBSTNjLHdEQUFZLENBQUMyTyxPQUFPLENBQUNnTyxtQkFBbUIsQ0FBQyxFQUFFO1FBQzVFLElBQU1DLGVBQWUsR0FBRyxJQUFJLENBQUM5bEIsT0FBTyxDQUFDZ0ssU0FBUyxDQUFDcFQsS0FBSyxDQUFDMG5CLElBQUksQ0FBQyxVQUFBeFYsUUFBUTtVQUFBLE9BQUlBLFFBQVEsWUFBWUssZ0VBQWU7UUFBQSxFQUFDO1FBRTFHLElBQUkyYyxlQUFlLEVBQUU7VUFDbkIsSUFBSSxDQUFDOWxCLE9BQU8sQ0FBQ2dLLFNBQVMsQ0FBQ2pCLE1BQU0sQ0FBQytjLGVBQWUsQ0FBQztRQUNoRDtRQUVBLElBQUlqTyxPQUFPLENBQUNnTyxtQkFBbUIsS0FBSyxLQUFLLEVBQUU7VUFDekMsSUFBSSxDQUFDN2xCLE9BQU8sQ0FBQ2dLLFNBQVMsQ0FBQzFTLEdBQUcsQ0FBQyxJQUFJNlIsZ0VBQWUsQ0FBQy9PLG9FQUFtQixDQUFDMFQscUNBQXFDLENBQUMrSixPQUFPLENBQUNnTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDekk7TUFDRjtNQUVBLElBQUksT0FBT2hPLE9BQU8sQ0FBQ2tPLDRCQUE0QixLQUFLLFNBQVMsRUFBRTtRQUM3RCxJQUFJLENBQUN2Qyw2QkFBNkIsR0FBRzNMLE9BQU8sQ0FBQ2tPLDRCQUE0QjtNQUMzRTtNQUVBLElBQUksT0FBT2xPLE9BQU8sQ0FBQ21PLG1DQUFtQyxLQUFLLFNBQVMsRUFBRTtRQUNwRSxJQUFJLENBQUN2QyxvQ0FBb0MsR0FBRzVMLE9BQU8sQ0FBQ21PLG1DQUFtQztNQUN6RjtNQUVBLElBQUluTyxPQUFPLENBQUNvTyxlQUFlLEVBQUU7UUFDM0IsSUFBSSxDQUFDckMsZ0JBQWdCLEdBQUcvTCxPQUFPLENBQUNvTyxlQUFlO01BQ2pEO01BRUEsSUFBSXBPLE9BQU8sQ0FBQ3FPLGlCQUFpQixFQUFFO1FBQzdCLElBQUksQ0FBQ3JDLGtCQUFrQixHQUFHaE0sT0FBTyxDQUFDcU8saUJBQWlCO01BQ3JEO01BRUEsSUFBSXJPLE9BQU8sQ0FBQ3NPLFdBQVcsRUFBRTtRQUN2QixJQUFJLENBQUNyQyxZQUFZLEdBQUdqTSxPQUFPLENBQUNzTyxXQUFXO01BQ3pDO0lBQ0Y7RUFBQztJQUFBenZCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9HLE9BQU9BLENBQUEsRUFBUztNQUFBLElBQUFxdkIscUJBQUE7TUFDckIxbkIsR0FBRyxDQUFDOG1CLFlBQVksQ0FBQzV1QixLQUFLLEdBQUcsS0FBSztNQUM5QixDQUFBd3ZCLHFCQUFBLE9BQUksQ0FBQ3BDLDJCQUEyQixjQUFBb0MscUJBQUEsdUJBQWhDQSxxQkFBQSxDQUFrQ3J2QixPQUFPLENBQUMsQ0FBQztNQUMzQyxJQUFJLENBQUNpdEIsMkJBQTJCLEdBQUcsSUFBSTtJQUN6QztFQUFDO0lBQUF0dEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3laLGVBQWVBLENBQUNuQixHQUFXLEVBQVU7TUFDMUMsT0FBT1Usc0RBQVksQ0FBQ1MsZUFBZSxDQUFDbkIsR0FBRyxDQUFDO0lBQzFDO0VBQUM7QUFBQTtBQUFBbVgsSUFBQSxHQWpXa0IzbkIsR0FBRztBQUFBdkksMklBQUEsQ0FBSHVJLEdBQUcsa0NBQ3dCcU8sMEVBQTRCLENBQUNyUyxlQUFlLENBQUMsdUNBQXVDLENBQUM7QUFBQXZFLDJJQUFBLENBRGhIdUksR0FBRywyQ0FFaUNxTywwRUFBNEIsQ0FBQ3JTLGVBQWUsQ0FBQyxnREFBZ0QsQ0FBQztBQUFBdkUsMklBQUEsQ0FGbEl1SSxHQUFHLG1DQUd5QixJQUFJO0FBQUF2SSwySUFBQSxDQUhoQ3VJLEdBQUcsMENBSWdDLElBQUk7QUFBQXZJLDJJQUFBLENBSnZDdUksR0FBRyxzQ0FLNEJxTywwRUFBNEIsQ0FBQ3JTLGVBQWUsQ0FBQyw0Q0FBNEMsQ0FBQztBQUFBdkUsMklBQUEsQ0FMekh1SSxHQUFHLDJDQU1pQ3FPLDBFQUE0QixDQUFDclMsZUFBZSxDQUFDLGtEQUFrRCxDQUFDO0FBQUF2RSwySUFBQSxDQU5wSXVJLEdBQUc7QUFBQXZJLDJJQUFBLENBQUh1SSxHQUFHO0FBQUF2SSwySUFBQSxDQUFIdUksR0FBRztBQUFBdkksMklBQUEsQ0FBSHVJLEdBQUc7QUFBQXZJLDJJQUFBLENBQUh1SSxHQUFHLGtCQVd5QixJQUFJNUksbURBQU8sQ0FBUyxFQUFFLENBQUM7QUFBQUssMklBQUEsQ0FYbkR1SSxHQUFHLG1CQVkwQixJQUFJNUksbURBQU8sQ0FBUywyQ0FBMkMsQ0FBQztBQUFBSywySUFBQSxDQVo3RnVJLEdBQUcscURBYTJDLENBQUM7QUFBQXZJLDJJQUFBLENBYi9DdUksR0FBRyxxQkFjb0MsSUFBSTVJLG1EQUFPLENBQWlCcUUsa0VBQWdCLENBQUNVLHFCQUFxQixDQUFDO0FBQUExRSwySUFBQSxDQWQxR3VJLEdBQUc7QUFBQXZJLDJJQUFBLENBQUh1SSxHQUFHO0FBQUF2SSwySUFBQSxDQUFIdUksR0FBRywwQkFpQjJDLElBQUk1SSxtREFBTyxDQUFDNEwsbUVBQWEsQ0FBQ1EsbUJBQW1CLENBQUM7QUFBQS9MLDJJQUFBLENBakI1RnVJLEdBQUcsY0FrQjhCLElBQUk1SSxtREFBTyxDQUFTLEVBQUUsQ0FBQztBQUFBSywySUFBQSxDQWxCeER1SSxHQUFHLHNCQW1CNkJzSixxREFBTyxDQUFDQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQUE5UiwySUFBQSxDQW5CbER1SSxHQUFHLHNCQW9CMkIsSUFBSXRJLElBQUksQ0FBQyxDQUFDO0FBQUFELDJJQUFBLENBcEJ4Q3VJLEdBQUcsYUFxQnFCQyw2REFBYSxDQUFDRyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQUEzSSwySUFBQSxDQXJCdER1SSxHQUFHLGtCQXNCbUMsSUFBSTVJLG1EQUFPLENBQVUsS0FBSyxDQUFDO0FBQUFLLDJJQUFBLENBdEJqRXVJLEdBQUcsMEJBdUJtRCxJQUFJM0ksMkRBQWUsQ0FBVTJJLElBQUcsQ0FBQzhtQixZQUFZLENBQUM7QUFBQXJ2QiwySUFBQSxDQXZCcEd1SSxHQUFHLDJCQXdCbUQsSUFBSTNJLDJEQUFlLENBQVNndEIsZ0VBQVksQ0FBQ3ZoQixHQUFHLENBQUM7QUFBQXJMLDJJQUFBLENBeEJuR3VJLEdBQUcsb0NBeUI0RSxJQUFJM0ksMkRBQWUsQ0FBeUJzZ0IsbUVBQXFCLENBQUN1UCxxQkFBcUIsQ0FBQztBQXpCcEs7QUF3V3hCandCLGlFQUFXLENBQUN5USxTQUFTLENBQUMxSCxHQUFHLENBQUM2bUIsTUFBTSxDQUFDNXBCLElBQUksQ0FBQytDLEdBQUcsQ0FBQyxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3paM0M7QUFDQTtBQUNBOztBQUVxRDtBQUFBLElBRWhDa1IsWUFBWTtFQUFBLFNBQUFBLGFBQUE7SUFBQTFaLDJJQUFBLE9BQUEwWixZQUFBO0VBQUE7RUFBQSxPQUFBblosd0lBQUEsQ0FBQW1aLFlBQUE7SUFBQWxaLEdBQUE7SUFBQUUsS0FBQSxFQUMvQixTQUFPeVosZUFBZUEsQ0FBQ25CLEdBQVcsRUFBVTtNQUMxQyxJQUFJO1FBQ0YsSUFBTTJULE9BQU8sR0FBRyxJQUFJbHRCLGdFQUFXLENBQUNpQixLQUFLLENBQUNvRixHQUFHLENBQUNrVCxHQUFHLENBQUM7UUFDOUMsSUFBTW9YLFFBQVEsR0FBR3pELE9BQU8sQ0FBQ2xkLFFBQVEsQ0FBQzFNLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFNUMsUUFBUTRwQixPQUFPLENBQUMwRCxRQUFRO1VBQ3RCLEtBQUssS0FBSztZQUNSMUQsT0FBTyxDQUFDMEQsUUFBUSxHQUFHLE9BQU87WUFFMUI7VUFDRixLQUFLLE1BQU07WUFDVDFELE9BQU8sQ0FBQzBELFFBQVEsR0FBRyxRQUFRO1lBRTNCO1VBRUY7WUFDRTtRQUNKO1FBRUEsSUFBSUQsUUFBUSxDQUFDemxCLE1BQU0sS0FBSyxDQUFDLElBQ3BCeWxCLFFBQVEsQ0FBQ3psQixNQUFNLEtBQUssQ0FBQyxJQUFJeWxCLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDemxCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSXlsQixRQUFRLENBQUNBLFFBQVEsQ0FBQ3psQixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNBLE1BQU0sSUFBSSxDQUFFLEVBQ25IO1VBQ0F5bEIsUUFBUSxDQUFDRSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQy9CLENBQUMsTUFBTSxJQUFJRixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUNwbEIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJb2xCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJSCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUNyc0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJcXNCLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7VUFDbklBLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlO1FBQy9CLENBQUMsTUFBTSxJQUFJQSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUNwbEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJb2xCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1VBQzVFO1FBQUEsQ0FDRCxNQUFNO1VBQ0xILFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXO1FBQzNCO1FBRUF6RCxPQUFPLENBQUNsZCxRQUFRLEdBQUcyZ0IsUUFBUSxDQUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRXJDLFVBQUFsdEIsTUFBQSxDQUFVcXBCLE9BQU8sQ0FBQ0MsTUFBTTtNQUMxQixDQUFDLENBQUMsT0FBTzdoQixDQUFDLEVBQUU7UUFDVixPQUFPaU8sR0FBRztNQUNaO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FDNUNIO0FBQ0E7QUFDQTs7QUFLTyxJQUFLeVgsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQUEsT0FBWkEsWUFBWTtBQUFBO0FBS2pCLElBQUtDLFdBQVcsMEJBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUEsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDWHZCLHVLQUFBM2xCLENBQUEsRUFBQTBQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBek4sU0FBQSxZQUFBK04sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUE5TixTQUFBLFVBQUFrTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQTNRLENBQUEsRUFBQTRRLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQW5XLElBQUEsQ0FBQXNGLENBQUEsTUFBQTZRLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUFwUSxDQUFBLEVBQUEwUSxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUE1USxNQUFBLEVBQUE4UCxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFqUSxDQUFBLElBQUFpUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUFsUSxDQUFBLEdBQUFvUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUEvWixLQUFBLEVBQUF1YSxDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFnQixNQUFBLEtBQUF2QixDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFqUSxDQUFBLGNBQUEwUCxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBbEssSUFBQSxDQUFBb0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQWpRLENBQUEsRUFBQWtRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUE1YSxLQUFBLEVBQUErWixDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFlLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF6QixDQUFBLEdBQUFuRSxNQUFBLENBQUE2RixjQUFBLE1BQUFsQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWUsMEJBQUEsQ0FBQS9PLFNBQUEsR0FBQStOLFNBQUEsQ0FBQS9OLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBdlEsQ0FBQSxXQUFBdUwsTUFBQSxDQUFBOEYsY0FBQSxHQUFBOUYsTUFBQSxDQUFBOEYsY0FBQSxDQUFBclIsQ0FBQSxFQUFBbVIsMEJBQUEsS0FBQW5SLENBQUEsQ0FBQXNSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQStQLENBQUEseUJBQUEvUCxDQUFBLENBQUFvQyxTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFELENBQUEsR0FBQXBRLENBQUEsV0FBQWtSLGlCQUFBLENBQUE5TyxTQUFBLEdBQUErTywwQkFBQSxFQUFBYixtQkFBQSxDQUFBRixDQUFBLGlCQUFBZSwwQkFBQSxHQUFBYixtQkFBQSxDQUFBYSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWpCLG1CQUFBLENBQUFhLDBCQUFBLEVBQUFwQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBb0IsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXhCLENBQUEsRUFBQXlCLENBQUEsRUFBQW5CLENBQUE7QUFBQSxTQUFBRCxvQkFBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQTFFLE1BQUEsQ0FBQW9HLGNBQUEsUUFBQTFCLENBQUEsdUJBQUFqUSxDQUFBLElBQUFpUSxDQUFBLFFBQUFLLG1CQUFBLFlBQUFzQixtQkFBQTVSLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxZQUFBM1AsQ0FBQSxnQkFBQTZSLE9BQUEsQ0FBQWxDLENBQUEsRUFBQUUsQ0FBQSxFQUFBN1AsQ0FBQSxTQUFBMlAsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWpRLENBQUEsRUFBQTJQLENBQUEsSUFBQWhhLEtBQUEsRUFBQWthLENBQUEsRUFBQWlDLFVBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFlBQUEsR0FBQXJDLENBQUEsRUFBQXNDLFFBQUEsR0FBQXRDLENBQUEsTUFBQTFQLENBQUEsQ0FBQTJQLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUV3RDtBQUNEO0FBQ0E7QUFDVDtBQUNpQjtBQUl0QztBQUMrQztBQUc5QjtBQUNtQjtBQUNkO0FBRVM7QUFDSTtBQUVnQjtBQUNqQjtBQUdSO0FBQzZCO0FBQ1U7QUFDUztBQUNLO0FBQ25DO0FBQ2xCO0FBQ2tDO0FBRTlCO0FBQ1I7QUFDTTtBQUNLO0FBRVU7QUFFcEUsSUFBTWdYLDhCQUE4QixHQUFHLG9CQUFvQjtBQUMzRCxJQUFNQyx5Q0FBeUMsR0FBRyxJQUFJO0FBQ3RELElBQU1DLG9DQUFvQyxHQUFHLEtBQUs7QUFBQyxJQVk5QkMsT0FBTztFQXVDMUIsU0FBQUEsUUFBWUMsWUFBOEIsRUFBRXhuQixLQUF1QixFQUFFc1gsT0FBd0IsRUFBRTtJQUFBLElBQUE1Z0IsS0FBQTtJQUFBZiwySUFBQSxPQUFBNHhCLE9BQUE7SUFBQTN4QiwySUFBQSxrQkF0QzNEd0ksNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUFBM0ksMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUF1Q3BFLElBQU0ySyxTQUFTLEdBQUdULGlFQUFjLENBQUNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDO0lBQ2xELElBQU15bkIscUJBQTRDLEdBQUc7TUFDbkRDLFNBQVMsRUFBRXBRLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFb1EsU0FBUztNQUM3QkMsa0NBQWtDLEVBQUVyUSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRXFRLGtDQUFrQztNQUMvRUMsbUNBQW1DLEVBQUV0USxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRXNRO0lBQ2hELENBQUM7SUFDRCxJQUFNQyw2QkFBNEQsR0FBRztNQUNuRUMsb0JBQW9CLEVBQUV2bkIsU0FBUyxDQUFDVyxZQUFZLENBQUN4SCxRQUFRLENBQUMsb0JBQW9CLENBQUM7TUFDM0VxdUIsMkJBQTJCLEVBQUV4bkIsU0FBUyxDQUFDVyxZQUFZLENBQUN4SCxRQUFRLENBQUMsNEJBQTRCLENBQUM7TUFDMUZzdUIsNEJBQTRCLEVBQUUxUSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTBRLDRCQUE0QjtNQUNuRUMsNEJBQTRCLEVBQUUzUSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTJRLDRCQUE0QjtNQUNuRUMsc0JBQXNCLEVBQUU1USxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTRRLHNCQUFzQjtNQUN2REMsc0JBQXNCLEVBQUU3USxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTZRO0lBQ25DLENBQUM7SUFFRCxJQUFJLENBQUNDLGFBQWEsR0FBRyxJQUFJMUIsOERBQVksQ0FBQzFtQixLQUFLLENBQUM7SUFDNUMsSUFBSSxDQUFDcW9CLGVBQWUsR0FBRyxJQUFJMUIsZ0VBQWMsQ0FBQ2MscUJBQXFCLENBQUM7SUFDaEUsSUFBSSxDQUFDYSxzQkFBc0IsR0FBRyxJQUFJdkIsdUVBQXFCLENBQUMsQ0FBQztJQUN6RCxJQUFJLENBQUN3Qix1QkFBdUIsR0FBRyxJQUFJekIsd0VBQXNCLENBQUNlLDZCQUE2QixDQUFDO0lBQ3hGLElBQUksQ0FBQ1csYUFBYSxHQUFHLElBQUl4Qiw4REFBWSxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDaFUsbUJBQW1CLEdBQUcsSUFBSUwsZ0VBQWtCLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUM4VixpQkFBaUIsR0FBRzV5QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQzR5Qix1QkFBdUIsR0FBRyxJQUFJbHpCLDJEQUFlLENBQXlCLElBQUksQ0FBQzh5QixzQkFBc0IsQ0FBQ2hTLGNBQWMsQ0FBQztJQUN0SCxJQUFJLENBQUNxUyxjQUFjLEdBQUcsSUFBSW56QiwyREFBZSxDQUFlLElBQUksQ0FBQzZ5QixlQUFlLENBQUNPLEtBQUssQ0FBQztJQUNuRixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJcnpCLDJEQUFlLENBQWlCLElBQUksQ0FBQzZ5QixlQUFlLENBQUNTLE1BQU0sQ0FBQztJQUN2RixJQUFJLENBQUNDLGtCQUFrQixHQUFHLElBQUl2ekIsMkRBQWUsQ0FBVSxJQUFJLENBQUM2eUIsZUFBZSxDQUFDVyxTQUFTLENBQUM7SUFDdEYsSUFBSSxDQUFDQyxtQkFBbUIsR0FBRyxJQUFJenpCLDJEQUFlLENBQVUsSUFBSSxDQUFDNnlCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDO0lBQ3hGLElBQUksQ0FBQ0Msc0JBQXNCLEdBQUcsSUFBSTN6QiwyREFBZSxDQUFVLElBQUksQ0FBQzR5QixhQUFhLENBQUNnQixhQUFhLENBQUM7SUFDNUYsSUFBSSxDQUFDQyxtQkFBbUIsR0FBRyxJQUFJN3pCLDJEQUFlLENBQVUsSUFBSSxDQUFDNnlCLGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQztJQUN4RixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJL3pCLDJEQUFlLENBQVUsSUFBSSxDQUFDNnlCLGVBQWUsQ0FBQ21CLE1BQU0sQ0FBQztJQUNoRixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUlqMEIsMkRBQWUsQ0FBVSxJQUFJLENBQUM2eUIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDO0lBQ2xGLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUcsSUFBSW4wQiwyREFBZSxDQUFVLElBQUksQ0FBQzZ5QixlQUFlLENBQUN1QixPQUFPLENBQUM7SUFDbEYsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxJQUFJcjBCLDJEQUFlLENBQVUsSUFBSSxDQUFDNnlCLGVBQWUsQ0FBQ3lCLE9BQU8sQ0FBQztJQUNsRixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUl2MEIsMkRBQWUsQ0FBVSxJQUFJLENBQUM2eUIsZUFBZSxDQUFDMkIsT0FBTyxDQUFDO0lBQ2xGLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUcsSUFBSXowQiwyREFBZSxDQUFTLElBQUksQ0FBQzZ5QixlQUFlLENBQUNYLFNBQVMsQ0FBQztJQUNyRixJQUFJLENBQUN3QyxZQUFZLEdBQUcsSUFBSTEwQiwyREFBZSxDQUFxQixJQUFJLENBQUM2eUIsZUFBZSxDQUFDOEIsR0FBRyxDQUFDO0lBQ3JGLElBQUksQ0FBQ0MscUJBQXFCLEdBQUcsSUFBSTUwQiwyREFBZSxDQUFnQixJQUFJLENBQUM2eUIsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDO0lBQ2xHLElBQUksQ0FBQ0MsbUJBQW1CLEdBQUcsSUFBSTkwQiwyREFBZSxDQUFZLElBQUksQ0FBQzZ5QixlQUFlLENBQUNrQyxVQUFVLENBQUM7SUFDMUYsSUFBSSxDQUFDQyxxQkFBcUIsR0FBRyxJQUFJaDFCLDJEQUFlLENBQVMsSUFBSSxDQUFDNnlCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQztJQUMzRixJQUFJLENBQUNDLGlCQUFpQixHQUFHLElBQUlsMUIsMkRBQWUsQ0FBa0IsSUFBSSxDQUFDNnlCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQztJQUM1RixJQUFJLENBQUNDLGVBQWUsR0FBRyxJQUFJcDFCLDJEQUFlLENBQWlCLElBQUksQ0FBQzZ5QixlQUFlLENBQUN3QyxNQUFNLENBQUM7SUFDdkYsSUFBSSxDQUFDQyxzQkFBc0IsR0FBRyxJQUFJdDFCLDJEQUFlLENBQThCLElBQUksQ0FBQzZ5QixlQUFlLENBQUNwTixhQUFhLENBQUM7SUFDbEgsSUFBSSxDQUFDOFAsb0JBQW9CLEdBQUcsSUFBSXYxQiwyREFBZSxDQUFxQixJQUFJLENBQUM4eUIsc0JBQXNCLENBQUNwUCxXQUFXLENBQUM7SUFFNUcsSUFBTTBMLFlBQVksR0FBRyxDQUFDcmtCLFNBQVMsQ0FBQ1UsR0FBRyxJQUFJOUMsNENBQUcsQ0FBQ3ltQixZQUFZLENBQUN2dUIsS0FBSyxFQUFFaVEsUUFBUSxDQUFDLENBQUM7SUFFekVuSSw0Q0FBRyxDQUFDOFEsT0FBTyxDQUFDNVksS0FBSyxHQUFHa0ssU0FBUyxDQUFDME8sT0FBTyxJQUFJOVEsNENBQUcsQ0FBQzhRLE9BQU8sQ0FBQzVZLEtBQUs7SUFDMURtc0IsZ0VBQVksQ0FBQ3ZoQixHQUFHLENBQUM1SyxLQUFLLEdBQUd1dUIsWUFBWTtJQUNyQyxJQUFJLENBQUNwQixlQUFlLEdBQUdqVSxnRUFBYyxDQUFDQyxpQkFBaUIsQ0FBQ29WLFlBQVksQ0FBQztJQUNyRSxJQUFJLENBQUNvRyxpQkFBaUIsR0FBRyxJQUFJdkUsZ0VBQWdCLENBQUN0b0IsNENBQUcsQ0FBQ0csWUFBWSxFQUFFLElBQUksQ0FBQ2tsQixlQUFlLENBQUM7SUFDckYsSUFBSSxDQUFDNkUsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNsMEIsR0FBRyxDQUFDLElBQUksQ0FBQ2kwQixpQkFBaUIsQ0FBQztJQUNuRSxJQUFJLENBQUNFLDRCQUE0QixHQUFHLElBQUksQ0FBQ0MsMEJBQTBCLENBQUMvdkIsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM5RSxJQUFJLENBQUNvc0IsWUFBWSxHQUFHQSxZQUFZO0lBRWhDLElBQUksQ0FBQzRELDhCQUE4QixHQUFHLElBQUluRSwrRUFBNkIsQ0FBQyxDQUFDO0lBQ3pFLElBQUksQ0FBQ29FLCtCQUErQixDQUFDOXFCLFNBQVMsQ0FBQ1csWUFBWSxDQUFDO0lBQzVELElBQUksQ0FBQ29xQix3Q0FBd0MsR0FBRyxJQUFJOTFCLDJEQUFlLENBQVUsSUFBSSxDQUFDNDFCLDhCQUE4QixDQUFDRyxTQUFTLENBQUM7SUFDM0gsSUFBSSxDQUFDQyxzQ0FBc0MsR0FBRyxJQUFJaDJCLDJEQUFlLENBQXVDLElBQUksQ0FBQzQxQiw4QkFBOEIsQ0FBQ0ssNkJBQTZCLENBQUM7SUFDMUssSUFBSSxDQUFDQyx1Q0FBdUMsR0FBRyxJQUFJbDJCLDJEQUFlLENBQXdDLElBQUksQ0FBQzQxQiw4QkFBOEIsQ0FBQ08sOEJBQThCLENBQUM7SUFFN0ssSUFBSSxDQUFDdEQsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNsMEIsR0FBRyxDQUN6QyxJQUFJLENBQUNzeEIsZUFBZSxDQUFDYixZQUFZLENBQUMzaEIsU0FBUyxDQUFDLFVBQUEyaEIsWUFBWSxFQUFJO01BQzFEOXdCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN1RCxtQkFBbUIsQ0FBQ3AxQixPQUFPLENBQUMsQ0FBQztNQUVsRCxJQUFJLENBQUNneEIsWUFBWSxFQUFFO1FBQ2pCO01BQ0Y7TUFFQTl3QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUM3MEIsR0FBRyxDQUFDTCxLQUFJLENBQUMyeEIsZUFBZSxDQUFDd0MsTUFBTSxDQUFDaGxCLFNBQVMsQ0FBQyxVQUFBZ2xCLE1BQU0sRUFBSTtRQUMzRixJQUFJbjBCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3RCxjQUFjLEVBQUU7VUFDdkNuMUIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3dELGNBQWMsQ0FBQ3IxQixPQUFPLENBQUMsQ0FBQztRQUMvQztRQUVBLElBQUksQ0FBQ3EwQixNQUFNLEVBQUU7VUFDWDtRQUNGO1FBRUEsSUFBSSxDQUFDbjBCLEtBQUksQ0FBQzh3QixZQUFZLEVBQUU7VUFDdEI7UUFDRjtRQUVBLElBQUk5d0IsS0FBSSxDQUFDOHdCLFlBQVksQ0FBQ3NFLE9BQU8sRUFBRTtVQUM3QnAxQixLQUFJLENBQUM4d0IsWUFBWSxDQUFDc0UsT0FBTyxDQUFDM2MsU0FBUyxHQUFHaFIsNENBQUcsQ0FBQzBSLGVBQWU7VUFDekRuWixLQUFJLENBQUM4d0IsWUFBWSxDQUFDc0UsT0FBTyxDQUFDbHRCLFFBQVEsR0FBR2xJLEtBQUksQ0FBQ2tJLFFBQVE7UUFDcEQ7UUFFQWxJLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3RCxjQUFjLEdBQUcsSUFBSXJGLDhEQUFjLENBQUM5dkIsS0FBSSxDQUFDa0ksUUFBUSxFQUFFVCw0Q0FBRyxDQUFDRyxZQUFZLEVBQUU1SCxLQUFJLENBQUMreEIsaUJBQWlCLEVBQUUveEIsS0FBSSxDQUFDOHNCLGVBQWUsQ0FBQztRQUN2STlzQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDd0QsY0FBYyxDQUFDRSwrQkFBK0IsQ0FBQ3IxQixLQUFJLENBQUM4d0IsWUFBWSxDQUFDO1FBQ3RGOXdCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3RCxjQUFjLENBQUNHLDJCQUEyQixDQUFDdDFCLEtBQUksQ0FBQzh3QixZQUFZLENBQUM7UUFFbEYsSUFBSTl3QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxLQUFLa3dCLHNEQUFZLENBQUMwRixPQUFPLEVBQUU7VUFDN0QsSUFBTXBZLE9BQU8sR0FBR25kLEtBQUksQ0FBQ3cxQixnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDO01BQ0YsQ0FBQyxDQUFDLENBQUM7TUFFSHgxQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNsMEIsR0FBRyxDQUFDTCxLQUFJLENBQUMyeEIsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUM7SUFDdkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxJQUFJLENBQUN2RCxlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ2wwQixHQUFHLENBQ3pDLElBQUksQ0FBQ3N4QixlQUFlLENBQUNPLEtBQUssQ0FBQy9pQixTQUFTLENBQUMsVUFBQStpQixLQUFLLEVBQUk7TUFDNUMsSUFBSWx5QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDOEQsd0JBQXdCLEVBQUU7UUFDakQvMkIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFlBQVksQ0FBQ3BPLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM4RCx3QkFBd0IsQ0FBQztNQUMvRTtNQUVBLElBQUksQ0FBQ3oxQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDb0MsWUFBWSxDQUFDcDBCLEtBQUssRUFBRTtRQUM1QztNQUNGO01BRUEsSUFBSXV5QixLQUFLLEtBQUtyQyxzREFBWSxDQUFDNkYsT0FBTyxFQUFFO1FBQ2xDO01BQ0Y7TUFFQTExQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDOEQsd0JBQXdCLEdBQUcvMkIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQyxZQUFNO1FBQ2pGM0UsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQ3AwQixLQUFLLEdBQUcsQ0FBQztNQUM3QyxDQUFDLEVBQUVneEIseUNBQXlDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxJQUFJLENBQUNnQixlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ2wwQixHQUFHLENBQ3pDLElBQUksQ0FBQ3N4QixlQUFlLENBQUNrQyxVQUFVLENBQUMxa0IsU0FBUyxDQUFDLFVBQUEwa0IsVUFBVSxFQUFJO01BQ3RELElBQUk3ekIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3dELGNBQWMsRUFBRTtRQUN2Q24xQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDd0QsY0FBYyxDQUFDUSx3QkFBd0IsQ0FBQzlCLFVBQVUsQ0FBQ2prQixRQUFRLENBQUMsQ0FBQyxDQUFDO01BQ3JGO0lBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTCxJQUFJLENBQUMraEIsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNsMEIsR0FBRyxDQUN6QyxJQUFJLENBQUNzeEIsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDeGtCLFNBQVMsQ0FBQyxVQUFBd2tCLFlBQVksRUFBSTtNQUMxRCxJQUFJQSxZQUFZLElBQUkzekIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLElBQUlLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxFQUFFO1FBQzVGLElBQU1pMkIscUJBQXFCLEdBQUd6MkIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHWSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDa0UscUJBQXFCLENBQUNDLE9BQU8sQ0FBQyxDQUFDO1FBQy9GLElBQU0zWSxPQUFPLEdBQUduZCxLQUFJLENBQUMyeEIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDdDBCLEtBQUssQ0FBQ28yQixZQUFZLENBQzlELzFCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxFQUNqQ2kyQixxQkFBcUIsRUFDckJqQyxZQUFZLEVBQ1pqRSwwRUFBWSxDQUFDc0csSUFBSSxFQUNqQnJHLHlFQUFXLENBQUNzRyxNQUNkLENBQUMsQ0FDRW5YLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO1VBQ1ZoSyxLQUFJLENBQUMrSSxPQUFPLENBQUNTLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRVEsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQztNQUNOO0lBQ0YsQ0FBQyxDQUNILENBQUM7SUFFRCxJQUFNa3NCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBUztNQUNuQyxJQUFJbDJCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxJQUFJSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDdDBCLEtBQUssRUFBRTtRQUM1RSxJQUFNd2QsT0FBTyxHQUFHbmQsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLENBQUN1MkIsc0JBQXNCLENBQUNsMkIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ3gwQixLQUFLLEVBQUUscUNBQXFDLENBQUM7TUFDdEo7SUFDRixDQUFDO0lBRURqQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDNnVCLHNCQUFzQixDQUFDLGNBQWMsRUFBRTBILHNCQUFzQixDQUFDO0lBRWhGLElBQUksQ0FBQ3ZFLGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDbDBCLEdBQUcsQ0FBQyxJQUFJMUIseURBQVUsQ0FBQyxZQUFNO01BQy9ERCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDdzJCLHlCQUF5QixDQUFDLGNBQWMsRUFBRUQsc0JBQXNCLENBQUM7SUFDckYsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUNFLEtBQUssQ0FBQyxDQUFDO0VBQ2Q7RUFBQyxPQUFBNTJCLHdJQUFBLENBQUFxeEIsT0FBQTtJQUFBcHhCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEM7TUFDMUMsT0FBTyxJQUFJLENBQUNpeUIsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSztJQUNoRCxDQUFDO0lBQUFxWSxHQUFBLEVBRUQsU0FBQUEsSUFBaUI4WSxZQUE4QixFQUFFO01BQy9DLElBQUksSUFBSSxDQUFDYSxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLEVBQUU7UUFDM0MsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQzBILG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUNtdEIsNEJBQTRCLENBQUM7UUFDNUcsSUFBSSxDQUFDN0MsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxDQUFDMEgsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDbXRCLDRCQUE0QixDQUFDO1FBQ2hILElBQUksQ0FBQzdDLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQzBILG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUNtdEIsNEJBQTRCLENBQUM7UUFFeEcsSUFBSSxJQUFJLENBQUM3QyxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLENBQUN5MUIsT0FBTyxFQUFFO1VBQ25ELElBQUksQ0FBQ3pELGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQ3kxQixPQUFPLENBQUMzYyxTQUFTLEdBQUcsRUFBRTtVQUM5RCxJQUFJLENBQUNrWixlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLENBQUN5MUIsT0FBTyxDQUFDbHRCLFFBQVEsR0FBRyxFQUFFO1FBQy9EO1FBRUEsSUFBSSxDQUFDeXBCLGVBQWUsQ0FBQ3VELG1CQUFtQixDQUFDcDFCLE9BQU8sQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQzZ4QixlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLENBQUMwMkIsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDMUUsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxDQUFDMjJCLFNBQVMsR0FBRyxJQUFJO01BQzFEO01BRUEsSUFBSSxDQUFDM0UsZUFBZSxDQUFDVyxTQUFTLENBQUMzeUIsS0FBSyxHQUFHLEtBQUs7TUFDNUMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDN3lCLEtBQUssR0FBRyxLQUFLO01BQzdDLElBQUksQ0FBQ2d5QixlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLEtBQUs7TUFDMUMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQ3Z6QixLQUFLLEdBQUcsS0FBSztNQUUxQyxJQUFJLElBQUksQ0FBQ2d5QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEtBQUtrd0Isc0RBQVksQ0FBQzBHLFlBQVksRUFBRTtRQUNsRSxJQUFJLENBQUM1RSxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQzBGLE9BQU87TUFDekQ7TUFFQSxJQUFJLENBQUM1RCxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLEdBQUdteEIsWUFBWTtNQUV0RCxJQUFJLElBQUksQ0FBQ2EsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxFQUFFO1FBQzNDLElBQUksQ0FBQ2d5QixlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLENBQUN3SCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDcXRCLDRCQUE0QixDQUFDO1FBQ3pHLElBQUksQ0FBQzdDLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQ3dILGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQ3F0Qiw0QkFBNEIsQ0FBQztRQUM3RyxJQUFJLENBQUM3QyxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLENBQUN3SCxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDcXRCLDRCQUE0QixDQUFDO01BQ3ZHO0lBQ0Y7RUFBQztJQUFBLzBCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE4MEIsMEJBQTBCQSxDQUFBLEVBQVM7TUFDekMsSUFBTTNELFlBQVksR0FBRyxJQUFJLENBQUNhLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUs7TUFFNUQsSUFBSW14QixZQUFZLEVBQUU7UUFDaEIsSUFBSSxJQUFJLENBQUMrQyxVQUFVLENBQUNsMEIsS0FBSyxDQUFDNjJCLEtBQUssS0FBSzFGLFlBQVksQ0FBQzJGLFVBQVUsSUFBSSxJQUFJLENBQUM1QyxVQUFVLENBQUNsMEIsS0FBSyxDQUFDKzJCLE1BQU0sS0FBSzVGLFlBQVksQ0FBQzZGLFdBQVcsRUFBRTtVQUN4SCxJQUFJLENBQUNoRixlQUFlLENBQUNrQyxVQUFVLENBQUNsMEIsS0FBSyxHQUFHLElBQUlpd0Isd0RBQVMsQ0FBQ2tCLFlBQVksQ0FBQzJGLFVBQVUsRUFBRTNGLFlBQVksQ0FBQzZGLFdBQVcsQ0FBQztRQUMxRztNQUNGLENBQUMsTUFBTTtRQUNMLElBQUksQ0FBQ2hGLGVBQWUsQ0FBQ2tDLFVBQVUsQ0FBQ2wwQixLQUFLLEdBQUdpd0Isd0RBQVMsQ0FBQ2dILEtBQUs7TUFDekQ7SUFDRjtFQUFDO0lBQUFuM0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QjtNQUM1QixPQUFPLElBQUksQ0FBQ2d5QixhQUFhLENBQUNwb0IsS0FBSyxDQUFDM0osS0FBSztJQUN2QyxDQUFDO0lBQUFxWSxHQUFBLEVBRUQsU0FBQUEsSUFBVTFPLEtBQXVCLEVBQUU7TUFDakMsSUFBSSxDQUFDcW9CLGVBQWUsQ0FBQ2tGLFdBQVcsQ0FBQy8yQixPQUFPLENBQUMsQ0FBQztNQUUxQyxJQUFJLENBQUM0eEIsYUFBYSxDQUFDcG9CLEtBQUssQ0FBQzNKLEtBQUssR0FBRzJKLEtBQUs7TUFDdEMsSUFBSSxDQUFDb29CLGFBQWEsQ0FBQ2dCLGFBQWEsQ0FBQy95QixLQUFLLEdBQUcsS0FBSztNQUU5QyxJQUFNa0ssU0FBUyxHQUFHVCxpRUFBYyxDQUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDcW9CLGFBQWEsQ0FBQ3BvQixLQUFLLENBQUMzSixLQUFLLENBQUM7TUFDM0UsSUFBTXV1QixZQUFZLEdBQUcsQ0FBQ3JrQixTQUFTLENBQUNVLEdBQUcsSUFBSTlDLDRDQUFHLENBQUN5bUIsWUFBWSxDQUFDdnVCLEtBQUssRUFBRWlRLFFBQVEsQ0FBQyxDQUFDO01BRXpFbkksNENBQUcsQ0FBQzhRLE9BQU8sQ0FBQzVZLEtBQUssR0FBR2tLLFNBQVMsQ0FBQzBPLE9BQU8sSUFBSTlRLDRDQUFHLENBQUM4USxPQUFPLENBQUM1WSxLQUFLO01BQzFEbXNCLGdFQUFZLENBQUN2aEIsR0FBRyxDQUFDNUssS0FBSyxHQUFHdXVCLFlBQVk7TUFFckMsSUFBSSxDQUFDcEIsZUFBZSxHQUFHalUsZ0VBQWMsQ0FBQ0MsaUJBQWlCLENBQUNvVixZQUFZLENBQUM7TUFFckUsSUFBSSxDQUFDMkQsdUJBQXVCLENBQUNULG9CQUFvQixDQUFDenhCLEtBQUssR0FBR2tLLFNBQVMsQ0FBQ1csWUFBWSxDQUFDeEgsUUFBUSxDQUFDLG9CQUFvQixDQUFDO01BQy9HLElBQUksQ0FBQzZ1Qix1QkFBdUIsQ0FBQ1IsMkJBQTJCLENBQUMxeEIsS0FBSyxHQUFHa0ssU0FBUyxDQUFDVyxZQUFZLENBQUN4SCxRQUFRLENBQUMsNEJBQTRCLENBQUM7TUFFOUgsSUFBSSxDQUFDMnhCLCtCQUErQixDQUFDOXFCLFNBQVMsQ0FBQ1csWUFBWSxDQUFDO01BRTVELElBQUksQ0FBQzRyQixLQUFLLENBQUMsQ0FBQztJQUNkO0VBQUM7SUFBQTMyQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThEO01BQzVELE9BQU8sSUFBSSxDQUFDc3lCLHVCQUF1QjtJQUNyQztFQUFDO0lBQUF2eUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyQztNQUN6QyxPQUFPLElBQUksQ0FBQ3V5QixjQUFjO0lBQzVCO0VBQUM7SUFBQXh5QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDeXlCLGVBQWU7SUFDN0I7RUFBQztJQUFBMXlCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBTyxJQUFJLENBQUMyeUIsa0JBQWtCO0lBQ2hDO0VBQUM7SUFBQTV5QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJDO01BQ3pDLE9BQU8sSUFBSSxDQUFDNnlCLG1CQUFtQjtJQUNqQztFQUFDO0lBQUE5eUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPLElBQUksQ0FBQyt5QixzQkFBc0I7SUFDcEM7RUFBQztJQUFBaHpCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBTyxJQUFJLENBQUNpekIsbUJBQW1CO0lBQ2pDO0VBQUM7SUFBQWx6QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDbXpCLGVBQWU7SUFDN0I7RUFBQztJQUFBcHpCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUNxekIsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQXR6QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdDO01BQ3RDLE9BQU8sSUFBSSxDQUFDdXpCLGdCQUFnQjtJQUM5QjtFQUFDO0lBQUF4ekIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLElBQUksQ0FBQ3l6QixnQkFBZ0I7SUFDOUI7RUFBQztJQUFBMXpCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUMyekIsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQTV6QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDNnpCLGtCQUFrQjtJQUNoQztFQUFDO0lBQUE5ekIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFvRDtNQUNsRCxPQUFPLElBQUksQ0FBQzh6QixZQUFZO0lBQzFCO0VBQUM7SUFBQS96QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWtDO01BQ2hDLE9BQU8sSUFBSSxDQUFDZzBCLHFCQUFxQixDQUFDL3pCLEtBQUs7SUFDekM7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZDO01BQzNDLE9BQU8sSUFBSSxDQUFDazBCLG1CQUFtQjtJQUNqQztFQUFDO0lBQUFuMEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPLElBQUksQ0FBQ28wQixxQkFBcUI7SUFDbkM7RUFBQztJQUFBcjBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUQ7TUFDL0MsT0FBTyxJQUFJLENBQUNzMEIsaUJBQWlCO0lBQy9CO0VBQUM7SUFBQXYwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDdzBCLGVBQWU7SUFDN0I7RUFBQztJQUFBejBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUI7TUFDckIsT0FBTyxJQUFJLENBQUNpeUIsZUFBZSxDQUFDenBCLFFBQVE7SUFDdEM7RUFBQztJQUFBekksR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFrRTtNQUNoRSxPQUFPLElBQUksQ0FBQzAwQixzQkFBc0I7SUFDcEM7RUFBQztJQUFBMzBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUQ7TUFDckQsT0FBTyxJQUFJLENBQUMyMEIsb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQTUwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdFO01BQzlELE9BQU8sSUFBSSxDQUFDazFCLHdDQUF3QztJQUN0RDtFQUFDO0lBQUFuMUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyRjtNQUN6RixPQUFPLElBQUksQ0FBQ28xQixzQ0FBc0M7SUFDcEQ7RUFBQztJQUFBcjFCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNkY7TUFDM0YsT0FBTyxJQUFJLENBQUNzMUIsdUNBQXVDO0lBQ3JEO0VBQUM7SUFBQXYxQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbTNCLGVBQWVBLENBQUNuRCxZQUEyQixFQUFRO01BQ2pELElBQUksQ0FBQ2hDLGVBQWUsQ0FBQ2dDLFlBQVksQ0FBQ2gwQixLQUFLLEdBQUdnMEIsWUFBWTtJQUN4RDtFQUFDO0lBQUFsMEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW8zQixpQkFBaUJBLENBQUEsRUFBUztNQUFBLElBQUF0aUIsTUFBQTtNQUN4QixJQUFJLElBQUksQ0FBQ2tkLGVBQWUsQ0FBQ2dDLFlBQVksQ0FBQ2gwQixLQUFLLElBQUksSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLElBQUksSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ3gwQixLQUFLLEVBQUU7UUFDdkgsSUFBTWkyQixxQkFBcUIsR0FBR3oyQixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDdXlCLGVBQWUsQ0FBQ2tFLHFCQUFxQixDQUFDQyxPQUFPLENBQUMsQ0FBQztRQUMvRixJQUFNa0Isc0JBQXNCLEdBQUcsQ0FBQztRQUNoQyxJQUFNN1osT0FBTyxHQUFHLElBQUksQ0FBQ3dVLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLENBQUNvMkIsWUFBWSxDQUM5RCxJQUFJLENBQUNwRSxlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxFQUNqQ2kyQixxQkFBcUIsRUFDckJvQixzQkFBc0IsRUFDdEJ0SCwwRUFBWSxDQUFDc0csSUFBSSxFQUNqQnJHLHlFQUFXLENBQUNzSCxLQUNkLENBQUMsQ0FDRXphLElBQUksQ0FBQyxVQUFBeFcsSUFBQSxFQUFjO1VBQUEsSUFBWitZLE1BQU0sR0FBQS9ZLElBQUEsQ0FBTitZLE1BQU07VUFDWixJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CdEssTUFBSSxDQUFDa2QsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDaDBCLEtBQUssR0FBRyxDQUFDO1VBQzdDO1FBQ0YsQ0FBQyxDQUFDLENBQ0RtZixLQUFLLENBQUMsVUFBQTlVLENBQUMsRUFBSTtVQUNWeUssTUFBSSxDQUFDMUwsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUVRLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUM7TUFDTjtJQUNGO0VBQUM7SUFBQXZLLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF1M0IsZUFBZUEsQ0FBQ3pELEdBQWdCLEVBQVE7TUFDdEMsSUFBSSxDQUFDOUIsZUFBZSxDQUFDWCxTQUFTLENBQUNyeEIsS0FBSyxHQUFHOHpCLEdBQUc7SUFDNUM7RUFBQztJQUFBaDBCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF3M0IsS0FBQSxHQUFBMVosNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUFnQyxRQUFXMFosTUFBYztRQUFBLElBQUFwTixNQUFBO1FBQUEsT0FBQXhPLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FBQSxPQUFBZ0UsUUFBQSxDQUFBakQsQ0FBQSxJQUNoQixJQUFJeUMsT0FBTyxDQUFDLFVBQUF3TCxPQUFPLEVBQUk7Z0JBQzVCLElBQUksQ0FBQ21CLE1BQUksQ0FBQzhILGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEVBQUU7a0JBQ3hDcXFCLE1BQUksQ0FBQ3NOLFdBQVcsQ0FBQ0YsTUFBTSxDQUFDO2tCQUV4QnZPLE9BQU8sQ0FBQyxDQUFDO2tCQUVUO2dCQUNGO2dCQUVBbUIsTUFBSSxDQUFDMkgsZUFBZSxDQUFDdUQsbUJBQW1CLENBQUM3MEIsR0FBRyxDQUFDMnBCLE1BQUksQ0FBQzhILGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQ2xvQixTQUFTLENBQUMsVUFBQWtvQixVQUFVLEVBQUk7a0JBQ2pHLElBQUksQ0FBQ0EsVUFBVSxFQUFFO29CQUNmck4sTUFBSSxDQUFDc04sV0FBVyxDQUFDRixNQUFNLENBQUM7b0JBQ3hCdk8sT0FBTyxDQUFDLENBQUM7a0JBQ1g7Z0JBQ0YsQ0FBQyxDQUFDLENBQUM7Y0FDTCxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUFuTCxPQUFBO01BQUEsQ0FDSDtNQUFBLFNBakJLNlosSUFBSUEsQ0FBQXJaLEVBQUE7UUFBQSxPQUFBaVosS0FBQSxDQUFBaFosS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBSm1rQixJQUFJO0lBQUE7RUFBQTtJQUFBOTNCLEdBQUE7SUFBQUUsS0FBQSxFQW1CVixTQUFRMjNCLFdBQVdBLENBQUNGLE1BQWMsRUFBUTtNQUN4QyxJQUFJLElBQUksQ0FBQ3pGLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssRUFBRTtRQUMzQyxJQUFJLENBQUNneUIsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxDQUFDMDJCLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQzFFLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQzIyQixTQUFTLEdBQUcsSUFBSTtNQUMxRDtNQUVBLElBQUksQ0FBQzNFLGVBQWUsQ0FBQ3VELG1CQUFtQixDQUFDcDFCLE9BQU8sQ0FBQyxDQUFDO01BRWxELElBQUksQ0FBQzAzQixnQkFBZ0IsQ0FBQ0osTUFBTSxDQUFDO01BRTdCLElBQUksQ0FBQ3pGLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QixzREFBWSxDQUFDMEYsT0FBTztJQUN6RDtFQUFDO0lBQUE5MUIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTgzQixPQUFBLEdBQUFoYSw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQTJDLFNBQUE7UUFBQSxPQUFBN0MsWUFBQSxHQUFBQyxDQUFBLFdBQUE2QyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXpFLENBQUE7WUFBQTtjQUFBLEtBQ00sSUFBSSxDQUFDK1gsc0JBQXNCLENBQUNwUCxXQUFXLENBQUM3aUIsS0FBSztnQkFBQTJlLFNBQUEsQ0FBQXpFLENBQUE7Z0JBQUE7Y0FBQTtjQUMvQyxJQUFJLENBQUM4WCxlQUFlLENBQUNhLFVBQVUsQ0FBQzd5QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUEyZSxTQUFBLENBQUExRCxDQUFBLElBRXZDLElBQUksQ0FBQzhjLDZCQUE2QixDQUFDLElBQUksQ0FBQzlGLHNCQUFzQixDQUFDcFAsV0FBVyxDQUFDN2lCLEtBQUssQ0FBQztZQUFBO2NBQUEsT0FBQTJlLFNBQUEsQ0FBQTFELENBQUE7VUFBQTtRQUFBLEdBQUF5RCxRQUFBO01BQUEsQ0FFM0Y7TUFBQSxTQU5Lc1osTUFBTUEsQ0FBQTtRQUFBLE9BQUFGLE9BQUEsQ0FBQXRaLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQU51a0IsTUFBTTtJQUFBO0VBQUE7SUFBQWw0QixHQUFBO0lBQUFFLEtBQUEsRUFRWixTQUFBaTRCLElBQUlBLENBQUEsRUFBUztNQUNYLElBQU05RyxZQUFZLEdBQUcsSUFBSSxDQUFDYSxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLO01BRTVELElBQUlteEIsWUFBWSxFQUFFO1FBQ2hCQSxZQUFZLENBQUMrRyxLQUFLLEdBQUcsSUFBSTtNQUMzQjtJQUNGO0VBQUM7SUFBQXA0QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbTRCLE1BQU1BLENBQUEsRUFBUztNQUNiLElBQU1oSCxZQUFZLEdBQUcsSUFBSSxDQUFDYSxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLO01BRTVELElBQUlteEIsWUFBWSxFQUFFO1FBQ2hCQSxZQUFZLENBQUMrRyxLQUFLLEdBQUcsS0FBSztRQUMxQixJQUFJLENBQUNsRyxlQUFlLENBQUNXLFNBQVMsQ0FBQzN5QixLQUFLLEdBQUcsS0FBSztNQUM5QztJQUNGO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQW80QixRQUFBLEdBQUF0YSw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQXFFLFNBQUE7UUFBQSxJQUFBbUssTUFBQTtRQUFBLE9BQUExTyxZQUFBLEdBQUFDLENBQUEsV0FBQTJFLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBdkcsQ0FBQTtZQUFBO2NBQUEsT0FBQXVHLFNBQUEsQ0FBQXhGLENBQUEsSUFDUyxJQUFJLENBQUMyYyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQy9hLElBQUksQ0FBQyxZQUFNO2dCQUNwRDBOLE1BQUksQ0FBQ3lILGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDejBCLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRG9xQixNQUFJLENBQUM0SCxhQUFhLENBQUNrRyxVQUFVLEdBQUcsSUFBSTtjQUN0QyxDQUFDLENBQUM7VUFBQTtRQUFBLEdBQUFqWSxRQUFBO01BQUEsQ0FDSDtNQUFBLFNBTEtqZ0IsT0FBT0EsQ0FBQTtRQUFBLE9BQUFpNEIsUUFBQSxDQUFBNVosS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBUHRULE9BQU87SUFBQTtFQUFBO0lBQUFMLEdBQUE7SUFBQUUsS0FBQSxFQU9iLFNBQUFzNEIsTUFBTUEsQ0FBQzN1QixLQUF1QixFQUFPO01BQ25DLElBQU0yTyxHQUFHLEdBQUc3TyxpRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDaUIsR0FBRztNQUVoRCxJQUFJME4sR0FBRyxFQUFFO1FBQ1AsT0FBT0EsR0FBRztNQUNaO01BRUEsSUFBSSxDQUFDbFAsT0FBTyxDQUFDQyxJQUFJLENBQUMsNENBQTRDLEVBQUV2Qiw0Q0FBRyxDQUFDeW1CLFlBQVksQ0FBQ3Z1QixLQUFLLENBQUM7TUFFdkYsT0FBTyxJQUFJakIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ29GLEdBQUcsQ0FBQzBDLDRDQUFHLENBQUN5bUIsWUFBWSxDQUFDdnVCLEtBQUssQ0FBQztJQUMxRDtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF1NEIsTUFBQSxHQUFBemEsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUE2TixTQUFBO1FBQUEsT0FBQS9OLFlBQUEsR0FBQUMsQ0FBQSxXQUFBaU8sU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE3UCxDQUFBO1lBQUE7Y0FBQSxLQUNNLElBQUksQ0FBQ2lZLGFBQWEsQ0FBQ2tHLFVBQVU7Z0JBQUF0TyxTQUFBLENBQUE3UCxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUN6QixJQUFJMVYsS0FBSyxDQUFDLDhCQUE4QixDQUFDO1lBQUE7Y0FBQSxLQUc3QyxJQUFJLENBQUMydEIsYUFBYSxDQUFDdUYsVUFBVSxDQUFDMTNCLEtBQUs7Z0JBQUErcEIsU0FBQSxDQUFBN1AsQ0FBQTtnQkFBQTtjQUFBO2NBQ3JDLElBQUksQ0FBQzlRLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDZDQUE2QyxDQUFDO2NBQUMsT0FBQTBnQixTQUFBLENBQUE5TyxDQUFBO1lBQUE7Y0FLbkUsSUFBSSxDQUFDa1gsYUFBYSxDQUFDdUYsVUFBVSxDQUFDMTNCLEtBQUssR0FBRyxJQUFJO2NBQUMsT0FBQStwQixTQUFBLENBQUE5TyxDQUFBLElBRXBDLElBQUksQ0FBQ3VkLFlBQVksQ0FBQyxDQUFDO1VBQUE7UUFBQSxHQUFBNU8sUUFBQTtNQUFBLENBQzNCO01BQUEsU0FkSzZNLEtBQUtBLENBQUE7UUFBQSxPQUFBOEIsTUFBQSxDQUFBL1osS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBTGdqQixLQUFLO0lBQUE7RUFBQTtJQUFBMzJCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF5NEIsYUFBQSxHQUFBM2EsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQWdCWCxTQUFBMmMsU0FBQTtRQUFBLElBQUFDLE1BQUE7UUFBQSxJQUFBaHZCLEtBQUEsRUFBQWl2QixtQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxLQUFBLEVBQUFDLGdCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLE1BQUEsRUFBQUMsaUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsT0FBQSxFQUFBQyxrQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxPQUFBLEVBQUFDLGtCQUFBLEVBQUFDLDBCQUFBLEVBQUFDLG9CQUFBLEVBQUE5dUIsR0FBQSxFQUFBK3VCLDJCQUFBLEVBQUFDLFlBQUE7UUFBQSxPQUFBL2QsWUFBQSxHQUFBQyxDQUFBLFdBQUErZCxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTNmLENBQUE7WUFBQTtjQUNFLElBQUksQ0FBQzhYLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QixzREFBWSxDQUFDNEosUUFBUTtjQUN4RCxJQUFJLENBQUNqQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Y0FFL0JsdUIsS0FBdUIsR0FBRyxJQUFJLENBQUNvb0IsYUFBYSxDQUFDcG9CLEtBQUssQ0FBQzNKLEtBQUs7Y0FDeEQ0NEIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDakUsaUJBQWlCLENBQUNpRSxtQkFBbUIsQ0FBQyxDQUFDO2NBQUEsSUFFbkVudkIsaUVBQWMsQ0FBQ0csdUJBQXVCLENBQUNELEtBQUssQ0FBQztnQkFBQWt3QixTQUFBLENBQUEzZixDQUFBO2dCQUFBO2NBQUE7Y0FDaEQsSUFBSSxDQUFDOVEsT0FBTyxDQUFDUyxLQUFLLENBQUMsNEJBQTRCLEVBQUVGLEtBQUssQ0FBQztjQUN2RCxJQUFJLENBQUNxb0IsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUM2SixZQUFZO2NBQzVELElBQUksQ0FBQy9ILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ2p6QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUNteUIsYUFBYSxDQUFDdUYsVUFBVSxDQUFDMTNCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQTY1QixTQUFBLENBQUE1ZSxDQUFBO1lBQUE7Y0FBQSxLQUsxQyxJQUFJLENBQUNpWCx1QkFBdUIsQ0FBQ1AsNEJBQTRCO2dCQUFBa0ksU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQUEyZSxxQkFBQSxHQUN6QnJJLDZFQUFvQixDQUFDd0osaUNBQWlDLENBQWEsT0FBTyxFQUFFLElBQUksQ0FBQzlILHVCQUF1QixDQUFDUCw0QkFBNEIsQ0FBQyxFQUFqS21ILEtBQUssR0FBQUQscUJBQUEsQ0FBTEMsS0FBSyxFQUFFQyxnQkFBZ0IsR0FBQUYscUJBQUEsQ0FBaEJFLGdCQUFnQjtjQUFBLElBRXpCRCxLQUFLO2dCQUFBZSxTQUFBLENBQUEzZixDQUFBO2dCQUFBO2NBQUE7Y0FDUixJQUFJLENBQUM5USxPQUFPLENBQUNTLEtBQUssQ0FBQ2t2QixnQkFBZ0IsQ0FBQztjQUNwQyxJQUFJLENBQUMvRyxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQytKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNqSSxlQUFlLENBQUNpQixVQUFVLENBQUNqekIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDbXlCLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBQUEsS0FNNUMsSUFBSSxDQUFDaVgsdUJBQXVCLENBQUNOLDRCQUE0QjtnQkFBQWlJLFNBQUEsQ0FBQTNmLENBQUE7Z0JBQUE7Y0FBQTtjQUFBOGUsc0JBQUEsR0FDekJ4SSw2RUFBb0IsQ0FBQ3dKLGlDQUFpQyxDQUFZLE9BQU8sRUFBRSxJQUFJLENBQUM5SCx1QkFBdUIsQ0FBQ04sNEJBQTRCLENBQUMsRUFBaEtrSCxNQUFLLEdBQUFFLHNCQUFBLENBQUxGLEtBQUssRUFBRUMsaUJBQWdCLEdBQUFDLHNCQUFBLENBQWhCRCxnQkFBZ0I7Y0FBQSxJQUV6QkQsTUFBSztnQkFBQWUsU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQ1IsSUFBSSxDQUFDOVEsT0FBTyxDQUFDUyxLQUFLLENBQUNrdkIsaUJBQWdCLENBQUM7Y0FDcEMsSUFBSSxDQUFDL0csZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUMrSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDakksZUFBZSxDQUFDaUIsVUFBVSxDQUFDanpCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ215QixhQUFhLENBQUN1RixVQUFVLENBQUMxM0IsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBNjVCLFNBQUEsQ0FBQTVlLENBQUE7WUFBQTtjQUFBLEtBTTVDLElBQUksQ0FBQ2lYLHVCQUF1QixDQUFDTCxzQkFBc0I7Z0JBQUFnSSxTQUFBLENBQUEzZixDQUFBO2dCQUFBO2NBQUE7Y0FBQWlmLHFCQUFBLEdBQ25CNUksMEVBQWlCLENBQUMySix5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDaEksdUJBQXVCLENBQUNMLHNCQUFzQixDQUFDLEVBQXBJaUgsT0FBSyxHQUFBSyxxQkFBQSxDQUFMTCxLQUFLLEVBQUVDLGtCQUFnQixHQUFBSSxxQkFBQSxDQUFoQkosZ0JBQWdCO2NBQUEsSUFFekJELE9BQUs7Z0JBQUFlLFNBQUEsQ0FBQTNmLENBQUE7Z0JBQUE7Y0FBQTtjQUNSLElBQUksQ0FBQzlRLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDa3ZCLGtCQUFnQixDQUFDO2NBQ3BDLElBQUksQ0FBQy9HLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QixzREFBWSxDQUFDK0osa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ2pJLGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ2p6QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUNteUIsYUFBYSxDQUFDdUYsVUFBVSxDQUFDMTNCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQTY1QixTQUFBLENBQUE1ZSxDQUFBO1lBQUE7Y0FBQSxLQU01QyxJQUFJLENBQUNpWCx1QkFBdUIsQ0FBQ0osc0JBQXNCO2dCQUFBK0gsU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQUFvZixzQkFBQSxHQUNuQi9JLDBFQUFpQixDQUFDMkoseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQ2hJLHVCQUF1QixDQUFDSixzQkFBc0IsQ0FBQyxFQUFwSWdILE9BQUssR0FBQVEsc0JBQUEsQ0FBTFIsS0FBSyxFQUFFQyxrQkFBZ0IsR0FBQU8sc0JBQUEsQ0FBaEJQLGdCQUFnQjtjQUFBLElBRXpCRCxPQUFLO2dCQUFBZSxTQUFBLENBQUEzZixDQUFBO2dCQUFBO2NBQUE7Y0FDUixJQUFJLENBQUM5USxPQUFPLENBQUNTLEtBQUssQ0FBQ2t2QixrQkFBZ0IsQ0FBQztjQUNwQyxJQUFJLENBQUMvRyxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQytKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNqSSxlQUFlLENBQUNpQixVQUFVLENBQUNqekIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDbXlCLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBQUEsTUFNNUMsSUFBSSxDQUFDaVgsdUJBQXVCLENBQUNULG9CQUFvQixDQUFDenhCLEtBQUssSUFBSSxJQUFJLENBQUNreUIsdUJBQXVCLENBQUNSLDJCQUEyQixDQUFDMXhCLEtBQUs7Z0JBQUE2NUIsU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQzNILElBQUksQ0FBQzlRLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLCtGQUErRixDQUFDO2NBQ25ILElBQUksQ0FBQ21vQixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQytKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNqSSxlQUFlLENBQUNpQixVQUFVLENBQUNqekIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDbXlCLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBS3hDd2UsMEJBQTBCLEdBQUcsT0FBTyxJQUFJLENBQUN2SCx1QkFBdUIsQ0FBQ1AsNEJBQTRCLEtBQUssVUFBVSxJQUFJLE9BQU8sSUFBSSxDQUFDTyx1QkFBdUIsQ0FBQ04sNEJBQTRCLEtBQUssVUFBVTtjQUMvTDhILG9CQUFvQixHQUFHLE9BQU8sSUFBSSxDQUFDeEgsdUJBQXVCLENBQUNMLHNCQUFzQixLQUFLLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQ0ssdUJBQXVCLENBQUNKLHNCQUFzQixLQUFLLFVBQVU7Y0FBQSxNQUUvSzJILDBCQUEwQixJQUFJQyxvQkFBb0I7Z0JBQUFHLFNBQUEsQ0FBQTNmLENBQUE7Z0JBQUE7Y0FBQTtjQUNwRCxJQUFJLENBQUM5USxPQUFPLENBQUNTLEtBQUssQ0FBQyw2SEFBNkgsQ0FBQztjQUNqSixJQUFJLENBQUNtb0IsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUMrSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDakksZUFBZSxDQUFDaUIsVUFBVSxDQUFDanpCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ215QixhQUFhLENBQUN1RixVQUFVLENBQUMxM0IsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBNjVCLFNBQUEsQ0FBQTVlLENBQUE7WUFBQTtjQUFBLEtBSzFDLElBQUksQ0FBQ2lYLHVCQUF1QixDQUFDVCxvQkFBb0IsQ0FBQ3p4QixLQUFLO2dCQUFBNjVCLFNBQUEsQ0FBQTNmLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLElBQ3BENVYsdUVBQWlCLENBQUM2MUIsNEJBQTRCO2dCQUFBTixTQUFBLENBQUEzZixDQUFBO2dCQUFBO2NBQUE7Y0FDakQsSUFBSSxDQUFDOVEsT0FBTyxDQUFDUyxLQUFLLENBQUMsaURBQWlELENBQUM7Y0FDckUsSUFBSSxDQUFDbW9CLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QixzREFBWSxDQUFDa0ssa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3BJLGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ2p6QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUNteUIsYUFBYSxDQUFDdUYsVUFBVSxDQUFDMTNCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQTY1QixTQUFBLENBQUE1ZSxDQUFBO1lBQUE7Y0FBQSxJQUt6Q3dlLDBCQUEwQjtnQkFBQUksU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQzdCLElBQUksQ0FBQzlRLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHFHQUFxRyxDQUFDO2NBQ3pILElBQUksQ0FBQ21vQixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQytKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNqSSxlQUFlLENBQUNpQixVQUFVLENBQUNqekIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDbXlCLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBQUE0ZSxTQUFBLENBQUEzZixDQUFBO2NBQUE7WUFBQTtjQUFBLEtBSzFDdWYsMEJBQTBCO2dCQUFBSSxTQUFBLENBQUEzZixDQUFBO2dCQUFBO2NBQUE7Y0FDNUIsSUFBSSxDQUFDOVEsT0FBTyxDQUFDUyxLQUFLLHFHQUFxRyxDQUFDO2NBQ3hILElBQUksQ0FBQ21vQixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQytKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNqSSxlQUFlLENBQUNpQixVQUFVLENBQUNqekIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDbXlCLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBQUEsS0FNNUMsSUFBSSxDQUFDaVgsdUJBQXVCLENBQUNSLDJCQUEyQixDQUFDMXhCLEtBQUs7Z0JBQUE2NUIsU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsSUFDMUQ1Vix1RUFBaUIsQ0FBQzBJLG1DQUFtQyxJQUFJMUksdUVBQWlCLENBQUMySSxnQ0FBZ0M7Z0JBQUE0c0IsU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQy9HLElBQUksQ0FBQzlRLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHVEQUF1RCxDQUFDO2NBQzNFLElBQUksQ0FBQ21vQixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQ2tLLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNwSSxlQUFlLENBQUNpQixVQUFVLENBQUNqekIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDbXlCLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBQUEsSUFLekN5ZSxvQkFBb0I7Z0JBQUFHLFNBQUEsQ0FBQTNmLENBQUE7Z0JBQUE7Y0FBQTtjQUN2QixJQUFJLENBQUM5USxPQUFPLENBQUNTLEtBQUssQ0FBQyx5R0FBeUcsQ0FBQztjQUM3SCxJQUFJLENBQUNtb0IsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUMrSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDakksZUFBZSxDQUFDaUIsVUFBVSxDQUFDanpCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ215QixhQUFhLENBQUN1RixVQUFVLENBQUMxM0IsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBNjVCLFNBQUEsQ0FBQTVlLENBQUE7WUFBQTtjQUFBNGUsU0FBQSxDQUFBM2YsQ0FBQTtjQUFBO1lBQUE7Y0FBQSxLQUsxQ3dmLG9CQUFvQjtnQkFBQUcsU0FBQSxDQUFBM2YsQ0FBQTtnQkFBQTtjQUFBO2NBQ3RCLElBQUksQ0FBQzlRLE9BQU8sQ0FBQ1MsS0FBSyx5R0FBeUcsQ0FBQztjQUM1SCxJQUFJLENBQUNtb0IsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUMrSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDakksZUFBZSxDQUFDaUIsVUFBVSxDQUFDanpCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ215QixhQUFhLENBQUN1RixVQUFVLENBQUMxM0IsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBNjVCLFNBQUEsQ0FBQTVlLENBQUE7WUFBQTtjQU1oRCxJQUFJLENBQUMrVyxlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLElBQUk7Y0FFbkM0SyxHQUFHLEdBQUcsSUFBSSxDQUFDMHRCLE1BQU0sQ0FBQzN1QixLQUFLLENBQUM7Y0FFOUIsSUFBSSxDQUFDcW9CLGVBQWUsQ0FBQ2tGLFdBQVcsQ0FBQ3gyQixHQUFHLENBQ2xDLElBQUksQ0FBQ3N4QixlQUFlLENBQUNPLEtBQUssQ0FBQy9pQixTQUFTLENBQUMsVUFBQStpQixLQUFLLEVBQUk7Z0JBQzVDLElBQUlBLEtBQUssS0FBS3JDLHNEQUFZLENBQUMxckIsS0FBSyxJQUFJK3RCLEtBQUssS0FBS3JDLHNEQUFZLENBQUNtSyxVQUFVLEVBQUU7a0JBQ3JFdkosNkRBQVMsQ0FBQ3dKLDBCQUEwQixDQUFDMXZCLEdBQUcsQ0FBQztnQkFDM0M7Y0FDRixDQUFDLENBQ0gsQ0FBQztjQUVLK3VCLDJCQUFnRCxHQUFHLFNBQW5EQSwyQkFBZ0RBLENBQUE7Z0JBQUEsT0FBUyxJQUFJamMsT0FBTyxDQUFDLFVBQUN3TCxPQUFPLEVBQVc7a0JBQzVGO2tCQUNBeVAsTUFBSSxDQUFDeEcsYUFBYSxDQUFDdUYsVUFBVSxDQUFDMTNCLEtBQUssR0FBRyxLQUFLO2tCQUUzQyxPQUFPa3BCLE9BQU8sQ0FBQ3lQLE1BQUksQ0FBQzRCLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDO2NBQUE7Y0FDSVgsWUFBWSxHQUFHL0ksaUVBQWEsQ0FBQ25XLE1BQU0sQ0FBQy9RLEtBQUssRUFBRSxJQUFJLENBQUNxb0IsZUFBZSxFQUFFLElBQUksQ0FBQ0Msc0JBQXNCLEVBQUUsSUFBSSxDQUFDQyx1QkFBdUIsRUFBRSxJQUFJLENBQUM2Qyw4QkFBOEIsRUFBRTRFLDJCQUEyQixDQUFDO2NBQUEsSUFFOUxDLFlBQVk7Z0JBQUFDLFNBQUEsQ0FBQTNmLENBQUE7Z0JBQUE7Y0FBQTtjQUNmLElBQUksQ0FBQ2lZLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUE2NUIsU0FBQSxDQUFBNWUsQ0FBQTtZQUFBO2NBQUEsT0FBQTRlLFNBQUEsQ0FBQTVlLENBQUEsSUFLdkMyZSxZQUFZLENBQUNuRCxLQUFLLENBQ3ZCN3JCLEdBQUcsRUFDSGpCLEtBQUssRUFDTGl2QixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDYiw2QkFBNkIsQ0FBQ2h6QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDN0M4WCxJQUFJLENBQUMsWUFBTTtnQkFDVjhiLE1BQUksQ0FBQzNHLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3J6QixLQUFLLEdBQUcsS0FBSztjQUM1QyxDQUFDLENBQUMsQ0FDRG1mLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2dCQUNWdXVCLG1CQUFtQixDQUFDbHdCLElBQUksQ0FBQyxDQUFDO2dCQUUxQml3QixNQUFJLENBQUMzRyxlQUFlLENBQUNvQyxZQUFZLENBQUNwMEIsS0FBSyxFQUFFO2dCQUV6QzI0QixNQUFJLENBQUMzRyxlQUFlLENBQUNtQixNQUFNLENBQUNuekIsS0FBSyxHQUFHLEtBQUs7Z0JBRXpDMjRCLE1BQUksQ0FBQ2QsZ0JBQWdCLENBQUMsbUNBQW1DLENBQUM7Z0JBRTFEYyxNQUFJLENBQUMzRyxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQ3NLLGdCQUFnQjtnQkFFaEU3QixNQUFJLENBQUN2dkIsT0FBTyxDQUFDUyxLQUFLLENBQUMseUJBQXlCLEVBQUVRLENBQUMsQ0FBQztjQUNsRCxDQUFDLENBQUMsQ0FDRG93QixPQUFPLENBQUMsWUFBTTtnQkFDYjlCLE1BQUksQ0FBQ3hHLGFBQWEsQ0FBQ3VGLFVBQVUsQ0FBQzEzQixLQUFLLEdBQUcsS0FBSztnQkFFM0MsSUFBSTI0QixNQUFJLENBQUMzRyxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEtBQUtrd0Isc0RBQVksQ0FBQzZGLE9BQU8sSUFBSSxDQUFDanVCLDRDQUFHLENBQUM0eUIsdUJBQXVCLEVBQUU7a0JBQzdGO2dCQUNGO2dCQUVBLElBQU1DLFNBQVMsR0FBRzU3QixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ0YsVUFBVSxDQUFDLFlBQU07a0JBQ25ELElBQU13WSxPQUFPLEdBQUdtYixNQUFJLENBQUM0QixtQkFBbUIsQ0FBQyxDQUFDLENBQ3ZDcGIsS0FBSyxDQUFDLFVBQUE5VSxDQUFDLEVBQUk7b0JBQ1ZzdUIsTUFBSSxDQUFDdnZCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLGdDQUFnQyxFQUFFUSxDQUFDLENBQUM7a0JBQ3pELENBQUMsQ0FBQztnQkFDTixDQUFDLEVBQUVzdUIsTUFBSSxDQUFDaUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUUzQmpDLE1BQUksQ0FBQzNHLGVBQWUsQ0FBQ2tGLFdBQVcsQ0FBQ3gyQixHQUFHLENBQUMsSUFBSTFCLHlEQUFVLENBQUMsWUFBTTtrQkFDeERELGdFQUFXLENBQUNpQixLQUFLLENBQUN5TyxZQUFZLENBQUNrc0IsU0FBUyxDQUFDO2dCQUMzQyxDQUFDLENBQUMsQ0FBQztjQUNMLENBQUMsQ0FBQztVQUFBO1FBQUEsR0FBQWpDLFFBQUE7TUFBQSxDQUNMO01BQUEsU0FwTmFGLFlBQVlBLENBQUE7UUFBQSxPQUFBQyxhQUFBLENBQUFqYSxLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFaK2tCLFlBQVk7SUFBQTtFQUFBO0lBQUExNEIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTY2QixpQkFBQSxHQUFBL2MsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQXNOMUIsU0FBQStlLFNBQUE7UUFBQSxJQUFBdGQsT0FBQTtRQUFBLE9BQUEzQixZQUFBLEdBQUFDLENBQUEsV0FBQWlmLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBN2dCLENBQUE7WUFBQTtjQUFBLEtBQ00sSUFBSSxDQUFDaVksYUFBYSxDQUFDa0csVUFBVTtnQkFBQTBDLFNBQUEsQ0FBQTdnQixDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUN6QixJQUFJMVYsS0FBSyxDQUFDLDhCQUE4QixDQUFDO1lBQUE7Y0FBQSxLQUc3QyxJQUFJLENBQUN5dEIsc0JBQXNCLENBQUNwUCxXQUFXLENBQUM3aUIsS0FBSztnQkFBQSs2QixTQUFBLENBQUE3Z0IsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQTZnQixTQUFBLENBQUE5ZixDQUFBLElBQ3hDLElBQUksQ0FBQzhjLDZCQUE2QixDQUFDLElBQUksQ0FBQzlGLHNCQUFzQixDQUFDcFAsV0FBVyxDQUFDN2lCLEtBQUssQ0FBQztZQUFBO2NBRzFGLElBQUksSUFBSSxDQUFDK3hCLGFBQWEsQ0FBQ3BvQixLQUFLLENBQUMzSixLQUFLLEVBQUU7Z0JBQzVCd2QsT0FBTyxHQUFHLElBQUksQ0FBQ2laLEtBQUssQ0FBQyxDQUFDO2NBQzlCO1lBQUM7Y0FBQSxPQUFBc0UsU0FBQSxDQUFBOWYsQ0FBQTtVQUFBO1FBQUEsR0FBQTZmLFFBQUE7TUFBQSxDQUNGO01BQUEsU0FaYWpGLGdCQUFnQkEsQ0FBQTtRQUFBLE9BQUFnRixpQkFBQSxDQUFBcmMsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBaEJvaUIsZ0JBQWdCO0lBQUE7RUFBQTtJQUFBLzFCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFnN0IsS0FBQSxHQUFBbGQsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQWM5QixTQUFBa2YsU0FBQTtRQUFBLElBQUFwWSxXQUFBO1FBQUEsT0FBQWhILFlBQUEsR0FBQUMsQ0FBQSxXQUFBb2YsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFoaEIsQ0FBQTtZQUFBO2NBQ1EySSxXQUFXLEdBQUcsSUFBSSxDQUFDb1Asc0JBQXNCLENBQUNwUCxXQUFXLENBQUM3aUIsS0FBSztjQUFBLElBRTVENmlCLFdBQVc7Z0JBQUFxWSxTQUFBLENBQUFoaEIsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWdoQixTQUFBLENBQUFqZ0IsQ0FBQSxJQUNQLElBQUksQ0FBQ3diLEtBQUssQ0FBQyxDQUFDO1lBQUE7Y0FBQSxPQUFBeUUsU0FBQSxDQUFBamdCLENBQUEsSUFHZCxJQUFJLENBQUM4Yyw2QkFBNkIsQ0FBQ2xWLFdBQVcsQ0FBQztVQUFBO1FBQUEsR0FBQW9ZLFFBQUE7TUFBQSxDQUN2RDtNQUFBLFNBUllFLElBQUlBLENBQUE7UUFBQSxPQUFBSCxLQUFBLENBQUF4YyxLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFKMG5CLElBQUk7SUFBQTtFQUFBO0lBQUFyN0IsR0FBQTtJQUFBRSxLQUFBLEVBVWpCLFNBQVE0NkIsZ0JBQWdCQSxDQUFBLEVBQVc7TUFDakMsUUFBUSxJQUFJLENBQUM1SSxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLO1FBQ3RDLEtBQUtrd0Isc0RBQVksQ0FBQzBHLFlBQVk7UUFDOUIsS0FBSzFHLHNEQUFZLENBQUNrTCxPQUFPO1FBQ3pCLEtBQUtsTCxzREFBWSxDQUFDbUwsT0FBTztVQUN2QixPQUFPcEssb0NBQW9DO1FBQzdDLEtBQUtmLHNEQUFZLENBQUMxckIsS0FBSztRQUN2QixLQUFLMHJCLHNEQUFZLENBQUNtSyxVQUFVO1FBQzVCLEtBQUtuSyxzREFBWSxDQUFDNkosWUFBWTtRQUM5QixLQUFLN0osc0RBQVksQ0FBQ29MLGFBQWE7UUFDL0IsS0FBS3BMLHNEQUFZLENBQUNxTCxVQUFVO1FBQzVCLEtBQUtyTCxzREFBWSxDQUFDMEYsT0FBTztRQUN6QixLQUFLMUYsc0RBQVksQ0FBQzRKLFFBQVE7UUFDMUIsS0FBSzVKLHNEQUFZLENBQUM2RixPQUFPO1FBQ3pCLEtBQUs3RixzREFBWSxDQUFDc0wsTUFBTTtRQUN4QixLQUFLdEwsc0RBQVksQ0FBQ3VMLFlBQVk7UUFDOUIsS0FBS3ZMLHNEQUFZLENBQUNrSyxrQkFBa0I7UUFDcEMsS0FBS2xLLHNEQUFZLENBQUMrSixrQkFBa0I7UUFDcEMsS0FBSy9KLHNEQUFZLENBQUN3TCwyQkFBMkI7UUFDN0MsS0FBS3hMLHNEQUFZLENBQUN5TCxlQUFlO1FBQ2pDLEtBQUt6TCxzREFBWSxDQUFDc0ssZ0JBQWdCO1VBQ2hDO1VBQ0EsT0FBTyxJQUFJLENBQUM3ZCxtQkFBbUIsQ0FBQ3VDLDJDQUEyQyxDQUFDLElBQUksQ0FBQzhTLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQ3AwQixLQUFLLENBQUM7UUFDdEg7VUFDRThSLG9FQUFpQixDQUFDLElBQUksQ0FBQ2tnQixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLENBQUM7TUFDdkQ7SUFDRjtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUE0N0Isb0JBQUEsR0FBQTlkLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBOGYsU0FBQTtRQUFBLElBQUEzYSxFQUFBO1FBQUEsT0FBQXJGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBZ2dCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBNWhCLENBQUE7WUFBQTtjQUFBZ0gsRUFBQSxHQUNVLElBQUksQ0FBQzhRLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUs7Y0FBQTg3QixTQUFBLENBQUE1aEIsQ0FBQSxHQUFBZ0gsRUFBQSxLQUNqQ2dQLHNEQUFZLENBQUMxckIsS0FBSyxPQUFBMGMsRUFBQSxLQUNsQmdQLHNEQUFZLENBQUN1TCxZQUFZLE9BQUF2YSxFQUFBLEtBQ3pCZ1Asc0RBQVksQ0FBQ2tMLE9BQU8sT0FBQWxhLEVBQUEsS0FDcEJnUCxzREFBWSxDQUFDbUwsT0FBTyxPQUFBbmEsRUFBQSxLQUNwQmdQLHNEQUFZLENBQUNtSyxVQUFVLE9BQUFuWixFQUFBLEtBQ3ZCZ1Asc0RBQVksQ0FBQ3dMLDJCQUEyQixPQUFBeGEsRUFBQSxLQUN4Q2dQLHNEQUFZLENBQUN5TCxlQUFlLE9BQUF6YSxFQUFBLEtBQzVCZ1Asc0RBQVksQ0FBQ3NLLGdCQUFnQixPQUFBdFosRUFBQSxLQUk3QmdQLHNEQUFZLENBQUM2SixZQUFZLE9BQUE3WSxFQUFBLEtBSXpCZ1Asc0RBQVksQ0FBQ29MLGFBQWEsT0FBQXBhLEVBQUEsS0FJMUJnUCxzREFBWSxDQUFDcUwsVUFBVSxPQUFBcmEsRUFBQSxLQUl2QmdQLHNEQUFZLENBQUMwRixPQUFPLE9BQUExVSxFQUFBLEtBSXBCZ1Asc0RBQVksQ0FBQzBHLFlBQVksT0FBQTFWLEVBQUEsS0FJekJnUCxzREFBWSxDQUFDNkYsT0FBTyxPQUFBN1UsRUFBQSxLQUlwQmdQLHNEQUFZLENBQUNzTCxNQUFNLE9BQUF0YSxFQUFBLEtBSW5CZ1Asc0RBQVksQ0FBQzRKLFFBQVEsT0FBQTVZLEVBQUEsS0FJckJnUCxzREFBWSxDQUFDa0ssa0JBQWtCLFFBQUFsWixFQUFBLEtBSS9CZ1Asc0RBQVksQ0FBQytKLGtCQUFrQjtjQUFBO1lBQUE7Y0F2Q2xDLElBQUksQ0FBQzd3QixPQUFPLENBQUNDLElBQUksQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMyb0IsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxFQUFFa3dCLHNEQUFZLENBQUMsSUFBSSxDQUFDOEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxDQUFDLENBQUM7Y0FBQyxPQUFBODdCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJaEosSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsaUdBQWlHLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJckgsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsbUdBQW1HLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJdkgsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0dBQWdHLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJcEgsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsOENBQThDLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJbEUsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsMERBQTBELENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJOUUsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsNkNBQTZDLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJakUsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsa0VBQWtFLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJdEYsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMsc0RBQXNELENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJMUUsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMseUVBQXlFLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJN0YsSUFBSSxDQUFDN1IsT0FBTyxDQUFDQyxJQUFJLENBQUMseUVBQXlFLENBQUM7Y0FBQyxPQUFBeXlCLFNBQUEsQ0FBQTdnQixDQUFBO1lBQUE7Y0FJN0ZuSixvRUFBaUIsQ0FBQyxJQUFJLENBQUNrZ0IsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxDQUFDO1lBQUM7Y0FBQSxPQUFBODdCLFNBQUEsQ0FBQTdnQixDQUFBLElBR2pELElBQUksQ0FBQ3diLEtBQUssQ0FBQyxDQUFDO1VBQUE7UUFBQSxHQUFBb0YsUUFBQTtNQUFBLENBQ3BCO01BQUEsU0ExRGF0QixtQkFBbUJBLENBQUE7UUFBQSxPQUFBcUIsb0JBQUEsQ0FBQXBkLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQW5COG1CLG1CQUFtQjtJQUFBO0VBQUE7SUFBQXo2QixHQUFBO0lBQUFFLEtBQUEsRUE0RGpDLFNBQVE2M0IsZ0JBQWdCQSxDQUFBLEVBQXdEO01BQUEsSUFBQWtFLE1BQUE7TUFBQSxJQUF2RHRFLE1BQWMsR0FBQWhrQixTQUFBLENBQUF4SixNQUFBLFFBQUF3SixTQUFBLFFBQUE3TixTQUFBLEdBQUE2TixTQUFBLE1BQUdzZCw4QkFBOEI7TUFDdEUsSUFBSSxDQUFDaUIsZUFBZSxDQUFDa0YsV0FBVyxDQUFDLzJCLE9BQU8sQ0FBQyxDQUFDO01BRTFDLElBQU04ZixjQUFjLEdBQUcsSUFBSSxDQUFDZ1Msc0JBQXNCLENBQUNoUyxjQUFjLENBQUNqZ0IsS0FBSztNQUV2RSxJQUFJaWdCLGNBQWMsRUFBRTtRQUNsQixJQUFJLENBQUNnUyxzQkFBc0IsQ0FBQ2hTLGNBQWMsQ0FBQ2pnQixLQUFLLEdBQUcsSUFBSTtRQUN2RGlnQixjQUFjLENBQUM2SyxLQUFLLENBQUMsQ0FBQztRQUN0QjdLLGNBQWMsQ0FBQzlmLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLElBQUkySCw0Q0FBRyxDQUFDazBCLCtCQUErQixJQUFJLEVBQUUxM0IsdUVBQWlCLENBQUM1QyxRQUFRLElBQUlvRyw0Q0FBRyxDQUFDbTBCLG9DQUFvQyxDQUFDLEVBQUU7VUFDcEgxM0IscUVBQXVCLENBQUNFLHNCQUFzQixDQUFDLENBQUM7UUFDbEQ7TUFDRjtNQUVBLElBQUksSUFBSSxDQUFDd3RCLHNCQUFzQixDQUFDcFAsV0FBVyxDQUFDN2lCLEtBQUssRUFBRTtRQUNqRCxJQUFJLENBQUNpeUIsc0JBQXNCLENBQUNwUCxXQUFXLENBQUM3aUIsS0FBSyxDQUFDa2pCLFNBQVMsQ0FBQyxDQUFDLENBQUNsVCxPQUFPLENBQUMsVUFBQW9ULEtBQUs7VUFBQSxPQUFJQSxLQUFLLENBQUN3VSxJQUFJLENBQUMsQ0FBQztRQUFBLEVBQUM7UUFDeEYsSUFBSSxDQUFDM0Ysc0JBQXNCLENBQUNwUCxXQUFXLENBQUM3aUIsS0FBSyxHQUFHLElBQUk7TUFDdEQ7TUFFQSxJQUFJLENBQUNneUIsZUFBZSxDQUFDYSxVQUFVLENBQUM3eUIsS0FBSyxHQUFHLEtBQUs7TUFDN0MsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ1csU0FBUyxDQUFDM3lCLEtBQUssR0FBRyxLQUFLO01BQzVDLElBQUksQ0FBQ2d5QixlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLEtBQUs7TUFDMUMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQzJCLE9BQU8sQ0FBQzN6QixLQUFLLEdBQUcsSUFBSTtNQUN6QyxJQUFJLENBQUNneUIsZUFBZSxDQUFDeUIsT0FBTyxDQUFDenpCLEtBQUssR0FBRyxLQUFLO01BRTFDLElBQUksSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ3gwQixLQUFLLElBQUksSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLEVBQUU7UUFDNUUsSUFBTXdkLE9BQU8sR0FBRyxJQUFJLENBQUN3VSxlQUFlLENBQUNzQyxRQUFRLENBQUN0MEIsS0FBSyxDQUFDazhCLGFBQWEsQ0FBQyxJQUFJLENBQUNsSyxlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxFQUFFeTNCLE1BQU0sQ0FBQyxDQUN6RzVhLElBQUksQ0FBQyxVQUFBalcsS0FBQSxFQUFjO1VBQUEsSUFBWndZLE1BQU0sR0FBQXhZLEtBQUEsQ0FBTndZLE1BQU07VUFDWixJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CMmMsTUFBSSxDQUFDM3lCLE9BQU8sQ0FBQytLLElBQUksQ0FBQyxnREFBZ0QsRUFBRTRuQixNQUFJLENBQUN4ekIsUUFBUSxFQUFFNlcsTUFBTSxDQUFDO1lBRTFGO1VBQ0Y7VUFFQTJjLE1BQUksQ0FBQzN5QixPQUFPLENBQUNDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRTB5QixNQUFJLENBQUN4ekIsUUFBUSxFQUFFNlcsTUFBTSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUNERCxLQUFLLENBQUMsVUFBQTlVLENBQUMsRUFBSTtVQUNWMHhCLE1BQUksQ0FBQzN5QixPQUFPLENBQUNTLEtBQUssQ0FBQywrQkFBK0IsRUFBRWt5QixNQUFJLENBQUN4ekIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztNQUNOO01BRUEsSUFBSSxJQUFJLENBQUM4bUIsWUFBWSxJQUFJLElBQUksQ0FBQ0EsWUFBWSxDQUFDc0UsT0FBTyxFQUFFO1FBQ2xELElBQUksQ0FBQ3RFLFlBQVksQ0FBQ3NFLE9BQU8sQ0FBQzNjLFNBQVMsR0FBRyxFQUFFO1FBQ3hDLElBQUksQ0FBQ3FZLFlBQVksQ0FBQ3NFLE9BQU8sQ0FBQ2x0QixRQUFRLEdBQUcsRUFBRTtNQUN6QztNQUVBLElBQUksQ0FBQ3lwQixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxHQUFHLElBQUk7TUFDeEMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLEdBQUcsSUFBSTtNQUMxQyxJQUFJLENBQUNpeUIsc0JBQXNCLENBQUNrSywrQkFBK0IsR0FBRyxDQUFDO0lBQ2pFO0VBQUM7SUFBQXI4QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRZzFCLCtCQUErQkEsQ0FBQ25xQixZQUFzQixFQUFRO01BQUEsSUFBQXV4QixNQUFBO01BQ3BFLElBQU1DLGdDQUFnQyxHQUFHeHhCLFlBQVksQ0FBQzZjLElBQUksQ0FBQyxVQUFBNFUsVUFBVTtRQUFBLE9BQUlBLFVBQVUsQ0FBQ2h5QixVQUFVLENBQUMsMkJBQTJCLENBQUM7TUFBQSxFQUFDO01BRTVILElBQUksQ0FBQ3lxQiw4QkFBOEIsQ0FBQ3dILHFCQUFxQixDQUFDdjhCLEtBQUssR0FBRyxLQUFLO01BQ3ZFLElBQUksQ0FBQyswQiw4QkFBOEIsQ0FBQ3lILHVCQUF1QixDQUFDeDhCLEtBQUssR0FBRyxLQUFLO01BQ3pFLElBQUksQ0FBQyswQiw4QkFBOEIsQ0FBQ0csU0FBUyxDQUFDbDFCLEtBQUssR0FBRyxLQUFLO01BRTNELElBQUksQ0FBQ3E4QixnQ0FBZ0MsRUFBRTtRQUNyQyxJQUFJLENBQUNqekIsT0FBTyxDQUFDQyxJQUFJLENBQUMsK0RBQStELENBQUM7UUFFbEY7TUFDRjtNQUVBLElBQUksQ0FBQy9FLHVFQUFpQixDQUFDbTRCLHdDQUF3QyxFQUFFO1FBQy9ELElBQUksQ0FBQ3J6QixPQUFPLENBQUNDLElBQUksQ0FBQyxnRkFBZ0YsRUFBRWd6QixnQ0FBZ0MsQ0FBQztRQUVySTtNQUNGO01BRUFBLGdDQUFnQyxDQUFDaDZCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0NBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDVjhnQixHQUFHLENBQUMsVUFBQXVaLE1BQU07UUFBQSxPQUFJQSxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDO01BQUEsRUFBQyxDQUM1QjNzQixPQUFPLENBQUMsVUFBQTBzQixNQUFNLEVBQUk7UUFDakIsUUFBUUEsTUFBTTtVQUNaLEtBQUssVUFBVTtZQUNiTixNQUFJLENBQUNySCw4QkFBOEIsQ0FBQ3dILHFCQUFxQixDQUFDdjhCLEtBQUssR0FBRyxJQUFJO1lBRXRFO1VBQ0YsS0FBSyxZQUFZO1lBQ2ZvOEIsTUFBSSxDQUFDckgsOEJBQThCLENBQUN5SCx1QkFBdUIsQ0FBQ3g4QixLQUFLLEdBQUcsSUFBSTtZQUV4RTtVQUNGO1lBQ0VvOEIsTUFBSSxDQUFDaHpCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHVEQUF1RCxFQUFFcXpCLE1BQU0sQ0FBQztZQUVsRjtRQUNKO01BQ0YsQ0FBQyxDQUFDO01BRUosSUFBSSxDQUFDdHpCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDJFQUEyRSxFQUFFLElBQUksQ0FBQzByQiw4QkFBOEIsQ0FBQ3dILHFCQUFxQixDQUFDdjhCLEtBQUssRUFBRSxJQUFJLENBQUMrMEIsOEJBQThCLENBQUN5SCx1QkFBdUIsQ0FBQ3g4QixLQUFLLENBQUM7SUFDcE87RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBNDhCLDhCQUFBLEdBQUE5ZSw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQThnQixTQUE0Q2hhLFdBQXdCO1FBQUEsSUFBQWlhLE1BQUE7UUFBQSxJQUFBM0wsWUFBQSxFQUFBNEwsV0FBQTtRQUFBLE9BQUFsaEIsWUFBQSxHQUFBQyxDQUFBLFdBQUFraEIsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE5aUIsQ0FBQTtZQUFBO2NBQzVEaVgsWUFBWSxHQUFHLElBQUksQ0FBQ2EsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSztjQUFBLElBRXZEbXhCLFlBQVk7Z0JBQUE2TCxTQUFBLENBQUE5aUIsQ0FBQTtnQkFBQTtjQUFBO2NBQ2YsSUFBSSxDQUFDOFgsZUFBZSxDQUFDVyxTQUFTLENBQUMzeUIsS0FBSyxHQUFHLEtBQUs7Y0FDNUMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDN3lCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ2d5QixlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLEtBQUs7Y0FDMUMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQ3Z6QixLQUFLLEdBQUcsS0FBSztjQUMxQyxJQUFJLENBQUNneUIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUMwRixPQUFPO2NBQUMsT0FBQW9ILFNBQUEsQ0FBQS9oQixDQUFBO1lBQUE7Y0FLMUQsSUFBSSxDQUFDLElBQUksQ0FBQ2lYLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQzF4QixLQUFLLEVBQUU7Z0JBQ25FbXhCLFlBQVksQ0FBQ3dGLFNBQVMsR0FBRzlULFdBQVc7Y0FDdEM7Y0FFTWthLFdBQVcsR0FBRzVMLFlBQVksQ0FBQ2dLLElBQUksQ0FBQyxDQUFDO2NBQUEsTUFFbkM0QixXQUFXLEtBQUtuM0IsU0FBUztnQkFBQW8zQixTQUFBLENBQUE5aUIsQ0FBQTtnQkFBQTtjQUFBO2NBQzNCLElBQUksQ0FBQzhYLGVBQWUsQ0FBQ1csU0FBUyxDQUFDM3lCLEtBQUssR0FBRyxLQUFLO2NBQzVDLElBQUksQ0FBQ2d5QixlQUFlLENBQUNhLFVBQVUsQ0FBQzd5QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUNneUIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDcnpCLEtBQUssR0FBRyxLQUFLO2NBQzFDLElBQUksQ0FBQ2d5QixlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLElBQUk7Y0FDekMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QixzREFBWSxDQUFDNkYsT0FBTztjQUFDLE9BQUFpSCxTQUFBLENBQUEvaEIsQ0FBQTtZQUFBO2NBQUEsT0FBQStoQixTQUFBLENBQUEvaEIsQ0FBQSxJQUtuRDhoQixXQUFXLENBQUNsZ0IsSUFBSSxDQUFDLFlBQU07Z0JBQzVCaWdCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ1csU0FBUyxDQUFDM3lCLEtBQUssR0FBRyxLQUFLO2dCQUM1Qzg4QixNQUFJLENBQUM5SyxlQUFlLENBQUNhLFVBQVUsQ0FBQzd5QixLQUFLLEdBQUcsS0FBSztnQkFDN0M4OEIsTUFBSSxDQUFDOUssZUFBZSxDQUFDcUIsT0FBTyxDQUFDcnpCLEtBQUssR0FBRyxLQUFLO2dCQUMxQzg4QixNQUFJLENBQUM5SyxlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLElBQUk7Z0JBQ3pDODhCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QixzREFBWSxDQUFDNkYsT0FBTztjQUN6RCxDQUFDLENBQUMsQ0FBQzVXLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2dCQUNaLElBQU00eUIsYUFBYSxHQUFHLENBQUMsQ0FBQ3BhLFdBQVcsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsQ0FBQ2dhLE1BQU0sQ0FBQyxVQUFBOVosS0FBSyxFQUFJO2tCQUM5RCxPQUFPQSxLQUFLLENBQUNqRyxJQUFJLEtBQUssT0FBTztnQkFDL0IsQ0FBQyxDQUFDLENBQUNsVCxNQUFNO2dCQUNULElBQU1rekIsc0NBQXNDLEdBQUcsQ0FBQ3IxQiw0Q0FBRyxDQUFDc25CLG1DQUFtQztnQkFFdkYsSUFBSStOLHNDQUFzQyxJQUFJaE0sWUFBWSxDQUFDK0csS0FBSyxJQUFJLENBQUMrRSxhQUFhLEVBQUU7a0JBQ2xGOUwsWUFBWSxDQUFDd0YsU0FBUyxHQUFHLElBQUk7a0JBQzdCbUcsTUFBSSxDQUFDOUssZUFBZSxDQUFDVyxTQUFTLENBQUMzeUIsS0FBSyxHQUFHLEtBQUs7a0JBQzVDODhCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDN3lCLEtBQUssR0FBRyxJQUFJO2tCQUM1Qzg4QixNQUFJLENBQUM5SyxlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLEtBQUs7a0JBQzFDODhCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQ3Z6QixLQUFLLEdBQUcsS0FBSztrQkFDMUM4OEIsTUFBSSxDQUFDOUssZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUNzTCxNQUFNO2tCQUV0RCxJQUFJMkIsc0NBQXNDLEVBQUU7b0JBQzFDTCxNQUFJLENBQUMxekIsT0FBTyxDQUFDQyxJQUFJLENBQUMsbUVBQW1FLEVBQUV5ekIsTUFBSSxDQUFDdjBCLFFBQVEsRUFBRThCLENBQUMsQ0FBQztvQkFFeEc7a0JBQ0Y7a0JBRUEsSUFBSTR5QixhQUFhLEVBQUU7b0JBQ2pCSCxNQUFJLENBQUMxekIsT0FBTyxDQUFDQyxJQUFJLENBQUMseURBQXlELEVBQUV5ekIsTUFBSSxDQUFDdjBCLFFBQVEsRUFBRThCLENBQUMsQ0FBQztvQkFFOUY7a0JBQ0Y7a0JBRUF5eUIsTUFBSSxDQUFDMXpCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLCtEQUErRCxFQUFFeXpCLE1BQUksQ0FBQ3YwQixRQUFRLEVBQUU4QixDQUFDLENBQUM7a0JBRXBHO2dCQUNGO2dCQUVBOG1CLFlBQVksQ0FBQytHLEtBQUssR0FBRyxJQUFJO2dCQUV6QixPQUFPL0csWUFBWSxDQUFDZ0ssSUFBSSxDQUFDLENBQUMsQ0FDdkJ0ZSxJQUFJLENBQUMsWUFBTTtrQkFDVmlnQixNQUFJLENBQUMxekIsT0FBTyxDQUFDQyxJQUFJLENBQUMsNkVBQTZFLEVBQUV5ekIsTUFBSSxDQUFDdjBCLFFBQVEsQ0FBQztrQkFFL0d1MEIsTUFBSSxDQUFDOUssZUFBZSxDQUFDVyxTQUFTLENBQUMzeUIsS0FBSyxHQUFHLElBQUk7a0JBQzNDODhCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDN3lCLEtBQUssR0FBRyxLQUFLO2tCQUM3Qzg4QixNQUFJLENBQUM5SyxlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLEtBQUs7a0JBQzFDODhCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQ3Z6QixLQUFLLEdBQUcsSUFBSTtrQkFDekM4OEIsTUFBSSxDQUFDOUssZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLHNEQUFZLENBQUM2RixPQUFPO2dCQUN6RCxDQUFDLENBQUMsQ0FBQzVXLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2tCQUNaOG1CLFlBQVksQ0FBQytHLEtBQUssR0FBRyxLQUFLO2tCQUUxQjRFLE1BQUksQ0FBQzF6QixPQUFPLENBQUNDLElBQUksQ0FBQyx5REFBeUQsRUFBRXl6QixNQUFJLENBQUN2MEIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO2tCQUU5RjhtQixZQUFZLENBQUN3RixTQUFTLEdBQUcsSUFBSTtrQkFDN0JtRyxNQUFJLENBQUM5SyxlQUFlLENBQUNXLFNBQVMsQ0FBQzN5QixLQUFLLEdBQUcsS0FBSztrQkFDNUM4OEIsTUFBSSxDQUFDOUssZUFBZSxDQUFDYSxVQUFVLENBQUM3eUIsS0FBSyxHQUFHLElBQUk7a0JBQzVDODhCLE1BQUksQ0FBQzlLLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3J6QixLQUFLLEdBQUcsS0FBSztrQkFDMUM4OEIsTUFBSSxDQUFDOUssZUFBZSxDQUFDdUIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO2tCQUMxQzg4QixNQUFJLENBQUM5SyxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0Isc0RBQVksQ0FBQ3NMLE1BQU07Z0JBQ3hELENBQUMsQ0FBQztjQUNOLENBQUMsQ0FBQztVQUFBO1FBQUEsR0FBQXFCLFFBQUE7TUFBQSxDQUNIO01BQUEsU0ExRmE5RSw2QkFBNkJBLENBQUF6TyxHQUFBO1FBQUEsT0FBQXNULDhCQUFBLENBQUFwZSxLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUE3QnNrQiw2QkFBNkI7SUFBQTtFQUFBO0FBQUE7Ozs7Ozs7Ozs7OztBQzE4QjdDO0FBQ0E7QUFDQTtBQUZBLElBSUs3SCxZQUFZLDBCQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQUEsT0FBWkEsWUFBWTtBQUFBLEVBQVpBLFlBQVk7QUFxQmpCLCtEQUFlQSxZQUFZLEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekIzQjtBQUNBO0FBQ0E7O0FBSW9FO0FBQzNDO0FBR3lCO0FBQUEsSUFjN0JrTixRQUFRO0VBaUMzQixTQUFBQSxTQUFBLEVBQXNCO0lBQUE5OUIsMklBQUEsT0FBQTg5QixRQUFBO0lBQ3BCLE1BQU0sSUFBSTU0QixLQUFLLENBQUMseURBQXlELENBQUM7RUFDNUU7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQXU5QixRQUFBO0lBQUF0OUIsR0FBQTtJQUFBRSxLQUFBLEVBbENELFNBQU9xOUIsYUFBYUEsQ0FBQ3BjLE9BQTZCLEVBQVc7TUFDM0QsSUFBSSxDQUFDblosNENBQUcsQ0FBQ3cxQixXQUFXLENBQUN0OUIsS0FBSyxFQUFFO1FBQzFCLE1BQU0sSUFBSXdFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztNQUN2QztNQUVBLElBQU0rNEIsY0FBOEIsR0FBRztRQUNyQ2xNLFNBQVMsRUFBRXBRLE9BQU8sQ0FBQ29RLFNBQVM7UUFDNUJNLDRCQUE0QixFQUFFMVEsT0FBTyxDQUFDMFEsNEJBQTRCO1FBQ2xFQyw0QkFBNEIsRUFBRTNRLE9BQU8sQ0FBQzJRLDRCQUE0QjtRQUNsRUMsc0JBQXNCLEVBQUU1USxPQUFPLENBQUM0USxzQkFBc0I7UUFDdERDLHNCQUFzQixFQUFFN1EsT0FBTyxDQUFDNlE7TUFDbEMsQ0FBQztNQUNELElBQU0wTCxxQ0FHTCxHQUFHdmMsT0FBTztNQUVYLElBQUl1YyxxQ0FBcUMsQ0FBQ2xNLGtDQUFrQyxFQUFFO1FBQzVFaU0sY0FBYyxDQUFDak0sa0NBQWtDLEdBQUdrTSxxQ0FBcUMsQ0FBQ2xNLGtDQUFrQztNQUM5SDtNQUVBLElBQUlrTSxxQ0FBcUMsQ0FBQ2pNLG1DQUFtQyxFQUFFO1FBQzdFZ00sY0FBYyxDQUFDaE0sbUNBQW1DLEdBQUdpTSxxQ0FBcUMsQ0FBQ2pNLG1DQUFtQztNQUNoSTtNQUVBLE9BQU8sSUFBSUwsZ0RBQU8sQ0FBQ2pRLE9BQU8sQ0FBQ2tRLFlBQVksRUFBRWxRLE9BQU8sQ0FBQ3RYLEtBQUssRUFBRTR6QixjQUFjLENBQUM7SUFDekU7RUFBQztJQUFBejlCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBK0Q7TUFDN0QsT0FBT3VFLHNFQUFpQixDQUFDbTRCLHdDQUF3QztJQUNuRTtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZESDtBQUNBO0FBQ0E7O0FBRXVDO0FBQ2E7QUFDTjtBQU1yQjtBQUNvQztBQUNOO0FBR3ZELElBQU1nQixnQkFBZ0IsR0FBRyxDQUFDO0FBQUMsSUFRTm5OLGNBQWM7RUErQmpDLFNBQUFBLGVBQVlyUCxPQUErQixFQUFFO0lBQUEsSUFBQXljLGtCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO0lBQUF0K0IsMklBQUEsT0FBQWd4QixjQUFBO0lBQUEvd0IsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFDM0MsSUFBSSxDQUFDMjNCLFdBQVcsR0FBRyxJQUFJajRCLDREQUFjLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMyMUIsa0JBQWtCLEdBQUcsSUFBSTMxQiw0REFBYyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDczJCLG1CQUFtQixHQUFHLElBQUl0MkIsNERBQWMsQ0FBQyxDQUFDO0lBQy9DLElBQUksQ0FBQ2kzQixxQkFBcUIsR0FBRyxJQUFJMTJCLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQzJ4QixZQUFZLEdBQUcsSUFBSWp5QixtREFBTyxDQUEwQixJQUFJLENBQUM7SUFDOUQsSUFBSSxDQUFDcXpCLEtBQUssR0FBRyxJQUFJcnpCLG1EQUFPLENBQWVneEIsOERBQVksQ0FBQzBHLFlBQVksQ0FBQztJQUNqRSxJQUFJLENBQUNuRSxNQUFNLEdBQUcsSUFBSXZ6QixtREFBTyxDQUFpQixJQUFJLENBQUM7SUFDL0MsSUFBSSxDQUFDeXpCLFNBQVMsR0FBRyxJQUFJenpCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0lBQzVDLElBQUksQ0FBQzJ6QixVQUFVLEdBQUcsSUFBSTN6QixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUM3QyxJQUFJLENBQUMrekIsVUFBVSxHQUFHLElBQUkvekIsbURBQU8sQ0FBVSxJQUFJLENBQUM7SUFDNUMsSUFBSSxDQUFDaTBCLE1BQU0sR0FBRyxJQUFJajBCLG1EQUFPLENBQVUsSUFBSSxDQUFDO0lBQ3hDLElBQUksQ0FBQ20wQixPQUFPLEdBQUcsSUFBSW4wQixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUMxQyxJQUFJLENBQUNxMEIsT0FBTyxHQUFHLElBQUlyMEIsbURBQU8sQ0FBVSxLQUFLLENBQUM7SUFDMUMsSUFBSSxDQUFDdTBCLE9BQU8sR0FBRyxJQUFJdjBCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0lBQzFDLElBQUksQ0FBQ3kwQixPQUFPLEdBQUcsSUFBSXowQixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUMxQyxJQUFJLENBQUNteUIsU0FBUyxHQUFHLElBQUlueUIsbURBQU8sRUFBQXcrQixrQkFBQSxHQUFjemMsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVvUSxTQUFTLGNBQUFxTSxrQkFBQSxjQUFBQSxrQkFBQSxHQUFJRCxnQkFBZ0IsQ0FBQztJQUNqRixJQUFJLENBQUMzSixHQUFHLEdBQUcsSUFBSTUwQixtREFBTyxDQUEwQjBHLFNBQVMsQ0FBQztJQUMxRCxJQUFJLENBQUNvdUIsWUFBWSxHQUFHLElBQUk5MEIsbURBQU8sQ0FBZ0IsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQ2cxQixVQUFVLEdBQUcsSUFBSWgxQixtREFBTyxDQUFZK3dCLHdEQUFTLENBQUNnSCxLQUFLLENBQUM7SUFDekQsSUFBSSxDQUFDN0MsWUFBWSxHQUFHLElBQUlsMUIsbURBQU8sQ0FBUyxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDbzFCLFFBQVEsR0FBRyxJQUFJcDFCLG1EQUFPLENBQWtCLElBQUksQ0FBQztJQUNsRCxJQUFJLENBQUNveUIsa0NBQWtDLElBQUFxTSxxQkFBQSxHQUFHMWMsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVxUSxrQ0FBa0MsY0FBQXFNLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBSTtJQUM3RixJQUFJLENBQUNwTSxtQ0FBbUMsSUFBQXFNLHNCQUFBLEdBQUczYyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRXNRLG1DQUFtQyxjQUFBcU0sc0JBQUEsY0FBQUEsc0JBQUEsR0FBSSxJQUFJO0lBQy9GLElBQUksQ0FBQ3BKLE1BQU0sR0FBRyxJQUFJdDFCLG1EQUFPLENBQWlCLElBQUksQ0FBQztJQUMvQyxJQUFJLENBQUMwbEIsYUFBYSxHQUFHLElBQUkxbEIsbURBQU8sQ0FBOEIsSUFBSSxDQUFDO0lBQ25FLElBQUksQ0FBQ3MyQixjQUFjLEdBQUcsSUFBSTtJQUMxQixJQUFJLENBQUNxSSxpQkFBaUIsR0FBRyxJQUFJO0lBQzdCLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUcsSUFBSTtJQUM3QixJQUFJLENBQUNoSSx3QkFBd0IsR0FBRyxDQUFDO0VBQ25DO0VBQUMsT0FBQWoyQix3SUFBQSxDQUFBeXdCLGNBQUE7SUFBQXh3QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVCO01BQ3JCLElBQU15MEIsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFDeDBCLEtBQUs7TUFFaEMsSUFBSSxDQUFDdzBCLE1BQU0sRUFBRTtRQUNYLE9BQU8sR0FBRztNQUNaO01BRUEsT0FBT0EsTUFBTSxDQUFDanNCLFFBQVE7SUFDeEI7RUFBQztJQUFBekksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQSs5QixXQUFXQSxDQUFDM2UsTUFBdUIsRUFBUTtNQUN6QyxRQUFRQSxNQUFNO1FBQ1osS0FBSyxJQUFJO1VBQ1A7UUFDRixLQUFLLGNBQWM7UUFDbkIsS0FBSyxnQkFBZ0I7UUFDckIsS0FBSyxhQUFhO1VBQ2hCLElBQUksQ0FBQzZULFVBQVUsQ0FBQ2p6QixLQUFLLEdBQUcsS0FBSztVQUM3QixJQUFJLENBQUNvMEIsWUFBWSxDQUFDcDBCLEtBQUssR0FBRyxDQUFDO1VBQzNCLElBQUksQ0FBQ3V6QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLEtBQUs7VUFDMUIsSUFBSSxDQUFDeXpCLE9BQU8sQ0FBQ3p6QixLQUFLLEdBQUcsSUFBSTtVQUN6QixJQUFJLENBQUMyekIsT0FBTyxDQUFDM3pCLEtBQUssR0FBRyxLQUFLO1VBQzFCLElBQUksQ0FBQ3cwQixNQUFNLENBQUN4MEIsS0FBSyxHQUFHLElBQUk7VUFFeEI7UUFDRixLQUFLLFdBQVc7UUFDaEIsS0FBSyxXQUFXO1VBQ2QsSUFBSSxDQUFDbzBCLFlBQVksQ0FBQ3AwQixLQUFLLEdBQUcsQ0FBQztVQUMzQixJQUFJLENBQUN1ekIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO1VBQzFCLElBQUksQ0FBQ3l6QixPQUFPLENBQUN6ekIsS0FBSyxHQUFHLElBQUk7VUFDekIsSUFBSSxDQUFDMnpCLE9BQU8sQ0FBQzN6QixLQUFLLEdBQUcsS0FBSztVQUMxQixJQUFJLENBQUN3MEIsTUFBTSxDQUFDeDBCLEtBQUssR0FBRyxJQUFJO1VBRXhCO1FBQ0Y7VUFDRSxJQUFJLENBQUNvMEIsWUFBWSxDQUFDcDBCLEtBQUssRUFBRTtVQUN6QixJQUFJLENBQUN1ekIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO1VBQzFCLElBQUksQ0FBQ3l6QixPQUFPLENBQUN6ekIsS0FBSyxHQUFHLElBQUk7VUFDekIsSUFBSSxDQUFDMnpCLE9BQU8sQ0FBQzN6QixLQUFLLEdBQUcsS0FBSztVQUMxQixJQUFJLENBQUN3MEIsTUFBTSxDQUFDeDBCLEtBQUssR0FBRyxJQUFJO1VBRXhCO01BQ0o7SUFDRjtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFnK0IsNkNBQTZDQSxDQUFBLEVBQVM7TUFDcEQsSUFBSSxJQUFJLENBQUM3TSxZQUFZLENBQUNueEIsS0FBSyxJQUFJLElBQUksQ0FBQ214QixZQUFZLENBQUNueEIsS0FBSyxDQUFDeTFCLE9BQU8sRUFBRTtRQUM5RCxJQUFJLENBQUN0RSxZQUFZLENBQUNueEIsS0FBSyxDQUFDeTFCLE9BQU8sQ0FBQzNjLFNBQVMsR0FBR2hSLDRDQUFHLENBQUMwUixlQUFlO1FBQy9ELElBQUksQ0FBQzJYLFlBQVksQ0FBQ254QixLQUFLLENBQUN5MUIsT0FBTyxDQUFDbHRCLFFBQVEsR0FBRyxJQUFJLENBQUNBLFFBQVE7TUFDMUQ7SUFDRjtFQUFDO0lBQUF6SSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaStCLGlDQUFpQ0EsQ0FBQzdlLE1BQXVCLEVBQWdCO01BQ3ZFLFFBQVFBLE1BQU07UUFDWixLQUFLLElBQUk7VUFDUCxPQUFPOFEsOERBQVksQ0FBQzRKLFFBQVE7UUFDOUIsS0FBSyxXQUFXO1FBQ2hCLEtBQUssV0FBVztVQUNkLE9BQU81Siw4REFBWSxDQUFDa0wsT0FBTztRQUM3QixLQUFLLGdCQUFnQjtVQUNuQixPQUFPbEwsOERBQVksQ0FBQ29MLGFBQWE7UUFDbkMsS0FBSyxhQUFhO1VBQ2hCLE9BQU9wTCw4REFBWSxDQUFDcUwsVUFBVTtRQUNoQyxLQUFLLGNBQWM7VUFDakIsT0FBT3JMLDhEQUFZLENBQUM2SixZQUFZO1FBQ2xDLEtBQUssVUFBVTtRQUNmLEtBQUssY0FBYztRQUNuQixLQUFLLFNBQVM7VUFDWixPQUFPN0osOERBQVksQ0FBQ21LLFVBQVU7UUFDaEMsS0FBSyxlQUFlO1VBQ2xCLE9BQU9uSyw4REFBWSxDQUFDK0osa0JBQWtCO1FBQ3hDLEtBQUsseUJBQXlCO1VBQzVCLE9BQU8vSiw4REFBWSxDQUFDd0wsMkJBQTJCO1FBQ2pELEtBQUssUUFBUTtVQUNYLE9BQU94TCw4REFBWSxDQUFDMXJCLEtBQUs7UUFDM0I7VUFDRXNOLG1FQUFpQixDQUFDc04sTUFBTSxDQUFDO01BQzdCO0lBQ0Y7RUFBQztJQUFBdGYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWsrQiwwQkFBMEJBLENBQUM5ZSxNQUF1QixFQUFrQjtNQUNsRSxRQUFRQSxNQUFNO1FBQ1osS0FBSyxJQUFJO1FBQ1QsS0FBSyxXQUFXO1FBQ2hCLEtBQUssZ0JBQWdCO1FBQ3JCLEtBQUssYUFBYTtRQUNsQixLQUFLLGVBQWU7UUFDcEIsS0FBSyx5QkFBeUI7VUFDNUIsT0FBTyxJQUFJO1FBQ2IsS0FBSyxXQUFXO1VBQ2QsT0FBTyxLQUFLO1FBQ2QsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztRQUNkLEtBQUssY0FBYztRQUNuQixLQUFLLFVBQVU7UUFDZixLQUFLLFFBQVE7VUFDWCxPQUFPLElBQUksQ0FBQ3FULE1BQU0sQ0FBQ3p5QixLQUFLO1FBQzFCO1VBQ0U4UixtRUFBaUIsQ0FBQ3NOLE1BQU0sQ0FBQztNQUM3QjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVMSDtBQUNBO0FBQ0E7O0FBRXVDO0FBQUEsSUFHbEJ3Uiw2QkFBNkIsZ0JBQUEvd0Isd0lBQUEsQ0FPaEQsU0FBQSt3Qiw4QkFBQSxFQUFjO0VBQUF0eEIsMklBQUEsT0FBQXN4Qiw2QkFBQTtFQUFBcnhCLDJJQUFBO0VBQUFBLDJJQUFBO0VBQUFBLDJJQUFBO0VBQUFBLDJJQUFBO0VBQUFBLDJJQUFBO0VBQ1osSUFBSSxDQUFDZzlCLHFCQUFxQixHQUFHLElBQUlyOUIsbURBQU8sQ0FBVSxLQUFLLENBQUM7RUFDeEQsSUFBSSxDQUFDczlCLHVCQUF1QixHQUFHLElBQUl0OUIsbURBQU8sQ0FBVSxLQUFLLENBQUM7RUFDMUQsSUFBSSxDQUFDZzJCLFNBQVMsR0FBRyxJQUFJaDJCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0VBQzVDLElBQUksQ0FBQ2syQiw2QkFBNkIsR0FBRyxJQUFJbDJCLG1EQUFPLENBQXVDLElBQUksQ0FBQztFQUM1RixJQUFJLENBQUNvMkIsOEJBQThCLEdBQUcsSUFBSXAyQixtREFBTyxDQUF3QyxJQUFJLENBQUM7QUFDaEcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCSDtBQUNBO0FBQ0E7O0FBRXVDO0FBQUEsSUFHbEJ3eEIscUJBQXFCLGdCQUFBN3dCLHdJQUFBLENBS3hDLFNBQUE2d0Isc0JBQUEsRUFBYztFQUFBcHhCLDJJQUFBLE9BQUFveEIscUJBQUE7RUFBQW54QiwySUFBQTtFQUFBQSwySUFBQTtFQUFBQSwySUFBQTtFQUNaLElBQUksQ0FBQ3NqQixXQUFXLEdBQUcsSUFBSTNqQixtREFBTyxDQUFxQixJQUFJLENBQUM7RUFDeEQsSUFBSSxDQUFDK2dCLGNBQWMsR0FBRyxJQUFJL2dCLG1EQUFPLENBQXlCLElBQUksQ0FBQztFQUMvRCxJQUFJLENBQUNpOUIsK0JBQStCLEdBQUcsQ0FBQztBQUMxQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaEJIO0FBQ0E7QUFDQTs7QUFFdUM7QUFBQSxJQUVsQnhMLFlBQVksZ0JBQUE5d0Isd0lBQUEsQ0FJL0IsU0FBQTh3QixhQUFBLEVBQWM7RUFBQXJ4QiwySUFBQSxPQUFBcXhCLFlBQUE7RUFBQXB4QiwySUFBQTtFQUFBQSwySUFBQTtFQUNaLElBQUksQ0FBQ200QixVQUFVLEdBQUcsSUFBSXg0QixtREFBTyxDQUFVLEtBQUssQ0FBQztFQUM3QyxJQUFJLENBQUNtNUIsVUFBVSxHQUFHLEtBQUs7QUFDekIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2JIO0FBQ0E7QUFDQTs7QUFFdUM7QUFBQSxJQTBCbEI1SCxzQkFBc0IsZ0JBQUE1d0Isd0lBQUEsQ0FVekMsU0FBQTR3Qix1QkFBWXhQLE9BQXNDLEVBQUU7RUFBQTNoQiwySUFBQSxPQUFBbXhCLHNCQUFBO0VBQUFseEIsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFDbEQsSUFBSSxDQUFDa3lCLG9CQUFvQixHQUFHLElBQUl2eUIsbURBQU8sQ0FBVStoQixPQUFPLENBQUN3USxvQkFBb0IsQ0FBQztFQUM5RSxJQUFJLENBQUNDLDJCQUEyQixHQUFHLElBQUl4eUIsbURBQU8sQ0FBVStoQixPQUFPLENBQUN5USwyQkFBMkIsQ0FBQztFQUM1RixJQUFJLENBQUNDLDRCQUE0QixHQUFHMVEsT0FBTyxDQUFDMFEsNEJBQTRCO0VBQ3hFLElBQUksQ0FBQ0MsNEJBQTRCLEdBQUczUSxPQUFPLENBQUMyUSw0QkFBNEI7RUFDeEUsSUFBSSxDQUFDQyxzQkFBc0IsR0FBRzVRLE9BQU8sQ0FBQzRRLHNCQUFzQjtFQUM1RCxJQUFJLENBQUNDLHNCQUFzQixHQUFHN1EsT0FBTyxDQUFDNlEsc0JBQXNCO0VBQzVELElBQUksQ0FBQ3FNLFVBQVUsR0FBRztJQUNoQkMsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QkMsUUFBUSxFQUFFLElBQUk7SUFDZEMsR0FBRyxFQUFFLElBQUk7SUFDVHBaLEtBQUssRUFBRSxJQUFJO0lBQ1hxWix1QkFBdUIsRUFBRSxJQUFJO0lBQzdCQyxzQkFBc0IsRUFBRSxJQUFJO0lBQzVCQyxzQkFBc0IsRUFBRTtFQUMxQixDQUFDO0VBQ0QsSUFBSSxDQUFDQyxVQUFVLEdBQUc7SUFDaEJOLGdCQUFnQixFQUFFLElBQUk7SUFDdEJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLEdBQUcsRUFBRSxJQUFJO0lBQ1RwWixLQUFLLEVBQUUsSUFBSTtJQUNYcVosdUJBQXVCLEVBQUUsSUFBSTtJQUM3QkMsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QkMsc0JBQXNCLEVBQUU7RUFDMUIsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqRUg7QUFDQTtBQUNBOztBQUV1QztBQUFBLElBR2xCcE8sWUFBWSxnQkFBQXh3Qix3SUFBQSxDQUkvQixTQUFBd3dCLGFBQVkxbUIsS0FBdUIsRUFBRTtFQUFBckssMklBQUEsT0FBQSt3QixZQUFBO0VBQUE5d0IsMklBQUE7RUFBQUEsMklBQUE7RUFDbkMsSUFBSSxDQUFDb0ssS0FBSyxHQUFHLElBQUl6SyxtREFBTyxDQUFtQnlLLEtBQUssQ0FBQztFQUNqRCxJQUFJLENBQUNvcEIsYUFBYSxHQUFHLElBQUk3ekIsbURBQU8sQ0FBVSxLQUFLLENBQUM7QUFDbEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDZEg7QUFDQTtBQUNBOztBQUVPLElBQUt5L0IsVUFBVSwwQkFBVkEsVUFBVTtFQUFWQSxVQUFVLENBQVZBLFVBQVU7RUFBVkEsVUFBVSxDQUFWQSxVQUFVO0VBQUEsT0FBVkEsVUFBVTtBQUFBLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKdEI7QUFDQTtBQUNBOztBQUV3RDtBQUNXO0FBQUEsSUFFOUNDLGlCQUFpQjtFQUFBLFNBQUFBLGtCQUFBO0lBQUF0L0IsMklBQUEsT0FBQXMvQixpQkFBQTtFQUFBO0VBQUEsT0FBQS8rQix3SUFBQSxDQUFBKytCLGlCQUFBO0lBQUE5K0IsR0FBQTtJQUFBRSxLQUFBLEVBQ3BDLFNBQWM2K0IsaUNBQWlDQSxDQUFDamIsVUFBc0IsRUFBa0I7TUFDdEYsUUFBUUEsVUFBVTtRQUNoQixLQUFLK2EsbURBQVUsQ0FBQ0csSUFBSTtVQUNsQixPQUFPLE1BQU07UUFDZixLQUFLSCxtREFBVSxDQUFDSSxHQUFHO1VBQ2pCLE9BQU8sS0FBSztRQUNkO1VBQ0VqdEIsbUVBQWlCLENBQUM4UixVQUFVLENBQUM7TUFDakM7SUFDRjtFQUFDO0lBQUE5akIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBY2cvQixpQ0FBaUNBLENBQUNDLGNBQThCLEVBQWM7TUFDMUYsSUFBTUMsZ0JBQWdCLEdBQUdELGNBQWMsQ0FBQ0UsV0FBVyxDQUFDLENBQTRCO01BRWhGLFFBQVFELGdCQUFnQjtRQUN0QixLQUFLLE1BQU07VUFDVCxPQUFPUCxtREFBVSxDQUFDRyxJQUFJO1FBQ3hCLEtBQUssS0FBSztVQUNSLE9BQU9ILG1EQUFVLENBQUNJLEdBQUc7UUFDdkI7VUFDRWp0QixtRUFBaUIsQ0FBQ290QixnQkFBZ0IsQ0FBQztNQUN2QztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0FDOUJIO0FBQ0E7QUFDQTs7QUFFTyxJQUFLRSxVQUFVLDBCQUFWQSxVQUFVO0VBQVZBLFVBQVUsQ0FBVkEsVUFBVTtFQUFWQSxVQUFVLENBQVZBLFVBQVU7RUFBVkEsVUFBVSxDQUFWQSxVQUFVO0VBQUEsT0FBVkEsVUFBVTtBQUFBLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKdEI7QUFDQTtBQUNBOztBQUVtRTtBQUNYO0FBQUEsSUFFbkNDLGlCQUFpQjtFQUFBLFNBQUFBLGtCQUFBO0lBQUEvL0IsMklBQUEsT0FBQSsvQixpQkFBQTtFQUFBO0VBQUEsT0FBQXgvQix3SUFBQSxDQUFBdy9CLGlCQUFBO0lBQUF2L0IsR0FBQTtJQUFBRSxLQUFBLEVBQ3BDLFNBQWNzL0IsaUNBQWlDQSxDQUFDeGIsVUFBc0IsRUFBa0I7TUFDdEYsUUFBUUEsVUFBVTtRQUNoQixLQUFLc2IsbURBQVUsQ0FBQ0csSUFBSTtVQUNsQixPQUFPLE1BQU07UUFDZixLQUFLSCxtREFBVSxDQUFDSSxHQUFHO1VBQ2pCLE9BQU8sS0FBSztRQUNkLEtBQUtKLG1EQUFVLENBQUNLLEdBQUc7VUFDakIsT0FBTyxLQUFLO1FBQ2Q7VUFDRTN0QixtRUFBaUIsQ0FBQ2dTLFVBQVUsQ0FBQztNQUNqQztJQUNGO0VBQUM7SUFBQWhrQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFjMC9CLGlDQUFpQ0EsQ0FBQ0MsY0FBOEIsRUFBYztNQUMxRixJQUFNQyxnQkFBZ0IsR0FBR0QsY0FBYyxDQUFDUixXQUFXLENBQUMsQ0FBNEI7TUFFaEYsUUFBUVMsZ0JBQWdCO1FBQ3RCLEtBQUssTUFBTTtVQUNULE9BQU9SLG1EQUFVLENBQUNHLElBQUk7UUFDeEIsS0FBSyxLQUFLO1VBQ1IsT0FBT0gsbURBQVUsQ0FBQ0ksR0FBRztRQUN2QixLQUFLLEtBQUs7VUFDUixPQUFPSixtREFBVSxDQUFDSyxHQUFHO1FBQ3ZCO1VBQ0UzdEIsbUVBQWlCLENBQUM4dEIsZ0JBQWdCLENBQUM7TUFDdkM7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7OztBQ2xDSDtBQUNBO0FBQ0E7O0FBRUEsK0RBQWUsSUFBSUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRTs7Ozs7Ozs7Ozs7Ozs7QUNKdkQ7QUFDQTtBQUNBOztBQUVBLElBQU1DLG1CQUFtQixHQUFHLDZDQUE2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKekU7QUFDQTtBQUNBOztBQUUrRTtBQUNsQjtBQUFBLElBRXhDQyxrQkFBa0I7RUFBQSxTQUFBQSxtQkFBQTtJQUFBemdDLDJJQUFBLE9BQUF5Z0Msa0JBQUE7RUFBQTtFQUFBLE9BQUFsZ0Msd0lBQUEsQ0FBQWtnQyxrQkFBQTtJQUFBamdDLEdBQUE7SUFBQUUsS0FBQSxFQUNyQyxTQUFPZ2dDLG1DQUFtQ0EsQ0FBQ0MsV0FBd0IsRUFBbUI7TUFDcEYsUUFBUUEsV0FBVztRQUNqQixLQUFLalEsd0VBQVcsQ0FBQ3NHLE1BQU07VUFDckIsT0FBTyxRQUFRO1FBQ2pCLEtBQUt0Ryx3RUFBVyxDQUFDa1EsS0FBSztVQUNwQixPQUFPLE9BQU87UUFDaEIsS0FBS2xRLHdFQUFXLENBQUNzSCxLQUFLO1VBQ3BCLE9BQU8sT0FBTztRQUNoQjtVQUNFeGxCLG1FQUFpQixDQUFDbXVCLFdBQVcsQ0FBQztNQUNsQztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQkg7QUFDQTtBQUNBOztBQUVpRjtBQUNwQjtBQUFBLElBRXhDRSxtQkFBbUI7RUFBQSxTQUFBQSxvQkFBQTtJQUFBN2dDLDJJQUFBLE9BQUE2Z0MsbUJBQUE7RUFBQTtFQUFBLE9BQUF0Z0Msd0lBQUEsQ0FBQXNnQyxtQkFBQTtJQUFBcmdDLEdBQUE7SUFBQUUsS0FBQSxFQUN0QyxTQUFPb2dDLHFDQUFxQ0EsQ0FBQ0MsWUFBMEIsRUFBb0I7TUFDekYsUUFBUUEsWUFBWTtRQUNsQixLQUFLdFEseUVBQVksQ0FBQ3NHLElBQUk7VUFDcEIsT0FBTyxNQUFNO1FBQ2YsS0FBS3RHLHlFQUFZLENBQUN1SCxLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQjtVQUNFeGxCLG1FQUFpQixDQUFDdXVCLFlBQVksQ0FBQztNQUNuQztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQ2hCSCx1S0FBQWgyQixDQUFBLEVBQUEwUCxDQUFBLEVBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLEVBQUFOLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBTCxDQUFBLElBQUFBLENBQUEsQ0FBQXpOLFNBQUEsWUFBQStOLFNBQUEsR0FBQU4sQ0FBQSxHQUFBTSxTQUFBLEVBQUFDLENBQUEsR0FBQTdFLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxDQUFBOU4sU0FBQSxVQUFBa08sbUJBQUEsQ0FBQUYsQ0FBQSx1QkFBQVQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxNQUFBQyxDQUFBLEdBQUFULENBQUEsUUFBQVUsQ0FBQSxPQUFBQyxDQUFBLEtBQUFGLENBQUEsS0FBQVgsQ0FBQSxLQUFBYyxDQUFBLEVBQUEzUSxDQUFBLEVBQUE0USxDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUFuVyxJQUFBLENBQUFzRixDQUFBLE1BQUE2USxDQUFBLFdBQUFBLEVBQUFuQixDQUFBLEVBQUFDLENBQUEsV0FBQU0sQ0FBQSxHQUFBUCxDQUFBLEVBQUFRLENBQUEsTUFBQUUsQ0FBQSxHQUFBcFEsQ0FBQSxFQUFBMFEsQ0FBQSxDQUFBYixDQUFBLEdBQUFGLENBQUEsRUFBQWlCLENBQUEsZ0JBQUFDLEVBQUFsQixDQUFBLEVBQUFFLENBQUEsU0FBQUssQ0FBQSxHQUFBUCxDQUFBLEVBQUFTLENBQUEsR0FBQVAsQ0FBQSxFQUFBSCxDQUFBLE9BQUFlLENBQUEsSUFBQUYsQ0FBQSxLQUFBUixDQUFBLElBQUFMLENBQUEsR0FBQWMsQ0FBQSxDQUFBNVEsTUFBQSxFQUFBOFAsQ0FBQSxVQUFBSyxDQUFBLEVBQUFFLENBQUEsR0FBQU8sQ0FBQSxDQUFBZCxDQUFBLEdBQUFtQixDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQSxFQUFBTSxDQUFBLEdBQUFiLENBQUEsS0FBQU4sQ0FBQSxRQUFBSSxDQUFBLEdBQUFlLENBQUEsS0FBQWpCLENBQUEsTUFBQU8sQ0FBQSxHQUFBSCxDQUFBLEVBQUFDLENBQUEsR0FBQUQsQ0FBQSxZQUFBQyxDQUFBLFdBQUFELENBQUEsTUFBQUEsQ0FBQSxNQUFBalEsQ0FBQSxJQUFBaVEsQ0FBQSxPQUFBWSxDQUFBLE1BQUFkLENBQUEsR0FBQUosQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBWixDQUFBLFFBQUFDLENBQUEsTUFBQVEsQ0FBQSxDQUFBQyxDQUFBLEdBQUFkLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFJLENBQUEsT0FBQVksQ0FBQSxHQUFBQyxDQUFBLEtBQUFmLENBQUEsR0FBQUosQ0FBQSxRQUFBTSxDQUFBLE1BQUFKLENBQUEsSUFBQUEsQ0FBQSxHQUFBaUIsQ0FBQSxNQUFBYixDQUFBLE1BQUFOLENBQUEsRUFBQU0sQ0FBQSxNQUFBSixDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBWixDQUFBLGNBQUFILENBQUEsSUFBQUosQ0FBQSxhQUFBaUIsQ0FBQSxRQUFBSCxDQUFBLE9BQUFaLENBQUEscUJBQUFFLENBQUEsRUFBQVMsQ0FBQSxFQUFBTSxDQUFBLFFBQUFQLENBQUEsWUFBQVEsU0FBQSx1Q0FBQU4sQ0FBQSxVQUFBRCxDQUFBLElBQUFLLENBQUEsQ0FBQUwsQ0FBQSxFQUFBTSxDQUFBLEdBQUFaLENBQUEsR0FBQU0sQ0FBQSxFQUFBSixDQUFBLEdBQUFVLENBQUEsR0FBQXBCLENBQUEsR0FBQVEsQ0FBQSxPQUFBbFEsQ0FBQSxHQUFBb1EsQ0FBQSxNQUFBSyxDQUFBLEtBQUFSLENBQUEsS0FBQUMsQ0FBQSxHQUFBQSxDQUFBLFFBQUFBLENBQUEsU0FBQVEsQ0FBQSxDQUFBYixDQUFBLFFBQUFnQixDQUFBLENBQUFYLENBQUEsRUFBQUUsQ0FBQSxLQUFBTSxDQUFBLENBQUFiLENBQUEsR0FBQU8sQ0FBQSxHQUFBTSxDQUFBLENBQUFDLENBQUEsR0FBQVAsQ0FBQSxhQUFBRyxDQUFBLE1BQUFOLENBQUEsUUFBQUMsQ0FBQSxLQUFBSCxDQUFBLFlBQUFMLENBQUEsR0FBQU8sQ0FBQSxDQUFBRixDQUFBLFdBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBakssSUFBQSxDQUFBd0ssQ0FBQSxFQUFBRyxDQUFBLFVBQUFXLFNBQUEsMkNBQUFyQixDQUFBLENBQUFzQixJQUFBLFNBQUF0QixDQUFBLEVBQUFVLENBQUEsR0FBQVYsQ0FBQSxDQUFBL1osS0FBQSxFQUFBdWEsQ0FBQSxTQUFBQSxDQUFBLG9CQUFBQSxDQUFBLEtBQUFSLENBQUEsR0FBQU8sQ0FBQSxDQUFBZ0IsTUFBQSxLQUFBdkIsQ0FBQSxDQUFBakssSUFBQSxDQUFBd0ssQ0FBQSxHQUFBQyxDQUFBLFNBQUFFLENBQUEsR0FBQVcsU0FBQSx1Q0FBQWhCLENBQUEsZ0JBQUFHLENBQUEsT0FBQUQsQ0FBQSxHQUFBalEsQ0FBQSxjQUFBMFAsQ0FBQSxJQUFBZSxDQUFBLEdBQUFDLENBQUEsQ0FBQWIsQ0FBQSxRQUFBTyxDQUFBLEdBQUFULENBQUEsQ0FBQWxLLElBQUEsQ0FBQW9LLENBQUEsRUFBQWEsQ0FBQSxPQUFBRSxDQUFBLGtCQUFBbEIsQ0FBQSxJQUFBTyxDQUFBLEdBQUFqUSxDQUFBLEVBQUFrUSxDQUFBLE1BQUFFLENBQUEsR0FBQVYsQ0FBQSxjQUFBYSxDQUFBLG1CQUFBNWEsS0FBQSxFQUFBK1osQ0FBQSxFQUFBc0IsSUFBQSxFQUFBUCxDQUFBLFNBQUFkLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsUUFBQVEsQ0FBQSxnQkFBQVQsVUFBQSxjQUFBZSxrQkFBQSxjQUFBQywyQkFBQSxLQUFBekIsQ0FBQSxHQUFBbkUsTUFBQSxDQUFBNkYsY0FBQSxNQUFBbEIsQ0FBQSxNQUFBTCxDQUFBLElBQUFILENBQUEsQ0FBQUEsQ0FBQSxJQUFBRyxDQUFBLFNBQUFTLG1CQUFBLENBQUFaLENBQUEsT0FBQUcsQ0FBQSxpQ0FBQUgsQ0FBQSxHQUFBVSxDQUFBLEdBQUFlLDBCQUFBLENBQUEvTyxTQUFBLEdBQUErTixTQUFBLENBQUEvTixTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsWUFBQUssRUFBQXZRLENBQUEsV0FBQXVMLE1BQUEsQ0FBQThGLGNBQUEsR0FBQTlGLE1BQUEsQ0FBQThGLGNBQUEsQ0FBQXJSLENBQUEsRUFBQW1SLDBCQUFBLEtBQUFuUixDQUFBLENBQUFzUixTQUFBLEdBQUFILDBCQUFBLEVBQUFiLG1CQUFBLENBQUF0USxDQUFBLEVBQUErUCxDQUFBLHlCQUFBL1AsQ0FBQSxDQUFBb0MsU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBRCxDQUFBLEdBQUFwUSxDQUFBLFdBQUFrUixpQkFBQSxDQUFBOU8sU0FBQSxHQUFBK08sMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQUYsQ0FBQSxpQkFBQWUsMEJBQUEsR0FBQWIsbUJBQUEsQ0FBQWEsMEJBQUEsaUJBQUFELGlCQUFBLEdBQUFBLGlCQUFBLENBQUFLLFdBQUEsd0JBQUFqQixtQkFBQSxDQUFBYSwwQkFBQSxFQUFBcEIsQ0FBQSx3QkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxHQUFBRSxtQkFBQSxDQUFBRixDQUFBLEVBQUFMLENBQUEsZ0JBQUFPLG1CQUFBLENBQUFGLENBQUEsRUFBQVAsQ0FBQSxpQ0FBQVMsbUJBQUEsQ0FBQUYsQ0FBQSw4REFBQW9CLFlBQUEsWUFBQUEsYUFBQSxhQUFBQyxDQUFBLEVBQUF4QixDQUFBLEVBQUF5QixDQUFBLEVBQUFuQixDQUFBO0FBQUEsU0FBQUQsb0JBQUF0USxDQUFBLEVBQUEyUCxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxRQUFBTyxDQUFBLEdBQUExRSxNQUFBLENBQUFvRyxjQUFBLFFBQUExQixDQUFBLHVCQUFBalEsQ0FBQSxJQUFBaVEsQ0FBQSxRQUFBSyxtQkFBQSxZQUFBc0IsbUJBQUE1UixDQUFBLEVBQUEyUCxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQSxhQUFBSyxFQUFBSixDQUFBLEVBQUFFLENBQUEsSUFBQVMsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsWUFBQTNQLENBQUEsZ0JBQUE2UixPQUFBLENBQUFsQyxDQUFBLEVBQUFFLENBQUEsRUFBQTdQLENBQUEsU0FBQTJQLENBQUEsR0FBQU0sQ0FBQSxHQUFBQSxDQUFBLENBQUFqUSxDQUFBLEVBQUEyUCxDQUFBLElBQUFoYSxLQUFBLEVBQUFrYSxDQUFBLEVBQUFpQyxVQUFBLEdBQUFwQyxDQUFBLEVBQUFxQyxZQUFBLEdBQUFyQyxDQUFBLEVBQUFzQyxRQUFBLEdBQUF0QyxDQUFBLE1BQUExUCxDQUFBLENBQUEyUCxDQUFBLElBQUFFLENBQUEsSUFBQUUsQ0FBQSxhQUFBQSxDQUFBLGNBQUFBLENBQUEsbUJBQUFPLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLEVBQUFFLENBQUEsRUFBQUgsQ0FBQTtBQURBO0FBQ0E7QUFDQTs7QUFFd0Q7QUFDTjtBQUV6QjtBQUV6QixJQUFNd21CLHNCQUFzQixHQUFHLEtBQUs7QUFBQyxJQUloQnpQLFNBQVM7RUFpRDVCLFNBQUFBLFVBQUEsRUFBc0I7SUFBQXh4QiwySUFBQSxPQUFBd3hCLFNBQUE7SUFDcEIsTUFBTSxJQUFJdHNCLEtBQUssQ0FBQywwREFBMEQsQ0FBQztFQUM3RTtFQUFDLE9BQUEzRSx3SUFBQSxDQUFBaXhCLFNBQUE7SUFBQWh4QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBd2dDLGlDQUFBLEdBQUExaUIsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQWhERCxTQUFBZ0MsUUFBQTtRQUFBLE9BQUFsQyxZQUFBLEdBQUFDLENBQUEsV0FBQW9DLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBaEUsQ0FBQTtZQUFBO2NBQUEsT0FBQWdFLFFBQUEsQ0FBQWpELENBQUEsSUFDUyxJQUFJeUMsT0FBTyxDQUFXLFVBQUEraUIsc0JBQXNCLEVBQUk7Z0JBQ3JELElBQU03aUIsdUJBQXVCLEdBQUc3ZSxnRUFBVyxDQUFDeVEsU0FBUyxDQUFDLFVBQUFxTyxXQUFXLEVBQUk7a0JBQ25FLElBQUksQ0FBQ0EsV0FBVyxFQUFFO29CQUNoQjtrQkFDRjtrQkFFQSxJQUFNalQsR0FBRyxHQUFHLElBQUlpVCxXQUFXLENBQUN6WSxHQUFHLENBQUMwQyw0Q0FBRyxDQUFDeW1CLFlBQVksQ0FBQ3Z1QixLQUFLLENBQUM7a0JBRXZELE9BQU84d0IsU0FBUyxDQUFDNFAsa0NBQWtDLENBQUM5MUIsR0FBRyxDQUFDLENBQ3JEaVMsSUFBSSxDQUFDNGpCLHNCQUFzQixDQUFDLENBQzVCNWpCLElBQUksQ0FBQztvQkFBQSxPQUFNZSx1QkFBdUIsQ0FBQ3pkLE9BQU8sQ0FBQyxDQUFDO2tCQUFBLEVBQUM7Z0JBQ2xELENBQUMsQ0FBQztjQUNKLENBQUMsQ0FBQztVQUFBO1FBQUEsR0FBQTRkLE9BQUE7TUFBQSxDQUNIO01BQUEsU0FkWTRpQixnQ0FBZ0NBLENBQUE7UUFBQSxPQUFBSCxpQ0FBQSxDQUFBaGlCLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQWhDa3RCLGdDQUFnQztJQUFBO0VBQUE7SUFBQTdnQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBNGdDLG1DQUFBLEdBQUE5aUIsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQWdCN0MsU0FBQTJDLFNBQWdEOVQsR0FBUTtRQUFBLElBQUEwTixHQUFBLEVBQUF1b0IsZ0JBQUEsRUFBQUMsV0FBQSxFQUFBdGpCLE9BQUE7UUFBQSxPQUFBM0IsWUFBQSxHQUFBQyxDQUFBLFdBQUE2QyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXpFLENBQUE7WUFBQTtjQUNoRDVCLEdBQUcsR0FBRzFOLEdBQUcsQ0FBQ3FGLFFBQVEsQ0FBQyxDQUFDO2NBQUEsTUFFdEJxSSxHQUFHLElBQUl3WSxTQUFTLENBQUNpUSxNQUFNO2dCQUFBcGlCLFNBQUEsQ0FBQXpFLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUF5RSxTQUFBLENBQUExRCxDQUFBLElBQ2xCNlYsU0FBUyxDQUFDaVEsTUFBTSxDQUFDem9CLEdBQUcsQ0FBQztZQUFBO2NBR3hCdW9CLGdCQUFnQixHQUFHLElBQUlQLHlEQUFnQixDQUFDMTFCLEdBQUcsQ0FBQztjQUM1Q2syQixXQUFXLEdBQUdoUSxTQUFTLENBQUNpUSxNQUFNLENBQUN6b0IsR0FBRyxDQUFDLEdBQUd1b0IsZ0JBQWdCLENBQUNHLHVCQUF1QixDQUFDLENBQUM7Y0FDaEZ4akIsT0FBTyxHQUFHc1QsU0FBUyxDQUFDaVEsTUFBTSxDQUFDem9CLEdBQUcsQ0FBQyxDQUFDdUUsSUFBSSxDQUFDLFlBQU07Z0JBQy9DLElBQU1XLE9BQU8sR0FBR3plLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUMsWUFBTTtrQkFDakQsSUFBSThyQixTQUFTLENBQUNpUSxNQUFNLENBQUN6b0IsR0FBRyxDQUFDLEtBQUt3b0IsV0FBVyxFQUFFO29CQUN6QyxPQUFPaFEsU0FBUyxDQUFDaVEsTUFBTSxDQUFDem9CLEdBQUcsQ0FBQztrQkFDOUI7Z0JBQ0YsQ0FBQyxFQUFFaW9CLHNCQUFzQixDQUFDO2NBQzVCLENBQUMsQ0FBQyxDQUFDcGhCLEtBQUssQ0FBQyxZQUFNO2dCQUNiLE9BQU8yUixTQUFTLENBQUNpUSxNQUFNLENBQUN6b0IsR0FBRyxDQUFDO2NBQzlCLENBQUMsQ0FBQztjQUFBLE9BQUFxRyxTQUFBLENBQUExRCxDQUFBLElBRUs2bEIsV0FBVztVQUFBO1FBQUEsR0FBQXBpQixRQUFBO01BQUEsQ0FDbkI7TUFBQSxTQXBCWWdpQixrQ0FBa0NBLENBQUFuaUIsRUFBQTtRQUFBLE9BQUFxaUIsbUNBQUEsQ0FBQXBpQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFsQ2l0QixrQ0FBa0M7SUFBQTtFQUFBO0lBQUE1Z0MsR0FBQTtJQUFBRSxLQUFBLEVBc0IvQyxTQUFPczZCLDBCQUEwQkEsQ0FBQzF2QixHQUFRLEVBQVE7TUFDaEQsSUFBTTBOLEdBQUcsR0FBRzFOLEdBQUcsQ0FBQ3FGLFFBQVEsQ0FBQyxDQUFDO01BRTFCLElBQUlxSSxHQUFHLElBQUl3WSxTQUFTLENBQUNpUSxNQUFNLEVBQUU7UUFDM0IsT0FBT2pRLFNBQVMsQ0FBQ2lRLE1BQU0sQ0FBQ3pvQixHQUFHLENBQUM7TUFDOUI7SUFDRjtFQUFDO0FBQUE7QUFBQS9ZLDJJQUFBLENBL0NrQnV4QixTQUFTLFlBQ2EsQ0FBQyxDQUFDO0FBRGY7QUFzRDlCLElBQU10VCxPQUFPLEdBQUdzVCxTQUFTLENBQUM2UCxnQ0FBZ0MsQ0FBQyxDQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkNsRTVELHVLQUFBdDJCLENBQUEsRUFBQTBQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBek4sU0FBQSxZQUFBK04sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUE5TixTQUFBLFVBQUFrTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQTNRLENBQUEsRUFBQTRRLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQW5XLElBQUEsQ0FBQXNGLENBQUEsTUFBQTZRLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUFwUSxDQUFBLEVBQUEwUSxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUE1USxNQUFBLEVBQUE4UCxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFqUSxDQUFBLElBQUFpUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUFsUSxDQUFBLEdBQUFvUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUEvWixLQUFBLEVBQUF1YSxDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFnQixNQUFBLEtBQUF2QixDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFqUSxDQUFBLGNBQUEwUCxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBbEssSUFBQSxDQUFBb0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQWpRLENBQUEsRUFBQWtRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUE1YSxLQUFBLEVBQUErWixDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFlLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF6QixDQUFBLEdBQUFuRSxNQUFBLENBQUE2RixjQUFBLE1BQUFsQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWUsMEJBQUEsQ0FBQS9PLFNBQUEsR0FBQStOLFNBQUEsQ0FBQS9OLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBdlEsQ0FBQSxXQUFBdUwsTUFBQSxDQUFBOEYsY0FBQSxHQUFBOUYsTUFBQSxDQUFBOEYsY0FBQSxDQUFBclIsQ0FBQSxFQUFBbVIsMEJBQUEsS0FBQW5SLENBQUEsQ0FBQXNSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQStQLENBQUEseUJBQUEvUCxDQUFBLENBQUFvQyxTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFELENBQUEsR0FBQXBRLENBQUEsV0FBQWtSLGlCQUFBLENBQUE5TyxTQUFBLEdBQUErTywwQkFBQSxFQUFBYixtQkFBQSxDQUFBRixDQUFBLGlCQUFBZSwwQkFBQSxHQUFBYixtQkFBQSxDQUFBYSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWpCLG1CQUFBLENBQUFhLDBCQUFBLEVBQUFwQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBb0IsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXhCLENBQUEsRUFBQXlCLENBQUEsRUFBQW5CLENBQUE7QUFBQSxTQUFBRCxvQkFBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQTFFLE1BQUEsQ0FBQW9HLGNBQUEsUUFBQTFCLENBQUEsdUJBQUFqUSxDQUFBLElBQUFpUSxDQUFBLFFBQUFLLG1CQUFBLFlBQUFzQixtQkFBQTVSLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxZQUFBM1AsQ0FBQSxnQkFBQTZSLE9BQUEsQ0FBQWxDLENBQUEsRUFBQUUsQ0FBQSxFQUFBN1AsQ0FBQSxTQUFBMlAsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWpRLENBQUEsRUFBQTJQLENBQUEsSUFBQWhhLEtBQUEsRUFBQWthLENBQUEsRUFBQWlDLFVBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFlBQUEsR0FBQXJDLENBQUEsRUFBQXNDLFFBQUEsR0FBQXRDLENBQUEsTUFBQTFQLENBQUEsQ0FBQTJQLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUV3RDtBQUVEO0FBRUc7QUFDTjtBQUNWO0FBQ1I7QUFDVDtBQUV6QixJQUFNbW5CLGNBQWMsR0FBRyxLQUFLO0FBQUMsSUFFUlosZ0JBQWdCO0VBS25DLFNBQUFBLGlCQUFZMTFCLEdBQVEsRUFBRTtJQUFBdEwsMklBQUEsT0FBQWdoQyxnQkFBQTtJQUFBL2dDLDJJQUFBLGtCQUpLd0ksNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLFdBQVcsQ0FBQztJQUFBM0ksMklBQUE7SUFBQUEsMklBQUE7SUFLN0QsSUFBSSxDQUFDcUwsR0FBRyxFQUFFO01BQ1IsTUFBTSxJQUFJcEcsS0FBSyxDQUFDLHdCQUF3QixDQUFDO0lBQzNDO0lBRUEsSUFBSSxDQUFDMm9CLGVBQWUsR0FBR2pVLCtEQUFjLENBQUNDLGlCQUFpQixDQUFDdk8sR0FBRyxDQUFDcUYsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLENBQUNreEIsSUFBSSxHQUFHdjJCLEdBQUc7RUFDakI7RUFBQyxPQUFBL0ssd0lBQUEsQ0FBQXlnQyxnQkFBQTtJQUFBeGdDLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFvaEMsd0JBQUEsR0FBQXRqQiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQWdDLFFBQThCblQsR0FBUSxFQUFFeTJCLE9BQWU7UUFBQSxJQUFBL29CLEdBQUEsRUFBQXdHLFFBQUEsRUFBQXdpQixRQUFBLEVBQUFDLFNBQUE7UUFBQSxPQUFBMWxCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FBQSxJQUNoRG1uQixPQUFPO2dCQUFBbmpCLFFBQUEsQ0FBQWhFLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ0osSUFBSTFWLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztZQUFBO2NBR3pDOFQsR0FBRyxHQUFHMU4sR0FBRyxDQUFDcUYsUUFBUSxDQUFDLENBQUM7Y0FBQWlPLFFBQUEsQ0FBQWhFLENBQUE7Y0FBQSxPQUNId0QsT0FBTyxDQUFDOGpCLElBQUksQ0FBQyxDQUNsQ3ppQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDOE8sS0FBSyxDQUFDd0osR0FBRyxFQUFFO2dCQUMzQitGLE1BQU0sRUFBRSxLQUFLO2dCQUNiM0ksS0FBSyxFQUFFO2NBQ1QsQ0FBQyxDQUFDLEVBQ0YsSUFBSWdJLE9BQU8sQ0FBVyxVQUFDL0gsQ0FBQyxFQUFFd1QsTUFBTTtnQkFBQSxPQUFLcHFCLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUM7a0JBQUEsT0FBTW1rQixNQUFNLENBQUMsSUFBSTNrQixLQUFLLHlCQUFBNUIsTUFBQSxDQUF5QjBWLEdBQUcsTUFBRyxDQUFDLENBQUM7Z0JBQUEsR0FBRStvQixPQUFPLENBQUM7Y0FBQSxFQUFDLENBQ3JJLENBQUM7WUFBQTtjQU5JdmlCLFFBQVEsR0FBQVosUUFBQSxDQUFBbEQsQ0FBQTtjQUFBLElBUVQ4RCxRQUFRLENBQUMyaUIsRUFBRTtnQkFBQXZqQixRQUFBLENBQUFoRSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNSLElBQUkxVixLQUFLLHNCQUFBNUIsTUFBQSxDQUFzQjBWLEdBQUcsU0FBQTFWLE1BQUEsQ0FBTWtjLFFBQVEsQ0FBQ00sTUFBTSxNQUFHLENBQUM7WUFBQTtjQUFBLE1BRy9ETixRQUFRLENBQUNSLElBQUksS0FBSyxJQUFJO2dCQUFBSixRQUFBLENBQUFoRSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNsQixJQUFJMVYsS0FBSyxtQ0FBQTVCLE1BQUEsQ0FBbUMwVixHQUFHLE1BQUcsQ0FBQztZQUFBO2NBQUE0RixRQUFBLENBQUFoRSxDQUFBO2NBQUEsT0FHcEM0RSxRQUFRLENBQUM0aUIsSUFBSSxDQUFDLENBQUM7WUFBQTtjQUFoQ0osUUFBUSxHQUFBcGpCLFFBQUEsQ0FBQWxELENBQUE7Y0FDUnVtQixTQUFTLEdBQUdELFFBQVEsQ0FBQ2ovQixLQUFLLENBQUMsR0FBRyxDQUFDO2NBQUEsT0FBQTZiLFFBQUEsQ0FBQWpELENBQUEsSUFFOUJzbUIsU0FBUyxDQUFDcGUsR0FBRyxDQUFDLFVBQUFtUixRQUFRO2dCQUFBLE9BQUksSUFBSTJNLGlEQUFRLENBQUMzTSxRQUFRLEVBQUUrTSxPQUFPLENBQUM7Y0FBQSxFQUFDO1VBQUE7UUFBQSxHQUFBdGpCLE9BQUE7TUFBQSxDQUNsRTtNQUFBLFNBMUJLNGpCLHVCQUF1QkEsQ0FBQXBqQixFQUFBLEVBQUErSyxHQUFBO1FBQUEsT0FBQThYLHdCQUFBLENBQUE1aUIsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBdkJrdUIsdUJBQXVCO0lBQUE7RUFBQTtJQUFBN2hDLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUE0aEMsd0JBQUEsR0FBQTlqQiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBNEI3QixTQUFBMkMsU0FBQTtRQUFBLElBQUFyZSxLQUFBO1FBQUEsSUFBQWdoQyxPQUFBO1VBQUEvb0IsR0FBQTtVQUFBaXBCLFNBQUE7VUFBQU0sY0FBQTtVQUFBQyxtQ0FBQTtVQUFBeE4sUUFBQTtVQUFBeU4sTUFBQSxHQUFBdHVCLFNBQUE7UUFBQSxPQUFBb0ksWUFBQSxHQUFBQyxDQUFBLFdBQUE2QyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXpFLENBQUE7WUFBQTtjQUE4Qm1uQixPQUFlLEdBQUFVLE1BQUEsQ0FBQTkzQixNQUFBLFFBQUE4M0IsTUFBQSxRQUFBbjhCLFNBQUEsR0FBQW04QixNQUFBLE1BQUdiLGNBQWM7Y0FDdEQ1b0IsR0FBRyxHQUFHNlQscURBQVksQ0FBQzZWLGlCQUFpQixDQUFDLElBQUksQ0FBQ2IsSUFBSSxDQUFDO2NBQUF4aUIsU0FBQSxDQUFBekUsQ0FBQTtjQUFBLE9BQzdCLElBQUksQ0FBQ3luQix1QkFBdUIsQ0FBQyxJQUFJNWlDLGdFQUFXLENBQUNpQixLQUFLLENBQUNvRixHQUFHLENBQUNrVCxHQUFHLENBQUMsRUFBRStvQixPQUFPLENBQUM7WUFBQTtjQUF2RkUsU0FBUyxHQUFBNWlCLFNBQUEsQ0FBQTNELENBQUE7Y0FDWDZtQixjQUFjLEdBQUcsQ0FBQztjQUNoQkMsbUNBQW1DLEdBQUcsU0FBdENBLG1DQUFtQ0EsQ0FBQTtnQkFBQSxPQUF3QixJQUFJcGtCLE9BQU8sQ0FBQyxVQUFDL0gsQ0FBQyxFQUFFd1QsTUFBTSxFQUFLO2tCQUMxRixJQUFJMFksY0FBYyxJQUFJTixTQUFTLENBQUN0M0IsTUFBTSxFQUFFO29CQUN0Q2tmLE1BQU0sa0JBQUF2bUIsTUFBQSxDQUFrQjIrQixTQUFTLENBQUN0M0IsTUFBTSx3QkFBQXJILE1BQUEsQ0FBcUIwVixHQUFHLDRDQUF5QyxDQUFDO2tCQUM1RztnQkFDRixDQUFDLENBQUM7Y0FBQTtjQUFBcUcsU0FBQSxDQUFBekUsQ0FBQTtjQUFBLE9BQ3FCd0QsT0FBTyxDQUFDOGpCLElBQUksQ0FBQ0QsU0FBUyxDQUFDcGUsR0FBRyxDQUFDLFVBQUFtUixRQUFRO2dCQUFBLE9BQUlBLFFBQVEsQ0FDbkUyTixJQUFJLENBQUMsQ0FBQyxDQUNOOWlCLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2tCQUNWaEssS0FBSSxDQUFDK0ksT0FBTyxDQUFDK0ssSUFBSSxDQUFDLCtCQUErQixFQUFFbWdCLFFBQVEsRUFBRWpxQixDQUFDLENBQUM7a0JBRS9EdzNCLGNBQWMsRUFBRTtrQkFFaEIsT0FBT0MsbUNBQW1DLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLENBQ0RqbEIsSUFBSSxDQUFDLFVBQUFxbEIsSUFBSSxFQUFJO2tCQUNaLElBQU16aUMsR0FBRyxHQUFHRCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2tCQUV0QlksS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsMENBQTBDLEVBQUVpckIsUUFBUSxDQUFDcmtCLFFBQVEsQ0FBQyxDQUFDLEVBQUVpeUIsSUFBSSxDQUFDO2tCQUN4RjdoQyxLQUFJLENBQUM4c0IsZUFBZSxDQUFDbGtCLElBQUksQ0FBQztvQkFDeEJMLFVBQVUsRUFBRWpCLDREQUFXLENBQUNrUSxhQUFhO29CQUNyQzNPLE9BQU8sRUFBRSxDQUFDekosR0FBRyxHQUFHcUksNkNBQUcsQ0FBQ0csWUFBWSxJQUFJLElBQUk7b0JBQ3hDakksS0FBSyxFQUFFO3NCQUFDbUosTUFBTSxFQUFFKzRCLElBQUksSUFBSTtvQkFBQyxDQUFDO29CQUMxQmhsQixRQUFRLEVBQUVvWCxRQUFRLENBQUNya0IsUUFBUSxDQUFDLENBQUM7b0JBQzdCa04sSUFBSSxFQUFFO2tCQUNSLENBQUMsQ0FBQztrQkFFRixPQUFPbVgsUUFBUTtnQkFDakIsQ0FBQyxDQUFDO2NBQUEsRUFBQyxDQUFDO1lBQUE7Y0F0QkFBLFFBQVEsR0FBQTNWLFNBQUEsQ0FBQTNELENBQUE7Y0FBQSxPQUFBMkQsU0FBQSxDQUFBMUQsQ0FBQSxJQXdCUHFaLFFBQVE7VUFBQTtRQUFBLEdBQUE1VixRQUFBO01BQUEsQ0FDaEI7TUFBQSxTQWxDS3NpQix1QkFBdUJBLENBQUE7UUFBQSxPQUFBWSx3QkFBQSxDQUFBcGpCLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQXZCdXRCLHVCQUF1QjtJQUFBO0VBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRC9CO0FBQ0E7QUFDQTs7QUFFd0Q7QUFDakI7QUFDZ0I7QUFDRDtBQUNOO0FBQUEsSUFFM0I3VSxZQUFZO0VBdUIvQixTQUFBQSxhQUFBLEVBQXNCO0lBQUE3c0IsMklBQUEsT0FBQTZzQixZQUFBO0lBQ3BCLE1BQU0sSUFBSTNuQixLQUFLLENBQUMsNkRBQTZELENBQUM7RUFDaEY7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQXNzQixZQUFBO0lBQUFyc0IsR0FBQTtJQUFBQyxHQUFBLEVBdEJELFNBQUFBLElBQUEsRUFBa0M7TUFDaEMsT0FBT29zQixZQUFZLENBQUNnVyxhQUFhO0lBQ25DO0VBQUM7SUFBQXJpQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPZ2lDLGlCQUFpQkEsQ0FBQ3AzQixHQUFRLEVBQVU7TUFDekMsSUFBTTBOLEdBQUcsR0FBRyxJQUFJdlosZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ29GLEdBQUcsQ0FBQ3dGLEdBQUcsQ0FBQ3FGLFFBQVEsQ0FBQyxDQUFDLENBQUM7TUFDckQsSUFBTXNOLFVBQVUsR0FBR2hCLCtEQUFjLENBQUNnQixVQUFVO01BQzVDLElBQU0vUCxVQUFVLEdBQUdOLCtEQUFVLENBQUNrMUIsbUJBQW1CLENBQUM1MEIsVUFBVTtNQUU1RDhLLEdBQUcsQ0FBQytwQixZQUFZLENBQUNocUIsR0FBRyxDQUFDLFNBQVMsRUFBRWtGLFVBQVUsQ0FBQztNQUMzQ2pGLEdBQUcsQ0FBQytwQixZQUFZLENBQUNocUIsR0FBRyxDQUFDLFlBQVksRUFBRTdLLFVBQVUsQ0FBQztNQUM5QzhLLEdBQUcsQ0FBQytwQixZQUFZLENBQUNocUIsR0FBRyxDQUFDLEdBQUcsS0FBQXpWLE1BQUEsQ0FBS3BELElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDO01BRTFDLElBQUk2WSxHQUFHLENBQUNFLFFBQVEsS0FBSyxHQUFHLEVBQUU7UUFDeEJGLEdBQUcsQ0FBQ0UsUUFBUSxHQUFHLGtCQUFrQjtNQUNuQztNQUVBLE9BQU9GLEdBQUcsQ0FBQ3JJLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZCO0VBQUM7QUFBQTtBQUFBMVEsMklBQUEsQ0FyQmtCNHNCLFlBQVksbUJBQzBCLElBQUlqdEIsbURBQU8sQ0FBUzRnQywwREFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkNWbkcsdUtBQUF6MUIsQ0FBQSxFQUFBMFAsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUF6TixTQUFBLFlBQUErTixTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUE3RSxNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsQ0FBQTlOLFNBQUEsVUFBQWtPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBM1EsQ0FBQSxFQUFBNFEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBblcsSUFBQSxDQUFBc0YsQ0FBQSxNQUFBNlEsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQXBRLENBQUEsRUFBQTBRLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQTVRLE1BQUEsRUFBQThQLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQWpRLENBQUEsSUFBQWlRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQWxRLENBQUEsR0FBQW9RLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQS9aLEtBQUEsRUFBQXVhLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsQ0FBQWdCLE1BQUEsS0FBQXZCLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQWpRLENBQUEsY0FBQTBQLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFsSyxJQUFBLENBQUFvSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBalEsQ0FBQSxFQUFBa1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQTVhLEtBQUEsRUFBQStaLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWUsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXpCLENBQUEsR0FBQW5FLE1BQUEsQ0FBQTZGLGNBQUEsTUFBQWxCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBZSwwQkFBQSxDQUFBL08sU0FBQSxHQUFBK04sU0FBQSxDQUFBL04sU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUF2USxDQUFBLFdBQUF1TCxNQUFBLENBQUE4RixjQUFBLEdBQUE5RixNQUFBLENBQUE4RixjQUFBLENBQUFyUixDQUFBLEVBQUFtUiwwQkFBQSxLQUFBblIsQ0FBQSxDQUFBc1IsU0FBQSxHQUFBSCwwQkFBQSxFQUFBYixtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBK1AsQ0FBQSx5QkFBQS9QLENBQUEsQ0FBQW9DLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBcFEsQ0FBQSxXQUFBa1IsaUJBQUEsQ0FBQTlPLFNBQUEsR0FBQStPLDBCQUFBLEVBQUFiLG1CQUFBLENBQUFGLENBQUEsaUJBQUFlLDBCQUFBLEdBQUFiLG1CQUFBLENBQUFhLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBakIsbUJBQUEsQ0FBQWEsMEJBQUEsRUFBQXBCLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFvQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBeEIsQ0FBQSxFQUFBeUIsQ0FBQSxFQUFBbkIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBMUUsTUFBQSxDQUFBb0csY0FBQSxRQUFBMUIsQ0FBQSx1QkFBQWpRLENBQUEsSUFBQWlRLENBQUEsUUFBQUssbUJBQUEsWUFBQXNCLG1CQUFBNVIsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLFlBQUEzUCxDQUFBLGdCQUFBNlIsT0FBQSxDQUFBbEMsQ0FBQSxFQUFBRSxDQUFBLEVBQUE3UCxDQUFBLFNBQUEyUCxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBalEsQ0FBQSxFQUFBMlAsQ0FBQSxJQUFBaGEsS0FBQSxFQUFBa2EsQ0FBQSxFQUFBaUMsVUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsWUFBQSxHQUFBckMsQ0FBQSxFQUFBc0MsUUFBQSxHQUFBdEMsQ0FBQSxNQUFBMVAsQ0FBQSxDQUFBMlAsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXdEO0FBRUQ7QUFDSTtBQVdKO0FBQ0Q7QUFFQTtBQUNFO0FBU3hELElBQU11b0IsVUFBVSxHQUFHLENBQUM7QUFBQyxJQXNGQXJCLFFBQVE7RUFNM0IsU0FBQUEsU0FBWXIyQixHQUFXLEVBQUV5MkIsT0FBZSxFQUFFO0lBQUEvaEMsMklBQUEsT0FBQTJoQyxRQUFBO0lBQUExaEMsMklBQUEsa0JBTE53SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQUEzSSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQSx5QkFHdEMsQ0FBQztJQUdoQyxJQUFJLENBQUM0aEMsSUFBSSxHQUFHdjJCLEdBQUc7SUFDZixJQUFJLENBQUMyM0IsUUFBUSxHQUFHbEIsT0FBTztJQUV2QixJQUFJLENBQUNBLE9BQU8sRUFBRTtNQUNaLE1BQU0sSUFBSTc4QixLQUFLLCtCQUErQixDQUFDO0lBQ2pEO0VBQ0Y7RUFBQyxPQUFBM0Usd0lBQUEsQ0FBQW9oQyxRQUFBO0lBQUFuaEMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QjtNQUMxQixPQUFPLElBQUksQ0FBQ3lpQyxjQUFjO0lBQzVCO0VBQUM7SUFBQTFpQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaVEsUUFBUUEsQ0FBQSxFQUFXO01BQ2pCLHVCQUFBck4sTUFBQSxDQUF1QixJQUFJLENBQUN1K0IsSUFBSTtJQUNsQztFQUFDO0lBQUFyaEMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXlpQyxLQUFBLEdBQUEza0IsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUFnQyxRQUFBO1FBQUEsSUFBQTFkLEtBQUE7UUFBQSxJQUFBaVksR0FBQSxFQUFBbWUsS0FBQSxFQUFBM1gsUUFBQSxFQUFBNGpCLFFBQUE7UUFBQSxPQUFBN21CLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FDUTVCLEdBQUcsR0FBRyxJQUFJLENBQUNxcUIsWUFBWSxDQUFDLENBQUM7Y0FDekJsTSxLQUFLLEdBQUdqM0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBeWUsUUFBQSxDQUFBaEUsQ0FBQTtjQUFBLE9BQ0R3RCxPQUFPLENBQUM4akIsSUFBSSxDQUFDLENBQ2xDemlDLGdFQUFXLENBQUNpQixLQUFLLENBQUM4TyxLQUFLLENBQUN3SixHQUFHLEVBQUU7Z0JBQzNCK0YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IzSSxLQUFLLEVBQUU7Y0FDVCxDQUFDLENBQUMsRUFDRixJQUFJZ0ksT0FBTyxDQUFXLFVBQUMvSCxDQUFDLEVBQUV3VCxNQUFNO2dCQUFBLE9BQzlCcHFCLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUM7a0JBQUEsT0FBTW1rQixNQUFNLENBQUMsSUFBSTNrQixLQUFLLG9CQUFBNUIsTUFBQSxDQUFvQjBWLEdBQUcsTUFBRyxDQUFDLENBQUM7Z0JBQUEsR0FBRWpZLEtBQUksQ0FBQ2tpQyxRQUFRLENBQUM7Y0FBQSxFQUFDLENBQ25HLENBQUM7WUFBQTtjQVBJempCLFFBQVEsR0FBQVosUUFBQSxDQUFBbEQsQ0FBQTtjQVFSMG5CLFFBQVEsR0FBR2xqQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUEsSUFFdEJxZixRQUFRLENBQUMyaUIsRUFBRTtnQkFBQXZqQixRQUFBLENBQUFoRSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNSLElBQUkxVixLQUFLLGlCQUFBNUIsTUFBQSxDQUFpQjBWLEdBQUcsU0FBQTFWLE1BQUEsQ0FBTWtjLFFBQVEsQ0FBQ00sTUFBTSxNQUFHLENBQUM7WUFBQTtjQUc5RCxJQUFJLENBQUNvakIsY0FBYyxHQUFHRSxRQUFRLEdBQUdqTSxLQUFLO2NBQUMsT0FBQXZZLFFBQUEsQ0FBQWpELENBQUEsSUFFaEMsSUFBSSxDQUFDdW5CLGNBQWM7VUFBQTtRQUFBLEdBQUF6a0IsT0FBQTtNQUFBLENBQzNCO01BQUEsU0FwQktra0IsSUFBSUEsQ0FBQTtRQUFBLE9BQUFRLEtBQUEsQ0FBQWprQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFKd3VCLElBQUk7SUFBQTtFQUFBO0lBQUFuaUMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTRpQyxVQUFBLEdBQUE5a0IsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQXNCVixTQUFBMkMsU0FBZ0IvVSxLQUF1QixFQUFFazVCLHVCQUF5RCxFQUFFek8sWUFBb0I7UUFBQSxJQUFBME8scUJBQUE7VUFBQWh1QixNQUFBO1VBQUFpdUIsc0JBQUE7UUFBQSxJQUFBOWhCLE9BQUE7VUFBQXJJLE9BQUE7VUFBQU4sR0FBQTtVQUFBMkYsUUFBQTtVQUFBK2tCLGFBQUE7VUFBQUMsV0FBQTtVQUFBeE0sS0FBQTtVQUFBeU0sWUFBQTtVQUFBN0IsT0FBQTtVQUFBamlCLE1BQUE7VUFBQStqQixzQkFBQTtVQUFBQyxTQUFBO1VBQUFWLFFBQUE7VUFBQVcsaUJBQUE7VUFBQXRCLE1BQUEsR0FBQXR1QixTQUFBO1VBQUF5TixFQUFBO1FBQUEsT0FBQXJGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBNkMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE5RCxDQUFBLEdBQUE4RCxTQUFBLENBQUF6RSxDQUFBO1lBQUE7Y0FBRStHLE9BQXlCLEdBQUE4Z0IsTUFBQSxDQUFBOTNCLE1BQUEsUUFBQTgzQixNQUFBLFFBQUFuOEIsU0FBQSxHQUFBbThCLE1BQUEsTUFBRyxDQUFDLENBQUM7Y0FDaEpucEIsT0FBTyxHQUFHblAsZ0VBQWMsQ0FBQ0MsVUFBVSxDQUFDQyxLQUFLLENBQUMsQ0FBQ2lQLE9BQU87Y0FBQSxJQUVuREEsT0FBTztnQkFBQStGLFNBQUEsQ0FBQXpFLENBQUE7Z0JBQUE7Y0FBQTtjQUNWLElBQUksQ0FBQzlRLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDRCQUE0QixFQUFFRixLQUFLLENBQUM7Y0FBQyxPQUFBZ1YsU0FBQSxDQUFBMUQsQ0FBQSxJQUVqRDtnQkFBQ21FLE1BQU0sRUFBRTtjQUFjLENBQUM7WUFBQTtjQUczQjlHLEdBQUcsR0FBRyxJQUFJLENBQUNnckIsUUFBUSxDQUFDLENBQUMxcUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDM0ksUUFBUSxDQUFDLENBQUM7Y0FDaEVnTyxRQUFRLEdBQUcsSUFBSWxmLGdFQUFXLENBQUNpQixLQUFLLENBQUNnTyxRQUFRLENBQUMsQ0FBQztjQUMzQ2cxQixhQUFhLEdBQUd6bUIsK0RBQWMsQ0FBQ2dCLFVBQVU7Y0FHL0MsSUFBSTZXLFlBQVksS0FBSyxDQUFDLElBQUl5Tyx1QkFBdUIsRUFBRTtnQkFDakRJLFdBQVcsR0FBRztrQkFDWlgsVUFBVSxFQUFWQSxVQUFVO2tCQUNWVSxhQUFhLEVBQWJBLGFBQWE7a0JBQ2JPLFdBQVcsRUFBRTU1QixLQUFLO2tCQUNsQnlxQixZQUFZLEVBQVpBLFlBQVk7a0JBQ1pvUCxpQkFBaUIsRUFBRSxJQUFJLENBQUNoQixjQUFjO2tCQUN0Q3hZLG9CQUFvQixFQUFFO29CQUNwQnNZLFVBQVUsRUFBVkEsVUFBVTtvQkFDVm1CLGtCQUFrQixFQUFFO3NCQUNsQng4QixJQUFJLEVBQUU0N0IsdUJBQXVCLENBQUM1N0IsSUFBSTtzQkFDbEN3YyxHQUFHLEVBQUVvZix1QkFBdUIsQ0FBQ3BmO29CQUMvQjtrQkFDRixDQUFDO2tCQUNEaWdCLHVCQUF1QixFQUFFO29CQUFDcEIsVUFBVSxFQUFWQTtrQkFBVTtnQkFDdEMsQ0FBQztjQUNILENBQUMsTUFBTTtnQkFDTFcsV0FBVyxHQUFHO2tCQUNaWCxVQUFVLEVBQVZBLFVBQVU7a0JBQ1ZVLGFBQWEsRUFBYkEsYUFBYTtrQkFDYk8sV0FBVyxFQUFFNTVCLEtBQUs7a0JBQ2xCeXFCLFlBQVksRUFBWkEsWUFBWTtrQkFDWm9QLGlCQUFpQixFQUFFLElBQUksQ0FBQ2hCLGNBQWM7a0JBQ3RDbUIsc0JBQXNCLEVBQUU7b0JBQUNyQixVQUFVLEVBQVZBO2tCQUFVO2dCQUNyQyxDQUFDO2NBQ0g7Y0FBQzNqQixTQUFBLENBQUF6RSxDQUFBO2NBQUEsUUFBQTRvQixxQkFBQSxHQUVLN2hCLE9BQU8sQ0FBQzJpQiwwQkFBMEIsY0FBQWQscUJBQUEsdUJBQWxDQSxxQkFBQSxDQUFBaHpCLElBQUEsQ0FBQW1SLE9BQU8sRUFBOEJnaUIsV0FBVyxDQUFDO1lBQUE7Y0FFdkRobEIsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFaFUsSUFBSSxDQUFDZ0wsU0FBUyxDQUFDOHRCLFdBQVcsQ0FBQyxDQUFDO2NBRWxEeE0sS0FBSyxHQUFHajNCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQWtmLFNBQUEsQ0FBQTlELENBQUE7Y0FJbEJ3bUIsT0FBc0IsR0FBRyxJQUFJO2NBQUExaUIsU0FBQSxDQUFBekUsQ0FBQTtjQUFBLE9BRVp3RCxPQUFPLENBQUM4akIsSUFBSSxDQUFDLENBQ2hDemlDLGdFQUFXLENBQUNpQixLQUFLLENBQUM4TyxLQUFLLENBQUN3SixHQUFHLEVBQUU7Z0JBQzNCK0YsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRUw7Y0FDUixDQUFDLENBQUMsRUFDRixJQUFJUCxPQUFPLENBQVcsVUFBQXdMLE9BQU87Z0JBQUEsT0FDM0JtWSxPQUFPLEdBQUd0aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQyxZQUFNO2tCQUMzQzhQLE1BQUksQ0FBQzFMLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHFCQUFxQixFQUFFLElBQUlyRixLQUFLLHlCQUFBNUIsTUFBQSxDQUF5QjBWLEdBQUcsTUFBRyxDQUFDLENBQUM7a0JBQ3BGNFEsT0FBTyxDQUFDO29CQUFDOUosTUFBTSxFQUFFO2tCQUFHLENBQWEsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFdEssTUFBSSxDQUFDeXRCLFFBQVEsQ0FBQztjQUFBLEVBQUMsQ0FDckIsQ0FBQyxDQUNDOUgsT0FBTyxDQUFDLFlBQU07Z0JBQ2IsSUFBSTRHLE9BQU8sRUFBRTtrQkFDWHRpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sWUFBWSxDQUFDNHlCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWZKNkIsWUFBWSxHQUFBdmtCLFNBQUEsQ0FBQTNELENBQUE7Y0FBQTJELFNBQUEsQ0FBQXpFLENBQUE7Y0FBQTtZQUFBO2NBQUF5RSxTQUFBLENBQUE5RCxDQUFBO2NBQUFxRyxFQUFBLEdBQUF2QyxTQUFBLENBQUEzRCxDQUFBO2NBaUJaLElBQUksQ0FBQzVSLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHFCQUFxQixFQUFBcVgsRUFBRyxDQUFDO2NBQUMsT0FBQXZDLFNBQUEsQ0FBQTFELENBQUEsSUFFdEM7Z0JBQUNtRSxNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQXVCLEdBQUcsSUFBSSxDQUFDeWtCLDhCQUE4QixDQUFDWCxZQUFZLENBQUM7Y0FBQSxNQUU3RTlqQixNQUFNLEtBQUssSUFBSTtnQkFBQVQsU0FBQSxDQUFBekUsQ0FBQTtnQkFBQTtjQUFBO2NBQ1g0RSxTQUF1QyxHQUFHO2dCQUFDTSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztjQUFBVCxTQUFBLENBQUF6RSxDQUFBO2NBQUEsUUFBQWlwQixzQkFBQSxHQUVsRGxpQixPQUFPLENBQUM2aUIsMkJBQTJCLGNBQUFYLHNCQUFBLHVCQUFuQ0Esc0JBQUEsQ0FBQXJ6QixJQUFBLENBQUFtUixPQUFPLEVBQStCbkMsU0FBUSxDQUFDO1lBQUE7Y0FBQSxPQUFBSCxTQUFBLENBQUExRCxDQUFBLElBRTlDNkQsU0FBUTtZQUFBO2NBR1g0akIsUUFBUSxHQUFHbGpDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQWtmLFNBQUEsQ0FBQXpFLENBQUE7Y0FBQSxPQUNLLElBQUksQ0FBQzZwQixzQ0FBc0MsQ0FBQ25yQixPQUFPLEVBQUVzcUIsWUFBWSxDQUFDO1lBQUE7Y0FBNUZHLGlCQUFpQixHQUFBMWtCLFNBQUEsQ0FBQTNELENBQUE7Y0FFdkIsSUFBSSxDQUFDNVIsT0FBTyxDQUFDd0ssS0FBSyxDQUFDLHdDQUF3QyxFQUFFeXZCLGlCQUFpQixFQUFFWCxRQUFRLEdBQUdqTSxLQUFLLENBQUM7Y0FBQzlYLFNBQUEsQ0FBQXpFLENBQUE7Y0FBQSxRQUFBNm9CLHNCQUFBLEdBRTVGOWhCLE9BQU8sQ0FBQzZpQiwyQkFBMkIsY0FBQWYsc0JBQUEsdUJBQW5DQSxzQkFBQSxDQUFBanpCLElBQUEsQ0FBQW1SLE9BQU8sRUFBK0JvaUIsaUJBQWlCLENBQUM7WUFBQTtjQUFBLE9BQUExa0IsU0FBQSxDQUFBMUQsQ0FBQSxJQUV2RG9vQixpQkFBaUI7VUFBQTtRQUFBLEdBQUEza0IsUUFBQTtNQUFBLENBQ3pCO01BQUEsU0EzRktsUCxTQUFTQSxDQUFBK08sRUFBQSxFQUFBK0ssR0FBQSxFQUFBSSxHQUFBO1FBQUEsT0FBQWtaLFVBQUEsQ0FBQXBrQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFUakUsU0FBUztJQUFBO0VBQUE7SUFBQTFQLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFna0MsUUFBQSxHQUFBbG1CLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0E2RmYsU0FBQXFFLFNBQWN4YyxJQUFZLEVBQUUrRixLQUF1QixFQUFFazVCLHVCQUF5RCxFQUFFek8sWUFBb0I7UUFBQSxJQUFBL0osTUFBQTtRQUFBLElBQUF6UixPQUFBLEVBQUFOLEdBQUEsRUFBQTJGLFFBQUEsRUFBQStrQixhQUFBLEVBQUFpQixhQUFBLEVBQUFDLGdCQUFBLEVBQUF6TixLQUFBLEVBQUF5TSxZQUFBLEVBQUE3QixPQUFBLEVBQUFqaUIsTUFBQSxFQUFBc2pCLFFBQUEsRUFBQVcsaUJBQUEsRUFBQWxpQixHQUFBO1FBQUEsT0FBQXRGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBMkUsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE1RixDQUFBLEdBQUE0RixTQUFBLENBQUF2RyxDQUFBO1lBQUE7Y0FDNUh0QixPQUFPLEdBQUduUCxnRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDaVAsT0FBTztjQUFBLElBRW5EQSxPQUFPO2dCQUFBNkgsU0FBQSxDQUFBdkcsQ0FBQTtnQkFBQTtjQUFBO2NBQ1YsSUFBSSxDQUFDOVEsT0FBTyxDQUFDUyxLQUFLLENBQUMsNEJBQTRCLEVBQUVGLEtBQUssQ0FBQztjQUFDLE9BQUE4VyxTQUFBLENBQUF4RixDQUFBLElBRWpEO2dCQUFDbUUsTUFBTSxFQUFFO2NBQWMsQ0FBQztZQUFBO2NBRzNCOUcsR0FBRyxHQUFHLElBQUksQ0FBQ2dyQixRQUFRLENBQUMsQ0FBQzFxQixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMzSSxRQUFRLENBQUMsQ0FBQztjQUM5RGdPLFFBQVEsR0FBRyxJQUFJbGYsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dPLFFBQVEsQ0FBQyxDQUFDO2NBQzNDZzFCLGFBQWEsR0FBR3ptQiwrREFBYyxDQUFDZ0IsVUFBVTtjQUUvQyxJQUFJNlcsWUFBWSxLQUFLLENBQUMsSUFBSXlPLHVCQUF1QixFQUFFO2dCQUMzQ29CLGFBQXVDLEdBQUc7a0JBQzlDM0IsVUFBVSxFQUFWQSxVQUFVO2tCQUNWVSxhQUFhLEVBQWJBLGFBQWE7a0JBQ2JPLFdBQVcsRUFBRTU1QixLQUFLO2tCQUNsQnlxQixZQUFZLEVBQVpBLFlBQVk7a0JBQ1pvUCxpQkFBaUIsRUFBRSxJQUFJLENBQUNoQixjQUFjO2tCQUN0QzUrQixJQUFJLEVBQUpBLElBQUk7a0JBQ0pvbUIsb0JBQW9CLEVBQUU7b0JBQ3BCc1ksVUFBVSxFQUFWQSxVQUFVO29CQUNWbUIsa0JBQWtCLEVBQUU7c0JBQ2xCeDhCLElBQUksRUFBRTQ3Qix1QkFBdUIsQ0FBQzU3QixJQUFJO3NCQUNsQ3djLEdBQUcsRUFBRW9mLHVCQUF1QixDQUFDcGY7b0JBQy9CO2tCQUNGLENBQUM7a0JBQ0RpZ0IsdUJBQXVCLEVBQUU7b0JBQ3ZCbjdCLFFBQVEsRUFBRSxFQUFFO29CQUNaKzVCLFVBQVUsRUFBVkE7a0JBQ0Y7Z0JBQ0YsQ0FBQztnQkFFRHJrQixRQUFRLENBQUNFLE1BQU0sQ0FBQyxVQUFVLEVBQUVoVSxJQUFJLENBQUNnTCxTQUFTLENBQUM4dUIsYUFBYSxDQUFDLENBQUM7Y0FDNUQsQ0FBQyxNQUFNO2dCQUNDQyxnQkFBNkMsR0FBRztrQkFDcEQ1QixVQUFVLEVBQVZBLFVBQVU7a0JBQ1ZVLGFBQWEsRUFBYkEsYUFBYTtrQkFDYk8sV0FBVyxFQUFFNTVCLEtBQUs7a0JBQ2xCeXFCLFlBQVksRUFBWkEsWUFBWTtrQkFDWm9QLGlCQUFpQixFQUFFLElBQUksQ0FBQ2hCLGNBQWM7a0JBQ3RDNStCLElBQUksRUFBSkEsSUFBSTtrQkFDSisvQixzQkFBc0IsRUFBRTtvQkFDdEJwN0IsUUFBUSxFQUFFLEVBQUU7b0JBQ1orNUIsVUFBVSxFQUFWQTtrQkFDRjtnQkFDRixDQUFDO2dCQUVEcmtCLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRWhVLElBQUksQ0FBQ2dMLFNBQVMsQ0FBQyt1QixnQkFBZ0IsQ0FBQyxDQUFDO2NBQy9EO2NBRU16TixLQUFLLEdBQUdqM0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBZ2hCLFNBQUEsQ0FBQTVGLENBQUE7Y0FJbEJ3bUIsT0FBc0IsR0FBRyxJQUFJO2NBQUE1Z0IsU0FBQSxDQUFBdkcsQ0FBQTtjQUFBLE9BRVp3RCxPQUFPLENBQUM4akIsSUFBSSxDQUFDLENBQ2hDemlDLGdFQUFXLENBQUNpQixLQUFLLENBQUM4TyxLQUFLLENBQUN3SixHQUFHLEVBQUU7Z0JBQzNCK0YsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRUw7Y0FDUixDQUFDLENBQUMsRUFDRixJQUFJUCxPQUFPLENBQVcsVUFBQXdMLE9BQU87Z0JBQUEsT0FDM0JtWSxPQUFPLEdBQUd0aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQyxZQUFNO2tCQUMzQ3FsQixNQUFJLENBQUNqaEIsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSXJGLEtBQUssdUJBQUE1QixNQUFBLENBQXVCMFYsR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDaEY0USxPQUFPLENBQUM7b0JBQUM5SixNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUVpTCxNQUFJLENBQUNrWSxRQUFRLENBQUM7Y0FBQSxFQUFDLENBQ3JCLENBQUMsQ0FDQzlILE9BQU8sQ0FBQyxZQUFNO2dCQUNiLElBQUk0RyxPQUFPLEVBQUU7a0JBQ1h0aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFlBQVksQ0FBQzR5QixPQUFPLENBQUM7Z0JBQ3pDO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FmSjZCLFlBQVksR0FBQXppQixTQUFBLENBQUF6RixDQUFBO2NBQUF5RixTQUFBLENBQUF2RyxDQUFBO2NBQUE7WUFBQTtjQUFBdUcsU0FBQSxDQUFBNUYsQ0FBQTtjQUFBc0csR0FBQSxHQUFBVixTQUFBLENBQUF6RixDQUFBO2NBaUJaLElBQUksQ0FBQzVSLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG1CQUFtQixFQUFBc1gsR0FBRyxDQUFDO2NBQUMsT0FBQVYsU0FBQSxDQUFBeEYsQ0FBQSxJQUVwQztnQkFBQ21FLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQkEsTUFBcUIsR0FBRyxJQUFJLENBQUMra0IsNEJBQTRCLENBQUNqQixZQUFZLENBQUM7Y0FBQSxNQUV6RTlqQixNQUFNLEtBQUssSUFBSTtnQkFBQXFCLFNBQUEsQ0FBQXZHLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUF1RyxTQUFBLENBQUF4RixDQUFBLElBQ1Y7Z0JBQUNtRSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztZQUFBO2NBR1hzakIsUUFBUSxHQUFHbGpDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQWdoQixTQUFBLENBQUF2RyxDQUFBO2NBQUEsT0FDSyxJQUFJLENBQUNrcUIsb0NBQW9DLENBQUN4ckIsT0FBTyxFQUFFc3FCLFlBQVksQ0FBQztZQUFBO2NBQTFGRyxpQkFBaUIsR0FBQTVpQixTQUFBLENBQUF6RixDQUFBO2NBRXZCLElBQUksQ0FBQzVSLE9BQU8sQ0FBQ3dLLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRXl2QixpQkFBaUIsRUFBRVgsUUFBUSxHQUFHak0sS0FBSyxDQUFDO2NBQUMsT0FBQWhXLFNBQUEsQ0FBQXhGLENBQUEsSUFFekZvb0IsaUJBQWlCO1VBQUE7UUFBQSxHQUFBampCLFFBQUE7TUFBQSxDQUN6QjtNQUFBLFNBNUZLaWtCLE9BQU9BLENBQUFwYSxHQUFBLEVBQUFxYSxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsR0FBQTtRQUFBLE9BQUFSLFFBQUEsQ0FBQXhsQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFQNHdCLE9BQU87SUFBQTtFQUFBO0lBQUF2a0MsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTJwQixxQkFBQSxHQUFBN0wsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQThGYixTQUFBNk4sU0FBMkI0SyxNQUFlLEVBQUVpUCxrQkFBNkM7UUFBQSxJQUFBbFosTUFBQTtRQUFBLElBQUFqUyxHQUFBLEVBQUEyRixRQUFBLEVBQUFLLElBQUEsRUFBQW1ZLEtBQUEsRUFBQXlNLFlBQUEsRUFBQTdCLE9BQUEsRUFBQWppQixNQUFBLEVBQUFzakIsUUFBQSxFQUFBK0IsNEJBQUEsRUFBQXJqQixHQUFBO1FBQUEsT0FBQXZGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBaU8sU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFsUCxDQUFBLEdBQUFrUCxTQUFBLENBQUE3UCxDQUFBO1lBQUE7Y0FDakY1QixHQUFHLEdBQUcsSUFBSSxDQUFDZ3JCLFFBQVEsQ0FBQyxDQUFDOU8sTUFBTSxDQUFDNWIsT0FBTyxFQUFFLFFBQVEsRUFBRTRiLE1BQU0sQ0FBQ2pzQixRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMwSCxRQUFRLENBQUMsQ0FBQztjQUNwR2dPLFFBQVEsR0FBRyxJQUFJbGYsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dPLFFBQVEsQ0FBQyxDQUFDO2NBQzNDc1EsSUFBa0MsR0FBRztnQkFDekNna0IsVUFBVSxFQUFWQSxVQUFVO2dCQUNWb0MsWUFBWSxFQUFFbFEsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVrUSxZQUFZO2dCQUNsQ2pCLGtCQUFrQixFQUFFO2tCQUNsQng4QixJQUFJLEVBQUV3OEIsa0JBQWtCLENBQUN4OEIsSUFBSTtrQkFDN0J3YyxHQUFHLEVBQUVnZ0Isa0JBQWtCLENBQUNoZ0I7Z0JBQzFCO2NBQ0YsQ0FBQztjQUVEeEYsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFaFUsSUFBSSxDQUFDZ0wsU0FBUyxDQUFDbUosSUFBSSxDQUFDLENBQUM7Y0FFM0NtWSxLQUFLLEdBQUdqM0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBc3FCLFNBQUEsQ0FBQWxQLENBQUE7Y0FJbEJ3bUIsT0FBc0IsR0FBRyxJQUFJO2NBQUF0WCxTQUFBLENBQUE3UCxDQUFBO2NBQUEsT0FFWndELE9BQU8sQ0FBQzhqQixJQUFJLENBQUMsQ0FDaEN6aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzhPLEtBQUssQ0FBQ3dKLEdBQUcsRUFBRTtnQkFDM0IrRixNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFTDtjQUNSLENBQUMsQ0FBQyxFQUNGLElBQUlQLE9BQU8sQ0FBVyxVQUFBd0wsT0FBTztnQkFBQSxPQUMzQm1ZLE9BQU8sR0FBR3RpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ0YsVUFBVSxDQUFDLFlBQU07a0JBQzNDdWxCLE1BQUksQ0FBQ25oQixPQUFPLENBQUNTLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJckYsS0FBSyxzQ0FBQTVCLE1BQUEsQ0FBc0MwVixHQUFHLE1BQUcsQ0FBQyxDQUFDO2tCQUM5RzRRLE9BQU8sQ0FBQztvQkFBQzlKLE1BQU0sRUFBRTtrQkFBRyxDQUFhLENBQUM7Z0JBQ3BDLENBQUMsRUFBRW1MLE1BQUksQ0FBQ2dZLFFBQVEsQ0FBQztjQUFBLEVBQUMsQ0FDckIsQ0FBQyxDQUNDOUgsT0FBTyxDQUFDLFlBQU07Z0JBQ2IsSUFBSTRHLE9BQU8sRUFBRTtrQkFDWHRpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sWUFBWSxDQUFDNHlCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWZKNkIsWUFBWSxHQUFBblosU0FBQSxDQUFBL08sQ0FBQTtjQUFBK08sU0FBQSxDQUFBN1AsQ0FBQTtjQUFBO1lBQUE7Y0FBQTZQLFNBQUEsQ0FBQWxQLENBQUE7Y0FBQXVHLEdBQUEsR0FBQTJJLFNBQUEsQ0FBQS9PLENBQUE7Y0FpQlosSUFBSSxDQUFDNVIsT0FBTyxDQUFDUyxLQUFLLENBQUMsa0NBQWtDLEVBQUF1WCxHQUFHLENBQUM7Y0FBQyxPQUFBMkksU0FBQSxDQUFBOU8sQ0FBQSxJQUVuRDtnQkFBQ21FLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQkEsTUFBa0MsR0FBRyxJQUFJLENBQUN1bEIseUNBQXlDLENBQUN6QixZQUFZLENBQUM7Y0FBQSxNQUVuRzlqQixNQUFNLEtBQUssSUFBSTtnQkFBQTJLLFNBQUEsQ0FBQTdQLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE2UCxTQUFBLENBQUE5TyxDQUFBLElBQ1Y7Z0JBQUNtRSxNQUFNLEVBQU5BO2NBQU0sQ0FBQztZQUFBO2NBR1hzakIsUUFBUSxHQUFHbGpDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXNxQixTQUFBLENBQUE3UCxDQUFBO2NBQUEsT0FDZ0IsSUFBSSxDQUFDMHFCLGlEQUFpRCxDQUFDMUIsWUFBWSxDQUFDO1lBQUE7Y0FBekd1Qiw0QkFBNEIsR0FBQTFhLFNBQUEsQ0FBQS9PLENBQUE7Y0FFbEMsSUFBSSxDQUFDNVIsT0FBTyxDQUFDd0ssS0FBSyxDQUFDLHFEQUFxRCxFQUFFNndCLDRCQUE0QixFQUFFL0IsUUFBUSxHQUFHak0sS0FBSyxDQUFDO2NBQUMsT0FBQTFNLFNBQUEsQ0FBQTlPLENBQUEsSUFFbkh3cEIsNEJBQTRCO1VBQUE7UUFBQSxHQUFBN2EsUUFBQTtNQUFBLENBQ3BDO01BQUEsU0F0REtJLG9CQUFvQkEsQ0FBQTZhLEdBQUEsRUFBQUMsR0FBQTtRQUFBLE9BQUFuYixxQkFBQSxDQUFBbkwsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBcEJ1VyxvQkFBb0I7SUFBQTtFQUFBO0lBQUFscUIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQStrQyxhQUFBLEdBQUFqbkIsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQXdEMUIsU0FBQTJjLFNBQ0VsRSxNQUFlLEVBQ2Z5QixxQkFBNkIsRUFDN0JvQixzQkFBcUMsRUFDckNnSixZQUEwQixFQUMxQkosV0FBd0I7UUFBQSxJQUFBdEgsTUFBQTtRQUFBLElBQUFyZ0IsR0FBQSxFQUFBMkYsUUFBQSxFQUFBSyxJQUFBLEVBQUFtWSxLQUFBLEVBQUF5TSxZQUFBLEVBQUE3QixPQUFBLEVBQUFqaUIsTUFBQSxFQUFBc2pCLFFBQUEsRUFBQXJoQixHQUFBO1FBQUEsT0FBQXhGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBK2QsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFoZixDQUFBLEdBQUFnZixTQUFBLENBQUEzZixDQUFBO1lBQUE7Y0FFbEI1QixHQUFHLEdBQUcsSUFBSSxDQUFDZ3JCLFFBQVEsQ0FBQyxDQUFDOU8sTUFBTSxDQUFDNWIsT0FBTyxFQUFFLFFBQVEsRUFBRTRiLE1BQU0sQ0FBQ2pzQixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzBILFFBQVEsQ0FBQyxDQUFDO2NBQ3RGZ08sUUFBUSxHQUFHLElBQUlsZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ08sUUFBUSxDQUFDLENBQUM7Y0FDM0NzUSxJQUFpQyxHQUFHO2dCQUN4Q2drQixVQUFVLEVBQVZBLFVBQVU7Z0JBQ1ZvQyxZQUFZLEVBQUVsUSxNQUFNLENBQUNrUSxZQUFZO2dCQUNqQ3pPLHFCQUFxQixFQUFyQkEscUJBQXFCO2dCQUNyQm9CLHNCQUFzQixFQUF0QkEsc0JBQXNCO2dCQUN0QmdKLFlBQVksRUFBRUYsNkRBQW1CLENBQUNDLHFDQUFxQyxDQUFDQyxZQUFZLENBQUM7Z0JBQ3JGSixXQUFXLEVBQUVGLDREQUFrQixDQUFDQyxtQ0FBbUMsQ0FBQ0MsV0FBVztjQUNqRixDQUFDO2NBRURoaUIsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFaFUsSUFBSSxDQUFDZ0wsU0FBUyxDQUFDbUosSUFBSSxDQUFDLENBQUM7Y0FFM0NtWSxLQUFLLEdBQUdqM0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBbzZCLFNBQUEsQ0FBQWhmLENBQUE7Y0FJbEJ3bUIsT0FBc0IsR0FBRyxJQUFJO2NBQUF4SCxTQUFBLENBQUEzZixDQUFBO2NBQUEsT0FFWndELE9BQU8sQ0FBQzhqQixJQUFJLENBQUMsQ0FDaEN6aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzhPLEtBQUssQ0FBQ3dKLEdBQUcsRUFBRTtnQkFDM0IrRixNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFTDtjQUNSLENBQUMsQ0FBQyxFQUNGLElBQUlQLE9BQU8sQ0FBVyxVQUFBd0wsT0FBTztnQkFBQSxPQUMzQm1ZLE9BQU8sR0FBR3RpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ0YsVUFBVSxDQUFDLFlBQU07a0JBQzNDMnpCLE1BQUksQ0FBQ3Z2QixPQUFPLENBQUNTLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxJQUFJckYsS0FBSyxpQ0FBQTVCLE1BQUEsQ0FBaUMwVixHQUFHLE1BQUcsQ0FBQyxDQUFDO2tCQUMxRzRRLE9BQU8sQ0FBQztvQkFBQzlKLE1BQU0sRUFBRTtrQkFBRyxDQUFhLENBQUM7Z0JBQ3BDLENBQUMsRUFBRXVaLE1BQUksQ0FBQzRKLFFBQVEsQ0FBQztjQUFBLEVBQUMsQ0FDckIsQ0FBQyxDQUNDOUgsT0FBTyxDQUFDLFlBQU07Z0JBQ2IsSUFBSTRHLE9BQU8sRUFBRTtrQkFDWHRpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sWUFBWSxDQUFDNHlCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWZKNkIsWUFBWSxHQUFBckosU0FBQSxDQUFBN2UsQ0FBQTtjQUFBNmUsU0FBQSxDQUFBM2YsQ0FBQTtjQUFBO1lBQUE7Y0FBQTJmLFNBQUEsQ0FBQWhmLENBQUE7Y0FBQXdHLEdBQUEsR0FBQXdZLFNBQUEsQ0FBQTdlLENBQUE7Y0FpQlosSUFBSSxDQUFDNVIsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUF3WCxHQUFHLENBQUM7Y0FBQyxPQUFBd1ksU0FBQSxDQUFBNWUsQ0FBQSxJQUVwRDtnQkFBQ21FLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQkEsTUFBd0MsR0FBRyxJQUFJLENBQUM0bEIsK0NBQStDLENBQUM5QixZQUFZLENBQUM7Y0FDN0dSLFFBQVEsR0FBR2xqQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBRTNCLElBQUksQ0FBQzJKLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdEQUFnRCxFQUFFK1YsTUFBTSxFQUFFc2pCLFFBQVEsR0FBR2pNLEtBQUssQ0FBQztjQUFDLE9BQUFvRCxTQUFBLENBQUE1ZSxDQUFBLElBRXZGO2dCQUFDbUUsTUFBTSxFQUFOQTtjQUFNLENBQUM7VUFBQTtRQUFBLEdBQUFzWixRQUFBO01BQUEsQ0FDaEI7TUFBQSxTQXRES3RDLFlBQVlBLENBQUE2TyxHQUFBLEVBQUFDLEdBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBTixhQUFBLENBQUF2bUIsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBWjJpQixZQUFZO0lBQUE7RUFBQTtJQUFBdDJCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFzbEMsaUJBQUEsR0FBQXhuQiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBd0RsQixTQUFBK2UsU0FBdUJ0RyxNQUFlLEVBQUUrUSxVQUE2QixFQUFFQyxrQkFBMkI7UUFBQSxJQUFBekosTUFBQTtRQUFBLElBQUE5YSxPQUFBO1VBQUEzSSxHQUFBO1VBQUEyRixRQUFBO1VBQUFLLElBQUE7VUFBQW1ZLEtBQUE7VUFBQXlNLFlBQUE7VUFBQTdCLE9BQUE7VUFBQWppQixNQUFBO1VBQUFzakIsUUFBQTtVQUFBK0Msd0JBQUE7VUFBQUMsTUFBQSxHQUFBanlCLFNBQUE7VUFBQTZOLEdBQUE7UUFBQSxPQUFBekYsWUFBQSxHQUFBQyxDQUFBLFdBQUFpZixTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWxnQixDQUFBLEdBQUFrZ0IsU0FBQSxDQUFBN2dCLENBQUE7WUFBQTtjQUFFK0csT0FBaUIsR0FBQXlrQixNQUFBLENBQUF6N0IsTUFBQSxRQUFBeTdCLE1BQUEsUUFBQTkvQixTQUFBLEdBQUE4L0IsTUFBQSxNQUFHLEVBQUU7Y0FDbEhwdEIsR0FBRyxHQUFHLElBQUksQ0FBQ2dyQixRQUFRLENBQUMsQ0FBQzlPLE1BQU0sQ0FBQzViLE9BQU8sRUFBRSxRQUFRLEVBQUU0YixNQUFNLENBQUNqc0IsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDMEgsUUFBUSxDQUFDLENBQUM7Y0FDaEdnTyxRQUFRLEdBQUcsSUFBSWxmLGdFQUFXLENBQUNpQixLQUFLLENBQUNnTyxRQUFRLENBQUMsQ0FBQztjQUMzQ3NRLElBQThCLEdBQUc7Z0JBQ3JDZ2tCLFVBQVUsRUFBVkEsVUFBVTtnQkFDVm9DLFlBQVksRUFBRWxRLE1BQU0sQ0FBQ2tRLFlBQVk7Z0JBQ2pDYSxVQUFVLEVBQVZBLFVBQVU7Z0JBQ1ZDLGtCQUFrQixFQUFsQkEsa0JBQWtCO2dCQUNsQnZrQixPQUFPLEVBQVBBO2NBQ0YsQ0FBQztjQUVEaEQsUUFBUSxDQUFDRSxNQUFNLENBQUMsVUFBVSxFQUFFaFUsSUFBSSxDQUFDZ0wsU0FBUyxDQUFDbUosSUFBSSxDQUFDLENBQUM7Y0FFM0NtWSxLQUFLLEdBQUdqM0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBczdCLFNBQUEsQ0FBQWxnQixDQUFBO2NBSWxCd21CLE9BQXNCLEdBQUcsSUFBSTtjQUFBdEcsU0FBQSxDQUFBN2dCLENBQUE7Y0FBQSxPQUVad0QsT0FBTyxDQUFDOGpCLElBQUksQ0FBQyxDQUNoQ3ppQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDOE8sS0FBSyxDQUFDd0osR0FBRyxFQUFFO2dCQUMzQitGLE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVMO2NBQ1IsQ0FBQyxDQUFDLEVBQ0YsSUFBSVAsT0FBTyxDQUFXLFVBQUF3TCxPQUFPO2dCQUFBLE9BQzNCbVksT0FBTyxHQUFHdGlDLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUMsWUFBTTtrQkFDM0MrMkIsTUFBSSxDQUFDM3lCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDhCQUE4QixFQUFFLElBQUlyRixLQUFLLGtDQUFBNUIsTUFBQSxDQUFrQzBWLEdBQUcsTUFBRyxDQUFDLENBQUM7a0JBQ3RHNFEsT0FBTyxDQUFDO29CQUFDOUosTUFBTSxFQUFFO2tCQUFHLENBQWEsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFMmMsTUFBSSxDQUFDd0csUUFBUSxDQUFDO2NBQUEsRUFBQyxDQUNyQixDQUFDLENBQ0M5SCxPQUFPLENBQUMsWUFBTTtnQkFDYixJQUFJNEcsT0FBTyxFQUFFO2tCQUNYdGlDLGdFQUFXLENBQUNpQixLQUFLLENBQUN5TyxZQUFZLENBQUM0eUIsT0FBTyxDQUFDO2dCQUN6QztjQUNGLENBQUMsQ0FBQztZQUFBO2NBZko2QixZQUFZLEdBQUFuSSxTQUFBLENBQUEvZixDQUFBO2NBQUErZixTQUFBLENBQUE3Z0IsQ0FBQTtjQUFBO1lBQUE7Y0FBQTZnQixTQUFBLENBQUFsZ0IsQ0FBQTtjQUFBeUcsR0FBQSxHQUFBeVosU0FBQSxDQUFBL2YsQ0FBQTtjQWlCWixJQUFJLENBQUM1UixPQUFPLENBQUNTLEtBQUssQ0FBQyw4QkFBOEIsRUFBQXlYLEdBQUcsQ0FBQztjQUFDLE9BQUF5WixTQUFBLENBQUE5ZixDQUFBLElBRS9DO2dCQUFDbUUsTUFBTSxFQUFFO2NBQVEsQ0FBQztZQUFBO2NBR3JCQSxNQUE4QixHQUFHLElBQUksQ0FBQ3VtQixxQ0FBcUMsQ0FBQ3pDLFlBQVksQ0FBQztjQUFBLE1BRTNGOWpCLE1BQU0sS0FBSyxJQUFJO2dCQUFBMmIsU0FBQSxDQUFBN2dCLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE2Z0IsU0FBQSxDQUFBOWYsQ0FBQSxJQUNWO2dCQUFDbUUsTUFBTSxFQUFOQTtjQUFNLENBQUM7WUFBQTtjQUdYc2pCLFFBQVEsR0FBR2xqQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFzN0IsU0FBQSxDQUFBN2dCLENBQUE7Y0FBQSxPQUNZLElBQUksQ0FBQzByQiw2Q0FBNkMsQ0FBQzFDLFlBQVksQ0FBQztZQUFBO2NBQWpHdUMsd0JBQXdCLEdBQUExSyxTQUFBLENBQUEvZixDQUFBO2NBRTlCLElBQUksQ0FBQzVSLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGlEQUFpRCxFQUFFbzhCLHdCQUF3QixFQUFFL0MsUUFBUSxHQUFHak0sS0FBSyxDQUFDO2NBQUMsT0FBQXNFLFNBQUEsQ0FBQTlmLENBQUEsSUFFMUd3cUIsd0JBQXdCO1VBQUE7UUFBQSxHQUFBM0ssUUFBQTtNQUFBLENBQ2hDO01BQUEsU0FyREsrSyxnQkFBZ0JBLENBQUFDLElBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBO1FBQUEsT0FBQVYsaUJBQUEsQ0FBQTltQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFoQm95QixnQkFBZ0I7SUFBQTtFQUFBO0lBQUEvbEMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQWltQyxjQUFBLEdBQUFub0IsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQXVEdEIsU0FBQWtmLFNBQW9CekcsTUFBZSxFQUFFaUQsTUFBYztRQUFBLElBQUEyRSxNQUFBO1FBQUEsSUFBQTlqQixHQUFBLEVBQUEyRixRQUFBLEVBQUFLLElBQUEsRUFBQW1ZLEtBQUEsRUFBQXlNLFlBQUEsRUFBQTdCLE9BQUEsRUFBQWppQixNQUFBLEVBQUFzakIsUUFBQSxFQUFBd0QscUJBQUEsRUFBQTNrQixHQUFBO1FBQUEsT0FBQTFGLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb2YsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFyZ0IsQ0FBQSxHQUFBcWdCLFNBQUEsQ0FBQWhoQixDQUFBO1lBQUE7Y0FDM0M1QixHQUFHLEdBQUcsSUFBSSxDQUFDZ3JCLFFBQVEsQ0FBQyxDQUFDOU8sTUFBTSxDQUFDNWIsT0FBTyxFQUFFLFFBQVEsRUFBRTRiLE1BQU0sQ0FBQ2pzQixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzBILFFBQVEsQ0FBQyxDQUFDO2NBQ3RGZ08sUUFBUSxHQUFHLElBQUlsZixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ08sUUFBUSxDQUFDLENBQUM7Y0FDM0NzUSxJQUEyQixHQUFHO2dCQUNsQ2drQixVQUFVLEVBQVZBLFVBQVU7Z0JBQ1ZvQyxZQUFZLEVBQUVsUSxNQUFNLENBQUNrUSxZQUFZO2dCQUNqQ2pOLE1BQU0sRUFBTkEsTUFBTTtnQkFDTnhXLE9BQU8sRUFBRTtjQUNYLENBQUM7Y0FFRGhELFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLFVBQVUsRUFBRWhVLElBQUksQ0FBQ2dMLFNBQVMsQ0FBQ21KLElBQUksQ0FBQyxDQUFDO2NBRTNDbVksS0FBSyxHQUFHajNCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXk3QixTQUFBLENBQUFyZ0IsQ0FBQTtjQUlsQndtQixPQUFzQixHQUFHLElBQUk7Y0FBQW5HLFNBQUEsQ0FBQWhoQixDQUFBO2NBQUEsT0FFWndELE9BQU8sQ0FBQzhqQixJQUFJLENBQUMsQ0FDaEN6aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQzhPLEtBQUssQ0FBQ3dKLEdBQUcsRUFBRTtnQkFDM0IrRixNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFTCxRQUFRO2dCQUNkdkksS0FBSyxFQUFFO2NBQ1QsQ0FBQyxDQUFDLEVBQ0YsSUFBSWdJLE9BQU8sQ0FBVyxVQUFBd0wsT0FBTztnQkFBQSxPQUMzQm1ZLE9BQU8sR0FBR3RpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDZ0YsVUFBVSxDQUFDLFlBQU07a0JBQzNDbzNCLE1BQUksQ0FBQ2h6QixPQUFPLENBQUNTLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJckYsS0FBSyw2QkFBQTVCLE1BQUEsQ0FBNkIwVixHQUFHLE1BQUcsQ0FBQyxDQUFDO2tCQUN4RjRRLE9BQU8sQ0FBQztvQkFBQzlKLE1BQU0sRUFBRTtrQkFBRyxDQUFhLENBQUM7Z0JBQ3BDLENBQUMsRUFBRWdkLE1BQUksQ0FBQ21HLFFBQVEsQ0FBQztjQUFBLEVBQUMsQ0FDckIsQ0FBQyxDQUNDOUgsT0FBTyxDQUFDLFlBQU07Z0JBQ2IsSUFBSTRHLE9BQU8sRUFBRTtrQkFDWHRpQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sWUFBWSxDQUFDNHlCLE9BQU8sQ0FBQztnQkFDekM7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWhCSjZCLFlBQVksR0FBQWhJLFNBQUEsQ0FBQWxnQixDQUFBO2NBQUFrZ0IsU0FBQSxDQUFBaGhCLENBQUE7Y0FBQTtZQUFBO2NBQUFnaEIsU0FBQSxDQUFBcmdCLENBQUE7Y0FBQTBHLEdBQUEsR0FBQTJaLFNBQUEsQ0FBQWxnQixDQUFBO2NBa0JaLElBQUksQ0FBQzVSLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHlCQUF5QixFQUFBMFgsR0FBRyxDQUFDO2NBQUMsT0FBQTJaLFNBQUEsQ0FBQWpnQixDQUFBLElBRTFDO2dCQUFDbUUsTUFBTSxFQUFFO2NBQVEsQ0FBQztZQUFBO2NBR3JCQSxNQUEyQixHQUFHLElBQUksQ0FBQyttQixxQ0FBcUMsQ0FBQ2pELFlBQVksQ0FBQztjQUFBLE1BRXhGOWpCLE1BQU0sS0FBSyxJQUFJO2dCQUFBOGIsU0FBQSxDQUFBaGhCLENBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFnaEIsU0FBQSxDQUFBamdCLENBQUEsSUFDVjtnQkFBQ21FLE1BQU0sRUFBTkE7Y0FBTSxDQUFDO1lBQUE7Y0FHWHNqQixRQUFRLEdBQUdsakMsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBeTdCLFNBQUEsQ0FBQWhoQixDQUFBO2NBQUEsT0FDUyxJQUFJLENBQUNrc0IsMENBQTBDLENBQUNsRCxZQUFZLENBQUM7WUFBQTtjQUEzRmdELHFCQUFxQixHQUFBaEwsU0FBQSxDQUFBbGdCLENBQUE7Y0FFM0IsSUFBSSxDQUFDNVIsT0FBTyxDQUFDQyxJQUFJLENBQUMsNkNBQTZDLEVBQUU2OEIscUJBQXFCLEVBQUV4RCxRQUFRLEdBQUdqTSxLQUFLLENBQUM7Y0FBQyxPQUFBeUUsU0FBQSxDQUFBamdCLENBQUEsSUFFbkdpckIscUJBQXFCO1VBQUE7UUFBQSxHQUFBakwsUUFBQTtNQUFBLENBQzdCO01BQUEsU0FyREtpQixhQUFhQSxDQUFBbUssSUFBQSxFQUFBQyxJQUFBO1FBQUEsT0FBQUwsY0FBQSxDQUFBem5CLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQWJ5b0IsYUFBYTtJQUFBO0VBQUE7SUFBQXA4QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBdW1DLHVCQUFBLEdBQUF6b0IsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQXVEbkIsU0FBQThmLFNBQTZCckgsTUFBZSxFQUFFaUQsTUFBYztRQUFBLElBQUF0MEIsVUFBQTtRQUFBLElBQUFxYSxPQUFBLEVBQUFsRixHQUFBLEVBQUEyRixRQUFBLEVBQUFLLElBQUE7UUFBQSxPQUFBekMsWUFBQSxHQUFBQyxDQUFBLFdBQUFnZ0IsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE1aEIsQ0FBQTtZQUFBO2NBQzFELElBQUksR0FBQS9XLFVBQUEsR0FBQ3RCLFNBQVMsY0FBQXNCLFVBQUEsZUFBVEEsVUFBQSxDQUFXcWpDLFVBQVUsR0FBRTtnQkFDcEJocEIsT0FBTyxHQUFHLElBQUksQ0FBQzBlLGFBQWEsQ0FBQzFILE1BQU0sRUFBRWlELE1BQU0sQ0FBQztjQUNwRDtjQUVNbmYsR0FBRyxHQUFHLElBQUksQ0FBQ2dyQixRQUFRLENBQUMsQ0FBQzlPLE1BQU0sQ0FBQzViLE9BQU8sRUFBRSxRQUFRLEVBQUU0YixNQUFNLENBQUNqc0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMwSCxRQUFRLENBQUMsQ0FBQztjQUN0RmdPLFFBQVEsR0FBRyxJQUFJbGYsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dPLFFBQVEsQ0FBQyxDQUFDO2NBQzNDc1EsSUFBMkIsR0FBRztnQkFDbENna0IsVUFBVSxFQUFWQSxVQUFVO2dCQUNWb0MsWUFBWSxFQUFFbFEsTUFBTSxDQUFDa1EsWUFBWTtnQkFDakNqTixNQUFNLEVBQU5BLE1BQU07Z0JBQ054VyxPQUFPLEVBQUU7Y0FDWCxDQUFDO2NBRURoRCxRQUFRLENBQUNFLE1BQU0sQ0FBQyxVQUFVLEVBQUVoVSxJQUFJLENBQUNnTCxTQUFTLENBQUNtSixJQUFJLENBQUMsQ0FBQztjQUVqRHpjLFNBQVMsQ0FBQzJrQyxVQUFVLENBQUNsdUIsR0FBRyxFQUFFMkYsUUFBUSxDQUFDO1lBQUM7Y0FBQSxPQUFBNmQsU0FBQSxDQUFBN2dCLENBQUE7VUFBQTtRQUFBLEdBQUE0Z0IsUUFBQTtNQUFBLENBQ3JDO01BQUEsU0FqQkt0RixzQkFBc0JBLENBQUFrUSxJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBSCx1QkFBQSxDQUFBL25CLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQXRCOGlCLHNCQUFzQjtJQUFBO0VBQUE7SUFBQXoyQixHQUFBO0lBQUFFLEtBQUEsRUFtQjVCLFNBQVFzakMsUUFBUUEsQ0FBQ3FELElBQWMsRUFBTztNQUNwQyxJQUFNLzdCLEdBQUcsR0FBRyxJQUFJN0wsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ29GLEdBQUcsQ0FBQyxJQUFJLENBQUMrN0IsSUFBSSxDQUFDO01BQ2hELElBQU15RixXQUFXLEdBQUdoOEIsR0FBRyxDQUFDNE4sUUFBUSxDQUFDblcsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUUzQ3VrQyxXQUFXLENBQUMzOEIsTUFBTSxHQUFHMjhCLFdBQVcsQ0FBQzM4QixNQUFNLEdBQUcsQ0FBQztNQUUzQ1csR0FBRyxDQUFDNE4sUUFBUSxHQUFHb3VCLFdBQVcsQ0FBQ2hrQyxNQUFNLENBQUE0YixLQUFBLENBQWxCb29CLFdBQVcsRUFBQTNuQiw4SUFBQSxDQUFXMG5CLElBQUksRUFBQyxDQUFDN1csSUFBSSxDQUFDLEdBQUcsQ0FBQztNQUVwRCxPQUFPbGxCLEdBQUc7SUFDWjtFQUFDO0lBQUE5SyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRMmlDLFlBQVlBLENBQUEsRUFBVztNQUM3QixJQUFNLzNCLEdBQUcsR0FBRyxJQUFJN0wsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ29GLEdBQUcsQ0FBQyxJQUFJLENBQUMrN0IsSUFBSSxDQUFDO01BQ2hELElBQU01akIsVUFBVSxHQUFHaEIsK0RBQWMsQ0FBQ2dCLFVBQVU7TUFDNUMsSUFBTS9QLFVBQVUsR0FBR04sZ0VBQVUsQ0FBQ2sxQixtQkFBbUIsQ0FBQzUwQixVQUFVO01BRTVENUMsR0FBRyxDQUFDeTNCLFlBQVksQ0FBQ2hxQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztNQUNwQ3pOLEdBQUcsQ0FBQ3kzQixZQUFZLENBQUNocUIsR0FBRyxDQUFDLFNBQVMsRUFBRWtGLFVBQVUsQ0FBQztNQUMzQzNTLEdBQUcsQ0FBQ3kzQixZQUFZLENBQUNocUIsR0FBRyxDQUFDLFlBQVksRUFBRTdLLFVBQVUsQ0FBQztNQUM5QzVDLEdBQUcsQ0FBQ3kzQixZQUFZLENBQUNocUIsR0FBRyxDQUFDLEdBQUcsS0FBQXpWLE1BQUEsQ0FBS3BELElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDO01BRTFDLE9BQU9tTCxHQUFHLENBQUNxRixRQUFRLENBQUMsQ0FBQztJQUN2QjtFQUFDO0lBQUFuUSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRbWtDLDRCQUE0QkEsQ0FBQ3JsQixRQUFrQixFQUFpQjtNQUN0RSxJQUFJLENBQUNBLFFBQVEsRUFBRTtRQUNiLE9BQU8sUUFBUTtNQUNqQjtNQUVBLFFBQVFBLFFBQVEsQ0FBQ00sTUFBTTtRQUNyQixLQUFLLEdBQUc7VUFDTixPQUFPLElBQUk7UUFDYixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxnQkFBZ0I7UUFDekIsS0FBSyxHQUFHO1VBQ04sT0FBTyxhQUFhO1FBQ3RCLEtBQUssR0FBRztVQUNOLE9BQU8sNEJBQTRCO1FBQ3JDLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLHlCQUF5QjtRQUNsQyxLQUFLLEdBQUc7VUFDTixPQUFPLGVBQWU7UUFDeEIsS0FBSyxHQUFHO1VBQ04sT0FBTyxVQUFVO1FBQ25CLEtBQUssR0FBRztVQUNOLE9BQU8sY0FBYztRQUN2QjtVQUNFLE9BQU8sUUFBUTtNQUNuQjtJQUNGO0VBQUM7SUFBQXRmLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE2akMsOEJBQThCQSxDQUFDL2tCLFFBQWtCLEVBQW1CO01BQzFFLElBQUksQ0FBQ0EsUUFBUSxFQUFFO1FBQ2IsT0FBTyxRQUFRO01BQ2pCO01BRUEsUUFBUUEsUUFBUSxDQUFDTSxNQUFNO1FBQ3JCLEtBQUssR0FBRztVQUNOLE9BQU8sSUFBSTtRQUNiLEtBQUssR0FBRztVQUNOLE9BQU8sY0FBYztRQUN2QixLQUFLLEdBQUc7VUFDTixPQUFPLGdCQUFnQjtRQUN6QixLQUFLLEdBQUc7VUFDTixPQUFPLGFBQWE7UUFDdEIsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8seUJBQXlCO1FBQ2xDLEtBQUssR0FBRztVQUNOLE9BQU8sZUFBZTtRQUN4QixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBdGYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTJrQyx5Q0FBeUNBLENBQUM3bEIsUUFBa0IsRUFBOEI7TUFDaEcsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNNLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBdGYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUWdsQywrQ0FBK0NBLENBQUNsbUIsUUFBa0IsRUFBb0M7TUFDNUcsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNNLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBdGYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTJsQyxxQ0FBcUNBLENBQUM3bUIsUUFBa0IsRUFBMEI7TUFDeEYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNNLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBdGYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUW1tQyxxQ0FBcUNBLENBQUNybkIsUUFBa0IsRUFBdUI7TUFDckYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNNLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sU0FBUztRQUNsQixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBdGYsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQTZtQyx1Q0FBQSxHQUFBL29CLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBOGdCLFNBQXFEamtCLE9BQWUsRUFBRWtHLFFBQWtCO1FBQUEsSUFBQWhKLElBQUEsRUFBQXNKLE1BQUEsRUFBQTdXLFFBQUEsRUFBQW04QixZQUFBLEVBQUE1USxHQUFBLEVBQUFnVCxnQkFBQSxFQUFBckMsNEJBQUEsRUFBQXNDLCtCQUFBLEVBQUFDLDhCQUFBLEVBQUFDLGVBQUEsRUFBQTVELGlCQUFBO1FBQUEsT0FBQXhuQixZQUFBLEdBQUFDLENBQUEsV0FBQWtoQixTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTlpQixDQUFBO1lBQUE7Y0FBQThpQixTQUFBLENBQUE5aUIsQ0FBQTtjQUFBLE9BQ25FNEUsUUFBUSxDQUFDb29CLElBQUksQ0FBQyxDQUFDO1lBQUE7Y0FBNUJweEIsSUFBSSxHQUFBa25CLFNBQUEsQ0FBQWhpQixDQUFBO2NBRVJvRSxNQUFNLEdBU0p0SixJQUFJLENBVE5zSixNQUFNLEVBQ043VyxRQUFRLEdBUU51TixJQUFJLENBUk52TixRQUFRLEVBQ1JtOEIsWUFBWSxHQU9WNXVCLElBQUksQ0FQTjR1QixZQUFZLEVBQ1o1USxHQUFHLEdBTURoZSxJQUFJLENBTk5nZSxHQUFHLEVBQ0hnVCxnQkFBZ0IsR0FLZGh4QixJQUFJLENBTE5neEIsZ0JBQWdCLEVBQ2hCckMsNEJBQTRCLEdBSTFCM3VCLElBQUksQ0FKTjJ1Qiw0QkFBNEIsRUFDNUJzQywrQkFBK0IsR0FHN0JqeEIsSUFBSSxDQUhOaXhCLCtCQUErQixFQUMvQkMsOEJBQThCLEdBRTVCbHhCLElBQUksQ0FGTmt4Qiw4QkFBOEIsRUFDM0JDLGVBQWUsR0FBQUUsb0pBQUEsQ0FDaEJyeEIsSUFBSSxFQUFBc3hCLFNBQUE7Y0FDRi9ELGlCQUFnRCxHQUFBZ0UsYUFBQTtnQkFDcERqb0IsTUFBTSxFQUFOQSxNQUFNO2dCQUNOb1YsTUFBTSxFQUFFO2tCQUNONWIsT0FBTyxFQUFQQSxPQUFPO2tCQUNQclEsUUFBUSxFQUFSQSxRQUFRO2tCQUNSbThCLFlBQVksRUFBWkE7Z0JBQ0YsQ0FBQztnQkFDRDVRLEdBQUcsRUFBSEE7Y0FBRyxHQUNBbVQsZUFBZTtjQUdwQixJQUFJSCxnQkFBZ0IsRUFBRTtnQkFDcEJ6RCxpQkFBaUIsQ0FBQ3lELGdCQUFnQixHQUFHLElBQUksQ0FBQ1EsMENBQTBDLENBQUNSLGdCQUFnQixDQUFDO2NBQ3hHO2NBRUEsSUFBSXJDLDRCQUE0QixhQUE1QkEsNEJBQTRCLGVBQTVCQSw0QkFBNEIsQ0FBRWhCLGtCQUFrQixFQUFFO2dCQUNwREosaUJBQWlCLENBQUNvQiw0QkFBNEIsR0FBRztrQkFBQ2hCLGtCQUFrQixFQUFFZ0IsNEJBQTRCLENBQUNoQjtnQkFBa0IsQ0FBQztjQUN4SDtjQUVBLElBQUlzRCwrQkFBK0IsYUFBL0JBLCtCQUErQixlQUEvQkEsK0JBQStCLENBQUV0RCxrQkFBa0IsRUFBRTtnQkFDdkRKLGlCQUFpQixDQUFDMEQsK0JBQStCLEdBQUc7a0JBQUN0RCxrQkFBa0IsRUFBRXNELCtCQUErQixDQUFDdEQ7Z0JBQWtCLENBQUM7Y0FDOUg7Y0FFQSxJQUFJdUQsOEJBQThCLGFBQTlCQSw4QkFBOEIsZUFBOUJBLDhCQUE4QixDQUFFdkQsa0JBQWtCLEVBQUU7Z0JBQ3RESixpQkFBaUIsQ0FBQzJELDhCQUE4QixHQUFHO2tCQUFDdkQsa0JBQWtCLEVBQUV1RCw4QkFBOEIsQ0FBQ3ZEO2dCQUFrQixDQUFDO2NBQzVIO2NBQUMsT0FBQXpHLFNBQUEsQ0FBQS9oQixDQUFBLElBRU1vb0IsaUJBQWlCO1VBQUE7UUFBQSxHQUFBeEcsUUFBQTtNQUFBLENBQ3pCO01BQUEsU0F6Q2FrSCxzQ0FBc0NBLENBQUF3RCxJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBWCx1Q0FBQSxDQUFBcm9CLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQXRDc3dCLHNDQUFzQztJQUFBO0VBQUE7SUFBQWprQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBeW5DLHFDQUFBLEdBQUEzcEIsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQTJDcEQsU0FBQTJyQixTQUFtRDl1QixPQUFlLEVBQUVrRyxRQUFrQjtRQUFBLElBQUFoSixJQUFBLEVBQUE2eEIsZUFBQTtRQUFBLE9BQUE5ckIsWUFBQSxHQUFBQyxDQUFBLFdBQUE4ckIsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUExdEIsQ0FBQTtZQUFBO2NBQUEwdEIsU0FBQSxDQUFBMXRCLENBQUE7Y0FBQSxPQUNqRTRFLFFBQVEsQ0FBQ29vQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCcHhCLElBQUksR0FBQTh4QixTQUFBLENBQUE1c0IsQ0FBQTtjQUNKMnNCLGVBQTRDLEdBQUc7Z0JBQ25Edm9CLE1BQU0sRUFBRXRKLElBQUksQ0FBQ3NKLE1BQU07Z0JBQ25Cb1YsTUFBTSxFQUFFO2tCQUNONWIsT0FBTyxFQUFQQSxPQUFPO2tCQUNQclEsUUFBUSxFQUFFdU4sSUFBSSxDQUFDdk4sUUFBUTtrQkFDdkJtOEIsWUFBWSxFQUFFNXVCLElBQUksQ0FBQzR1QjtnQkFDckI7Y0FDRixDQUFDO2NBRUQsSUFBSTV1QixJQUFJLEVBQUU7Z0JBQ1IsSUFBSUEsSUFBSSxDQUFDZ3hCLGdCQUFnQixFQUFFO2tCQUN6QmEsZUFBZSxDQUFDYixnQkFBZ0IsR0FBRyxJQUFJLENBQUNRLDBDQUEwQyxDQUFDeHhCLElBQUksQ0FBQ2d4QixnQkFBZ0IsQ0FBQztnQkFDM0c7Z0JBRUEsSUFBSWh4QixJQUFJLENBQUMydUIsNEJBQTRCLElBQUkzdUIsSUFBSSxDQUFDMnVCLDRCQUE0QixDQUFDaEIsa0JBQWtCLEVBQUU7a0JBQzdGa0UsZUFBZSxDQUFDbEQsNEJBQTRCLEdBQUc7b0JBQUNoQixrQkFBa0IsRUFBRTN0QixJQUFJLENBQUMydUIsNEJBQTRCLENBQUNoQjtrQkFBa0IsQ0FBQztnQkFDM0g7Z0JBRUEsSUFBSTN0QixJQUFJLENBQUNpeEIsK0JBQStCLElBQUlqeEIsSUFBSSxDQUFDaXhCLCtCQUErQixDQUFDdEQsa0JBQWtCLEVBQUU7a0JBQ25Ha0UsZUFBZSxDQUFDWiwrQkFBK0IsR0FBRztvQkFBQ3RELGtCQUFrQixFQUFFM3RCLElBQUksQ0FBQ2l4QiwrQkFBK0IsQ0FBQ3REO2tCQUFrQixDQUFDO2dCQUNqSTtnQkFFQSxJQUFJM3RCLElBQUksQ0FBQ2t4Qiw4QkFBOEIsSUFBSWx4QixJQUFJLENBQUNreEIsOEJBQThCLENBQUN2RCxrQkFBa0IsRUFBRTtrQkFDakdrRSxlQUFlLENBQUNYLDhCQUE4QixHQUFHO29CQUFDdkQsa0JBQWtCLEVBQUUzdEIsSUFBSSxDQUFDa3hCLDhCQUE4QixDQUFDdkQ7a0JBQWtCLENBQUM7Z0JBQy9IO2NBQ0Y7Y0FBQyxPQUFBbUUsU0FBQSxDQUFBM3NCLENBQUEsSUFFTTBzQixlQUFlO1VBQUE7UUFBQSxHQUFBRCxRQUFBO01BQUEsQ0FDdkI7TUFBQSxTQTlCYXRELG9DQUFvQ0EsQ0FBQXlELElBQUEsRUFBQUMsSUFBQTtRQUFBLE9BQUFMLHFDQUFBLENBQUFqcEIsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBcEMyd0Isb0NBQW9DO0lBQUE7RUFBQTtJQUFBdGtDLEdBQUE7SUFBQUUsS0FBQSxFQWdDbEQsU0FBUXNuQywwQ0FBMENBLENBQUMvbUIsYUFBK0IsRUFBb0I7TUFDcEcsSUFBTXVtQixnQkFBa0MsR0FBRztRQUFDeGtCLFVBQVUsRUFBRTtNQUFFLENBQUM7TUFFM0QsSUFBSS9CLGFBQWEsQ0FBQ3duQixZQUFZLEVBQUU7UUFDOUJqQixnQkFBZ0IsQ0FBQ2lCLFlBQVksR0FBR3huQixhQUFhLENBQUN3bkIsWUFBWTtNQUM1RDtNQUVBLElBQUksT0FBT3huQixhQUFhLENBQUN5bkIsb0JBQW9CLEtBQUssUUFBUSxFQUFFO1FBQzFEbEIsZ0JBQWdCLENBQUNrQixvQkFBb0IsR0FBR3puQixhQUFhLENBQUN5bkIsb0JBQW9CO01BQzVFO01BRUEsSUFBSXpuQixhQUFhLENBQUMrQixVQUFVLEVBQUU7UUFDNUIsSUFBTUEsVUFBMEIsR0FBRyxFQUFFO1FBRXJDLEtBQUssSUFBSWhJLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2lHLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQ3JZLE1BQU0sRUFBRXFRLENBQUMsRUFBRSxFQUFFO1VBQ3hEZ0ksVUFBVSxDQUFDclosSUFBSSxDQUFDO1lBQ2RzWixJQUFJLEVBQUVoQyxhQUFhLENBQUMrQixVQUFVLENBQUNoSSxDQUFDLENBQUMsQ0FBQ2lJLElBQUk7WUFDdENDLFFBQVEsRUFBRWpDLGFBQWEsQ0FBQytCLFVBQVUsQ0FBQ2hJLENBQUMsQ0FBQyxDQUFDa0ksUUFBUTtZQUM5Q0MsVUFBVSxFQUFFbEMsYUFBYSxDQUFDK0IsVUFBVSxDQUFDaEksQ0FBQyxDQUFDLENBQUNtSTtVQUMxQyxDQUFDLENBQUM7UUFDSjtRQUVBcWtCLGdCQUFnQixDQUFDeGtCLFVBQVUsR0FBR0EsVUFBVTtNQUMxQztNQUVBLElBQUkvQixhQUFhLENBQUMwbkIsa0JBQWtCLEVBQUU7UUFDcENuQixnQkFBZ0IsQ0FBQ21CLGtCQUFrQixHQUFHMW5CLGFBQWEsQ0FBQzBuQixrQkFBa0I7TUFDeEU7TUFFQSxJQUFJMW5CLGFBQWEsQ0FBQzJuQixhQUFhLEVBQUU7UUFDL0JwQixnQkFBZ0IsQ0FBQ29CLGFBQWEsR0FBRzNuQixhQUFhLENBQUMybkIsYUFBYTtNQUM5RDtNQUVBLE9BQU9wQixnQkFBZ0I7SUFDekI7RUFBQztJQUFBaG5DLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFtb0Msa0RBQUEsR0FBQXJxQiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBQ0QsU0FBQXFzQixTQUFnRXRwQixRQUFrQjtRQUFBLElBQUFoSixJQUFBLEVBQUEydUIsNEJBQUE7UUFBQSxPQUFBNW9CLFlBQUEsR0FBQUMsQ0FBQSxXQUFBdXNCLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBbnVCLENBQUE7WUFBQTtjQUFBbXVCLFNBQUEsQ0FBQW51QixDQUFBO2NBQUEsT0FDN0Q0RSxRQUFRLENBQUNvb0IsSUFBSSxDQUFDLENBQUM7WUFBQTtjQUE1QnB4QixJQUFJLEdBQUF1eUIsU0FBQSxDQUFBcnRCLENBQUE7Y0FDSnlwQiw0QkFBK0QsR0FBRztnQkFBQ3JsQixNQUFNLEVBQUV0SixJQUFJLENBQUNzSjtjQUFNLENBQUM7Y0FFN0YsSUFBSXRKLElBQUksSUFBSUEsSUFBSSxDQUFDMnRCLGtCQUFrQixFQUFFO2dCQUNuQ2dCLDRCQUE0QixDQUFDaEIsa0JBQWtCLEdBQUczdEIsSUFBSSxDQUFDMnRCLGtCQUFrQjtjQUMzRTtjQUFDLE9BQUE0RSxTQUFBLENBQUFwdEIsQ0FBQSxJQUVNd3BCLDRCQUE0QjtVQUFBO1FBQUEsR0FBQTJELFFBQUE7TUFBQSxDQUNwQztNQUFBLFNBVGF4RCxpREFBaURBLENBQUEwRCxJQUFBO1FBQUEsT0FBQUgsa0RBQUEsQ0FBQTNwQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFqRG14QixpREFBaUQ7SUFBQTtFQUFBO0lBQUE5a0MsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXVvQyw4Q0FBQSxHQUFBenFCLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0FXL0QsU0FBQXlzQixVQUE0RDFwQixRQUFrQjtRQUFBLElBQUFoSixJQUFBLEVBQUEydkIsd0JBQUE7UUFBQSxPQUFBNXBCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBMnNCLFVBQUE7VUFBQSxrQkFBQUEsVUFBQSxDQUFBdnVCLENBQUE7WUFBQTtjQUFBdXVCLFVBQUEsQ0FBQXZ1QixDQUFBO2NBQUEsT0FDekQ0RSxRQUFRLENBQUNvb0IsSUFBSSxDQUFDLENBQUM7WUFBQTtjQUE1QnB4QixJQUFJLEdBQUEyeUIsVUFBQSxDQUFBenRCLENBQUE7Y0FDSnlxQix3QkFBdUQsR0FBRztnQkFDOURybUIsTUFBTSxFQUFFdEosSUFBSSxDQUFDc0osTUFBTTtnQkFDbkI2QixPQUFPLEVBQUU7Y0FDWCxDQUFDO2NBRUQsSUFBSW5MLElBQUksRUFBRTtnQkFDUixJQUFJQSxJQUFJLENBQUNtTCxPQUFPLEVBQUU7a0JBQ2hCd2tCLHdCQUF3QixDQUFDeGtCLE9BQU8sR0FBR25MLElBQUksQ0FBQ21MLE9BQU87Z0JBQ2pEO2NBQ0Y7Y0FBQyxPQUFBd25CLFVBQUEsQ0FBQXh0QixDQUFBLElBRU13cUIsd0JBQXdCO1VBQUE7UUFBQSxHQUFBK0MsU0FBQTtNQUFBLENBQ2hDO01BQUEsU0FkYTVDLDZDQUE2Q0EsQ0FBQThDLElBQUE7UUFBQSxPQUFBSCw4Q0FBQSxDQUFBL3BCLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQTdDbXlCLDZDQUE2QztJQUFBO0VBQUE7SUFBQTlsQyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMm9DLDJDQUFBLEdBQUE3cUIsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQWdCM0QsU0FBQTZzQixVQUF5RDlwQixRQUFrQjtRQUFBLElBQUFoSixJQUFBLEVBQUFvbUIsYUFBQTtRQUFBLE9BQUFyZ0IsWUFBQSxHQUFBQyxDQUFBLFdBQUErc0IsVUFBQTtVQUFBLGtCQUFBQSxVQUFBLENBQUEzdUIsQ0FBQTtZQUFBO2NBQUEydUIsVUFBQSxDQUFBM3VCLENBQUE7Y0FBQSxPQUN0RDRFLFFBQVEsQ0FBQ29vQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCcHhCLElBQUksR0FBQSt5QixVQUFBLENBQUE3dEIsQ0FBQTtjQUNKa2hCLGFBQXlDLEdBQUc7Z0JBQUM5YyxNQUFNLEVBQUV0SixJQUFJLENBQUNzSjtjQUFNLENBQUM7Y0FBQSxPQUFBeXBCLFVBQUEsQ0FBQTV0QixDQUFBLElBRWhFaWhCLGFBQWE7VUFBQTtRQUFBLEdBQUEwTSxTQUFBO01BQUEsQ0FDckI7TUFBQSxTQUxheEMsMENBQTBDQSxDQUFBMEMsSUFBQTtRQUFBLE9BQUFILDJDQUFBLENBQUFucUIsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBMUMyeUIsMENBQTBDO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDLzNCMUQ7QUFDQTtBQUNBOztBQUd1RDtBQUNSO0FBQ1E7QUFJUztBQUN3RjtBQUFBLElBaUJuSTRDLDZCQUE2QjtFQVVoRCxTQUFBQSw4QkFBWUMsT0FBNkMsRUFBRTtJQUFBM3BDLDJJQUFBLE9BQUEwcEMsNkJBQUE7SUFBQXpwQywySUFBQSxrQkFSdkJ3SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsK0JBQStCLENBQUM7SUFBQTNJLDJJQUFBLHVEQUNzQixJQUFJMnBDLEdBQUcsQ0FBQyxDQUFDO0lBQUEzcEMsMklBQUEsbUNBQy9ELElBQUlOLDREQUFjLENBQUMsQ0FBQztJQUFBTSwySUFBQSx1QkFDaEMsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLDJJQUFBLGdDQUM4QixTQUFTO0lBQUFBLDJJQUFBLHFDQUN2RCxJQUFJO0lBQUFBLDJJQUFBLG9CQUMzQixLQUFLO0lBR2hDLElBQUksQ0FBQ0ssVUFBVSxDQUFDcXBDLE9BQU8sQ0FBQztFQUMxQjtFQUFDLE9BQUFwcEMsd0lBQUEsQ0FBQW1wQyw2QkFBQTtJQUFBbHBDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9HLE9BQU9BLENBQUEsRUFBUztNQUNyQixJQUFJLENBQUN5UCxTQUFTLEdBQUcsSUFBSTtNQUNyQixJQUFJLENBQUN4UCxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQzdCO0VBQUM7SUFBQUwsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUUosVUFBVUEsQ0FBQ3FwQyxPQUE2QyxFQUFRO01BQ3RFLElBQUksQ0FBQyxJQUFJLENBQUNFLGdDQUFnQyxDQUFDRixPQUFPLENBQUMxZ0MsUUFBUSxFQUFFMGdDLE9BQU8sQ0FBQy9qQixLQUFLLEVBQUUrakIsT0FBTyxDQUFDNUssUUFBUSxFQUFFNEssT0FBTyxDQUFDM0ssR0FBRyxDQUFDLEVBQUU7UUFDMUc7TUFDRjtNQUVBLElBQUksQ0FBQzhLLHlCQUF5QixDQUFDSCxPQUFPLENBQUM5WCxZQUFZLEVBQUU4WCxPQUFPLENBQUNJLHFDQUFxQyxDQUFDO01BQ25HLElBQUksQ0FBQ0Msb0NBQW9DLENBQUNMLE9BQU8sQ0FBQy9qQixLQUFLLEVBQUUrakIsT0FBTyxDQUFDM0ssR0FBRyxFQUFFMkssT0FBTyxDQUFDTSxPQUFPLEVBQUVOLE9BQU8sQ0FBQ3pLLHNCQUFzQixFQUFFeUssT0FBTyxDQUFDeEssc0JBQXNCLEVBQUV3SyxPQUFPLENBQUNPLG9DQUFvQyxDQUFDO01BQ3BNUCxPQUFPLENBQUNRLGdCQUFnQixDQUFDenBDLEtBQUssR0FBRyxJQUFJO0lBQ3ZDO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUW1wQyxnQ0FBZ0NBLENBQUM1Z0MsUUFBZ0IsRUFBRTJjLEtBQWlCLEVBQUVtWixRQUF3QixFQUFFQyxHQUFXLEVBQVc7TUFDNUgsSUFBSXBaLEtBQUssS0FBS2thLDBFQUFVLENBQUNHLElBQUksRUFBRTtRQUM3QixJQUFJLENBQUNuMkIsT0FBTyxDQUFDK0ssSUFBSSxDQUFDLHdGQUF3RixFQUFFNUwsUUFBUSxDQUFDO1FBRXJILE9BQU8sS0FBSztNQUNkO01BRUEsSUFBSSxDQUFDODFCLFFBQVEsRUFBRTtRQUNiLElBQUksQ0FBQ2oxQixPQUFPLENBQUMrSyxJQUFJLENBQUMsc0ZBQXNGLEVBQUU1TCxRQUFRLENBQUM7UUFFbkgsT0FBTyxLQUFLO01BQ2Q7TUFFQSxJQUFJLENBQUMrMUIsR0FBRyxFQUFFO1FBQ1IsSUFBSSxDQUFDbDFCLE9BQU8sQ0FBQytLLElBQUksQ0FBQyxpRkFBaUYsRUFBRTVMLFFBQVEsQ0FBQztRQUU5RyxPQUFPLEtBQUs7TUFDZDtNQUVBLE9BQU8sSUFBSTtJQUNiO0VBQUM7SUFBQXpJLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFzcEMsb0NBQW9DQSxDQUFDcGtCLEtBQWlCLEVBQUVvWixHQUFXLEVBQUVpTCxPQUFlLEVBQUUvSyxzQkFBOEMsRUFBRUMsc0JBQWdDLEVBQUUrSyxvQ0FBbUYsRUFBUTtNQUN6UWhMLHNCQUFzQixDQUFDa0wsYUFBYSxDQUFrRFgsaUhBQXdCLENBQUNZLHNCQUFzQixFQUFFLElBQUksQ0FBQ0Msd0JBQXdCLENBQUM3a0MsSUFBSSxDQUFDLElBQUksRUFBRXE2QiwwRUFBVSxDQUFDbGEsS0FBSyxDQUFDLEVBQUVvWixHQUFHLEVBQUdpTCxPQUFPLEVBQUdDLG9DQUFvQyxDQUFDLENBQUM7TUFDelAvSyxzQkFBc0IsQ0FBQ3gxQixJQUFJLENBQUMrL0IsNkJBQTZCLENBQUNhLGNBQWMsQ0FBQztJQUMzRTtFQUFDO0lBQUEvcEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTRwQyx3QkFBd0JBLENBQUMxa0IsS0FBYSxFQUFFb1osR0FBVyxFQUFFaUwsT0FBZSxFQUFFQyxvQ0FBbUYsRUFBRTUyQixPQUErQixFQUFRO01BQ3hNLElBQUksQ0FBQ0EsT0FBTyxFQUFFO1FBQ1o7TUFDRjtNQUVBLFNBQUFtWixFQUFBLE1BQUErZCxlQUFBLEdBQXVDbDBCLE1BQU0sQ0FBQ20wQixPQUFPLENBQUNuM0IsT0FBTyxDQUFDLEVBQUFtWixFQUFBLEdBQUErZCxlQUFBLENBQUE3L0IsTUFBQSxFQUFBOGhCLEVBQUEsSUFBRTtRQUEzRCxJQUFBaWUsa0JBQUEsR0FBQUMsMElBQUEsQ0FBQUgsZUFBQSxDQUFBL2QsRUFBQTtVQUFPbWUsWUFBWSxHQUFBRixrQkFBQTtVQUFFRyxRQUFRLEdBQUFILGtCQUFBO1FBQ2hDLElBQU1JLGtCQUFrQixHQUFHdm5DLFFBQVEsQ0FBQ3FuQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ3JELElBQU05VSw2QkFBNkIsR0FBRytVLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQztRQUUvRSxJQUFJL1UsNkJBQTZCLEVBQUU7VUFBQSxJQUFBaVYscUJBQUEsRUFBQUMsc0JBQUE7VUFDakMsSUFBTUMsc0JBQXFELEdBQUc7WUFDNURDLFFBQVEsR0FBQUgscUJBQUEsR0FBRWpWLDZCQUE2QixDQUFDb1YsUUFBUSxjQUFBSCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7WUFDeERJLGdCQUFnQixHQUFBSCxzQkFBQSxHQUFFbFYsNkJBQTZCLENBQUNxVixnQkFBZ0IsY0FBQUgsc0JBQUEsY0FBQUEsc0JBQUEsR0FBSSxJQUFJO1lBQ3hFbnRCLElBQUksRUFBRSxPQUFPO1lBQ2IrSCxLQUFLLEVBQUxBLEtBQUs7WUFDTG9aLEdBQUcsRUFBSEEsR0FBRztZQUNIaUwsT0FBTyxFQUFQQSxPQUFPO1lBQ1BtQixlQUFlLEVBQUUsSUFBSTtZQUNyQkMsZUFBZSxFQUFFLElBQUk7WUFDckJDLGVBQWUsRUFBRSxJQUFJO1lBQ3JCQyxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCQyxhQUFhLEVBQUUsSUFBSSxDQUFDQztVQUN0QixDQUFDO1VBRUR2QixvQ0FBb0MsQ0FBQ3hwQyxLQUFLLEdBQUd1cUMsc0JBQXNCO1VBRW5FLElBQUksSUFBSSxDQUFDUSxxQkFBcUIsS0FBSyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxDQUFDQyw0Q0FBNEMsQ0FBQzN5QixHQUFHLENBQUMreEIsa0JBQWtCLEVBQUVHLHNCQUFzQixDQUFDO1VBQ25HO1FBQ0Y7TUFDRjtJQUNGO0VBQUM7SUFBQXpxQyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRb3BDLHlCQUF5QkEsQ0FBQzZCLG1CQUFxRCxFQUFFNUIscUNBQXFGLEVBQVE7TUFBQSxJQUFBaHBDLEtBQUE7TUFDcEwsSUFBSSxDQUFDRCxZQUFZLENBQUNNLEdBQUcsQ0FBQyxJQUFJMUIsd0RBQVUsQ0FBQztRQUFBLE9BQU1xQixLQUFJLENBQUMycUMsNENBQTRDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUEsRUFBQyxDQUFDO01BQ3RHLElBQUksQ0FBQzlxQyxZQUFZLENBQUNNLEdBQUcsQ0FBQyxJQUFJLENBQUN5cUMsd0JBQXdCLENBQUM7TUFDcEQsSUFBSSxDQUFDL3FDLFlBQVksQ0FBQ00sR0FBRyxDQUFDdXFDLG1CQUFtQixDQUFDejdCLFNBQVMsQ0FBQyxVQUFBMmhCLFlBQVksRUFBSTtRQUNsRTl3QixLQUFJLENBQUM4cUMsd0JBQXdCLENBQUNockMsT0FBTyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDZ3hCLFlBQVksRUFBRTtVQUNqQjtRQUNGO1FBRUE5d0IsS0FBSSxDQUFDK3FDLHdCQUF3QixDQUFDamEsWUFBWSxFQUFFa1kscUNBQXFDLENBQUM7TUFDcEYsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUFDO0lBQUF2cEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUXFyQyx3QkFBd0JBLENBQUNsYSxZQUE4QixFQUFFa1kscUNBQXFGLEVBQUU1cEMsR0FBd0IsRUFBRTBxQyxRQUFvQyxFQUFRO01BQzVOLElBQUksSUFBSSxDQUFDdjZCLFNBQVMsRUFBRTtRQUNsQjtNQUNGOztNQUVBO01BQ0EsSUFBSSxDQUFDMDdCLHNCQUFzQixDQUFDbmEsWUFBWSxFQUFFa1kscUNBQXFDLENBQUM7TUFFaEYsSUFBTWEsWUFBWSxHQUFHQyxRQUFRLENBQUNELFlBQVk7TUFFMUMsSUFBSSxDQUFDQSxZQUFZLEVBQUU7UUFDakI7UUFDQTtRQUNBO01BQ0Y7TUFFQSxJQUFNcUIsa0JBQWtDLEdBQUcsRUFBRTtNQUFDLElBQUFDLFNBQUEsR0FBQUMsMEJBQUEsQ0FFUCxJQUFJLENBQUNULDRDQUE0QztRQUFBVSxLQUFBO01BQUE7UUFBeEYsS0FBQUYsU0FBQSxDQUFBRyxDQUFBLE1BQUFELEtBQUEsR0FBQUYsU0FBQSxDQUFBdHhCLENBQUEsSUFBQW1CLElBQUEsR0FBMEY7VUFBQSxJQUFBdXdCLFdBQUEsR0FBQTNCLDBJQUFBLENBQUF5QixLQUFBLENBQUExckMsS0FBQTtZQUE5RXFkLFVBQVMsR0FBQXV1QixXQUFBO1lBQUVDLFdBQVcsR0FBQUQsV0FBQTtVQUNoQyxJQUFJdnVCLFVBQVMsR0FBRzZzQixZQUFZLEVBQUU7WUFDNUI7VUFDRjtVQUVBYixxQ0FBcUMsQ0FBQ3JwQyxLQUFLLEdBQUFxbkMsYUFBQSxDQUFBQSxhQUFBLEtBQ3RDd0UsV0FBVztZQUNkQyxlQUFlLEVBQUUsSUFBSXRzQyxJQUFJLENBQUN1c0MsV0FBVyxDQUFDQyxVQUFVLEdBQUd2c0MsR0FBRyxDQUFDO1lBQ3ZEcXJDLGFBQWEsRUFBRTtVQUFTLEVBQ3pCO1VBRURTLGtCQUFrQixDQUFDdGlDLElBQUksQ0FBQ29VLFVBQVMsQ0FBQztRQUNwQztNQUFDLFNBQUE0dUIsR0FBQTtRQUFBVCxTQUFBLENBQUFuaEMsQ0FBQSxDQUFBNGhDLEdBQUE7TUFBQTtRQUFBVCxTQUFBLENBQUE1d0IsQ0FBQTtNQUFBO01BRUQsU0FBQXN4QixHQUFBLE1BQUFDLG1CQUFBLEdBQXdCWixrQkFBa0IsRUFBQVcsR0FBQSxHQUFBQyxtQkFBQSxDQUFBbGlDLE1BQUEsRUFBQWlpQyxHQUFBLElBQUU7UUFBdkMsSUFBTTd1QixTQUFTLEdBQUE4dUIsbUJBQUEsQ0FBQUQsR0FBQTtRQUNsQixJQUFJLENBQUNsQiw0Q0FBNEMsQ0FBQ29CLE1BQU0sQ0FBQy91QixTQUFTLENBQUM7TUFDckU7SUFDRjtFQUFDO0lBQUF2ZCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRb3JDLHdCQUF3QkEsQ0FBQ2phLFlBQThCLEVBQUVrWSxxQ0FBcUYsRUFBUTtNQUFBLElBQUF2MEIsTUFBQTtNQUM1SixJQUFNdTNCLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFBO1FBQUEsT0FBU3YzQixNQUFJLENBQUNpMkIscUJBQXFCLEdBQUcsU0FBUztNQUFBO01BRTlENVosWUFBWSxDQUFDM3BCLGdCQUFnQixDQUFDLFNBQVMsRUFBRTZrQyxTQUFTLENBQUM7TUFDbkQsSUFBSSxDQUFDbEIsd0JBQXdCLENBQUN6cUMsR0FBRyxDQUFDLElBQUkxQix3REFBVSxDQUFDO1FBQUEsT0FBTW15QixZQUFZLENBQUN6cEIsbUJBQW1CLENBQUMsU0FBUyxFQUFFMmtDLFNBQVMsQ0FBQztNQUFBLEVBQUMsQ0FBQztNQUUvRyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQTtRQUFBLE9BQVN4M0IsTUFBSSxDQUFDaTJCLHFCQUFxQixHQUFHLFFBQVE7TUFBQTtNQUUzRDVaLFlBQVksQ0FBQzNwQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU4a0MsT0FBTyxDQUFDO01BQy9DLElBQUksQ0FBQ25CLHdCQUF3QixDQUFDenFDLEdBQUcsQ0FBQyxJQUFJMUIsd0RBQVUsQ0FBQztRQUFBLE9BQU1teUIsWUFBWSxDQUFDenBCLG1CQUFtQixDQUFDLE9BQU8sRUFBRTRrQyxPQUFPLENBQUM7TUFBQSxFQUFDLENBQUM7TUFFM0csSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVNBLENBQUE7UUFBQSxPQUFTejNCLE1BQUksQ0FBQ2kyQixxQkFBcUIsR0FBRyxTQUFTO01BQUE7TUFFOUQ1WixZQUFZLENBQUMzcEIsZ0JBQWdCLENBQUMsU0FBUyxFQUFFK2tDLFNBQVMsQ0FBQztNQUNuRCxJQUFJLENBQUNwQix3QkFBd0IsQ0FBQ3pxQyxHQUFHLENBQUMsSUFBSTFCLHdEQUFVLENBQUM7UUFBQSxPQUFNbXlCLFlBQVksQ0FBQ3pwQixtQkFBbUIsQ0FBQyxTQUFTLEVBQUU2a0MsU0FBUyxDQUFDO01BQUEsRUFBQyxDQUFDO01BRS9HLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFBO1FBQUEsT0FBUzEzQixNQUFJLENBQUNpMkIscUJBQXFCLEdBQUcsU0FBUztNQUFBO01BRTlENVosWUFBWSxDQUFDM3BCLGdCQUFnQixDQUFDLFNBQVMsRUFBRWdsQyxTQUFTLENBQUM7TUFDbkQsSUFBSSxDQUFDckIsd0JBQXdCLENBQUN6cUMsR0FBRyxDQUFDLElBQUkxQix3REFBVSxDQUFDO1FBQUEsT0FBTW15QixZQUFZLENBQUN6cEIsbUJBQW1CLENBQUMsU0FBUyxFQUFFOGtDLFNBQVMsQ0FBQztNQUFBLEVBQUMsQ0FBQztNQUUvRyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQTtRQUFBLE9BQVMzM0IsTUFBSSxDQUFDaTJCLHFCQUFxQixHQUFHLE9BQU87TUFBQTtNQUUxRDVaLFlBQVksQ0FBQzNwQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVpbEMsT0FBTyxDQUFDO01BQy9DLElBQUksQ0FBQ3RCLHdCQUF3QixDQUFDenFDLEdBQUcsQ0FBQyxJQUFJMUIsd0RBQVUsQ0FBQztRQUFBLE9BQU1teUIsWUFBWSxDQUFDenBCLG1CQUFtQixDQUFDLE9BQU8sRUFBRStrQyxPQUFPLENBQUM7TUFBQSxFQUFDLENBQUM7TUFFM0csSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUE7UUFBQSxPQUFTNTNCLE1BQUksQ0FBQ2kyQixxQkFBcUIsR0FBRyxPQUFPO01BQUE7TUFFMUQ1WixZQUFZLENBQUMzcEIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFa2xDLE9BQU8sQ0FBQztNQUMvQyxJQUFJLENBQUN2Qix3QkFBd0IsQ0FBQ3pxQyxHQUFHLENBQUMsSUFBSTFCLHdEQUFVLENBQUM7UUFBQSxPQUFNbXlCLFlBQVksQ0FBQ3pwQixtQkFBbUIsQ0FBQyxPQUFPLEVBQUVnbEMsT0FBTyxDQUFDO01BQUEsRUFBQyxDQUFDO01BRTNHLElBQUksQ0FBQ3BCLHNCQUFzQixDQUFDbmEsWUFBWSxFQUFFa1kscUNBQXFDLENBQUM7TUFDaEYsSUFBSSxDQUFDOEIsd0JBQXdCLENBQUN6cUMsR0FBRyxDQUFDLElBQUkxQix3REFBVSxDQUFDLFlBQU07UUFDckQsSUFBSThWLE1BQUksQ0FBQzYzQiwwQkFBMEIsRUFBRTtVQUNuQ3hiLFlBQVksQ0FBQ3liLHdCQUF3QixDQUFDOTNCLE1BQUksQ0FBQzYzQiwwQkFBMEIsQ0FBQztRQUN4RTtNQUNGLENBQUMsQ0FDRCxDQUFDO0lBQ0g7RUFBQztJQUFBN3NDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFzckMsc0JBQXNCQSxDQUFDbmEsWUFBOEIsRUFBRWtZLHFDQUFxRixFQUFRO01BQzFKLElBQUksQ0FBQ2xZLFlBQVksQ0FBQ3JrQix5QkFBeUIsRUFBRTtRQUMzQztNQUNGO01BRUEsSUFBSSxDQUFDNi9CLDBCQUEwQixHQUFHeGIsWUFBWSxDQUFDcmtCLHlCQUF5QixDQUFDLElBQUksQ0FBQ3UrQix3QkFBd0IsQ0FBQ3RtQyxJQUFJLENBQUMsSUFBSSxFQUFFb3NCLFlBQVksRUFBRWtZLHFDQUFxQyxDQUFDLENBQUM7SUFDeks7RUFBQztBQUFBO0FBQUE5cEMsMklBQUEsQ0ExTGtCeXBDLDZCQUE2QixvQkFDUCwwQkFBMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlCckU7QUFDQTtBQUNBOztBQUV3RDtBQUVUO0FBQ0E7QUFDUTtBQUNBO0FBQ0g7QUFDQTtBQUtOO0FBQ3NCO0FBQUEsSUFFL0NnRSxhQUFhO0VBVWhDLFNBQUFBLGNBQVlDLGNBQThCLEVBQUVDLHlCQUFvRCxFQUFFM1MsbUJBQXdDLEVBQUU7SUFBQWo3QiwySUFBQSxPQUFBMHRDLGFBQUE7SUFBQXp0QywySUFBQSxrQkFUeEd3SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQUEzSSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQSx1QkFHNUMsSUFBSU4sNERBQWMsQ0FBQyxDQUFDO0lBQUFNLDJJQUFBLDhCQUNiLElBQUlOLDREQUFjLENBQUMsQ0FBQztJQUFBTSwySUFBQTtJQUFBQSwySUFBQSw0QkFFSSxJQUFJO0lBQUFBLDJJQUFBLCtCQUNwQyxDQUFDO0lBRzlCLElBQUksQ0FBQ3l5QixlQUFlLEdBQUdpYixjQUFjO0lBQ3JDLElBQUksQ0FBQ0UsMEJBQTBCLEdBQUdELHlCQUF5QjtJQUMzRCxJQUFJLENBQUN0UixvQkFBb0IsR0FBR3JCLG1CQUFtQjtJQUMvQyxJQUFJLENBQUN2SSxlQUFlLENBQUNrRixXQUFXLENBQUN4MkIsR0FBRyxDQUFDLElBQUksQ0FBQztFQUM1QztFQUFDLE9BQUFiLHdJQUFBLENBQUFtdEMsYUFBQTtJQUFBbHRDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF5MkIsS0FBS0EsQ0FBQzdyQixHQUFRLEVBQUVqQixLQUFhLEVBQStCO01BQUEsSUFBQXRKLEtBQUE7TUFDMUQsT0FBT3l3Qiw0REFBUyxDQUFDNFAsa0NBQWtDLENBQUM5MUIsR0FBRyxDQUFDLENBQ3JEaVMsSUFBSSxDQUFDLFVBQUF5WCxRQUFRLEVBQUk7UUFDaEJqMEIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ21CLE1BQU0sQ0FBQ256QixLQUFLLEdBQUcsSUFBSTtRQUN4Q0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLEdBQUdzMEIsUUFBUTtRQUM5Q2owQixLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyxvQkFBb0IsRUFBRWlyQixRQUFRLENBQUNya0IsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUU1RCxPQUFPcWtCLFFBQVEsQ0FBQzlrQixTQUFTLENBQUM3RixLQUFLLEVBQUUsSUFBSSxFQUFFdEosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQ3AwQixLQUFLLENBQUM7TUFDakYsQ0FBQyxDQUFDLENBQ0Q2YyxJQUFJLENBQUMsVUFBQWlDLFFBQVEsRUFBSTtRQUFBLElBQUFzdUIscUJBQUE7UUFDaEIsSUFBT2h1QixNQUFNLEdBQUlOLFFBQVEsQ0FBbEJNLE1BQU07UUFDYixJQUFNa1YsUUFBUSxHQUFHajBCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNzQyxRQUFRLENBQUN0MEIsS0FBSztRQUVwRCxJQUFJLENBQUNzMEIsUUFBUSxFQUFFO1VBQ2JqMEIsS0FBSSxDQUFDK0ksT0FBTyxDQUFDUyxLQUFLLENBQUMsZ0RBQWdELENBQUM7VUFDcEV4SixLQUFJLENBQUMyeEIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDcnpCLEtBQUssR0FBRyxLQUFLO1VBQzFDSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO1VBQzFDSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLDhEQUFZLENBQUMxckIsS0FBSztVQUVyRDtRQUNGO1FBRUFuRSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDUyxNQUFNLENBQUN6eUIsS0FBSyxHQUFHSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDa00sMEJBQTBCLENBQUM5ZSxNQUFNLENBQUM7UUFDM0YvZSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDaU0saUNBQWlDLENBQUM3ZSxNQUFNLENBQUM7UUFFakcvZSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDK0wsV0FBVyxDQUFDM2UsTUFBTSxDQUFDO1FBRXhDLElBQUlBLE1BQU0sS0FBSyxJQUFJLEVBQUU7VUFDbkIvZSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDd0MsTUFBTSxDQUFDeDBCLEtBQUssR0FBRyxJQUFJO1VBQ3hDSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDOEIsR0FBRyxDQUFDOXpCLEtBQUssR0FBRzRGLFNBQVM7VUFFMUN2RixLQUFJLENBQUMyeEIsZUFBZSxDQUFDZ00sNkNBQTZDLENBQUMsQ0FBQztVQUVwRTM5QixLQUFJLENBQUMrSSxPQUFPLENBQUN3SyxLQUFLLENBQ2hCLHdDQUF3QyxFQUN4Q3ZULEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUM3QjZXLE1BQ0YsQ0FBQztVQUVEO1FBQ0Y7UUFFQSxJQUFPb1YsTUFBTSxHQUF5QzFWLFFBQVEsQ0FBdkQwVixNQUFNO1VBQUV3Uyw4QkFBOEIsR0FBU2xvQixRQUFRLENBQS9Da29CLDhCQUE4QjtVQUFFbFQsR0FBRyxHQUFJaFYsUUFBUSxDQUFmZ1YsR0FBRztRQUVsRHp6QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDd0MsTUFBTSxDQUFDeDBCLEtBQUssR0FBR3cwQixNQUFNO1FBQzFDbjBCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM4QixHQUFHLENBQUM5ekIsS0FBSyxHQUFHOHpCLEdBQUc7UUFFcEN6ekIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ2dNLDZDQUE2QyxDQUFDLENBQUM7UUFFcEUzOUIsS0FBSSxDQUFDK0ksT0FBTyxDQUFDd0ssS0FBSyxDQUNoQixvQ0FBb0MsRUFDcEN2VCxLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFDN0I2VyxNQUFNLEVBQ040bkIsOEJBQ0YsQ0FBQztRQUVELElBQU1xRyxRQUFRLEdBQUdyRyw4QkFBOEIsYUFBOUJBLDhCQUE4Qix3QkFBQW9HLHFCQUFBLEdBQTlCcEcsOEJBQThCLENBQUV2RCxrQkFBa0IsY0FBQTJKLHFCQUFBLHVCQUFsREEscUJBQUEsQ0FBb0QzcEIsR0FBRztRQUN4RSxJQUFNeEMsT0FBZ0MsR0FBRztVQUN2Q3FzQixlQUFlLEVBQUU5dEMsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHcTBCLEdBQUcsR0FBSVEsUUFBUSxDQUFDelAsYUFBYSxHQUFJLENBQUM7VUFDaEVpUCxHQUFHLEVBQUVBO1FBQ1AsQ0FBQztRQUVELElBQUksQ0FBQ3p6QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxFQUFFO1VBQzVDSyxLQUFJLENBQUMrSSxPQUFPLENBQUNTLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQztVQUNoRXhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLEtBQUs7VUFDMUNLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLEtBQUs7VUFDMUNLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0IsOERBQVksQ0FBQzBGLE9BQU87VUFFdkQ7UUFDRjtRQUVBLElBQUksQ0FBQ3lYLFFBQVEsRUFBRTtVQUNiaHRDLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHdDQUF3QyxDQUFDO1VBQzVEeEosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3J6QixLQUFLLEdBQUcsS0FBSztVQUMxQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQ3Z6QixLQUFLLEdBQUcsS0FBSztVQUMxQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3Qiw4REFBWSxDQUFDMXJCLEtBQUs7VUFFckQ7UUFDRjtRQUVBLE9BQU9xb0MsK0RBQWdCLENBQUNwVyxLQUFLLENBQUNwMkIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssRUFBRUssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3pwQixRQUFRLEVBQUU4a0MsUUFBUSxFQUFFcHNCLE9BQU8sRUFBRTtVQUFBLE9BQU01Z0IsS0FBSSxDQUFDa3RDLG9CQUFvQixDQUFDLENBQUM7UUFBQSxFQUFDLENBQ3hKMXdCLElBQUksQ0FBQyxVQUFBMndCLE1BQU0sRUFBSTtVQUNkbnRDLEtBQUksQ0FBQ290QyxPQUFPLENBQUNELE1BQU0sQ0FBQztVQUVwQm50QyxLQUFJLENBQUNELFlBQVksQ0FBQ00sR0FBRyxDQUFDOHNDLE1BQU0sQ0FBQztVQUU3QixPQUFPQSxNQUFNO1FBQ2YsQ0FBQyxDQUFDLENBQ0RydUIsS0FBSyxDQUFDLFVBQUE5VSxDQUFDLEVBQUk7VUFDVmhLLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHlCQUF5QixFQUFFUSxDQUFDLENBQUM7VUFDaERoSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDcnpCLEtBQUssR0FBRyxLQUFLO1VBQzFDSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO1VBQzFDSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLDhEQUFZLENBQUMwRixPQUFPO1FBQ3pELENBQUMsQ0FBQztNQUNOLENBQUMsQ0FBQztJQUNOO0VBQUM7SUFBQTkxQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRdXRDLG9CQUFvQkEsQ0FBQSxFQUFTO01BQUEsSUFBQXo0QixNQUFBO01BQ25DLElBQUksQ0FBQzQ0QixvQkFBb0IsR0FBRyxDQUFDO01BQzdCLElBQUksQ0FBQzFiLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3Qiw4REFBWSxDQUFDeUwsZUFBZTtNQUUvRCxJQUFJLENBQUMzSixlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLEtBQUs7TUFDMUMsSUFBSSxDQUFDZ3lCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3J6QixLQUFLLEdBQUcsSUFBSTtNQUN6QyxJQUFJLENBQUNJLFlBQVksQ0FBQ0QsT0FBTyxDQUFDLENBQUM7TUFDM0IsSUFBSSxDQUFDd3RDLG1CQUFtQixDQUFDeHRDLE9BQU8sQ0FBQyxDQUFDO01BRWxDLElBQU1xZCxPQUFPLEdBQUcsSUFBSSxDQUFDb2Usb0JBQW9CLENBQUMsQ0FBQyxDQUN4Q3pjLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO1FBQ1Z5SyxNQUFJLENBQUMxTCxPQUFPLENBQUNTLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRVEsQ0FBQyxDQUFDO01BQ3pELENBQUMsQ0FBQztJQUNOO0VBQUM7SUFBQXZLLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVF5dEMsT0FBT0EsQ0FBQ0QsTUFBbUIsRUFBUTtNQUFBLElBQUFuakIsTUFBQTtNQUN6QyxJQUFJLENBQUNzakIsbUJBQW1CLENBQUN4dEMsT0FBTyxDQUFDLENBQUM7TUFFbEMsSUFBTWtoQyxPQUFPLEdBQUd0aUMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQyxZQUFNO1FBQUEsSUFBQTRvQyxxQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtRQUNqRCxJQUFNQyxtQkFBbUIsR0FBR3BCLCtEQUFnQixDQUFDbm9CLFFBQVEsQ0FBQyxDQUFDO1FBRXZELElBQUkyRixNQUFJLENBQUM4aUIsMEJBQTBCLEtBQUtKLG1FQUF5QixDQUFDbUIsSUFBSSxJQUNqRSxDQUFBRCxtQkFBbUIsYUFBbkJBLG1CQUFtQix1QkFBbkJBLG1CQUFtQixDQUFFRSxZQUFZLE1BQUtyQiwwREFBYSxDQUFDc0IsZUFBZSxJQUNuRSxFQUFBUixxQkFBQSxHQUFBdmpCLE1BQUksQ0FBQzJILGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssY0FBQTR0QyxxQkFBQSx1QkFBdkNBLHFCQUFBLENBQXlDUyxXQUFXLFFBQUFSLHNCQUFBLEdBQUt4akIsTUFBSSxDQUFDMkgsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxjQUFBNnRDLHNCQUFBLHVCQUF2Q0Esc0JBQUEsQ0FBeUNTLFFBQVEsR0FDN0c7VUFDQWprQixNQUFJLENBQUNrakIsb0JBQW9CLENBQUMsQ0FBQztVQUUzQjtRQUNGO1FBRUEsSUFBSWxqQixNQUFJLENBQUNra0IsaUJBQWlCLElBQ3hCLEdBQUFULHNCQUFBLEdBQUN6akIsTUFBSSxDQUFDMkgsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxjQUFBOHRDLHNCQUFBLGVBQXZDQSxzQkFBQSxDQUF5Q1UsTUFBTSxLQUM3Q1AsbUJBQW1CLGFBQW5CQSxtQkFBbUIsZUFBbkJBLG1CQUFtQixDQUFFSSxXQUFXLElBQUloa0IsTUFBSSxDQUFDa2tCLGlCQUFpQixDQUFDRixXQUFXLElBQUlKLG1CQUFtQixDQUFDSSxXQUFZLEtBQzFHLEVBQUNKLG1CQUFtQixhQUFuQkEsbUJBQW1CLGVBQW5CQSxtQkFBbUIsQ0FBRVEsWUFBWSxLQUFJcGtCLE1BQUksQ0FBQ2trQixpQkFBaUIsQ0FBQ0UsWUFBWSxJQUFJUixtQkFBbUIsQ0FBQ1EsWUFBWSxDQUFDLEVBQ2pIO1VBQ0Fwa0IsTUFBSSxDQUFDcWpCLG9CQUFvQixFQUFFO1VBRTNCLElBQUlyakIsTUFBSSxDQUFDcWpCLG9CQUFvQixHQUFHLENBQUMsRUFBRTtZQUNqQ3JqQixNQUFJLENBQUNrakIsb0JBQW9CLENBQUMsQ0FBQztZQUUzQjtVQUNGO1FBQ0YsQ0FBQyxNQUFNO1VBQ0xsakIsTUFBSSxDQUFDcWpCLG9CQUFvQixHQUFHLENBQUM7UUFDL0I7UUFFQSxJQUFJLENBQUFLLHNCQUFBLEdBQUExakIsTUFBSSxDQUFDMkgsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxjQUFBK3RDLHNCQUFBLGVBQXZDQSxzQkFBQSxDQUF5Q1MsTUFBTSxJQUFJbmtCLE1BQUksQ0FBQzJILGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssS0FBS2t3Qiw4REFBWSxDQUFDNkYsT0FBTyxFQUFFO1VBQ2hIMUwsTUFBSSxDQUFDMkgsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLDhEQUFZLENBQUNzTCxNQUFNO1FBQ3hEO1FBRUEsSUFBSSxHQUFBd1Msc0JBQUEsR0FBQzNqQixNQUFJLENBQUMySCxlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLGNBQUFndUMsc0JBQUEsZUFBdkNBLHNCQUFBLENBQXlDUSxNQUFNLEtBQUlua0IsTUFBSSxDQUFDMkgsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxLQUFLa3dCLDhEQUFZLENBQUM2RixPQUFPLEVBQUU7VUFDakgxTCxNQUFJLENBQUMySCxlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0IsOERBQVksQ0FBQzZGLE9BQU87UUFDekQ7UUFFQTFMLE1BQUksQ0FBQ2trQixpQkFBaUIsR0FBR04sbUJBQW1CO1FBRTVDNWpCLE1BQUksQ0FBQ29qQixPQUFPLENBQUNELE1BQU0sQ0FBQztNQUN0QixDQUFDLEVBQUUsSUFBSSxDQUFDO01BRVIsSUFBSSxDQUFDRyxtQkFBbUIsQ0FBQ2p0QyxHQUFHLENBQUMsSUFBSTFCLHdEQUFVLENBQUMsWUFBTTtRQUNoREQsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3lPLFlBQVksQ0FBQzR5QixPQUFPLENBQUM7TUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUFDO0lBQUF2aEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUcsT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDQyxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO01BQzNCLElBQUksQ0FBQ3d0QyxtQkFBbUIsQ0FBQ3h0QyxPQUFPLENBQUMsQ0FBQztJQUNwQztFQUFDO0FBQUE7Ozs7Ozs7Ozs7OztBQ3hNSDtBQUNBO0FBQ0E7QUFGQSxJQUlLNHNDLHlCQUF5QiwwQkFBekJBLHlCQUF5QjtFQUF6QkEseUJBQXlCLENBQXpCQSx5QkFBeUI7RUFBekJBLHlCQUF5QixDQUF6QkEseUJBQXlCO0VBQUEsT0FBekJBLHlCQUF5QjtBQUFBLEVBQXpCQSx5QkFBeUI7QUFLOUIsK0RBQWVBLHlCQUF5QixFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDUnhDLHVLQUFBMWlDLENBQUEsRUFBQTBQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBek4sU0FBQSxZQUFBK04sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUE5TixTQUFBLFVBQUFrTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQTNRLENBQUEsRUFBQTRRLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQW5XLElBQUEsQ0FBQXNGLENBQUEsTUFBQTZRLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUFwUSxDQUFBLEVBQUEwUSxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUE1USxNQUFBLEVBQUE4UCxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFqUSxDQUFBLElBQUFpUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUFsUSxDQUFBLEdBQUFvUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUEvWixLQUFBLEVBQUF1YSxDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFnQixNQUFBLEtBQUF2QixDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFqUSxDQUFBLGNBQUEwUCxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBbEssSUFBQSxDQUFBb0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQWpRLENBQUEsRUFBQWtRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUE1YSxLQUFBLEVBQUErWixDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFlLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF6QixDQUFBLEdBQUFuRSxNQUFBLENBQUE2RixjQUFBLE1BQUFsQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWUsMEJBQUEsQ0FBQS9PLFNBQUEsR0FBQStOLFNBQUEsQ0FBQS9OLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBdlEsQ0FBQSxXQUFBdUwsTUFBQSxDQUFBOEYsY0FBQSxHQUFBOUYsTUFBQSxDQUFBOEYsY0FBQSxDQUFBclIsQ0FBQSxFQUFBbVIsMEJBQUEsS0FBQW5SLENBQUEsQ0FBQXNSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQStQLENBQUEseUJBQUEvUCxDQUFBLENBQUFvQyxTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFELENBQUEsR0FBQXBRLENBQUEsV0FBQWtSLGlCQUFBLENBQUE5TyxTQUFBLEdBQUErTywwQkFBQSxFQUFBYixtQkFBQSxDQUFBRixDQUFBLGlCQUFBZSwwQkFBQSxHQUFBYixtQkFBQSxDQUFBYSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWpCLG1CQUFBLENBQUFhLDBCQUFBLEVBQUFwQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBb0IsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXhCLENBQUEsRUFBQXlCLENBQUEsRUFBQW5CLENBQUE7QUFBQSxTQUFBRCxvQkFBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQTFFLE1BQUEsQ0FBQW9HLGNBQUEsUUFBQTFCLENBQUEsdUJBQUFqUSxDQUFBLElBQUFpUSxDQUFBLFFBQUFLLG1CQUFBLFlBQUFzQixtQkFBQTVSLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxZQUFBM1AsQ0FBQSxnQkFBQTZSLE9BQUEsQ0FBQWxDLENBQUEsRUFBQUUsQ0FBQSxFQUFBN1AsQ0FBQSxTQUFBMlAsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWpRLENBQUEsRUFBQTJQLENBQUEsSUFBQWhhLEtBQUEsRUFBQWthLENBQUEsRUFBQWlDLFVBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFlBQUEsR0FBQXJDLENBQUEsRUFBQXNDLFFBQUEsR0FBQXRDLENBQUEsTUFBQTFQLENBQUEsQ0FBQTJQLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBOztBQUVvRTtBQUNoQztBQUNYO0FBQ2U7QUFDSjtBQVU3QixJQUFNOHlCLGdCQUFnQjtFQUFBLFNBQUFBLGlCQUFBO0lBQUF2dEMsMklBQUEsT0FBQXV0QyxnQkFBQTtFQUFBO0VBQUEsT0FBQWh0Qyx3SUFBQSxDQUFBZ3RDLGdCQUFBO0lBQUEvc0MsR0FBQTtJQUFBQyxHQUFBLEVBUTNCLFNBQUFBLElBQUEsRUFBc0M7TUFDcEMsT0FBTyxJQUFJLENBQUM4dUMsVUFBVTtJQUN4QjtFQUFDO0lBQUEvdUMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPLElBQUksQ0FBQyt1QyxnQkFBZ0I7SUFDOUI7RUFBQztJQUFBaHZDLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBb0M7TUFDbEMsT0FBTyxJQUFJLENBQUNndkMsTUFBTTtJQUNwQjtFQUFDO0lBQUFqdkMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXU0QixNQUFBLEdBQUF6YSw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQWdDLFFBQW1Cb1QsWUFBOEIsRUFBRTVvQixRQUFnQixFQUFFOGtDLFFBQWdCLEVBQUVwc0IsT0FBZ0MsRUFBRXNaLG1CQUE2QjtRQUFBLElBQUFsNkIsS0FBQTtRQUFBLE9BQUF3YixZQUFBLEdBQUFDLENBQUEsV0FBQW9DLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBaEUsQ0FBQTtZQUFBO2NBQ3BKLElBQUksQ0FBQzgwQixRQUFRLEdBQUcvdEIsT0FBTztjQUFDLE1BRXBCLElBQUksQ0FBQzR0QixVQUFVLElBQUksSUFBSSxDQUFDRSxNQUFNLElBQUksSUFBSSxDQUFDRCxnQkFBZ0I7Z0JBQUE1d0IsUUFBQSxDQUFBaEUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWdFLFFBQUEsQ0FBQWpELENBQUEsSUFDbEQsSUFBSSxDQUFDZzBCLE1BQU0sQ0FBQzlkLFlBQVksRUFBRTVvQixRQUFRLEVBQUU4a0MsUUFBUSxFQUFFOVMsbUJBQW1CLENBQUM7WUFBQTtjQUFBLE1BR3ZFLENBQUN6eUIsNENBQUcsQ0FBQ3VuQixlQUFlLElBQUksQ0FBQ3ZuQiw0Q0FBRyxDQUFDd25CLGlCQUFpQixJQUFJLENBQUN4bkIsNENBQUcsQ0FBQ3luQixXQUFXO2dCQUFBclIsUUFBQSxDQUFBaEUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsTUFDOUQsSUFBSTFWLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztZQUFBO2NBQUEsT0FBQTBaLFFBQUEsQ0FBQWpELENBQUEsSUFHcEQsSUFBSXlDLE9BQU8sQ0FBYyxVQUFBd0wsT0FBTyxFQUFJO2dCQUN6QyxJQUFJcGhCLDRDQUFHLENBQUN5bkIsV0FBVyxFQUFFO2tCQUNuQmx2QixLQUFJLENBQUM2dUMsUUFBUSxHQUFHLElBQUk7a0JBQ3BCcG5DLDRDQUFHLENBQUN5bkIsV0FBVyxDQUFDLFVBQUNpZSxNQUFxQixFQUFXO29CQUMvQ250QyxLQUFJLENBQUN3dUMsVUFBVSxHQUFHckIsTUFBTTtvQkFFeEIsSUFBSW50QyxLQUFJLENBQUM2dUMsUUFBUSxFQUFFO3NCQUNqQjd1QyxLQUFJLENBQUM2dUMsUUFBUSxHQUFHLEtBQUs7c0JBRXJCaG1CLE9BQU8sQ0FBQzdvQixLQUFJLENBQUM0dUMsTUFBTSxDQUFDOWQsWUFBWSxFQUFFNW9CLFFBQVEsRUFBRThrQyxRQUFRLEVBQUU5UyxtQkFBbUIsQ0FBQyxDQUFDO29CQUM3RTtrQkFDRixDQUFDLENBQUM7Z0JBQ0o7Z0JBRUEsSUFBSXp5Qiw0Q0FBRyxDQUFDdW5CLGVBQWUsRUFBRTtrQkFDdkJodkIsS0FBSSxDQUFDNnVDLFFBQVEsR0FBRyxJQUFJO2tCQUNwQnBuQyw0Q0FBRyxDQUFDdW5CLGVBQWUsQ0FBQyxVQUFDbWUsTUFBcUIsRUFBVztvQkFDbkRudEMsS0FBSSxDQUFDeXVDLGdCQUFnQixHQUFHdEIsTUFBTTtvQkFFOUIsSUFBSW50QyxLQUFJLENBQUM2dUMsUUFBUSxFQUFFO3NCQUNqQjd1QyxLQUFJLENBQUM2dUMsUUFBUSxHQUFHLEtBQUs7c0JBRXJCaG1CLE9BQU8sQ0FBQzdvQixLQUFJLENBQUM0dUMsTUFBTSxDQUFDOWQsWUFBWSxFQUFFNW9CLFFBQVEsRUFBRThrQyxRQUFRLEVBQUU5UyxtQkFBbUIsQ0FBQyxDQUFDO29CQUM3RTtrQkFDRixDQUFDLENBQUM7Z0JBQ0o7Z0JBRUEsSUFBSXp5Qiw0Q0FBRyxDQUFDd25CLGlCQUFpQixFQUFFO2tCQUN6Qmp2QixLQUFJLENBQUM2dUMsUUFBUSxHQUFHLElBQUk7a0JBQ3BCcG5DLDRDQUFHLENBQUN3bkIsaUJBQWlCLENBQUMsVUFBQ2tlLE1BQXVCLEVBQVc7b0JBQ3ZEbnRDLEtBQUksQ0FBQzB1QyxNQUFNLEdBQUd2QixNQUFNO29CQUVwQixJQUFJbnRDLEtBQUksQ0FBQzZ1QyxRQUFRLEVBQUU7c0JBQ2pCN3VDLEtBQUksQ0FBQzZ1QyxRQUFRLEdBQUcsS0FBSztzQkFFckJobUIsT0FBTyxDQUFDN29CLEtBQUksQ0FBQzR1QyxNQUFNLENBQUM5ZCxZQUFZLEVBQUU1b0IsUUFBUSxFQUFFOGtDLFFBQVEsRUFBRTlTLG1CQUFtQixDQUFDLENBQUM7b0JBQzdFO2tCQUNGLENBQUMsQ0FBQztnQkFDSjtjQUNGLENBQUMsQ0FBQztVQUFBO1FBQUEsR0FBQXhjLE9BQUE7TUFBQSxDQUNIO01BQUEsU0FuRFkwWSxLQUFLQSxDQUFBbFksRUFBQSxFQUFBK0ssR0FBQSxFQUFBSSxHQUFBLEVBQUFPLEdBQUEsRUFBQXFhLEdBQUE7UUFBQSxPQUFBL0wsTUFBQSxDQUFBL1osS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBTGdqQixLQUFLO0lBQUE7RUFBQTtJQUFBMzJCLEdBQUE7SUFBQUUsS0FBQSxFQXFEbEIsU0FBTzBrQixRQUFRQSxDQUFBLEVBQXNDO01BQ25ELElBQUksSUFBSSxDQUFDeXFCLE9BQU8sRUFBRTtRQUNoQixPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDenFCLFFBQVEsQ0FBQyxDQUFDO01BQ2hDO01BRUEsT0FBTyxJQUFJO0lBQ2I7RUFBQztJQUFBNWtCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFnN0IsS0FBQSxHQUFBbGQsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUEyQyxTQUEwQjB3QixNQUFnRSxFQUFFamUsWUFBOEIsRUFBRTVvQixRQUFnQixFQUFFOGtDLFFBQWdCLEVBQUVwc0IsT0FBZ0MsRUFBRXNaLG1CQUE2QjtRQUFBLElBQUE4VSxvQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxXQUFBLEVBQUFDLFdBQUE7UUFBQSxPQUFBM3pCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBNkMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUF6RSxDQUFBO1lBQUE7Y0FDdk5tMUIsb0JBQW9CLEdBQUdoQyxRQUFRLENBQUNyckMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDO2NBQzlFc3RDLG1CQUFtQixHQUFHakMsUUFBUSxDQUFDcnJDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztjQUM5RXV0QyxXQUFXLEdBQUdGLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBR0Esb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtjQUM1RkcsV0FBVyxHQUFHRixtQkFBbUIsSUFBSUEsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUdBLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7Y0FBQSxLQUUzRkUsV0FBVztnQkFBQTd3QixTQUFBLENBQUF6RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNULENBQUMsSUFBSSxDQUFDNDBCLGdCQUFnQixJQUFJeHFDLHNFQUFpQixDQUFDbXJDLGtCQUFrQjtnQkFBQTl3QixTQUFBLENBQUF6RSxDQUFBO2dCQUFBO2NBQUE7Y0FDaEUsSUFBSSxDQUFDaTFCLE9BQU8sR0FBRyxJQUFJQyxNQUFNLENBQUNqZSxZQUFZLEVBQUUsS0FBSyxFQUFFNW9CLFFBQVEsRUFBRWluQyxXQUFXLEVBQUV2dUIsT0FBTyxFQUFFc1osbUJBQW1CLENBQUM7Y0FFbkcsSUFBSSxDQUFDNFUsT0FBTyxDQUFDMVksS0FBSyxDQUFDLENBQUM7Y0FBQyxPQUFBOVgsU0FBQSxDQUFBMUQsQ0FBQSxJQUVkLElBQUksQ0FBQ2swQixPQUFPO1lBQUE7Y0FBQSxLQUluQkksV0FBVztnQkFBQTV3QixTQUFBLENBQUF6RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNULENBQUMsSUFBSSxDQUFDMjBCLFVBQVUsSUFBSSxFQUFFLElBQUksQ0FBQ0MsZ0JBQWdCLElBQUl4cUMsc0VBQWlCLENBQUNtckMsa0JBQWtCLENBQUM7Z0JBQUE5d0IsU0FBQSxDQUFBekUsQ0FBQTtnQkFBQTtjQUFBO2NBQ3RGLElBQUksQ0FBQ2kxQixPQUFPLEdBQUcsSUFBSUMsTUFBTSxDQUFDamUsWUFBWSxFQUFFLE1BQU0sRUFBRTVvQixRQUFRLEVBQUVnbkMsV0FBVyxFQUFFdHVCLE9BQU8sRUFBRXNaLG1CQUFtQixDQUFDO2NBRXBHLElBQUksQ0FBQzRVLE9BQU8sQ0FBQzFZLEtBQUssQ0FBQyxDQUFDO2NBQUMsT0FBQTlYLFNBQUEsQ0FBQTFELENBQUEsSUFFZCxJQUFJLENBQUNrMEIsT0FBTztZQUFBO2NBQUEsTUFJbkJJLFdBQVcsSUFBSUMsV0FBVztnQkFBQTd3QixTQUFBLENBQUF6RSxDQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUN0QixJQUFJMVYsS0FBSyxLQUFBNUIsTUFBQSxDQUFLMkYsUUFBUSxxQkFBQTNGLE1BQUEsQ0FBa0I0c0MsV0FBVyxHQUFHLEtBQUssR0FBRyxNQUFNLGtDQUErQixDQUFDO1lBQUE7Y0FBQSxNQUd0RyxJQUFJaHJDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQztZQUFBO2NBQUEsT0FBQW1hLFNBQUEsQ0FBQTFELENBQUE7VUFBQTtRQUFBLEdBQUF5RCxRQUFBO01BQUEsQ0FDNUM7TUFBQSxTQS9Cb0J5YyxJQUFJQSxDQUFBb0osR0FBQSxFQUFBQyxHQUFBLEVBQUFLLEdBQUEsRUFBQUMsR0FBQSxFQUFBRyxHQUFBLEVBQUFDLEdBQUE7UUFBQSxPQUFBbEssS0FBQSxDQUFBeGMsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBSjBuQixJQUFJO0lBQUE7RUFBQTtJQUFBcjdCLEdBQUE7SUFBQUUsS0FBQSxFQWlDekIsU0FBZWl2QyxNQUFNQSxDQUFDOWQsWUFBOEIsRUFBRTVvQixRQUFnQixFQUFFOGtDLFFBQWdCLEVBQUU5UyxtQkFBNkIsRUFBd0I7TUFDN0ksSUFBSSxJQUFJLENBQUNzVSxVQUFVLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUMxVCxJQUFJLENBQUN5VCxrREFBUyxFQUFFemQsWUFBWSxFQUFFNW9CLFFBQVEsRUFBRThrQyxRQUFRLEVBQUFoRyxhQUFBLENBQUFBLGFBQUEsS0FDdkQsSUFBSSxDQUFDMkgsUUFBUTtVQUNoQlUsWUFBWSxFQUFFcHJDLHNFQUFpQixDQUFDbXJDO1FBQWtCLElBQ2pEbFYsbUJBQW1CLENBQUM7TUFDekI7TUFFQSxJQUFJLElBQUksQ0FBQ3VVLGdCQUFnQixFQUFFO1FBQ3pCLE9BQU8sSUFBSSxDQUFDM1QsSUFBSSxDQUFDdVQsa0RBQVMsRUFBRXZkLFlBQVksRUFBRTVvQixRQUFRLEVBQUU4a0MsUUFBUSxFQUFBaEcsYUFBQSxDQUFBQSxhQUFBLEtBQ3ZELElBQUksQ0FBQzJILFFBQVE7VUFDaEJVLFlBQVksRUFBRXByQyxzRUFBaUIsQ0FBQ21yQztRQUFrQixJQUNqRGxWLG1CQUFtQixDQUFDO01BQ3pCO01BRUEsT0FBTyxJQUFJLENBQUNZLElBQUksQ0FBQ3dULG9EQUFXLEVBQUV4ZCxZQUFZLEVBQUU1b0IsUUFBUSxFQUFFOGtDLFFBQVEsRUFBQWhHLGFBQUEsQ0FBQUEsYUFBQSxLQUN6RCxJQUFJLENBQUMySCxRQUFRO1FBQ2hCVSxZQUFZLEVBQUVwckMsc0VBQWlCLENBQUNtckM7TUFBa0IsSUFDakRsVixtQkFBbUIsQ0FBQztJQUN6QjtFQUFDO0FBQUE7QUFDRmg3QiwySUFBQSxDQXRJWXN0QyxnQkFBZ0IsY0FDRCxLQUFLO0FBQUF0dEMsMklBQUEsQ0FEcEJzdEMsZ0JBQWdCO0FBQUF0dEMsMklBQUEsQ0FBaEJzdEMsZ0JBQWdCO0FBQUF0dEMsMklBQUEsQ0FBaEJzdEMsZ0JBQWdCO0FBQUF0dEMsMklBQUEsQ0FBaEJzdEMsZ0JBQWdCO0FBQUF0dEMsMklBQUEsQ0FBaEJzdEMsZ0JBQWdCLHFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEI3QjtBQUNBO0FBQ0E7O0FBRW9EO0FBR047QUFBQSxJQUV6QitCLFNBQVM7RUFRNUIsU0FBQUEsVUFBWXpkLFlBQThCLEVBQUVoVSxJQUFZLEVBQUU1VSxRQUFnQixFQUFFb25DLFdBQW1CLEVBQUUxdUIsT0FBZ0MsRUFBRTtJQUFBM2hCLDJJQUFBLE9BQUFzdkMsU0FBQTtJQUFBcnZDLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQ2pJLElBQUksQ0FBQ3F3QyxhQUFhLEdBQUd6ZSxZQUFZO0lBQ2pDLElBQUksQ0FBQzBlLEtBQUssR0FBRzF5QixJQUFJO0lBQ2pCLElBQUksQ0FBQzJ5QixTQUFTLEdBQUd2bkMsUUFBUTtJQUN6QixJQUFJLENBQUN3bkMsWUFBWSxHQUFHQyxTQUFTLENBQUNMLFdBQVcsQ0FBQyxDQUFDTSxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztJQUNqRSxJQUFJLENBQUNqQixRQUFRLEdBQUcvdEIsT0FBTztJQUN2QixJQUFJLENBQUNrdUIsT0FBTyxHQUFHLElBQUk7RUFDckI7RUFBQyxPQUFBdHZDLHdJQUFBLENBQUErdUMsU0FBQTtJQUFBOXVDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF5MkIsS0FBS0EsQ0FBQSxFQUFTO01BQ1osSUFBSW9XLCtEQUFnQixDQUFDcUQsU0FBUyxFQUFFO1FBQzlCLElBQUlyRCwrREFBZ0IsQ0FBQ3FELFNBQVMsQ0FBQ3JxQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1VBQzVDLElBQUksQ0FBQ3NwQyxPQUFPLEdBQUcsSUFBSXRDLCtEQUFnQixDQUFDcUQsU0FBUyxDQUFDO1lBQzVDQyxZQUFZLEVBQUUsSUFBSTtZQUNsQkMsZUFBZSxFQUFFLENBQUM7WUFDbEJDLGdCQUFnQixFQUFFLENBQUM7WUFDbkJDLGdCQUFnQixFQUFFLENBQUM7WUFDbkJDLG9CQUFvQixFQUFFLElBQUk7WUFDMUJDLHNCQUFzQixFQUFFQyxRQUFRO1lBQ2hDQyx3QkFBd0IsRUFBRTtVQUM1QixDQUFDLENBQUM7VUFDRixJQUFJLENBQUN2QixPQUFPLENBQUN3QixVQUFVLENBQUMsSUFBSSxDQUFDWixZQUFZLENBQUM7VUFDMUMsSUFBSSxDQUFDWixPQUFPLENBQUN5QixXQUFXLENBQUMsSUFBSSxDQUFDaEIsYUFBYSxDQUFDO1FBQzlDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQ0EsYUFBYSxDQUFDaUIsV0FBVyxDQUFDLCtCQUErQixDQUFDLEVBQUU7VUFDMUUsSUFBSSxDQUFDakIsYUFBYSxDQUFDenFDLEdBQUcsR0FBRyxJQUFJLENBQUM0cUMsWUFBWTtRQUM1QztNQUNGO0lBQ0Y7RUFBQztJQUFBandDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE2RixXQUFXQSxDQUFBLEVBQVk7TUFDckIsT0FBT2duQywrREFBZ0IsQ0FBQ3FELFNBQVMsSUFBSXJELCtEQUFnQixDQUFDcUQsU0FBUyxDQUFDcnFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9FO0VBQUM7SUFBQS9GLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUEwa0IsUUFBUUEsQ0FBQSxFQUErQjtNQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDeXFCLE9BQU8sRUFBRTtRQUNqQixPQUFPO1VBQ0x0WSxLQUFLLEVBQUUsQ0FBQztVQUNSRSxNQUFNLEVBQUUsQ0FBQztVQUNUc1gsV0FBVyxFQUFFLEdBQUc7VUFDaEJ2YSxHQUFHLEVBQUUsR0FBRztVQUNScWEsWUFBWSxFQUFFckIseURBQWEsQ0FBQ3NCLGVBQWU7VUFDM0NLLFlBQVksRUFBRTtRQUNoQixDQUFDO01BQ0g7TUFFQSxJQUFNcUMsVUFBVSxHQUFHO1FBQ2pCamEsS0FBSyxFQUFFLElBQUksQ0FBQ3NZLE9BQU8sQ0FBQzRCLEtBQUssQ0FBQ0MsV0FBVztRQUNyQ2phLE1BQU0sRUFBRSxJQUFJLENBQUNvWSxPQUFPLENBQUM0QixLQUFLLENBQUNFLFlBQVk7UUFDdkM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDYyxPQUFPLENBQUM0QixLQUFLLENBQUMxQyxXQUFXO1FBQzNDdmEsR0FBRyxFQUFFLEdBQUc7UUFDUnFhLFlBQVksRUFBRXJCLHlEQUFhLENBQUNvRSxXQUFXO1FBQ3ZDekMsWUFBWSxFQUFFO01BQ2hCLENBQUM7TUFFRCxJQUFJLElBQUksQ0FBQ21CLGFBQWEsQ0FBQ3VCLFFBQVEsSUFBSSxJQUFJLENBQUN2QixhQUFhLENBQUN1QixRQUFRLENBQUNsbkMsTUFBTSxFQUFFO1FBQ3JFNm1DLFVBQVUsQ0FBQ3JDLFlBQVksR0FBRyxJQUFJLENBQUNtQixhQUFhLENBQUN1QixRQUFRLENBQUNDLEdBQUcsQ0FBQyxDQUFDLENBQUM7TUFDOUQ7TUFFQSxJQUFJLElBQUksQ0FBQ2pDLE9BQU8sQ0FBQ2tDLGdCQUFnQixDQUFDOWUsS0FBSyxLQUFLLE1BQU0sRUFBRTtRQUNsRHVlLFVBQVUsQ0FBQzNDLFlBQVksR0FBR3JCLHlEQUFhLENBQUNvRSxXQUFXO01BQ3JELENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQy9CLE9BQU8sQ0FBQ2tDLGdCQUFnQixDQUFDOWUsS0FBSyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUM0YyxPQUFPLENBQUNrQyxnQkFBZ0IsQ0FBQzllLEtBQUssS0FBSyxPQUFPLEVBQUU7UUFDN0d1ZSxVQUFVLENBQUMzQyxZQUFZLEdBQUdyQix5REFBYSxDQUFDc0IsZUFBZTtNQUN6RCxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUNlLE9BQU8sQ0FBQ2tDLGdCQUFnQixDQUFDOWUsS0FBSyxDQUFDbHZCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUM4ckMsT0FBTyxDQUFDa0MsZ0JBQWdCLENBQUM5ZSxLQUFLLENBQUNsdkIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQzdIeXRDLFVBQVUsQ0FBQzNDLFlBQVksR0FBR3JCLHlEQUFhLENBQUN3RSxjQUFjO01BQ3hELENBQUMsTUFBTTtRQUNMUixVQUFVLENBQUMzQyxZQUFZLEdBQUdyQix5REFBYSxDQUFDeUUsWUFBWTtNQUN0RDtNQUVBLElBQU1sRCxXQUFXLEdBQUcsSUFBSSxDQUFDdUIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7TUFDMUQsSUFBTTRCLGVBQWUsR0FBRyxDQUFDaHlDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUN1dkMsUUFBUSxDQUFDMUIsZUFBZSxJQUFJLElBQUk7TUFFM0V3RCxVQUFVLENBQUNoZCxHQUFHLEdBQUd0akIsSUFBSSxDQUFDaWhDLEdBQUcsQ0FBQyxHQUFHLEVBQUdwRCxXQUFXLEdBQUksSUFBSSxDQUFDVyxRQUFRLENBQUNsYixHQUFHLEdBQUcsSUFBSyxHQUFJMGQsZUFBZSxDQUFDO01BRTVGLE9BQU9WLFVBQVU7SUFDbkI7RUFBQztJQUFBaHhDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksSUFBSSxDQUFDZ3ZDLE9BQU8sSUFBSSxJQUFJLENBQUNBLE9BQU8sQ0FBQ3VDLE9BQU8sRUFBRTtRQUN4QyxJQUFJLENBQUN2QyxPQUFPLENBQUN1QyxPQUFPLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUN2QyxPQUFPLEdBQUcsSUFBSTtNQUNyQjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0FDbkdIO0FBQ0E7QUFDQTs7QUFFTyxJQUFLckMsYUFBYSwwQkFBYkEsYUFBYTtFQUFiQSxhQUFhLENBQWJBLGFBQWE7RUFBYkEsYUFBYSxDQUFiQSxhQUFhO0VBQWJBLGFBQWEsQ0FBYkEsYUFBYTtFQUFiQSxhQUFhLENBQWJBLGFBQWE7RUFBQSxPQUFiQSxhQUFhO0FBQUEsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQkNIekIsdUtBQUF6aUMsQ0FBQSxFQUFBMFAsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUF6TixTQUFBLFlBQUErTixTQUFBLEdBQUFOLENBQUEsR0FBQU0sU0FBQSxFQUFBQyxDQUFBLEdBQUE3RSxNQUFBLENBQUE4RSxNQUFBLENBQUFILENBQUEsQ0FBQTlOLFNBQUEsVUFBQWtPLG1CQUFBLENBQUFGLENBQUEsdUJBQUFULENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsTUFBQUMsQ0FBQSxHQUFBVCxDQUFBLFFBQUFVLENBQUEsT0FBQUMsQ0FBQSxLQUFBRixDQUFBLEtBQUFYLENBQUEsS0FBQWMsQ0FBQSxFQUFBM1EsQ0FBQSxFQUFBNFEsQ0FBQSxFQUFBQyxDQUFBLEVBQUFOLENBQUEsRUFBQU0sQ0FBQSxDQUFBblcsSUFBQSxDQUFBc0YsQ0FBQSxNQUFBNlEsQ0FBQSxXQUFBQSxFQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLFdBQUFNLENBQUEsR0FBQVAsQ0FBQSxFQUFBUSxDQUFBLE1BQUFFLENBQUEsR0FBQXBRLENBQUEsRUFBQTBRLENBQUEsQ0FBQWIsQ0FBQSxHQUFBRixDQUFBLEVBQUFpQixDQUFBLGdCQUFBQyxFQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLFNBQUFLLENBQUEsR0FBQVAsQ0FBQSxFQUFBUyxDQUFBLEdBQUFQLENBQUEsRUFBQUgsQ0FBQSxPQUFBZSxDQUFBLElBQUFGLENBQUEsS0FBQVIsQ0FBQSxJQUFBTCxDQUFBLEdBQUFjLENBQUEsQ0FBQTVRLE1BQUEsRUFBQThQLENBQUEsVUFBQUssQ0FBQSxFQUFBRSxDQUFBLEdBQUFPLENBQUEsQ0FBQWQsQ0FBQSxHQUFBbUIsQ0FBQSxHQUFBSCxDQUFBLENBQUFGLENBQUEsRUFBQU0sQ0FBQSxHQUFBYixDQUFBLEtBQUFOLENBQUEsUUFBQUksQ0FBQSxHQUFBZSxDQUFBLEtBQUFqQixDQUFBLE1BQUFPLENBQUEsR0FBQUgsQ0FBQSxFQUFBQyxDQUFBLEdBQUFELENBQUEsWUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE1BQUFBLENBQUEsTUFBQWpRLENBQUEsSUFBQWlRLENBQUEsT0FBQVksQ0FBQSxNQUFBZCxDQUFBLEdBQUFKLENBQUEsUUFBQWtCLENBQUEsR0FBQVosQ0FBQSxRQUFBQyxDQUFBLE1BQUFRLENBQUEsQ0FBQUMsQ0FBQSxHQUFBZCxDQUFBLEVBQUFhLENBQUEsQ0FBQWIsQ0FBQSxHQUFBSSxDQUFBLE9BQUFZLENBQUEsR0FBQUMsQ0FBQSxLQUFBZixDQUFBLEdBQUFKLENBQUEsUUFBQU0sQ0FBQSxNQUFBSixDQUFBLElBQUFBLENBQUEsR0FBQWlCLENBQUEsTUFBQWIsQ0FBQSxNQUFBTixDQUFBLEVBQUFNLENBQUEsTUFBQUosQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQWlCLENBQUEsRUFBQVosQ0FBQSxjQUFBSCxDQUFBLElBQUFKLENBQUEsYUFBQWlCLENBQUEsUUFBQUgsQ0FBQSxPQUFBWixDQUFBLHFCQUFBRSxDQUFBLEVBQUFTLENBQUEsRUFBQU0sQ0FBQSxRQUFBUCxDQUFBLFlBQUFRLFNBQUEsdUNBQUFOLENBQUEsVUFBQUQsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsRUFBQU0sQ0FBQSxHQUFBWixDQUFBLEdBQUFNLENBQUEsRUFBQUosQ0FBQSxHQUFBVSxDQUFBLEdBQUFwQixDQUFBLEdBQUFRLENBQUEsT0FBQWxRLENBQUEsR0FBQW9RLENBQUEsTUFBQUssQ0FBQSxLQUFBUixDQUFBLEtBQUFDLENBQUEsR0FBQUEsQ0FBQSxRQUFBQSxDQUFBLFNBQUFRLENBQUEsQ0FBQWIsQ0FBQSxRQUFBZ0IsQ0FBQSxDQUFBWCxDQUFBLEVBQUFFLENBQUEsS0FBQU0sQ0FBQSxDQUFBYixDQUFBLEdBQUFPLENBQUEsR0FBQU0sQ0FBQSxDQUFBQyxDQUFBLEdBQUFQLENBQUEsYUFBQUcsQ0FBQSxNQUFBTixDQUFBLFFBQUFDLENBQUEsS0FBQUgsQ0FBQSxZQUFBTCxDQUFBLEdBQUFPLENBQUEsQ0FBQUYsQ0FBQSxXQUFBTCxDQUFBLEdBQUFBLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsRUFBQUcsQ0FBQSxVQUFBVyxTQUFBLDJDQUFBckIsQ0FBQSxDQUFBc0IsSUFBQSxTQUFBdEIsQ0FBQSxFQUFBVSxDQUFBLEdBQUFWLENBQUEsQ0FBQS9aLEtBQUEsRUFBQXVhLENBQUEsU0FBQUEsQ0FBQSxvQkFBQUEsQ0FBQSxLQUFBUixDQUFBLEdBQUFPLENBQUEsQ0FBQWdCLE1BQUEsS0FBQXZCLENBQUEsQ0FBQWpLLElBQUEsQ0FBQXdLLENBQUEsR0FBQUMsQ0FBQSxTQUFBRSxDQUFBLEdBQUFXLFNBQUEsdUNBQUFoQixDQUFBLGdCQUFBRyxDQUFBLE9BQUFELENBQUEsR0FBQWpRLENBQUEsY0FBQTBQLENBQUEsSUFBQWUsQ0FBQSxHQUFBQyxDQUFBLENBQUFiLENBQUEsUUFBQU8sQ0FBQSxHQUFBVCxDQUFBLENBQUFsSyxJQUFBLENBQUFvSyxDQUFBLEVBQUFhLENBQUEsT0FBQUUsQ0FBQSxrQkFBQWxCLENBQUEsSUFBQU8sQ0FBQSxHQUFBalEsQ0FBQSxFQUFBa1EsQ0FBQSxNQUFBRSxDQUFBLEdBQUFWLENBQUEsY0FBQWEsQ0FBQSxtQkFBQTVhLEtBQUEsRUFBQStaLENBQUEsRUFBQXNCLElBQUEsRUFBQVAsQ0FBQSxTQUFBZCxDQUFBLEVBQUFJLENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLFFBQUFRLENBQUEsZ0JBQUFULFVBQUEsY0FBQWUsa0JBQUEsY0FBQUMsMkJBQUEsS0FBQXpCLENBQUEsR0FBQW5FLE1BQUEsQ0FBQTZGLGNBQUEsTUFBQWxCLENBQUEsTUFBQUwsQ0FBQSxJQUFBSCxDQUFBLENBQUFBLENBQUEsSUFBQUcsQ0FBQSxTQUFBUyxtQkFBQSxDQUFBWixDQUFBLE9BQUFHLENBQUEsaUNBQUFILENBQUEsR0FBQVUsQ0FBQSxHQUFBZSwwQkFBQSxDQUFBL08sU0FBQSxHQUFBK04sU0FBQSxDQUFBL04sU0FBQSxHQUFBbUosTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLFlBQUFLLEVBQUF2USxDQUFBLFdBQUF1TCxNQUFBLENBQUE4RixjQUFBLEdBQUE5RixNQUFBLENBQUE4RixjQUFBLENBQUFyUixDQUFBLEVBQUFtUiwwQkFBQSxLQUFBblIsQ0FBQSxDQUFBc1IsU0FBQSxHQUFBSCwwQkFBQSxFQUFBYixtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBK1AsQ0FBQSx5QkFBQS9QLENBQUEsQ0FBQW9DLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBcFEsQ0FBQSxXQUFBa1IsaUJBQUEsQ0FBQTlPLFNBQUEsR0FBQStPLDBCQUFBLEVBQUFiLG1CQUFBLENBQUFGLENBQUEsaUJBQUFlLDBCQUFBLEdBQUFiLG1CQUFBLENBQUFhLDBCQUFBLGlCQUFBRCxpQkFBQSxHQUFBQSxpQkFBQSxDQUFBSyxXQUFBLHdCQUFBakIsbUJBQUEsQ0FBQWEsMEJBQUEsRUFBQXBCLENBQUEsd0JBQUFPLG1CQUFBLENBQUFGLENBQUEsR0FBQUUsbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEVBQUFQLENBQUEsaUNBQUFTLG1CQUFBLENBQUFGLENBQUEsOERBQUFvQixZQUFBLFlBQUFBLGFBQUEsYUFBQUMsQ0FBQSxFQUFBeEIsQ0FBQSxFQUFBeUIsQ0FBQSxFQUFBbkIsQ0FBQTtBQUFBLFNBQUFELG9CQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsUUFBQU8sQ0FBQSxHQUFBMUUsTUFBQSxDQUFBb0csY0FBQSxRQUFBMUIsQ0FBQSx1QkFBQWpRLENBQUEsSUFBQWlRLENBQUEsUUFBQUssbUJBQUEsWUFBQXNCLG1CQUFBNVIsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUEsYUFBQUssRUFBQUosQ0FBQSxFQUFBRSxDQUFBLElBQUFTLG1CQUFBLENBQUF0USxDQUFBLEVBQUEyUCxDQUFBLFlBQUEzUCxDQUFBLGdCQUFBNlIsT0FBQSxDQUFBbEMsQ0FBQSxFQUFBRSxDQUFBLEVBQUE3UCxDQUFBLFNBQUEyUCxDQUFBLEdBQUFNLENBQUEsR0FBQUEsQ0FBQSxDQUFBalEsQ0FBQSxFQUFBMlAsQ0FBQSxJQUFBaGEsS0FBQSxFQUFBa2EsQ0FBQSxFQUFBaUMsVUFBQSxHQUFBcEMsQ0FBQSxFQUFBcUMsWUFBQSxHQUFBckMsQ0FBQSxFQUFBc0MsUUFBQSxHQUFBdEMsQ0FBQSxNQUFBMVAsQ0FBQSxDQUFBMlAsQ0FBQSxJQUFBRSxDQUFBLElBQUFFLENBQUEsYUFBQUEsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBTyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxFQUFBRSxDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBNDNCLFFBQUF0bkMsQ0FBQSxFQUFBMlAsQ0FBQSxRQUFBRCxDQUFBLEdBQUFuRSxNQUFBLENBQUFnOEIsSUFBQSxDQUFBdm5DLENBQUEsT0FBQXVMLE1BQUEsQ0FBQWk4QixxQkFBQSxRQUFBejNCLENBQUEsR0FBQXhFLE1BQUEsQ0FBQWk4QixxQkFBQSxDQUFBeG5DLENBQUEsR0FBQTJQLENBQUEsS0FBQUksQ0FBQSxHQUFBQSxDQUFBLENBQUE4aUIsTUFBQSxXQUFBbGpCLENBQUEsV0FBQXBFLE1BQUEsQ0FBQWs4Qix3QkFBQSxDQUFBem5DLENBQUEsRUFBQTJQLENBQUEsRUFBQW1DLFVBQUEsT0FBQXBDLENBQUEsQ0FBQTlRLElBQUEsQ0FBQXVWLEtBQUEsQ0FBQXpFLENBQUEsRUFBQUssQ0FBQSxZQUFBTCxDQUFBO0FBQUEsU0FBQXN0QixjQUFBaDlCLENBQUEsYUFBQTJQLENBQUEsTUFBQUEsQ0FBQSxHQUFBdkcsU0FBQSxDQUFBeEosTUFBQSxFQUFBK1AsQ0FBQSxVQUFBRCxDQUFBLFdBQUF0RyxTQUFBLENBQUF1RyxDQUFBLElBQUF2RyxTQUFBLENBQUF1RyxDQUFBLFFBQUFBLENBQUEsT0FBQTIzQixPQUFBLENBQUEvN0IsTUFBQSxDQUFBbUUsQ0FBQSxPQUFBL0osT0FBQSxXQUFBZ0ssQ0FBQSxJQUFBemEsMklBQUEsQ0FBQThLLENBQUEsRUFBQTJQLENBQUEsRUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFNBQUFwRSxNQUFBLENBQUFtOEIseUJBQUEsR0FBQW44QixNQUFBLENBQUFvOEIsZ0JBQUEsQ0FBQTNuQyxDQUFBLEVBQUF1TCxNQUFBLENBQUFtOEIseUJBQUEsQ0FBQWg0QixDQUFBLEtBQUE0M0IsT0FBQSxDQUFBLzdCLE1BQUEsQ0FBQW1FLENBQUEsR0FBQS9KLE9BQUEsV0FBQWdLLENBQUEsSUFBQXBFLE1BQUEsQ0FBQW9HLGNBQUEsQ0FBQTNSLENBQUEsRUFBQTJQLENBQUEsRUFBQXBFLE1BQUEsQ0FBQWs4Qix3QkFBQSxDQUFBLzNCLENBQUEsRUFBQUMsQ0FBQSxpQkFBQTNQLENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRXdEO0FBQ1Q7QUFDUTtBQUNNO0FBRVc7QUFDNUI7QUFDbkI7QUFFbUI7QUFDNEI7QUFJL0I7QUFDeUI7QUFFbkI7QUFDcUI7QUFDaEI7QUFFRztBQUswRTtBQUM3RDtBQUU2RDtBQUdyRDtBQUNBO0FBRTVFLElBQU04bkMsZ0NBQWdDLEdBQUcsR0FBRztBQUM1QyxJQUFNQyx5QkFBeUIsR0FBRyxLQUFLO0FBQUMsSUFFbkJDLGNBQWM7RUFTakMsU0FBQUEsZUFBWXBGLGNBQThCLEVBQUVxRixxQkFBNEMsRUFBRUMsc0JBQThDLEVBQUVDLDZCQUE0RCxFQUFFalksbUJBQXdDLEVBQUU7SUFBQWo3QiwySUFBQSxPQUFBK3lDLGNBQUE7SUFBQTl5QywySUFBQSxrQkFSOU13SSw4REFBYSxDQUFDRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFBQTNJLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBUzNFLElBQUksQ0FBQ3l5QixlQUFlLEdBQUdpYixjQUFjO0lBQ3JDLElBQUksQ0FBQ2hiLHNCQUFzQixHQUFHcWdCLHFCQUFxQjtJQUNuRCxJQUFJLENBQUNwZ0IsdUJBQXVCLEdBQUdxZ0Isc0JBQXNCO0lBQ3JELElBQUksQ0FBQ3hkLDhCQUE4QixHQUFHeWQsNkJBQTZCO0lBQ25FLElBQUksQ0FBQzVXLG9CQUFvQixHQUFHckIsbUJBQW1CO0lBQy9DLElBQUksQ0FBQ242QixZQUFZLEdBQUcsSUFBSW5CLDREQUFjLENBQUMsQ0FBQztJQUN4QyxJQUFJLENBQUMreUIsZUFBZSxDQUFDa0YsV0FBVyxDQUFDeDJCLEdBQUcsQ0FBQyxJQUFJLENBQUM7RUFDNUM7RUFBQyxPQUFBYix3SUFBQSxDQUFBd3lDLGNBQUE7SUFBQXZ5QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBeTJCLEtBQUtBLENBQUM3ckIsR0FBUSxFQUFFakIsS0FBYSxFQUFFaXZCLG1CQUF3QyxFQUFFYiw2QkFBdUMsRUFBaUI7TUFBQSxJQUFBMTNCLEtBQUE7TUFDL0gsSUFBTW95QyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUN2Z0IsdUJBQXVCLENBQUNSLDJCQUEyQixDQUFDMXhCLEtBQUssSUFDbEcsSUFBSSxDQUFDKzBCLDhCQUE4QixDQUFDd0gscUJBQXFCLENBQUN2OEIsS0FBSyxJQUMvRCxJQUFJLENBQUMrMEIsOEJBQThCLENBQUN5SCx1QkFBdUIsQ0FBQ3g4QixLQUFLLEdBQUd1ZixpRkFBd0IsQ0FBQ3FCLE9BQU8sR0FBR3JCLGlGQUF3QixDQUFDbUIsUUFBUTtNQUU3SSxPQUFPaEQsT0FBTyxDQUFDZzFCLEdBQUcsQ0FBQyxDQUNqQjVoQiw2REFBUyxDQUFDNFAsa0NBQWtDLENBQUM5MUIsR0FBRyxDQUFDLEVBQ2pENlUsbUVBQXFCLENBQUNTLHlCQUF5QixDQUFDLFVBQVUsRUFBRVYsMEVBQWlCLEVBQUVpekIsZ0NBQWdDLENBQUMsQ0FDN0c1MUIsSUFBSSxDQUFDLFVBQUF4VyxJQUFBLEVBQWtDO1FBQUEsSUFBaENxYixVQUFVLEdBQUFyYixJQUFBLENBQVZxYixVQUFVO1VBQUV6QixjQUFjLEdBQUE1WixJQUFBLENBQWQ0WixjQUFjO1FBQ2hDNWYsS0FBSSxDQUFDNHhCLHNCQUFzQixDQUFDaFMsY0FBYyxDQUFDamdCLEtBQUssR0FBR2lnQixjQUFjO1FBRWpFLE9BQU87VUFDTHlCLFVBQVUsRUFBVkEsVUFBVTtVQUNWekIsY0FBYyxFQUFkQTtRQUNGLENBQUM7TUFDSCxDQUFDLENBQUMsQ0FDTCxDQUFDLENBQ0NwRCxJQUFJLENBQUMsVUFBQWpXLEtBQUEsRUFBOEM7UUFBQSxJQUFBK3JDLEtBQUEsR0FBQTFJLDBJQUFBLENBQUFyakMsS0FBQTtVQUE1QzB0QixRQUFRLEdBQUFxZSxLQUFBO1VBQUFDLE1BQUEsR0FBQUQsS0FBQTtVQUFHanhCLFVBQVUsR0FBQWt4QixNQUFBLENBQVZseEIsVUFBVTtVQUFFekIsY0FBYyxHQUFBMnlCLE1BQUEsQ0FBZDN5QixjQUFjO1FBQzNDNWYsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ21CLE1BQU0sQ0FBQ256QixLQUFLLEdBQUcsSUFBSTtRQUN4Q0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFLLEdBQUdzMEIsUUFBUTtRQUM5Q2owQixLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyxvQkFBb0IsRUFBRWlyQixRQUFRLENBQUNya0IsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RDVQLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHcVksVUFBVSxDQUFDK0IsR0FBRyxDQUFDO1FBRXBELElBQU1vdkIsZ0JBQWtDLEdBQUcsQ0FBQyxDQUFDO1FBRTdDLElBQUl4eUMsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ1Ysa0NBQWtDLEVBQUU7VUFDM0R1aEIsZ0JBQWdCLENBQUNqUCwwQkFBMEIsR0FBR3ZqQyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDVixrQ0FBa0M7UUFDdkc7UUFFQSxJQUFJanhCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNULG1DQUFtQyxFQUFFO1VBQzVEc2hCLGdCQUFnQixDQUFDL08sMkJBQTJCLEdBQUd6akMsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ1QsbUNBQW1DO1FBQ3pHO1FBRUEsSUFBSWp0Qix1RUFBaUIsQ0FBQ3d1QyxtQkFBbUIsSUFBSSxDQUFDN3lCLGNBQWMsQ0FBQzh5Qix3QkFBd0IsSUFBSSxDQUFDOXlCLGNBQWMsQ0FBQyt5Qix3QkFBd0IsRUFBRTtVQUNqSS95QixjQUFjLENBQUM2SyxLQUFLLENBQUMsQ0FBQztVQUN0QjdLLGNBQWMsQ0FBQzlmLE9BQU8sQ0FBQyxDQUFDO1VBRXhCLElBQUkySCw2Q0FBRyxDQUFDazBCLCtCQUErQixJQUFJLEVBQUUxM0IsdUVBQWlCLENBQUM1QyxRQUFRLElBQUlvRyw2Q0FBRyxDQUFDbTBCLG9DQUFvQyxDQUFDLEVBQUU7WUFDcEgxM0Isb0VBQXVCLENBQUNFLHNCQUFzQixDQUFDLENBQUM7VUFDbEQ7VUFFQXBFLEtBQUksQ0FBQzR4QixzQkFBc0IsQ0FBQ2hTLGNBQWMsQ0FBQ2pnQixLQUFLLEdBQUcsSUFBSTtVQUV2RCxPQUFPczBCLFFBQVEsQ0FBQzlrQixTQUFTLENBQUM3RixLQUFLLEVBQUUsSUFBSSxFQUFFdEosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQ3AwQixLQUFLLEVBQUU2eUMsZ0JBQWdCLENBQUM7UUFDbkc7UUFFQSxPQUFPdmUsUUFBUSxDQUFDOWtCLFNBQVMsQ0FBQzdGLEtBQUssRUFBRStYLFVBQVUsRUFBRXJoQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDb0MsWUFBWSxDQUFDcDBCLEtBQUssRUFBRTZ5QyxnQkFBZ0IsQ0FBQztNQUN6RyxDQUFDLENBQUMsQ0FDRGgyQixJQUFJLENBQUMsVUFBQWlDLFFBQVEsRUFBSTtRQUNoQixJQUFPTSxNQUFNLEdBQUlOLFFBQVEsQ0FBbEJNLE1BQU07UUFFYi9lLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNTLE1BQU0sQ0FBQ3p5QixLQUFLLEdBQUdLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNrTSwwQkFBMEIsQ0FBQzllLE1BQU0sQ0FBQztRQUMzRi9lLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNpTSxpQ0FBaUMsQ0FBQzdlLE1BQU0sQ0FBQztRQUVqRy9lLEtBQUksQ0FBQzJ4QixlQUFlLENBQUMrTCxXQUFXLENBQUMzZSxNQUFNLENBQUM7UUFFeEMsSUFBSUEsTUFBTSxLQUFLLElBQUksRUFBRTtVQUNuQi9lLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxHQUFHLElBQUk7VUFDeENLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM4QixHQUFHLENBQUM5ekIsS0FBSyxHQUFHNEYsU0FBUztVQUUxQ3ZGLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNnTSw2Q0FBNkMsQ0FBQyxDQUFDO1VBRXBFMzlCLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLHdDQUF3QyxFQUN4Q2hKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUM3QjZXLE1BQ0YsQ0FBQztVQUVEO1FBQ0Y7UUFFQSxJQUFPb1YsTUFBTSxHQUEwSDFWLFFBQVEsQ0FBeEkwVixNQUFNO1VBQUVzUyxnQkFBZ0IsR0FBd0dob0IsUUFBUSxDQUFoSWdvQixnQkFBZ0I7VUFBRXJDLDRCQUE0QixHQUEwRTNsQixRQUFRLENBQTlHMmxCLDRCQUE0QjtVQUFFdUMsOEJBQThCLEdBQTBDbG9CLFFBQVEsQ0FBaEZrb0IsOEJBQThCO1VBQUVELCtCQUErQixHQUFTam9CLFFBQVEsQ0FBaERpb0IsK0JBQStCO1VBQUVqVCxHQUFHLEdBQUloVixRQUFRLENBQWZnVixHQUFHO1FBRW5JenpCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxHQUFHdzBCLE1BQU07UUFDMUNuMEIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQzhCLEdBQUcsQ0FBQzl6QixLQUFLLEdBQUc4ekIsR0FBRztRQUVwQ3p6QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDZ00sNkNBQTZDLENBQUMsQ0FBQztRQUVwRTM5QixLQUFJLENBQUMrSSxPQUFPLENBQUN3SyxLQUFLLENBQ2hCLG1EQUFtRCxFQUNuRHZULEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUM3QjZXLE1BQU0sRUFDTjBuQixnQkFBZ0IsRUFDaEJyQyw0QkFBNEIsRUFDNUJ1Qyw4QkFBOEIsRUFDOUJELCtCQUNGLENBQUM7UUFFRCxPQUFPMW1DLEtBQUksQ0FBQzR5QyxxQkFBcUIsQ0FBQzV5QyxLQUFJLENBQUM0eEIsc0JBQXNCLENBQUNoUyxjQUFjLENBQUNqZ0IsS0FBSyxFQUFFOG1DLGdCQUFvQyxDQUFDLENBQ3RIanFCLElBQUksQ0FBQyxVQUFBb0QsY0FBYyxFQUFJO1VBQ3RCLElBQUlpekIsdUJBQTJDO1VBQy9DLElBQUlDLGVBQWUsR0FBRyxLQUFLO1VBQzNCLElBQUkzTixrQkFBa0IsR0FBRyxLQUFLO1VBQzlCLElBQU1ELFVBQTZCLEdBQUcsRUFBRTtVQUV4QyxJQUFJLENBQUNsbEMsS0FBSSxDQUFDNHhCLHNCQUFzQixDQUFDaFMsY0FBYyxDQUFDamdCLEtBQUssRUFBRTtZQUNyREssS0FBSSxDQUFDNHhCLHNCQUFzQixDQUFDaFMsY0FBYyxDQUFDamdCLEtBQUssR0FBR2lnQixjQUFjO1VBQ25FO1VBRUFBLGNBQWMsQ0FBQzBLLGNBQWMsR0FBRyxVQUFDdGdCLENBQUMsRUFBVztZQUMzQyxJQUFJaEssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQ3gwQixLQUFLLEtBQUt3MEIsTUFBTSxFQUFFO2NBQ2hEO1lBQ0Y7WUFFQSxJQUFJbjBCLEtBQUksQ0FBQzR4QixzQkFBc0IsQ0FBQ2hTLGNBQWMsQ0FBQ2pnQixLQUFLLEtBQUtpZ0IsY0FBYyxFQUFFO2NBQ3ZFO1lBQ0Y7WUFFQSxJQUFJa3pCLGVBQWUsRUFBRTtjQUNuQjtZQUNGO1lBRUEsSUFBSSxDQUFDcnJDLDZDQUFHLENBQUN3RCxtQkFBbUIsQ0FBQ3RMLEtBQUssRUFBRTtjQUNsQztZQUNGO1lBRUEsSUFBSXFLLENBQUMsQ0FBQytvQyxTQUFTLElBQUkvb0MsQ0FBQyxDQUFDK29DLFNBQVMsQ0FBQ0EsU0FBUyxFQUFFO2NBQ3hDN04sVUFBVSxDQUFDdDhCLElBQUksQ0FBQ29CLENBQUMsQ0FBQytvQyxTQUFTLENBQUM7WUFDOUIsQ0FBQyxNQUFNO2NBQ0w1TixrQkFBa0IsR0FBRyxJQUFJO1lBQzNCO1lBRUEsSUFBSSxDQUFDME4sdUJBQXVCLEVBQUU7Y0FDNUJBLHVCQUF1QixHQUFHbjBDLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUMsWUFBTTtnQkFBQSxJQUFBcXVDLHFCQUFBO2dCQUMzRCxJQUFJaHpDLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN3QyxNQUFNLENBQUN4MEIsS0FBSyxLQUFLdzBCLE1BQU0sRUFBRTtrQkFDaEQ7Z0JBQ0Y7Z0JBRUEsSUFBSTJlLGVBQWUsRUFBRTtrQkFDbkI7Z0JBQ0Y7Z0JBRUEsSUFBTTMxQixPQUFPLElBQUE2MUIscUJBQUEsR0FBR2h6QyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDdDBCLEtBQUssY0FBQXF6QyxxQkFBQSx1QkFBbkNBLHFCQUFBLENBQXFDeE4sZ0JBQWdCLENBQUNyUixNQUFNLEVBQUUrUSxVQUFVLEVBQUVDLGtCQUFrQixDQUFDLENBQzFHM29CLElBQUksQ0FBQyxVQUFBeTJCLEtBQUEsRUFBdUI7a0JBQUEsSUFBckJsMEIsTUFBTSxHQUFBazBCLEtBQUEsQ0FBTmwwQixNQUFNO29CQUFFNkIsT0FBTyxHQUFBcXlCLEtBQUEsQ0FBUHJ5QixPQUFPO2tCQUNyQixJQUFJN0IsTUFBTSxLQUFLLElBQUksRUFBRTtvQkFDbkIvZSxLQUFJLENBQUMrSSxPQUFPLENBQUMrSyxJQUFJLENBQUMsb0RBQW9ELEVBQUU5VCxLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRTZXLE1BQU0sQ0FBQztvQkFFOUc7a0JBQ0Y7a0JBRUEsSUFBSTZCLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUU1ZCxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQy9COHZDLGVBQWUsR0FBRyxJQUFJO2tCQUN4QjtrQkFFQTl5QyxLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRWhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUFFNlcsTUFBTSxFQUFFNkIsT0FBTyxDQUFDO2dCQUNsSSxDQUFDLENBQUMsQ0FDRDlCLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2tCQUNWaEssS0FBSSxDQUFDK0ksT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUV4SixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRThCLENBQUMsQ0FBQztnQkFDM0YsQ0FBQyxDQUFDO2NBQ04sQ0FBQyxFQUFFOG5DLGdDQUFnQyxDQUFDO1lBQ3RDO1VBQ0YsQ0FBQztVQUVEbHlCLGNBQWMsQ0FBQzRLLDBCQUEwQixHQUFHLFlBQVk7WUFDdEQsSUFBSXhxQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDd0MsTUFBTSxDQUFDeDBCLEtBQUssS0FBS3cwQixNQUFNLEVBQUU7Y0FDaEQ7WUFDRjtZQUVBLElBQUluMEIsS0FBSSxDQUFDNHhCLHNCQUFzQixDQUFDaFMsY0FBYyxDQUFDamdCLEtBQUssS0FBS2lnQixjQUFjLEVBQUU7Y0FDdkU7WUFDRjtZQUVBLElBQU1zekIsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQWU7Y0FDaEM7Y0FDQTtjQUNBbHpDLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdrd0IsK0RBQVksQ0FBQ3lMLGVBQWU7Y0FFL0QsSUFBSXQ3QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxFQUFFO2dCQUMzQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQzAyQixLQUFLLENBQUMsQ0FBQztnQkFDL0NyMkIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ2IsWUFBWSxDQUFDbnhCLEtBQUssQ0FBQzIyQixTQUFTLEdBQUcsSUFBSTtjQUMxRDtjQUVBdDJCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHLEtBQUs7Y0FDMUNLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNxQixPQUFPLENBQUNyekIsS0FBSyxHQUFHLElBQUk7Y0FFekMsSUFBTXdkLE9BQU8sR0FBR25kLEtBQUksQ0FBQ3U3QixvQkFBb0IsQ0FBQyxDQUFDLENBQ3hDemMsS0FBSyxDQUFDLFVBQUE5VSxDQUFDLEVBQUk7Z0JBQ1ZoSyxLQUFJLENBQUMrSSxPQUFPLENBQUNTLEtBQUssQ0FDaEIsbUZBQW1GLEVBQ25GeEosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3pwQixRQUFRLEVBQzdCMFgsY0FBYyxDQUFDc0ksa0JBQWtCLEVBQ2pDbGUsQ0FDRixDQUFDO2NBQ0gsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUVELFFBQVE0VixjQUFjLENBQUNzSSxrQkFBa0I7Y0FDdkMsS0FBSyxVQUFVO2NBQ2YsS0FBSyxXQUFXO2NBQ2hCLEtBQUssV0FBVztjQUNoQixLQUFLLEtBQUs7Z0JBQ1I7Y0FFRixLQUFLLGNBQWM7Y0FDbkIsS0FBSyxRQUFRO2dCQUNYLElBQUl4cEIsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3d6QyxpQkFBaUIsRUFBRTtrQkFDdkNuekMsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0VBQWdFLEVBQUVoSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRTBYLGNBQWMsQ0FBQ3NJLGtCQUFrQixDQUFDO2tCQUNySmxvQixLQUFJLENBQUNvekMsdUJBQXVCLENBQUN4ekIsY0FBYyxFQUFFc3pCLGFBQWEsQ0FBQztnQkFDN0Q7Z0JBRUE7Y0FDRixLQUFLLFFBQVE7Z0JBQ1hsekMsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0VBQWdFLEVBQUVoSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRTBYLGNBQWMsQ0FBQ3NJLGtCQUFrQixDQUFDO2dCQUVySmdyQixhQUFhLENBQUMsQ0FBQztnQkFFZjtjQUNGO2dCQUNFemhDLG1FQUFpQixDQUFDbU8sY0FBYyxDQUFDc0ksa0JBQTJCLENBQUM7WUFDakU7VUFDRixDQUFDO1VBRUQsSUFBTW1yQixrQkFBa0IsR0FBRyxJQUFJaDJCLE9BQU8sQ0FBYyxVQUFDd0wsT0FBTyxFQUFFQyxNQUFNLEVBQUs7WUFDdkUsSUFBSSxDQUFDN2tCLHVFQUFpQixDQUFDcXZDLGVBQWUsRUFBRTtjQUN0QyxJQUFNaFosVUFBUyxHQUFHNTdCLGdFQUFXLENBQUNpQixLQUFLLENBQUNnRixVQUFVLENBQUM7Z0JBQUEsT0FBTW1rQixNQUFNLENBQUMsSUFBSTNrQixLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztjQUFBLEdBQUU0dEMseUJBQXlCLENBQUM7Y0FFNUgveEMsS0FBSSxDQUFDRCxZQUFZLENBQUNNLEdBQUcsQ0FBQyxJQUFJMUIsd0RBQVUsQ0FBQztnQkFBQSxPQUFNRCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sWUFBWSxDQUFDa3NCLFVBQVMsQ0FBQztjQUFBLEVBQUMsQ0FBQztjQUV0RjFhLGNBQWMsQ0FBQ3dLLE9BQU8sR0FBRyxVQUFDcGdCLENBQUMsRUFBVztnQkFDcEN0TCxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDeU8sWUFBWSxDQUFDa3NCLFVBQVMsQ0FBQztnQkFDekN6UixPQUFPLENBQUM3ZSxDQUFDLENBQUN1cEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3ZCLENBQUM7Y0FFRDtZQUNGO1lBRUEsSUFBTUMsY0FBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJeHBDLENBQW1ELEVBQVc7Y0FDbkY7Y0FDQXRMLGdFQUFXLENBQUNpQixLQUFLLENBQUN5TyxZQUFZLENBQUNrc0IsU0FBUyxDQUFDO2NBQ3pDMWEsY0FBYyxDQUFDdlksbUJBQW1CLENBQUMsT0FBTyxFQUFFbXNDLGNBQWEsQ0FBQztjQUMxRDV6QixjQUFjLENBQUN2WSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVtc0MsY0FBYSxDQUFDO2NBRTlELElBQUksU0FBUyxJQUFJeHBDLENBQUMsRUFBRTtnQkFDbEI2ZSxPQUFPLENBQUM3ZSxDQUFDLENBQUN1cEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3ZCLENBQUMsTUFBTTtnQkFDTDFxQixPQUFPLENBQUM3ZSxDQUFDLENBQUNtcUIsTUFBTSxDQUFDO2NBQ25CO1lBQ0YsQ0FBQztZQUVELElBQU1tRyxTQUFTLEdBQUc1N0IsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ2dGLFVBQVUsQ0FBQyxZQUFNO2NBQ25EaWIsY0FBYyxDQUFDdlksbUJBQW1CLENBQUMsT0FBTyxFQUFFbXNDLGNBQWEsQ0FBQztjQUMxRDV6QixjQUFjLENBQUN2WSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVtc0MsY0FBYSxDQUFDO2NBQzlEMXFCLE1BQU0sQ0FBQyxJQUFJM2tCLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRTR0Qyx5QkFBeUIsQ0FBQztZQUU3Qm55QixjQUFjLENBQUN6WSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVxc0MsY0FBYSxDQUFDO1lBQ3ZENXpCLGNBQWMsQ0FBQ3pZLGdCQUFnQixDQUFDLFdBQVcsRUFBRXFzQyxjQUFhLENBQUM7WUFDM0R4ekMsS0FBSSxDQUFDRCxZQUFZLENBQUNNLEdBQUcsQ0FBQyxJQUFJMUIsd0RBQVUsQ0FBQztjQUFBLE9BQU1ELGdFQUFXLENBQUNpQixLQUFLLENBQUN5TyxZQUFZLENBQUNrc0IsU0FBUyxDQUFDO1lBQUEsRUFBQyxDQUFDO1lBRXRGO1VBQ0YsQ0FBQyxDQUFDO1VBRUYsT0FBTyxJQUFJamQsT0FBTyxDQUFPLFVBQUF3TCxPQUFPLEVBQUk7WUFDbENBLE9BQU8sQ0FBQyxDQUFDO1VBQ1gsQ0FBQyxDQUFDLENBQUNyTSxJQUFJLENBQUMsWUFBTTtZQUNaLElBQUksQ0FBQzRuQiw0QkFBNEIsRUFBRTtjQUNqQztZQUNGO1lBRUFwa0MsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsK0JBQStCLEVBQUVoSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRWs4Qiw0QkFBNEIsQ0FBQ2hCLGtCQUFrQixDQUFDaGdCLEdBQUcsQ0FBQztZQUV0SSxPQUFPeEQsY0FBYyxDQUFDd0osbUJBQW1CLENBQUNnYiw0QkFBNEIsQ0FBQ2hCLGtCQUFrQixDQUFDLENBQ3ZGdGtCLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2NBQ1ZoSyxLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRWhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUFFazhCLDRCQUE0QixDQUFDaEIsa0JBQWtCLEVBQUVwNUIsQ0FBQyxDQUFDdUksT0FBTyxDQUFDO2NBRTNLLE1BQU12SSxDQUFDO1lBQ1QsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDLENBQUN3UyxJQUFJLENBQUMsWUFBTTtZQUNaLElBQUksQ0FBQ2txQiwrQkFBK0IsRUFBRTtjQUNwQztZQUNGO1lBRUExbUMsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsaUNBQWlDLEVBQUVoSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRXcrQiwrQkFBK0IsQ0FBQ3RELGtCQUFrQixDQUFDaGdCLEdBQUcsQ0FBQztZQUUzSSxPQUFPeEQsY0FBYyxDQUFDK0osb0JBQW9CLENBQUMrYywrQkFBK0IsQ0FBQ3RELGtCQUFrQixDQUFDLENBQzNGdGtCLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2NBQ1ZoSyxLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyw4REFBOEQsRUFBRWhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUFFdytCLCtCQUErQixDQUFDdEQsa0JBQWtCLEVBQUVwNUIsQ0FBQyxDQUFDdUksT0FBTyxDQUFDO2NBRS9LLE1BQU12SSxDQUFDO1lBQ1QsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDLENBQUN3UyxJQUFJLENBQUMsWUFBTTtZQUNaLElBQUksQ0FBQ21xQiw4QkFBOEIsRUFBRTtjQUNuQztZQUNGO1lBRUEzbUMsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUVoSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFBRXkrQiw4QkFBOEIsQ0FBQ3ZELGtCQUFrQixDQUFDaGdCLEdBQUcsQ0FBQztZQUV6SSxPQUFPeEQsY0FBYyxDQUFDK0osb0JBQW9CLENBQUNnZCw4QkFBOEIsQ0FBQ3ZELGtCQUFrQixDQUFDLENBQzFGdGtCLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO2NBQ1ZoSyxLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyw4REFBOEQsRUFBRWhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUFFeStCLDhCQUE4QixDQUFDdkQsa0JBQWtCLEVBQUVwNUIsQ0FBQyxDQUFDdUksT0FBTyxDQUFDO2NBRTlLLE1BQU12SSxDQUFDO1lBQ1QsQ0FBQyxDQUFDLENBQ0R3UyxJQUFJLENBQUMsWUFBTTtjQUNWLE9BQU9vRCxjQUFjLENBQUNvSixZQUFZLENBQUM7Z0JBQ2pDMUgsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekJDLG1CQUFtQixFQUFFO2NBQ3ZCLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDL0UsSUFBSSxDQUFDLFVBQUFpM0IsTUFBTSxFQUFJO2NBQ2hCenpDLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdDQUFnQyxFQUFFaEosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3pwQixRQUFRLEVBQUV1ckMsTUFBTSxDQUFDO2NBRTFGLElBQU14ZixRQUFRLEdBQUdqMEIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQ3QwQixLQUFpQjtjQUVoRSxPQUFPczBCLFFBQVEsQ0FBQ3RLLG9CQUFvQixDQUFDd0ssTUFBTSxFQUFFc2YsTUFBTSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDajNCLElBQUksQ0FBQyxVQUFBazNCLEtBQUEsRUFBa0M7Y0FBQSxJQUFoQzMwQixNQUFNLEdBQUEyMEIsS0FBQSxDQUFOMzBCLE1BQU07Z0JBQUVxa0Isa0JBQWtCLEdBQUFzUSxLQUFBLENBQWxCdFEsa0JBQWtCO2NBQ2xDcGpDLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdLLEtBQUksQ0FBQzJ6Qyw0Q0FBNEMsQ0FBQzUwQixNQUFNLENBQUM7Y0FFNUYsSUFBSUEsTUFBTSxLQUFLLElBQUksRUFBRTtnQkFDbkIvZSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO2dCQUMxQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3lCLE9BQU8sQ0FBQ3p6QixLQUFLLEdBQUcsSUFBSTtnQkFDekNLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUMyQixPQUFPLENBQUMzekIsS0FBSyxHQUFHLEtBQUs7Z0JBRTFDO2NBQ0Y7Y0FFQSxPQUFPaWdCLGNBQWMsQ0FBQ3dKLG1CQUFtQixDQUFDZ2Esa0JBQTJDLENBQUMsQ0FDbkZ0a0IsS0FBSyxDQUFDLFVBQUE5VSxDQUFDLEVBQUk7Z0JBQ1ZoSyxLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRWhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUFFazdCLGtCQUFrQixFQUFFcDVCLENBQUMsQ0FBQ3VJLE9BQU8sQ0FBQztnQkFFOUksTUFBTXZJLENBQUM7Y0FDVCxDQUFDLENBQUM7WUFDTixDQUFDLENBQUM7VUFDTixDQUFDLENBQUMsQ0FBQ3dTLElBQUksQ0FBQyxZQUFNO1lBQ1orYixtQkFBbUIsQ0FBQ3R3QixPQUFPLENBQUNqSSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsQ0FBQztZQUUxRCxPQUFPbXJDLGtCQUFrQjtVQUMzQixDQUFDLENBQUMsQ0FBQzcyQixJQUFJLENBQUMsVUFBQWdHLFdBQVcsRUFBSTtZQUFBLElBQUFveEIscUJBQUEsRUFBQUMsc0JBQUE7WUFDckIsSUFBSXpCLGdDQUFnQyxJQUFJeHlCLGNBQWMsYUFBZEEsY0FBYyxnQkFBQWcwQixxQkFBQSxHQUFkaDBCLGNBQWMsQ0FBRXVELHdCQUF3QixjQUFBeXdCLHFCQUFBLGVBQXhDQSxxQkFBQSxDQUEwQ3h3QixHQUFHLEVBQUU7Y0FBQSxJQUFBMHdCLHFCQUFBLEVBQUFDLHNCQUFBO2NBQ3JGLElBQU1DLHVCQUF1QixHQUFHLElBQUkzeEIsdURBQVMsQ0FBQ3pDLGNBQWMsQ0FBQ3VELHdCQUF3QixDQUFDQyxHQUFHLENBQUM7Y0FFMUZwakIsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDd00sVUFBVSxDQUFDeFosS0FBSyxHQUFHbWEsa0ZBQWlCLENBQUNLLGlDQUFpQyxDQUFDMlUsdUJBQXVCLENBQUN2d0IsVUFBNEIsQ0FBQztjQUN6SnpqQixLQUFJLENBQUM2eEIsdUJBQXVCLENBQUNpTSxVQUFVLENBQUNqWixLQUFLLEdBQUcwWixrRkFBaUIsQ0FBQ0ksaUNBQWlDLENBQUNxVix1QkFBdUIsQ0FBQ3p3QixVQUE0QixDQUFDO2NBRXpKLElBQU0wd0IsU0FBUyxHQUFHcjBCLGNBQWMsQ0FBQ2tLLFlBQVksQ0FBQyxDQUFDO2NBQy9DO2NBQ0EsSUFBTXVVLFVBQVUsR0FBR3IrQixLQUFJLENBQUM2eEIsdUJBQXVCLENBQUN3TSxVQUFVLENBQUNOLGdCQUFnQixHQUFHdmIsV0FBVyxDQUFDMHhCLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQzdHO2NBQ0EsSUFBTUMsa0JBQWtCLEdBQUduMEMsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDd00sVUFBVSxDQUFDTCxRQUFRLEdBQUdpVyxTQUFTLENBQUNwWCxNQUFNLENBQUMsVUFBQW1CLFFBQVE7Z0JBQUEsT0FBSUEsUUFBUSxDQUFDamIsS0FBSyxLQUFLc2IsVUFBVTtjQUFBLEVBQUMsQ0FBQyxDQUFDLENBQUM7Y0FFNUlyK0IsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDd00sVUFBVSxDQUFDSixHQUFHLEdBQUdyZSxjQUFjLENBQUN3MEIsdUJBQXVCLElBQUFOLHFCQUFBLEdBQ2hGbDBCLGNBQWMsQ0FBQzZJLGVBQWUsQ0FBQyxDQUFDLENBQUNvVSxNQUFNLENBQUMsVUFBQXdYLFdBQVc7Z0JBQUEsT0FBSUEsV0FBVyxDQUFDclcsUUFBUSxLQUFLbVcsa0JBQWtCO2NBQUEsRUFBQyxDQUFDLENBQUMsQ0FBQyxjQUFBTCxxQkFBQSx1QkFBdEdBLHFCQUFBLENBQXdHN1YsR0FBRyxHQUMzRyxJQUFJO2NBRVIsSUFBTUgsVUFBVSxHQUFHOTlCLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQ2lNLFVBQVUsQ0FBQ0MsZ0JBQWdCLEdBQUd2YixXQUFXLENBQUM4eEIsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FDN0csSUFBTUMsa0JBQWtCLEdBQUd2MEMsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDaU0sVUFBVSxDQUFDRSxRQUFRLEdBQUdpVyxTQUFTLENBQUNwWCxNQUFNLENBQUMsVUFBQW1CLFFBQVE7Z0JBQUEsT0FBSUEsUUFBUSxDQUFDamIsS0FBSyxLQUFLK2EsVUFBVTtjQUFBLEVBQUMsQ0FBQyxDQUFDLENBQUM7Y0FFNUk5OUIsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDaU0sVUFBVSxDQUFDRyxHQUFHLEdBQUdyZSxjQUFjLENBQUN3MEIsdUJBQXVCLElBQUFMLHNCQUFBLEdBQ2hGbjBCLGNBQWMsQ0FBQzZJLGVBQWUsQ0FBQyxDQUFDLENBQUNvVSxNQUFNLENBQUMsVUFBQXdYLFdBQVc7Z0JBQUEsT0FBSUEsV0FBVyxDQUFDclcsUUFBUSxLQUFLdVcsa0JBQWtCO2NBQUEsRUFBQyxDQUFDLENBQUMsQ0FBQyxjQUFBUixzQkFBQSx1QkFBdEdBLHNCQUFBLENBQXdHOVYsR0FBRyxHQUMzRyxJQUFJO2NBRVJqK0IsS0FBSSxDQUFDRCxZQUFZLENBQUNNLEdBQUcsQ0FBQ3V4QywwRUFBaUIsQ0FBQzRDLDJCQUEyQixDQUFDeDBDLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQyxDQUFDO2NBRWxHLElBQU00aUIsOEJBQThCLEdBQUd6MEMsS0FBSSxDQUFDMDBCLDhCQUE4QixDQUFDd0gscUJBQXFCLENBQUN2OEIsS0FBSyxJQUFJSyxLQUFJLENBQUMwMEIsOEJBQThCLENBQUN5SCx1QkFBdUIsQ0FBQ3g4QixLQUFLO2NBRTNLLElBQUk4MEMsOEJBQThCLEVBQUU7Z0JBQ2xDLElBQU1DLG9DQUEwRSxHQUFHO2tCQUNqRnhzQyxRQUFRLEVBQUVsSSxLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVE7a0JBQ3ZDMmMsS0FBSyxFQUFFN2tCLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQ3dNLFVBQVUsQ0FBQ3haLEtBQUs7a0JBQ3BEaU0sWUFBWSxFQUFFOXdCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNiLFlBQVk7a0JBQy9DcVksb0NBQW9DLEVBQUVucEMsS0FBSSxDQUFDMDBCLDhCQUE4QixDQUFDSyw2QkFBNkI7a0JBQ3ZHaVUscUNBQXFDLEVBQUVocEMsS0FBSSxDQUFDMDBCLDhCQUE4QixDQUFDTyw4QkFBOEI7a0JBQ3pHbVUsZ0JBQWdCLEVBQUVwcEMsS0FBSSxDQUFDMDBCLDhCQUE4QixDQUFDRyxTQUFTO2tCQUMvRG1KLFFBQVEsRUFBRW1XLGtCQUFrQjtrQkFDNUJsVyxHQUFHLEVBQUVqK0IsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDd00sVUFBVSxDQUFDSixHQUFJO2tCQUNqRGlMLE9BQU8sRUFBRWxwQyxLQUFJLENBQUM2eEIsdUJBQXVCLENBQUN3TSxVQUFVLENBQUNOLGdCQUFnQixDQUFDM1osRUFBRztrQkFDckUrWixzQkFBc0IsRUFBRW4rQixLQUFJLENBQUM2eEIsdUJBQXVCLENBQUN3TSxVQUFVLENBQUNGLHNCQUF1QjtrQkFDdkZDLHNCQUFzQixFQUFFcCtCLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQ3dNLFVBQVUsQ0FBQ0Q7Z0JBQ2xFLENBQUM7Z0JBRURwK0IsS0FBSSxDQUFDRCxZQUFZLENBQUNNLEdBQUcsQ0FBQyxJQUFJc29DLG1GQUE2QixDQUFDK0wsb0NBQW9DLENBQUMsQ0FBQztjQUNoRztjQUVBLElBQU1DLDZCQUE2QixHQUFHMzBDLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQ1IsMkJBQTJCLENBQUMxeEIsS0FBSztjQUVwRyxJQUFJZzFDLDZCQUE2QixFQUFFO2dCQUNqQyxJQUFNQyxtQ0FBd0UsR0FBRztrQkFDL0V2VyxVQUFVLEVBQUVyK0IsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDd00sVUFBVTtrQkFDbkRQLFVBQVUsRUFBRTk5QixLQUFJLENBQUM2eEIsdUJBQXVCLENBQUNpTSxVQUFVO2tCQUNuRHRNLHNCQUFzQixFQUFFeHhCLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQ0wsc0JBQXVCO2tCQUM1RUMsc0JBQXNCLEVBQUV6eEIsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDSjtnQkFDdkQsQ0FBQztnQkFFRHp4QixLQUFJLENBQUNELFlBQVksQ0FBQ00sR0FBRyxDQUFDLElBQUl3eEMscUZBQTRCLENBQUMrQyxtQ0FBbUMsQ0FBQyxDQUFDO2NBQzlGO2NBRUFoRCwwRUFBaUIsQ0FBQ2lELDhCQUE4QixDQUFDNzBDLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQztZQUNoRjtZQUVBLElBQUk3eEIsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDVCxvQkFBb0IsQ0FBQ3p4QixLQUFLLEVBQUU7Y0FDM0QsSUFBQW0xQyxxQkFBQSxHQUF5Q2xELDBFQUFpQixDQUFDbUQsdUNBQXVDLENBQUN2eUIsV0FBVyxFQUFFeGlCLEtBQUksQ0FBQzZ4Qix1QkFBdUIsQ0FBQ1AsNEJBQTRCLEVBQUV0eEIsS0FBSSxDQUFDNnhCLHVCQUF1QixDQUFDTiw0QkFBNEIsQ0FBQztnQkFBOU55akIsaUJBQWlCLEdBQUFGLHFCQUFBLENBQWpCRSxpQkFBaUI7Z0JBQUVuZSxXQUFXLEdBQUFpZSxxQkFBQSxDQUFYamUsV0FBVztjQUVyQzcyQixLQUFJLENBQUNELFlBQVksQ0FBQ00sR0FBRyxDQUFDdzJCLFdBQVcsQ0FBQztjQUNsQ3JVLFdBQVcsR0FBR3d5QixpQkFBaUI7WUFDakM7WUFFQWgxQyxLQUFJLENBQUM0eEIsc0JBQXNCLENBQUNwUCxXQUFXLENBQUM3aUIsS0FBSyxHQUFHNmlCLFdBQVc7WUFFM0QsSUFBTXl5QixvQkFBb0IsR0FBRyxJQUFJMXlCLGtFQUFvQixDQUFDM0MsY0FBYyxFQUFFNEMsV0FBVyxFQUFFLENBQUFxeEIsc0JBQUEsR0FBQTd6QyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDdDBCLEtBQUssY0FBQWswQyxzQkFBQSxlQUFuQ0Esc0JBQUEsQ0FBcUNydkIsYUFBYSxHQUFHeGtCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNzQyxRQUFRLENBQUN0MEIsS0FBSyxDQUFDNmtCLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRWxNeGtCLEtBQUksQ0FBQ0QsWUFBWSxDQUFDTSxHQUFHLENBQUM0MEMsb0JBQW9CLENBQUM7WUFFM0MsSUFBTUMseUNBQXlDLEdBQUdELG9CQUFvQixDQUFDRSxZQUFZLENBQUNobUMsU0FBUyxDQUFDLFVBQUFzaEMsVUFBVSxFQUFJO2NBQzFHendDLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNwTixhQUFhLENBQUM1a0IsS0FBSyxHQUFHOHdDLFVBQVU7Y0FFckQsSUFBSSxDQUFDQSxVQUFVLEVBQUU7Z0JBQ2Y7Y0FDRjtjQUVBLElBQUksQ0FBQ3p3QyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDOEwsaUJBQWlCLElBQUksQ0FBQ3o5QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDNkwsaUJBQWlCLEVBQUU7Z0JBQ3RGeDlCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM2TCxpQkFBaUIsR0FBR2lULFVBQVUsQ0FBQzl1QixLQUFLO2dCQUN6RDNoQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDOEwsaUJBQWlCLEdBQUdnVCxVQUFVLENBQUM3dUIsS0FBSztnQkFFekQ7Y0FDRjtjQUVBLElBQUl3ekIsZ0JBQWdCLEdBQUcsS0FBSztjQUM1QixJQUFJQyxnQkFBZ0IsR0FBRyxLQUFLO2NBRTVCLElBQUk1RSxVQUFVLENBQUM5dUIsS0FBSyxFQUFFO2dCQUNwQixJQUFJM2hCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM2TCxpQkFBaUIsSUFBSXg5QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDNkwsaUJBQWlCLENBQUN4Z0IsU0FBUyxLQUFLeXpCLFVBQVUsQ0FBQzl1QixLQUFLLENBQUMzRSxTQUFTLEVBQUU7a0JBQzdIbzRCLGdCQUFnQixHQUFHcDFDLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM2TCxpQkFBaUIsSUFBSXg5QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDNkwsaUJBQWlCLENBQUNoWSxhQUFhLEtBQUtpckIsVUFBVSxDQUFDOXVCLEtBQUssQ0FBQzZELGFBQWE7a0JBRXBKLElBQUk0dkIsZ0JBQWdCLElBQUkxMkMsZ0VBQVcsQ0FBQ2lCLEtBQUssQ0FBQ3d6QyxpQkFBaUIsRUFBRTtvQkFDM0RuekMsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQ2YsMEdBQTBHLEVBQzFHaEosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3pwQixRQUFRLEVBQzdCdW9DLFVBQVUsQ0FBQzl1QixLQUFLLENBQUM2RCxhQUFhLEVBQzlCeGxCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM2TCxpQkFBaUIsQ0FBQ2hZLGFBQWEsRUFDcEQsSUFBSWhlLHVEQUFTLENBQUNpcEMsVUFBVSxDQUFDOXVCLEtBQUssQ0FBQzNFLFNBQVMsR0FBR2hkLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM2TCxpQkFBaUIsQ0FBQ3hnQixTQUFTLENBQUMsQ0FBQy9ULFdBQVcsQ0FBQyxDQUMzRyxDQUFDO2tCQUNIO2tCQUVBakosS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQzZMLGlCQUFpQixHQUFHaVQsVUFBVSxDQUFDOXVCLEtBQUs7Z0JBQzNEO2NBQ0Y7Y0FFQSxJQUFJOHVCLFVBQVUsQ0FBQzd1QixLQUFLLEVBQUU7Z0JBQ3BCLElBQUk1aEIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQzhMLGlCQUFpQixJQUFJejlCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM4TCxpQkFBaUIsQ0FBQ3pnQixTQUFTLEtBQUt5ekIsVUFBVSxDQUFDN3VCLEtBQUssQ0FBQzVFLFNBQVMsRUFBRTtrQkFDN0hxNEIsZ0JBQWdCLEdBQUdyMUMsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQzhMLGlCQUFpQixJQUFJejlCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUM4TCxpQkFBaUIsQ0FBQ2pZLGFBQWEsS0FBS2lyQixVQUFVLENBQUM3dUIsS0FBSyxDQUFDNEQsYUFBYTtrQkFFcEosSUFBSTZ2QixnQkFBZ0IsSUFBSTMyQyxnRUFBVyxDQUFDaUIsS0FBSyxDQUFDd3pDLGlCQUFpQixFQUFFO29CQUMzRG56QyxLQUFJLENBQUMrSSxPQUFPLENBQUNDLElBQUksQ0FDZiwwR0FBMEcsRUFDMUdoSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDenBCLFFBQVEsRUFDN0J1b0MsVUFBVSxDQUFDN3VCLEtBQUssQ0FBQzRELGFBQWEsRUFDOUJ4bEIsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQzhMLGlCQUFpQixDQUFDalksYUFBYSxFQUNwRCxJQUFJaGUsdURBQVMsQ0FBQ2lwQyxVQUFVLENBQUM3dUIsS0FBSyxDQUFDNUUsU0FBUyxHQUFHaGQsS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQzhMLGlCQUFpQixDQUFDemdCLFNBQVMsQ0FBQyxDQUFDL1QsV0FBVyxDQUFDLENBQzNHLENBQUM7a0JBQ0g7a0JBRUFqSixLQUFJLENBQUMyeEIsZUFBZSxDQUFDOEwsaUJBQWlCLEdBQUdnVCxVQUFVLENBQUM3dUIsS0FBSztnQkFDM0Q7Y0FDRjtjQUVBLElBQUksQ0FBQ2xqQixnRUFBVyxDQUFDaUIsS0FBSyxDQUFDd3pDLGlCQUFpQixFQUFFO2dCQUN4Q256QyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLCtEQUFZLENBQUNtTCxPQUFPO2dCQUV2RDtjQUNGO2NBRUEsSUFBSXFhLGdCQUFnQixJQUFJRCxnQkFBZ0IsRUFBRTtnQkFDeEMsSUFBTWxDLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBQSxFQUFlO2tCQUNoQ2x6QyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLCtEQUFZLENBQUN5TCxlQUFlO2tCQUUvRCxJQUFJdDdCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNiLFlBQVksQ0FBQ254QixLQUFLLEVBQUU7b0JBQzNDSyxLQUFJLENBQUMyeEIsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxDQUFDMDJCLEtBQUssQ0FBQyxDQUFDO29CQUMvQ3IyQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDYixZQUFZLENBQUNueEIsS0FBSyxDQUFDMjJCLFNBQVMsR0FBRyxJQUFJO2tCQUMxRDtrQkFFQXQyQixLQUFJLENBQUMyeEIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDdnpCLEtBQUssR0FBRyxLQUFLO2tCQUMxQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3J6QixLQUFLLEdBQUcsSUFBSTtrQkFFekNzMUMsb0JBQW9CLENBQUNuMUMsT0FBTyxDQUFDLENBQUM7a0JBRTlCLElBQU1xZCxPQUFPLEdBQUduZCxLQUFJLENBQUN1N0Isb0JBQW9CLENBQUMsQ0FBQyxDQUN4Q3pjLEtBQUssQ0FBQyxVQUFBOVUsQ0FBQyxFQUFJO29CQUNWaEssS0FBSSxDQUFDK0ksT0FBTyxDQUFDUyxLQUFLLENBQ2hCLHlFQUF5RSxFQUN6RXhKLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN6cEIsUUFBUSxFQUM3QjBYLGNBQWMsQ0FBQ3NJLGtCQUFrQixFQUNqQ2xlLENBQ0YsQ0FBQztrQkFDSCxDQUFDLENBQUM7Z0JBQ04sQ0FBQztnQkFFRGhLLEtBQUksQ0FBQ296Qyx1QkFBdUIsQ0FBQ3h6QixjQUFjLEVBQUVzekIsYUFBYSxDQUFDO2NBQzdELENBQUMsTUFBTTtnQkFDTGx6QyxLQUFJLENBQUM0eEIsc0JBQXNCLENBQUNrSywrQkFBK0IsR0FBRyxDQUFDO2dCQUUvRCxJQUFJOTdCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEtBQUtrd0IsK0RBQVksQ0FBQ3VMLFlBQVksSUFBSXA3QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxLQUFLa3dCLCtEQUFZLENBQUNtTCxPQUFPLEVBQUU7a0JBQy9IO2dCQUNGO2dCQUVBaDdCLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNPLEtBQUssQ0FBQ3Z5QixLQUFLLEdBQUdLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUN1QixPQUFPLENBQUN2ekIsS0FBSyxHQUFHa3dCLCtEQUFZLENBQUM2RixPQUFPLEdBQUc3RiwrREFBWSxDQUFDc0wsTUFBTTtnQkFDbEhuN0IsS0FBSSxDQUFDK0ksT0FBTyxDQUFDQyxJQUFJLENBQUMsbURBQW1ELEVBQUU2bUIsK0RBQVksQ0FBQzd2QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxDQUFDLENBQUM7Y0FDeEg7WUFDRixDQUFDLENBQUM7WUFFRkssS0FBSSxDQUFDRCxZQUFZLENBQUNNLEdBQUcsQ0FBQzYwQyx5Q0FBeUMsQ0FBQztZQUVoRSxJQUFJLENBQUN6dEMsNkNBQUcsQ0FBQ3FuQiw0QkFBNEIsRUFBRTtjQUNyQzl1QixLQUFJLENBQUMyeEIsZUFBZSxDQUFDVyxTQUFTLENBQUMzeUIsS0FBSyxHQUFHLEtBQUs7Y0FDNUNLLEtBQUksQ0FBQzJ4QixlQUFlLENBQUNhLFVBQVUsQ0FBQzd5QixLQUFLLEdBQUcsSUFBSTtjQUM1Q0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3J6QixLQUFLLEdBQUcsS0FBSztjQUMxQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQ3Z6QixLQUFLLEdBQUcsS0FBSztjQUMxQ0ssS0FBSSxDQUFDMnhCLGVBQWUsQ0FBQ08sS0FBSyxDQUFDdnlCLEtBQUssR0FBR2t3QiwrREFBWSxDQUFDc0wsTUFBTTtjQUV0RDtZQUNGO1lBRUEsT0FBT3pELDZCQUE2QixDQUFDbFYsV0FBVyxDQUFDO1VBQ25ELENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztNQUNOLENBQUMsQ0FBQztJQUNOO0VBQUM7SUFBQS9pQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMjFDLHNCQUFBLEdBQUE3M0IsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUVELFNBQUFnQyxRQUNFNjNCLHNCQUE4QyxFQUM5QzlPLGdCQUFrQztRQUFBLElBQUErTyxtQkFBQTtRQUFBLE9BQUFoNkIsWUFBQSxHQUFBQyxDQUFBLFdBQUFvQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQWhFLENBQUE7WUFBQTtjQUFBLElBQzdCMDdCLHNCQUFzQjtnQkFBQTEzQixRQUFBLENBQUFoRSxDQUFBO2dCQUFBO2NBQUE7Y0FDekI0c0IsZ0JBQWdCLEdBQUcxa0IscUVBQXVCLENBQUNDLGtCQUFrQixDQUFDeWtCLGdCQUFnQixDQUFDO2NBQUMsT0FBQTVvQixRQUFBLENBQUFqRCxDQUFBLElBRXpFblQsNkNBQUcsQ0FBQ2tuQixxQkFBcUIsQ0FBQ2h2QixLQUFLLENBQUM2Z0Isb0JBQW9CLENBQUNpbUIsZ0JBQWdCLENBQUM7WUFBQTtjQUd6RStPLG1CQUFtQixHQUFBeE8sYUFBQSxDQUFBQSxhQUFBLEtBQ3BCdU8sc0JBQXNCLENBQUNudEIsZ0JBQWdCLENBQUMsQ0FBQyxHQUN6Q3FlLGdCQUFnQjtjQUdyQjhPLHNCQUFzQixDQUFDanRCLGdCQUFnQixDQUFDa3RCLG1CQUFtQixDQUFDO2NBQUMsT0FBQTMzQixRQUFBLENBQUFqRCxDQUFBLElBRXREMjZCLHNCQUFzQjtVQUFBO1FBQUEsR0FBQTczQixPQUFBO01BQUEsQ0FDOUI7TUFBQSxTQWpCYWsxQixxQkFBcUJBLENBQUExMEIsRUFBQSxFQUFBK0ssR0FBQTtRQUFBLE9BQUFxc0Isc0JBQUEsQ0FBQW4zQixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUFyQncvQixxQkFBcUI7SUFBQTtFQUFBO0lBQUFuekMsR0FBQTtJQUFBRSxLQUFBLEVBbUJuQyxTQUFReXpDLHVCQUF1QkEsQ0FBQ3h6QixjQUErQixFQUFFc3pCLGFBQXlCLEVBQVE7TUFBQSxJQUFBeitCLE1BQUE7TUFDaEcsSUFBSW1MLGNBQWMsQ0FBQ3NJLGtCQUFrQixLQUFLLFFBQVEsRUFBRTtRQUNsRDtNQUNGO01BRUEsSUFBSSxDQUFDeUosZUFBZSxDQUFDTyxLQUFLLENBQUN2eUIsS0FBSyxHQUFHa3dCLCtEQUFZLENBQUN1TCxZQUFZO01BRTVELElBQUksSUFBSSxDQUFDeEosc0JBQXNCLENBQUNrSywrQkFBK0IsR0FBR3IwQiw2Q0FBRyxDQUFDZ3VDLDhDQUE4QyxJQUFJLENBQUNodUMsNkNBQUcsQ0FBQ2l1QyxvQ0FBb0MsRUFBRTtRQUFBLElBQUFDLHNCQUFBO1FBQ2pLLElBQUksQ0FBQy9qQixzQkFBc0IsQ0FBQ2tLLCtCQUErQixFQUFFO1FBRTdELElBQU04WixpQkFBaUIsR0FBRyxFQUFBRCxzQkFBQSxHQUFBLzFCLGNBQWMsQ0FBQ29JLHVCQUF1QixjQUFBMnRCLHNCQUFBLHVCQUF0Q0Esc0JBQUEsQ0FBd0MvdUMsSUFBSSxNQUFLLE9BQU87UUFFbEYsSUFBSTNDLHVFQUFpQixDQUFDd3VDLG1CQUFtQixJQUN2QyxDQUFDN3lCLGNBQWMsQ0FBQzh5Qix3QkFBd0IsSUFDeEMsQ0FBQzl5QixjQUFjLENBQUMreUIsd0JBQXdCLElBQ3hDLENBQUNpRCxpQkFBaUIsRUFDbEI7VUFDQTtRQUNGO1FBRUEsSUFBSSxDQUFDN3NDLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGdEQUFnRCxDQUFDO1FBRW5FLElBQU1nZix1QkFBdUIsR0FBR3BJLGNBQWMsQ0FBQ29JLHVCQUF1QjtRQUN0RSxJQUFNN0ssT0FBTyxHQUFHeUMsY0FBYyxDQUFDd0IsV0FBVyxDQUFDO1VBQUN5MEIsVUFBVSxFQUFFO1FBQUksQ0FBQyxDQUFDLENBQUNyNUIsSUFBSSxDQUFDLFVBQUFzNUIsS0FBSyxFQUFJO1VBQzNFLE9BQU9sMkIsY0FBYyxDQUFDd0osbUJBQW1CLENBQUMwc0IsS0FBSyxDQUFDLENBQUN0NUIsSUFBSSxDQUFDLFlBQU07WUFDMUQsT0FBT29ELGNBQWMsQ0FBQ3dKLG1CQUFtQixDQUFDcEIsdUJBQXVCLENBQUM7VUFDcEUsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0NsSixLQUFLLENBQUMsVUFBQTlVLENBQUMsRUFBSTtVQUNWeUssTUFBSSxDQUFDMUwsT0FBTyxDQUFDUyxLQUFLLENBQUMscUNBQXFDLEVBQUVRLENBQUMsQ0FBQztVQUM1RHlLLE1BQUksQ0FBQ21kLHNCQUFzQixDQUFDa0ssK0JBQStCLEdBQUcsQ0FBQztVQUMvRG9YLGFBQWEsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztRQUVKO01BQ0Y7TUFFQSxJQUFJLENBQUNucUMsT0FBTyxDQUFDQyxJQUFJLENBQUMsbUZBQW1GLEVBQUUsSUFBSSxDQUFDNG9CLHNCQUFzQixDQUFDa0ssK0JBQStCLENBQUM7TUFDbkssSUFBSSxDQUFDbEssc0JBQXNCLENBQUNrSywrQkFBK0IsR0FBRyxDQUFDO01BQy9Eb1gsYUFBYSxDQUFDLENBQUM7SUFDakI7RUFBQztJQUFBenpDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUM3QjtFQUFDO0lBQUFMLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFnMEMsNENBQTRDQSxDQUFDNTBCLE1BQWtDLEVBQWdCO01BQ3JHLFFBQVFBLE1BQU07UUFDWixLQUFLLElBQUk7VUFDUCxPQUFPOFEsK0RBQVksQ0FBQzRKLFFBQVE7UUFDOUIsS0FBSyxjQUFjO1VBQ2pCLE9BQU81SiwrREFBWSxDQUFDNkosWUFBWTtRQUNsQyxLQUFLLFdBQVc7UUFDaEIsS0FBSyxVQUFVO1FBQ2YsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztVQUNaLE9BQU83SiwrREFBWSxDQUFDbUssVUFBVTtRQUNoQyxLQUFLLFFBQVE7VUFDWCxPQUFPbkssK0RBQVksQ0FBQzFyQixLQUFLO1FBQzNCO1VBQ0VzTixtRUFBaUIsQ0FBQ3NOLE1BQU0sQ0FBQztNQUM3QjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xwQkg7QUFDQTtBQUNBOztBQUUrQztBQUNRO0FBRUE7QUFDSDtBQUdOO0FBQUEsSUFFekJ1dkIsV0FBVztFQWU5QixTQUFBQSxZQUFZeGQsWUFBOEIsRUFBRWhVLElBQVksRUFBRTVVLFFBQWdCLEVBQUVvbkMsV0FBbUIsRUFBRTF1QixPQUFnQyxFQUFFc1osbUJBQTZCLEVBQUU7SUFBQWo3QiwySUFBQSxPQUFBcXZDLFdBQUE7SUFBQXB2QywySUFBQSxrQkFkOUh3SSw2REFBYSxDQUFDRyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQUEzSSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQWV4RSxJQUFJLENBQUNxd0MsYUFBYSxHQUFHemUsWUFBWTtJQUNqQyxJQUFJLENBQUMwZSxLQUFLLEdBQUcxeUIsSUFBSTtJQUNqQixJQUFJLENBQUMyeUIsU0FBUyxHQUFHdm5DLFFBQVE7SUFDekIsSUFBSSxDQUFDd25DLFlBQVksR0FBR0MsU0FBUyxDQUFDTCxXQUFXLENBQUMsQ0FBQ00sT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDakUsSUFBSSxDQUFDakIsUUFBUSxHQUFHL3RCLE9BQU87SUFDdkIsSUFBSSxDQUFDMmEsb0JBQW9CLEdBQUdyQixtQkFBbUI7SUFDL0MsSUFBSSxDQUFDbjZCLFlBQVksR0FBRyxJQUFJbkIsNERBQWMsQ0FBQyxDQUFDO0lBQ3hDLElBQUksQ0FBQ20zQyxvQkFBb0IsR0FBRztNQUMxQkMsa0JBQWtCLEVBQUUsQ0FBQztNQUNyQkMsUUFBUSxFQUFFO0lBQ1osQ0FBQztJQUNELElBQUksQ0FBQ25ILE9BQU8sR0FBRyxJQUFJO0VBQ3JCO0VBQUMsT0FBQXR2Qyx3SUFBQSxDQUFBOHVDLFdBQUE7SUFBQTd1QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBeTJCLEtBQUtBLENBQUEsRUFBUztNQUNaLElBQUlvVywrREFBZ0IsQ0FBQzBKLEtBQUssRUFBRTtRQUMxQixJQUFNQyxhQUEyQixHQUFHO1VBQ2xDQyxHQUFHLEVBQUU7WUFBQ0Msd0JBQXdCLEVBQUU7VUFBTyxDQUFDO1VBQ3hDQyxRQUFRLEVBQUU7WUFBQ0MsZUFBZSxFQUFFO2NBQUN2VixPQUFPLEVBQUU7WUFBSztVQUFDLENBQUM7VUFDN0N3VixTQUFTLEVBQUU7WUFDVEMsc0JBQXNCLEVBQUUsQ0FBQztZQUN6QkMsYUFBYSxFQUFFLEVBQUU7WUFDakJDLFlBQVksRUFBRSxFQUFFO1lBQ2hCSixlQUFlLEVBQUU7Y0FDZnZWLE9BQU8sRUFBRSxLQUFLO2NBQ2Q0VixXQUFXLEVBQUUsRUFBRTtjQUNmQyxhQUFhLEVBQUU7WUFDakI7VUFDRjtRQUNGLENBQUM7UUFFRCxJQUFJLENBQUMvSCxPQUFPLEdBQUcsSUFBSXRDLCtEQUFnQixDQUFDMEosS0FBSyxDQUFDbkgsTUFBTSxDQUFDLElBQUksQ0FBQ1EsYUFBYSxDQUFDO1FBQ3BFLElBQUksQ0FBQ3VILFVBQVUsQ0FBQ1gsYUFBYSxDQUFDO1FBRTlCO01BQ0Y7SUFDRjtFQUFDO0lBQUExMkMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTBrQixRQUFRQSxDQUFBLEVBQStCO01BQ3JDLElBQUksQ0FBQyxJQUFJLENBQUN5cUIsT0FBTyxFQUFFO1FBQ2pCLE9BQU87VUFDTHRZLEtBQUssRUFBRSxDQUFDO1VBQ1JFLE1BQU0sRUFBRSxDQUFDO1VBQ1RzWCxXQUFXLEVBQUUsQ0FBQztVQUNkdmEsR0FBRyxFQUFFLENBQUM7VUFDTnFhLFlBQVksRUFBRXJCLHlEQUFhLENBQUNzQixlQUFlO1VBQzNDSyxZQUFZLEVBQUU7UUFDaEIsQ0FBQztNQUNIO01BRUEsSUFBTXFDLFVBQVUsR0FBQXpKLGFBQUEsQ0FBQUEsYUFBQSxLQUNYLElBQUksQ0FBQzhILE9BQU8sQ0FBQ3pxQixRQUFRLENBQUMsQ0FBQztRQUMxQjJwQixXQUFXLEVBQUUsQ0FBQztRQUNkdmEsR0FBRyxFQUFFO01BQUMsRUFDUDtNQUNELElBQU11YSxXQUFXLEdBQUcsSUFBSSxDQUFDdUIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7TUFDMUQsSUFBTTRCLGVBQWUsR0FBRyxDQUFDaHlDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUN1dkMsUUFBUSxDQUFDMUIsZUFBZSxJQUFJLElBQUk7TUFDM0UsSUFBTXhaLEdBQUcsR0FBR3RqQixJQUFJLENBQUNpaEMsR0FBRyxDQUFDLEdBQUcsRUFBRUQsZUFBZSxHQUFHbkQsV0FBVyxDQUFDO01BRXhELElBQUksSUFBSSxDQUFDdUIsYUFBYSxFQUFFO1FBQ3RCa0IsVUFBVSxDQUFDekMsV0FBVyxHQUFHQSxXQUFXO1FBQ3BDeUMsVUFBVSxDQUFDaGQsR0FBRyxHQUFHQSxHQUFHO1FBRXBCLElBQUksSUFBSSxDQUFDOGIsYUFBYSxDQUFDdUIsUUFBUSxJQUFJLElBQUksQ0FBQ3ZCLGFBQWEsQ0FBQ3VCLFFBQVEsQ0FBQ2xuQyxNQUFNLEVBQUU7VUFDckU2bUMsVUFBVSxDQUFDckMsWUFBWSxHQUFHLElBQUksQ0FBQ21CLGFBQWEsQ0FBQ3VCLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5RDtNQUNGO01BRUEsSUFBSU4sVUFBVSxDQUFDdUYsa0JBQWtCLEVBQUU7UUFDakMsSUFBSXZGLFVBQVUsQ0FBQ3VGLGtCQUFrQixJQUFJdkYsVUFBVSxDQUFDdUYsa0JBQWtCLEdBQUcsQ0FBQyxJQUFLLElBQUksQ0FBQ0Qsb0JBQW9CLENBQUNDLGtCQUFrQixJQUFJLElBQUksQ0FBQ0Qsb0JBQW9CLENBQUNDLGtCQUFrQixHQUFHdkYsVUFBVSxDQUFDdUYsa0JBQW1CLEVBQUU7VUFDeE12RixVQUFVLENBQUMzQyxZQUFZLEdBQUdyQix5REFBYSxDQUFDd0UsY0FBYztRQUN4RCxDQUFDLE1BQU0sSUFBSVIsVUFBVSxDQUFDd0YsUUFBUSxJQUFJeEYsVUFBVSxDQUFDd0YsUUFBUSxHQUFHLENBQUMsSUFBSyxJQUFJLENBQUNGLG9CQUFvQixDQUFDRSxRQUFRLElBQUksSUFBSSxDQUFDRixvQkFBb0IsQ0FBQ0UsUUFBUSxHQUFHeEYsVUFBVSxDQUFDd0YsUUFBUyxFQUFFO1VBQzdKeEYsVUFBVSxDQUFDM0MsWUFBWSxHQUFHckIseURBQWEsQ0FBQ29FLFdBQVc7UUFDckQsQ0FBQyxNQUFNLElBQUlKLFVBQVUsQ0FBQzd1QixLQUFLLEVBQUU7VUFDM0I2dUIsVUFBVSxDQUFDM0MsWUFBWSxHQUFHckIseURBQWEsQ0FBQ3lFLFlBQVk7UUFDdEQsQ0FBQyxNQUFNO1VBQ0xULFVBQVUsQ0FBQzNDLFlBQVksR0FBR3JCLHlEQUFhLENBQUNzQixlQUFlO1FBQ3pEO01BQ0Y7TUFFQSxJQUFJLENBQUNnSSxvQkFBb0IsQ0FBQ0Msa0JBQWtCLEdBQUd2RixVQUFVLENBQUN1RixrQkFBa0I7TUFDNUUsSUFBSSxDQUFDRCxvQkFBb0IsQ0FBQ0UsUUFBUSxHQUFHeEYsVUFBVSxDQUFDd0YsUUFBUTtNQUV4RCxPQUFPeEYsVUFBVTtJQUNuQjtFQUFDO0lBQUFoeEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUcsT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDQyxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO01BRTNCLElBQUksSUFBSSxDQUFDZ3ZDLE9BQU8sRUFBRTtRQUNoQixJQUFJLENBQUNBLE9BQU8sQ0FBQ2lJLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQ2pJLE9BQU8sQ0FBQ3VDLE9BQU8sQ0FBQyxDQUFDO01BQ3hCO01BRUEsSUFBSSxDQUFDdkMsT0FBTyxHQUFHLElBQUk7SUFDckI7RUFBQztJQUFBcnZDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFtM0MsVUFBVUEsQ0FBQ0UsWUFBMEIsRUFBUTtNQUFBLElBQUFDLGFBQUE7UUFBQWozQyxLQUFBO1FBQUFrM0MsY0FBQTtRQUFBQyxjQUFBO01BQ25ELENBQUFGLGFBQUEsT0FBSSxDQUFDbkksT0FBTyxjQUFBbUksYUFBQSx1QkFBWkEsYUFBQSxDQUFjRyxTQUFTLENBQUNKLFlBQVksQ0FBQztNQUVyQyxJQUFNSyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBQTtRQUFBLE9BQVNyM0MsS0FBSSxDQUFDdTdCLG9CQUFvQixDQUFDLENBQUM7TUFBQTtNQUV0RCxDQUFBMmIsY0FBQSxPQUFJLENBQUNwSSxPQUFPLGNBQUFvSSxjQUFBLHVCQUFaQSxjQUFBLENBQWMvdkMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFa3dDLFlBQVksQ0FBQztNQUVyRCxJQUFJLENBQUN0M0MsWUFBWSxDQUFDTSxHQUFHLENBQUMsSUFBSTFCLHdEQUFVLENBQUM7UUFBQSxJQUFBMjRDLGNBQUE7UUFBQSxRQUFBQSxjQUFBLEdBQU10M0MsS0FBSSxDQUFDOHVDLE9BQU8sY0FBQXdJLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY2p3QyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUVnd0MsWUFBWSxDQUFDO01BQUEsRUFBQyxDQUFDO01BRXJHLElBQU1sNkIsT0FBTyxJQUFBZzZCLGNBQUEsR0FBRyxJQUFJLENBQUNySSxPQUFPLGNBQUFxSSxjQUFBLHVCQUFaQSxjQUFBLENBQWNJLElBQUksQ0FBQyxJQUFJLENBQUM3SCxZQUFZLENBQUMsQ0FBQ2x6QixJQUFJLENBQUMsWUFBTTtRQUMvRHhjLEtBQUksQ0FBQytJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHVDQUF1QyxFQUFFaEosS0FBSSxDQUFDeXZDLFNBQVMsQ0FBQztRQUUxRSxJQUFJenZDLEtBQUksQ0FBQ3V2QyxhQUFhLENBQUN6VSxJQUFJLEVBQUU7VUFDM0I5NkIsS0FBSSxDQUFDdXZDLGFBQWEsQ0FBQ3pVLElBQUksQ0FBQyxDQUFDO1FBQzNCO01BQ0YsQ0FBQyxDQUFDLENBQUNoYyxLQUFLLENBQUMsVUFBQTlVLENBQUMsRUFBSTtRQUNaaEssS0FBSSxDQUFDK0ksT0FBTyxDQUFDUyxLQUFLLENBQUMsZ0RBQWdELEVBQUV4SixLQUFJLENBQUN5dkMsU0FBUyxFQUFFemxDLENBQUMsQ0FBQ3d0QyxJQUFJLEVBQUV4dEMsQ0FBQyxDQUFDO01BQ2pHLENBQUMsQ0FBQztJQUNKO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hKSDtBQUNBO0FBQ0E7O0FBRzJEO0FBQ2Y7QUFDRTtBQUNzQjtBQUFBLElBTS9Dd21CLGFBQWE7RUFhaEMsU0FBQUEsY0FBQSxFQUFjO0lBQUF2eEIsMklBQUEsT0FBQXV4QixhQUFBO0lBQ1osTUFBTSxJQUFJcnNCLEtBQUssQ0FBQyw4REFBOEQsQ0FBQztFQUNqRjtFQUFDLE9BQUEzRSx3SUFBQSxDQUFBZ3hCLGFBQUE7SUFBQS93QixHQUFBO0lBQUFFLEtBQUEsRUFkRCxTQUFPMGEsTUFBTUEsQ0FBQy9RLEtBQWEsRUFBRXNqQyxjQUE4QixFQUFFcUYscUJBQTRDLEVBQUVDLHNCQUE4QyxFQUFFQyw2QkFBNEQsRUFBRWpZLG1CQUF3QyxFQUFXO01BQzFRLElBQU11ZCxpQkFBaUIsR0FBR3J1QyxnRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDa0IsWUFBWTtNQUN2RSxJQUFNa3RDLFlBQVksR0FBR0QsaUJBQWlCLENBQUN6MEMsUUFBUSxDQUFDLFdBQVcsQ0FBQztNQUM1RCxJQUFNMjBDLFdBQVcsR0FBR0YsaUJBQWlCLENBQUN6MEMsUUFBUSxDQUFDLFdBQVcsQ0FBQztNQUUzRCxJQUFJMDBDLFlBQVksSUFBSUMsV0FBVyxFQUFFO1FBQy9CLE9BQU8sSUFBSWhMLHNEQUFhLENBQUNDLGNBQWMsRUFBRSxDQUFDK0ssV0FBVyxHQUFHakwsa0VBQXlCLENBQUNtQixJQUFJLEdBQUduQixrRUFBeUIsQ0FBQ2tMLFNBQVMsRUFBRTFkLG1CQUFtQixDQUFDO01BQ3BKO01BRUEsT0FBTyxJQUFJOFgsdURBQWMsQ0FBQ3BGLGNBQWMsRUFBRXFGLHFCQUFxQixFQUFFQyxzQkFBc0IsRUFBRUMsNkJBQTZCLEVBQUVqWSxtQkFBbUIsQ0FBQztJQUM5STtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekJIO0FBQ0E7QUFDQTs7QUFHdUQ7QUFDSDtBQUdOO0FBRTlDLElBQU0yZCxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNwQyxJQUFNQyx1QkFBdUIsR0FBRyxLQUFLO0FBQUMsSUFTakJ6SixTQUFTO0VBVzVCLFNBQUFBLFVBQVl2ZCxZQUE4QixFQUFFaFUsSUFBWSxFQUFFNVUsUUFBZ0IsRUFBRW9uQyxXQUFtQixFQUFFMXVCLE9BQWdDLEVBQUVzWixtQkFBNkIsRUFBRTtJQUFBajdCLDJJQUFBLE9BQUFvdkMsU0FBQTtJQUFBbnZDLDJJQUFBLGtCQVY5SHdJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFBQTNJLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBV3RFLElBQUksQ0FBQ3F3QyxhQUFhLEdBQUd6ZSxZQUFZO0lBQ2pDLElBQUksQ0FBQzBlLEtBQUssR0FBRzF5QixJQUFJO0lBQ2pCLElBQUksQ0FBQzJ5QixTQUFTLEdBQUd2bkMsUUFBUTtJQUN6QixJQUFJLENBQUN3bkMsWUFBWSxHQUFHQyxTQUFTLENBQUNMLFdBQVcsQ0FBQyxDQUFDTSxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztJQUNqRSxJQUFJLENBQUNqQixRQUFRLEdBQUcvdEIsT0FBTztJQUN2QixJQUFJLENBQUNrdUIsT0FBTyxHQUFHLElBQUk7SUFDbkIsSUFBSSxDQUFDaUosZUFBZSxHQUFHLENBQUM7SUFDeEIsSUFBSSxDQUFDeGMsb0JBQW9CLEdBQUdyQixtQkFBbUI7RUFDakQ7RUFBQyxPQUFBMTZCLHdJQUFBLENBQUE2dUMsU0FBQTtJQUFBNXVDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF5MkIsS0FBS0EsQ0FBQSxFQUFTO01BQUEsSUFBQXAyQixLQUFBO01BQ1osSUFBSXdzQywrREFBZ0IsQ0FBQ3dMLGVBQWUsRUFBRTtRQUFBLElBQUFmLGFBQUEsRUFBQUMsY0FBQTtRQUNwQyxJQUFNZixhQUE0QixHQUFBblAsYUFBQSxDQUFBQSxhQUFBLEtBQzdCLElBQUksQ0FBQzJILFFBQVE7VUFDaEJrSixrQkFBa0IsRUFBbEJBO1FBQWtCLEVBQ25CO1FBRUQsSUFBSSxDQUFDL0ksT0FBTyxHQUFHLElBQUl0QywrREFBZ0IsQ0FBQ3dMLGVBQWUsQ0FBQzNKLFNBQVMsQ0FBQyxJQUFJLENBQUN0bEMsT0FBTyxFQUFFLElBQUksQ0FBQ3dtQyxhQUFhLEVBQUU0RyxhQUFhLENBQUM7UUFDOUcsQ0FBQWMsYUFBQSxPQUFJLENBQUNuSSxPQUFPLGNBQUFtSSxhQUFBLHVCQUFaQSxhQUFBLENBQWM3Z0IsS0FBSyxDQUFDLElBQUksQ0FBQ3NaLFlBQVksQ0FBQztRQUV0QyxDQUFBd0gsY0FBQSxPQUFJLENBQUNwSSxPQUFPLGNBQUFvSSxjQUFBLHVCQUFaQSxjQUFBLENBQWMvdkMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQUE4d0MsV0FBVyxFQUFJO1VBQ3JELElBQUlqNEMsS0FBSSxDQUFDazRDLFNBQVMsQ0FBQyxDQUFDLElBQUlELFdBQVcsS0FBS0EsV0FBVyxDQUFDVCxJQUFJLEtBQUssQ0FBQyxJQUFJUyxXQUFXLENBQUNFLFFBQVEsS0FBSzNMLCtEQUFnQixDQUFDd0wsZUFBZSxDQUFDSSxNQUFNLENBQUNELFFBQVEsQ0FBQ0UsV0FBVyxDQUFDLEVBQUU7WUFDeEpyNEMsS0FBSSxDQUFDK0ksT0FBTyxDQUFDK0ssSUFBSSxDQUFDLG1EQUFtRCxFQUFFbWtDLFdBQVcsQ0FBQztZQUNuRmo0QyxLQUFJLENBQUNzNEMsWUFBWSxDQUFDLENBQUM7VUFDckI7VUFFQXQ0QyxLQUFJLENBQUMrSSxPQUFPLENBQUNTLEtBQUssQ0FBQywrQkFBK0IsRUFBRXl1QyxXQUFXLENBQUM7VUFFaEVqNEMsS0FBSSxDQUFDdTdCLG9CQUFvQixDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBRUY7TUFDRjtJQUNGO0VBQUM7SUFBQTk3QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBNkYsV0FBV0EsQ0FBQSxFQUFZO01BQ3JCLE9BQU9nbkMsK0RBQWdCLENBQUN3TCxlQUFlLElBQUl4TCwrREFBZ0IsQ0FBQ3dMLGVBQWUsQ0FBQ3h5QyxXQUFXO0lBQ3pGO0VBQUM7SUFBQS9GLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUEwa0IsUUFBUUEsQ0FBQSxFQUErQjtNQUFBLElBQUFrMEIscUJBQUEsRUFBQUMsc0JBQUE7TUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQzFKLE9BQU8sRUFBRTtRQUNqQixPQUFPO1VBQ0x0WSxLQUFLLEVBQUUsQ0FBQztVQUNSRSxNQUFNLEVBQUUsQ0FBQztVQUNUc1gsV0FBVyxFQUFFLEdBQUc7VUFDaEJ2YSxHQUFHLEVBQUUsR0FBRztVQUNScWEsWUFBWSxFQUFFckIseURBQWEsQ0FBQ3NCLGVBQWU7VUFDM0NLLFlBQVksRUFBRTtRQUNoQixDQUFDO01BQ0g7TUFFQSxJQUFNcUMsVUFBVSxHQUFHLElBQUksQ0FBQzNCLE9BQU8sQ0FBQ3pxQixRQUFRLENBQUMsQ0FBQztNQUMxQyxJQUFNMnBCLFdBQVcsR0FBR3lDLFVBQVUsQ0FBQ3pDLFdBQVcsSUFBSSxJQUFJLENBQUN1QixhQUFhLENBQUMsYUFBYSxDQUFDO01BQy9FLElBQU00QixlQUFlLEdBQUcsQ0FBQ2h5QyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDdXZDLFFBQVEsQ0FBQzFCLGVBQWUsSUFBSSxJQUFJO01BRTNFLEtBQUFzTCxxQkFBQSxHQUFJLElBQUksQ0FBQ2hKLGFBQWEsQ0FBQ3VCLFFBQVEsY0FBQXlILHFCQUFBLGVBQTNCQSxxQkFBQSxDQUE2QjN1QyxNQUFNLEVBQUU7UUFDdkM2bUMsVUFBVSxDQUFDckMsWUFBWSxHQUFHLElBQUksQ0FBQ21CLGFBQWEsQ0FBQ3VCLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUM5RDtNQUVBLElBQUlOLFVBQVUsQ0FBQ2dJLFFBQVEsSUFBSWhJLFVBQVUsQ0FBQ2lJLFlBQVksS0FBSyxLQUFLLEVBQUU7UUFDNURqSSxVQUFVLENBQUN6QyxXQUFXLEdBQUdBLFdBQVcsR0FBR3lDLFVBQVUsQ0FBQ2hkLEdBQUc7TUFDdkQ7TUFFQSxJQUFJLENBQUNnZCxVQUFVLENBQUN6QyxXQUFXLEVBQUU7UUFDM0J5QyxVQUFVLENBQUN6QyxXQUFXLEdBQUdBLFdBQVc7TUFDdEM7TUFFQSxJQUFJLENBQUN5QyxVQUFVLENBQUNnSSxRQUFRLEVBQUU7UUFDeEJoSSxVQUFVLENBQUNoZCxHQUFHLEdBQUd0akIsSUFBSSxDQUFDaWhDLEdBQUcsQ0FBQyxHQUFHLEVBQUVELGVBQWUsR0FBR25ELFdBQVcsQ0FBQztNQUMvRDtNQUVBLEtBQUF3SyxzQkFBQSxHQUFJLElBQUksQ0FBQ2pKLGFBQWEsQ0FBQ3VCLFFBQVEsY0FBQTBILHNCQUFBLGVBQTNCQSxzQkFBQSxDQUE2QjV1QyxNQUFNLEVBQUU7UUFDdkM2bUMsVUFBVSxDQUFDM0MsWUFBWSxHQUFHckIseURBQWEsQ0FBQ3dFLGNBQWM7TUFDeEQsQ0FBQyxNQUFNLElBQUlSLFVBQVUsQ0FBQ3pDLFdBQVcsR0FBRyxDQUFDLEVBQUU7UUFDckN5QyxVQUFVLENBQUMzQyxZQUFZLEdBQUdyQix5REFBYSxDQUFDb0UsV0FBVztNQUNyRCxDQUFDLE1BQU0sSUFBSUosVUFBVSxDQUFDN3VCLEtBQUssRUFBRTtRQUMzQjZ1QixVQUFVLENBQUMzQyxZQUFZLEdBQUdyQix5REFBYSxDQUFDeUUsWUFBWTtNQUN0RCxDQUFDLE1BQU07UUFDTFQsVUFBVSxDQUFDM0MsWUFBWSxHQUFHckIseURBQWEsQ0FBQ3NCLGVBQWU7TUFDekQ7TUFFQSxPQUFPMEMsVUFBVTtJQUNuQjtFQUFDO0lBQUFoeEMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUcsT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxJQUFJLENBQUNndkMsT0FBTyxFQUFFO1FBQ2hCLElBQUksQ0FBQ0EsT0FBTyxDQUFDaHZDLE9BQU8sQ0FBQyxDQUFDO01BQ3hCO01BRUEsSUFBSSxDQUFDZ3ZDLE9BQU8sR0FBRyxJQUFJO0lBQ3JCO0VBQUM7SUFBQXJ2QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRdTRDLFNBQVNBLENBQUEsRUFBWTtNQUMzQixJQUFNUyxnQ0FBZ0MsR0FBRyxDQUFDLElBQUksQ0FBQ1osZUFBZSxJQUFJNTRDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMyNEMsZUFBZSxHQUFHRCx1QkFBdUI7TUFFN0gsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDdkksYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUNULE9BQU8sSUFBSSxJQUFJLENBQUNTLGFBQWEsQ0FBQ3VCLFFBQVEsQ0FBQ2xuQyxNQUFNLEtBQUssQ0FBQyxJQUFJK3VDLGdDQUFnQztJQUMvSDtFQUFDO0lBQUFsNUMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTI0QyxZQUFZQSxDQUFBLEVBQVM7TUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQ0osU0FBUyxDQUFDLENBQUMsRUFBRTtRQUNyQjtNQUNGO01BRUEsSUFBSSxDQUFDbnZDLE9BQU8sQ0FBQytLLElBQUksQ0FBQywyRUFBMkUsRUFBRSxJQUFJLENBQUMyN0IsU0FBUyxFQUFFcUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDO01BRTlJLElBQUksQ0FBQ0MsZUFBZSxHQUFHNTRDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFFakMsSUFBSSxDQUFDdzVDLE1BQU0sQ0FBQyxDQUFDO0lBQ2Y7RUFBQztJQUFBbjVDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFpNUMsTUFBTUEsQ0FBQSxFQUFTO01BQ3JCLElBQUksSUFBSSxDQUFDOUosT0FBTyxFQUFFO1FBQ2hCLElBQUksQ0FBQ0EsT0FBTyxDQUFDaHZDLE9BQU8sQ0FBQyxDQUFDO01BQ3hCO01BRUEsSUFBSSxDQUFDZ3ZDLE9BQU8sR0FBRyxJQUFJO01BRW5CLElBQUksQ0FBQzFZLEtBQUssQ0FBQyxDQUFDO0lBQ2Q7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDdEpILHVLQUFBcHNCLENBQUEsRUFBQTBQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBek4sU0FBQSxZQUFBK04sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUE5TixTQUFBLFVBQUFrTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQTNRLENBQUEsRUFBQTRRLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQW5XLElBQUEsQ0FBQXNGLENBQUEsTUFBQTZRLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUFwUSxDQUFBLEVBQUEwUSxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUE1USxNQUFBLEVBQUE4UCxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFqUSxDQUFBLElBQUFpUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUFsUSxDQUFBLEdBQUFvUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUEvWixLQUFBLEVBQUF1YSxDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFnQixNQUFBLEtBQUF2QixDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFqUSxDQUFBLGNBQUEwUCxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBbEssSUFBQSxDQUFBb0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQWpRLENBQUEsRUFBQWtRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUE1YSxLQUFBLEVBQUErWixDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFlLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF6QixDQUFBLEdBQUFuRSxNQUFBLENBQUE2RixjQUFBLE1BQUFsQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWUsMEJBQUEsQ0FBQS9PLFNBQUEsR0FBQStOLFNBQUEsQ0FBQS9OLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBdlEsQ0FBQSxXQUFBdUwsTUFBQSxDQUFBOEYsY0FBQSxHQUFBOUYsTUFBQSxDQUFBOEYsY0FBQSxDQUFBclIsQ0FBQSxFQUFBbVIsMEJBQUEsS0FBQW5SLENBQUEsQ0FBQXNSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQStQLENBQUEseUJBQUEvUCxDQUFBLENBQUFvQyxTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFELENBQUEsR0FBQXBRLENBQUEsV0FBQWtSLGlCQUFBLENBQUE5TyxTQUFBLEdBQUErTywwQkFBQSxFQUFBYixtQkFBQSxDQUFBRixDQUFBLGlCQUFBZSwwQkFBQSxHQUFBYixtQkFBQSxDQUFBYSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWpCLG1CQUFBLENBQUFhLDBCQUFBLEVBQUFwQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBb0IsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXhCLENBQUEsRUFBQXlCLENBQUEsRUFBQW5CLENBQUE7QUFBQSxTQUFBRCxvQkFBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQTFFLE1BQUEsQ0FBQW9HLGNBQUEsUUFBQTFCLENBQUEsdUJBQUFqUSxDQUFBLElBQUFpUSxDQUFBLFFBQUFLLG1CQUFBLFlBQUFzQixtQkFBQTVSLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxZQUFBM1AsQ0FBQSxnQkFBQTZSLE9BQUEsQ0FBQWxDLENBQUEsRUFBQUUsQ0FBQSxFQUFBN1AsQ0FBQSxTQUFBMlAsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWpRLENBQUEsRUFBQTJQLENBQUEsSUFBQWhhLEtBQUEsRUFBQWthLENBQUEsRUFBQWlDLFVBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFlBQUEsR0FBQXJDLENBQUEsRUFBQXNDLFFBQUEsR0FBQXRDLENBQUEsTUFBQTFQLENBQUEsQ0FBQTJQLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBREE7QUFDQTtBQUNBO0FBQ3VEO0FBTThDO0FBQ2Q7QUFBQSxJQVVsRW00Qiw0QkFBNEI7RUFHL0MsU0FBQUEsNkJBQVlqSixPQUE0QyxFQUFFO0lBQUEzcEMsMklBQUEsT0FBQTR5Qyw0QkFBQTtJQUFBM3lDLDJJQUFBLHVCQUZWLElBQUlOLDREQUFjLENBQUMsQ0FBQztJQUdsRSxJQUFJLENBQUNXLFVBQVUsQ0FBQ3FwQyxPQUFPLENBQUM7RUFDMUI7RUFBQyxPQUFBcHBDLHdJQUFBLENBQUFxeUMsNEJBQUE7SUFBQXB5QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPRyxPQUFPQSxDQUFBLEVBQVM7TUFDckIsSUFBSSxDQUFDQyxZQUFZLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQzdCO0VBQUM7SUFBQUwsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUUosVUFBVUEsQ0FBQ3FwQyxPQUE0QyxFQUFRO01BQUEsSUFBQTVvQyxLQUFBO01BQ3JFLElBQUk0b0MsT0FBTyxDQUFDdkssVUFBVSxDQUFDTixnQkFBZ0IsRUFBRTtRQUN2QzZLLE9BQU8sQ0FBQ3ZLLFVBQVUsQ0FBQ0Qsc0JBQXNCLENBQUN4MUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpFLElBQUksQ0FBQzdJLFlBQVksQ0FBQ00sR0FBRyxDQUFDdW9DLE9BQU8sQ0FBQ3ZLLFVBQVUsQ0FBQ0Ysc0JBQXNCLENBQUVrTCxhQUFhLENBQUNYLGtHQUF3QixDQUFDcVEsaUJBQWlCLEVBQUUsVUFBQ0MsS0FBMkI7VUFBQSxPQUFLaDVDLEtBQUksQ0FBQ2k1QywwQkFBMEIsQ0FBQ3JRLE9BQU8sQ0FBQ3ZLLFVBQVUsRUFBRXVLLE9BQU8sQ0FBQ3BYLHNCQUFzQixFQUE4Q3duQixLQUFLLENBQUM7UUFBQSxFQUFDLENBQUM7TUFDdFM7TUFFQSxJQUFJcFEsT0FBTyxDQUFDOUssVUFBVSxDQUFDQyxnQkFBZ0IsRUFBRTtRQUN2QzZLLE9BQU8sQ0FBQzlLLFVBQVUsQ0FBQ00sc0JBQXNCLENBQUN4MUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRWpFLElBQUksQ0FBQzdJLFlBQVksQ0FBQ00sR0FBRyxDQUFDdW9DLE9BQU8sQ0FBQzlLLFVBQVUsQ0FBQ0ssc0JBQXNCLENBQUVrTCxhQUFhLENBQUNYLGtHQUF3QixDQUFDd1EsaUJBQWlCLEVBQUUsVUFBQ0YsS0FBMkI7VUFBQSxPQUFLaDVDLEtBQUksQ0FBQ201QywwQkFBMEIsQ0FBQ3ZRLE9BQU8sQ0FBQzlLLFVBQVUsRUFBRThLLE9BQU8sQ0FBQ25YLHNCQUFzQixFQUE4Q3VuQixLQUFLLENBQUM7UUFBQSxFQUFDLENBQUM7TUFDdFM7SUFDRjtFQUFDO0lBQUF2NUMsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQXk1QywyQkFBQSxHQUFBMzdCLDZJQUFBLGNBQUFqQyxZQUFBLEdBQUFFLENBQUEsQ0FFRCxTQUFBZ0MsUUFBeUNxRixLQUFrQyxFQUFFME8sc0JBQWdFLEVBQUV1bkIsS0FBMkI7UUFBQSxPQUFBeDlCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBb0MsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO1lBQUE7Y0FBQWdFLFFBQUEsQ0FBQWhFLENBQUE7Y0FBQSxPQUM3SjRYLHNCQUFzQixDQUFDMU8sS0FBSyxDQUFDZ2IsZ0JBQWdCLEVBQUdpYixLQUFLLENBQUM7WUFBQTtjQUFBLElBQUFuN0IsUUFBQSxDQUFBbEQsQ0FBQTtnQkFBQWtELFFBQUEsQ0FBQWhFLENBQUE7Z0JBQUE7Y0FBQTtjQUMvRG0vQixLQUFLLENBQUN2akMsSUFBSSxHQUFHb2pDLGtFQUF5QixDQUFDUSw0QkFBNEIsQ0FBQyxDQUFDO2NBQUN4N0IsUUFBQSxDQUFBaEUsQ0FBQTtjQUFBO1lBQUE7Y0FFdEVtL0IsS0FBSyxDQUFDdmpDLElBQUksR0FBR29qQyxrRUFBeUIsQ0FBQ1MsK0JBQStCLENBQUN2MkIsS0FBSyxDQUFDOEIsS0FBbUIsQ0FBQyxJQUFJbTBCLEtBQUssQ0FBQ3ZqQyxJQUFJO1lBQUM7Y0FBQSxPQUFBb0ksUUFBQSxDQUFBakQsQ0FBQSxJQUczR28rQixLQUFLO1VBQUE7UUFBQSxHQUFBdDdCLE9BQUE7TUFBQSxDQUNiO01BQUEsU0FSYXk3QiwwQkFBMEJBLENBQUFqN0IsRUFBQSxFQUFBK0ssR0FBQSxFQUFBSSxHQUFBO1FBQUEsT0FBQSt2QiwyQkFBQSxDQUFBajdCLEtBQUEsT0FBQS9LLFNBQUE7TUFBQTtNQUFBLE9BQTFCK2xDLDBCQUEwQjtJQUFBO0VBQUE7SUFBQTE1QyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBNDVDLDJCQUFBLEdBQUE5N0IsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQVV4QyxTQUFBMkMsU0FBeUMwRSxLQUFrQyxFQUFFeU8sc0JBQWdFLEVBQUV3bkIsS0FBMkI7UUFBQSxJQUFBUSxTQUFBO1FBQUEsT0FBQWgrQixZQUFBLEdBQUFDLENBQUEsV0FBQTZDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBekUsQ0FBQTtZQUFBO2NBQUF5RSxTQUFBLENBQUF6RSxDQUFBO2NBQUEsT0FDN0oyWCxzQkFBc0IsQ0FBQ3pPLEtBQUssQ0FBQ2diLGdCQUFnQixFQUFHaWIsS0FBSyxDQUFDO1lBQUE7Y0FBQSxJQUFBMTZCLFNBQUEsQ0FBQTNELENBQUE7Z0JBQUEyRCxTQUFBLENBQUF6RSxDQUFBO2dCQUFBO2NBQUE7Y0FHL0QsSUFBSW0vQixLQUFLLENBQUNweUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDeEI0eUMsU0FBUyxHQUFHWCxrRUFBeUIsQ0FBQ1ksOEJBQThCLENBQUMxMkIsS0FBSyxDQUFDOEIsS0FBbUIsQ0FBQztjQUNqRyxDQUFDLE1BQU07Z0JBQ0wyMEIsU0FBUyxHQUFHWCxrRUFBeUIsQ0FBQ2EsOEJBQThCLENBQUMsQ0FBQztjQUN4RTtjQUFDLE1BRUdGLFNBQVMsS0FBS1YsaUVBQVM7Z0JBQUF4NkIsU0FBQSxDQUFBekUsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQXlFLFNBQUEsQ0FBQTFELENBQUE7WUFBQTtjQUkzQm8rQixLQUFLLENBQUN2akMsSUFBSSxHQUFHK2pDLFNBQVMsSUFBSVIsS0FBSyxDQUFDdmpDLElBQUk7Y0FBQzZJLFNBQUEsQ0FBQXpFLENBQUE7Y0FBQTtZQUFBO2NBRXJDLElBQUltL0IsS0FBSyxDQUFDcHlDLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ3hCb3lDLEtBQUssQ0FBQ3ZqQyxJQUFJLEdBQUdvakMsa0VBQXlCLENBQUNjLCtCQUErQixDQUFDNTJCLEtBQUssQ0FBQzhCLEtBQW1CLENBQUMsSUFBSW0wQixLQUFLLENBQUN2akMsSUFBSTtjQUNqSCxDQUFDLE1BQU07Z0JBQ0x1akMsS0FBSyxDQUFDdmpDLElBQUksR0FBR29qQyxrRUFBeUIsQ0FBQ2UsK0JBQStCLENBQUM3MkIsS0FBSyxDQUFDOEIsS0FBbUIsQ0FBQyxJQUFJbTBCLEtBQUssQ0FBQ3ZqQyxJQUFJO2NBQ2pIO1lBQUM7Y0FBQSxPQUFBNkksU0FBQSxDQUFBMUQsQ0FBQSxJQUdJbytCLEtBQUs7VUFBQTtRQUFBLEdBQUEzNkIsUUFBQTtNQUFBLENBQ2I7TUFBQSxTQXhCYTQ2QiwwQkFBMEJBLENBQUFydkIsR0FBQSxFQUFBcWEsR0FBQSxFQUFBQyxHQUFBO1FBQUEsT0FBQXFWLDJCQUFBLENBQUFwN0IsS0FBQSxPQUFBL0ssU0FBQTtNQUFBO01BQUEsT0FBMUI2bEMsMEJBQTBCO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2RDFDO0FBQ0E7QUFDQTtBQUZBLElBUXFCL29CLGlCQUFpQjtFQXNCcEMsU0FBQUEsa0JBQUEsRUFBYztJQUFBanhCLDJJQUFBLE9BQUFpeEIsaUJBQUE7SUFDWixNQUFNLElBQUkvckIsS0FBSyxDQUFDLGtFQUFrRSxDQUFDO0VBQ3JGO0VBQUMsT0FBQTNFLHdJQUFBLENBQUEwd0IsaUJBQUE7SUFBQXp3QixHQUFBO0lBQUFFLEtBQUEsRUF2QkQsU0FBT2s2Qix5QkFBeUJBLENBQXdEZ2dCLElBQXVCLEVBQUU3bkMsSUFBMkIsRUFBRTtNQUM1SSxJQUFJLE9BQU9BLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDOUIsT0FBTztVQUNMeW1CLEtBQUssRUFBRSxLQUFLO1VBQ1pDLGdCQUFnQixnQkFBQW4yQixNQUFBLENBQWdCczNDLElBQUksaURBQUF0M0MsTUFBQSxDQUFBd1csbUlBQUEsQ0FBcUQvRyxJQUFJO1FBQy9GLENBQUM7TUFDSDtNQUVBLElBQUlBLElBQUksQ0FBQ3BJLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTztVQUNMNnVCLEtBQUssRUFBRSxLQUFLO1VBQ1pDLGdCQUFnQixnQkFBQW4yQixNQUFBLENBQWdCczNDLElBQUkseUVBQUF0M0MsTUFBQSxDQUFzRXlQLElBQUksQ0FBQ3BJLE1BQU07UUFDdkgsQ0FBQztNQUNIO01BRUEsT0FBTztRQUNMNnVCLEtBQUssRUFBRSxJQUFJO1FBQ1hDLGdCQUFnQixFQUFFO01BQ3BCLENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJDM0JILHVLQUFBMXVCLENBQUEsRUFBQTBQLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBek4sU0FBQSxZQUFBK04sU0FBQSxHQUFBTixDQUFBLEdBQUFNLFNBQUEsRUFBQUMsQ0FBQSxHQUFBN0UsTUFBQSxDQUFBOEUsTUFBQSxDQUFBSCxDQUFBLENBQUE5TixTQUFBLFVBQUFrTyxtQkFBQSxDQUFBRixDQUFBLHVCQUFBVCxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLE1BQUFDLENBQUEsR0FBQVQsQ0FBQSxRQUFBVSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBWCxDQUFBLEtBQUFjLENBQUEsRUFBQTNRLENBQUEsRUFBQTRRLENBQUEsRUFBQUMsQ0FBQSxFQUFBTixDQUFBLEVBQUFNLENBQUEsQ0FBQW5XLElBQUEsQ0FBQXNGLENBQUEsTUFBQTZRLENBQUEsV0FBQUEsRUFBQW5CLENBQUEsRUFBQUMsQ0FBQSxXQUFBTSxDQUFBLEdBQUFQLENBQUEsRUFBQVEsQ0FBQSxNQUFBRSxDQUFBLEdBQUFwUSxDQUFBLEVBQUEwUSxDQUFBLENBQUFiLENBQUEsR0FBQUYsQ0FBQSxFQUFBaUIsQ0FBQSxnQkFBQUMsRUFBQWxCLENBQUEsRUFBQUUsQ0FBQSxTQUFBSyxDQUFBLEdBQUFQLENBQUEsRUFBQVMsQ0FBQSxHQUFBUCxDQUFBLEVBQUFILENBQUEsT0FBQWUsQ0FBQSxJQUFBRixDQUFBLEtBQUFSLENBQUEsSUFBQUwsQ0FBQSxHQUFBYyxDQUFBLENBQUE1USxNQUFBLEVBQUE4UCxDQUFBLFVBQUFLLENBQUEsRUFBQUUsQ0FBQSxHQUFBTyxDQUFBLENBQUFkLENBQUEsR0FBQW1CLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBLEVBQUFNLENBQUEsR0FBQWIsQ0FBQSxLQUFBTixDQUFBLFFBQUFJLENBQUEsR0FBQWUsQ0FBQSxLQUFBakIsQ0FBQSxNQUFBTyxDQUFBLEdBQUFILENBQUEsRUFBQUMsQ0FBQSxHQUFBRCxDQUFBLFlBQUFDLENBQUEsV0FBQUQsQ0FBQSxNQUFBQSxDQUFBLE1BQUFqUSxDQUFBLElBQUFpUSxDQUFBLE9BQUFZLENBQUEsTUFBQWQsQ0FBQSxHQUFBSixDQUFBLFFBQUFrQixDQUFBLEdBQUFaLENBQUEsUUFBQUMsQ0FBQSxNQUFBUSxDQUFBLENBQUFDLENBQUEsR0FBQWQsQ0FBQSxFQUFBYSxDQUFBLENBQUFiLENBQUEsR0FBQUksQ0FBQSxPQUFBWSxDQUFBLEdBQUFDLENBQUEsS0FBQWYsQ0FBQSxHQUFBSixDQUFBLFFBQUFNLENBQUEsTUFBQUosQ0FBQSxJQUFBQSxDQUFBLEdBQUFpQixDQUFBLE1BQUFiLENBQUEsTUFBQU4sQ0FBQSxFQUFBTSxDQUFBLE1BQUFKLENBQUEsRUFBQWEsQ0FBQSxDQUFBYixDQUFBLEdBQUFpQixDQUFBLEVBQUFaLENBQUEsY0FBQUgsQ0FBQSxJQUFBSixDQUFBLGFBQUFpQixDQUFBLFFBQUFILENBQUEsT0FBQVosQ0FBQSxxQkFBQUUsQ0FBQSxFQUFBUyxDQUFBLEVBQUFNLENBQUEsUUFBQVAsQ0FBQSxZQUFBUSxTQUFBLHVDQUFBTixDQUFBLFVBQUFELENBQUEsSUFBQUssQ0FBQSxDQUFBTCxDQUFBLEVBQUFNLENBQUEsR0FBQVosQ0FBQSxHQUFBTSxDQUFBLEVBQUFKLENBQUEsR0FBQVUsQ0FBQSxHQUFBcEIsQ0FBQSxHQUFBUSxDQUFBLE9BQUFsUSxDQUFBLEdBQUFvUSxDQUFBLE1BQUFLLENBQUEsS0FBQVIsQ0FBQSxLQUFBQyxDQUFBLEdBQUFBLENBQUEsUUFBQUEsQ0FBQSxTQUFBUSxDQUFBLENBQUFiLENBQUEsUUFBQWdCLENBQUEsQ0FBQVgsQ0FBQSxFQUFBRSxDQUFBLEtBQUFNLENBQUEsQ0FBQWIsQ0FBQSxHQUFBTyxDQUFBLEdBQUFNLENBQUEsQ0FBQUMsQ0FBQSxHQUFBUCxDQUFBLGFBQUFHLENBQUEsTUFBQU4sQ0FBQSxRQUFBQyxDQUFBLEtBQUFILENBQUEsWUFBQUwsQ0FBQSxHQUFBTyxDQUFBLENBQUFGLENBQUEsV0FBQUwsQ0FBQSxHQUFBQSxDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEVBQUFHLENBQUEsVUFBQVcsU0FBQSwyQ0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsU0FBQXRCLENBQUEsRUFBQVUsQ0FBQSxHQUFBVixDQUFBLENBQUEvWixLQUFBLEVBQUF1YSxDQUFBLFNBQUFBLENBQUEsb0JBQUFBLENBQUEsS0FBQVIsQ0FBQSxHQUFBTyxDQUFBLENBQUFnQixNQUFBLEtBQUF2QixDQUFBLENBQUFqSyxJQUFBLENBQUF3SyxDQUFBLEdBQUFDLENBQUEsU0FBQUUsQ0FBQSxHQUFBVyxTQUFBLHVDQUFBaEIsQ0FBQSxnQkFBQUcsQ0FBQSxPQUFBRCxDQUFBLEdBQUFqUSxDQUFBLGNBQUEwUCxDQUFBLElBQUFlLENBQUEsR0FBQUMsQ0FBQSxDQUFBYixDQUFBLFFBQUFPLENBQUEsR0FBQVQsQ0FBQSxDQUFBbEssSUFBQSxDQUFBb0ssQ0FBQSxFQUFBYSxDQUFBLE9BQUFFLENBQUEsa0JBQUFsQixDQUFBLElBQUFPLENBQUEsR0FBQWpRLENBQUEsRUFBQWtRLENBQUEsTUFBQUUsQ0FBQSxHQUFBVixDQUFBLGNBQUFhLENBQUEsbUJBQUE1YSxLQUFBLEVBQUErWixDQUFBLEVBQUFzQixJQUFBLEVBQUFQLENBQUEsU0FBQWQsQ0FBQSxFQUFBSSxDQUFBLEVBQUFFLENBQUEsUUFBQUcsQ0FBQSxRQUFBUSxDQUFBLGdCQUFBVCxVQUFBLGNBQUFlLGtCQUFBLGNBQUFDLDJCQUFBLEtBQUF6QixDQUFBLEdBQUFuRSxNQUFBLENBQUE2RixjQUFBLE1BQUFsQixDQUFBLE1BQUFMLENBQUEsSUFBQUgsQ0FBQSxDQUFBQSxDQUFBLElBQUFHLENBQUEsU0FBQVMsbUJBQUEsQ0FBQVosQ0FBQSxPQUFBRyxDQUFBLGlDQUFBSCxDQUFBLEdBQUFVLENBQUEsR0FBQWUsMEJBQUEsQ0FBQS9PLFNBQUEsR0FBQStOLFNBQUEsQ0FBQS9OLFNBQUEsR0FBQW1KLE1BQUEsQ0FBQThFLE1BQUEsQ0FBQUgsQ0FBQSxZQUFBSyxFQUFBdlEsQ0FBQSxXQUFBdUwsTUFBQSxDQUFBOEYsY0FBQSxHQUFBOUYsTUFBQSxDQUFBOEYsY0FBQSxDQUFBclIsQ0FBQSxFQUFBbVIsMEJBQUEsS0FBQW5SLENBQUEsQ0FBQXNSLFNBQUEsR0FBQUgsMEJBQUEsRUFBQWIsbUJBQUEsQ0FBQXRRLENBQUEsRUFBQStQLENBQUEseUJBQUEvUCxDQUFBLENBQUFvQyxTQUFBLEdBQUFtSixNQUFBLENBQUE4RSxNQUFBLENBQUFELENBQUEsR0FBQXBRLENBQUEsV0FBQWtSLGlCQUFBLENBQUE5TyxTQUFBLEdBQUErTywwQkFBQSxFQUFBYixtQkFBQSxDQUFBRixDQUFBLGlCQUFBZSwwQkFBQSxHQUFBYixtQkFBQSxDQUFBYSwwQkFBQSxpQkFBQUQsaUJBQUEsR0FBQUEsaUJBQUEsQ0FBQUssV0FBQSx3QkFBQWpCLG1CQUFBLENBQUFhLDBCQUFBLEVBQUFwQixDQUFBLHdCQUFBTyxtQkFBQSxDQUFBRixDQUFBLEdBQUFFLG1CQUFBLENBQUFGLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU8sbUJBQUEsQ0FBQUYsQ0FBQSxFQUFBUCxDQUFBLGlDQUFBUyxtQkFBQSxDQUFBRixDQUFBLDhEQUFBb0IsWUFBQSxZQUFBQSxhQUFBLGFBQUFDLENBQUEsRUFBQXhCLENBQUEsRUFBQXlCLENBQUEsRUFBQW5CLENBQUE7QUFBQSxTQUFBRCxvQkFBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLFFBQUFPLENBQUEsR0FBQTFFLE1BQUEsQ0FBQW9HLGNBQUEsUUFBQTFCLENBQUEsdUJBQUFqUSxDQUFBLElBQUFpUSxDQUFBLFFBQUFLLG1CQUFBLFlBQUFzQixtQkFBQTVSLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBLGFBQUFLLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxJQUFBUyxtQkFBQSxDQUFBdFEsQ0FBQSxFQUFBMlAsQ0FBQSxZQUFBM1AsQ0FBQSxnQkFBQTZSLE9BQUEsQ0FBQWxDLENBQUEsRUFBQUUsQ0FBQSxFQUFBN1AsQ0FBQSxTQUFBMlAsQ0FBQSxHQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWpRLENBQUEsRUFBQTJQLENBQUEsSUFBQWhhLEtBQUEsRUFBQWthLENBQUEsRUFBQWlDLFVBQUEsR0FBQXBDLENBQUEsRUFBQXFDLFlBQUEsR0FBQXJDLENBQUEsRUFBQXNDLFFBQUEsR0FBQXRDLENBQUEsTUFBQTFQLENBQUEsQ0FBQTJQLENBQUEsSUFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUFBLENBQUEsY0FBQUEsQ0FBQSxtQkFBQU8sbUJBQUEsQ0FBQXRRLENBQUEsRUFBQTJQLENBQUEsRUFBQUUsQ0FBQSxFQUFBSCxDQUFBO0FBQUEsU0FBQTB4QiwyQkFBQXp4QixDQUFBLEVBQUEzUCxDQUFBLFFBQUEwUCxDQUFBLHlCQUFBRSxNQUFBLElBQUFELENBQUEsQ0FBQUMsTUFBQSxDQUFBRSxRQUFBLEtBQUFILENBQUEscUJBQUFELENBQUEsUUFBQXRJLEtBQUEsQ0FBQTBvQyxPQUFBLENBQUFuZ0MsQ0FBQSxNQUFBRCxDQUFBLEdBQUFxZ0MsMkJBQUEsQ0FBQXBnQyxDQUFBLE1BQUEzUCxDQUFBLElBQUEyUCxDQUFBLHVCQUFBQSxDQUFBLENBQUEvUCxNQUFBLElBQUE4UCxDQUFBLEtBQUFDLENBQUEsR0FBQUQsQ0FBQSxPQUFBc2dDLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUEzTyxDQUFBLEVBQUEyTyxDQUFBLEVBQUFwZ0MsQ0FBQSxXQUFBQSxFQUFBLFdBQUFtZ0MsRUFBQSxJQUFBcmdDLENBQUEsQ0FBQS9QLE1BQUEsS0FBQW9SLElBQUEsV0FBQUEsSUFBQSxNQUFBcmIsS0FBQSxFQUFBZ2EsQ0FBQSxDQUFBcWdDLEVBQUEsVUFBQWh3QyxDQUFBLFdBQUFBLEVBQUEyUCxDQUFBLFVBQUFBLENBQUEsS0FBQVksQ0FBQSxFQUFBMC9CLENBQUEsZ0JBQUFsL0IsU0FBQSxpSkFBQWhCLENBQUEsRUFBQWEsQ0FBQSxPQUFBUixDQUFBLGdCQUFBa3hCLENBQUEsV0FBQUEsRUFBQSxJQUFBNXhCLENBQUEsR0FBQUEsQ0FBQSxDQUFBakssSUFBQSxDQUFBa0ssQ0FBQSxNQUFBRSxDQUFBLFdBQUFBLEVBQUEsUUFBQUYsQ0FBQSxHQUFBRCxDQUFBLENBQUF3Z0MsSUFBQSxXQUFBdC9CLENBQUEsR0FBQWpCLENBQUEsQ0FBQXFCLElBQUEsRUFBQXJCLENBQUEsS0FBQTNQLENBQUEsV0FBQUEsRUFBQTJQLENBQUEsSUFBQVMsQ0FBQSxPQUFBTCxDQUFBLEdBQUFKLENBQUEsS0FBQVksQ0FBQSxXQUFBQSxFQUFBLFVBQUFLLENBQUEsWUFBQWxCLENBQUEsQ0FBQXVCLE1BQUEsSUFBQXZCLENBQUEsQ0FBQXVCLE1BQUEsb0JBQUFiLENBQUEsUUFBQUwsQ0FBQTtBQUFBLFNBQUFnZ0MsNEJBQUFwZ0MsQ0FBQSxFQUFBaUIsQ0FBQSxRQUFBakIsQ0FBQSwyQkFBQUEsQ0FBQSxTQUFBd2dDLGlCQUFBLENBQUF4Z0MsQ0FBQSxFQUFBaUIsQ0FBQSxPQUFBbEIsQ0FBQSxNQUFBOUosUUFBQSxDQUFBSCxJQUFBLENBQUFrSyxDQUFBLEVBQUE2RSxLQUFBLDZCQUFBOUUsQ0FBQSxJQUFBQyxDQUFBLENBQUF5Z0MsV0FBQSxLQUFBMWdDLENBQUEsR0FBQUMsQ0FBQSxDQUFBeWdDLFdBQUEsQ0FBQTcyQyxJQUFBLGFBQUFtVyxDQUFBLGNBQUFBLENBQUEsR0FBQXRJLEtBQUEsQ0FBQWlwQyxJQUFBLENBQUExZ0MsQ0FBQSxvQkFBQUQsQ0FBQSwrQ0FBQTdXLElBQUEsQ0FBQTZXLENBQUEsSUFBQXlnQyxpQkFBQSxDQUFBeGdDLENBQUEsRUFBQWlCLENBQUE7QUFBQSxTQUFBdS9CLGtCQUFBeGdDLENBQUEsRUFBQWlCLENBQUEsYUFBQUEsQ0FBQSxJQUFBQSxDQUFBLEdBQUFqQixDQUFBLENBQUEvUCxNQUFBLE1BQUFnUixDQUFBLEdBQUFqQixDQUFBLENBQUEvUCxNQUFBLFlBQUFJLENBQUEsTUFBQTZQLENBQUEsR0FBQXpJLEtBQUEsQ0FBQXdKLENBQUEsR0FBQTVRLENBQUEsR0FBQTRRLENBQUEsRUFBQTVRLENBQUEsSUFBQTZQLENBQUEsQ0FBQTdQLENBQUEsSUFBQTJQLENBQUEsQ0FBQTNQLENBQUEsVUFBQTZQLENBQUE7QUFEQTtBQUNBO0FBQ0E7O0FBRStDO0FBQ1E7QUFDTTtBQUNPO0FBR2dCO0FBQ0Q7QUFDdkI7QUFBQSxJQUl2QyszQixpQkFBaUI7RUE2TnBDLFNBQUFBLGtCQUFBLEVBQWM7SUFBQTN5QywySUFBQSxPQUFBMnlDLGlCQUFBO0lBQ1osTUFBTSxJQUFJenRDLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQztFQUNyRjtFQUFDLE9BQUEzRSx3SUFBQSxDQUFBb3lDLGlCQUFBO0lBQUFueUMsR0FBQTtJQUFBRSxLQUFBLEVBOU5ELFNBQU82MEMsMkJBQTJCQSxDQUFDdEMsc0JBQThDLEVBQWtCO01BQ2pHLElBQU1yYixXQUEyQixHQUFHLElBQUlqNEIsNERBQWMsQ0FBQyxDQUFDO01BQ3hELElBQU95L0IsVUFBVSxHQUFnQjZULHNCQUFzQixDQUFoRDdULFVBQVU7UUFBRVAsVUFBVSxHQUFJb1Usc0JBQXNCLENBQXBDcFUsVUFBVTtNQUM3QixJQUFNMmMscUNBQXFDLEdBQUcsU0FBeENBLHFDQUFxQ0EsQ0FBSTdSLE9BQW9DLEVBQUs7UUFDdEY7UUFDQTtRQUNBLElBQU04UixNQUFNLEdBQUc5UixPQUFPLENBQUMxSyx1QkFBdUIsR0FBRyxJQUFJb2MsOEVBQTZCLENBQUMsQ0FBQztRQUVwRnpqQixXQUFXLENBQUN4MkIsR0FBRyxDQUFDLElBQUkxQix3REFBVSxDQUFDO1VBQUEsT0FBTSs3QyxNQUFNLENBQUNDLFNBQVMsQ0FBQyxDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQ3pEOWpCLFdBQVcsQ0FBQ3gyQixHQUFHLENBQUN1b0MsT0FBTyxDQUFDekssc0JBQXNCLEdBQUcsSUFBSXFjLDZEQUFzQixDQUFDRSxNQUFNLENBQUMsQ0FBQztNQUN0RixDQUFDO01BRUQsSUFBaUJ2RyxrQkFBa0IsR0FBa0Q5VixVQUFVLENBQXhGTCxRQUFRO1FBQXdDNGMsMEJBQTBCLEdBQUl2YyxVQUFVLENBQTFETixnQkFBZ0I7TUFFckQsSUFBSW9XLGtCQUFrQixJQUFJeUcsMEJBQTBCLEVBQUU7UUFDcERILHFDQUFxQyxDQUFDcGMsVUFBVSxDQUFDO01BQ25EO01BRUEsSUFBaUJrVyxrQkFBa0IsR0FBa0R6VyxVQUFVLENBQXhGRSxRQUFRO1FBQXdDNmMsMEJBQTBCLEdBQUkvYyxVQUFVLENBQTFEQyxnQkFBZ0I7TUFFckQsSUFBSXdXLGtCQUFrQixJQUFJc0csMEJBQTBCLEVBQUU7UUFDcERKLHFDQUFxQyxDQUFDM2MsVUFBVSxDQUFDO01BQ25EO01BRUEsT0FBT2pILFdBQVc7SUFDcEI7RUFBQztJQUFBcDNCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFtN0MsK0JBQUEsR0FBQXI5Qiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBRUQsU0FBQTZOLFNBQTRDMm9CLHNCQUE4QztRQUFBLElBQUE3VCxVQUFBLEVBQUFQLFVBQUEsRUFBQWlkLGtCQUFBLEVBQUFDLDhCQUFBLEVBQUFDLHVCQUFBO1FBQUEsT0FBQXovQixZQUFBLEdBQUFDLENBQUEsV0FBQWlPLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBN1AsQ0FBQTtZQUFBO2NBQ2pGd2tCLFVBQVUsR0FBZ0I2VCxzQkFBc0IsQ0FBaEQ3VCxVQUFVLEVBQUVQLFVBQVUsR0FBSW9VLHNCQUFzQixDQUFwQ3BVLFVBQVU7Y0FDdkJpZCxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJaDRCLEtBQWtDLEVBQUs7Z0JBQ2pFLElBQUlBLEtBQUssQ0FBQ21iLHVCQUF1QixFQUFFO2tCQUNqQyxJQUFJbmIsS0FBSyxDQUFDcWIsc0JBQXNCLENBQUN4MEIsTUFBTSxFQUFFO29CQUFBLElBQUF1aEMsU0FBQSxHQUFBQywwQkFBQSxDQUNIcm9CLEtBQUssQ0FBQ3FiLHNCQUFzQjtzQkFBQWlOLEtBQUE7b0JBQUE7c0JBQWhFLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQXR4QixDQUFBLElBQUFtQixJQUFBLEdBQWtFO3dCQUFBLElBQXZEa2dDLHFCQUFxQixHQUFBN1AsS0FBQSxDQUFBMXJDLEtBQUE7d0JBQzlCb2pCLEtBQUssQ0FBQ21iLHVCQUF1QixDQUFDaWQsV0FBVyxDQUFDOzBCQUN4Q3YwQyxJQUFJLEVBQUUyekMsOEZBQW9CLENBQUNhLFlBQVk7MEJBQ3ZDM2xDLElBQUksRUFBRXlsQzt3QkFDUixDQUFDLENBQUM7c0JBQ0o7b0JBQUMsU0FBQXRQLEdBQUE7c0JBQUFULFNBQUEsQ0FBQW5oQyxDQUFBLENBQUE0aEMsR0FBQTtvQkFBQTtzQkFBQVQsU0FBQSxDQUFBNXdCLENBQUE7b0JBQUE7a0JBQ0gsQ0FBQyxNQUFNO29CQUNMO29CQUNBd0ksS0FBSyxDQUFDbWIsdUJBQXVCLENBQUNpZCxXQUFXLENBQUM7c0JBQ3hDdjBDLElBQUksRUFBRTJ6Qyw4RkFBb0IsQ0FBQ2EsWUFBWTtzQkFDdkMzbEMsSUFBSSxFQUFFO29CQUNSLENBQUMsQ0FBQztrQkFDSjtnQkFDRjtjQUNGLENBQUM7Y0FFRHNsQyxrQkFBa0IsQ0FBQzFjLFVBQVUsQ0FBQztjQUM5QjBjLGtCQUFrQixDQUFDamQsVUFBVSxDQUFDO2NBRXhCa2QsOEJBQThCO2dCQUFBLElBQUFoMUMsSUFBQSxHQUFBeVgsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUFHLFNBQUEyQyxTQUFNNnpCLHNCQUE4QztrQkFBQSxJQUFBbUosc0NBQUEsRUFBQWhkLFVBQUEsRUFBQVAsVUFBQTtrQkFBQSxPQUFBdGlCLFlBQUEsR0FBQUMsQ0FBQSxXQUFBNkMsU0FBQTtvQkFBQSxrQkFBQUEsU0FBQSxDQUFBekUsQ0FBQTtzQkFBQTt3QkFDekY7d0JBQ013aEMsc0NBQXNDOzBCQUFBLElBQUE5MEMsS0FBQSxHQUFBa1gsNklBQUEsY0FBQWpDLFlBQUEsR0FBQUUsQ0FBQSxDQUFHLFNBQUFnQyxRQUFNa3JCLE9BQW9DOzRCQUFBLElBQUEwUyxhQUFBLEVBQUFDLHFCQUFBLEVBQUFDLDRCQUFBOzRCQUFBLE9BQUFoZ0MsWUFBQSxHQUFBQyxDQUFBLFdBQUFvQyxRQUFBOzhCQUFBLGtCQUFBQSxRQUFBLENBQUFoRSxDQUFBO2dDQUFBO2tDQUN0RXloQyxhQUFhLEdBQW9HMVMsT0FBTyxDQUFsSTVLLFFBQVEsRUFBbUN1ZCxxQkFBcUIsR0FBMkQzUyxPQUFPLENBQXpHN0ssZ0JBQWdCLEVBQWtEeWQsNEJBQTRCLEdBQUk1UyxPQUFPLENBQWhFMUssdUJBQXVCO2tDQUFBLE1BRTVGb2QsYUFBYSxJQUFJQyxxQkFBcUIsSUFBSUMsNEJBQTRCO29DQUFBMzlCLFFBQUEsQ0FBQWhFLENBQUE7b0NBQUE7a0NBQUE7a0NBQ3hFeWhDLGFBQWEsQ0FBQ0csU0FBUyxHQUFHLElBQUludkMscUJBQXFCLENBQUNrdkMsNEJBQTRCLEVBQUU7b0NBQUNqNEMsSUFBSSxLQUFBaEIsTUFBQSxDQUFLZzVDLHFCQUFxQixDQUFDeitCLElBQUk7a0NBQXFCLENBQUMsQ0FBQztrQ0FBQyxPQUFBZSxRQUFBLENBQUFqRCxDQUFBLElBRXZJLElBQUl5QyxPQUFPLENBQU8sVUFBQXdMLE9BQU8sRUFBSTtvQ0FDbEMyeUIsNEJBQTRCLENBQUNyMEMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFVBQUFtckMsS0FBQSxFQUFtQztzQ0FBQSxJQUEzQi8vQixPQUFPLEdBQUErL0IsS0FBQSxDQUFiNzhCLElBQUk7c0NBQzdELElBQUlsRCxPQUFPLENBQUMzTCxJQUFJLEtBQUsyekMsOEZBQW9CLENBQUNtQixrQkFBa0IsRUFBRTt3Q0FDNUQ3eUIsT0FBTyxDQUFDLENBQUM7c0NBQ1g7b0NBQ0YsQ0FBQyxFQUFFO3NDQUFDOHlCLElBQUksRUFBRTtvQ0FBSSxDQUFDLENBQUM7a0NBQ2xCLENBQUMsQ0FBQztnQ0FBQTtrQ0FBQSxPQUFBOTlCLFFBQUEsQ0FBQWpELENBQUEsSUFHR3lDLE9BQU8sQ0FBQ3dMLE9BQU8sQ0FBQyxDQUFDOzhCQUFBOzRCQUFBLEdBQUFuTCxPQUFBOzBCQUFBLENBQ3pCOzBCQUFBLGdCQWhCSzI5QixzQ0FBc0NBLENBQUFoeUIsR0FBQTs0QkFBQSxPQUFBOWlCLEtBQUEsQ0FBQTRYLEtBQUEsT0FBQS9LLFNBQUE7MEJBQUE7d0JBQUE7d0JBa0JyQ2lyQixVQUFVLEdBQWdCNlQsc0JBQXNCLENBQWhEN1QsVUFBVSxFQUFFUCxVQUFVLEdBQUlvVSxzQkFBc0IsQ0FBcENwVSxVQUFVO3dCQUFBeGYsU0FBQSxDQUFBekUsQ0FBQTt3QkFBQSxPQUV2QndELE9BQU8sQ0FBQ2cxQixHQUFHLENBQUMsQ0FBQ2dKLHNDQUFzQyxDQUFDaGQsVUFBVSxDQUFDLEVBQUVnZCxzQ0FBc0MsQ0FBQ3ZkLFVBQVUsQ0FBQyxDQUFDLENBQUM7c0JBQUE7d0JBQUEsT0FBQXhmLFNBQUEsQ0FBQTFELENBQUE7b0JBQUE7a0JBQUEsR0FBQXlELFFBQUE7Z0JBQUEsQ0FDNUg7Z0JBQUEsZ0JBdkJLMjhCLDhCQUE4QkEsQ0FBQS94QixHQUFBO2tCQUFBLE9BQUFqakIsSUFBQSxDQUFBbVksS0FBQSxPQUFBL0ssU0FBQTtnQkFBQTtjQUFBO2NBeUI5QjZuQyx1QkFBdUI7Z0JBQUEsSUFBQWhJLEtBQUEsR0FBQXgxQiw2SUFBQSxjQUFBakMsWUFBQSxHQUFBRSxDQUFBLENBQUcsU0FBQXFFLFNBQU1teUIsc0JBQThDO2tCQUFBLElBQUEwSiwrQkFBQSxFQUFBdmQsVUFBQSxFQUFBUCxVQUFBLEVBQUErZCxPQUFBO2tCQUFBLE9BQUFyZ0MsWUFBQSxHQUFBQyxDQUFBLFdBQUEyRSxTQUFBO29CQUFBLGtCQUFBQSxTQUFBLENBQUF2RyxDQUFBO3NCQUFBO3dCQUM1RStoQywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJaFQsT0FBb0MsRUFBSzswQkFDaEYsSUFBaUIwUyxhQUFhLEdBQW9HMVMsT0FBTyxDQUFsSTVLLFFBQVE7NEJBQW1DdWQscUJBQXFCLEdBQTJEM1MsT0FBTyxDQUF6RzdLLGdCQUFnQjs0QkFBa0R5ZCw0QkFBNEIsR0FBSTVTLE9BQU8sQ0FBaEUxSyx1QkFBdUI7MEJBRWhHLElBQUlvZCxhQUFhLElBQUlDLHFCQUFxQixJQUFJQyw0QkFBNEIsRUFBRTs0QkFDMUU7NEJBQ0E7NEJBQ0EsSUFBTU0sc0JBQXNCLEdBQUdSLGFBQWEsQ0FBQ2p2QyxvQkFBb0IsQ0FBQyxDQUFDOzRCQUVuRSxPQUFPLElBQUlnUixPQUFPLENBQU8sVUFBQXdMLE9BQU8sRUFBSTs4QkFDbEMyeUIsNEJBQTRCLENBQUNyMEMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFVBQUF1c0MsS0FBQSxFQUFtQztnQ0FBQSxJQUEzQm5oQyxPQUFPLEdBQUFtaEMsS0FBQSxDQUFiaitCLElBQUk7Z0NBQzdELElBQUlsRCxPQUFPLENBQUMzTCxJQUFJLEtBQUsyekMsOEZBQW9CLENBQUNtQixrQkFBa0IsRUFBRTtrQ0FDNUQ3eUIsT0FBTyxDQUFDLENBQUM7Z0NBQ1g7OEJBQ0YsQ0FBQyxFQUFFO2dDQUFDOHlCLElBQUksRUFBRTs4QkFBSSxDQUFDLENBQUM7OEJBRWhCSCw0QkFBNEIsQ0FBQ0wsV0FBVyxDQUN0QztnQ0FDRXYwQyxJQUFJLEVBQUUyekMsOEZBQW9CLENBQUN3QixpQkFBaUI7Z0NBQzVDdG1DLElBQUksRUFBRTtrQ0FDSnVtQyxNQUFNLEVBQUVGLHNCQUFzQixDQUFDRyxRQUFRO2tDQUN2Q0MsSUFBSSxFQUFFSixzQkFBc0IsQ0FBQzkvQjtnQ0FDL0I7OEJBQ0YsQ0FBQyxFQUNEO2dDQUFDbWdDLFFBQVEsRUFBRSxDQUFDTCxzQkFBc0IsQ0FBQ0csUUFBUSxFQUFFSCxzQkFBc0IsQ0FBQzkvQixRQUFROzhCQUFDLENBQy9FLENBQUM7NEJBQ0gsQ0FBQyxDQUFDOzBCQUNKOzBCQUVBLE9BQU9xQixPQUFPLENBQUN3TCxPQUFPLENBQUMsQ0FBQzt3QkFDMUIsQ0FBQzt3QkFFTXdWLFVBQVUsR0FBZ0I2VCxzQkFBc0IsQ0FBaEQ3VCxVQUFVLEVBQUVQLFVBQVUsR0FBSW9VLHNCQUFzQixDQUFwQ3BVLFVBQVU7d0JBQ3ZCK2QsT0FBd0IsR0FBRyxFQUFFO3dCQUVuQyxJQUFJeGQsVUFBVSxDQUFDTCxRQUFRLElBQUlLLFVBQVUsQ0FBQ0gsdUJBQXVCLEVBQUU7MEJBQzdEMmQsT0FBTyxDQUFDanpDLElBQUksQ0FBQ2d6QywrQkFBK0IsQ0FBQ3ZkLFVBQVUsQ0FBQyxDQUFDO3dCQUMzRDt3QkFFQSxJQUFJUCxVQUFVLENBQUNFLFFBQVEsSUFBSUYsVUFBVSxDQUFDSSx1QkFBdUIsRUFBRTswQkFDN0QyZCxPQUFPLENBQUNqekMsSUFBSSxDQUFDZ3pDLCtCQUErQixDQUFDOWQsVUFBVSxDQUFDLENBQUM7d0JBQzNEO3dCQUFDMWQsU0FBQSxDQUFBdkcsQ0FBQTt3QkFBQSxPQUVLd0QsT0FBTyxDQUFDZzFCLEdBQUcsQ0FBQ3dKLE9BQU8sQ0FBQztzQkFBQTt3QkFBQSxPQUFBejdCLFNBQUEsQ0FBQXhGLENBQUE7b0JBQUE7a0JBQUEsR0FBQW1GLFFBQUE7Z0JBQUEsQ0FDM0I7Z0JBQUEsZ0JBNUNLazdCLHVCQUF1QkEsQ0FBQXJ4QixHQUFBO2tCQUFBLE9BQUFxcEIsS0FBQSxDQUFBOTBCLEtBQUEsT0FBQS9LLFNBQUE7Z0JBQUE7Y0FBQTtjQUFBLEtBOEN6Qm5QLHNFQUFpQixDQUFDMkksZ0NBQWdDO2dCQUFBOGMsU0FBQSxDQUFBN1AsQ0FBQTtnQkFBQTtjQUFBO2NBQUE2UCxTQUFBLENBQUE3UCxDQUFBO2NBQUEsT0FFOUNtaEMsOEJBQThCLENBQUM5SSxzQkFBc0IsQ0FBQztZQUFBO2NBQUEsT0FBQXhvQixTQUFBLENBQUE5TyxDQUFBO1lBQUE7Y0FBQThPLFNBQUEsQ0FBQTdQLENBQUE7Y0FBQSxPQU14RG9oQyx1QkFBdUIsQ0FBQy9JLHNCQUFzQixDQUFDO1lBQUE7Y0FBQSxPQUFBeG9CLFNBQUEsQ0FBQTlPLENBQUE7VUFBQTtRQUFBLEdBQUEyTyxRQUFBO01BQUEsQ0FDdEQ7TUFBQSxTQXhHWXNyQiw4QkFBOEJBLENBQUEzMkIsRUFBQTtRQUFBLE9BQUE0OEIsK0JBQUEsQ0FBQTM4QixLQUFBLE9BQUEvSyxTQUFBO01BQUE7TUFBQSxPQUE5QnloQyw4QkFBOEI7SUFBQTtFQUFBO0lBQUFwMUMsR0FBQTtJQUFBRSxLQUFBLEVBMEczQyxTQUFPbzFDLHVDQUF1Q0EsQ0FDNUM1Z0IsTUFBbUIsRUFDbkI3Qyw0QkFBMkUsRUFDM0VDLDRCQUEwRSxFQUNYO01BQy9ELElBQU15akIsaUJBQWlCLEdBQUcsSUFBSXBuQyxXQUFXLENBQUMsQ0FBQztNQUMzQyxJQUFNaXBCLFdBQTJCLEdBQUcsSUFBSWo0Qiw0REFBYyxDQUFDLENBQUM7TUFFeER1MUIsTUFBTSxDQUFDdFIsU0FBUyxDQUFDLENBQUMsQ0FBQ2xULE9BQU8sQ0FBQyxVQUFBb1QsS0FBSyxFQUFJO1FBQ2xDLElBQU1qRyxJQUEwQixHQUFHaUcsS0FBSyxDQUFDakcsSUFBNEI7UUFFckUsUUFBUUEsSUFBSTtVQUNWLEtBQUssT0FBTztZQUFFO2NBQ1osSUFBSXdVLDRCQUE0QixFQUFFO2dCQUNoQyxJQUFNOHFCLGlDQUF1RixHQUFHLFNBQTFGQSxpQ0FBdUZBLENBQUlwRCxLQUFLLEVBQUVxRCxVQUFVLEVBQUs7a0JBQ3JIL3FCLDRCQUE0QixDQUFDdk8sS0FBSyxFQUFFaTJCLEtBQUssRUFBRXFELFVBQVUsQ0FBQztnQkFDeEQsQ0FBQztnQkFFRCxJQUFNaGUsVUFBVSxHQUFHdGIsS0FBOEI7Z0JBQ2pELElBQU11NUIsV0FBVyxHQUFHLElBQUlDLGVBQWUsQ0FBQztrQkFBQ2QsU0FBUyxFQUFFVztnQkFBaUMsQ0FBQyxDQUFDO2dCQUN2RixJQUFNSSxTQUFTLEdBQUcsSUFBSXZ3Qyx5QkFBeUIsQ0FBQztrQkFBQzhXLEtBQUssRUFBRXNiO2dCQUFVLENBQUMsQ0FBQztnQkFDcEUsSUFBTW9lLFNBQVMsR0FBRyxJQUFJdndDLHlCQUF5QixDQUFDO2tCQUFDNFEsSUFBSSxFQUFFdWhCLFVBQVUsQ0FBQ3ZoQjtnQkFBSSxDQUFDLENBQUM7Z0JBQ3hFLElBQU1rL0IsTUFBTSxHQUFHUSxTQUFTLENBQUNQLFFBQVE7Z0JBQ2pDLElBQU1DLElBQUksR0FBR08sU0FBUyxDQUFDemdDLFFBQVE7Z0JBRS9CZ2dDLE1BQU0sQ0FBQ1UsV0FBVyxDQUFDSixXQUFXLENBQUMsQ0FBQ0ssTUFBTSxDQUFDVCxJQUFJLENBQUM7Z0JBRTVDbEgsaUJBQWlCLENBQUM3cUIsUUFBUSxDQUFDc3lCLFNBQVMsQ0FBQztnQkFDckM1bEIsV0FBVyxDQUFDeDJCLEdBQUcsQ0FDYixJQUFJMUIsd0RBQVUsQ0FBQyxZQUFNO2tCQUNuQnEyQyxpQkFBaUIsQ0FBQzRILFdBQVcsQ0FBQ0gsU0FBUyxDQUFDO2dCQUMxQyxDQUFDLENBQ0gsQ0FBQztjQUNILENBQUMsTUFBTTtnQkFDTHpILGlCQUFpQixDQUFDN3FCLFFBQVEsQ0FBQ3BILEtBQUssQ0FBQztjQUNuQztjQUVBO1lBQ0Y7VUFFQSxLQUFLLE9BQU87WUFBRTtjQUNaLElBQUl3Tyw0QkFBNEIsRUFBRTtnQkFDaEMsSUFBTTZxQixrQ0FBcUYsR0FBRyxTQUF4RkEsa0NBQXFGQSxDQUFJcEQsS0FBSyxFQUFFcUQsVUFBVSxFQUFLO2tCQUNuSDlxQiw0QkFBNEIsQ0FBQ3hPLEtBQUssRUFBRWkyQixLQUFLLEVBQUVxRCxVQUFVLENBQUM7Z0JBQ3hELENBQUM7Z0JBRUQsSUFBTXZlLFVBQVUsR0FBRy9hLEtBQThCO2dCQUNqRCxJQUFNdTVCLFlBQVcsR0FBRyxJQUFJQyxlQUFlLENBQUM7a0JBQUNkLFNBQVMsRUFBRVc7Z0JBQWlDLENBQUMsQ0FBQztnQkFDdkYsSUFBTUksVUFBUyxHQUFHLElBQUl2d0MseUJBQXlCLENBQUM7a0JBQUM4VyxLQUFLLEVBQUUrYTtnQkFBVSxDQUFDLENBQUM7Z0JBQ3BFLElBQU0yZSxVQUFTLEdBQUcsSUFBSXZ3Qyx5QkFBeUIsQ0FBQztrQkFBQzRRLElBQUksRUFBRWdoQixVQUFVLENBQUNoaEI7Z0JBQUksQ0FBQyxDQUFDO2dCQUN4RSxJQUFNay9CLE9BQU0sR0FBR1EsVUFBUyxDQUFDUCxRQUFRO2dCQUNqQyxJQUFNQyxLQUFJLEdBQUdPLFVBQVMsQ0FBQ3pnQyxRQUFRO2dCQUUvQmdnQyxPQUFNLENBQUNVLFdBQVcsQ0FBQ0osWUFBVyxDQUFDLENBQUNLLE1BQU0sQ0FBQ1QsS0FBSSxDQUFDO2dCQUU1Q2xILGlCQUFpQixDQUFDN3FCLFFBQVEsQ0FBQ3N5QixVQUFTLENBQUM7Z0JBRXJDLElBQU1qNkIsV0FBVyxHQUFHLElBQUk1VSxXQUFXLENBQUMsQ0FBQztnQkFDckMsSUFBTWl2QyxXQUFXLEdBQUcsSUFBSUMsS0FBSyxDQUFDLENBQUM7Z0JBRS9CdDZCLFdBQVcsQ0FBQzJILFFBQVEsQ0FBQ3BILEtBQUssQ0FBQztnQkFDM0I4NUIsV0FBVyxDQUFDdm1CLFNBQVMsR0FBRzlULFdBQVc7Z0JBQ25DbFYsUUFBUSxDQUFDMlEsSUFBSSxDQUFDOCtCLFdBQVcsQ0FBQ0YsV0FBVyxDQUFDO2dCQUN0Q2htQixXQUFXLENBQUN4MkIsR0FBRyxDQUNiLElBQUkxQix3REFBVSxDQUFDLFlBQU07a0JBQ25CcTJDLGlCQUFpQixDQUFDNEgsV0FBVyxDQUFDSCxVQUFTLENBQUM7a0JBQ3hDbnZDLFFBQVEsQ0FBQzJRLElBQUksQ0FBQysrQixXQUFXLENBQUNILFdBQVcsQ0FBQztnQkFDeEMsQ0FBQyxDQUNILENBQUM7Y0FDSCxDQUFDLE1BQU07Z0JBQ0w3SCxpQkFBaUIsQ0FBQzdxQixRQUFRLENBQUNwSCxLQUFLLENBQUM7Y0FDbkM7Y0FFQTtZQUNGO1VBRUE7WUFDRXRSLG1FQUFpQixDQUFDcUwsSUFBSSxDQUFDO1FBQzNCO01BQ0YsQ0FBQyxDQUFDO01BRUYsT0FBTztRQUNMazRCLGlCQUFpQixFQUFqQkEsaUJBQWlCO1FBQ2pCbmUsV0FBVyxFQUFYQTtNQUNGLENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNPSDtBQUNBO0FBQ0E7QUFGQSxJQVFxQjFHLG9CQUFvQjtFQUFBLFNBQUFBLHFCQUFBO0lBQUFseEIsMklBQUEsT0FBQWt4QixvQkFBQTtFQUFBO0VBQUEsT0FBQTN3Qix3SUFBQSxDQUFBMndCLG9CQUFBO0lBQUExd0IsR0FBQTtJQUFBRSxLQUFBLEVBQ3ZDLFNBQU9nNkIsaUNBQWlDQSxDQUFtQ2tnQixJQUF1QixFQUFFN25DLElBQThCLEVBQUU7TUFDbEksSUFBSSxPQUFPQSxJQUFJLEtBQUssVUFBVSxFQUFFO1FBQzlCLE9BQU87VUFDTHltQixLQUFLLEVBQUUsS0FBSztVQUNaQyxnQkFBZ0IsZ0JBQUFuMkIsTUFBQSxDQUFnQnMzQyxJQUFJLDBEQUFBdDNDLE1BQUEsQ0FBQXdXLG1JQUFBLENBQThEL0csSUFBSTtRQUN4RyxDQUFDO01BQ0g7TUFFQSxJQUFJQSxJQUFJLENBQUNwSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU87VUFDTDZ1QixLQUFLLEVBQUUsS0FBSztVQUNaQyxnQkFBZ0IsZ0JBQUFuMkIsTUFBQSxDQUFnQnMzQyxJQUFJLGtGQUFBdDNDLE1BQUEsQ0FBK0V5UCxJQUFJLENBQUNwSSxNQUFNO1FBQ2hJLENBQUM7TUFDSDtNQUVBLE9BQU87UUFDTDZ1QixLQUFLLEVBQUUsSUFBSTtRQUNYQyxnQkFBZ0IsRUFBRTtNQUNwQixDQUFDO0lBQ0g7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1Qkg7QUFDQTtBQUNBOztBQUV3RDtBQUNLO0FBQ0c7QUFDQTtBQUNxQztBQUNsQjtBQUNBO0FBRTVFLElBQU1vZ0IsU0FBUyxHQUFHbC9CLE1BQU0sQ0FBQyxDQUFDO0FBQUMsSUFJYmkvQix5QkFBeUI7RUFtRzVDLFNBQUFBLDBCQUFBLEVBQXNCO0lBQUE1NUMsMklBQUEsT0FBQTQ1Qyx5QkFBQTtJQUNwQixNQUFNLElBQUkxMEMsS0FBSyxDQUFDLDBFQUEwRSxDQUFDO0VBQzdGO0VBQUMsT0FBQTNFLHdJQUFBLENBQUFxNUMseUJBQUE7SUFBQXA1QyxHQUFBO0lBQUFFLEtBQUEsRUEzRUQsU0FBTzI1QywrQkFBK0JBLENBQUN6MEIsS0FBaUIsRUFBMkI7TUFDakYsUUFBUUEsS0FBSztRQUNYLEtBQUt5WiwwRUFBVSxDQUFDRyxJQUFJO1VBQ2xCLE9BQU9vYSx5QkFBeUIsQ0FBQ3VFLHlCQUF5QixDQUFDM2UsSUFBSSxDQUFDNGUsTUFBTTs7UUFFeEU7UUFDQSxLQUFLL2UsMEVBQVUsQ0FBQ0ksR0FBRztVQUNqQixPQUFPbjVCLFNBQVM7UUFFbEI7VUFDRWtNLG1FQUFpQixDQUFDb1QsS0FBSyxDQUFDO01BQzVCO0lBQ0Y7RUFBQztJQUFBcGxCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8wNUMsNEJBQTRCQSxDQUFBLEVBQWdCO01BQ2pELE9BQU9SLHlCQUF5QixDQUFDeUUsZUFBZSxDQUFDRCxNQUFNO0lBQ3pEO0VBQUM7SUFBQTU5QyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPZzZDLCtCQUErQkEsQ0FBQzkwQixLQUFpQixFQUEyQjtNQUNqRixRQUFRQSxLQUFLO1FBQ1gsS0FBS2thLDBFQUFVLENBQUNHLElBQUk7VUFDbEIsSUFBSTJaLHlCQUF5QixDQUFDMEUsU0FBUyxFQUFFO1lBQ3ZDLE9BQU8xRSx5QkFBeUIsQ0FBQzJFLHlCQUF5QixDQUFDSCxNQUFNO1VBQ25FO1VBRUEsT0FBT3hFLHlCQUF5QixDQUFDNEUsNEJBQTRCLENBQUN2ZSxJQUFJLENBQUNtZSxNQUFNO1FBRTNFLEtBQUt0ZSwwRUFBVSxDQUFDSSxHQUFHO1VBQ2pCLE9BQU8wWix5QkFBeUIsQ0FBQzRFLDRCQUE0QixDQUFDdGUsR0FBRyxDQUFDa2UsTUFBTTtRQUUxRSxLQUFLdGUsMEVBQVUsQ0FBQ0ssR0FBRztVQUNqQixPQUFPeVoseUJBQXlCLENBQUM0RSw0QkFBNEIsQ0FBQ3JlLEdBQUcsQ0FBQ2llLE1BQU07UUFFMUU7VUFDRTVyQyxtRUFBaUIsQ0FBQ29ULEtBQUssQ0FBQztNQUM1QjtJQUNGO0VBQUM7SUFBQXBsQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPODVDLDhCQUE4QkEsQ0FBQzUwQixLQUFpQixFQUFzQjtNQUMzRSxJQUFLQSxLQUFLLEtBQUtrYSwwRUFBVSxDQUFDRyxJQUFJLElBQUsyWix5QkFBeUIsQ0FBQzZFLGdCQUFnQixFQUFFO1FBQzdFN0UseUJBQXlCLENBQUM4RSxnQ0FBZ0MsR0FBRzlFLHlCQUF5QixDQUFDK0UscUNBQXFDO1FBRTVILE9BQU85RSxTQUFTO01BQ2xCO01BRUEsT0FBT0QseUJBQXlCLENBQUN5RSxlQUFlLENBQUNELE1BQU07SUFDekQ7RUFBQztJQUFBNTlDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9pNkMsK0JBQStCQSxDQUFDLzBCLEtBQWlCLEVBQTJCO01BQ2pGLFFBQVFBLEtBQUs7UUFDWCxLQUFLa2EsMEVBQVUsQ0FBQ0csSUFBSTtVQUFFO1lBQ3BCLElBQUkyWix5QkFBeUIsQ0FBQzBFLFNBQVMsRUFBRTtjQUN2QyxPQUFPMUUseUJBQXlCLENBQUNnRix5QkFBeUIsQ0FBQ1IsTUFBTTtZQUNuRTtZQUVBLE9BQU94RSx5QkFBeUIsQ0FBQ2lGLDRCQUE0QixDQUFDNWUsSUFBSSxDQUFDbWUsTUFBTTtVQUMzRTtRQUVBLEtBQUt0ZSwwRUFBVSxDQUFDSSxHQUFHO1VBQ2pCLE9BQU8wWix5QkFBeUIsQ0FBQ2lGLDRCQUE0QixDQUFDM2UsR0FBRyxDQUFDa2UsTUFBTTtRQUUxRSxLQUFLdGUsMEVBQVUsQ0FBQ0ssR0FBRztVQUNqQixPQUFPeVoseUJBQXlCLENBQUNpRiw0QkFBNEIsQ0FBQzFlLEdBQUcsQ0FBQ2llLE1BQU07UUFFMUU7VUFDRTVyQyxtRUFBaUIsQ0FBQ29ULEtBQUssQ0FBQztNQUM1QjtJQUNGO0VBQUM7SUFBQXBsQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPKzVDLDhCQUE4QkEsQ0FBQSxFQUF1QjtNQUMxRCxPQUFPYix5QkFBeUIsQ0FBQ3lFLGVBQWUsQ0FBQ0QsTUFBTTtJQUN6RDtFQUFDO0FBQUE7QUFBQVUsMEJBQUEsR0FqR2tCbEYseUJBQXlCO0FBQUEzNUMsMklBQUEsQ0FBekIyNUMseUJBQXlCLGVBQ1JyNEMsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxRQUFRO0FBQUE1TSwySUFBQSxDQUR6RDI1Qyx5QkFBeUIsc0JBRURyNEMsNERBQWUsQ0FBQ3NMLFdBQVcsS0FBSyxRQUFRLElBQUl0TCw0REFBZSxDQUFDdzlDLFNBQVM7QUFBQTkrQywySUFBQSxDQUY3RjI1Qyx5QkFBeUIscUJBR0YsSUFBSXJaLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQUF0Z0MsMklBQUEsQ0FIN0MyNUMseUJBQXlCLCtCQUlRO0VBQUNwYSxJQUFJLEVBQUUsSUFBSWUsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQUMsQ0FBQztBQUFBdGdDLDJJQUFBLENBSnZSMjVDLHlCQUF5QixrQ0FLVztFQUNyRDNaLElBQUksRUFBRSxJQUFJTSxVQUFVLElBQUFqOUIsTUFBQSxDQUFBcWMsOElBQUEsQ0FDZnErQixvR0FBdUIsSUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFBcitCLDhJQUFBLENBQ25DcStCLG9HQUF1QixJQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFBcitCLDhJQUFBLENBQ3ZLcStCLG9HQUF1QixJQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQ2hFO0VBQU0sSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0VBQUU7RUFDeEw5ZCxHQUFHLEVBQUUsSUFBSUssVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDelNKLEdBQUcsRUFBRSxJQUFJSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJ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QyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUF1Tiw4SUFBQSxDQUN6RXErQixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUFyK0IsOElBQUEsQ0FBSyxJQUFJNGdCLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQ251QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFF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O1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNibjhDLEdBQUcsRUFBSEEsNENBQUc7RUFDSHMxQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JsTixZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvUHJvdmlkZWRHbG9iYWxTY29wZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9DaGFubmVsQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvQ2h1bmtlZFN0cmVhbS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9DaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL0NodW5rZWRTdHJlYW1pbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvSGxzUGxheWVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL05ldHdvcmtTdGF0ZXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvUmVhbFRpbWVTdHJlYW0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvU2hha2FQbGF5ZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9XZWJQbGF5ZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2SUZyYW1lLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZQRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vRGltZW5zaW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9WaWRlb1RlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnF1ZXVlTWljcm90YXNrKHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50Q3JlYXRlRWxlbWVudDxIVE1MSW1hZ2VFbGVtZW50PignaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gR2xvYmFsU2NvcGUudmFsdWUuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LmRvY3VtZW50Q3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkXG4gICAgICAmJiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBHbG9iYWxTY29wZSBpbXBsZW1lbnRzIElHbG9iYWxTY29wZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbnN0YW5jZSA9IG5ldyBTdWJqZWN0PElHbG9iYWxTY29wZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbnN0YW5jZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlIHwgbnVsbD4oR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpIHtcbiAgICB0aGlzLl9kb2N1bWVudCA9IHByb3ZpZGVkR2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBwcm92aWRlZEdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IHByb3ZpZGVkR2xvYmFsU2NvcGUubmF2aWdhdG9yO1xuICAgIHRoaXMuX3dpbmRvdyA9IHByb3ZpZGVkR2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShwcm92aWRlZEdsb2JhbFNjb3BlOiBJUHJvdmlkZWRHbG9iYWxTY29wZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnN0YW5jZS52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxTY29wZSBjYW4gb25seSBiZSBzZXQgb25lIHRpbWUnKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKEFaKTogVmFsaWRhdGUgcHJvdmlkZWRHbG9iYWxTY29wZVxuICAgIHRoaXMuX2luc3RhbmNlLnZhbHVlID0gbmV3IEdsb2JhbFNjb3BlKHByb3ZpZGVkR2xvYmFsU2NvcGUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlIHwgbnVsbD4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjU3RhdGlzdGljO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydCB7XG4gIHJlc3VsdDogKCkgPT4gSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW0gZXh0ZW5kcyBSVENTdGF0c1JlcG9ydCB7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZXM6ICgpID0+IHN0cmluZ1tdO1xuICBzdGF0OiAobmFtZTogc3RyaW5nKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y1N0YXRpc3RpYyB7XG4gIHNzcmM/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGJpdHJhdGU/OiBudW1iZXI7XG4gIGJ5dGVzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGZyYW1lc0RlY29kZWQ/OiBudW1iZXI7XG4gIHBhY2tldHNMb3N0PzogbnVtYmVyO1xuICBwYWNrZXRzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGNvZGVjPzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU/OiBudW1iZXI7XG4gIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcD86IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4oe30pO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBfaXNNb25pdG9yUnVubmluZyA9IHRydWU7XG4gIHByaXZhdGUgX3VwZGF0ZVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmFja3NUb01vbml0b3I6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICB0aGlzLl90cmFja3NUb01vbml0b3IgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5tYXAodHJhY2sgPT4gdHJhY2sua2luZCkgfHwgW107XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFNEUCA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyA9IHBhcnNlZFNEUC5hdWRpb0NvZGVjO1xuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjID0gcGFyc2VkU0RQLnZpZGVvQ29kZWM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLnVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2FmYXJpIDExIGRvZXNudCBoYXZlIGtpbmQgb3IgbWVkaWFUeXBlIHNvIHdlIG5lZWQgdG8gdGFrZSBpdCBmcm9tIHRoZSBpbmJvdW5kLXJ0cCBvYmplY3QgaWRcbiAgICBjb25zdCBnZXRLaW5kRm9yU2FmYXJpMTEgPSAoaXRlbToge2lkOiBzdHJpbmd9KTogc3RyaW5nID0+IGl0ZW0uaWQuaW5jbHVkZXMoJ0F1ZGlvJykgPyAnYXVkaW8nIDogaXRlbS5pZC5pbmNsdWRlcygnVmlkZW8nKSA/ICd2aWRlbycgOiAnJztcbiAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpXG4gICAgICAudGhlbihzdGF0cyA9PiB7XG4gICAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG5cbiAgICAgICAgaWYgKHN0YXRzKSB7XG4gICAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICAgIGxldCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHN0YXRzLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnaW5ib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGtpbmQgPSByZXBvcnQua2luZCB8fCByZXBvcnQubWVkaWFUeXBlIHx8IGdldEtpbmRGb3JTYWZhcmkxMShyZXBvcnQpO1xuICAgICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSByZXBvcnQuY29kZWNJZCkge1xuICAgICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fdHJhY2tzVG9Nb25pdG9yLmluY2x1ZGVzKGtpbmQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNSZWNlaXZlZCB8fCAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNSZWNlaXZlZCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1JlY2VpdmVkID8/IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXNEZWx0YSA9IGJ5dGVzIC0gcHJldmlvdXNCeXRlc1JlY2VpdmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEZWx0YSA9IHJlcG9ydC50aW1lc3RhbXAgLSAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcCB8fCAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkOiByZXBvcnQuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNMb3N0OiByZXBvcnQucGFja2V0c0xvc3QsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzUmVjZWl2ZWQ6IHJlcG9ydC5wYWNrZXRzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0RlY29kZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNEZWNvZGVkO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgIDEwMDA7XG5cbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZwcyddID0gZnBzID8gTWF0aC5yb3VuZChmcHMgKiAxMDApIC8gMTAwIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzTGVnYWN5KCkudGhlbihzdGF0cyA9PiB7XG4gICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuXG4gICAgICBzdGF0cy5yZXN1bHQoKS5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgIHJlcG9ydC5uYW1lcygpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICdnb29nUlRUJykge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5zdGF0KG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnc3NyYycpIHtcbiAgICAgICAgICBjb25zdCBtZWRpYVR5cGUgPSByZXBvcnQuc3RhdCgnbWVkaWFUeXBlJykudG9TdHJpbmcoKTtcblxuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXSA9IHt0aW1lc3RhbXA6IERhdGUubm93KCl9O1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnc3NyYyddID0gcmVwb3J0LnN0YXQoJ3NzcmMnKS50b1N0cmluZygpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnbWVkaWFUeXBlJ10gPSBtZWRpYVR5cGU7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydieXRlc1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgnYnl0ZXNSZWNlaXZlZCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c0xvc3QnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzTG9zdCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgncGFja2V0c1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydjb2RlYyddID0gcmVwb3J0LnN0YXQoJ2dvb2dDb2RlY05hbWUnKS50b1N0cmluZygpIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUobWVkaWFUeXBlKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3JvdW5kVHJpcFRpbWUnXSA9IHJvdW5kVHJpcFRpbWU7XG5cbiAgICAgICAgICBpZiAobWVkaWFUeXBlID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0RlY29kZWQpIHtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LnN0YXQoJ2ZyYW1lc0RlY29kZWQnKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnBzJ10gPSAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgIDEwMDAgfHwgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcnRtYXAgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYG09JHt0eXBlfWApKT8uc3BsaXQoJyAnKVszXSB8fCAnJztcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3J0bWFwfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lPy5zcGxpdCgnICcpWzFdIHx8ICcnO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5SVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5pY2VDb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldFRyYW5zY2VpdmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmdldFRyYW5zY2VpdmVyc0Rpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0VHJhbnNjZWl2ZXJzID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUcmFuc2NlaXZlcnMoKTogUlRDUnRwVHJhbnNjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ocmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlKG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikpO1xuICAgICAgICBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQge0dsb2JhbFNjb3BlfSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVNoYWthUGxheWVyJztcbmltcG9ydCB7SGxzUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSUhsc1BsYXllcic7XG5pbXBvcnQge1dlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lXZWJQbGF5ZXInO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZT8ucGFnZUxvYWRUaW1lIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlcjogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJykgYXMgVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBvbkxvYWQoZ2xvYmFsU2NvcGU6IElHbG9iYWxTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RLIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBTREsuZGlzcG9zZSgpO1xuICAgIH0pO1xuXG4gICAgU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGU6IElJbml0T3B0aW9ucyAmIHtnbG9iYWxTY29wZT86IElQcm92aWRlZEdsb2JhbFNjb3BlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKSB7XG4gICAgICBHbG9iYWxTY29wZS5zZXRJbnN0YW5jZShvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkdsb2JhbFNjb3BlLnN1YnNjcmliZShTREsub25Mb2FkLmJpbmQoU0RLKSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lDaGFubmVsfSBmcm9tICcuL0lDaGFubmVsJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCwge0NoYW5uZWxDb250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgRW5jb2RlZFN0cmVhbVNpbmssIHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBTdHJlYW1UcmFja1RyYW5zZm9ybSwge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IFN0cmVhbUZhY3RvcnkgZnJvbSAnLi4vc3RyZWFtaW5nL1N0cmVhbUZhY3RvcnknO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsT3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbCBpbXBsZW1lbnRzIElDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NoYW5uZWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RXhpc3RzOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9NdXRlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9QYXVzZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQbGF5aW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUYXJnZXRMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TGFnOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlCaXRyYXRlTGltaXQ6IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZXNvbHV0aW9uOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zKSB7XG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbik7XG4gICAgY29uc3QgY2hhbm5lbENvbnRleHRPcHRpb25zOiBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnM/LnRhcmdldExhZyxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2ssXG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2tcbiAgICB9O1xuICAgIGNvbnN0IHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIGhhc0luc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBuZXcgQ2hhbm5lbENvbnRleHQoY2hhbm5lbENvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlFeGlzdHMgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPih0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPih0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHZpZGVvRWxlbWVudCgpOiBIVE1MVmlkZW9FbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldCB2aWRlb0VsZW1lbnQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSA9IHZpZGVvRWxlbWVudDtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLnJlc29sdXRpb24udmFsdWUud2lkdGggIT09IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoIHx8IHRoaXMucmVzb2x1dGlvbi52YWx1ZS5oZWlnaHQgIT09IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gbmV3IERpbWVuc2lvbih2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCwgdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IERpbWVuc2lvbi5lbXB0eTtcbiAgICB9XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oZWRnZVRva2VuLmNhcGFiaWxpdGllcyk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgZXhpc3RzKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUV4aXN0cztcbiAgfVxuXG4gIGdldCBhdXRvTXV0ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQ7XG4gIH1cblxuICBnZXQgYXV0b1BhdXNlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9QYXVzZWQ7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHBsYXlpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQbGF5aW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IHRhcmdldExhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWc7XG4gIH1cblxuICBnZXQgbGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxhZztcbiAgfVxuXG4gIGdldCBiaXRyYXRlTGltaXQoKTogQml0c1BlclNlY29uZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlc29sdXRpb247XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgaXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ7XG4gIH1cblxuICBnZXQgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgZ2V0IHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcbiAgfVxuXG4gIHNldEJpdHJhdGVMaW1pdChiaXRyYXRlTGltaXQ6IEJpdHNQZXJTZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSBiaXRyYXRlTGltaXQ7XG4gIH1cblxuICBjbGVhckJpdHJhdGVMaW1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kID0gMDtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgQml0cmF0ZU1vZGUuUmVzZXRcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXJnZXRMYWcobGFnOiBNaWxsaXNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZy52YWx1ZSA9IGxhZztcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgcmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBtdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdW5tdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OnN0YXJ0Jyk7XG5cbiAgICBjb25zdCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiA9IHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgICBjb25zdCBsaXN0ZW5PblN0cmVhbVNldHVwID0gdGhpcy5fc2Vzc2lvblRlbGVtZXRyeS5saXN0ZW5PblN0cmVhbVNldHVwKCk7XG5cbiAgICBpZiAoIUVkZ2VBdXRoUGFyc2VyLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+KCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+KCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygnYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlICYmIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggaW5zZXJ0YWJsZS1zdHJlYW1zIGFuZCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBhcmUgZW5hYmxlZCwgb25seSB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGhhc0VuY29kZWRTdHJlYW1TaW5rID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrICYmIGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBjYWxsYmFjayBhbmQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIHNpbmsgZnVuY3Rpb24gZm91bmQsIG9ubHkgdXNlIG9uZSB0eXBlIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgTWVkaWEgU3RyZWFtIFRyYWNrIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIShGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZykge1xuICAgICAgICAgIERpc2NvdmVyeS5jbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgLy8gTmVlZCB0byBzZXQgaXNTdGFydGluZyB0byBmYWxzZSBhbmQgY2FsbCBoYW5kbGVTdHJlYW1GYWlsdXJlIGlmIHN0cmVhbSBtb25pdG9ycyBmb3VuZCBhbiBpc3N1ZVxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVBsYXllciA9IFN0cmVhbUZhY3RvcnkuY3JlYXRlKHRva2VuLCB0aGlzLl9jaGFubmVsQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIGlmICghc3RyZWFtUGxheWVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbVBsYXllci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cCxcbiAgICAgIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQuYmluZCh0aGlzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IGNoYW5uZWwnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuUGxheWluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN0YXJ0QWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwbGF5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBpbml0aWFsaXppbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGxheWluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBhdXNlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBpbnZva2UgcGxheSgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsIHJlYXNvbilcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRGVzdHJveWVkIHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0nLCB0aGlzLnN0cmVhbUlkLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50ICYmIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGNhcGFiaWxpdGllczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSA9IGNhcGFiaWxpdGllcy5maW5kKGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKCdmcmFtZS10aW1pbmctaW5mb3JtYXRpb249JykpO1xuXG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5pc0VuYWJsZWQudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNhYmxpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGFzIG5vIGNhcGFiaWxpdHkgd2FzIGZvdW5kJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNhYmxpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGFzIHRoZSBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IGl0IFslc10nLCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eS5zcGxpdCgnPScpWzFdXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcChvcHRpb24gPT4gb3B0aW9uLnRyaW0oKSlcbiAgICAgIC5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgICAgY2FzZSAndGltZWNvZGUnOlxuICAgICAgICAgICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGltZXN0YW1wcyc6XG4gICAgICAgICAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnSWdub3JpbmcgdW5rbm93biBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gb3B0aW9uIFslc10nLCBvcHRpb24pO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGNvbmZpZ3VyYXRpb24gWyh0aW1lY29kZSBbJXNdLCB0aW1lc3RhbXBzIFslc10pXScsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYXlQcm9taXNlID0gdmlkZW9FbGVtZW50LnBsYXkoKTtcblxuICAgIGlmIChwbGF5UHJvbWlzZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBwbGF5UHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgY29uc3QgaGFzQXVkaW9UcmFjayA9ICEhbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZmlsdGVyKHRyYWNrID0+IHtcbiAgICAgICAgcmV0dXJuIHRyYWNrLmtpbmQgPT09ICdhdWRpbyc7XG4gICAgICB9KS5sZW5ndGg7XG4gICAgICBjb25zdCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiA9ICFTREsuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG5cbiAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiB8fCB2aWRlb0VsZW1lbnQubXV0ZWQgfHwgIWhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQYXVzZWQgdmlkZW8gYWZ0ZXIgcGxheSBmYWlsZWQuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IG11dGVkIHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmlkZW9FbGVtZW50LnBsYXkoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGxheWVkIHZpZGVvIGFmdGVyIGF1dG8gbXV0aW5nLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQgdG8gdW5tdXRlLicsIHRoaXMuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIENoYW5uZWxTdGF0ZSB7XG4gIEluaXRpYWxpemluZyA9IDAsXG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyA9IDIsXG4gIFBhdXNlZCA9IDMsXG4gIFBsYXlpbmcgPSA0LFxuICBSZWNvdmVyaW5nID0gNSxcbiAgUmVjb25uZWN0aW5nID0gNixcbiAgU3RhbmRCeSA9IDcsXG4gIFN0b3BwZWQgPSA4LFxuICBVbmF1dGhvcml6ZWQgPSA5LFxuICBHZW9SZXN0cmljdGVkID0gMTAsXG4gIEdlb0Jsb2NrZWQgPSAxMSxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlID0gMTIsXG4gIENvbmZpZ3VyYXRpb25FcnJvciA9IDEzLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IgPSAxNCxcbiAgQ29ubmVjdGlvbkVycm9yID0gMTUsXG4gIENsaWVudFN0YXJ0RXJyb3IgPSAxNixcbiAgRXJyb3IgPSAxN1xufVxuXG5leHBvcnQgZGVmYXVsdCBDaGFubmVsU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVDaGFubmVsT3B0aW9ucyA9IHtcbiAgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50O1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbHMge1xuICBzdGF0aWMgY3JlYXRlQ2hhbm5lbChvcHRpb25zOiBDcmVhdGVDaGFubmVsT3B0aW9ucyk6IENoYW5uZWwge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zOiBDaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucy50YXJnZXRMYWcsXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3M6IENoYW5uZWxPcHRpb25zICYge1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsKG9wdGlvbnMudmlkZW9FbGVtZW50LCBvcHRpb25zLnRva2VuLCBjaGFubmVsT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbHMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbSwgU3Vic2NyaWJlU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi4vY2hhbm5lbHMvSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4uL2NoYW5uZWxzL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IHtJUnRjTW9uaXRvclN0YXRpc3RpYywgSVJ0Y1N0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcblxuY29uc3QgZGVmYXVsdFRhcmdldExhZyA9IDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogbnVtYmVyO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbENvbnRleHQge1xuICBjaGFubmVsSW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgY2hhbm5lbERpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcmVuZGVyZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHZpZGVvRWxlbWVudDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD47XG4gIHN0YXRlOiBTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIGV4aXN0czogU3ViamVjdDxib29sZWFuIHwgbnVsbD47XG4gIGF1dG9NdXRlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0b1BhdXNlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwbGF5aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICB0YXJnZXRMYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBsYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+O1xuICBiaXRyYXRlTGltaXQ6IFN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHJlc29sdXRpb246IFN1YmplY3Q8RGltZW5zaW9uPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHwgbnVsbDtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s6IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB8IG51bGw7XG4gIHN0cmVhbTogU3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHJ0Y1N0YXRpc3RpY3M6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgdmlkZW9UZWxlbWV0cnk6IFZpZGVvVGVsZW1ldHJ5IHwgbnVsbDtcbiAgcnRjQXVkaW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWMgfCBudWxsO1xuICBydGNWaWRlb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYyB8IG51bGw7XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDaGFubmVsQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnJlbmRlcmVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSBuZXcgU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdWJqZWN0PENoYW5uZWxTdGF0ZT4oQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZyk7XG4gICAgdGhpcy5leGlzdHMgPSBuZXcgU3ViamVjdDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5hdXRvTXV0ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRvUGF1c2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0aG9yaXplZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMub25saW5lID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucGxheWluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0YW5kYnkgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdG9wcGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMudGFyZ2V0TGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQ+KG9wdGlvbnM/LnRhcmdldExhZyA/PyBkZWZhdWx0VGFyZ2V0TGFnKTtcbiAgICB0aGlzLmxhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuYml0cmF0ZUxpbWl0ID0gbmV3IFN1YmplY3Q8Qml0c1BlclNlY29uZD4oMCk7XG4gICAgdGhpcy5yZXNvbHV0aW9uID0gbmV3IFN1YmplY3Q8RGltZW5zaW9uPihEaW1lbnNpb24uZW1wdHkpO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigwKTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbmV3IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID8/IG51bGw7XG4gICAgdGhpcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID8/IG51bGw7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnZpZGVvVGVsZW1ldHJ5ID0gbnVsbDtcbiAgICB0aGlzLnJ0Y0F1ZGlvU3RhdGlzdGljID0gbnVsbDtcbiAgICB0aGlzLnJ0Y1ZpZGVvU3RhdGlzdGljID0gbnVsbDtcbiAgICB0aGlzLmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQudmFsdWUgJiYgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhbmRCeTtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkO1xuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmV4aXN0cy52YWx1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9ufSBmcm9tICcuLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQge1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkRXh0cmFjdFRpbWVjb2RlOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBpc0VuYWJsZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2hvdWxkRXh0cmFjdFRpbWVjb2RlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0VuYWJsZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlQ29udGV4dCB7XG4gIGlzU3RhcnRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGlzRGlzcG9zZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pc1N0YXJ0aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuaXNEaXNwb3NlZCA9IGZhbHNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtBdWRpb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbmV4cG9ydCB0eXBlIFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICBoYXNJbnNlcnRhYmxlU3RyZWFtczogYm9vbGVhbjtcbiAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrID0ge1xuICBtZWRpYVN0cmVhbVRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbDtcbiAgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyIHwgbnVsbDtcbiAgbWlkOiBzdHJpbmcgfCBudWxsO1xuICBjb2RlYzogVmlkZW9Db2RlYyB8IEF1ZGlvQ29kZWMgfCBudWxsO1xuICB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogV29ya2VyIHwgbnVsbDtcbiAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlciB8IG51bGw7XG4gIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCB7XG4gIHJlYWRvbmx5IGhhc0luc2VydGFibGVTdHJlYW1zOiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGF1ZGlvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgcmVhZG9ubHkgdmlkZW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5oYXNJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaztcbiAgICB0aGlzLmF1ZGlvVHJhY2sgPSB7XG4gICAgICBtZWRpYVN0cmVhbVRyYWNrOiBudWxsLFxuICAgICAgcmVjZWl2ZXI6IG51bGwsXG4gICAgICBtaWQ6IG51bGwsXG4gICAgICBjb2RlYzogbnVsbCxcbiAgICAgIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IFtdXG4gICAgfTtcbiAgICB0aGlzLnZpZGVvVHJhY2sgPSB7XG4gICAgICBtZWRpYVN0cmVhbVRyYWNrOiBudWxsLFxuICAgICAgcmVjZWl2ZXI6IG51bGwsXG4gICAgICBtaWQ6IG51bGwsXG4gICAgICBjb2RlYzogbnVsbCxcbiAgICAgIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IFtdXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gQXVkaW9Db2RlYyB7XG4gIE9QVVMgPSAwLFxuICBBQUMgPSAxXG59XG5cbmV4cG9ydCB0eXBlIEF1ZGlvQ29kZWNUeXBlID0gJ09QVVMnIHwgJ0FBQyc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7QXVkaW9Db2RlYywgQXVkaW9Db2RlY1R5cGV9IGZyb20gJy4vQXVkaW9Db2RlYyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvQ29kZWNNYXBwaW5nIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXVkaW9Db2RlY1RvQXVkaW9Db2RlY1R5cGUoYXVkaW9Db2RlYzogQXVkaW9Db2RlYyk6IEF1ZGlvQ29kZWNUeXBlIHtcbiAgICBzd2l0Y2ggKGF1ZGlvQ29kZWMpIHtcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5PUFVTOlxuICAgICAgICByZXR1cm4gJ09QVVMnO1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLkFBQzpcbiAgICAgICAgcmV0dXJuICdBQUMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYXVkaW9Db2RlYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMoYXVkaW9Db2RlY1R5cGU6IEF1ZGlvQ29kZWNUeXBlKTogQXVkaW9Db2RlYyB7XG4gICAgY29uc3QgYXVkaW9Db2RlY1N0cmluZyA9IGF1ZGlvQ29kZWNUeXBlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIEF1ZGlvQ29kZWM7XG5cbiAgICBzd2l0Y2ggKGF1ZGlvQ29kZWNTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ09QVVMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5PUFVTO1xuICAgICAgY2FzZSAnQUFDJzpcbiAgICAgICAgcmV0dXJuIEF1ZGlvQ29kZWMuQUFDO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYXVkaW9Db2RlY1N0cmluZyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIFZpZGVvQ29kZWMge1xuICBIMjY0ID0gMCxcbiAgVlA4ID0gMSxcbiAgVlA5ID0gMlxufVxuXG5leHBvcnQgdHlwZSBWaWRlb0NvZGVjVHlwZSA9ICdIMjY0JyB8ICdWUDgnIHwgJ1ZQOSc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7VmlkZW9Db2RlYywgVmlkZW9Db2RlY1R5cGV9IGZyb20gJy4vVmlkZW9Db2RlYyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZGVvQ29kZWNNYXBwaW5nIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VmlkZW9Db2RlY1RvVmlkZW9Db2RlY1R5cGUodmlkZW9Db2RlYzogVmlkZW9Db2RlYyk6IFZpZGVvQ29kZWNUeXBlIHtcbiAgICBzd2l0Y2ggKHZpZGVvQ29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICByZXR1cm4gJ0gyNjQnO1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuICdWUDgnO1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuICdWUDknO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodmlkZW9Db2RlYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWModmlkZW9Db2RlY1R5cGU6IFZpZGVvQ29kZWNUeXBlKTogVmlkZW9Db2RlYyB7XG4gICAgY29uc3QgdmlkZW9Db2RlY1N0cmluZyA9IHZpZGVvQ29kZWNUeXBlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFZpZGVvQ29kZWM7XG5cbiAgICBzd2l0Y2ggKHZpZGVvQ29kZWNTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5IMjY0O1xuICAgICAgY2FzZSAnVlA4JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuVlA4O1xuICAgICAgY2FzZSAnVlA5JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuVlA5O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodmlkZW9Db2RlY1N0cmluZyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFsweDAwLCAweDAwLCAweDAwLCAweDAxXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVNb2RlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZU1vZGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSk6IEJpdHJhdGVNb2RlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlTW9kZSkge1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuRm9yY2U6XG4gICAgICAgIHJldHVybiAnRm9yY2UnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlTW9kZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vRGlzY292ZXJ5VXJpJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGVmYXVsdFRpbWVvdXQgPSAyMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEaXNjb3ZlcnknKTtcbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF91cmk6IFVSTDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IFVSTCkge1xuICAgIGlmICghdXJpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB1cmknKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKHVyaS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gIH1cblxuICBhc3luYyBkaXNjb3Zlck5lYXJieUVuZFBvaW50cyh1cmk6IFVSTCwgdGltZW91dDogbnVtYmVyKTogUHJvbWlzZTxFbmRQb2ludFtdPiB7XG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB0aW1lb3V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpc2NvdmVyeSB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRpbWVvdXQpKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dCkpXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtPy5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIG5ldyBFcnJvcihgU2V0IGxpbWl0IGJpdHJhdGUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgbmV3IEVycm9yKGBBZGQgaWNlIGNhbmRpZGF0ZXMgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWcsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJRGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUnRwVGltZXN0YW1wfSBmcm9tICcuL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkLCBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0ID0ge1xuICBjb2RlYzogVmlkZW9Db2RlYztcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIGlzRW5hYmxlZFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlcjtcbiAgbWlkOiBzdHJpbmc7XG4gIHRyYWNrSWQ6IHN0cmluZztcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG4gIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RyYW5zZm9ybU5hbWUgPSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXA6IE1hcDxSdHBUaW1lc3RhbXAsIERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9jdXJyZW50UGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnIHwgJ3BhdXNlZCcgfCAnc3RhbGxlZCcgfCAnZW5kZWQnIHwgJ2Vycm9yJyB8ICd3YWl0aW5nJyA9ICd3YWl0aW5nJztcbiAgcHJpdmF0ZSBfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSB7XG4gICAgdGhpcy5pbml0aWFsaXplKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oY29udGV4dC5zdHJlYW1JZCwgY29udGV4dC5jb2RlYywgY29udGV4dC5yZWNlaXZlciwgY29udGV4dC5taWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKGNvbnRleHQudmlkZW9FbGVtZW50LCBjb250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvbnRleHQuY29kZWMsIGNvbnRleHQubWlkLCBjb250ZXh0LnRyYWNrSWQsIGNvbnRleHQudHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgY29udGV4dC50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLCBjb250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgY29udGV4dC5pc0VuYWJsZWRTdWJqZWN0LnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oc3RyZWFtSWQ6IHN0cmluZywgY29kZWM6IFZpZGVvQ29kZWMsIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlciwgbWlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoY29kZWMgIT09IFZpZGVvQ29kZWMuSDI2NCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIHZpZGVvIGNvZGVjIGlzIG5vdCBIMjY0Jywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNlaXZlcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIHJlY2VpdmVyIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghbWlkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gbWlkIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29kZWM6IFZpZGVvQ29kZWMsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIucmVnaXN0ZXJSb3V0ZTxUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkPj4oVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkZyYW1lVGltaW5nSW5mb3JtYXRpb24sIHRoaXMuaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlLmJpbmQodGhpcywgVmlkZW9Db2RlY1tjb2RlY10sIG1pZCEsIHRyYWNrSWQhLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIuX3RyYW5zZm9ybU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UoY29kZWM6IHN0cmluZywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG1lc3NhZ2U6IE1ldGFkYXRhTWVzc2FnZVBheWxvYWQpOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtydHBUaW1lc3RhbXAsIG1ldGFkYXRhXSBvZiBPYmplY3QuZW50cmllcyhtZXNzYWdlKSkge1xuICAgICAgY29uc3QgcnRwVGltZXN0YW1wTnVtYmVyID0gcGFyc2VJbnQocnRwVGltZXN0YW1wLCAxMCk7XG4gICAgICBjb25zdCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG1ldGFkYXRhWydkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiddO1xuXG4gICAgICBpZiAoZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24pIHtcbiAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XG4gICAgICAgICAgdGltZWNvZGU6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRpbWVjb2RlID8/IG51bGwsXG4gICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24ucmVjZWl2ZVRpbWVzdGFtcCA/PyBudWxsLFxuICAgICAgICAgIGtpbmQ6ICd2aWRlbycsXG4gICAgICAgICAgY29kZWMsXG4gICAgICAgICAgbWlkLFxuICAgICAgICAgIHRyYWNrSWQsXG4gICAgICAgICAgc291cmNlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGluZ2VzdFRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBlbmNvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgdHJhbnNjb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHBsYXliYWNrU3RhdGU6IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuc2V0KHJ0cFRpbWVzdGFtcE51bWJlciwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcodmlkZW9FbGVtZW50U3ViamVjdDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD4sIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5jbGVhcigpKSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodmlkZW9FbGVtZW50U3ViamVjdC5zdWJzY3JpYmUodmlkZW9FbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbm93OiBET01IaWdoUmVzVGltZVN0YW1wLCBtZXRhZGF0YTogVmlkZW9GcmFtZUNhbGxiYWNrTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZS1yZWdpc3RlciB0aGUgY2FsbGJhY2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIGFnYWluXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG5cbiAgICBjb25zdCBydHBUaW1lc3RhbXAgPSBtZXRhZGF0YS5ydHBUaW1lc3RhbXA7XG5cbiAgICBpZiAoIXJ0cFRpbWVzdGFtcCkge1xuICAgICAgLy8gVE9ETyAoTkgpOiBBZGQgYSB0aHJvdHRsZWQgbG9nIGluZGljYXRpbmcgdGhhdCBubyBSVFAgdGltZXN0YW1wIHdhcyBmb3VuZFxuICAgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IGl0J3MgbnVsbGFibGUsIGJ1dCB3ZSBhbHdheXMgaGF2ZSBpdCBpbiBhIFdlYlJUQyBjb250ZXh0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGltZXN0YW1wc1RvRGVsZXRlOiBSdHBUaW1lc3RhbXBbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbdGltZXN0YW1wLCBmcmFtZVRpbWluZ10gb2YgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcCkge1xuICAgICAgaWYgKHRpbWVzdGFtcCA+IHJ0cFRpbWVzdGFtcCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IHtcbiAgICAgICAgLi4uZnJhbWVUaW1pbmcsXG4gICAgICAgIHJlbmRlclRpbWVzdGFtcDogbmV3IERhdGUocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIG5vdyksXG4gICAgICAgIHBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJ1xuICAgICAgfTtcblxuICAgICAgdGltZXN0YW1wc1RvRGVsZXRlLnB1c2godGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRpbWVzdGFtcCBvZiB0aW1lc3RhbXBzVG9EZWxldGUpIHtcbiAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuZGVsZXRlKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgY29uc3Qgb25QbGF5aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGxheWluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKSkpO1xuXG4gICAgY29uc3Qgb25QYXVzZSA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BhdXNlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSkpKTtcblxuICAgIGNvbnN0IG9uU3RhbGxlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3N0YWxsZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCkpKTtcblxuICAgIGNvbnN0IG9uV2FpdGluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3dhaXRpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZykpKTtcblxuICAgIGNvbnN0IG9uRW5kZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlbmRlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCkpKTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlcnJvcic7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcikpKTtcblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCkge1xuICAgICAgICB2aWRlb0VsZW1lbnQuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCA9IHZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrLmJpbmQodGhpcywgdmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nfSBmcm9tICcuL0NodW5rZWRTdHJlYW1pbmcnO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3N9IGZyb20gJy4vU3RyZWFtVHlwZXMnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TmV0d29ya1N0YXRlc30gZnJvbSAnLi9OZXR3b3JrU3RhdGVzJztcbmltcG9ydCBDaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlIGZyb20gJy4vQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENodW5rZWRTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NodW5rZWRTdHJlYW0nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlOiBDaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb25pdG9yRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBfc3RyZWFtU3RhdGlzdGljczogQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3MgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbW9uaXRvckZhaWx1cmVDb3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IoY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBjaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlOiBDaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9jaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlID0gY2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZTtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZyk6IFByb21pc2U8dm9pZCB8IElEaXNwb3NhYmxlPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgIC50aGVuKGVuZFBvaW50ID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlO1xuXG4gICAgICAgIGlmICghZW5kUG9pbnQpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1N1YnNjcmliZSBmYWlsZWQ6IGVuZCBwb2ludCBzZXJ2aWNlIGlzIG1pc3NpbmcnKTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkVycm9yO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZXhpc3RzLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IHVuZGVmaW5lZCA7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG9mZmVyU2RwID0gY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24/LnNkcDtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnMgPSB7XG4gICAgICAgICAgb3JpZ2luU3RhcnRUaW1lOiBEYXRlLm5vdygpIC0gbGFnICsgKGVuZFBvaW50LnJvdW5kVHJpcFRpbWUpIC8gMixcbiAgICAgICAgICBsYWc6IGxhZ1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdTdWJzY3JpYmUgZmFpbGVkOiB2aWRlbyBlbGVtZW50IGlzIG1pc3NpbmcnKTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9mZmVyU2RwKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdTdWJzY3JpYmUgZmFpbGVkOiBvZmZlciBTRFAgaXMgbWlzc2luZycpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuRXJyb3I7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ2h1bmtlZFN0cmVhbWluZy5zdGFydCh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBvZmZlclNkcCwgb3B0aW9ucywgKCkgPT4gdGhpcy5yZXRyeU9uU3RyZWFtRmFpbHVyZSgpKVxuICAgICAgICAgIC50aGVuKHBsYXllciA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vbml0b3IocGxheWVyKTtcblxuICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHBsYXllcik7XG5cbiAgICAgICAgICAgIHJldHVybiBwbGF5ZXI7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NodW5rZWRTdHJlYW1pbmcgZmFpbGVkJywgZSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJ5T25TdHJlYW1GYWlsdXJlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JGYWlsdXJlQ291bnQgPSAwO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fbW9uaXRvckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb25pdG9yKHBsYXllcjogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RyZWFtU3RhdGlzdGljcyA9IENodW5rZWRTdHJlYW1pbmcuZ2V0U3RhdHMoKTtcblxuICAgICAgaWYgKHRoaXMuX2NodW5rZWRTdHJlYW1QbGF5YmFja01vZGUgPT09IENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUuTGl2ZVxuICAgICAgICAmJiBuZXdTdHJlYW1TdGF0aXN0aWNzPy5uZXR3b3JrU3RhdGUgPT09IE5ldHdvcmtTdGF0ZXMuTmV0d29ya05vU291cmNlXG4gICAgICAgICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZT8uY3VycmVudFRpbWUgPT09IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZT8uZHVyYXRpb25cbiAgICAgICkge1xuICAgICAgICB0aGlzLnJldHJ5T25TdHJlYW1GYWlsdXJlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc3RyZWFtU3RhdGlzdGljcyAmJlxuICAgICAgICAhdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlPy5wYXVzZWQgJiZcbiAgICAgICAgICAobmV3U3RyZWFtU3RhdGlzdGljcz8uY3VycmVudFRpbWUgJiYgdGhpcy5fc3RyZWFtU3RhdGlzdGljcy5jdXJyZW50VGltZSA+PSBuZXdTdHJlYW1TdGF0aXN0aWNzLmN1cnJlbnRUaW1lKSAmJlxuICAgICAgICAgICghbmV3U3RyZWFtU3RhdGlzdGljcz8uZGF0YUJ1ZmZlcmVkIHx8IHRoaXMuX3N0cmVhbVN0YXRpc3RpY3MuZGF0YUJ1ZmZlcmVkID49IG5ld1N0cmVhbVN0YXRpc3RpY3MuZGF0YUJ1ZmZlcmVkKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX21vbml0b3JGYWlsdXJlQ291bnQrKztcblxuICAgICAgICBpZiAodGhpcy5fbW9uaXRvckZhaWx1cmVDb3VudCA+IDQpIHtcbiAgICAgICAgICB0aGlzLnJldHJ5T25TdHJlYW1GYWlsdXJlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX21vbml0b3JGYWlsdXJlQ291bnQgPSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlPy5wYXVzZWQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU/LnBhdXNlZCAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3RyZWFtU3RhdGlzdGljcyA9IG5ld1N0cmVhbVN0YXRpc3RpY3M7XG5cbiAgICAgIHRoaXMubW9uaXRvcihwbGF5ZXIpO1xuICAgIH0sIDEwMDApO1xuXG4gICAgdGhpcy5fbW9uaXRvckRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfSkpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fbW9uaXRvckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUge1xuICAgIExpdmUgPSAxLFxuICAgIE9uZERlbWFuZCA9IDJcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBXZWJQbGF5ZXIgZnJvbSAnLi9XZWJQbGF5ZXInO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IFNoYWthUGxheWVyIGZyb20gJy4vU2hha2FQbGF5ZXInO1xuaW1wb3J0IEhsc1BsYXllciBmcm9tICcuL0hsc1BsYXllcic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge1xuICBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucyxcbiAgQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3Ncbn0gZnJvbSAnLi9TdHJlYW1UeXBlcyc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL0lXZWJQbGF5ZXInO1xuXG5leHBvcnQgY2xhc3MgQ2h1bmtlZFN0cmVhbWluZyB7XG4gIHByaXZhdGUgc3RhdGljIF9wZW5kaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIF9obHNQbGF5ZXI6IEhsc1BsYXllclR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9waGVuaXhXZWJQbGF5ZXI6IFdlYlBsYXllclR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYTogU2hha2FQbGF5ZXJUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnM7XG4gIHByaXZhdGUgc3RhdGljIF9wbGF5ZXI6IFNoYWthUGxheWVyIHwgV2ViUGxheWVyIHwgSGxzUGxheWVyO1xuXG4gIHN0YXRpYyBnZXQgaGxzUGxheWVyKCk6IEhsc1BsYXllclR5cGUge1xuICAgIHJldHVybiB0aGlzLl9obHNQbGF5ZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBoZW5peFdlYlBsYXllcigpOiBXZWJQbGF5ZXJUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fcGhlbml4V2ViUGxheWVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYSgpOiBTaGFrYVBsYXllclR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzdGFydCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHN0cmVhbUlkOiBzdHJpbmcsIG9mZmVyU2RwOiBzdHJpbmcsIG9wdGlvbnM6IENodW5rZWRTdHJlYW1pbmdPcHRpb25zLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiBGdW5jdGlvbik6IFByb21pc2U8SURpc3Bvc2FibGU+IHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGlmICh0aGlzLl9obHNQbGF5ZXIgfHwgdGhpcy5fc2hha2EgfHwgdGhpcy5fcGhlbml4V2ViUGxheWVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWQodmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICAgIH1cblxuICAgIGlmICghU0RLLndlYlBsYXllckxvYWRlciAmJiAhU0RLLnNoYWthUGxheWVyTG9hZGVyICYmICFTREsuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQtZmVhdHVyZSwgYWRkIHN0cmVhbSBwbGF5ZXInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8SURpc3Bvc2FibGU+KHJlc29sdmUgPT4ge1xuICAgICAgaWYgKFNESy5obHNKc0xvYWRlcikge1xuICAgICAgICB0aGlzLl9wZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgU0RLLmhsc0pzTG9hZGVyKChwbGF5ZXI6IEhsc1BsYXllclR5cGUpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLl9obHNQbGF5ZXIgPSBwbGF5ZXI7XG5cbiAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZykge1xuICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMubG9hZGVkKHZpZGVvRWxlbWVudCwgc3RyZWFtSWQsIG9mZmVyU2RwLCBoYW5kbGVTdHJlYW1GYWlsdXJlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFNESy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZyA9IHRydWU7XG4gICAgICAgIFNESy53ZWJQbGF5ZXJMb2FkZXIoKHBsYXllcjogV2ViUGxheWVyVHlwZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuX3BoZW5peFdlYlBsYXllciA9IHBsYXllcjtcblxuICAgICAgICAgIGlmICh0aGlzLl9wZW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9wZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5sb2FkZWQodmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIGhhbmRsZVN0cmVhbUZhaWx1cmUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoU0RLLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmcgPSB0cnVlO1xuICAgICAgICBTREsuc2hha2FQbGF5ZXJMb2FkZXIoKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5fc2hha2EgPSBwbGF5ZXI7XG5cbiAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZykge1xuICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMubG9hZGVkKHZpZGVvRWxlbWVudCwgc3RyZWFtSWQsIG9mZmVyU2RwLCBoYW5kbGVTdHJlYW1GYWlsdXJlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdGF0cygpOiBDaHVua2VkU3RyZWFtaW5nU3RhdGlzdGljcyB8IG51bGwge1xuICAgIGlmICh0aGlzLl9wbGF5ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0U3RhdHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIHBsYXkoUGxheWVyOiB0eXBlb2YgV2ViUGxheWVyIHwgdHlwZW9mIFNoYWthUGxheWVyIHwgdHlwZW9mIEhsc1BsYXllciwgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBzdHJlYW1JZDogc3RyaW5nLCBvZmZlclNkcDogc3RyaW5nLCBvcHRpb25zOiBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgaGFuZGxlU3RyZWFtRmFpbHVyZTogRnVuY3Rpb24pOiBQcm9taXNlPElEaXNwb3NhYmxlPiB7XG4gICAgY29uc3QgZGFzaE1hbmlmZXN0VXJsTWF0Y2ggPSBvZmZlclNkcC5tYXRjaCgvYT14LXBsYXlsaXN0OihbXlxcbl0qWy5dbXBkXFw/P1teXFxzXSopL20pO1xuICAgIGNvbnN0IGhsc01hbmlmZXN0VXJsTWF0Y2ggPSBvZmZlclNkcC5tYXRjaCgvYT14LXBsYXlsaXN0OihbXlxcbl0qWy5dbTN1OFxcPz9bXlxcc10qKS9tKTtcbiAgICBjb25zdCBtYW5pZmVzdFVybCA9IGRhc2hNYW5pZmVzdFVybE1hdGNoICYmIGRhc2hNYW5pZmVzdFVybE1hdGNoWzFdID8gZGFzaE1hbmlmZXN0VXJsTWF0Y2hbMV0gOiAnJztcbiAgICBjb25zdCBwbGF5bGlzdFVybCA9IGhsc01hbmlmZXN0VXJsTWF0Y2ggJiYgaGxzTWFuaWZlc3RVcmxNYXRjaFsxXSA/IGhsc01hbmlmZXN0VXJsTWF0Y2hbMV0gOiAnJztcblxuICAgIGlmIChwbGF5bGlzdFVybCkge1xuICAgICAgaWYgKCF0aGlzLl9waGVuaXhXZWJQbGF5ZXIgfHwgRmVhdHVyZUVuYWJsZW1lbnQuc2hvdWxkVXNlTmF0aXZlSGxzKSB7XG4gICAgICAgIHRoaXMuX3BsYXllciA9IG5ldyBQbGF5ZXIodmlkZW9FbGVtZW50LCAnaGxzJywgc3RyZWFtSWQsIHBsYXlsaXN0VXJsLCBvcHRpb25zLCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcblxuICAgICAgICB0aGlzLl9wbGF5ZXIuc3RhcnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcGxheWVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYW5pZmVzdFVybCkge1xuICAgICAgaWYgKCF0aGlzLl9obHNQbGF5ZXIgJiYgISh0aGlzLl9waGVuaXhXZWJQbGF5ZXIgJiYgRmVhdHVyZUVuYWJsZW1lbnQuc2hvdWxkVXNlTmF0aXZlSGxzKSkge1xuICAgICAgICB0aGlzLl9wbGF5ZXIgPSBuZXcgUGxheWVyKHZpZGVvRWxlbWVudCwgJ2Rhc2gnLCBzdHJlYW1JZCwgbWFuaWZlc3RVcmwsIG9wdGlvbnMsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuXG4gICAgICAgIHRoaXMuX3BsYXllci5zdGFydCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF5ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hbmlmZXN0VXJsIHx8IHBsYXlsaXN0VXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFske3N0cmVhbUlkfV0gQ2Fubm90IHBsYXkgWyR7cGxheWxpc3RVcmwgPyAnSExTJyA6ICdEQVNIJ31dIHN0cmVhbSB3aXRoIGluY2x1ZGVkIHBsYXllcmApO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gc3RyZWFtIHBsYXlsaXN0IGZvdW5kJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsb2FkZWQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBzdHJlYW1JZDogc3RyaW5nLCBvZmZlclNkcDogc3RyaW5nLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiBGdW5jdGlvbik6IFByb21pc2U8SURpc3Bvc2FibGU+IHtcbiAgICBpZiAodGhpcy5faGxzUGxheWVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5KEhsc1BsYXllciwgdmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIHtcbiAgICAgICAgLi4udGhpcy5fb3B0aW9ucyxcbiAgICAgICAgcHJlZmVyTmF0aXZlOiBGZWF0dXJlRW5hYmxlbWVudC5zaG91bGRVc2VOYXRpdmVIbHNcbiAgICAgIH0sIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9waGVuaXhXZWJQbGF5ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXkoV2ViUGxheWVyLCB2aWRlb0VsZW1lbnQsIHN0cmVhbUlkLCBvZmZlclNkcCwge1xuICAgICAgICAuLi50aGlzLl9vcHRpb25zLFxuICAgICAgICBwcmVmZXJOYXRpdmU6IEZlYXR1cmVFbmFibGVtZW50LnNob3VsZFVzZU5hdGl2ZUhsc1xuICAgICAgfSwgaGFuZGxlU3RyZWFtRmFpbHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheShTaGFrYVBsYXllciwgdmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIHtcbiAgICAgIC4uLnRoaXMuX29wdGlvbnMsXG4gICAgICBwcmVmZXJOYXRpdmU6IEZlYXR1cmVFbmFibGVtZW50LnNob3VsZFVzZU5hdGl2ZUhsc1xuICAgIH0sIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ30gZnJvbSAnLi9DaHVua2VkU3RyZWFtaW5nJztcbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ09wdGlvbnMsIENodW5rZWRTdHJlYW1pbmdTdGF0aXN0aWNzfSBmcm9tICcuL1N0cmVhbVR5cGVzJztcbmltcG9ydCB7SUhsc1BsYXllclR5cGV9IGZyb20gJy4vSUhsc1BsYXllcic7XG5pbXBvcnQge05ldHdvcmtTdGF0ZXN9IGZyb20gJy4vTmV0d29ya1N0YXRlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhsc1BsYXllciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfa2luZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYW5pZmVzdFVSSTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucztcbiAgcHJpdmF0ZSBfcGxheWVyOiBJSGxzUGxheWVyVHlwZSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBraW5kOiBzdHJpbmcsIHN0cmVhbUlkOiBzdHJpbmcsIG1hbmlmZXN0VVJJOiBzdHJpbmcsIG9wdGlvbnM6IENodW5rZWRTdHJlYW1pbmdPcHRpb25zKSB7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50ID0gdmlkZW9FbGVtZW50O1xuICAgIHRoaXMuX2tpbmQgPSBraW5kO1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fbWFuaWZlc3RVUkkgPSBlbmNvZGVVUkkobWFuaWZlc3RVUkkpLnJlcGxhY2UoL1sjXS9nLCAnJTIzJyk7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcGxheWVyID0gbnVsbDtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmIChDaHVua2VkU3RyZWFtaW5nLmhsc1BsYXllcikge1xuICAgICAgaWYgKENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgICAgdGhpcy5fcGxheWVyID0gbmV3IENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyKHtcbiAgICAgICAgICBlbmFibGVXb3JrZXI6IHRydWUsXG4gICAgICAgICAgbWF4QnVmZmVyTGVuZ3RoOiAxLFxuICAgICAgICAgIGJhY2tCdWZmZXJMZW5ndGg6IDAsXG4gICAgICAgICAgbGl2ZVN5bmNEdXJhdGlvbjogNyxcbiAgICAgICAgICBsaXZlRHVyYXRpb25JbmZpbml0eTogdHJ1ZSxcbiAgICAgICAgICBsaXZlTWF4TGF0ZW5jeUR1cmF0aW9uOiBJbmZpbml0eSxcbiAgICAgICAgICBoaWdoQnVmZmVyV2F0Y2hkb2dQZXJpb2Q6IDFcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3BsYXllci5sb2FkU291cmNlKHRoaXMuX21hbmlmZXN0VVJJKTtcbiAgICAgICAgdGhpcy5fcGxheWVyLmF0dGFjaE1lZGlhKHRoaXMuX3ZpZGVvRWxlbWVudCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5jYW5QbGF5VHlwZSgnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwnKSkge1xuICAgICAgICB0aGlzLl92aWRlb0VsZW1lbnQuc3JjID0gdGhpcy5fbWFuaWZlc3RVUkk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyICYmIENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyLmlzU3VwcG9ydGVkKCk7XG4gIH1cblxuICBnZXRTdGF0cygpOiBDaHVua2VkU3RyZWFtaW5nU3RhdGlzdGljcyB7XG4gICAgaWYgKCF0aGlzLl9wbGF5ZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiAwLjAsXG4gICAgICAgIGxhZzogMC4wLFxuICAgICAgICBuZXR3b3JrU3RhdGU6IE5ldHdvcmtTdGF0ZXMuTmV0d29ya05vU291cmNlLFxuICAgICAgICBkYXRhQnVmZmVyZWQ6IDAuMFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0aXN0aWNzID0ge1xuICAgICAgd2lkdGg6IHRoaXMuX3BsYXllci5tZWRpYS5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5fcGxheWVyLm1lZGlhLm9mZnNldEhlaWdodCxcbiAgICAgIGN1cnJlbnRUaW1lOiB0aGlzLl9wbGF5ZXIubWVkaWEuY3VycmVudFRpbWUsXG4gICAgICBsYWc6IDAuMCxcbiAgICAgIG5ldHdvcmtTdGF0ZTogTmV0d29ya1N0YXRlcy5OZXR3b3JrSWRsZSxcbiAgICAgIGRhdGFCdWZmZXJlZDogMC4wXG4gICAgfTtcblxuICAgIGlmICh0aGlzLl92aWRlb0VsZW1lbnQuYnVmZmVyZWQgJiYgdGhpcy5fdmlkZW9FbGVtZW50LmJ1ZmZlcmVkLmxlbmd0aCkge1xuICAgICAgc3RhdGlzdGljcy5kYXRhQnVmZmVyZWQgPSB0aGlzLl92aWRlb0VsZW1lbnQuYnVmZmVyZWQuZW5kKDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wbGF5ZXIuc3RyZWFtQ29udHJvbGxlci5zdGF0ZSA9PT0gJ0lETEUnKSB7XG4gICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0lkbGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wbGF5ZXIuc3RyZWFtQ29udHJvbGxlci5zdGF0ZSA9PT0gJ0VSUk9SJyB8fCB0aGlzLl9wbGF5ZXIuc3RyZWFtQ29udHJvbGxlci5zdGF0ZSA9PT0gJ0VOREVEJykge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtOb1NvdXJjZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BsYXllci5zdHJlYW1Db250cm9sbGVyLnN0YXRlLmluY2x1ZGVzKCdMT0FESU5HJykgfHwgdGhpcy5fcGxheWVyLnN0cmVhbUNvbnRyb2xsZXIuc3RhdGUuaW5jbHVkZXMoJ1dBSVRJTkcnKSkge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtMb2FkaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0VtcHR5O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gdGhpcy5fdmlkZW9FbGVtZW50WydjdXJyZW50VGltZSddIHx8IDA7XG4gICAgY29uc3QgdHJ1ZUN1cnJlbnRUaW1lID0gKERhdGUubm93KCkgLSB0aGlzLl9vcHRpb25zLm9yaWdpblN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgc3RhdGlzdGljcy5sYWcgPSBNYXRoLm1heCgwLjAsIChjdXJyZW50VGltZSArICh0aGlzLl9vcHRpb25zLmxhZyAvIDEwMDApKSAtIHRydWVDdXJyZW50VGltZSk7XG5cbiAgICByZXR1cm4gc3RhdGlzdGljcztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3BsYXllciAmJiB0aGlzLl9wbGF5ZXIuZGVzdHJveSkge1xuICAgICAgdGhpcy5fcGxheWVyLmRlc3Ryb3koKTtcblxuICAgICAgdGhpcy5fcGxheWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gTmV0d29ya1N0YXRlcyB7XG4gIE5ldHdvcmtFbXB0eSxcbiAgTmV0d29ya0lkbGUsXG4gIE5ldHdvcmtMb2FkaW5nLFxuICBOZXR3b3JrTm9Tb3VyY2Vcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uLy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi8uLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4uLy4uL3J0Yy9TZHBQYXJzZXInO1xuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLCB7XG4gIGRlZmF1bHRUcmFja0tpbmRzLFxuICBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNcbn0gZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUnRjQ29ubmVjdGlvbk1vbml0b3IgZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBFbmRQb2ludCwge1N1YnNjcmliZU9wdGlvbnMsIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLCB7RnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcic7XG5pbXBvcnQgSW5zZXJ0YWJsZVN0cmVhbXMgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMnO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIsIHtFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlcic7XG5pbXBvcnQge0F1ZGlvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBWaWRlb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWNNYXBwaW5nJztcbmltcG9ydCBBdWRpb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nJztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0ID0gMzAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtIGltcGxlbWVudHMgSVN0cmVhbSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVN0cmVhbScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcblxuICBjb25zdHJ1Y3RvcihjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IGNoYW5uZWxDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMpO1xuICB9XG5cbiAgc3RhcnQodXJpOiBVUkwsIHRva2VuOiBzdHJpbmcsIGxpc3Rlbk9uU3RyZWFtU2V0dXA6IFN0cmVhbVNldHVwTGlzdGVuZXIsIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50OiBGdW5jdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWVcbiAgICAgIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPyBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRW5hYmxlZCA6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZDtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3JlY3Zvbmx5JywgZGVmYXVsdFRyYWNrS2luZHMsIHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlT3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICAgICAgc3Vic2NyaWJlT3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBudWxsLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnN1YnNjcmliZSh0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlLCBzdWJzY3JpYmVPcHRpb25zKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IHtzdGF0dXN9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZXhpc3RzLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IHVuZGVmaW5lZCA7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgJ1slc10gU3Vic2NyaWJlIGZhaWxlZCB3aXRoIHN0YXR1cyBbJXNdJyxcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSwgbGFnfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gbGFnO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24gYXMgUlRDQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ6IHVuZGVmaW5lZCB8IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0b3Agbm9ybWFsbHkgdGhlIHBlZXIgY29ubmVjdGlvbiBpcyB1bnJlZ2lzdGVyZWQgZmlyc3QuXG4gICAgICAgICAgICAgICAgLy8gVGh1cyBhbnl0aW1lIHdlIHNlZSBhIGNsb3NlZCBwZWVyIGNvbm5lY3Rpb24gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaXQgaXMgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICBpZiAoR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW1Qcm9taXNlID0gbmV3IFByb21pc2U8TWVkaWFTdHJlYW0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5vblRyYWNrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSksIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpKSk7XG5cbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB0cmFja0xpc3RlbmVyID0gKGU6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbJ3RyYWNrJyB8ICdhZGRzdHJlYW0nXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCdzdHJlYW1zJyBpbiBlKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSk7XG4gICAgICAgICAgICAgIH0sIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlIGFzIEVuZFBvaW50O1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICByZXR1cm4gbWVkaWFTdHJlYW1Qcm9taXNlO1xuICAgICAgICAgICAgfSkudGhlbihtZWRpYVN0cmVhbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyAmJiBwZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIocGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2suY29kZWMgPSBWaWRlb0NvZGVjTWFwcGluZy5jb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24udmlkZW9Db2RlYyBhcyBWaWRlb0NvZGVjVHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLmNvZGVjID0gQXVkaW9Db2RlY01hcHBpbmcuY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjKHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmF1ZGlvQ29kZWMgYXMgQXVkaW9Db2RlY1R5cGUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJzID0gcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayBhbmQgb25lIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2tcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgICAgICAgICAgIC8vIEJvdGggYXJlIGV4cGVjdGVkIHRvIGJlIHByZXNlbnQsIGJ1dCB0aGUgdHlwZSBzeXN0ZW0gbWFrZXMgdGhlbSBudWxsYWJsZSwgc28gd2UgaGF2ZSB0byBhc3NlcnQgdGhlIHByZXNlbmNlXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gdmlkZW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSB2aWRlb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gYXVkaW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSBhdWRpb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChJbnNlcnRhYmxlU3RyZWFtcy5jcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbUlkOiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgY29kZWM6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50OiB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLFxuICAgICAgICAgICAgICAgICAgICBtaWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQhLFxuICAgICAgICAgICAgICAgICAgICB0cmFja0lkOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjay5pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXNcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIoZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0gPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQ6IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2ssXG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rISxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rIVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyKGVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7dHJhbnNmb3JtZWRTdHJlYW0sIGRpc3Bvc2FibGVzfSA9IEluc2VydGFibGVTdHJlYW1zLmNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGRpc3Bvc2FibGVzKTtcbiAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHRyYW5zZm9ybWVkU3RyZWFtO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3IgPSBuZXcgUnRjQ29ubmVjdGlvbk1vbml0b3IocGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtLCB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiA9IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRpc3RpY3MpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmICF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGF1ZGlvVHJhY2tGYWlsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgdmlkZW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MuYXVkaW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvVHJhY2tGYWlsZWQgJiYgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gVmlkZW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLk9mZmxpbmU7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCB8fCBhdWRpb1RyYWNrRmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICBydGNDb25uZWN0aW9uTW9uaXRvci5kaXNwb3NlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHRyYWNrIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG5cbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLk9mZmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPyBDaGFubmVsU3RhdGUuUGxheWluZyA6IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBzdGF0ZSByZXN0b3JlZCB0byBbJXNdIGFmdGVyIHJlY29ubmVjdGluZycsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uKTtcblxuICAgICAgICAgICAgICBpZiAoIVNESy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXBwbHlSdGNDb25maWd1cmF0aW9uKFxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGwsXG4gICAgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgaWYgKCFvcHRpb25hbFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uID0gUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHJ1bmNhdGVJY2VTZXJ2ZXJzKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm4gU0RLLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSdGNDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4ub3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAuLi5ydGNDb25maWd1cmF0aW9uXG4gICAgfTtcblxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihuZXdSdGNDb25maWd1cmF0aW9uKTtcblxuICAgIHJldHVybiBvcHRpb25hbFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nfSBmcm9tICcuL0NodW5rZWRTdHJlYW1pbmcnO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3N9IGZyb20gJy4vU3RyZWFtVHlwZXMnO1xuaW1wb3J0IHtJU2hha2FQbGF5ZXIsIFNoYWthT3B0aW9uc30gZnJvbSAnLi9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtOZXR3b3JrU3RhdGVzfSBmcm9tICcuL05ldHdvcmtTdGF0ZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGFrYVBsYXllciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTaGFrYVBsYXllcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tpbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFuaWZlc3RVUkk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6IEZ1bmN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vbml0b3JlZFN0YXRpc3RpY3M6IHtcbiAgICBlc3RpbWF0ZWRCYW5kd2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBwbGF5VGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB9O1xuICBwcml2YXRlIF9wbGF5ZXI6IElTaGFrYVBsYXllciB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBraW5kOiBzdHJpbmcsIHN0cmVhbUlkOiBzdHJpbmcsIG1hbmlmZXN0VVJJOiBzdHJpbmcsIG9wdGlvbnM6IENodW5rZWRTdHJlYW1pbmdPcHRpb25zLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcbiAgICB0aGlzLl9raW5kID0ga2luZDtcbiAgICB0aGlzLl9zdHJlYW1JZCA9IHN0cmVhbUlkO1xuICAgIHRoaXMuX21hbmlmZXN0VVJJID0gZW5jb2RlVVJJKG1hbmlmZXN0VVJJKS5yZXBsYWNlKC9bI10vZywgJyUyMycpO1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcyA9IHtcbiAgICAgIGVzdGltYXRlZEJhbmR3aWR0aDogMCxcbiAgICAgIHBsYXlUaW1lOiAwXG4gICAgfTtcbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuICB9XG5cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgaWYgKENodW5rZWRTdHJlYW1pbmcuc2hha2EpIHtcbiAgICAgIGNvbnN0IHBsYXllck9wdGlvbnM6IFNoYWthT3B0aW9ucyA9IHtcbiAgICAgICAgYWJyOiB7ZGVmYXVsdEJhbmR3aWR0aEVzdGltYXRlOiAyMDAwMDAwfSxcbiAgICAgICAgbWFuaWZlc3Q6IHtyZXRyeVBhcmFtZXRlcnM6IHt0aW1lb3V0OiAxMDAwMH19LFxuICAgICAgICBzdHJlYW1pbmc6IHtcbiAgICAgICAgICBsaXZlU3luY1BhbmljVGhyZXNob2xkOiAxLFxuICAgICAgICAgIGJ1ZmZlcmluZ0dvYWw6IDYwLFxuICAgICAgICAgIGJ1ZmZlckJlaGluZDogMzAsXG4gICAgICAgICAgcmV0cnlQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAxMCxcbiAgICAgICAgICAgIGJhY2tvZmZGYWN0b3I6IDEuMVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdGhpcy5fcGxheWVyID0gbmV3IENodW5rZWRTdHJlYW1pbmcuc2hha2EuUGxheWVyKHRoaXMuX3ZpZGVvRWxlbWVudCk7XG4gICAgICB0aGlzLmxvYWRQbGF5ZXIocGxheWVyT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0cygpOiBDaHVua2VkU3RyZWFtaW5nU3RhdGlzdGljcyB7XG4gICAgaWYgKCF0aGlzLl9wbGF5ZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgICAgICBsYWc6IDAsXG4gICAgICAgIG5ldHdvcmtTdGF0ZTogTmV0d29ya1N0YXRlcy5OZXR3b3JrTm9Tb3VyY2UsXG4gICAgICAgIGRhdGFCdWZmZXJlZDogMC4wXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRpc3RpY3MgPSB7XG4gICAgICAuLi50aGlzLl9wbGF5ZXIuZ2V0U3RhdHMoKSxcbiAgICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgICAgbGFnOiAwXG4gICAgfTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IHRoaXMuX3ZpZGVvRWxlbWVudFsnY3VycmVudFRpbWUnXSB8fCAwO1xuICAgIGNvbnN0IHRydWVDdXJyZW50VGltZSA9IChEYXRlLm5vdygpIC0gdGhpcy5fb3B0aW9ucy5vcmlnaW5TdGFydFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsYWcgPSBNYXRoLm1heCgwLjAsIHRydWVDdXJyZW50VGltZSAtIGN1cnJlbnRUaW1lKTtcblxuICAgIGlmICh0aGlzLl92aWRlb0VsZW1lbnQpIHtcbiAgICAgIHN0YXRpc3RpY3MuY3VycmVudFRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgIHN0YXRpc3RpY3MubGFnID0gbGFnO1xuXG4gICAgICBpZiAodGhpcy5fdmlkZW9FbGVtZW50LmJ1ZmZlcmVkICYmIHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgc3RhdGlzdGljcy5kYXRhQnVmZmVyZWQgPSB0aGlzLl92aWRlb0VsZW1lbnQuYnVmZmVyZWQuZW5kKDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGF0aXN0aWNzLmVzdGltYXRlZEJhbmR3aWR0aCkge1xuICAgICAgaWYgKHN0YXRpc3RpY3MuZXN0aW1hdGVkQmFuZHdpZHRoICYmIHN0YXRpc3RpY3MuZXN0aW1hdGVkQmFuZHdpZHRoID4gMCAmJiAodGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcy5lc3RpbWF0ZWRCYW5kd2lkdGggJiYgdGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcy5lc3RpbWF0ZWRCYW5kd2lkdGggPCBzdGF0aXN0aWNzLmVzdGltYXRlZEJhbmR3aWR0aCkpIHtcbiAgICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtMb2FkaW5nO1xuICAgICAgfSBlbHNlIGlmIChzdGF0aXN0aWNzLnBsYXlUaW1lICYmIHN0YXRpc3RpY3MucGxheVRpbWUgPiAwICYmICh0aGlzLl9tb25pdG9yZWRTdGF0aXN0aWNzLnBsYXlUaW1lICYmIHRoaXMuX21vbml0b3JlZFN0YXRpc3RpY3MucGxheVRpbWUgPCBzdGF0aXN0aWNzLnBsYXlUaW1lKSkge1xuICAgICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0lkbGU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRpc3RpY3MudmlkZW8pIHtcbiAgICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtFbXB0eTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRpc3RpY3MubmV0d29ya1N0YXRlID0gTmV0d29ya1N0YXRlcy5OZXR3b3JrTm9Tb3VyY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcy5lc3RpbWF0ZWRCYW5kd2lkdGggPSBzdGF0aXN0aWNzLmVzdGltYXRlZEJhbmR3aWR0aDtcbiAgICB0aGlzLl9tb25pdG9yZWRTdGF0aXN0aWNzLnBsYXlUaW1lID0gc3RhdGlzdGljcy5wbGF5VGltZTtcblxuICAgIHJldHVybiBzdGF0aXN0aWNzO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fcGxheWVyKSB7XG4gICAgICB0aGlzLl9wbGF5ZXIudW5sb2FkKCk7XG4gICAgICB0aGlzLl9wbGF5ZXIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3BsYXllciA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQbGF5ZXIocGxheWVyQ29uZmlnOiBTaGFrYU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9wbGF5ZXI/LmNvbmZpZ3VyZShwbGF5ZXJDb25maWcpO1xuXG4gICAgY29uc3QgZXJyb3JIYW5kbGVyID0gKCkgPT4gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpO1xuXG4gICAgdGhpcy5fcGxheWVyPy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9ySGFuZGxlcik7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fcGxheWVyPy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9ySGFuZGxlcikpKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wbGF5ZXI/LmxvYWQodGhpcy5fbWFuaWZlc3RVUkkpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gREFTSCBsaXZlIHN0cmVhbSBoYXMgYmVlbiBsb2FkZWQnLCB0aGlzLl9zdHJlYW1JZCk7XG5cbiAgICAgIGlmICh0aGlzLl92aWRlb0VsZW1lbnQucGxheSkge1xuICAgICAgICB0aGlzLl92aWRlb0VsZW1lbnQucGxheSgpO1xuICAgICAgfVxuICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEVycm9yIHdoaWxlIGxvYWRpbmcgREFTSCBsaXZlIHN0cmVhbSBbJXNdJywgdGhpcy5fc3RyZWFtSWQsIGUuY29kZSwgZSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBDaHVua2VkU3RyZWFtIGZyb20gJy4vQ2h1bmtlZFN0cmVhbSc7XG5pbXBvcnQgUmVhbFRpbWVTdHJlYW0gZnJvbSAnLi9SZWFsVGltZVN0cmVhbSc7XG5pbXBvcnQgQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSBmcm9tICcuL0NodW5rZWRTdHJlYW1QbGF5YmFja01vZGUnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1GYWN0b3J5IHtcbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtIHtcbiAgICBjb25zdCB0b2tlbkNhcGFiaWxpdGllcyA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLmNhcGFiaWxpdGllcztcbiAgICBjb25zdCBoYXNTdHJlYW1pbmcgPSB0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnc3RyZWFtaW5nJyk7XG4gICAgY29uc3QgaGFzT25EZW1hbmQgPSB0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnb24tZGVtYW5kJyk7XG5cbiAgICBpZiAoaGFzU3RyZWFtaW5nIHx8IGhhc09uRGVtYW5kKSB7XG4gICAgICByZXR1cm4gbmV3IENodW5rZWRTdHJlYW0oY2hhbm5lbENvbnRleHQsICFoYXNPbkRlbWFuZCA/IENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUuTGl2ZSA6IENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUuT25kRGVtYW5kLCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtKGNoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyZWFtRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ30gZnJvbSAnLi9DaHVua2VkU3RyZWFtaW5nJztcbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ09wdGlvbnMsIENodW5rZWRTdHJlYW1pbmdTdGF0aXN0aWNzfSBmcm9tICcuL1N0cmVhbVR5cGVzJztcbmltcG9ydCB7SVdlYlBsYXllcn0gZnJvbSAnLi9JV2ViUGxheWVyJztcbmltcG9ydCB7TmV0d29ya1N0YXRlc30gZnJvbSAnLi9OZXR3b3JrU3RhdGVzJztcblxuY29uc3QgYmFuZHdpZHRoVG9TdGFydEF0ID0gMzAwMDAwMDsgLy8gQ29ycmVzcG9uZHMgdG8gNzIwcCBpbiBtb3N0IHNldHVwc1xuY29uc3QgbWluVGltZUJlZm9yZU5leHRSZWxvYWQgPSAxNTAwMDtcblxudHlwZSBQbGF5ZXJPcHRpb25zID0ge1xuICBwcmVmZXJOYXRpdmU/OiBib29sZWFuO1xuICBvcmlnaW5TdGFydFRpbWU6IG51bWJlcjtcbiAgbGFnOiBudW1iZXI7XG4gIGJhbmR3aWR0aFRvU3RhcnRBdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2ViUGxheWVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1dlYlBsYXllcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tpbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFuaWZlc3RVUkk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9wbGF5ZXI6IElXZWJQbGF5ZXIgfCBudWxsO1xuICBwcml2YXRlIF9sYXN0UmVsb2FkVGltZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwga2luZDogc3RyaW5nLCBzdHJlYW1JZDogc3RyaW5nLCBtYW5pZmVzdFVSSTogc3RyaW5nLCBvcHRpb25zOiBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgaGFuZGxlU3RyZWFtRmFpbHVyZTogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG4gICAgdGhpcy5fa2luZCA9IGtpbmQ7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9tYW5pZmVzdFVSSSA9IGVuY29kZVVSSShtYW5pZmVzdFVSSSkucmVwbGFjZSgvWyNdL2csICclMjMnKTtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuICAgIHRoaXMuX2xhc3RSZWxvYWRUaW1lID0gMDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmIChDaHVua2VkU3RyZWFtaW5nLnBoZW5peFdlYlBsYXllcikge1xuICAgICAgY29uc3QgcGxheWVyT3B0aW9uczogUGxheWVyT3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGhpcy5fb3B0aW9ucyxcbiAgICAgICAgYmFuZHdpZHRoVG9TdGFydEF0XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9wbGF5ZXIgPSBuZXcgQ2h1bmtlZFN0cmVhbWluZy5waGVuaXhXZWJQbGF5ZXIuV2ViUGxheWVyKHRoaXMuX2xvZ2dlciwgdGhpcy5fdmlkZW9FbGVtZW50LCBwbGF5ZXJPcHRpb25zKTtcbiAgICAgIHRoaXMuX3BsYXllcj8uc3RhcnQodGhpcy5fbWFuaWZlc3RVUkkpO1xuXG4gICAgICB0aGlzLl9wbGF5ZXI/LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JPYmplY3QgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW5SZWxvYWQoKSAmJiBlcnJvck9iamVjdCAmJiAoZXJyb3JPYmplY3QuY29kZSA9PT0gMyB8fCBlcnJvck9iamVjdC5zZXZlcml0eSA9PT0gQ2h1bmtlZFN0cmVhbWluZy5waGVuaXhXZWJQbGF5ZXIuZXJyb3JzLnNldmVyaXR5LlJFQ09WRVJBQkxFKSkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdSZWxvYWRpbmcgdW5oZWFsdGh5IHN0cmVhbSBhZnRlciBlcnJvciBldmVudCBbJWpdJywgZXJyb3JPYmplY3QpO1xuICAgICAgICAgIHRoaXMucmVsb2FkSWZBYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCByZWxvYWQgd2l0aCBlcnJvciBbJWpdJywgZXJyb3JPYmplY3QpO1xuXG4gICAgICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIENodW5rZWRTdHJlYW1pbmcucGhlbml4V2ViUGxheWVyICYmIENodW5rZWRTdHJlYW1pbmcucGhlbml4V2ViUGxheWVyLmlzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3Mge1xuICAgIGlmICghdGhpcy5fcGxheWVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICBjdXJyZW50VGltZTogMC4wLFxuICAgICAgICBsYWc6IDAuMCxcbiAgICAgICAgbmV0d29ya1N0YXRlOiBOZXR3b3JrU3RhdGVzLk5ldHdvcmtOb1NvdXJjZSxcbiAgICAgICAgZGF0YUJ1ZmZlcmVkOiAwLjBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGlzdGljcyA9IHRoaXMuX3BsYXllci5nZXRTdGF0cygpO1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gc3RhdGlzdGljcy5jdXJyZW50VGltZSB8fCB0aGlzLl92aWRlb0VsZW1lbnRbJ2N1cnJlbnRUaW1lJ107XG4gICAgY29uc3QgdHJ1ZUN1cnJlbnRUaW1lID0gKERhdGUubm93KCkgLSB0aGlzLl9vcHRpb25zLm9yaWdpblN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZD8ubGVuZ3RoKSB7XG4gICAgICBzdGF0aXN0aWNzLmRhdGFCdWZmZXJlZCA9IHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZC5lbmQoMCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRpc3RpY3MuaXNOYXRpdmUgJiYgc3RhdGlzdGljcy5kZWxpdmVyeVR5cGUgPT09ICdIbHMnKSB7XG4gICAgICBzdGF0aXN0aWNzLmN1cnJlbnRUaW1lID0gY3VycmVudFRpbWUgLSBzdGF0aXN0aWNzLmxhZztcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRpc3RpY3MuY3VycmVudFRpbWUpIHtcbiAgICAgIHN0YXRpc3RpY3MuY3VycmVudFRpbWUgPSBjdXJyZW50VGltZTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRpc3RpY3MuaXNOYXRpdmUpIHtcbiAgICAgIHN0YXRpc3RpY3MubGFnID0gTWF0aC5tYXgoMC4wLCB0cnVlQ3VycmVudFRpbWUgLSBjdXJyZW50VGltZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZD8ubGVuZ3RoKSB7XG4gICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0xvYWRpbmc7XG4gICAgfSBlbHNlIGlmIChzdGF0aXN0aWNzLmN1cnJlbnRUaW1lID4gMCkge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtJZGxlO1xuICAgIH0gZWxzZSBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtFbXB0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtOb1NvdXJjZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGlzdGljcztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3BsYXllcikge1xuICAgICAgdGhpcy5fcGxheWVyLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZWxvYWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFzRWxhcHNlZE1pblRpbWVTaW5jZUxhc3RSZWxvYWQgPSAhdGhpcy5fbGFzdFJlbG9hZFRpbWUgfHwgRGF0ZS5ub3coKSAtIHRoaXMuX2xhc3RSZWxvYWRUaW1lID4gbWluVGltZUJlZm9yZU5leHRSZWxvYWQ7XG5cbiAgICByZXR1cm4gISF0aGlzLl92aWRlb0VsZW1lbnQgJiYgISF0aGlzLl9wbGF5ZXIgJiYgdGhpcy5fdmlkZW9FbGVtZW50LmJ1ZmZlcmVkLmxlbmd0aCAhPT0gMCAmJiBoYXNFbGFwc2VkTWluVGltZVNpbmNlTGFzdFJlbG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVsb2FkSWZBYmxlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5SZWxvYWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFJlbG9hZGluZyB1bmhlYWx0aHkgc3RyZWFtIHRoYXQgd2FzIGFjdGl2ZSBmb3IgYXQgbGVhc3QgWyVzXSBzZWNvbmRzJywgdGhpcy5fc3RyZWFtSWQsIG1pblRpbWVCZWZvcmVOZXh0UmVsb2FkIC8gMTAwMCk7XG5cbiAgICB0aGlzLl9sYXN0UmVsb2FkVGltZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3BsYXllcikge1xuICAgICAgdGhpcy5fcGxheWVyLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXInO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG50eXBlIE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gJ3ZpZGVvJyB8ICdhdWRpbyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydGFibGVTdHJlYW1zIHtcbiAgc3RhdGljIGNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogRGlzcG9zYWJsZUxpc3Qge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBVc2luZyBXZWJwYWNrJ3Mgd29ya2VyIGxvYWRlciB0byBpbmxpbmUgd29ya2VyXG4gICAgICBjb25zdCB3b3JrZXIgPSBjb250ZXh0LnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyID0gbmV3IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCk7XG5cbiAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpKTtcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgPSBuZXcgVHJhbnNmb3JtTWVzc2FnZVJvdXRlcih3b3JrZXIpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3JlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IHZpZGVvVHJhY2s7XG5cbiAgICBpZiAodmlkZW9UcmFja1JlY2VpdmVyICYmIHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKHZpZGVvVHJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHtyZWNlaXZlcjogYXVkaW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSBhdWRpb1RyYWNrO1xuXG4gICAgaWYgKGF1ZGlvVHJhY2tSZWNlaXZlciAmJiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayhhdWRpb1RyYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGFkZFRyYWNrVHJhbnNmb3JtcyA9ICh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWUgb2YgdHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcykge1xuICAgICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlcXVpcmVkIGZvciBzYWZhcmkgdG8gcHJvcGVybHkgd29yayB3aGVuIG9ubHkgdmlkZW8gdHJhbnNmb3JtYXRpb24gaXMgYWRkZWQgKGkuZS4gRnJhbWVUaW1pbmdJbmZvcm1hdGlvbilcbiAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICBkYXRhOiAncGFzcy10aHJvdWdoJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGFkZFRyYWNrVHJhbnNmb3Jtcyh2aWRlb1RyYWNrKTtcbiAgICBhZGRUcmFja1RyYW5zZm9ybXMoYXVkaW9UcmFjayk7XG5cbiAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0gPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3ggLi4uXG4gICAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayA9IGFzeW5jKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIHRyYWNrUmVjZWl2ZXIudHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLCB7bmFtZTogYCR7dHJhY2tNZWRpYVN0cmVhbVRyYWNrLmtpbmR9LXRyYW5zZm9ybS1waXBlbGluZWB9KTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sodmlkZW9UcmFjayksIGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKGF1ZGlvVHJhY2spXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIGNyZWF0ZUVuY29kZWRTdHJlYW1zIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBpbiBsaWIuZG9tLmQudHNcbiAgICAgICAgICBjb25zdCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zID0gdHJhY2tSZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcblxuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSxcbiAgICAgICAgICAgICAgICAgIHNpbms6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt0cmFuc2ZlcjogW2VuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsIGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVdfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgICBjb25zdCBhY3Rpb25zOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgICAgaWYgKHZpZGVvVHJhY2sucmVjZWl2ZXIgJiYgdmlkZW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayh2aWRlb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdWRpb1RyYWNrLnJlY2VpdmVyICYmIGF1ZGlvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2soYXVkaW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICB9O1xuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3guLi5cbiAgICAgIGF3YWl0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENocm9tZSwgQ2hyb21pdW0uLi5cbiAgICBhd2FpdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oXG4gICAgc3RyZWFtOiBNZWRpYVN0cmVhbSxcbiAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQsXG4gICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWRcbiAgKToge3RyYW5zZm9ybWVkU3RyZWFtOiBNZWRpYVN0cmVhbTsgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0fSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGNvbnN0IGtpbmQ6IE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gdHJhY2sua2luZCBhcyBNZWRpYVN0cmVhbVRyYWNrS2luZDtcblxuICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgJ3ZpZGVvJzoge1xuICAgICAgICAgIGlmICh2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8VmlkZW9GcmFtZSwgVmlkZW9GcmFtZT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtVmlkZW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogdmlkZW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IHZpZGVvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYXVkaW8nOiB7XG4gICAgICAgICAgaWYgKGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxBdWRpb0RhdGEsIEF1ZGlvRGF0YT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtQXVkaW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogYXVkaW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IGF1ZGlvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICAgICAgICBjb25zdCBhdWRpb1B1bXBlciA9IG5ldyBBdWRpbygpO1xuXG4gICAgICAgICAgICBtZWRpYVN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoa2luZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtZWRTdHJlYW0sXG4gICAgICBkaXNwb3NhYmxlc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc2VydGFibGVTdHJlYW1zIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDMsIDY2LCAxOTIsIDQyLCAyMTgsIDQsIDQsIDIzMiwgNjQsIDAsIDAsIDMsIDAsIDY0LCAwLCAwLCAxNSwgMzUsIDE5OCwgMTIsIDE2OCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwNCwgMjA2LCA2MCwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMTY3LCAuLi5uZXcgVWludDhBcnJheSgxNTApLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAxLCAxMzYsIDEzMiwgNiwgMTkxLCAyNTUsIDI1NSwgMTUsIDY5LCAwLCAxLCA4NywgMTU5LCAuLi5uZXcgVWludDhBcnJheSgxNSkuZmlsbCgzOSksIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCAxMjhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMjU1LCA2MSwgLi4ubmV3IFVpbnQ4QXJyYXkoMzE2KS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDY1LCAxNTQsIDMyLCAyNiwgMjQwLCAxOCwgNDhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNmb3JtUGlwZWxpbmVNZXNzYWdlUm91dGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUm91dGVzOiBNYXA8VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCA8VD4obWVzc2FnZTogVCkgPT4gdm9pZD4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iod29ya2VyOiBXb3JrZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemUod29ya2VyKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJvdXRlPFQ+KG1lc3NhZ2VUeXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIHJvdXRlTWVzc2FnZTogKG1lc3NhZ2U6IFQpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLnNldChtZXNzYWdlVHlwZSwgcm91dGVNZXNzYWdlIGFzIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9tZXNzYWdlUm91dGVzLmRlbGV0ZShtZXNzYWdlVHlwZSkpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKHdvcmtlcjogV29ya2VyKTogdm9pZCB7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQ8VHJhbnNmb3JtTWVzc2FnZT4pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZURhdGEgPSA8VD4oe3R5cGUsIGRhdGF9OiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxUPikgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZU1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlUm91dGVzLmdldCh0eXBlKTtcblxuICAgICAgICBpZiAoIXJvdXRlTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdXRlTWVzc2FnZShkYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XG4gICAgICAgICAgcm91dGVNZXNzYWdlRGF0YShtZXNzYWdlLmRhdGEpO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9LCB7b25jZTogZmFsc2V9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoKCkgPT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGFzc2VydFVucmVhY2hhYmxlICovXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5mdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4KSB7XFxuICB0aHJvdyBuZXcgRXJyb3IoXFxcIlVuZXhwZWN0ZWQgdmFsdWUgW1xcXCIuY29uY2F0KHgsIFxcXCJdLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkXFxcIikpO1xcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChhc3NlcnRVbnJlYWNoYWJsZSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlKSxcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VUeXBlOiAoKSA9PiAoLyogYmluZGluZyAqLyBUcmFuc2Zvcm1NZXNzYWdlVHlwZSlcXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbnZhciBUcmFuc2Zvcm1NZXNzYWdlVHlwZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoVHJhbnNmb3JtTWVzc2FnZVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJFcnJvclxcXCJdID0gLTFdID0gXFxcIkVycm9yXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJBZGRUcmFuc2Zvcm1cXFwiXSA9IDBdID0gXFxcIkFkZFRyYW5zZm9ybVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQ29uZmlndXJlUGlwZWxpbmVcXFwiXSA9IDFdID0gXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJNZXRhZGF0YVxcXCJdID0gMl0gPSBcXFwiTWV0YWRhdGFcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNodW5rXFxcIl0gPSAzXSA9IFxcXCJDaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIl0gPSA0XSA9IFxcXCJQaXBlbGluZUNvbmZpZ3VyZWRcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VUeXBlO1xcbn0oe30pO1xcbnZhciBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSkge1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCJdID0gMF0gPSBcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJFbmNvZGVkVmlkZW9DaHVua1xcXCJdID0gMV0gPSBcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZEF1ZGlvQ2h1bmtcXFwiXSA9IDJdID0gXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiXSA9IDNdID0gXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCJdID0gNF0gPSBcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCI7XFxuICByZXR1cm4gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlO1xcbn0oe30pO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuXFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6ICgpID0+ICgvKiBiaW5kaW5nICovIFdvcmtlclRyYW5zZm9ybXMpXFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vZnJhbWVUaW1pbmdJbmZvcm1hdGlvbiAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiKTtcXG5cXG5cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciBXb3JrZXJUcmFuc2Zvcm1zID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFdvcmtlclRyYW5zZm9ybXMoKSB7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0KCkodGhpcywgV29ya2VyVHJhbnNmb3Jtcyk7XFxuICB9XFxuICByZXR1cm4gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKShXb3JrZXJUcmFuc2Zvcm1zLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgKDAsX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShjaHVuayk7XFxuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZikge1xcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlVmlkZW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YS5zdXJyb2dhdGUsXFxuICAgICAgICAgIHRpbWVzdGFtcCA9IF9tZXNzYWdlRGF0YSRkYXRhLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgdmlkZW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmRlbGV0ZSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZFZpZGVvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZjIpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZjIuZGF0YTtcXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuayB8fCBtZXNzYWdlLmRhdGEudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5TdXJyb2dhdGVBdWRpb0NodW5rKSB7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YTtcXG4gICAgICAgIHZhciBfbWVzc2FnZURhdGEkZGF0YTIgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YTIuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YTIudGltZXN0YW1wO1xcbiAgICAgICAgdmFyIGNodW5rUGVuZGluZ0VucXVldWUgPSBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmdldCh0aW1lc3RhbXApO1xcbiAgICAgICAgaWYgKCFjaHVua1BlbmRpbmdFbnF1ZXVlKSB7XFxuICAgICAgICAgIGNvbnNvbGUud2FybignW1dvcmtlclRyYW5zZm9ybXNdIFN1cnJvZ2F0ZSBhdWRpbyBjaHVuayBub3QgZm91bmQgZm9yIHRpbWVzdGFtcCcsIHRpbWVzdGFtcCk7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIGNodW5rUGVuZGluZ0VucXVldWUuZGF0YSA9IHN1cnJvZ2F0ZTtcXG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVua1BlbmRpbmdFbnF1ZXVlKTtcXG4gICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZGVsZXRlKHRpbWVzdGFtcCk7XFxuICAgICAgfTtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQoY29udHJvbGxlcikge1xcbiAgICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIuYmluZChudWxsLCBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyKSwge1xcbiAgICAgICAgICAgIG9uY2U6IGZhbHNlXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rKSB7XFxuICAgICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuc2V0KGNodW5rLnRpbWVzdGFtcCwgY2h1bmspO1xcbiAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkQXVkaW9DaHVuayxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXFxuICAgICAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KGNodW5rLmRhdGEpLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBjaHVuay50eXBlXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdHJhbnNmZXI6IFtjaHVuay5kYXRhXVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpIHtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xcbiAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcblxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHIsIGUpIHsgdmFyIHQgPSBcXFwidW5kZWZpbmVkXFxcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1xcXCJAQGl0ZXJhdG9yXFxcIl07IGlmICghdCkgeyBpZiAoQXJyYXkuaXNBcnJheShyKSB8fCAodCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSkgfHwgZSAmJiByICYmIFxcXCJudW1iZXJcXFwiID09IHR5cGVvZiByLmxlbmd0aCkgeyB0ICYmIChyID0gdCk7IHZhciBfbiA9IDAsIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IHJldHVybiBfbiA+PSByLmxlbmd0aCA/IHsgZG9uZTogITAgfSA6IHsgZG9uZTogITEsIHZhbHVlOiByW19uKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUocikgeyB0aHJvdyByOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlxcXCIpOyB9IHZhciBvLCBhID0gITAsIHUgPSAhMTsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgdCA9IHQuY2FsbChyKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHIgPSB0Lm5leHQoKTsgcmV0dXJuIGEgPSByLmRvbmUsIHI7IH0sIGU6IGZ1bmN0aW9uIGUocikgeyB1ID0gITAsIG8gPSByOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBhIHx8IG51bGwgPT0gdC5yZXR1cm4gfHwgdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKHUpIHRocm93IG87IH0gfSB9OyB9XFxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHsgaWYgKHIpIHsgaWYgKFxcXCJzdHJpbmdcXFwiID09IHR5cGVvZiByKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkociwgYSk7IHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7IHJldHVybiBcXFwiT2JqZWN0XFxcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXFxcIk1hcFxcXCIgPT09IHQgfHwgXFxcIlNldFxcXCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXFxcIkFyZ3VtZW50c1xcXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDsgfSB9XFxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgeyAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7IGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdOyByZXR1cm4gbjsgfVxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxudmFyIEgyNjRfQ09OU1RBTlRTID0ge1xcbiAgTkFMX1VOSVRfVFlQRV9TRUk6IDYsXFxuICBOQUxfVU5JVF9IRUFERVJfU0laRTogMSxcXG4gIFNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORzogMSxcXG4gIEVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEU6IDB4MDMsXFxuICBTVEFSVF9DT0RFX1BSRUZJWF8zQjogWzB4MDAsIDB4MDAsIDB4MDFdLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfNEI6IFsweDAwLCAweDAwLCAweDAwLCAweDAxXVxcbn07XFxudmFyIEJJVFNUUkVBTV9DT05TVEFOVFMgPSB7XFxuICBNSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QOiAxMCxcXG4gIE1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUDogMTcsXFxuICBNSU5fQklUU19GT1JfVElNRV9PRkZTRVQ6IDI0XFxufTtcXG5mdW5jdGlvbiBmaW5kTmV4dE5hbFN0YXJ0KGRhdGEsIHBvc2l0aW9uKSB7XFxuICB2YXIgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xcbiAgZm9yICh2YXIgaSA9IHBvc2l0aW9uOyBpIDwgZGF0YUxlbmd0aCAtIDM7IGkrKykge1xcbiAgICBpZiAoZGF0YVtpXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAxXSA9PT0gMHgwMCkge1xcbiAgICAgIGlmIChkYXRhW2kgKyAyXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICAgIGlmIChpICsgMyA8IGRhdGFMZW5ndGggJiYgZGF0YVtpICsgMl0gPT09IDB4MDAgJiYgZGF0YVtpICsgM10gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgcmV0dXJuIC0xO1xcbn1cXG5mdW5jdGlvbiBleHRyYWN0U2VpUGF5bG9hZChkYXRhLCBzdGFydEluZGV4KSB7XFxuICB2YXIgaW5kZXggPSBzdGFydEluZGV4O1xcbiAgdmFyIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkVHlwZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcblxcbiAgLy8gUGFyc2UgcGF5bG9hZCBzaXplXFxuICBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFNpemUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG4gIHJldHVybiB7XFxuICAgIHR5cGU6IHBheWxvYWRUeXBlLFxcbiAgICBwYXlsb2FkOiBkYXRhLnN1YmFycmF5KGluZGV4LCBpbmRleCArIHBheWxvYWRTaXplKSxcXG4gICAgbGVuZ3RoOiBpbmRleCArIHBheWxvYWRTaXplIC0gc3RhcnRJbmRleFxcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVtb3ZlRW11bGF0aW9uUHJldmVudGlvbkJ5dGVzKGRhdGEpIHtcXG4gIHZhciByZXN1bHQgPSBbXTtcXG4gIHZhciB6ZXJvQ291bnQgPSAwO1xcbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGRhdGEpLFxcbiAgICBfc3RlcDtcXG4gIHRyeSB7XFxuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XFxuICAgICAgdmFyIGJ5dGUgPSBfc3RlcC52YWx1ZTtcXG4gICAgICBpZiAoemVyb0NvdW50ID09PSAyICYmIGJ5dGUgPT09IEgyNjRfQ09OU1RBTlRTLkVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEUpIHtcXG4gICAgICAgIHplcm9Db3VudCA9IDA7IC8vIFJlc2V0IGFmdGVyIGZpbmRpbmcgZW11bGF0aW9uIHByZXZlbnRpb24gYnl0ZS5cXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGJ5dGUgPT09IDB4MDApIHtcXG4gICAgICAgICAgemVyb0NvdW50Kys7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB6ZXJvQ291bnQgPSAwO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmVzdWx0LnB1c2goYnl0ZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9IGNhdGNoIChlcnIpIHtcXG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcXG4gIH0gZmluYWxseSB7XFxuICAgIF9pdGVyYXRvci5mKCk7XFxuICB9XFxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcXG59XFxuZnVuY3Rpb24gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpIHtcXG4gIHN3aXRjaCAocGljU3RydWN0KSB7XFxuICAgIGNhc2UgMDpcXG4gICAgY2FzZSAxOlxcbiAgICBjYXNlIDI6XFxuICAgICAgcmV0dXJuIDE7XFxuICAgIGNhc2UgMzpcXG4gICAgY2FzZSA0OlxcbiAgICBjYXNlIDc6XFxuICAgICAgcmV0dXJuIDI7XFxuICAgIGNhc2UgNTpcXG4gICAgY2FzZSA2OlxcbiAgICBjYXNlIDg6XFxuICAgICAgcmV0dXJuIDM7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuIDA7XFxuICB9XFxufVxcbmZ1bmN0aW9uIGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihidWZmZXIpIHtcXG4gIHZhciBiaXRPZmZzZXQgPSAwO1xcbiAgZnVuY3Rpb24gcmVhZEJpdHMoYml0c1RvUmVhZCkge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgYml0c1RvUmVhZCA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3QgcmVhZCBbXFxcIi5jb25jYXQoYml0c1RvUmVhZCwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgdmFyIHZhbHVlID0gMDtcXG4gICAgdmFyIGJpdHNSZW1haW5pbmcgPSBiaXRzVG9SZWFkO1xcbiAgICB3aGlsZSAoYml0c1JlbWFpbmluZyA+IDApIHtcXG4gICAgICB2YXIgYnl0ZU9mZnNldCA9IE1hdGguZmxvb3IoYml0T2Zmc2V0IC8gOCk7XFxuICAgICAgdmFyIGJpdEluQnl0ZSA9IGJpdE9mZnNldCAlIDg7XFxuICAgICAgdmFyIGJpdHNMZWZ0SW5CeXRlID0gOCAtIGJpdEluQnl0ZTtcXG4gICAgICB2YXIgcmVhZE5vdyA9IE1hdGgubWluKGJpdHNSZW1haW5pbmcsIGJpdHNMZWZ0SW5CeXRlKTtcXG4gICAgICB2YXIgbWFzayA9ICgxIDw8IHJlYWROb3cpIC0gMTtcXG4gICAgICB2YXIgYnl0ZVZhbCA9IGJ1ZmZlcltieXRlT2Zmc2V0XSA+PiBiaXRzTGVmdEluQnl0ZSAtIHJlYWROb3c7XFxuICAgICAgdmFyIGJpdHMgPSBieXRlVmFsICYgbWFzaztcXG4gICAgICB2YWx1ZSA9IHZhbHVlIDw8IHJlYWROb3cgfCBiaXRzO1xcbiAgICAgIGJpdE9mZnNldCArPSByZWFkTm93O1xcbiAgICAgIGJpdHNSZW1haW5pbmcgLT0gcmVhZE5vdztcXG4gICAgfVxcbiAgICByZXR1cm4gdmFsdWU7XFxuICB9XFxuICBmdW5jdGlvbiBza2lwQml0cyhuKSB7XFxuICAgIGlmIChiaXRPZmZzZXQgKyBuID4gYnVmZmVyLmxlbmd0aCAqIDgpIHtcXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkNhbm5vdCBza2lwIFtcXFwiLmNvbmNhdChuLCBcXFwiXSBiaXRzIC0gb3V0IG9mIGJvdW5kc1xcXCIpKTtcXG4gICAgfVxcbiAgICBiaXRPZmZzZXQgKz0gbjtcXG4gIH1cXG4gIGZ1bmN0aW9uIGdldFJlbWFpbmluZ0JpdHMoKSB7XFxuICAgIHJldHVybiBidWZmZXIubGVuZ3RoICogOCAtIGJpdE9mZnNldDtcXG4gIH1cXG4gIHJldHVybiB7XFxuICAgIHJlYWRCaXRzOiByZWFkQml0cyxcXG4gICAgc2tpcEJpdHM6IHNraXBCaXRzLFxcbiAgICBnZXRSZW1haW5pbmdCaXRzOiBnZXRSZW1haW5pbmdCaXRzXFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykge1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gc2Vjb25kc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gbWludXRlc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gaG91cnNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDUpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuaG91cnMgPSByZWFkZXIucmVhZEJpdHMoNSk7XFxuICByZXR1cm4gdHJ1ZTtcXG59XFxuZnVuY3Rpb24gcGFyc2VDbG9ja1RpbWVzdGFtcChyZWFkZXIpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfVxcbiAgdmFyIHRzID0ge1xcbiAgICBjdFR5cGU6IHJlYWRlci5yZWFkQml0cygyKSxcXG4gICAgbnVpdEZpZWxkQmFzZWRGbGFnOiByZWFkZXIucmVhZEJpdHMoMSkgPT09IDEsXFxuICAgIGNvdW50aW5nVHlwZTogcmVhZGVyLnJlYWRCaXRzKDUpLFxcbiAgICBmdWxsVGltZXN0YW1wRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBkaXNjb250aW51aXR5RmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjbnREcm9wcGVkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBuRnJhbWVzOiByZWFkZXIucmVhZEJpdHMoOClcXG4gIH07XFxuICBpZiAodHMuZnVsbFRpbWVzdGFtcEZsYWcpIHtcXG4gICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUCkge1xcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHRzLnNlY29uZHMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLm1pbnV0ZXMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgfSBlbHNlIHtcXG4gICAgaWYgKCFyZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHRzLnRpbWVPZmZzZXQgPSByZWFkZXIucmVhZEJpdHMoMjQpO1xcbiAgcmV0dXJuIHRzO1xcbn1cXG5mdW5jdGlvbiBwYXJzZVBpY3R1cmVUaW1pbmcoZGF0YSwgY29uZmlnKSB7XFxuICB2YXIgcmVhZGVyID0gY3JlYXRlQml0c3RyZWFtUmVhZGVyKHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSk7XFxuICB2YXIgcmVzdWx0ID0ge1xcbiAgICBwaWNTdHJ1Y3Q6IHVuZGVmaW5lZFxcbiAgfTtcXG4gIGlmIChjb25maWcuY3BiRHBiRGVsYXlzUHJlc2VudEZsYWcgJiYgY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5kcGJPdXRwdXREZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuY3BiUmVtb3ZhbERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgKyAxKTtcXG4gIH1cXG4gIGlmIChjb25maWcucGljU3RydWN0UHJlc2VudEZsYWcpIHtcXG4gICAgdmFyIHBpY1N0cnVjdCA9IHJlYWRlci5yZWFkQml0cyg0KTtcXG4gICAgdmFyIG51bUNsb2NrVFMgPSBjb252ZXJ0UGljU3RydWN0VG9OdW1DbG9ja1RTKHBpY1N0cnVjdCk7XFxuICAgIHZhciBjbG9ja1RpbWVzdGFtcHMgPSBbXTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DbG9ja1RTOyBpKyspIHtcXG4gICAgICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDEpIHtcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgICB2YXIgY2xvY2tUaW1lc3RhbXBGbGFnID0gcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxO1xcbiAgICAgIGlmICghY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29udGludWU7XFxuICAgICAgfVxcbiAgICAgIHZhciB0cyA9IHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKTtcXG4gICAgICBpZiAodHMpIHtcXG4gICAgICAgIGNsb2NrVGltZXN0YW1wcy5wdXNoKHtcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXBGbGFnOiB0cnVlLFxcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcDogdHNcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyBOb3QgZW5vdWdoIGJpdHMsIHN0b3AgcHJvY2Vzc2luZyBTRUlcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICByZXN1bHQucGljU3RydWN0ID0ge1xcbiAgICAgIG51bUNsb2NrVFM6IG51bUNsb2NrVFMsXFxuICAgICAgY2xvY2tUaW1lc3RhbXBzOiBjbG9ja1RpbWVzdGFtcHNcXG4gICAgfTtcXG4gIH1cXG4gIHJldHVybiByZXN1bHQ7XFxufVxcbmZ1bmN0aW9uIGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUoY2h1bmspIHtcXG4gIHZhciByZWNlaXZlVGltZXN0YW1wID0gbmV3IERhdGUoKTtcXG4gIHZhciBjaHVua0RhdGEgPSBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKTtcXG4gIHZhciBjdXJyZW50SW5kZXggPSBmaW5kTmV4dE5hbFN0YXJ0KGNodW5rRGF0YSwgMCk7XFxuICB3aGlsZSAoY3VycmVudEluZGV4ICE9PSAtMSkge1xcbiAgICB2YXIgbmV4dE5hbFN0YXJ0ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIGN1cnJlbnRJbmRleCArIDEpO1xcbiAgICB2YXIgbmFsVW5pdEVuZCA9IG5leHROYWxTdGFydCA9PT0gLTEgPyBjaHVua0RhdGEubGVuZ3RoIDogbmV4dE5hbFN0YXJ0O1xcbiAgICB2YXIgc3RhcnRDb2RlTGVuZ3RoID0gY2h1bmtEYXRhW2N1cnJlbnRJbmRleCArIDJdID09PSAweDAxID8gMyA6IDQ7XFxuICAgIHZhciBuYWxVbml0SGVhZGVySW5kZXggPSBjdXJyZW50SW5kZXggKyBzdGFydENvZGVMZW5ndGg7XFxuICAgIHZhciBuYWxVbml0VHlwZSA9IGNodW5rRGF0YVtuYWxVbml0SGVhZGVySW5kZXhdICYgMHgxZjtcXG4gICAgaWYgKG5hbFVuaXRUeXBlID09PSBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9UWVBFX1NFSSkge1xcbiAgICAgIHZhciBzZWlJbmRleCA9IG5hbFVuaXRIZWFkZXJJbmRleCArIEgyNjRfQ09OU1RBTlRTLk5BTF9VTklUX0hFQURFUl9TSVpFO1xcbiAgICAgIHZhciBuYWxVbml0RGF0YSA9IGNodW5rRGF0YS5zdWJhcnJheShzZWlJbmRleCwgbmFsVW5pdEVuZCk7XFxuICAgICAgdmFyIHNlaU9mZnNldCA9IDA7XFxuXFxuICAgICAgLy8gUHJvY2VzcyBTRUkgbWVzc2FnZXMgdW50aWwgZW5kIG9mIE5BTCB1bml0XFxuICAgICAgd2hpbGUgKHNlaU9mZnNldCA8IG5hbFVuaXREYXRhLmxlbmd0aCkge1xcbiAgICAgICAgLy8gU3RvcCBpZiByZW1haW5pbmcgZGF0YSBpcyB0b28gc2hvcnQgdG8gYmUgYSB2YWxpZCBTRUkgbWVzc2FnZVxcbiAgICAgICAgaWYgKHNlaU9mZnNldCArIDIgPiBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2VpUGF5bG9hZCA9IGV4dHJhY3RTZWlQYXlsb2FkKG5hbFVuaXREYXRhLCBzZWlPZmZzZXQpO1xcbiAgICAgICAgaWYgKHNlaVBheWxvYWQudHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HKSB7XFxuICAgICAgICAgIHZhciBfcGFyc2VkUGljdHVyZVRpbWluZyQ7XFxuICAgICAgICAgIHZhciBwYXJzZWRQaWN0dXJlVGltaW5nID0gcGFyc2VQaWN0dXJlVGltaW5nKHNlaVBheWxvYWQucGF5bG9hZCwge1xcbiAgICAgICAgICAgIGNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnOiBmYWxzZSxcXG4gICAgICAgICAgICBwaWNTdHJ1Y3RQcmVzZW50RmxhZzogdHJ1ZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgICAgdmFyIGZpcnN0Q2xvY2tUaW1lc3RhbXAgPSAoX3BhcnNlZFBpY3R1cmVUaW1pbmckID0gcGFyc2VkUGljdHVyZVRpbWluZy5waWNTdHJ1Y3QpID09PSBudWxsIHx8IF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3BhcnNlZFBpY3R1cmVUaW1pbmckLmNsb2NrVGltZXN0YW1wc1swXTtcXG4gICAgICAgICAgaWYgKGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IG51bGwgJiYgZmlyc3RDbG9ja1RpbWVzdGFtcCAhPT0gdm9pZCAwICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICAgICAgdmFyIF9maXJzdENsb2NrVGltZXN0YW1wJCwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMiwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMywgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkNDtcXG4gICAgICAgICAgICB2YXIgcnRwVGltZXN0YW1wID0gY2h1bmsudGltZXN0YW1wO1xcbiAgICAgICAgICAgIHZhciBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcXG4gICAgICAgICAgICAgIHRpbWVjb2RlOiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wID8ge1xcbiAgICAgICAgICAgICAgICBob3VyczogKF9maXJzdENsb2NrVGltZXN0YW1wJCA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuaG91cnMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJCAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgbWludXRlczogKF9maXJzdENsb2NrVGltZXN0YW1wJDIgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm1pbnV0ZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDIgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDIgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiAoX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuc2Vjb25kcykgIT09IG51bGwgJiYgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA6IG51bGwsXFxuICAgICAgICAgICAgICAgIGZyYW1lczogKF9maXJzdENsb2NrVGltZXN0YW1wJDQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm5GcmFtZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDQgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBpc0ZyYW1lRHJvcDogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5jbnREcm9wcGVkRmxhZ1xcbiAgICAgICAgICAgICAgfSA6IG51bGwsXFxuICAgICAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiByZWNlaXZlVGltZXN0YW1wXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKHt9LCBydHBUaW1lc3RhbXAsIHtcXG4gICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc2VpT2Zmc2V0ICs9IHNlaVBheWxvYWQubGVuZ3RoO1xcblxcbiAgICAgICAgLy8gU3RvcCBpZiBhbiBpbnZhbGlkIHBheWxvYWQgbGVuZ3RoIHdhcyBkZXRlY3RlZC5cXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gICAgY3VycmVudEluZGV4ID0gbmV4dE5hbFN0YXJ0O1xcbiAgfVxcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlKSA9PiB7XFxuXFxuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcXG4gIHRyeSB7XFxuICAgIHZhciBpID0gblthXShjKSxcXG4gICAgICB1ID0gaS52YWx1ZTtcXG4gIH0gY2F0Y2ggKG4pIHtcXG4gICAgcmV0dXJuIHZvaWQgZShuKTtcXG4gIH1cXG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcXG59XFxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcXG4gICAgdmFyIHQgPSB0aGlzLFxcbiAgICAgIGUgPSBhcmd1bWVudHM7XFxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcXG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XFxuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXFxcIm5leHRcXFwiLCBuKTtcXG4gICAgICB9XFxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwidGhyb3dcXFwiLCBuKTtcXG4gICAgICB9XFxuICAgICAgX25leHQodm9pZCAwKTtcXG4gICAgfSk7XFxuICB9O1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlKSA9PiB7XFxuXFxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcXG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXFxcIik7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgdG9Qcm9wZXJ0eUtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzXFxcIik7XFxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XFxuICAgIHZhciBvID0gclt0XTtcXG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcXFwidmFsdWVcXFwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XFxuICB9XFxufVxcbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XFxuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcXFwicHJvdG90eXBlXFxcIiwge1xcbiAgICB3cml0YWJsZTogITFcXG4gIH0pLCBlO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cztcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKG1vZHVsZSwgX191bnVzZWRfd2VicGFja19leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxudmFyIHRvUHJvcGVydHlLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XFxuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcXG4gICAgdmFsdWU6IHQsXFxuICAgIGVudW1lcmFibGU6ICEwLFxcbiAgICBjb25maWd1cmFibGU6ICEwLFxcbiAgICB3cml0YWJsZTogITBcXG4gIH0pIDogZVtyXSA9IHQsIGU7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgX3R5cGVvZiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3R5cGVvZi5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanNcXFwiKVtcXFwiZGVmYXVsdFxcXCJdKTtcXG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XFxuICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XFxuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcXG4gIGlmICh2b2lkIDAgIT09IGUpIHtcXG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcXFwiZGVmYXVsdFxcXCIpO1xcbiAgICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XFxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXFxcIik7XFxuICB9XFxuICByZXR1cm4gKFxcXCJzdHJpbmdcXFwiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cztcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgX3R5cGVvZiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3R5cGVvZi5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanNcXFwiKVtcXFwiZGVmYXVsdFxcXCJdKTtcXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJpbWl0aXZlLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzXFxcIik7XFxuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XFxuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFxcXCJzdHJpbmdcXFwiKTtcXG4gIHJldHVybiBcXFwic3ltYm9sXFxcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcXFwiXFxcIjtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKG1vZHVsZSkgPT4ge1xcblxcbmZ1bmN0aW9uIF90eXBlb2Yobykge1xcbiAgXFxcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXFxcIjtcXG5cXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIFxcXCJzeW1ib2xcXFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gdHlwZW9mIG87XFxuICB9IDogZnVuY3Rpb24gKG8pIHtcXG4gICAgcmV0dXJuIG8gJiYgXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXFxcInN5bWJvbFxcXCIgOiB0eXBlb2YgbztcXG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSlcXG5cXG4vKioqKioqLyBcXHR9KTtcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8vIFRoZSBtb2R1bGUgY2FjaGVcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXFxuLyoqKioqKi8gXFx0XFx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XFxuLyoqKioqKi8gXFx0XFx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxcbi8qKioqKiovIFxcdFxcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdGV4cG9ydHM6IHt9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxcbi8qKioqKiovIFxcdFxcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHR9XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCAqL1xcbi8qKioqKiovIFxcdCgoKSA9PiB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XFxuLyoqKioqKi8gXFx0XFx0XFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0KCkgPT4gKG1vZHVsZSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGdldHRlcjtcXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdH0pKCk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Lyogd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovXFxuLyoqKioqKi8gXFx0KCgpID0+IHtcXG4vKioqKioqLyBcXHRcXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcXG4vKioqKioqLyBcXHRcXHRcXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSkoKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kICovXFxuLyoqKioqKi8gXFx0KCgpID0+IHtcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpXFxuLyoqKioqKi8gXFx0fSkoKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0ge307XFxuLy8gVGhpcyBlbnRyeSBuZWVkIHRvIGJlIHdyYXBwZWQgaW4gYW4gSUlGRSBiZWNhdXNlIGl0IG5lZWQgdG8gYmUgaW4gc3RyaWN0IG1vZGUuXFxuKCgpID0+IHtcXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZSEuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlICovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3JtcyAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiKTtcXG5cXG5cXG5cXG5cXG52YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgLyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL21haW4vcGFja2FnZXMvYmFiZWwtaGVscGVycy9MSUNFTlNFICovIHZhciBlLCB0LCByID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sIG4gPSByLml0ZXJhdG9yIHx8IFxcXCJAQGl0ZXJhdG9yXFxcIiwgbyA9IHIudG9TdHJpbmdUYWcgfHwgXFxcIkBAdG9TdHJpbmdUYWdcXFwiOyBmdW5jdGlvbiBpKHIsIG4sIG8sIGkpIHsgdmFyIGMgPSBuICYmIG4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gbiA6IEdlbmVyYXRvciwgdSA9IE9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpOyByZXR1cm4gX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiX2ludm9rZVxcXCIsIGZ1bmN0aW9uIChyLCBuLCBvKSB7IHZhciBpLCBjLCB1LCBmID0gMCwgcCA9IG8gfHwgW10sIHkgPSAhMSwgRyA9IHsgcDogMCwgbjogMCwgdjogZSwgYTogZCwgZjogZC5iaW5kKGUsIDQpLCBkOiBmdW5jdGlvbiBkKHQsIHIpIHsgcmV0dXJuIGkgPSB0LCBjID0gMCwgdSA9IGUsIEcubiA9IHIsIGE7IH0gfTsgZnVuY3Rpb24gZChyLCBuKSB7IGZvciAoYyA9IHIsIHUgPSBuLCB0ID0gMDsgIXkgJiYgZiAmJiAhbyAmJiB0IDwgcC5sZW5ndGg7IHQrKykgeyB2YXIgbywgaSA9IHBbdF0sIGQgPSBHLnAsIGwgPSBpWzJdOyByID4gMyA/IChvID0gbCA9PT0gbikgJiYgKHUgPSBpWyhjID0gaVs0XSkgPyA1IDogKGMgPSAzLCAzKV0sIGlbNF0gPSBpWzVdID0gZSkgOiBpWzBdIDw9IGQgJiYgKChvID0gciA8IDIgJiYgZCA8IGlbMV0pID8gKGMgPSAwLCBHLnYgPSBuLCBHLm4gPSBpWzFdKSA6IGQgPCBsICYmIChvID0gciA8IDMgfHwgaVswXSA+IG4gfHwgbiA+IGwpICYmIChpWzRdID0gciwgaVs1XSA9IG4sIEcubiA9IGwsIGMgPSAwKSk7IH0gaWYgKG8gfHwgciA+IDEpIHJldHVybiBhOyB0aHJvdyB5ID0gITAsIG47IH0gcmV0dXJuIGZ1bmN0aW9uIChvLCBwLCBsKSB7IGlmIChmID4gMSkgdGhyb3cgVHlwZUVycm9yKFxcXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXFxcIik7IGZvciAoeSAmJiAxID09PSBwICYmIGQocCwgbCksIGMgPSBwLCB1ID0gbDsgKHQgPSBjIDwgMiA/IGUgOiB1KSB8fCAheTspIHsgaSB8fCAoYyA/IGMgPCAzID8gKGMgPiAxICYmIChHLm4gPSAtMSksIGQoYywgdSkpIDogRy5uID0gdSA6IEcudiA9IHUpOyB0cnkgeyBpZiAoZiA9IDIsIGkpIHsgaWYgKGMgfHwgKG8gPSBcXFwibmV4dFxcXCIpLCB0ID0gaVtvXSkgeyBpZiAoISh0ID0gdC5jYWxsKGksIHUpKSkgdGhyb3cgVHlwZUVycm9yKFxcXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFxcXCIpOyBpZiAoIXQuZG9uZSkgcmV0dXJuIHQ7IHUgPSB0LnZhbHVlLCBjIDwgMiAmJiAoYyA9IDApOyB9IGVsc2UgMSA9PT0gYyAmJiAodCA9IGkucmV0dXJuKSAmJiB0LmNhbGwoaSksIGMgPCAyICYmICh1ID0gVHlwZUVycm9yKFxcXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcXFwiICsgbyArIFxcXCInIG1ldGhvZFxcXCIpLCBjID0gMSk7IGkgPSBlOyB9IGVsc2UgaWYgKCh0ID0gKHkgPSBHLm4gPCAwKSA/IHUgOiByLmNhbGwobiwgRykpICE9PSBhKSBicmVhazsgfSBjYXRjaCAodCkgeyBpID0gZSwgYyA9IDEsIHUgPSB0OyB9IGZpbmFsbHkgeyBmID0gMTsgfSB9IHJldHVybiB7IHZhbHVlOiB0LCBkb25lOiB5IH07IH07IH0ociwgbywgaSksICEwKSwgdTsgfSB2YXIgYSA9IHt9OyBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fSBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge30gdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgdmFyIGMgPSBbXVtuXSA/IHQodChbXVtuXSgpKSkgOiAoX3JlZ2VuZXJhdG9yRGVmaW5lMih0ID0ge30sIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCB0KSwgdSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGMpOyBmdW5jdGlvbiBmKGUpIHsgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAoZS5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSksIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh1KSwgZTsgfSByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcImNvbnN0cnVjdG9yXFxcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiwgX3JlZ2VuZXJhdG9yRGVmaW5lMihHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbywgXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbywgXFxcIkdlbmVyYXRvclxcXCIpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJ0b1N0cmluZ1xcXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFxcXCJbb2JqZWN0IEdlbmVyYXRvcl1cXFwiOyB9KSwgKF9yZWdlbmVyYXRvciA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgcmV0dXJuIHsgdzogaSwgbTogZiB9OyB9KSgpOyB9XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBuLCB0KSB7IHZhciBpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5OyB0cnkgeyBpKHt9LCBcXFwiXFxcIiwge30pOyB9IGNhdGNoIChlKSB7IGkgPSAwOyB9IF9yZWdlbmVyYXRvckRlZmluZTIgPSBmdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUoZSwgciwgbiwgdCkgeyBmdW5jdGlvbiBvKHIsIG4pIHsgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5faW52b2tlKHIsIG4sIGUpOyB9KTsgfSByID8gaSA/IGkoZSwgciwgeyB2YWx1ZTogbiwgZW51bWVyYWJsZTogIXQsIGNvbmZpZ3VyYWJsZTogIXQsIHdyaXRhYmxlOiAhdCB9KSA6IGVbcl0gPSBuIDogKG8oXFxcIm5leHRcXFwiLCAwKSwgbyhcXFwidGhyb3dcXFwiLCAxKSwgbyhcXFwicmV0dXJuXFxcIiwgMikpOyB9LCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG52YXIgd29ya2VyID0gc2VsZjtcXG4vLyBUaGlzIGlzIGhvdyB0aGUgZG9jdW1lbnRhdGlvbiBpbnN0cnVjdHMgdG8gZG8gaXQgLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93b3JrZXItbG9hZGVyXFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbnZhciBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpIHtcXG4gICAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKSh0aGlzLCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcik7XFxuICB9XFxuICByZXR1cm4gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiaGFuZGxlQWRkVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUFkZFRyYW5zZm9ybSh0eXBlKSB7XFxuICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCkge1xcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogUGlwZWxpbmUgaXMgbG9ja2VkLiBBIHRyYW5zZm9ybSBjYW5ub3QgYmUgYWRkZWQgb25jZSB0aGUgcGlwZWxpbmUgaGFzIGJlZW4gY29uZmlndXJlZCcpO1xcbiAgICAgIH1cXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgIGNhc2UgJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbic6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSgpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQtdmlkZW8nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQtYXVkaW8nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwYXNzLXRocm91Z2gnOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZVBhc3NUaHJvdWdoVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiRXJyb3I6IFVua25vd24gdHJhbnNmb3JtIHR5cGUgW1xcXCIuY29uY2F0KHR5cGUsIFxcXCJdXFxcIikpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjb25maWd1cmVQaXBlbGluZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XFxuICAgICAgdmFyIF9jb25maWd1cmVQaXBlbGluZSA9IF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSgvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKHNvdXJjZSwgc2luaykge1xcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7XFxuICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Lm4pIHtcXG4gICAgICAgICAgICBjYXNlIDA6XFxuICAgICAgICAgICAgICBpZiAoc291cmNlICYmIHNpbmspIHtcXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDE7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogQ29uZmlndXJhdGlvbiBvZiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZSByZXF1aXJlcyBib3RoIGEgcmVhZGJhbGUgc291cmNlIGFuZCB3cml0YWJsZSBzaW5rJyk7XFxuICAgICAgICAgICAgY2FzZSAxOlxcbiAgICAgICAgICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKCk7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjtcXG4gICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5yZWR1Y2VSaWdodChmdW5jdGlvbiAocGlwZWxpbmUsIHRyYW5zZm9ybSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlwZWxpbmUucGlwZVRocm91Z2godHJhbnNmb3JtKTtcXG4gICAgICAgICAgICAgIH0sIHNvdXJjZSkucGlwZVRvKHNpbmspO1xcbiAgICAgICAgICAgIGNhc2UgMjpcXG4gICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCA9IHRydWU7XFxuICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkLFxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgICAgbmFtZTogVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2FzZSAzOlxcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmEoMik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0sIF9jYWxsZWUpO1xcbiAgICAgIH0pKTtcXG4gICAgICBmdW5jdGlvbiBjb25maWd1cmVQaXBlbGluZShfeCwgX3gyKSB7XFxuICAgICAgICByZXR1cm4gX2NvbmZpZ3VyZVBpcGVsaW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBjb25maWd1cmVQaXBlbGluZTtcXG4gICAgfSgpXFxuICB9LCB7XFxuICAgIGtleTogXFxcImhhbmRsZU1lc3NhZ2VcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShfcmVmKSB7XFxuICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgdmFyIHR5cGUgPSBtZXNzYWdlLnR5cGU7XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm06XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZUFkZFRyYW5zZm9ybShtZXNzYWdlLmRhdGEpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShtZXNzYWdlLmRhdGEuc291cmNlLCBtZXNzYWdlLmRhdGEuc2luayk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgKDAsX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1tcXFwiZGVmYXVsdFxcXCJdKSh0eXBlKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl90cmFuc2Zvcm1zXFxcIiwgW10pO1xcbl9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIFxcXCJfaXNQaXBlbGluZUNvbmZpZ3VyZWRcXFwiLCBmYWxzZSk7XFxuX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl93b3JrZXJOYW1lXFxcIiwgdm9pZCAwKTtcXG4oZnVuY3Rpb24gKCkge1xcbiAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1tUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcl0gRXJyb3I6IFslc10nLCBlcnJvcik7XFxuICB9O1xcbiAgd29ya2VyLm9ubWVzc2FnZSA9IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVNZXNzYWdlLmJpbmQoX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIGlmICh3b3JrZXIuUlRDVHJhbnNmb3JtRXZlbnQpIHtcXG4gICAgd29ya2VyLm9ucnRjdHJhbnNmb3JtID0gZnVuY3Rpb24gKF9yZWYyKSB7XFxuICAgICAgdmFyIHRyYW5zZm9ybWVyID0gX3JlZjIudHJhbnNmb3JtZXI7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lID0gdHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lO1xcbiAgICAgIHZhciBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcXG4gICAgICB2YXIgc2luayA9IHRyYW5zZm9ybWVyLndyaXRhYmxlO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShzb3VyY2UsIHNpbmspO1xcbiAgICB9O1xcbiAgfVxcbn0pKCk7XFxuLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF9fV0VCUEFDS19ERUZBVUxUX0VYUE9SVF9fID0gKG51bGwpO1xcbn0pKCk7XFxuXFxuLyoqKioqKi8gfSkoKVxcbjtcXG5cIiwgXCJXb3JrZXJcIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiwgbm8tdXNlLWJlZm9yZS1kZWZpbmUsIG5ldy1jYXAgKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRlbnQsIHdvcmtlckNvbnN0cnVjdG9yLCB3b3JrZXJPcHRpb25zLCB1cmwpIHtcbiAgdmFyIGdsb2JhbFNjb3BlID0gc2VsZiB8fCB3aW5kb3c7XG5cbiAgdHJ5IHtcbiAgICB0cnkge1xuICAgICAgdmFyIGJsb2I7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE5ldyBBUElcbiAgICAgICAgYmxvYiA9IG5ldyBnbG9iYWxTY29wZS5CbG9iKFtjb250ZW50XSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIEJsb2JCdWlsZGVyID0gRGVwcmVjYXRlZCwgYnV0IHdpZGVseSBpbXBsZW1lbnRlZFxuICAgICAgICB2YXIgQmxvYkJ1aWxkZXIgPSBnbG9iYWxTY29wZS5CbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5XZWJLaXRCbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5Nb3pCbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5NU0Jsb2JCdWlsZGVyO1xuICAgICAgICBibG9iID0gbmV3IEJsb2JCdWlsZGVyKCk7XG4gICAgICAgIGJsb2IuYXBwZW5kKGNvbnRlbnQpO1xuICAgICAgICBibG9iID0gYmxvYi5nZXRCbG9iKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBVUkwgPSBnbG9iYWxTY29wZS5VUkwgfHwgZ2xvYmFsU2NvcGUud2Via2l0VVJMO1xuICAgICAgdmFyIG9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICB2YXIgd29ya2VyID0gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXShvYmplY3RVUkwsIHdvcmtlck9wdGlvbnMpO1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVUkwpO1xuICAgICAgcmV0dXJuIHdvcmtlcjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXShcImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdCxcIi5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpKSwgd29ya2VyT3B0aW9ucyk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IEVycm9yKFwiSW5saW5lIHdvcmtlciBpcyBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKHVybCwgd29ya2VyT3B0aW9ucyk7XG4gIH1cbn07IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aG91dEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xuICB0cnkge1xuICAgIHZhciBpID0gblthXShjKSxcbiAgICAgIHUgPSBpLnZhbHVlO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIHZvaWQgZShuKTtcbiAgfVxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHQgPSB0aGlzLFxuICAgICAgZSA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIG4pO1xuICAgICAgfVxuICAgICAgX25leHQodm9pZCAwKTtcbiAgICB9KTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW5oZXJpdHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlUmVzdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCB0LmluZGV4T2YobykgPj0gMCB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5kZXhPZihuKSA+PSAwKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF90eXBlb2Yobyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi9DaGFubmVscyc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsInVuZGVmaW5lZCIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCIsIlBhcmFtZXRlcnMiLCJfZGlzY292ZXJ5UGFyYW1ldGVycyIsImFwcGx5UGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJfX1BBUkFNRVRFUlNfXyIsImRpc2NvdmVyeSIsImludGVudGlvbnMiLCJwcm92aWRlZEdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiZG9jdW1lbnQiLCJfbG9jYXRpb24iLCJsb2NhdGlvbiIsIl93aW5kb3ciLCJ3aW5kb3ciLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsIl9pbnN0YW5jZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwidXJsIiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJnbG9iYWxTY29wZSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsImNhdGNoIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiUnRjQ29ubmVjdGlvbk1vbml0b3IiLCJtZWRpYVN0cmVhbSIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl90cmFja3NUb01vbml0b3IiLCJnZXRUcmFja3MiLCJtYXAiLCJ0cmFjayIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsInBhcnNlZFNEUCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfaXNNb25pdG9yUnVubmluZyIsIl91cGRhdGVUaW1lb3V0IiwiX3VwZGF0ZVN0YXRpc3RpYyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjciLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiZ2V0U3RhdHNMZWdhY3kiLCJyZXN1bHQiLCJuYW1lcyIsInN0YXQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241IiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwicmVzb2x2ZSIsInJlamVjdCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwiX3RoaXM0IiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiX3ZhbHVlIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJEaW1lbnNpb24iLCJDaGFubmVsU3RhdGUiLCJWaWRlb1RlbGVtZXRyeSIsIlNlc3Npb25UZWxlbWV0cnkiLCJUb2tlbkNvbnRleHQiLCJDaGFubmVsQ29udGV4dCIsIkVuY29kZWRTdHJlYW1TaW5rIiwiU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiU3RhdGVDb250ZXh0IiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJTdHJlYW1GYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwib25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5RXhpc3RzIiwiZXhpc3RzIiwiX3JlYWRPbmx5QXV0b011dGVkIiwiYXV0b011dGVkIiwiX3JlYWRPbmx5QXV0b1BhdXNlZCIsImF1dG9QYXVzZWQiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwidG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQbGF5aW5nIiwicGxheWluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlUYXJnZXRMYWciLCJfcmVhZE9ubHlMYWciLCJsYWciLCJfcmVhZE9ubHlCaXRyYXRlTGltaXQiLCJiaXRyYXRlTGltaXQiLCJfcmVhZE9ubHlSZXNvbHV0aW9uIiwicmVzb2x1dGlvbiIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsImZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiZW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJzdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsImNoYW5uZWxEaXNwb3NhYmxlcyIsIl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIiLCJoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCIsIl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsImNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkIiwiaXNFbmFibGVkIiwiX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVyRGlzcG9zYWJsZXMiLCJ2aWRlb1RlbGVtZXRyeSIsImRhdGFzZXQiLCJzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lIiwic2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nIiwiU3RvcHBlZCIsInJlc3RhcnRBZnRlclN0b3AiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQbGF5aW5nIiwib25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzIiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiY2hhbm5lbEluaXRpYWxpemF0aW9uIiwiZ2V0VGltZSIsImxpbWl0Qml0cmF0ZSIsIktlZXAiLCJOb3JtYWwiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsInN0YXJ0IiwicGF1c2UiLCJzcmNPYmplY3QiLCJJbml0aWFsaXppbmciLCJ3aWR0aCIsInZpZGVvV2lkdGgiLCJoZWlnaHQiLCJ2aWRlb0hlaWdodCIsImVtcHR5IiwiZGlzcG9zYWJsZXMiLCJzZXRCaXRyYXRlTGltaXQiLCJjbGVhckJpdHJhdGVMaW1pdCIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJSZXNldCIsInVwZGF0ZVRhcmdldExhZyIsIl9zdG9wIiwicmVhc29uIiwiaXNTdGFydGluZyIsInByb2Nlc3NTdG9wIiwic3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVBsYXllciIsIl9jb250ZXh0NSIsIlN0YXJ0aW5nIiwiVW5hdXRob3JpemVkIiwidmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtIiwiQ29uZmlndXJhdGlvbkVycm9yIiwidmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luayIsImlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJSZWNvdmVyaW5nIiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInRpbWVvdXRJZCIsImdldFJldHJ5SW50ZXJ2YWwiLCJfcmVzdGFydEFmdGVyU3RvcCIsIl9jYWxsZWU2IiwiX2NvbnRleHQ2IiwiX3BsYXkiLCJfY2FsbGVlNyIsIl9jb250ZXh0NyIsInBsYXkiLCJTdGFuZEJ5IiwiT2ZmbGluZSIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUGF1c2VkIiwiUmVjb25uZWN0aW5nIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsIl90aGlzNiIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJkZXN0cm95U3RyZWFtIiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsIl90aGlzNyIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5IiwiY2FwYWJpbGl0eSIsInNob3VsZEV4dHJhY3RUaW1lY29kZSIsInNob3VsZEV4dHJhY3RUaW1lc3RhbXBzIiwiaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCIsIm9wdGlvbiIsInRyaW0iLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzOCIsInBsYXlQcm9taXNlIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsIm9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3MiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiX29wdGlvbnMkb25SZWFsVGltZVN1IiwiX29wdGlvbnMkb25SZWFsVGltZVN1MiIsInJ0Y0F1ZGlvU3RhdGlzdGljIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzIiwiYXVkaW9UcmFjayIsIm1lZGlhU3RyZWFtVHJhY2siLCJyZWNlaXZlciIsIm1pZCIsInRyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMiLCJ2aWRlb1RyYWNrIiwiQXVkaW9Db2RlYyIsIkF1ZGlvQ29kZWNNYXBwaW5nIiwiY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlIiwiT1BVUyIsIkFBQyIsImNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWNUeXBlIiwiYXVkaW9Db2RlY1N0cmluZyIsInRvVXBwZXJDYXNlIiwiVmlkZW9Db2RlYyIsIlZpZGVvQ29kZWNNYXBwaW5nIiwiY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlIiwiSDI2NCIsIlZQOCIsIlZQOSIsImNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyIsInZpZGVvQ29kZWNUeXBlIiwidmlkZW9Db2RlY1N0cmluZyIsIlVpbnQ4QXJyYXkiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJyYWNlIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsImNsaWVudFZlcnNpb24iLCJyZXF1ZXN0Qm9keSIsImh0dHBSZXNwb25zZSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjIiLCJfcmVzcG9uc2UiLCJzdWJzY3JpYmVSZXNwb25zZSIsImJ1aWxkVXJsIiwiYmVhcmVyVG9rZW4iLCJodHRwUm91bmRUcmlwVGltZSIsInNlc3Npb25EZXNjcmlwdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbiIsIm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwiY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJjYW5kaWRhdGVzIiwiZGlzY292ZXJ5Q29tcGxldGVkIiwiYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2FyZ3M2IiwibWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDEzIiwiX3gxNCIsIl94MTUiLCJfZGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50Iiwic2VuZEJlYWNvbiIsIl94MTgiLCJfeDE5IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlIiwicnRjQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJvdGhlclByb3BlcnRpZXMiLCJqc29uIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiX29iamVjdFNwcmVhZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsIl94MjAiLCJfeDIxIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsIl9jYWxsZWUwIiwicHVibGlzaFJlc3BvbnNlIiwiX2NvbnRleHQwIiwiX3gyMiIsIl94MjMiLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwiX3gyNCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyNiIsIlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIiwiY29udGV4dCIsIk1hcCIsImNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwic2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0iLCJ0cmFja0lkIiwiZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0IiwiaXNFbmFibGVkU3ViamVjdCIsInJlZ2lzdGVyUm91dGUiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlIiwiX3RyYW5zZm9ybU5hbWUiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJydHBUaW1lc3RhbXAiLCJtZXRhZGF0YSIsInJ0cFRpbWVzdGFtcE51bWJlciIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbiIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbjIiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwidGltZWNvZGUiLCJyZWNlaXZlVGltZXN0YW1wIiwic291cmNlVGltZXN0YW1wIiwiaW5nZXN0VGltZXN0YW1wIiwiZW5jb2RlVGltZXN0YW1wIiwidHJhbnNjb2RlVGltZXN0YW1wIiwicGxheWJhY2tTdGF0ZSIsIl9jdXJyZW50UGxheWJhY2tTdGF0ZSIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wIiwidmlkZW9FbGVtZW50U3ViamVjdCIsImNsZWFyIiwiX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzIiwic2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzIiwiaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrIiwiX2FybVZpZGVvRnJhbWVDYWxsYmFjayIsInRpbWVzdGFtcHNUb0RlbGV0ZSIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwiX3N0ZXAkdmFsdWUiLCJmcmFtZVRpbWluZyIsInJlbmRlclRpbWVzdGFtcCIsInBlcmZvcm1hbmNlIiwidGltZU9yaWdpbiIsImVyciIsIl9pMiIsIl90aW1lc3RhbXBzVG9EZWxldGUiLCJkZWxldGUiLCJvblBsYXlpbmciLCJvblBhdXNlIiwib25TdGFsbGVkIiwib25XYWl0aW5nIiwib25FbmRlZCIsIm9uRXJyb3IiLCJfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCIsImNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayIsIkNodW5rZWRTdHJlYW1pbmciLCJOZXR3b3JrU3RhdGVzIiwiQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSIsIkNodW5rZWRTdHJlYW0iLCJjaGFubmVsQ29udGV4dCIsImNodW5rZWRTdHJlYW1QbGF5YmFja01vZGUiLCJfY2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSIsIl9jcmVhdGVPZmZlckRlc2NyaXB0aSIsIm9mZmVyU2RwIiwib3JpZ2luU3RhcnRUaW1lIiwicmV0cnlPblN0cmVhbUZhaWx1cmUiLCJwbGF5ZXIiLCJtb25pdG9yIiwiX21vbml0b3JGYWlsdXJlQ291bnQiLCJfbW9uaXRvckRpc3Bvc2FibGVzIiwiX3RoaXMzJF9jaGFubmVsQ29udGV4IiwiX3RoaXMzJF9jaGFubmVsQ29udGV4MiIsIl90aGlzMyRfY2hhbm5lbENvbnRleDMiLCJfdGhpczMkX2NoYW5uZWxDb250ZXg0IiwiX3RoaXMzJF9jaGFubmVsQ29udGV4NSIsIm5ld1N0cmVhbVN0YXRpc3RpY3MiLCJMaXZlIiwibmV0d29ya1N0YXRlIiwiTmV0d29ya05vU291cmNlIiwiY3VycmVudFRpbWUiLCJkdXJhdGlvbiIsIl9zdHJlYW1TdGF0aXN0aWNzIiwicGF1c2VkIiwiZGF0YUJ1ZmZlcmVkIiwiV2ViUGxheWVyIiwiU2hha2FQbGF5ZXIiLCJIbHNQbGF5ZXIiLCJfaGxzUGxheWVyIiwiX3BoZW5peFdlYlBsYXllciIsIl9zaGFrYSIsIl9vcHRpb25zIiwibG9hZGVkIiwiX3BlbmRpbmciLCJfcGxheWVyIiwiUGxheWVyIiwiZGFzaE1hbmlmZXN0VXJsTWF0Y2giLCJobHNNYW5pZmVzdFVybE1hdGNoIiwibWFuaWZlc3RVcmwiLCJwbGF5bGlzdFVybCIsInNob3VsZFVzZU5hdGl2ZUhscyIsInByZWZlck5hdGl2ZSIsIm1hbmlmZXN0VVJJIiwiX3ZpZGVvRWxlbWVudCIsIl9raW5kIiwiX3N0cmVhbUlkIiwiX21hbmlmZXN0VVJJIiwiZW5jb2RlVVJJIiwicmVwbGFjZSIsImhsc1BsYXllciIsImVuYWJsZVdvcmtlciIsIm1heEJ1ZmZlckxlbmd0aCIsImJhY2tCdWZmZXJMZW5ndGgiLCJsaXZlU3luY0R1cmF0aW9uIiwibGl2ZUR1cmF0aW9uSW5maW5pdHkiLCJsaXZlTWF4TGF0ZW5jeUR1cmF0aW9uIiwiSW5maW5pdHkiLCJoaWdoQnVmZmVyV2F0Y2hkb2dQZXJpb2QiLCJsb2FkU291cmNlIiwiYXR0YWNoTWVkaWEiLCJjYW5QbGF5VHlwZSIsInN0YXRpc3RpY3MiLCJtZWRpYSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiTmV0d29ya0lkbGUiLCJidWZmZXJlZCIsImVuZCIsInN0cmVhbUNvbnRyb2xsZXIiLCJOZXR3b3JrTG9hZGluZyIsIk5ldHdvcmtFbXB0eSIsInRydWVDdXJyZW50VGltZSIsIm1heCIsImRlc3Ryb3kiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSW5zZXJ0YWJsZVN0cmVhbXMiLCJFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0IiwiUmVhbFRpbWVTdHJlYW0iLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImFsbCIsIl9yZWYzIiwiX3JlZjMkIiwic3Vic2NyaWJlT3B0aW9ucyIsImNsaWVudE9mZmVyRGlzYWJsZWQiLCJzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24iLCJzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24iLCJhcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJzdWJtaXRDYW5kaWRhdGVzVGltZW91dCIsImNhbmNlbERpc2NvdmVyeSIsImNhbmRpZGF0ZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dCIsIl9yZWY0IiwicmV0cnlDYWxsYmFjayIsIm5hdmlnYXRvcklzT25MaW5lIiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJtZWRpYVN0cmVhbVByb21pc2UiLCJvblRyYWNrRGlzYWJsZWQiLCJzdHJlYW1zIiwidHJhY2tMaXN0ZW5lciIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJfdGhpcyRfY2hhbm5lbENvbnRleHQyIiwiX3BlZXJDb25uZWN0aW9uJGdldFRyIiwiX3BlZXJDb25uZWN0aW9uJGdldFRyMiIsInBhcnNlZFJlbW90ZURlc2NyaXB0aW9uIiwicmVjZWl2ZXJzIiwiZ2V0VmlkZW9UcmFja3MiLCJ2aWRlb1RyYWNrUmVjZWl2ZXIiLCJzdXBwb3J0c0dldFRyYW5zY2VpdmVycyIsInRyYW5zY2VpdmVyIiwiZ2V0QXVkaW9UcmFja3MiLCJhdWRpb1RyYWNrUmVjZWl2ZXIiLCJjcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJyZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQiLCJyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSIsImVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0IiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiX0luc2VydGFibGVTdHJlYW1zJGNvIiwiY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtZWRTdHJlYW0iLCJydGNDb25uZWN0aW9uTW9uaXRvciIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uIiwicnRjU3RhdGlzdGljIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlMiIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiX21vbml0b3JlZFN0YXRpc3RpY3MiLCJlc3RpbWF0ZWRCYW5kd2lkdGgiLCJwbGF5VGltZSIsInNoYWthIiwicGxheWVyT3B0aW9ucyIsImFiciIsImRlZmF1bHRCYW5kd2lkdGhFc3RpbWF0ZSIsIm1hbmlmZXN0IiwicmV0cnlQYXJhbWV0ZXJzIiwic3RyZWFtaW5nIiwibGl2ZVN5bmNQYW5pY1RocmVzaG9sZCIsImJ1ZmZlcmluZ0dvYWwiLCJidWZmZXJCZWhpbmQiLCJtYXhBdHRlbXB0cyIsImJhY2tvZmZGYWN0b3IiLCJsb2FkUGxheWVyIiwidW5sb2FkIiwicGxheWVyQ29uZmlnIiwiX3RoaXMkX3BsYXllciIsIl90aGlzJF9wbGF5ZXIyIiwiX3RoaXMkX3BsYXllcjQiLCJjb25maWd1cmUiLCJlcnJvckhhbmRsZXIiLCJfdGhpcyRfcGxheWVyMyIsImxvYWQiLCJjb2RlIiwidG9rZW5DYXBhYmlsaXRpZXMiLCJoYXNTdHJlYW1pbmciLCJoYXNPbkRlbWFuZCIsIk9uZERlbWFuZCIsImJhbmR3aWR0aFRvU3RhcnRBdCIsIm1pblRpbWVCZWZvcmVOZXh0UmVsb2FkIiwiX2xhc3RSZWxvYWRUaW1lIiwicGhlbml4V2ViUGxheWVyIiwiZXJyb3JPYmplY3QiLCJjYW5SZWxvYWQiLCJzZXZlcml0eSIsImVycm9ycyIsIlJFQ09WRVJBQkxFIiwicmVsb2FkSWZBYmxlIiwiX3RoaXMkX3ZpZGVvRWxlbWVudCRiIiwiX3RoaXMkX3ZpZGVvRWxlbWVudCRiMiIsImlzTmF0aXZlIiwiZGVsaXZlcnlUeXBlIiwiaGFzRWxhcHNlZE1pblRpbWVTaW5jZUxhc3RSZWxvYWQiLCJyZWxvYWQiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiU2tpcEZyYW1lIiwiRW5jb2RlZFZpZGVvQ2h1bmsiLCJjaHVuayIsImVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwiRW5jb2RlZEF1ZGlvQ2h1bmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsIl9lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiX2VuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJtb2RlIiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsImNvbnN0cnVjdG9yIiwiZnJvbSIsIlRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIiwiVHJhbnNmb3JtTWVzc2FnZVR5cGUiLCJUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwiY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayIsIndvcmtlciIsInRlcm1pbmF0ZSIsInZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJfY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiYWRkVHJhY2tUcmFuc2Zvcm1zIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXMiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWUiLCJwb3N0TWVzc2FnZSIsIkFkZFRyYW5zZm9ybSIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrIiwidHJhY2tSZWNlaXZlciIsInRyYWNrTWVkaWFTdHJlYW1UcmFjayIsInRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm0iLCJQaXBlbGluZUNvbmZpZ3VyZWQiLCJvbmNlIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayIsImFjdGlvbnMiLCJlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zIiwiQ29uZmlndXJlUGlwZWxpbmUiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ0cmFuc2ZlciIsImluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwicmVtb3ZlVHJhY2siLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIiwic3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIiwic3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl9pc1NhZmFyaSIsIl9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiX2lzQW5kcm9pZENocm9tZSIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIiLCJtZXNzYWdlVHlwZSIsInJvdXRlTWVzc2FnZSIsIl9tZXNzYWdlUm91dGVzIiwicm91dGVNZXNzYWdlRGF0YSIsIkNodW5rIiwiTWV0YWRhdGEiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWluIiwib3RoZXIiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9uZXR3b3JrTW9uaXRvciIsImlzRm9yZWdyb3VuZCIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJmbG9hdCIsIm5vb3AiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJldmVudCIsIm9uQ29udGludWF0aW9uIiwiX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciIsInB1c2hUaW1lVG9GaXJzdEZyYW1lIiwicHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdGltZVRvRmlyc3RGcmFtZSIsImR1cmF0aW9uU2luY2VQYWdlTG9hZCIsIl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3ZpZGVvU3RhbGxlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|
|
11971
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0VBQUU7RUFDeEw5ZCxHQUFHLEVBQUUsSUFBSUssVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDelNKLEdBQUcsRUFBRSxJQUFJSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJ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QyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUF1Tiw4SUFBQSxDQUN6RXErQixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUFyK0IsOElBQUEsQ0FBSyxJQUFJNGdCLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQ251QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFF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O1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNibjhDLEdBQUcsRUFBSEEsNENBQUc7RUFDSHMxQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JsTixZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvUHJvdmlkZWRHbG9iYWxTY29wZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9DaGFubmVsQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZnJhbWVUaW1pbmcvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvQ2h1bmtlZFN0cmVhbS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9DaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL0NodW5rZWRTdHJlYW1pbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvSGxzUGxheWVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL05ldHdvcmtTdGF0ZXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvUmVhbFRpbWVTdHJlYW0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvU2hha2FQbGF5ZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9XZWJQbGF5ZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2SUZyYW1lLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZQRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vRGltZW5zaW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9WaWRlb1RlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnF1ZXVlTWljcm90YXNrKHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KHRoaXMub3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uLmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50Q3JlYXRlRWxlbWVudDxIVE1MSW1hZ2VFbGVtZW50PignaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gR2xvYmFsU2NvcGUudmFsdWUuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuXG4gICAgICBpbWcgPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VUb2tlbiBmcm9tICcuL0VkZ2VUb2tlbic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4vRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmNvbnN0IGVkZ2VBdXRoVG9rZW5QcmVmaXggPSAnRElHRVNUOic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZ2VBdXRoUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFZGdlQXV0aFBhcnNlcicpO1xuXG4gIHN0YXRpYyBwYXJzZVRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogRWRnZVRva2VuIHtcbiAgICBpZiAoIXRoaXMuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdUb2tlbiBpcyBub3QgdmFsaWQgWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGF0b2IodG9rZW4uc3Vic3RyKGVkZ2VBdXRoVG9rZW5QcmVmaXgubGVuZ3RoKSk7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBKU09OLnBhcnNlKGRlY29kZWRUb2tlbik7XG5cbiAgICAgIGVkZ2VUb2tlbi50b2tlbiA9IEpTT04ucGFyc2UoZWRnZVRva2VuLnRva2VuKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4oZWRnZVRva2VuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBFZGdlQXV0aFBhcnNlci5fbG9nZ2VyLmVycm9yKCdDYW5ub3QgcGFyc2UgdG9rZW4gdmFsdWUnLCBlKTtcblxuICAgICAgcmV0dXJuIG5ldyBFZGdlVG9rZW4obnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdG9rZW4gJiYgdG9rZW4uc3RhcnRzV2l0aChlZGdlQXV0aFRva2VuUHJlZml4KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LmRvY3VtZW50Q3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkXG4gICAgICAmJiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBHbG9iYWxTY29wZSBpbXBsZW1lbnRzIElHbG9iYWxTY29wZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbnN0YW5jZSA9IG5ldyBTdWJqZWN0PElHbG9iYWxTY29wZSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbnN0YW5jZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlIHwgbnVsbD4oR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpIHtcbiAgICB0aGlzLl9kb2N1bWVudCA9IHByb3ZpZGVkR2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBwcm92aWRlZEdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IHByb3ZpZGVkR2xvYmFsU2NvcGUubmF2aWdhdG9yO1xuICAgIHRoaXMuX3dpbmRvdyA9IHByb3ZpZGVkR2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShwcm92aWRlZEdsb2JhbFNjb3BlOiBJUHJvdmlkZWRHbG9iYWxTY29wZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnN0YW5jZS52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxTY29wZSBjYW4gb25seSBiZSBzZXQgb25lIHRpbWUnKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKEFaKTogVmFsaWRhdGUgcHJvdmlkZWRHbG9iYWxTY29wZVxuICAgIHRoaXMuX2luc3RhbmNlLnZhbHVlID0gbmV3IEdsb2JhbFNjb3BlKHByb3ZpZGVkR2xvYmFsU2NvcGUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlIHwgbnVsbD4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNUeXBlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljczogTWV0cmljc1R5cGU7XG5cbiAgY29uc3RydWN0b3IobWV0cmljczogTWV0cmljc1R5cGUpIHtcbiAgICB0aGlzLl9tZXRyaWNzID0gbWV0cmljcztcbiAgfVxuXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTWV0cmljc1R5cGVbdGhpcy5fbWV0cmljc107XG4gIH1cblxuICBnZXRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0aGlzLl9tZXRyaWNzKSB7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlN0YWxsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkJ1ZmZlcmluZzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBDb21wbGV0ZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuTmV0d29ya1R5cGU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX21ldHJpY3MpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFpbHVyZUNvdW50ID0gMDtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IobWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWV0cmljc0NvbmZpZ3VyYXRpb24oKTogTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobWV0cmljOiBJTWV0cmljKTogdm9pZCB7XG4gICAgY29uc3Qge3N0cmVhbUlkLCB2YWx1ZSwgcHJldmlvdXNWYWx1ZSwgcnVudGltZSwgcmVzb3VyY2UsIGtpbmR9ID0gbWV0cmljO1xuICAgIGNvbnN0IG1ldHJpY1R5cGUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWMubWV0cmljVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID4gbWV0cmljVHlwZS5nZXRUZWxlbWV0cnlMZXZlbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpYzogbWV0cmljVHlwZS5nZXROYW1lKCksXG4gICAgICB2YWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIHJ1bnRpbWUsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGtpbmRcbiAgICB9O1xuXG4gICAgdGhpcy5fbWV0cmljcy5wdXNoKG1ldHJpY1JlY29yZCk7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXM6IEFycmF5PElNZXRyaWNSZWNvcmQ+KTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IG1ldHJpY3NNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjU3RhdGlzdGljO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydCB7XG4gIHJlc3VsdDogKCkgPT4gSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW0gZXh0ZW5kcyBSVENTdGF0c1JlcG9ydCB7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZXM6ICgpID0+IHN0cmluZ1tdO1xuICBzdGF0OiAobmFtZTogc3RyaW5nKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y1N0YXRpc3RpYyB7XG4gIHNzcmM/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGJpdHJhdGU/OiBudW1iZXI7XG4gIGJ5dGVzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGZyYW1lc0RlY29kZWQ/OiBudW1iZXI7XG4gIHBhY2tldHNMb3N0PzogbnVtYmVyO1xuICBwYWNrZXRzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGNvZGVjPzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU/OiBudW1iZXI7XG4gIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcD86IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4oe30pO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbDtcbiAgcHJpdmF0ZSBfaXNNb25pdG9yUnVubmluZyA9IHRydWU7XG4gIHByaXZhdGUgX3VwZGF0ZVRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmFja3NUb01vbml0b3I6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICB0aGlzLl90cmFja3NUb01vbml0b3IgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5tYXAodHJhY2sgPT4gdHJhY2sua2luZCkgfHwgW107XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFNEUCA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyA9IHBhcnNlZFNEUC5hdWRpb0NvZGVjO1xuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjID0gcGFyc2VkU0RQLnZpZGVvQ29kZWM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLnVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2FmYXJpIDExIGRvZXNudCBoYXZlIGtpbmQgb3IgbWVkaWFUeXBlIHNvIHdlIG5lZWQgdG8gdGFrZSBpdCBmcm9tIHRoZSBpbmJvdW5kLXJ0cCBvYmplY3QgaWRcbiAgICBjb25zdCBnZXRLaW5kRm9yU2FmYXJpMTEgPSAoaXRlbToge2lkOiBzdHJpbmd9KTogc3RyaW5nID0+IGl0ZW0uaWQuaW5jbHVkZXMoJ0F1ZGlvJykgPyAnYXVkaW8nIDogaXRlbS5pZC5pbmNsdWRlcygnVmlkZW8nKSA/ICd2aWRlbycgOiAnJztcbiAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpXG4gICAgICAudGhlbihzdGF0cyA9PiB7XG4gICAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG5cbiAgICAgICAgaWYgKHN0YXRzKSB7XG4gICAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICAgIGxldCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHN0YXRzLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnaW5ib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGtpbmQgPSByZXBvcnQua2luZCB8fCByZXBvcnQubWVkaWFUeXBlIHx8IGdldEtpbmRGb3JTYWZhcmkxMShyZXBvcnQpO1xuICAgICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSByZXBvcnQuY29kZWNJZCkge1xuICAgICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fdHJhY2tzVG9Nb25pdG9yLmluY2x1ZGVzKGtpbmQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNSZWNlaXZlZCB8fCAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNSZWNlaXZlZCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1JlY2VpdmVkID8/IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXNEZWx0YSA9IGJ5dGVzIC0gcHJldmlvdXNCeXRlc1JlY2VpdmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEZWx0YSA9IHJlcG9ydC50aW1lc3RhbXAgLSAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcCB8fCAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkOiByZXBvcnQuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNMb3N0OiByZXBvcnQucGFja2V0c0xvc3QsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzUmVjZWl2ZWQ6IHJlcG9ydC5wYWNrZXRzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0RlY29kZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNEZWNvZGVkO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgIDEwMDA7XG5cbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZwcyddID0gZnBzID8gTWF0aC5yb3VuZChmcHMgKiAxMDApIC8gMTAwIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzTGVnYWN5KCkudGhlbihzdGF0cyA9PiB7XG4gICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuXG4gICAgICBzdGF0cy5yZXN1bHQoKS5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgIHJlcG9ydC5uYW1lcygpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICdnb29nUlRUJykge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5zdGF0KG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnc3NyYycpIHtcbiAgICAgICAgICBjb25zdCBtZWRpYVR5cGUgPSByZXBvcnQuc3RhdCgnbWVkaWFUeXBlJykudG9TdHJpbmcoKTtcblxuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXSA9IHt0aW1lc3RhbXA6IERhdGUubm93KCl9O1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnc3NyYyddID0gcmVwb3J0LnN0YXQoJ3NzcmMnKS50b1N0cmluZygpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnbWVkaWFUeXBlJ10gPSBtZWRpYVR5cGU7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydieXRlc1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgnYnl0ZXNSZWNlaXZlZCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c0xvc3QnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzTG9zdCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgncGFja2V0c1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydjb2RlYyddID0gcmVwb3J0LnN0YXQoJ2dvb2dDb2RlY05hbWUnKS50b1N0cmluZygpIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUobWVkaWFUeXBlKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3JvdW5kVHJpcFRpbWUnXSA9IHJvdW5kVHJpcFRpbWU7XG5cbiAgICAgICAgICBpZiAobWVkaWFUeXBlID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8udmlkZW8/LmZyYW1lc0RlY29kZWQpIHtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LnN0YXQoJ2ZyYW1lc0RlY29kZWQnKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnBzJ10gPSAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgIDEwMDAgfHwgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcnRtYXAgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYG09JHt0eXBlfWApKT8uc3BsaXQoJyAnKVszXSB8fCAnJztcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3J0bWFwfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lPy5zcGxpdCgnICcpWzFdIHx8ICcnO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5SVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5pY2VDb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldFRyYW5zY2VpdmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmdldFRyYW5zY2VpdmVyc0Rpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0VHJhbnNjZWl2ZXJzID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUcmFuc2NlaXZlcnMoKTogUlRDUnRwVHJhbnNjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ocmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlKG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikpO1xuICAgICAgICBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQge0dsb2JhbFNjb3BlfSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVNoYWthUGxheWVyJztcbmltcG9ydCB7SGxzUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSUhsc1BsYXllcic7XG5pbXBvcnQge1dlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lXZWJQbGF5ZXInO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZT8ucGFnZUxvYWRUaW1lIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlcjogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJykgYXMgVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBvbkxvYWQoZ2xvYmFsU2NvcGU6IElHbG9iYWxTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RLIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBTREsuZGlzcG9zZSgpO1xuICAgIH0pO1xuXG4gICAgU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGU6IElJbml0T3B0aW9ucyAmIHtnbG9iYWxTY29wZT86IElQcm92aWRlZEdsb2JhbFNjb3BlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKSB7XG4gICAgICBHbG9iYWxTY29wZS5zZXRJbnN0YW5jZShvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkdsb2JhbFNjb3BlLnN1YnNjcmliZShTREsub25Mb2FkLmJpbmQoU0RLKSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lDaGFubmVsfSBmcm9tICcuL0lDaGFubmVsJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCwge0NoYW5uZWxDb250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgRW5jb2RlZFN0cmVhbVNpbmssIHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBTdHJlYW1UcmFja1RyYW5zZm9ybSwge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IFN0cmVhbUZhY3RvcnkgZnJvbSAnLi4vc3RyZWFtaW5nL1N0cmVhbUZhY3RvcnknO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsT3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbCBpbXBsZW1lbnRzIElDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NoYW5uZWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RXhpc3RzOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9NdXRlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9QYXVzZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQbGF5aW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUYXJnZXRMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TGFnOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlCaXRyYXRlTGltaXQ6IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZXNvbHV0aW9uOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zKSB7XG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbik7XG4gICAgY29uc3QgY2hhbm5lbENvbnRleHRPcHRpb25zOiBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnM/LnRhcmdldExhZyxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2ssXG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2tcbiAgICB9O1xuICAgIGNvbnN0IHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIGhhc0luc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBuZXcgQ2hhbm5lbENvbnRleHQoY2hhbm5lbENvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlFeGlzdHMgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPih0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPih0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHZpZGVvRWxlbWVudCgpOiBIVE1MVmlkZW9FbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldCB2aWRlb0VsZW1lbnQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSA9IHZpZGVvRWxlbWVudDtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLnJlc29sdXRpb24udmFsdWUud2lkdGggIT09IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoIHx8IHRoaXMucmVzb2x1dGlvbi52YWx1ZS5oZWlnaHQgIT09IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gbmV3IERpbWVuc2lvbih2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCwgdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IERpbWVuc2lvbi5lbXB0eTtcbiAgICB9XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24oZWRnZVRva2VuLmNhcGFiaWxpdGllcyk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgZXhpc3RzKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUV4aXN0cztcbiAgfVxuXG4gIGdldCBhdXRvTXV0ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQ7XG4gIH1cblxuICBnZXQgYXV0b1BhdXNlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9QYXVzZWQ7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHBsYXlpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQbGF5aW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IHRhcmdldExhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWc7XG4gIH1cblxuICBnZXQgbGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxhZztcbiAgfVxuXG4gIGdldCBiaXRyYXRlTGltaXQoKTogQml0c1BlclNlY29uZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0LnZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlc29sdXRpb247XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgaXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ7XG4gIH1cblxuICBnZXQgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24oKTogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seURlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgZ2V0IHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcbiAgfVxuXG4gIHNldEJpdHJhdGVMaW1pdChiaXRyYXRlTGltaXQ6IEJpdHNQZXJTZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSBiaXRyYXRlTGltaXQ7XG4gIH1cblxuICBjbGVhckJpdHJhdGVMaW1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgY29uc3QgZWxhcHNlZEluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxJbml0aWFsaXphdGlvbi5nZXRUaW1lKCk7XG4gICAgICBjb25zdCBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kID0gMDtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSxcbiAgICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgQml0cmF0ZU1vZGUuUmVzZXRcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Vycm9yIHdoaWxlIHNldHRpbmcgbGltaXQgYml0cmF0ZScsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXJnZXRMYWcobGFnOiBNaWxsaXNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZy52YWx1ZSA9IGxhZztcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgcmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBtdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdW5tdXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OnN0YXJ0Jyk7XG5cbiAgICBjb25zdCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiA9IHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgICBjb25zdCBsaXN0ZW5PblN0cmVhbVNldHVwID0gdGhpcy5fc2Vzc2lvblRlbGVtZXRyeS5saXN0ZW5PblN0cmVhbVNldHVwKCk7XG5cbiAgICBpZiAoIUVkZ2VBdXRoUGFyc2VyLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+KCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+KCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ3ZpZGVvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygnYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlICYmIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggaW5zZXJ0YWJsZS1zdHJlYW1zIGFuZCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBhcmUgZW5hYmxlZCwgb25seSB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGhhc0VuY29kZWRTdHJlYW1TaW5rID0gdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nO1xuXG4gICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrICYmIGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0JvdGggTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBjYWxsYmFjayBhbmQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIHNpbmsgZnVuY3Rpb24gZm91bmQsIG9ubHkgdXNlIG9uZSB0eXBlIG9yIHRoZSBvdGhlcicpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgTWVkaWEgU3RyZWFtIFRyYWNrIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gY2FsbGJhY2sgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICBpZiAoIShGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIEFQSScpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gZm91bmQ7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZykge1xuICAgICAgICAgIERpc2NvdmVyeS5jbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgLy8gTmVlZCB0byBzZXQgaXNTdGFydGluZyB0byBmYWxzZSBhbmQgY2FsbCBoYW5kbGVTdHJlYW1GYWlsdXJlIGlmIHN0cmVhbSBtb25pdG9ycyBmb3VuZCBhbiBpc3N1ZVxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVBsYXllciA9IFN0cmVhbUZhY3RvcnkuY3JlYXRlKHRva2VuLCB0aGlzLl9jaGFubmVsQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIGlmICghc3RyZWFtUGxheWVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbVBsYXllci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cCxcbiAgICAgIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQuYmluZCh0aGlzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IGNoYW5uZWwnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuUGxheWluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN0YXJ0QWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwbGF5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBpbml0aWFsaXppbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGxheWluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBhdXNlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBpbnZva2UgcGxheSgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsIHJlYXNvbilcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRGVzdHJveWVkIHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0nLCB0aGlzLnN0cmVhbUlkLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50ICYmIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGNhcGFiaWxpdGllczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSA9IGNhcGFiaWxpdGllcy5maW5kKGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKCdmcmFtZS10aW1pbmctaW5mb3JtYXRpb249JykpO1xuXG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5pc0VuYWJsZWQudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNhYmxpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGFzIG5vIGNhcGFiaWxpdHkgd2FzIGZvdW5kJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNhYmxpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGFzIHRoZSBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IGl0IFslc10nLCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ2FwYWJpbGl0eS5zcGxpdCgnPScpWzFdXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcChvcHRpb24gPT4gb3B0aW9uLnRyaW0oKSlcbiAgICAgIC5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgICAgY2FzZSAndGltZWNvZGUnOlxuICAgICAgICAgICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGltZXN0YW1wcyc6XG4gICAgICAgICAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnSWdub3JpbmcgdW5rbm93biBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gb3B0aW9uIFslc10nLCBvcHRpb24pO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGNvbmZpZ3VyYXRpb24gWyh0aW1lY29kZSBbJXNdLCB0aW1lc3RhbXBzIFslc10pXScsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYXlQcm9taXNlID0gdmlkZW9FbGVtZW50LnBsYXkoKTtcblxuICAgIGlmIChwbGF5UHJvbWlzZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBwbGF5UHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgY29uc3QgaGFzQXVkaW9UcmFjayA9ICEhbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZmlsdGVyKHRyYWNrID0+IHtcbiAgICAgICAgcmV0dXJuIHRyYWNrLmtpbmQgPT09ICdhdWRpbyc7XG4gICAgICB9KS5sZW5ndGg7XG4gICAgICBjb25zdCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiA9ICFTREsuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG5cbiAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiB8fCB2aWRlb0VsZW1lbnQubXV0ZWQgfHwgIWhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQYXVzZWQgdmlkZW8gYWZ0ZXIgcGxheSBmYWlsZWQuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IG11dGVkIHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmlkZW9FbGVtZW50LnBsYXkoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGxheWVkIHZpZGVvIGFmdGVyIGF1dG8gbXV0aW5nLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQgdG8gdW5tdXRlLicsIHRoaXMuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIENoYW5uZWxTdGF0ZSB7XG4gIEluaXRpYWxpemluZyA9IDAsXG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyA9IDIsXG4gIFBhdXNlZCA9IDMsXG4gIFBsYXlpbmcgPSA0LFxuICBSZWNvdmVyaW5nID0gNSxcbiAgUmVjb25uZWN0aW5nID0gNixcbiAgU3RhbmRCeSA9IDcsXG4gIFN0b3BwZWQgPSA4LFxuICBVbmF1dGhvcml6ZWQgPSA5LFxuICBHZW9SZXN0cmljdGVkID0gMTAsXG4gIEdlb0Jsb2NrZWQgPSAxMSxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlID0gMTIsXG4gIENvbmZpZ3VyYXRpb25FcnJvciA9IDEzLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IgPSAxNCxcbiAgQ29ubmVjdGlvbkVycm9yID0gMTUsXG4gIENsaWVudFN0YXJ0RXJyb3IgPSAxNixcbiAgRXJyb3IgPSAxN1xufVxuXG5leHBvcnQgZGVmYXVsdCBDaGFubmVsU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVDaGFubmVsT3B0aW9ucyA9IHtcbiAgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50O1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbHMge1xuICBzdGF0aWMgY3JlYXRlQ2hhbm5lbChvcHRpb25zOiBDcmVhdGVDaGFubmVsT3B0aW9ucyk6IENoYW5uZWwge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zOiBDaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucy50YXJnZXRMYWcsXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3M6IENoYW5uZWxPcHRpb25zICYge1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsKG9wdGlvbnMudmlkZW9FbGVtZW50LCBvcHRpb25zLnRva2VuLCBjaGFubmVsT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbHMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IERpbWVuc2lvbiBmcm9tICcuLi8uLi92aWRlby9EaW1lbnNpb24nO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbSwgU3Vic2NyaWJlU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi4vY2hhbm5lbHMvSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2snO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2t9IGZyb20gJy4uL2NoYW5uZWxzL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IHtJUnRjTW9uaXRvclN0YXRpc3RpYywgSVJ0Y1N0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcblxuY29uc3QgZGVmYXVsdFRhcmdldExhZyA9IDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogbnVtYmVyO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbENvbnRleHQge1xuICBjaGFubmVsSW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgY2hhbm5lbERpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcmVuZGVyZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHZpZGVvRWxlbWVudDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD47XG4gIHN0YXRlOiBTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIGV4aXN0czogU3ViamVjdDxib29sZWFuIHwgbnVsbD47XG4gIGF1dG9NdXRlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0b1BhdXNlZDogU3ViamVjdDxib29sZWFuPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwbGF5aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICB0YXJnZXRMYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBsYWc6IFN1YmplY3Q8TWlsbGlzZWNvbmQgfCB1bmRlZmluZWQ+O1xuICBiaXRyYXRlTGltaXQ6IFN1YmplY3Q8Qml0c1BlclNlY29uZD47XG4gIHJlc29sdXRpb246IFN1YmplY3Q8RGltZW5zaW9uPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHwgbnVsbDtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s6IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB8IG51bGw7XG4gIHN0cmVhbTogU3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHJ0Y1N0YXRpc3RpY3M6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgdmlkZW9UZWxlbWV0cnk6IFZpZGVvVGVsZW1ldHJ5IHwgbnVsbDtcbiAgcnRjQXVkaW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWMgfCBudWxsO1xuICBydGNWaWRlb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYyB8IG51bGw7XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBDaGFubmVsQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnJlbmRlcmVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSBuZXcgU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdWJqZWN0PENoYW5uZWxTdGF0ZT4oQ2hhbm5lbFN0YXRlLkluaXRpYWxpemluZyk7XG4gICAgdGhpcy5leGlzdHMgPSBuZXcgU3ViamVjdDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5hdXRvTXV0ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRvUGF1c2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0aG9yaXplZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMub25saW5lID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucGxheWluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0YW5kYnkgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdG9wcGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMudGFyZ2V0TGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQ+KG9wdGlvbnM/LnRhcmdldExhZyA/PyBkZWZhdWx0VGFyZ2V0TGFnKTtcbiAgICB0aGlzLmxhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuYml0cmF0ZUxpbWl0ID0gbmV3IFN1YmplY3Q8Qml0c1BlclNlY29uZD4oMCk7XG4gICAgdGhpcy5yZXNvbHV0aW9uID0gbmV3IFN1YmplY3Q8RGltZW5zaW9uPihEaW1lbnNpb24uZW1wdHkpO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigwKTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbmV3IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sgPSBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID8/IG51bGw7XG4gICAgdGhpcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID8/IG51bGw7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnZpZGVvVGVsZW1ldHJ5ID0gbnVsbDtcbiAgICB0aGlzLnJ0Y0F1ZGlvU3RhdGlzdGljID0gbnVsbDtcbiAgICB0aGlzLnJ0Y1ZpZGVvU3RhdGlzdGljID0gbnVsbDtcbiAgICB0aGlzLmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICAgICAgdGhpcy5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQudmFsdWUgJiYgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgfVxuICB9XG5cbiAgbWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhbmRCeTtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkO1xuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmV4aXN0cy52YWx1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9ufSBmcm9tICcuLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQge1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkRXh0cmFjdFRpbWVjb2RlOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBpc0VuYWJsZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2hvdWxkRXh0cmFjdFRpbWVjb2RlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0VuYWJsZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlQ29udGV4dCB7XG4gIGlzU3RhcnRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGlzRGlzcG9zZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pc1N0YXJ0aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuaXNEaXNwb3NlZCA9IGZhbHNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtBdWRpb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbmV4cG9ydCB0eXBlIFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICBoYXNJbnNlcnRhYmxlU3RyZWFtczogYm9vbGVhbjtcbiAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrID0ge1xuICBtZWRpYVN0cmVhbVRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbDtcbiAgcmVjZWl2ZXI6IFJUQ1J0cFJlY2VpdmVyIHwgbnVsbDtcbiAgbWlkOiBzdHJpbmcgfCBudWxsO1xuICBjb2RlYzogVmlkZW9Db2RlYyB8IEF1ZGlvQ29kZWMgfCBudWxsO1xuICB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogV29ya2VyIHwgbnVsbDtcbiAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogVHJhbnNmb3JtTWVzc2FnZVJvdXRlciB8IG51bGw7XG4gIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCB7XG4gIHJlYWRvbmx5IGhhc0luc2VydGFibGVTdHJlYW1zOiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGF1ZGlvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgcmVhZG9ubHkgdmlkZW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5oYXNJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaztcbiAgICB0aGlzLmF1ZGlvVHJhY2sgPSB7XG4gICAgICBtZWRpYVN0cmVhbVRyYWNrOiBudWxsLFxuICAgICAgcmVjZWl2ZXI6IG51bGwsXG4gICAgICBtaWQ6IG51bGwsXG4gICAgICBjb2RlYzogbnVsbCxcbiAgICAgIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IFtdXG4gICAgfTtcbiAgICB0aGlzLnZpZGVvVHJhY2sgPSB7XG4gICAgICBtZWRpYVN0cmVhbVRyYWNrOiBudWxsLFxuICAgICAgcmVjZWl2ZXI6IG51bGwsXG4gICAgICBtaWQ6IG51bGwsXG4gICAgICBjb2RlYzogbnVsbCxcbiAgICAgIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtTWVzc2FnZVJvdXRlcjogbnVsbCxcbiAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IFtdXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gQXVkaW9Db2RlYyB7XG4gIE9QVVMgPSAwLFxuICBBQUMgPSAxXG59XG5cbmV4cG9ydCB0eXBlIEF1ZGlvQ29kZWNUeXBlID0gJ09QVVMnIHwgJ0FBQyc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7QXVkaW9Db2RlYywgQXVkaW9Db2RlY1R5cGV9IGZyb20gJy4vQXVkaW9Db2RlYyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvQ29kZWNNYXBwaW5nIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXVkaW9Db2RlY1RvQXVkaW9Db2RlY1R5cGUoYXVkaW9Db2RlYzogQXVkaW9Db2RlYyk6IEF1ZGlvQ29kZWNUeXBlIHtcbiAgICBzd2l0Y2ggKGF1ZGlvQ29kZWMpIHtcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5PUFVTOlxuICAgICAgICByZXR1cm4gJ09QVVMnO1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLkFBQzpcbiAgICAgICAgcmV0dXJuICdBQUMnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYXVkaW9Db2RlYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0QXVkaW9Db2RlY1R5cGVUb0F1ZGlvQ29kZWMoYXVkaW9Db2RlY1R5cGU6IEF1ZGlvQ29kZWNUeXBlKTogQXVkaW9Db2RlYyB7XG4gICAgY29uc3QgYXVkaW9Db2RlY1N0cmluZyA9IGF1ZGlvQ29kZWNUeXBlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIEF1ZGlvQ29kZWM7XG5cbiAgICBzd2l0Y2ggKGF1ZGlvQ29kZWNTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ09QVVMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5PUFVTO1xuICAgICAgY2FzZSAnQUFDJzpcbiAgICAgICAgcmV0dXJuIEF1ZGlvQ29kZWMuQUFDO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYXVkaW9Db2RlY1N0cmluZyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIFZpZGVvQ29kZWMge1xuICBIMjY0ID0gMCxcbiAgVlA4ID0gMSxcbiAgVlA5ID0gMlxufVxuXG5leHBvcnQgdHlwZSBWaWRlb0NvZGVjVHlwZSA9ICdIMjY0JyB8ICdWUDgnIHwgJ1ZQOSc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7VmlkZW9Db2RlYywgVmlkZW9Db2RlY1R5cGV9IGZyb20gJy4vVmlkZW9Db2RlYyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZpZGVvQ29kZWNNYXBwaW5nIHtcbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VmlkZW9Db2RlY1RvVmlkZW9Db2RlY1R5cGUodmlkZW9Db2RlYzogVmlkZW9Db2RlYyk6IFZpZGVvQ29kZWNUeXBlIHtcbiAgICBzd2l0Y2ggKHZpZGVvQ29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICByZXR1cm4gJ0gyNjQnO1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuICdWUDgnO1xuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuICdWUDknO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodmlkZW9Db2RlYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWModmlkZW9Db2RlY1R5cGU6IFZpZGVvQ29kZWNUeXBlKTogVmlkZW9Db2RlYyB7XG4gICAgY29uc3QgdmlkZW9Db2RlY1N0cmluZyA9IHZpZGVvQ29kZWNUeXBlLnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFZpZGVvQ29kZWM7XG5cbiAgICBzd2l0Y2ggKHZpZGVvQ29kZWNTdHJpbmcpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOlxuICAgICAgICByZXR1cm4gVmlkZW9Db2RlYy5IMjY0O1xuICAgICAgY2FzZSAnVlA4JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuVlA4O1xuICAgICAgY2FzZSAnVlA5JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuVlA5O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodmlkZW9Db2RlY1N0cmluZyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFsweDAwLCAweDAwLCAweDAwLCAweDAxXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVNb2RlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZU1vZGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSk6IEJpdHJhdGVNb2RlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlTW9kZSkge1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuRm9yY2U6XG4gICAgICAgIHJldHVybiAnRm9yY2UnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlTW9kZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vRGlzY292ZXJ5VXJpJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGVmYXVsdFRpbWVvdXQgPSAyMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEaXNjb3ZlcnknKTtcbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF91cmk6IFVSTDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IFVSTCkge1xuICAgIGlmICghdXJpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB1cmknKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKHVyaS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gIH1cblxuICBhc3luYyBkaXNjb3Zlck5lYXJieUVuZFBvaW50cyh1cmk6IFVSTCwgdGltZW91dDogbnVtYmVyKTogUHJvbWlzZTxFbmRQb2ludFtdPiB7XG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB0aW1lb3V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpc2NvdmVyeSB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRpbWVvdXQpKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dCkpXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtPy5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIG5ldyBFcnJvcihgU2V0IGxpbWl0IGJpdHJhdGUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgbmV3IEVycm9yKGBBZGQgaWNlIGNhbmRpZGF0ZXMgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWcsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJRGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiwgUnRwVGltZXN0YW1wfSBmcm9tICcuL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtWaWRlb0NvZGVjfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWMnO1xuaW1wb3J0IHtNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkLCBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0ID0ge1xuICBjb2RlYzogVmlkZW9Db2RlYztcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsPjtcbiAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIGlzRW5hYmxlZFN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlcjtcbiAgbWlkOiBzdHJpbmc7XG4gIHRyYWNrSWQ6IHN0cmluZztcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG4gIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RyYW5zZm9ybU5hbWUgPSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXA6IE1hcDxSdHBUaW1lc3RhbXAsIERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9jdXJyZW50UGxheWJhY2tTdGF0ZTogJ3BsYXlpbmcnIHwgJ3BhdXNlZCcgfCAnc3RhbGxlZCcgfCAnZW5kZWQnIHwgJ2Vycm9yJyB8ICd3YWl0aW5nJyA9ICd3YWl0aW5nJztcbiAgcHJpdmF0ZSBfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSB7XG4gICAgdGhpcy5pbml0aWFsaXplKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oY29udGV4dC5zdHJlYW1JZCwgY29udGV4dC5jb2RlYywgY29udGV4dC5yZWNlaXZlciwgY29udGV4dC5taWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKGNvbnRleHQudmlkZW9FbGVtZW50LCBjb250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvbnRleHQuY29kZWMsIGNvbnRleHQubWlkLCBjb250ZXh0LnRyYWNrSWQsIGNvbnRleHQudHJhbnNmb3JtTWVzc2FnZVJvdXRlciwgY29udGV4dC50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLCBjb250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG4gICAgY29udGV4dC5pc0VuYWJsZWRTdWJqZWN0LnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24oc3RyZWFtSWQ6IHN0cmluZywgY29kZWM6IFZpZGVvQ29kZWMsIHJlY2VpdmVyOiBSVENSdHBSZWNlaXZlciwgbWlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoY29kZWMgIT09IFZpZGVvQ29kZWMuSDI2NCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIHZpZGVvIGNvZGVjIGlzIG5vdCBIMjY0Jywgc3RyZWFtSWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNlaXZlcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIHJlY2VpdmVyIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghbWlkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBTa2lwcGluZyBmcmFtZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHZpZGVvIHRyYWNrIGJlY2F1c2Ugbm8gbWlkIHdhcyBmb3VuZCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oY29kZWM6IFZpZGVvQ29kZWMsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIucmVnaXN0ZXJSb3V0ZTxUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkPj4oVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkZyYW1lVGltaW5nSW5mb3JtYXRpb24sIHRoaXMuaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlLmJpbmQodGhpcywgVmlkZW9Db2RlY1tjb2RlY10sIG1pZCEsIHRyYWNrSWQhLCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpKTtcbiAgICB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIuX3RyYW5zZm9ybU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UoY29kZWM6IHN0cmluZywgbWlkOiBzdHJpbmcsIHRyYWNrSWQ6IHN0cmluZywgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG1lc3NhZ2U6IE1ldGFkYXRhTWVzc2FnZVBheWxvYWQpOiB2b2lkIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtydHBUaW1lc3RhbXAsIG1ldGFkYXRhXSBvZiBPYmplY3QuZW50cmllcyhtZXNzYWdlKSkge1xuICAgICAgY29uc3QgcnRwVGltZXN0YW1wTnVtYmVyID0gcGFyc2VJbnQocnRwVGltZXN0YW1wLCAxMCk7XG4gICAgICBjb25zdCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG1ldGFkYXRhWydkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiddO1xuXG4gICAgICBpZiAoZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24pIHtcbiAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XG4gICAgICAgICAgdGltZWNvZGU6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRpbWVjb2RlID8/IG51bGwsXG4gICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24ucmVjZWl2ZVRpbWVzdGFtcCA/PyBudWxsLFxuICAgICAgICAgIGtpbmQ6ICd2aWRlbycsXG4gICAgICAgICAgY29kZWMsXG4gICAgICAgICAgbWlkLFxuICAgICAgICAgIHRyYWNrSWQsXG4gICAgICAgICAgc291cmNlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIGluZ2VzdFRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBlbmNvZGVUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgdHJhbnNjb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHBsYXliYWNrU3RhdGU6IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0LnZhbHVlID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuc2V0KHJ0cFRpbWVzdGFtcE51bWJlciwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwVmlkZW9FbGVtZW50SGFuZGxpbmcodmlkZW9FbGVtZW50U3ViamVjdDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD4sIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcC5jbGVhcigpKSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodmlkZW9FbGVtZW50U3ViamVjdC5zdWJzY3JpYmUodmlkZW9FbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldHVwVmlkZW9FdmVudExpc3RlbmVycyh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiwgbm93OiBET01IaWdoUmVzVGltZVN0YW1wLCBtZXRhZGF0YTogVmlkZW9GcmFtZUNhbGxiYWNrTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZS1yZWdpc3RlciB0aGUgY2FsbGJhY2sgdG8gZW5zdXJlIGl0J3MgY2FsbGVkIGFnYWluXG4gICAgdGhpcy5fYXJtVmlkZW9GcmFtZUNhbGxiYWNrKHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCk7XG5cbiAgICBjb25zdCBydHBUaW1lc3RhbXAgPSBtZXRhZGF0YS5ydHBUaW1lc3RhbXA7XG5cbiAgICBpZiAoIXJ0cFRpbWVzdGFtcCkge1xuICAgICAgLy8gVE9ETyAoTkgpOiBBZGQgYSB0aHJvdHRsZWQgbG9nIGluZGljYXRpbmcgdGhhdCBubyBSVFAgdGltZXN0YW1wIHdhcyBmb3VuZFxuICAgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IGl0J3MgbnVsbGFibGUsIGJ1dCB3ZSBhbHdheXMgaGF2ZSBpdCBpbiBhIFdlYlJUQyBjb250ZXh0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGltZXN0YW1wc1RvRGVsZXRlOiBSdHBUaW1lc3RhbXBbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBbdGltZXN0YW1wLCBmcmFtZVRpbWluZ10gb2YgdGhpcy5fZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25CeVJ0cFRpbWVzdGFtcCkge1xuICAgICAgaWYgKHRpbWVzdGFtcCA+IHJ0cFRpbWVzdGFtcCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IHtcbiAgICAgICAgLi4uZnJhbWVUaW1pbmcsXG4gICAgICAgIHJlbmRlclRpbWVzdGFtcDogbmV3IERhdGUocGVyZm9ybWFuY2UudGltZU9yaWdpbiArIG5vdyksXG4gICAgICAgIHBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJ1xuICAgICAgfTtcblxuICAgICAgdGltZXN0YW1wc1RvRGVsZXRlLnB1c2godGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRpbWVzdGFtcCBvZiB0aW1lc3RhbXBzVG9EZWxldGUpIHtcbiAgICAgIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuZGVsZXRlKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgY29uc3Qgb25QbGF5aW5nID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAncGxheWluZyc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZyk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgb25QbGF5aW5nKSkpO1xuXG4gICAgY29uc3Qgb25QYXVzZSA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BhdXNlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBvblBhdXNlKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSkpKTtcblxuICAgIGNvbnN0IG9uU3RhbGxlZCA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3N0YWxsZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIG9uU3RhbGxlZCkpKTtcblxuICAgIGNvbnN0IG9uV2FpdGluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3dhaXRpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2FpdGluZycsIG9uV2FpdGluZykpKTtcblxuICAgIGNvbnN0IG9uRW5kZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlbmRlZCc7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCBvbkVuZGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCkpKTtcblxuICAgIGNvbnN0IG9uRXJyb3IgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdlcnJvcic7XG5cbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcikpKTtcblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCkge1xuICAgICAgICB2aWRlb0VsZW1lbnQuY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCA9IHZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHRoaXMuaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrLmJpbmQodGhpcywgdmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBDaGFubmVsQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L0NoYW5uZWxDb250ZXh0JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nfSBmcm9tICcuL0NodW5rZWRTdHJlYW1pbmcnO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3N9IGZyb20gJy4vU3RyZWFtVHlwZXMnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TmV0d29ya1N0YXRlc30gZnJvbSAnLi9OZXR3b3JrU3RhdGVzJztcbmltcG9ydCBDaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlIGZyb20gJy4vQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENodW5rZWRTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NodW5rZWRTdHJlYW0nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlOiBDaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb25pdG9yRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBfc3RyZWFtU3RhdGlzdGljczogQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3MgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbW9uaXRvckZhaWx1cmVDb3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IoY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBjaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlOiBDaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9jaHVua2VkU3RyZWFtUGxheWJhY2tNb2RlID0gY2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZTtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZyk6IFByb21pc2U8dm9pZCB8IElEaXNwb3NhYmxlPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgIC50aGVuKGVuZFBvaW50ID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlO1xuXG4gICAgICAgIGlmICghZW5kUG9pbnQpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1N1YnNjcmliZSBmYWlsZWQ6IGVuZCBwb2ludCBzZXJ2aWNlIGlzIG1pc3NpbmcnKTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkVycm9yO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZXhpc3RzLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IHVuZGVmaW5lZCA7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG9mZmVyU2RwID0gY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24/LnNkcDtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnMgPSB7XG4gICAgICAgICAgb3JpZ2luU3RhcnRUaW1lOiBEYXRlLm5vdygpIC0gbGFnICsgKGVuZFBvaW50LnJvdW5kVHJpcFRpbWUpIC8gMixcbiAgICAgICAgICBsYWc6IGxhZ1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdTdWJzY3JpYmUgZmFpbGVkOiB2aWRlbyBlbGVtZW50IGlzIG1pc3NpbmcnKTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9mZmVyU2RwKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdTdWJzY3JpYmUgZmFpbGVkOiBvZmZlciBTRFAgaXMgbWlzc2luZycpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuRXJyb3I7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ2h1bmtlZFN0cmVhbWluZy5zdGFydCh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBvZmZlclNkcCwgb3B0aW9ucywgKCkgPT4gdGhpcy5yZXRyeU9uU3RyZWFtRmFpbHVyZSgpKVxuICAgICAgICAgIC50aGVuKHBsYXllciA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vbml0b3IocGxheWVyKTtcblxuICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHBsYXllcik7XG5cbiAgICAgICAgICAgIHJldHVybiBwbGF5ZXI7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NodW5rZWRTdHJlYW1pbmcgZmFpbGVkJywgZSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJ5T25TdHJlYW1GYWlsdXJlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JGYWlsdXJlQ291bnQgPSAwO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fbW9uaXRvckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb25pdG9yKHBsYXllcjogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RyZWFtU3RhdGlzdGljcyA9IENodW5rZWRTdHJlYW1pbmcuZ2V0U3RhdHMoKTtcblxuICAgICAgaWYgKHRoaXMuX2NodW5rZWRTdHJlYW1QbGF5YmFja01vZGUgPT09IENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUuTGl2ZVxuICAgICAgICAmJiBuZXdTdHJlYW1TdGF0aXN0aWNzPy5uZXR3b3JrU3RhdGUgPT09IE5ldHdvcmtTdGF0ZXMuTmV0d29ya05vU291cmNlXG4gICAgICAgICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZT8uY3VycmVudFRpbWUgPT09IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZT8uZHVyYXRpb25cbiAgICAgICkge1xuICAgICAgICB0aGlzLnJldHJ5T25TdHJlYW1GYWlsdXJlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fc3RyZWFtU3RhdGlzdGljcyAmJlxuICAgICAgICAhdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlPy5wYXVzZWQgJiZcbiAgICAgICAgICAobmV3U3RyZWFtU3RhdGlzdGljcz8uY3VycmVudFRpbWUgJiYgdGhpcy5fc3RyZWFtU3RhdGlzdGljcy5jdXJyZW50VGltZSA+PSBuZXdTdHJlYW1TdGF0aXN0aWNzLmN1cnJlbnRUaW1lKSAmJlxuICAgICAgICAgICghbmV3U3RyZWFtU3RhdGlzdGljcz8uZGF0YUJ1ZmZlcmVkIHx8IHRoaXMuX3N0cmVhbVN0YXRpc3RpY3MuZGF0YUJ1ZmZlcmVkID49IG5ld1N0cmVhbVN0YXRpc3RpY3MuZGF0YUJ1ZmZlcmVkKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX21vbml0b3JGYWlsdXJlQ291bnQrKztcblxuICAgICAgICBpZiAodGhpcy5fbW9uaXRvckZhaWx1cmVDb3VudCA+IDQpIHtcbiAgICAgICAgICB0aGlzLnJldHJ5T25TdHJlYW1GYWlsdXJlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX21vbml0b3JGYWlsdXJlQ291bnQgPSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlPy5wYXVzZWQgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU/LnBhdXNlZCAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3RyZWFtU3RhdGlzdGljcyA9IG5ld1N0cmVhbVN0YXRpc3RpY3M7XG5cbiAgICAgIHRoaXMubW9uaXRvcihwbGF5ZXIpO1xuICAgIH0sIDEwMDApO1xuXG4gICAgdGhpcy5fbW9uaXRvckRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgfSkpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fbW9uaXRvckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUge1xuICAgIExpdmUgPSAxLFxuICAgIE9uZERlbWFuZCA9IDJcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBXZWJQbGF5ZXIgZnJvbSAnLi9XZWJQbGF5ZXInO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IFNoYWthUGxheWVyIGZyb20gJy4vU2hha2FQbGF5ZXInO1xuaW1wb3J0IEhsc1BsYXllciBmcm9tICcuL0hsc1BsYXllcic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge1xuICBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucyxcbiAgQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3Ncbn0gZnJvbSAnLi9TdHJlYW1UeXBlcyc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL0lXZWJQbGF5ZXInO1xuXG5leHBvcnQgY2xhc3MgQ2h1bmtlZFN0cmVhbWluZyB7XG4gIHByaXZhdGUgc3RhdGljIF9wZW5kaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIF9obHNQbGF5ZXI6IEhsc1BsYXllclR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9waGVuaXhXZWJQbGF5ZXI6IFdlYlBsYXllclR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYTogU2hha2FQbGF5ZXJUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnM7XG4gIHByaXZhdGUgc3RhdGljIF9wbGF5ZXI6IFNoYWthUGxheWVyIHwgV2ViUGxheWVyIHwgSGxzUGxheWVyO1xuXG4gIHN0YXRpYyBnZXQgaGxzUGxheWVyKCk6IEhsc1BsYXllclR5cGUge1xuICAgIHJldHVybiB0aGlzLl9obHNQbGF5ZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBoZW5peFdlYlBsYXllcigpOiBXZWJQbGF5ZXJUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fcGhlbml4V2ViUGxheWVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYSgpOiBTaGFrYVBsYXllclR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzdGFydCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHN0cmVhbUlkOiBzdHJpbmcsIG9mZmVyU2RwOiBzdHJpbmcsIG9wdGlvbnM6IENodW5rZWRTdHJlYW1pbmdPcHRpb25zLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiBGdW5jdGlvbik6IFByb21pc2U8SURpc3Bvc2FibGU+IHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGlmICh0aGlzLl9obHNQbGF5ZXIgfHwgdGhpcy5fc2hha2EgfHwgdGhpcy5fcGhlbml4V2ViUGxheWVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkZWQodmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICAgIH1cblxuICAgIGlmICghU0RLLndlYlBsYXllckxvYWRlciAmJiAhU0RLLnNoYWthUGxheWVyTG9hZGVyICYmICFTREsuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQtZmVhdHVyZSwgYWRkIHN0cmVhbSBwbGF5ZXInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8SURpc3Bvc2FibGU+KHJlc29sdmUgPT4ge1xuICAgICAgaWYgKFNESy5obHNKc0xvYWRlcikge1xuICAgICAgICB0aGlzLl9wZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgU0RLLmhsc0pzTG9hZGVyKChwbGF5ZXI6IEhsc1BsYXllclR5cGUpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLl9obHNQbGF5ZXIgPSBwbGF5ZXI7XG5cbiAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZykge1xuICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMubG9hZGVkKHZpZGVvRWxlbWVudCwgc3RyZWFtSWQsIG9mZmVyU2RwLCBoYW5kbGVTdHJlYW1GYWlsdXJlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFNESy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZyA9IHRydWU7XG4gICAgICAgIFNESy53ZWJQbGF5ZXJMb2FkZXIoKHBsYXllcjogV2ViUGxheWVyVHlwZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuX3BoZW5peFdlYlBsYXllciA9IHBsYXllcjtcblxuICAgICAgICAgIGlmICh0aGlzLl9wZW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9wZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5sb2FkZWQodmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIGhhbmRsZVN0cmVhbUZhaWx1cmUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoU0RLLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmcgPSB0cnVlO1xuICAgICAgICBTREsuc2hha2FQbGF5ZXJMb2FkZXIoKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5fc2hha2EgPSBwbGF5ZXI7XG5cbiAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZykge1xuICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMubG9hZGVkKHZpZGVvRWxlbWVudCwgc3RyZWFtSWQsIG9mZmVyU2RwLCBoYW5kbGVTdHJlYW1GYWlsdXJlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdGF0cygpOiBDaHVua2VkU3RyZWFtaW5nU3RhdGlzdGljcyB8IG51bGwge1xuICAgIGlmICh0aGlzLl9wbGF5ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wbGF5ZXIuZ2V0U3RhdHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIHBsYXkoUGxheWVyOiB0eXBlb2YgV2ViUGxheWVyIHwgdHlwZW9mIFNoYWthUGxheWVyIHwgdHlwZW9mIEhsc1BsYXllciwgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBzdHJlYW1JZDogc3RyaW5nLCBvZmZlclNkcDogc3RyaW5nLCBvcHRpb25zOiBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgaGFuZGxlU3RyZWFtRmFpbHVyZTogRnVuY3Rpb24pOiBQcm9taXNlPElEaXNwb3NhYmxlPiB7XG4gICAgY29uc3QgZGFzaE1hbmlmZXN0VXJsTWF0Y2ggPSBvZmZlclNkcC5tYXRjaCgvYT14LXBsYXlsaXN0OihbXlxcbl0qWy5dbXBkXFw/P1teXFxzXSopL20pO1xuICAgIGNvbnN0IGhsc01hbmlmZXN0VXJsTWF0Y2ggPSBvZmZlclNkcC5tYXRjaCgvYT14LXBsYXlsaXN0OihbXlxcbl0qWy5dbTN1OFxcPz9bXlxcc10qKS9tKTtcbiAgICBjb25zdCBtYW5pZmVzdFVybCA9IGRhc2hNYW5pZmVzdFVybE1hdGNoICYmIGRhc2hNYW5pZmVzdFVybE1hdGNoWzFdID8gZGFzaE1hbmlmZXN0VXJsTWF0Y2hbMV0gOiAnJztcbiAgICBjb25zdCBwbGF5bGlzdFVybCA9IGhsc01hbmlmZXN0VXJsTWF0Y2ggJiYgaGxzTWFuaWZlc3RVcmxNYXRjaFsxXSA/IGhsc01hbmlmZXN0VXJsTWF0Y2hbMV0gOiAnJztcblxuICAgIGlmIChwbGF5bGlzdFVybCkge1xuICAgICAgaWYgKCF0aGlzLl9waGVuaXhXZWJQbGF5ZXIgfHwgRmVhdHVyZUVuYWJsZW1lbnQuc2hvdWxkVXNlTmF0aXZlSGxzKSB7XG4gICAgICAgIHRoaXMuX3BsYXllciA9IG5ldyBQbGF5ZXIodmlkZW9FbGVtZW50LCAnaGxzJywgc3RyZWFtSWQsIHBsYXlsaXN0VXJsLCBvcHRpb25zLCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcblxuICAgICAgICB0aGlzLl9wbGF5ZXIuc3RhcnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcGxheWVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYW5pZmVzdFVybCkge1xuICAgICAgaWYgKCF0aGlzLl9obHNQbGF5ZXIgJiYgISh0aGlzLl9waGVuaXhXZWJQbGF5ZXIgJiYgRmVhdHVyZUVuYWJsZW1lbnQuc2hvdWxkVXNlTmF0aXZlSGxzKSkge1xuICAgICAgICB0aGlzLl9wbGF5ZXIgPSBuZXcgUGxheWVyKHZpZGVvRWxlbWVudCwgJ2Rhc2gnLCBzdHJlYW1JZCwgbWFuaWZlc3RVcmwsIG9wdGlvbnMsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuXG4gICAgICAgIHRoaXMuX3BsYXllci5zdGFydCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF5ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hbmlmZXN0VXJsIHx8IHBsYXlsaXN0VXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFske3N0cmVhbUlkfV0gQ2Fubm90IHBsYXkgWyR7cGxheWxpc3RVcmwgPyAnSExTJyA6ICdEQVNIJ31dIHN0cmVhbSB3aXRoIGluY2x1ZGVkIHBsYXllcmApO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gc3RyZWFtIHBsYXlsaXN0IGZvdW5kJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsb2FkZWQodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBzdHJlYW1JZDogc3RyaW5nLCBvZmZlclNkcDogc3RyaW5nLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiBGdW5jdGlvbik6IFByb21pc2U8SURpc3Bvc2FibGU+IHtcbiAgICBpZiAodGhpcy5faGxzUGxheWVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5KEhsc1BsYXllciwgdmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIHtcbiAgICAgICAgLi4udGhpcy5fb3B0aW9ucyxcbiAgICAgICAgcHJlZmVyTmF0aXZlOiBGZWF0dXJlRW5hYmxlbWVudC5zaG91bGRVc2VOYXRpdmVIbHNcbiAgICAgIH0sIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9waGVuaXhXZWJQbGF5ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXkoV2ViUGxheWVyLCB2aWRlb0VsZW1lbnQsIHN0cmVhbUlkLCBvZmZlclNkcCwge1xuICAgICAgICAuLi50aGlzLl9vcHRpb25zLFxuICAgICAgICBwcmVmZXJOYXRpdmU6IEZlYXR1cmVFbmFibGVtZW50LnNob3VsZFVzZU5hdGl2ZUhsc1xuICAgICAgfSwgaGFuZGxlU3RyZWFtRmFpbHVyZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheShTaGFrYVBsYXllciwgdmlkZW9FbGVtZW50LCBzdHJlYW1JZCwgb2ZmZXJTZHAsIHtcbiAgICAgIC4uLnRoaXMuX29wdGlvbnMsXG4gICAgICBwcmVmZXJOYXRpdmU6IEZlYXR1cmVFbmFibGVtZW50LnNob3VsZFVzZU5hdGl2ZUhsc1xuICAgIH0sIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ30gZnJvbSAnLi9DaHVua2VkU3RyZWFtaW5nJztcbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ09wdGlvbnMsIENodW5rZWRTdHJlYW1pbmdTdGF0aXN0aWNzfSBmcm9tICcuL1N0cmVhbVR5cGVzJztcbmltcG9ydCB7SUhsc1BsYXllclR5cGV9IGZyb20gJy4vSUhsc1BsYXllcic7XG5pbXBvcnQge05ldHdvcmtTdGF0ZXN9IGZyb20gJy4vTmV0d29ya1N0YXRlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhsc1BsYXllciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfa2luZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYW5pZmVzdFVSSTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucztcbiAgcHJpdmF0ZSBfcGxheWVyOiBJSGxzUGxheWVyVHlwZSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBraW5kOiBzdHJpbmcsIHN0cmVhbUlkOiBzdHJpbmcsIG1hbmlmZXN0VVJJOiBzdHJpbmcsIG9wdGlvbnM6IENodW5rZWRTdHJlYW1pbmdPcHRpb25zKSB7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50ID0gdmlkZW9FbGVtZW50O1xuICAgIHRoaXMuX2tpbmQgPSBraW5kO1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fbWFuaWZlc3RVUkkgPSBlbmNvZGVVUkkobWFuaWZlc3RVUkkpLnJlcGxhY2UoL1sjXS9nLCAnJTIzJyk7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcGxheWVyID0gbnVsbDtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmIChDaHVua2VkU3RyZWFtaW5nLmhsc1BsYXllcikge1xuICAgICAgaWYgKENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgICAgdGhpcy5fcGxheWVyID0gbmV3IENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyKHtcbiAgICAgICAgICBlbmFibGVXb3JrZXI6IHRydWUsXG4gICAgICAgICAgbWF4QnVmZmVyTGVuZ3RoOiAxLFxuICAgICAgICAgIGJhY2tCdWZmZXJMZW5ndGg6IDAsXG4gICAgICAgICAgbGl2ZVN5bmNEdXJhdGlvbjogNyxcbiAgICAgICAgICBsaXZlRHVyYXRpb25JbmZpbml0eTogdHJ1ZSxcbiAgICAgICAgICBsaXZlTWF4TGF0ZW5jeUR1cmF0aW9uOiBJbmZpbml0eSxcbiAgICAgICAgICBoaWdoQnVmZmVyV2F0Y2hkb2dQZXJpb2Q6IDFcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3BsYXllci5sb2FkU291cmNlKHRoaXMuX21hbmlmZXN0VVJJKTtcbiAgICAgICAgdGhpcy5fcGxheWVyLmF0dGFjaE1lZGlhKHRoaXMuX3ZpZGVvRWxlbWVudCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5jYW5QbGF5VHlwZSgnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwnKSkge1xuICAgICAgICB0aGlzLl92aWRlb0VsZW1lbnQuc3JjID0gdGhpcy5fbWFuaWZlc3RVUkk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyICYmIENodW5rZWRTdHJlYW1pbmcuaGxzUGxheWVyLmlzU3VwcG9ydGVkKCk7XG4gIH1cblxuICBnZXRTdGF0cygpOiBDaHVua2VkU3RyZWFtaW5nU3RhdGlzdGljcyB7XG4gICAgaWYgKCF0aGlzLl9wbGF5ZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiAwLjAsXG4gICAgICAgIGxhZzogMC4wLFxuICAgICAgICBuZXR3b3JrU3RhdGU6IE5ldHdvcmtTdGF0ZXMuTmV0d29ya05vU291cmNlLFxuICAgICAgICBkYXRhQnVmZmVyZWQ6IDAuMFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0aXN0aWNzID0ge1xuICAgICAgd2lkdGg6IHRoaXMuX3BsYXllci5tZWRpYS5vZmZzZXRXaWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5fcGxheWVyLm1lZGlhLm9mZnNldEhlaWdodCxcbiAgICAgIGN1cnJlbnRUaW1lOiB0aGlzLl9wbGF5ZXIubWVkaWEuY3VycmVudFRpbWUsXG4gICAgICBsYWc6IDAuMCxcbiAgICAgIG5ldHdvcmtTdGF0ZTogTmV0d29ya1N0YXRlcy5OZXR3b3JrSWRsZSxcbiAgICAgIGRhdGFCdWZmZXJlZDogMC4wXG4gICAgfTtcblxuICAgIGlmICh0aGlzLl92aWRlb0VsZW1lbnQuYnVmZmVyZWQgJiYgdGhpcy5fdmlkZW9FbGVtZW50LmJ1ZmZlcmVkLmxlbmd0aCkge1xuICAgICAgc3RhdGlzdGljcy5kYXRhQnVmZmVyZWQgPSB0aGlzLl92aWRlb0VsZW1lbnQuYnVmZmVyZWQuZW5kKDApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wbGF5ZXIuc3RyZWFtQ29udHJvbGxlci5zdGF0ZSA9PT0gJ0lETEUnKSB7XG4gICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0lkbGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wbGF5ZXIuc3RyZWFtQ29udHJvbGxlci5zdGF0ZSA9PT0gJ0VSUk9SJyB8fCB0aGlzLl9wbGF5ZXIuc3RyZWFtQ29udHJvbGxlci5zdGF0ZSA9PT0gJ0VOREVEJykge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtOb1NvdXJjZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3BsYXllci5zdHJlYW1Db250cm9sbGVyLnN0YXRlLmluY2x1ZGVzKCdMT0FESU5HJykgfHwgdGhpcy5fcGxheWVyLnN0cmVhbUNvbnRyb2xsZXIuc3RhdGUuaW5jbHVkZXMoJ1dBSVRJTkcnKSkge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtMb2FkaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0VtcHR5O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gdGhpcy5fdmlkZW9FbGVtZW50WydjdXJyZW50VGltZSddIHx8IDA7XG4gICAgY29uc3QgdHJ1ZUN1cnJlbnRUaW1lID0gKERhdGUubm93KCkgLSB0aGlzLl9vcHRpb25zLm9yaWdpblN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgc3RhdGlzdGljcy5sYWcgPSBNYXRoLm1heCgwLjAsIChjdXJyZW50VGltZSArICh0aGlzLl9vcHRpb25zLmxhZyAvIDEwMDApKSAtIHRydWVDdXJyZW50VGltZSk7XG5cbiAgICByZXR1cm4gc3RhdGlzdGljcztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3BsYXllciAmJiB0aGlzLl9wbGF5ZXIuZGVzdHJveSkge1xuICAgICAgdGhpcy5fcGxheWVyLmRlc3Ryb3koKTtcblxuICAgICAgdGhpcy5fcGxheWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGVudW0gTmV0d29ya1N0YXRlcyB7XG4gIE5ldHdvcmtFbXB0eSxcbiAgTmV0d29ya0lkbGUsXG4gIE5ldHdvcmtMb2FkaW5nLFxuICBOZXR3b3JrTm9Tb3VyY2Vcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uLy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi8uLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4uLy4uL3J0Yy9TZHBQYXJzZXInO1xuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLCB7XG4gIGRlZmF1bHRUcmFja0tpbmRzLFxuICBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNcbn0gZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUnRjQ29ubmVjdGlvbk1vbml0b3IgZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBFbmRQb2ludCwge1N1YnNjcmliZU9wdGlvbnMsIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLCB7RnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0fSBmcm9tICcuLi9mcmFtZVRpbWluZy9GcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcic7XG5pbXBvcnQgSW5zZXJ0YWJsZVN0cmVhbXMgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMnO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIsIHtFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlcic7XG5pbXBvcnQge0F1ZGlvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBWaWRlb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWNNYXBwaW5nJztcbmltcG9ydCBBdWRpb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nJztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0ID0gMzAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtIGltcGxlbWVudHMgSVN0cmVhbSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVN0cmVhbScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcblxuICBjb25zdHJ1Y3RvcihjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IGNoYW5uZWxDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMpO1xuICB9XG5cbiAgc3RhcnQodXJpOiBVUkwsIHRva2VuOiBzdHJpbmcsIGxpc3Rlbk9uU3RyZWFtU2V0dXA6IFN0cmVhbVNldHVwTGlzdGVuZXIsIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50OiBGdW5jdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWVcbiAgICAgIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPyBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRW5hYmxlZCA6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZDtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3JlY3Zvbmx5JywgZGVmYXVsdFRyYWNrS2luZHMsIHJlcXVpcmVzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlT3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICAgICAgc3Vic2NyaWJlT3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBudWxsLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnN1YnNjcmliZSh0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlLCBzdWJzY3JpYmVPcHRpb25zKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IHtzdGF0dXN9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZXhpc3RzLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9FeGlzdHMoc3RhdHVzKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IHVuZGVmaW5lZCA7XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgJ1slc10gU3Vic2NyaWJlIGZhaWxlZCB3aXRoIHN0YXR1cyBbJXNdJyxcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSwgbGFnfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gbGFnO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24gYXMgUlRDQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ6IHVuZGVmaW5lZCB8IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0b3Agbm9ybWFsbHkgdGhlIHBlZXIgY29ubmVjdGlvbiBpcyB1bnJlZ2lzdGVyZWQgZmlyc3QuXG4gICAgICAgICAgICAgICAgLy8gVGh1cyBhbnl0aW1lIHdlIHNlZSBhIGNsb3NlZCBwZWVyIGNvbm5lY3Rpb24gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaXQgaXMgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICBpZiAoR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW1Qcm9taXNlID0gbmV3IFByb21pc2U8TWVkaWFTdHJlYW0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5vblRyYWNrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSksIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpKSk7XG5cbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB0cmFja0xpc3RlbmVyID0gKGU6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbJ3RyYWNrJyB8ICdhZGRzdHJlYW0nXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCdzdHJlYW1zJyBpbiBlKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1N0cmVhbSBzZXR1cCB0aW1lZCBvdXQnKSk7XG4gICAgICAgICAgICAgIH0sIGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQpO1xuXG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlIGFzIEVuZFBvaW50O1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICByZXR1cm4gbWVkaWFTdHJlYW1Qcm9taXNlO1xuICAgICAgICAgICAgfSkudGhlbihtZWRpYVN0cmVhbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyAmJiBwZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIocGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2suY29kZWMgPSBWaWRlb0NvZGVjTWFwcGluZy5jb252ZXJ0VmlkZW9Db2RlY1R5cGVUb1ZpZGVvQ29kZWMocGFyc2VkUmVtb3RlRGVzY3JpcHRpb24udmlkZW9Db2RlYyBhcyBWaWRlb0NvZGVjVHlwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLmNvZGVjID0gQXVkaW9Db2RlY01hcHBpbmcuY29udmVydEF1ZGlvQ29kZWNUeXBlVG9BdWRpb0NvZGVjKHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmF1ZGlvQ29kZWMgYXMgQXVkaW9Db2RlY1R5cGUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJzID0gcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogVGhpcyBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgdmlkZW8gTWVkaWFTdHJlYW1UcmFjayBhbmQgb25lIGF1ZGlvIE1lZGlhU3RyZWFtVHJhY2tcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdO1xuICAgICAgICAgICAgICAgIC8vIEJvdGggYXJlIGV4cGVjdGVkIHRvIGJlIHByZXNlbnQsIGJ1dCB0aGUgdHlwZSBzeXN0ZW0gbWFrZXMgdGhlbSBudWxsYWJsZSwgc28gd2UgaGF2ZSB0byBhc3NlcnQgdGhlIHByZXNlbmNlXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gdmlkZW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSB2aWRlb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFja1JlY2VpdmVyID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLnJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlciA9PiByZWNlaXZlci50cmFjayA9PT0gYXVkaW9UcmFjaylbMF07XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2subWlkID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnNcbiAgICAgICAgICAgICAgICAgID8gcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCkuZmlsdGVyKHRyYW5zY2VpdmVyID0+IHRyYW5zY2VpdmVyLnJlY2VpdmVyID09PSBhdWRpb1RyYWNrUmVjZWl2ZXIpWzBdPy5taWRcbiAgICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChJbnNlcnRhYmxlU3RyZWFtcy5jcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlIHx8IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbUlkOiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgY29kZWM6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5jb2RlYyxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50OiB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkU3ViamVjdDogdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmlkZW9UcmFja1JlY2VpdmVyLFxuICAgICAgICAgICAgICAgICAgICBtaWQ6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5taWQhLFxuICAgICAgICAgICAgICAgICAgICB0cmFja0lkOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWVkaWFTdHJlYW1UcmFjay5pZCEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXI6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1NZXNzYWdlUm91dGVyISxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXNcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIoZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0gPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQ6IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb1RyYWNrOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2ssXG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2s6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjayxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rISxcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rIVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyKGVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSW5zZXJ0YWJsZVN0cmVhbXMuY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7dHJhbnNmb3JtZWRTdHJlYW0sIGRpc3Bvc2FibGVzfSA9IEluc2VydGFibGVTdHJlYW1zLmNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKGRpc3Bvc2FibGVzKTtcbiAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHRyYW5zZm9ybWVkU3RyZWFtO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3IgPSBuZXcgUnRjQ29ubmVjdGlvbk1vbml0b3IocGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtLCB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiA9IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRpc3RpY3MpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmICF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLmF1ZGlvO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGF1ZGlvVHJhY2tGYWlsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBsZXQgdmlkZW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MuYXVkaW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvVHJhY2tGYWlsZWQgJiYgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gVmlkZW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLk9mZmxpbmU7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCB8fCBhdWRpb1RyYWNrRmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICBydGNDb25uZWN0aW9uTW9uaXRvci5kaXNwb3NlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHRyYWNrIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG5cbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLk9mZmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPyBDaGFubmVsU3RhdGUuUGxheWluZyA6IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBzdGF0ZSByZXN0b3JlZCB0byBbJXNdIGFmdGVyIHJlY29ubmVjdGluZycsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uKTtcblxuICAgICAgICAgICAgICBpZiAoIVNESy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXBwbHlSdGNDb25maWd1cmF0aW9uKFxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGwsXG4gICAgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgaWYgKCFvcHRpb25hbFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uID0gUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHJ1bmNhdGVJY2VTZXJ2ZXJzKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm4gU0RLLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSdGNDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4ub3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAuLi5ydGNDb25maWd1cmF0aW9uXG4gICAgfTtcblxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihuZXdSdGNDb25maWd1cmF0aW9uKTtcblxuICAgIHJldHVybiBvcHRpb25hbFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nfSBmcm9tICcuL0NodW5rZWRTdHJlYW1pbmcnO1xuaW1wb3J0IHtDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3N9IGZyb20gJy4vU3RyZWFtVHlwZXMnO1xuaW1wb3J0IHtJU2hha2FQbGF5ZXIsIFNoYWthT3B0aW9uc30gZnJvbSAnLi9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtOZXR3b3JrU3RhdGVzfSBmcm9tICcuL05ldHdvcmtTdGF0ZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGFrYVBsYXllciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTaGFrYVBsYXllcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tpbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFuaWZlc3RVUkk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6IEZ1bmN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vbml0b3JlZFN0YXRpc3RpY3M6IHtcbiAgICBlc3RpbWF0ZWRCYW5kd2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBwbGF5VGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB9O1xuICBwcml2YXRlIF9wbGF5ZXI6IElTaGFrYVBsYXllciB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCBraW5kOiBzdHJpbmcsIHN0cmVhbUlkOiBzdHJpbmcsIG1hbmlmZXN0VVJJOiBzdHJpbmcsIG9wdGlvbnM6IENodW5rZWRTdHJlYW1pbmdPcHRpb25zLCBoYW5kbGVTdHJlYW1GYWlsdXJlOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcbiAgICB0aGlzLl9raW5kID0ga2luZDtcbiAgICB0aGlzLl9zdHJlYW1JZCA9IHN0cmVhbUlkO1xuICAgIHRoaXMuX21hbmlmZXN0VVJJID0gZW5jb2RlVVJJKG1hbmlmZXN0VVJJKS5yZXBsYWNlKC9bI10vZywgJyUyMycpO1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcyA9IHtcbiAgICAgIGVzdGltYXRlZEJhbmR3aWR0aDogMCxcbiAgICAgIHBsYXlUaW1lOiAwXG4gICAgfTtcbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuICB9XG5cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgaWYgKENodW5rZWRTdHJlYW1pbmcuc2hha2EpIHtcbiAgICAgIGNvbnN0IHBsYXllck9wdGlvbnM6IFNoYWthT3B0aW9ucyA9IHtcbiAgICAgICAgYWJyOiB7ZGVmYXVsdEJhbmR3aWR0aEVzdGltYXRlOiAyMDAwMDAwfSxcbiAgICAgICAgbWFuaWZlc3Q6IHtyZXRyeVBhcmFtZXRlcnM6IHt0aW1lb3V0OiAxMDAwMH19LFxuICAgICAgICBzdHJlYW1pbmc6IHtcbiAgICAgICAgICBsaXZlU3luY1BhbmljVGhyZXNob2xkOiAxLFxuICAgICAgICAgIGJ1ZmZlcmluZ0dvYWw6IDYwLFxuICAgICAgICAgIGJ1ZmZlckJlaGluZDogMzAsXG4gICAgICAgICAgcmV0cnlQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAxMCxcbiAgICAgICAgICAgIGJhY2tvZmZGYWN0b3I6IDEuMVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdGhpcy5fcGxheWVyID0gbmV3IENodW5rZWRTdHJlYW1pbmcuc2hha2EuUGxheWVyKHRoaXMuX3ZpZGVvRWxlbWVudCk7XG4gICAgICB0aGlzLmxvYWRQbGF5ZXIocGxheWVyT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0cygpOiBDaHVua2VkU3RyZWFtaW5nU3RhdGlzdGljcyB7XG4gICAgaWYgKCF0aGlzLl9wbGF5ZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgICAgICBsYWc6IDAsXG4gICAgICAgIG5ldHdvcmtTdGF0ZTogTmV0d29ya1N0YXRlcy5OZXR3b3JrTm9Tb3VyY2UsXG4gICAgICAgIGRhdGFCdWZmZXJlZDogMC4wXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRpc3RpY3MgPSB7XG4gICAgICAuLi50aGlzLl9wbGF5ZXIuZ2V0U3RhdHMoKSxcbiAgICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgICAgbGFnOiAwXG4gICAgfTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IHRoaXMuX3ZpZGVvRWxlbWVudFsnY3VycmVudFRpbWUnXSB8fCAwO1xuICAgIGNvbnN0IHRydWVDdXJyZW50VGltZSA9IChEYXRlLm5vdygpIC0gdGhpcy5fb3B0aW9ucy5vcmlnaW5TdGFydFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsYWcgPSBNYXRoLm1heCgwLjAsIHRydWVDdXJyZW50VGltZSAtIGN1cnJlbnRUaW1lKTtcblxuICAgIGlmICh0aGlzLl92aWRlb0VsZW1lbnQpIHtcbiAgICAgIHN0YXRpc3RpY3MuY3VycmVudFRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgIHN0YXRpc3RpY3MubGFnID0gbGFnO1xuXG4gICAgICBpZiAodGhpcy5fdmlkZW9FbGVtZW50LmJ1ZmZlcmVkICYmIHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgc3RhdGlzdGljcy5kYXRhQnVmZmVyZWQgPSB0aGlzLl92aWRlb0VsZW1lbnQuYnVmZmVyZWQuZW5kKDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGF0aXN0aWNzLmVzdGltYXRlZEJhbmR3aWR0aCkge1xuICAgICAgaWYgKHN0YXRpc3RpY3MuZXN0aW1hdGVkQmFuZHdpZHRoICYmIHN0YXRpc3RpY3MuZXN0aW1hdGVkQmFuZHdpZHRoID4gMCAmJiAodGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcy5lc3RpbWF0ZWRCYW5kd2lkdGggJiYgdGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcy5lc3RpbWF0ZWRCYW5kd2lkdGggPCBzdGF0aXN0aWNzLmVzdGltYXRlZEJhbmR3aWR0aCkpIHtcbiAgICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtMb2FkaW5nO1xuICAgICAgfSBlbHNlIGlmIChzdGF0aXN0aWNzLnBsYXlUaW1lICYmIHN0YXRpc3RpY3MucGxheVRpbWUgPiAwICYmICh0aGlzLl9tb25pdG9yZWRTdGF0aXN0aWNzLnBsYXlUaW1lICYmIHRoaXMuX21vbml0b3JlZFN0YXRpc3RpY3MucGxheVRpbWUgPCBzdGF0aXN0aWNzLnBsYXlUaW1lKSkge1xuICAgICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0lkbGU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRpc3RpY3MudmlkZW8pIHtcbiAgICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtFbXB0eTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRpc3RpY3MubmV0d29ya1N0YXRlID0gTmV0d29ya1N0YXRlcy5OZXR3b3JrTm9Tb3VyY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbW9uaXRvcmVkU3RhdGlzdGljcy5lc3RpbWF0ZWRCYW5kd2lkdGggPSBzdGF0aXN0aWNzLmVzdGltYXRlZEJhbmR3aWR0aDtcbiAgICB0aGlzLl9tb25pdG9yZWRTdGF0aXN0aWNzLnBsYXlUaW1lID0gc3RhdGlzdGljcy5wbGF5VGltZTtcblxuICAgIHJldHVybiBzdGF0aXN0aWNzO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fcGxheWVyKSB7XG4gICAgICB0aGlzLl9wbGF5ZXIudW5sb2FkKCk7XG4gICAgICB0aGlzLl9wbGF5ZXIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3BsYXllciA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQbGF5ZXIocGxheWVyQ29uZmlnOiBTaGFrYU9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9wbGF5ZXI/LmNvbmZpZ3VyZShwbGF5ZXJDb25maWcpO1xuXG4gICAgY29uc3QgZXJyb3JIYW5kbGVyID0gKCkgPT4gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpO1xuXG4gICAgdGhpcy5fcGxheWVyPy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9ySGFuZGxlcik7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdGhpcy5fcGxheWVyPy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGVycm9ySGFuZGxlcikpKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wbGF5ZXI/LmxvYWQodGhpcy5fbWFuaWZlc3RVUkkpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gREFTSCBsaXZlIHN0cmVhbSBoYXMgYmVlbiBsb2FkZWQnLCB0aGlzLl9zdHJlYW1JZCk7XG5cbiAgICAgIGlmICh0aGlzLl92aWRlb0VsZW1lbnQucGxheSkge1xuICAgICAgICB0aGlzLl92aWRlb0VsZW1lbnQucGxheSgpO1xuICAgICAgfVxuICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEVycm9yIHdoaWxlIGxvYWRpbmcgREFTSCBsaXZlIHN0cmVhbSBbJXNdJywgdGhpcy5fc3RyZWFtSWQsIGUuY29kZSwgZSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBDaHVua2VkU3RyZWFtIGZyb20gJy4vQ2h1bmtlZFN0cmVhbSc7XG5pbXBvcnQgUmVhbFRpbWVTdHJlYW0gZnJvbSAnLi9SZWFsVGltZVN0cmVhbSc7XG5pbXBvcnQgQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSBmcm9tICcuL0NodW5rZWRTdHJlYW1QbGF5YmFja01vZGUnO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1GYWN0b3J5IHtcbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBmcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pOiBJU3RyZWFtIHtcbiAgICBjb25zdCB0b2tlbkNhcGFiaWxpdGllcyA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLmNhcGFiaWxpdGllcztcbiAgICBjb25zdCBoYXNTdHJlYW1pbmcgPSB0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnc3RyZWFtaW5nJyk7XG4gICAgY29uc3QgaGFzT25EZW1hbmQgPSB0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnb24tZGVtYW5kJyk7XG5cbiAgICBpZiAoaGFzU3RyZWFtaW5nIHx8IGhhc09uRGVtYW5kKSB7XG4gICAgICByZXR1cm4gbmV3IENodW5rZWRTdHJlYW0oY2hhbm5lbENvbnRleHQsICFoYXNPbkRlbWFuZCA/IENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUuTGl2ZSA6IENodW5rZWRTdHJlYW1QbGF5YmFja01vZGUuT25kRGVtYW5kLCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtKGNoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyZWFtRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ30gZnJvbSAnLi9DaHVua2VkU3RyZWFtaW5nJztcbmltcG9ydCB7Q2h1bmtlZFN0cmVhbWluZ09wdGlvbnMsIENodW5rZWRTdHJlYW1pbmdTdGF0aXN0aWNzfSBmcm9tICcuL1N0cmVhbVR5cGVzJztcbmltcG9ydCB7SVdlYlBsYXllcn0gZnJvbSAnLi9JV2ViUGxheWVyJztcbmltcG9ydCB7TmV0d29ya1N0YXRlc30gZnJvbSAnLi9OZXR3b3JrU3RhdGVzJztcblxuY29uc3QgYmFuZHdpZHRoVG9TdGFydEF0ID0gMzAwMDAwMDsgLy8gQ29ycmVzcG9uZHMgdG8gNzIwcCBpbiBtb3N0IHNldHVwc1xuY29uc3QgbWluVGltZUJlZm9yZU5leHRSZWxvYWQgPSAxNTAwMDtcblxudHlwZSBQbGF5ZXJPcHRpb25zID0ge1xuICBwcmVmZXJOYXRpdmU/OiBib29sZWFuO1xuICBvcmlnaW5TdGFydFRpbWU6IG51bWJlcjtcbiAgbGFnOiBudW1iZXI7XG4gIGJhbmR3aWR0aFRvU3RhcnRBdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2ViUGxheWVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1dlYlBsYXllcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tpbmQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFuaWZlc3RVUkk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogQ2h1bmtlZFN0cmVhbWluZ09wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9wbGF5ZXI6IElXZWJQbGF5ZXIgfCBudWxsO1xuICBwcml2YXRlIF9sYXN0UmVsb2FkVGltZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwga2luZDogc3RyaW5nLCBzdHJlYW1JZDogc3RyaW5nLCBtYW5pZmVzdFVSSTogc3RyaW5nLCBvcHRpb25zOiBDaHVua2VkU3RyZWFtaW5nT3B0aW9ucywgaGFuZGxlU3RyZWFtRmFpbHVyZTogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG4gICAgdGhpcy5fa2luZCA9IGtpbmQ7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9tYW5pZmVzdFVSSSA9IGVuY29kZVVSSShtYW5pZmVzdFVSSSkucmVwbGFjZSgvWyNdL2csICclMjMnKTtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuICAgIHRoaXMuX2xhc3RSZWxvYWRUaW1lID0gMDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmIChDaHVua2VkU3RyZWFtaW5nLnBoZW5peFdlYlBsYXllcikge1xuICAgICAgY29uc3QgcGxheWVyT3B0aW9uczogUGxheWVyT3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGhpcy5fb3B0aW9ucyxcbiAgICAgICAgYmFuZHdpZHRoVG9TdGFydEF0XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9wbGF5ZXIgPSBuZXcgQ2h1bmtlZFN0cmVhbWluZy5waGVuaXhXZWJQbGF5ZXIuV2ViUGxheWVyKHRoaXMuX2xvZ2dlciwgdGhpcy5fdmlkZW9FbGVtZW50LCBwbGF5ZXJPcHRpb25zKTtcbiAgICAgIHRoaXMuX3BsYXllcj8uc3RhcnQodGhpcy5fbWFuaWZlc3RVUkkpO1xuXG4gICAgICB0aGlzLl9wbGF5ZXI/LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JPYmplY3QgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYW5SZWxvYWQoKSAmJiBlcnJvck9iamVjdCAmJiAoZXJyb3JPYmplY3QuY29kZSA9PT0gMyB8fCBlcnJvck9iamVjdC5zZXZlcml0eSA9PT0gQ2h1bmtlZFN0cmVhbWluZy5waGVuaXhXZWJQbGF5ZXIuZXJyb3JzLnNldmVyaXR5LlJFQ09WRVJBQkxFKSkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdSZWxvYWRpbmcgdW5oZWFsdGh5IHN0cmVhbSBhZnRlciBlcnJvciBldmVudCBbJWpdJywgZXJyb3JPYmplY3QpO1xuICAgICAgICAgIHRoaXMucmVsb2FkSWZBYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCByZWxvYWQgd2l0aCBlcnJvciBbJWpdJywgZXJyb3JPYmplY3QpO1xuXG4gICAgICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIENodW5rZWRTdHJlYW1pbmcucGhlbml4V2ViUGxheWVyICYmIENodW5rZWRTdHJlYW1pbmcucGhlbml4V2ViUGxheWVyLmlzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0U3RhdHMoKTogQ2h1bmtlZFN0cmVhbWluZ1N0YXRpc3RpY3Mge1xuICAgIGlmICghdGhpcy5fcGxheWVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICBjdXJyZW50VGltZTogMC4wLFxuICAgICAgICBsYWc6IDAuMCxcbiAgICAgICAgbmV0d29ya1N0YXRlOiBOZXR3b3JrU3RhdGVzLk5ldHdvcmtOb1NvdXJjZSxcbiAgICAgICAgZGF0YUJ1ZmZlcmVkOiAwLjBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGlzdGljcyA9IHRoaXMuX3BsYXllci5nZXRTdGF0cygpO1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gc3RhdGlzdGljcy5jdXJyZW50VGltZSB8fCB0aGlzLl92aWRlb0VsZW1lbnRbJ2N1cnJlbnRUaW1lJ107XG4gICAgY29uc3QgdHJ1ZUN1cnJlbnRUaW1lID0gKERhdGUubm93KCkgLSB0aGlzLl9vcHRpb25zLm9yaWdpblN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZD8ubGVuZ3RoKSB7XG4gICAgICBzdGF0aXN0aWNzLmRhdGFCdWZmZXJlZCA9IHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZC5lbmQoMCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRpc3RpY3MuaXNOYXRpdmUgJiYgc3RhdGlzdGljcy5kZWxpdmVyeVR5cGUgPT09ICdIbHMnKSB7XG4gICAgICBzdGF0aXN0aWNzLmN1cnJlbnRUaW1lID0gY3VycmVudFRpbWUgLSBzdGF0aXN0aWNzLmxhZztcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRpc3RpY3MuY3VycmVudFRpbWUpIHtcbiAgICAgIHN0YXRpc3RpY3MuY3VycmVudFRpbWUgPSBjdXJyZW50VGltZTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRpc3RpY3MuaXNOYXRpdmUpIHtcbiAgICAgIHN0YXRpc3RpY3MubGFnID0gTWF0aC5tYXgoMC4wLCB0cnVlQ3VycmVudFRpbWUgLSBjdXJyZW50VGltZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5idWZmZXJlZD8ubGVuZ3RoKSB7XG4gICAgICBzdGF0aXN0aWNzLm5ldHdvcmtTdGF0ZSA9IE5ldHdvcmtTdGF0ZXMuTmV0d29ya0xvYWRpbmc7XG4gICAgfSBlbHNlIGlmIChzdGF0aXN0aWNzLmN1cnJlbnRUaW1lID4gMCkge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtJZGxlO1xuICAgIH0gZWxzZSBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtFbXB0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGlzdGljcy5uZXR3b3JrU3RhdGUgPSBOZXR3b3JrU3RhdGVzLk5ldHdvcmtOb1NvdXJjZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGlzdGljcztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3BsYXllcikge1xuICAgICAgdGhpcy5fcGxheWVyLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZWxvYWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFzRWxhcHNlZE1pblRpbWVTaW5jZUxhc3RSZWxvYWQgPSAhdGhpcy5fbGFzdFJlbG9hZFRpbWUgfHwgRGF0ZS5ub3coKSAtIHRoaXMuX2xhc3RSZWxvYWRUaW1lID4gbWluVGltZUJlZm9yZU5leHRSZWxvYWQ7XG5cbiAgICByZXR1cm4gISF0aGlzLl92aWRlb0VsZW1lbnQgJiYgISF0aGlzLl9wbGF5ZXIgJiYgdGhpcy5fdmlkZW9FbGVtZW50LmJ1ZmZlcmVkLmxlbmd0aCAhPT0gMCAmJiBoYXNFbGFwc2VkTWluVGltZVNpbmNlTGFzdFJlbG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVsb2FkSWZBYmxlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5SZWxvYWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFJlbG9hZGluZyB1bmhlYWx0aHkgc3RyZWFtIHRoYXQgd2FzIGFjdGl2ZSBmb3IgYXQgbGVhc3QgWyVzXSBzZWNvbmRzJywgdGhpcy5fc3RyZWFtSWQsIG1pblRpbWVCZWZvcmVOZXh0UmVsb2FkIC8gMTAwMCk7XG5cbiAgICB0aGlzLl9sYXN0UmVsb2FkVGltZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxvYWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3BsYXllcikge1xuICAgICAgdGhpcy5fcGxheWVyLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wbGF5ZXIgPSBudWxsO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUIGV4dGVuZHMgUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbms8VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXInO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4vd29ya2VyL01lc3NhZ2VSb3V0ZXInO1xuXG50eXBlIE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gJ3ZpZGVvJyB8ICdhdWRpbyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc2VydGFibGVTdHJlYW1zIHtcbiAgc3RhdGljIGNyZWF0ZUVuY29kZWRTdHJlYW1QaXBlbGluZShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTogRGlzcG9zYWJsZUxpc3Qge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBVc2luZyBXZWJwYWNrJ3Mgd29ya2VyIGxvYWRlciB0byBpbmxpbmUgd29ya2VyXG4gICAgICBjb25zdCB3b3JrZXIgPSBjb250ZXh0LnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyID0gbmV3IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKCk7XG5cbiAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB3b3JrZXIudGVybWluYXRlKCkpKTtcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgPSBuZXcgVHJhbnNmb3JtTWVzc2FnZVJvdXRlcih3b3JrZXIpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3JlY2VpdmVyOiB2aWRlb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IHZpZGVvVHJhY2s7XG5cbiAgICBpZiAodmlkZW9UcmFja1JlY2VpdmVyICYmIHZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKHZpZGVvVHJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHtyZWNlaXZlcjogYXVkaW9UcmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFja30gPSBhdWRpb1RyYWNrO1xuXG4gICAgaWYgKGF1ZGlvVHJhY2tSZWNlaXZlciAmJiBhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayhhdWRpb1RyYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcG9zYWJsZXM7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIGNvbnN0IGFkZFRyYWNrVHJhbnNmb3JtcyA9ICh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgaWYgKHRyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWUgb2YgdHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcykge1xuICAgICAgICAgICAgdHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlcXVpcmVkIGZvciBzYWZhcmkgdG8gcHJvcGVybHkgd29yayB3aGVuIG9ubHkgdmlkZW8gdHJhbnNmb3JtYXRpb24gaXMgYWRkZWQgKGkuZS4gRnJhbWVUaW1pbmdJbmZvcm1hdGlvbilcbiAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm0sXG4gICAgICAgICAgICBkYXRhOiAncGFzcy10aHJvdWdoJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGFkZFRyYWNrVHJhbnNmb3Jtcyh2aWRlb1RyYWNrKTtcbiAgICBhZGRUcmFja1RyYW5zZm9ybXMoYXVkaW9UcmFjayk7XG5cbiAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0gPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3ggLi4uXG4gICAgICBjb25zdCBjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayA9IGFzeW5jKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIHRyYWNrUmVjZWl2ZXIudHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLCB7bmFtZTogYCR7dHJhY2tNZWRpYVN0cmVhbVRyYWNrLmtpbmR9LXRyYW5zZm9ybS1waXBlbGluZWB9KTtcblxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5QaXBlbGluZUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHtvbmNlOiB0cnVlfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dmlkZW9UcmFjaywgYXVkaW9UcmFja30gPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2sodmlkZW9UcmFjayksIGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrKGF1ZGlvVHJhY2spXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zID0gYXN5bmMoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayA9IChjb250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgICAgY29uc3Qge3JlY2VpdmVyOiB0cmFja1JlY2VpdmVyLCBtZWRpYVN0cmVhbVRyYWNrOiB0cmFja01lZGlhU3RyZWFtVHJhY2ssIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgaWYgKHRyYWNrUmVjZWl2ZXIgJiYgdHJhY2tNZWRpYVN0cmVhbVRyYWNrICYmIHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSAtIGNyZWF0ZUVuY29kZWRTdHJlYW1zIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBpbiBsaWIuZG9tLmQudHNcbiAgICAgICAgICBjb25zdCBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zID0gdHJhY2tSZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcblxuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSxcbiAgICAgICAgICAgICAgICAgIHNpbms6IGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt0cmFuc2ZlcjogW2VuY29kZWRSZWNlaXZlclN0cmVhbXMucmVhZGFibGUsIGVuY29kZWRSZWNlaXZlclN0cmVhbXMud3JpdGFibGVdfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgICBjb25zdCBhY3Rpb25zOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgICAgaWYgKHZpZGVvVHJhY2sucmVjZWl2ZXIgJiYgdmlkZW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayh2aWRlb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdWRpb1RyYWNrLnJlY2VpdmVyICYmIGF1ZGlvVHJhY2sudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zRm9yVHJhY2soYXVkaW9UcmFjaykpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3Rpb25zKTtcbiAgICB9O1xuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSB7XG4gICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3guLi5cbiAgICAgIGF3YWl0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybShzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENocm9tZSwgQ2hyb21pdW0uLi5cbiAgICBhd2FpdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtcyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBjb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oXG4gICAgc3RyZWFtOiBNZWRpYVN0cmVhbSxcbiAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQsXG4gICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWRcbiAgKToge3RyYW5zZm9ybWVkU3RyZWFtOiBNZWRpYVN0cmVhbTsgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0fSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGNvbnN0IGtpbmQ6IE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gdHJhY2sua2luZCBhcyBNZWRpYVN0cmVhbVRyYWNrS2luZDtcblxuICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgJ3ZpZGVvJzoge1xuICAgICAgICAgIGlmICh2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IFRyYW5zZm9ybWVyVHJhbnNmb3JtQ2FsbGJhY2s8VmlkZW9GcmFtZSwgVmlkZW9GcmFtZT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtVmlkZW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogdmlkZW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IHZpZGVvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYXVkaW8nOiB7XG4gICAgICAgICAgaWYgKGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxBdWRpb0RhdGEsIEF1ZGlvRGF0YT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtQXVkaW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogYXVkaW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IGF1ZGlvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKS5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICAgICAgICBjb25zdCBhdWRpb1B1bXBlciA9IG5ldyBBdWRpbygpO1xuXG4gICAgICAgICAgICBtZWRpYVN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoa2luZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtZWRTdHJlYW0sXG4gICAgICBkaXNwb3NhYmxlc1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc2VydGFibGVTdHJlYW1zIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi8uLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7QXVkaW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5pbXBvcnQgc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIGZyb20gJy4vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNlBGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2UEZyYW1lJztcblxuZXhwb3J0IGNvbnN0IFNraXBGcmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgdHlwZSBTdXJyb2dhdGVGcmFtZVR5cGUgPSBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB8IHR5cGVvZiBTa2lwRnJhbWU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNTYWZhcmkgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNBbmRyb2lkO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2luZ2xlWmVyb0J5dGUgPSBuZXcgVWludDhBcnJheShbMHgwMF0pO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjID0ge09QVVM6IG5ldyBVaW50OEFycmF5KFsweDY4LCAweDA3LCAweGQ5LCAweGFiLCAweGJjLCAweDc5LCAweDg3LCAweGFiLCAweDhlLCAweDRhLCAweDE0LCAweGYzLCAweGE3LCAweDFjLCAweGYyLCAweDlhLCAweDdhLCAweDQ1LCAweGE3LCAweDJkLCAweDQ0LCAweDI1LCAweDc0LCAweDRjLCAweGFkLCAweDE2LCAweGIzLCAweDBlLCAweDUxLCAweDU3LCAweGVhLCAweGU3LCAweGFkLCAweDJhLCAweDM4LCAweGNlLCAweDMzXSl9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2OCwgMHhlYiwgMHhlMywgMHhjNCwgMHg0OCwgMHg0NCwgLy8gUGljdHVyZSBwYXJhbXRlciBzZXRcbiAgICAgIC8qICovIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODIsIDB4MDAsIDB4M2YsIDB4NzAsIDB4MjMsIDB4ODYsIDB4ZTYsIDB4ZDEsIDB4ODAsIDB4MDksIDB4YWYsIDB4MGEsIDB4NDEsIDB4NjYsIDB4NmIsIDB4NTQsIDB4NDYsIDB4ZmIsIDB4NzEsIDB4ZDksIDB4N2YsIDB4ZmYsIDB4ZmYsIDB4ZjldKSwgLy8gU2xpY2UgbGF5ZXI6IGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHhiMCwgMHgwMiwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzOSwgMHg2YiwgMHgwMCwgMHgyNywgMHgxYywgMHgyNCwgMHgwYywgMHgyYywgMHgyYywgMHg0NCwgMHhjYywgMHgyNCwgMHg0MSwgMHhhOCwgMHgwMCwgMHgxMywgMHhhNywgMHhhMywgMHg3YSwgMHg1MCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODIsIDB4NDksIDB4ODMsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4NzYsIDB4MzgsIDB4MjQsIDB4MWMsIDB4MTksIDB4YTAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4NDAsIDB4MDAsIDB4MTEsIDB4YmYsIDB4ZGQsIDB4NzcsIDB4ZmYsIDB4NDAsIDB4N2YsIDB4YjEsIDB4MDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjID0ge1xuICAgIEgyNjQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUgPSBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogQXVkaW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuT1BVUzpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcblxuICAgICAgLy8gVE9ETyAoQVopOiBBZGQgYSBkdW1teSBBQUMgc2lsZW50IGZyYW1lIHdoZW4gQUFDIHN1cHBvcnQgaXMgYWRkZWRcbiAgICAgIGNhc2UgQXVkaW9Db2RlYy5BQUM6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OlxuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogVmlkZW9Db2RlYyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYyA9PT0gVmlkZW9Db2RlYy5IMjY0KSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb1BGcmFtZVBlckNvZGVjKGNvZGVjOiBWaWRlb0NvZGVjKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMpIHtcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5IMjY0OiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaSkge1xuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQODpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA5OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGNvZGVjKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKCk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDMsIDY2LCAxOTIsIDQyLCAyMTgsIDQsIDQsIDIzMiwgNjQsIDAsIDAsIDMsIDAsIDY0LCAwLCAwLCAxNSwgMzUsIDE5OCwgMTIsIDE2OCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwNCwgMjA2LCA2MCwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMTY3LCAuLi5uZXcgVWludDhBcnJheSgxNTApLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTAxLCAxMzYsIDEzMiwgNiwgMTkxLCAyNTUsIDI1NSwgMTUsIDY5LCAwLCAxLCA4NywgMTU5LCAuLi5uZXcgVWludDhBcnJheSgxNSkuZmlsbCgzOSksIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCAxMjhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIGZyb20gJy4uLy4uLy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvaDI2NC9uYWxVbml0L0FubmV4QkZvdXJCeXRlU3RhcnRDb2RlJztcblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoW1xuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNiwgMywgMjU1LCA2MSwgLi4ubmV3IFVpbnQ4QXJyYXkoMzE2KS5maWxsKDI1NSksIDEyOCxcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDY1LCAxNTQsIDMyLCAyNiwgMjQwLCAxOCwgNDhcbl0pOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZVR5cGV9IGZyb20gJy4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNmb3JtUGlwZWxpbmVNZXNzYWdlUm91dGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlUm91dGVzOiBNYXA8VHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCA8VD4obWVzc2FnZTogVCkgPT4gdm9pZD4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3Iod29ya2VyOiBXb3JrZXIpIHtcbiAgICB0aGlzLmluaXRpYWxpemUod29ya2VyKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJvdXRlPFQ+KG1lc3NhZ2VUeXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIHJvdXRlTWVzc2FnZTogKG1lc3NhZ2U6IFQpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLnNldChtZXNzYWdlVHlwZSwgcm91dGVNZXNzYWdlIGFzIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB0aGlzLl9tZXNzYWdlUm91dGVzLmRlbGV0ZShtZXNzYWdlVHlwZSkpO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVzc2FnZVJvdXRlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKHdvcmtlcjogV29ya2VyKTogdm9pZCB7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQ8VHJhbnNmb3JtTWVzc2FnZT4pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZURhdGEgPSA8VD4oe3R5cGUsIGRhdGF9OiBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZDxUPikgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZU1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlUm91dGVzLmdldCh0eXBlKTtcblxuICAgICAgICBpZiAoIXJvdXRlTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdXRlTWVzc2FnZShkYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XG4gICAgICAgIGNhc2UgVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XG4gICAgICAgICAgcm91dGVNZXNzYWdlRGF0YShtZXNzYWdlLmRhdGEpO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9LCB7b25jZTogZmFsc2V9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoKCkgPT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogdW51c2VkIGhhcm1vbnkgZXhwb3J0IGFzc2VydFVucmVhY2hhYmxlICovXFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5mdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4KSB7XFxuICB0aHJvdyBuZXcgRXJyb3IoXFxcIlVuZXhwZWN0ZWQgdmFsdWUgW1xcXCIuY29uY2F0KHgsIFxcXCJdLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkXFxcIikpO1xcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChhc3NlcnRVbnJlYWNoYWJsZSk7XFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgoX191bnVzZWRfd2VicGFja19tb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlKSxcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VUeXBlOiAoKSA9PiAoLyogYmluZGluZyAqLyBUcmFuc2Zvcm1NZXNzYWdlVHlwZSlcXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbnZhciBUcmFuc2Zvcm1NZXNzYWdlVHlwZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoVHJhbnNmb3JtTWVzc2FnZVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJFcnJvclxcXCJdID0gLTFdID0gXFxcIkVycm9yXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJBZGRUcmFuc2Zvcm1cXFwiXSA9IDBdID0gXFxcIkFkZFRyYW5zZm9ybVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQ29uZmlndXJlUGlwZWxpbmVcXFwiXSA9IDFdID0gXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJNZXRhZGF0YVxcXCJdID0gMl0gPSBcXFwiTWV0YWRhdGFcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNodW5rXFxcIl0gPSAzXSA9IFxcXCJDaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIl0gPSA0XSA9IFxcXCJQaXBlbGluZUNvbmZpZ3VyZWRcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VUeXBlO1xcbn0oe30pO1xcbnZhciBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSkge1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCJdID0gMF0gPSBcXFwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvblxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJFbmNvZGVkVmlkZW9DaHVua1xcXCJdID0gMV0gPSBcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZEF1ZGlvQ2h1bmtcXFwiXSA9IDJdID0gXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiXSA9IDNdID0gXFxcIlN1cnJvZ2F0ZVZpZGVvQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCJdID0gNF0gPSBcXFwiU3Vycm9nYXRlQXVkaW9DaHVua1xcXCI7XFxuICByZXR1cm4gVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlO1xcbn0oe30pO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50c1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3Jtcy50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxuXFxcInVzZSBzdHJpY3RcXFwiO1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6ICgpID0+ICgvKiBiaW5kaW5nICovIFdvcmtlclRyYW5zZm9ybXMpXFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vZnJhbWVUaW1pbmdJbmZvcm1hdGlvbiAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiKTtcXG5cXG5cXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNSBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciBXb3JrZXJUcmFuc2Zvcm1zID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFdvcmtlclRyYW5zZm9ybXMoKSB7XFxuICAgIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0KCkodGhpcywgV29ya2VyVHJhbnNmb3Jtcyk7XFxuICB9XFxuICByZXR1cm4gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKShXb3JrZXJUcmFuc2Zvcm1zLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgKDAsX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShjaHVuayk7XFxuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZikge1xcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlVmlkZW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YS5zdXJyb2dhdGUsXFxuICAgICAgICAgIHRpbWVzdGFtcCA9IF9tZXNzYWdlRGF0YSRkYXRhLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgdmlkZW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmRlbGV0ZSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZFZpZGVvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpIHtcXG4gICAgICB2YXIgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCA9IG5ldyBNYXAoKTtcXG4gICAgICB2YXIgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIoY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciwgX3JlZjIpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZjIuZGF0YTtcXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuayB8fCBtZXNzYWdlLmRhdGEudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5TdXJyb2dhdGVBdWRpb0NodW5rKSB7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YTtcXG4gICAgICAgIHZhciBfbWVzc2FnZURhdGEkZGF0YTIgPSBtZXNzYWdlRGF0YS5kYXRhLFxcbiAgICAgICAgICBzdXJyb2dhdGUgPSBfbWVzc2FnZURhdGEkZGF0YTIuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YTIudGltZXN0YW1wO1xcbiAgICAgICAgdmFyIGNodW5rUGVuZGluZ0VucXVldWUgPSBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLmdldCh0aW1lc3RhbXApO1xcbiAgICAgICAgaWYgKCFjaHVua1BlbmRpbmdFbnF1ZXVlKSB7XFxuICAgICAgICAgIGNvbnNvbGUud2FybignW1dvcmtlclRyYW5zZm9ybXNdIFN1cnJvZ2F0ZSBhdWRpbyBjaHVuayBub3QgZm91bmQgZm9yIHRpbWVzdGFtcCcsIHRpbWVzdGFtcCk7XFxuICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgICAgIGNodW5rUGVuZGluZ0VucXVldWUuZGF0YSA9IHN1cnJvZ2F0ZTtcXG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVua1BlbmRpbmdFbnF1ZXVlKTtcXG4gICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZGVsZXRlKHRpbWVzdGFtcCk7XFxuICAgICAgfTtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICBzdGFydDogZnVuY3Rpb24gc3RhcnQoY29udHJvbGxlcikge1xcbiAgICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIuYmluZChudWxsLCBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLCBjb250cm9sbGVyKSwge1xcbiAgICAgICAgICAgIG9uY2U6IGZhbHNlXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfSxcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rKSB7XFxuICAgICAgICAgIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuc2V0KGNodW5rLnRpbWVzdGFtcCwgY2h1bmspO1xcbiAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5FbmNvZGVkQXVkaW9DaHVuayxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBjaHVuay50aW1lc3RhbXAsXFxuICAgICAgICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KGNodW5rLmRhdGEpLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBjaHVuay50eXBlXFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdHJhbnNmZXI6IFtjaHVuay5kYXRhXVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVQYXNzVGhyb3VnaFRyYW5zZm9ybSgpIHtcXG4gICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xcbiAgICAgICAgICByZXR1cm4gY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfV0pO1xcbn0oKTtcXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL2ZyYW1lVGltaW5nSW5mb3JtYXRpb24udHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4ge1xcblxcblxcXCJ1c2Ugc3RyaWN0XFxcIjtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcblxcbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHIsIGUpIHsgdmFyIHQgPSBcXFwidW5kZWZpbmVkXFxcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1xcXCJAQGl0ZXJhdG9yXFxcIl07IGlmICghdCkgeyBpZiAoQXJyYXkuaXNBcnJheShyKSB8fCAodCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSkgfHwgZSAmJiByICYmIFxcXCJudW1iZXJcXFwiID09IHR5cGVvZiByLmxlbmd0aCkgeyB0ICYmIChyID0gdCk7IHZhciBfbiA9IDAsIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IHJldHVybiBfbiA+PSByLmxlbmd0aCA/IHsgZG9uZTogITAgfSA6IHsgZG9uZTogITEsIHZhbHVlOiByW19uKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUocikgeyB0aHJvdyByOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlxcXCIpOyB9IHZhciBvLCBhID0gITAsIHUgPSAhMTsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgdCA9IHQuY2FsbChyKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHIgPSB0Lm5leHQoKTsgcmV0dXJuIGEgPSByLmRvbmUsIHI7IH0sIGU6IGZ1bmN0aW9uIGUocikgeyB1ID0gITAsIG8gPSByOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBhIHx8IG51bGwgPT0gdC5yZXR1cm4gfHwgdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKHUpIHRocm93IG87IH0gfSB9OyB9XFxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHsgaWYgKHIpIHsgaWYgKFxcXCJzdHJpbmdcXFwiID09IHR5cGVvZiByKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkociwgYSk7IHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7IHJldHVybiBcXFwiT2JqZWN0XFxcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXFxcIk1hcFxcXCIgPT09IHQgfHwgXFxcIlNldFxcXCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXFxcIkFyZ3VtZW50c1xcXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDsgfSB9XFxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkgeyAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7IGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdOyByZXR1cm4gbjsgfVxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI1IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxudmFyIEgyNjRfQ09OU1RBTlRTID0ge1xcbiAgTkFMX1VOSVRfVFlQRV9TRUk6IDYsXFxuICBOQUxfVU5JVF9IRUFERVJfU0laRTogMSxcXG4gIFNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORzogMSxcXG4gIEVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEU6IDB4MDMsXFxuICBTVEFSVF9DT0RFX1BSRUZJWF8zQjogWzB4MDAsIDB4MDAsIDB4MDFdLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfNEI6IFsweDAwLCAweDAwLCAweDAwLCAweDAxXVxcbn07XFxudmFyIEJJVFNUUkVBTV9DT05TVEFOVFMgPSB7XFxuICBNSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QOiAxMCxcXG4gIE1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUDogMTcsXFxuICBNSU5fQklUU19GT1JfVElNRV9PRkZTRVQ6IDI0XFxufTtcXG5mdW5jdGlvbiBmaW5kTmV4dE5hbFN0YXJ0KGRhdGEsIHBvc2l0aW9uKSB7XFxuICB2YXIgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xcbiAgZm9yICh2YXIgaSA9IHBvc2l0aW9uOyBpIDwgZGF0YUxlbmd0aCAtIDM7IGkrKykge1xcbiAgICBpZiAoZGF0YVtpXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAxXSA9PT0gMHgwMCkge1xcbiAgICAgIGlmIChkYXRhW2kgKyAyXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICAgIGlmIChpICsgMyA8IGRhdGFMZW5ndGggJiYgZGF0YVtpICsgMl0gPT09IDB4MDAgJiYgZGF0YVtpICsgM10gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgcmV0dXJuIC0xO1xcbn1cXG5mdW5jdGlvbiBleHRyYWN0U2VpUGF5bG9hZChkYXRhLCBzdGFydEluZGV4KSB7XFxuICB2YXIgaW5kZXggPSBzdGFydEluZGV4O1xcbiAgdmFyIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkVHlwZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcblxcbiAgLy8gUGFyc2UgcGF5bG9hZCBzaXplXFxuICBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFNpemUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG4gIHJldHVybiB7XFxuICAgIHR5cGU6IHBheWxvYWRUeXBlLFxcbiAgICBwYXlsb2FkOiBkYXRhLnN1YmFycmF5KGluZGV4LCBpbmRleCArIHBheWxvYWRTaXplKSxcXG4gICAgbGVuZ3RoOiBpbmRleCArIHBheWxvYWRTaXplIC0gc3RhcnRJbmRleFxcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVtb3ZlRW11bGF0aW9uUHJldmVudGlvbkJ5dGVzKGRhdGEpIHtcXG4gIHZhciByZXN1bHQgPSBbXTtcXG4gIHZhciB6ZXJvQ291bnQgPSAwO1xcbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGRhdGEpLFxcbiAgICBfc3RlcDtcXG4gIHRyeSB7XFxuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XFxuICAgICAgdmFyIGJ5dGUgPSBfc3RlcC52YWx1ZTtcXG4gICAgICBpZiAoemVyb0NvdW50ID09PSAyICYmIGJ5dGUgPT09IEgyNjRfQ09OU1RBTlRTLkVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEUpIHtcXG4gICAgICAgIHplcm9Db3VudCA9IDA7IC8vIFJlc2V0IGFmdGVyIGZpbmRpbmcgZW11bGF0aW9uIHByZXZlbnRpb24gYnl0ZS5cXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGJ5dGUgPT09IDB4MDApIHtcXG4gICAgICAgICAgemVyb0NvdW50Kys7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB6ZXJvQ291bnQgPSAwO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmVzdWx0LnB1c2goYnl0ZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9IGNhdGNoIChlcnIpIHtcXG4gICAgX2l0ZXJhdG9yLmUoZXJyKTtcXG4gIH0gZmluYWxseSB7XFxuICAgIF9pdGVyYXRvci5mKCk7XFxuICB9XFxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcXG59XFxuZnVuY3Rpb24gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpIHtcXG4gIHN3aXRjaCAocGljU3RydWN0KSB7XFxuICAgIGNhc2UgMDpcXG4gICAgY2FzZSAxOlxcbiAgICBjYXNlIDI6XFxuICAgICAgcmV0dXJuIDE7XFxuICAgIGNhc2UgMzpcXG4gICAgY2FzZSA0OlxcbiAgICBjYXNlIDc6XFxuICAgICAgcmV0dXJuIDI7XFxuICAgIGNhc2UgNTpcXG4gICAgY2FzZSA2OlxcbiAgICBjYXNlIDg6XFxuICAgICAgcmV0dXJuIDM7XFxuICAgIGRlZmF1bHQ6XFxuICAgICAgcmV0dXJuIDA7XFxuICB9XFxufVxcbmZ1bmN0aW9uIGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihidWZmZXIpIHtcXG4gIHZhciBiaXRPZmZzZXQgPSAwO1xcbiAgZnVuY3Rpb24gcmVhZEJpdHMoYml0c1RvUmVhZCkge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgYml0c1RvUmVhZCA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3QgcmVhZCBbXFxcIi5jb25jYXQoYml0c1RvUmVhZCwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgdmFyIHZhbHVlID0gMDtcXG4gICAgdmFyIGJpdHNSZW1haW5pbmcgPSBiaXRzVG9SZWFkO1xcbiAgICB3aGlsZSAoYml0c1JlbWFpbmluZyA+IDApIHtcXG4gICAgICB2YXIgYnl0ZU9mZnNldCA9IE1hdGguZmxvb3IoYml0T2Zmc2V0IC8gOCk7XFxuICAgICAgdmFyIGJpdEluQnl0ZSA9IGJpdE9mZnNldCAlIDg7XFxuICAgICAgdmFyIGJpdHNMZWZ0SW5CeXRlID0gOCAtIGJpdEluQnl0ZTtcXG4gICAgICB2YXIgcmVhZE5vdyA9IE1hdGgubWluKGJpdHNSZW1haW5pbmcsIGJpdHNMZWZ0SW5CeXRlKTtcXG4gICAgICB2YXIgbWFzayA9ICgxIDw8IHJlYWROb3cpIC0gMTtcXG4gICAgICB2YXIgYnl0ZVZhbCA9IGJ1ZmZlcltieXRlT2Zmc2V0XSA+PiBiaXRzTGVmdEluQnl0ZSAtIHJlYWROb3c7XFxuICAgICAgdmFyIGJpdHMgPSBieXRlVmFsICYgbWFzaztcXG4gICAgICB2YWx1ZSA9IHZhbHVlIDw8IHJlYWROb3cgfCBiaXRzO1xcbiAgICAgIGJpdE9mZnNldCArPSByZWFkTm93O1xcbiAgICAgIGJpdHNSZW1haW5pbmcgLT0gcmVhZE5vdztcXG4gICAgfVxcbiAgICByZXR1cm4gdmFsdWU7XFxuICB9XFxuICBmdW5jdGlvbiBza2lwQml0cyhuKSB7XFxuICAgIGlmIChiaXRPZmZzZXQgKyBuID4gYnVmZmVyLmxlbmd0aCAqIDgpIHtcXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkNhbm5vdCBza2lwIFtcXFwiLmNvbmNhdChuLCBcXFwiXSBiaXRzIC0gb3V0IG9mIGJvdW5kc1xcXCIpKTtcXG4gICAgfVxcbiAgICBiaXRPZmZzZXQgKz0gbjtcXG4gIH1cXG4gIGZ1bmN0aW9uIGdldFJlbWFpbmluZ0JpdHMoKSB7XFxuICAgIHJldHVybiBidWZmZXIubGVuZ3RoICogOCAtIGJpdE9mZnNldDtcXG4gIH1cXG4gIHJldHVybiB7XFxuICAgIHJlYWRCaXRzOiByZWFkQml0cyxcXG4gICAgc2tpcEJpdHM6IHNraXBCaXRzLFxcbiAgICBnZXRSZW1haW5pbmdCaXRzOiBnZXRSZW1haW5pbmdCaXRzXFxuICB9O1xcbn1cXG5mdW5jdGlvbiByZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykge1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gc2Vjb25kc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gbWludXRlc19mbGFnLCB3ZSBhcmUgZG9uZS5cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgNikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxuICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxIHx8IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMCkge1xcbiAgICByZXR1cm4gdHJ1ZTsgLy8gTm8gaG91cnNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDUpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuaG91cnMgPSByZWFkZXIucmVhZEJpdHMoNSk7XFxuICByZXR1cm4gdHJ1ZTtcXG59XFxuZnVuY3Rpb24gcGFyc2VDbG9ja1RpbWVzdGFtcChyZWFkZXIpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QKSB7XFxuICAgIHJldHVybiBudWxsO1xcbiAgfVxcbiAgdmFyIHRzID0ge1xcbiAgICBjdFR5cGU6IHJlYWRlci5yZWFkQml0cygyKSxcXG4gICAgbnVpdEZpZWxkQmFzZWRGbGFnOiByZWFkZXIucmVhZEJpdHMoMSkgPT09IDEsXFxuICAgIGNvdW50aW5nVHlwZTogcmVhZGVyLnJlYWRCaXRzKDUpLFxcbiAgICBmdWxsVGltZXN0YW1wRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBkaXNjb250aW51aXR5RmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjbnREcm9wcGVkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBuRnJhbWVzOiByZWFkZXIucmVhZEJpdHMoOClcXG4gIH07XFxuICBpZiAodHMuZnVsbFRpbWVzdGFtcEZsYWcpIHtcXG4gICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUCkge1xcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHRzLnNlY29uZHMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLm1pbnV0ZXMgPSByZWFkZXIucmVhZEJpdHMoNik7XFxuICAgIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgfSBlbHNlIHtcXG4gICAgaWYgKCFyZWFkT3B0aW9uYWxUaW1lc3RhbXBGaWVsZHMocmVhZGVyLCB0cykpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCBCSVRTVFJFQU1fQ09OU1RBTlRTLk1JTl9CSVRTX0ZPUl9USU1FX09GRlNFVCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHRzLnRpbWVPZmZzZXQgPSByZWFkZXIucmVhZEJpdHMoMjQpO1xcbiAgcmV0dXJuIHRzO1xcbn1cXG5mdW5jdGlvbiBwYXJzZVBpY3R1cmVUaW1pbmcoZGF0YSwgY29uZmlnKSB7XFxuICB2YXIgcmVhZGVyID0gY3JlYXRlQml0c3RyZWFtUmVhZGVyKHJlbW92ZUVtdWxhdGlvblByZXZlbnRpb25CeXRlcyhkYXRhKSk7XFxuICB2YXIgcmVzdWx0ID0ge1xcbiAgICBwaWNTdHJ1Y3Q6IHVuZGVmaW5lZFxcbiAgfTtcXG4gIGlmIChjb25maWcuY3BiRHBiRGVsYXlzUHJlc2VudEZsYWcgJiYgY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5kcGJPdXRwdXREZWxheUxlbmd0aE1pbnVzMSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuY3BiUmVtb3ZhbERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICAgIHJlYWRlci5za2lwQml0cyhjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgKyAxKTtcXG4gIH1cXG4gIGlmIChjb25maWcucGljU3RydWN0UHJlc2VudEZsYWcpIHtcXG4gICAgdmFyIHBpY1N0cnVjdCA9IHJlYWRlci5yZWFkQml0cyg0KTtcXG4gICAgdmFyIG51bUNsb2NrVFMgPSBjb252ZXJ0UGljU3RydWN0VG9OdW1DbG9ja1RTKHBpY1N0cnVjdCk7XFxuICAgIHZhciBjbG9ja1RpbWVzdGFtcHMgPSBbXTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DbG9ja1RTOyBpKyspIHtcXG4gICAgICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDEpIHtcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgICB2YXIgY2xvY2tUaW1lc3RhbXBGbGFnID0gcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxO1xcbiAgICAgIGlmICghY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogZmFsc2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgY29udGludWU7XFxuICAgICAgfVxcbiAgICAgIHZhciB0cyA9IHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKTtcXG4gICAgICBpZiAodHMpIHtcXG4gICAgICAgIGNsb2NrVGltZXN0YW1wcy5wdXNoKHtcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXBGbGFnOiB0cnVlLFxcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcDogdHNcXG4gICAgICAgIH0pO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyBOb3QgZW5vdWdoIGJpdHMsIHN0b3AgcHJvY2Vzc2luZyBTRUlcXG4gICAgICAgIGJyZWFrO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICByZXN1bHQucGljU3RydWN0ID0ge1xcbiAgICAgIG51bUNsb2NrVFM6IG51bUNsb2NrVFMsXFxuICAgICAgY2xvY2tUaW1lc3RhbXBzOiBjbG9ja1RpbWVzdGFtcHNcXG4gICAgfTtcXG4gIH1cXG4gIHJldHVybiByZXN1bHQ7XFxufVxcbmZ1bmN0aW9uIGRlY29kZUZyYW1lVGltaW5nVGltZWNvZGUoY2h1bmspIHtcXG4gIHZhciByZWNlaXZlVGltZXN0YW1wID0gbmV3IERhdGUoKTtcXG4gIHZhciBjaHVua0RhdGEgPSBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKTtcXG4gIHZhciBjdXJyZW50SW5kZXggPSBmaW5kTmV4dE5hbFN0YXJ0KGNodW5rRGF0YSwgMCk7XFxuICB3aGlsZSAoY3VycmVudEluZGV4ICE9PSAtMSkge1xcbiAgICB2YXIgbmV4dE5hbFN0YXJ0ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIGN1cnJlbnRJbmRleCArIDEpO1xcbiAgICB2YXIgbmFsVW5pdEVuZCA9IG5leHROYWxTdGFydCA9PT0gLTEgPyBjaHVua0RhdGEubGVuZ3RoIDogbmV4dE5hbFN0YXJ0O1xcbiAgICB2YXIgc3RhcnRDb2RlTGVuZ3RoID0gY2h1bmtEYXRhW2N1cnJlbnRJbmRleCArIDJdID09PSAweDAxID8gMyA6IDQ7XFxuICAgIHZhciBuYWxVbml0SGVhZGVySW5kZXggPSBjdXJyZW50SW5kZXggKyBzdGFydENvZGVMZW5ndGg7XFxuICAgIHZhciBuYWxVbml0VHlwZSA9IGNodW5rRGF0YVtuYWxVbml0SGVhZGVySW5kZXhdICYgMHgxZjtcXG4gICAgaWYgKG5hbFVuaXRUeXBlID09PSBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9UWVBFX1NFSSkge1xcbiAgICAgIHZhciBzZWlJbmRleCA9IG5hbFVuaXRIZWFkZXJJbmRleCArIEgyNjRfQ09OU1RBTlRTLk5BTF9VTklUX0hFQURFUl9TSVpFO1xcbiAgICAgIHZhciBuYWxVbml0RGF0YSA9IGNodW5rRGF0YS5zdWJhcnJheShzZWlJbmRleCwgbmFsVW5pdEVuZCk7XFxuICAgICAgdmFyIHNlaU9mZnNldCA9IDA7XFxuXFxuICAgICAgLy8gUHJvY2VzcyBTRUkgbWVzc2FnZXMgdW50aWwgZW5kIG9mIE5BTCB1bml0XFxuICAgICAgd2hpbGUgKHNlaU9mZnNldCA8IG5hbFVuaXREYXRhLmxlbmd0aCkge1xcbiAgICAgICAgLy8gU3RvcCBpZiByZW1haW5pbmcgZGF0YSBpcyB0b28gc2hvcnQgdG8gYmUgYSB2YWxpZCBTRUkgbWVzc2FnZVxcbiAgICAgICAgaWYgKHNlaU9mZnNldCArIDIgPiBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2VpUGF5bG9hZCA9IGV4dHJhY3RTZWlQYXlsb2FkKG5hbFVuaXREYXRhLCBzZWlPZmZzZXQpO1xcbiAgICAgICAgaWYgKHNlaVBheWxvYWQudHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuU0VJX1BBWUxPQURfVFlQRV9QSUNfVElNSU5HKSB7XFxuICAgICAgICAgIHZhciBfcGFyc2VkUGljdHVyZVRpbWluZyQ7XFxuICAgICAgICAgIHZhciBwYXJzZWRQaWN0dXJlVGltaW5nID0gcGFyc2VQaWN0dXJlVGltaW5nKHNlaVBheWxvYWQucGF5bG9hZCwge1xcbiAgICAgICAgICAgIGNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnOiBmYWxzZSxcXG4gICAgICAgICAgICBwaWNTdHJ1Y3RQcmVzZW50RmxhZzogdHJ1ZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgICAgdmFyIGZpcnN0Q2xvY2tUaW1lc3RhbXAgPSAoX3BhcnNlZFBpY3R1cmVUaW1pbmckID0gcGFyc2VkUGljdHVyZVRpbWluZy5waWNTdHJ1Y3QpID09PSBudWxsIHx8IF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3BhcnNlZFBpY3R1cmVUaW1pbmckLmNsb2NrVGltZXN0YW1wc1swXTtcXG4gICAgICAgICAgaWYgKGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IG51bGwgJiYgZmlyc3RDbG9ja1RpbWVzdGFtcCAhPT0gdm9pZCAwICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXBGbGFnKSB7XFxuICAgICAgICAgICAgdmFyIF9maXJzdENsb2NrVGltZXN0YW1wJCwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMiwgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMywgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkNDtcXG4gICAgICAgICAgICB2YXIgcnRwVGltZXN0YW1wID0gY2h1bmsudGltZXN0YW1wO1xcbiAgICAgICAgICAgIHZhciBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHtcXG4gICAgICAgICAgICAgIHRpbWVjb2RlOiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wID8ge1xcbiAgICAgICAgICAgICAgICBob3VyczogKF9maXJzdENsb2NrVGltZXN0YW1wJCA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuaG91cnMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJCAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgbWludXRlczogKF9maXJzdENsb2NrVGltZXN0YW1wJDIgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm1pbnV0ZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDIgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDIgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiAoX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA9IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuc2Vjb25kcykgIT09IG51bGwgJiYgX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyAhPT0gdm9pZCAwID8gX2ZpcnN0Q2xvY2tUaW1lc3RhbXAkMyA6IG51bGwsXFxuICAgICAgICAgICAgICAgIGZyYW1lczogKF9maXJzdENsb2NrVGltZXN0YW1wJDQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLm5GcmFtZXMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDQgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBpc0ZyYW1lRHJvcDogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5jbnREcm9wcGVkRmxhZ1xcbiAgICAgICAgICAgICAgfSA6IG51bGwsXFxuICAgICAgICAgICAgICByZWNlaXZlVGltZXN0YW1wOiByZWNlaXZlVGltZXN0YW1wXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdCgpKHt9LCBydHBUaW1lc3RhbXAsIHtcXG4gICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc2VpT2Zmc2V0ICs9IHNlaVBheWxvYWQubGVuZ3RoO1xcblxcbiAgICAgICAgLy8gU3RvcCBpZiBhbiBpbnZhbGlkIHBheWxvYWQgbGVuZ3RoIHdhcyBkZXRlY3RlZC5cXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gICAgY3VycmVudEluZGV4ID0gbmV4dE5hbFN0YXJ0O1xcbiAgfVxcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlKSA9PiB7XFxuXFxuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcXG4gIHRyeSB7XFxuICAgIHZhciBpID0gblthXShjKSxcXG4gICAgICB1ID0gaS52YWx1ZTtcXG4gIH0gY2F0Y2ggKG4pIHtcXG4gICAgcmV0dXJuIHZvaWQgZShuKTtcXG4gIH1cXG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcXG59XFxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcXG4gICAgdmFyIHQgPSB0aGlzLFxcbiAgICAgIGUgPSBhcmd1bWVudHM7XFxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcXG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XFxuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXFxcIm5leHRcXFwiLCBuKTtcXG4gICAgICB9XFxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwidGhyb3dcXFwiLCBuKTtcXG4gICAgICB9XFxuICAgICAgX25leHQodm9pZCAwKTtcXG4gICAgfSk7XFxuICB9O1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlKSA9PiB7XFxuXFxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcXG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXFxcIik7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgdG9Qcm9wZXJ0eUtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG9Qcm9wZXJ0eUtleS5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzXFxcIik7XFxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XFxuICAgIHZhciBvID0gclt0XTtcXG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcXFwidmFsdWVcXFwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XFxuICB9XFxufVxcbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XFxuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcXFwicHJvdG90eXBlXFxcIiwge1xcbiAgICB3cml0YWJsZTogITFcXG4gIH0pLCBlO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cztcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKG1vZHVsZSwgX191bnVzZWRfd2VicGFja19leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7XFxuXFxudmFyIHRvUHJvcGVydHlLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qc1xcXCIpO1xcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XFxuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcXG4gICAgdmFsdWU6IHQsXFxuICAgIGVudW1lcmFibGU6ICEwLFxcbiAgICBjb25maWd1cmFibGU6ICEwLFxcbiAgICB3cml0YWJsZTogITBcXG4gIH0pIDogZVtyXSA9IHQsIGU7XFxufVxcbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgX3R5cGVvZiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3R5cGVvZi5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanNcXFwiKVtcXFwiZGVmYXVsdFxcXCJdKTtcXG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XFxuICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XFxuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcXG4gIGlmICh2b2lkIDAgIT09IGUpIHtcXG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcXFwiZGVmYXVsdFxcXCIpO1xcbiAgICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XFxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXFxcIik7XFxuICB9XFxuICByZXR1cm4gKFxcXCJzdHJpbmdcXFwiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1xcXCJkZWZhdWx0XFxcIl0gPSBtb2R1bGUuZXhwb3J0cztcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovICgobW9kdWxlLCBfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pID0+IHtcXG5cXG52YXIgX3R5cGVvZiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3R5cGVvZi5qcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanNcXFwiKVtcXFwiZGVmYXVsdFxcXCJdKTtcXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJpbWl0aXZlLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzXFxcIik7XFxuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XFxuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFxcXCJzdHJpbmdcXFwiKTtcXG4gIHJldHVybiBcXFwic3ltYm9sXFxcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcXFwiXFxcIjtcXG59XFxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXFxcImRlZmF1bHRcXFwiXSA9IG1vZHVsZS5leHBvcnRzO1xcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoKG1vZHVsZSkgPT4ge1xcblxcbmZ1bmN0aW9uIF90eXBlb2Yobykge1xcbiAgXFxcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXFxcIjtcXG5cXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIFxcXCJzeW1ib2xcXFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gdHlwZW9mIG87XFxuICB9IDogZnVuY3Rpb24gKG8pIHtcXG4gICAgcmV0dXJuIG8gJiYgXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXFxcInN5bWJvbFxcXCIgOiB0eXBlb2YgbztcXG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xcbn1cXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcXFwiZGVmYXVsdFxcXCJdID0gbW9kdWxlLmV4cG9ydHM7XFxuXFxuLyoqKi8gfSlcXG5cXG4vKioqKioqLyBcXHR9KTtcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKiovIFxcdC8vIFRoZSBtb2R1bGUgY2FjaGVcXG4vKioqKioqLyBcXHR2YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXFxuLyoqKioqKi8gXFx0XFx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XFxuLyoqKioqKi8gXFx0XFx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xcbi8qKioqKiovIFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxcbi8qKioqKiovIFxcdFxcdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xcbi8qKioqKiovIFxcdFxcdFxcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxcbi8qKioqKiovIFxcdFxcdFxcdGV4cG9ydHM6IHt9XFxuLyoqKioqKi8gXFx0XFx0fTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHRcXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxcbi8qKioqKiovIFxcdFxcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHR9XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCAqL1xcbi8qKioqKiovIFxcdCgoKSA9PiB7XFxuLyoqKioqKi8gXFx0XFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XFxuLyoqKioqKi8gXFx0XFx0XFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0KCkgPT4gKG1vZHVsZSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0cmV0dXJuIGdldHRlcjtcXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdH0pKCk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0Lyogd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovXFxuLyoqKioqKi8gXFx0KCgpID0+IHtcXG4vKioqKioqLyBcXHRcXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcXG4vKioqKioqLyBcXHRcXHRcXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcXG4vKioqKioqLyBcXHRcXHRcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0fSkoKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kICovXFxuLyoqKioqKi8gXFx0KCgpID0+IHtcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpXFxuLyoqKioqKi8gXFx0fSkoKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0ge307XFxuLy8gVGhpcyBlbnRyeSBuZWVkIHRvIGJlIHdyYXBwZWQgaW4gYW4gSUlGRSBiZWNhdXNlIGl0IG5lZWQgdG8gYmUgaW4gc3RyaWN0IG1vZGUuXFxuKCgpID0+IHtcXG5cXFwidXNlIHN0cmljdFxcXCI7XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZSEuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihfaG9tZV90ZWFtY2l0eV9idWlsZEFnZW50X3dvcmtfNTQ1NDNmMDRiMjUzZDBjY19ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2FzeW5jVG9HZW5lcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlICovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3JtcyAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiKTtcXG5cXG5cXG5cXG5cXG52YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgLyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL21haW4vcGFja2FnZXMvYmFiZWwtaGVscGVycy9MSUNFTlNFICovIHZhciBlLCB0LCByID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sIG4gPSByLml0ZXJhdG9yIHx8IFxcXCJAQGl0ZXJhdG9yXFxcIiwgbyA9IHIudG9TdHJpbmdUYWcgfHwgXFxcIkBAdG9TdHJpbmdUYWdcXFwiOyBmdW5jdGlvbiBpKHIsIG4sIG8sIGkpIHsgdmFyIGMgPSBuICYmIG4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gbiA6IEdlbmVyYXRvciwgdSA9IE9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpOyByZXR1cm4gX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiX2ludm9rZVxcXCIsIGZ1bmN0aW9uIChyLCBuLCBvKSB7IHZhciBpLCBjLCB1LCBmID0gMCwgcCA9IG8gfHwgW10sIHkgPSAhMSwgRyA9IHsgcDogMCwgbjogMCwgdjogZSwgYTogZCwgZjogZC5iaW5kKGUsIDQpLCBkOiBmdW5jdGlvbiBkKHQsIHIpIHsgcmV0dXJuIGkgPSB0LCBjID0gMCwgdSA9IGUsIEcubiA9IHIsIGE7IH0gfTsgZnVuY3Rpb24gZChyLCBuKSB7IGZvciAoYyA9IHIsIHUgPSBuLCB0ID0gMDsgIXkgJiYgZiAmJiAhbyAmJiB0IDwgcC5sZW5ndGg7IHQrKykgeyB2YXIgbywgaSA9IHBbdF0sIGQgPSBHLnAsIGwgPSBpWzJdOyByID4gMyA/IChvID0gbCA9PT0gbikgJiYgKHUgPSBpWyhjID0gaVs0XSkgPyA1IDogKGMgPSAzLCAzKV0sIGlbNF0gPSBpWzVdID0gZSkgOiBpWzBdIDw9IGQgJiYgKChvID0gciA8IDIgJiYgZCA8IGlbMV0pID8gKGMgPSAwLCBHLnYgPSBuLCBHLm4gPSBpWzFdKSA6IGQgPCBsICYmIChvID0gciA8IDMgfHwgaVswXSA+IG4gfHwgbiA+IGwpICYmIChpWzRdID0gciwgaVs1XSA9IG4sIEcubiA9IGwsIGMgPSAwKSk7IH0gaWYgKG8gfHwgciA+IDEpIHJldHVybiBhOyB0aHJvdyB5ID0gITAsIG47IH0gcmV0dXJuIGZ1bmN0aW9uIChvLCBwLCBsKSB7IGlmIChmID4gMSkgdGhyb3cgVHlwZUVycm9yKFxcXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXFxcIik7IGZvciAoeSAmJiAxID09PSBwICYmIGQocCwgbCksIGMgPSBwLCB1ID0gbDsgKHQgPSBjIDwgMiA/IGUgOiB1KSB8fCAheTspIHsgaSB8fCAoYyA/IGMgPCAzID8gKGMgPiAxICYmIChHLm4gPSAtMSksIGQoYywgdSkpIDogRy5uID0gdSA6IEcudiA9IHUpOyB0cnkgeyBpZiAoZiA9IDIsIGkpIHsgaWYgKGMgfHwgKG8gPSBcXFwibmV4dFxcXCIpLCB0ID0gaVtvXSkgeyBpZiAoISh0ID0gdC5jYWxsKGksIHUpKSkgdGhyb3cgVHlwZUVycm9yKFxcXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFxcXCIpOyBpZiAoIXQuZG9uZSkgcmV0dXJuIHQ7IHUgPSB0LnZhbHVlLCBjIDwgMiAmJiAoYyA9IDApOyB9IGVsc2UgMSA9PT0gYyAmJiAodCA9IGkucmV0dXJuKSAmJiB0LmNhbGwoaSksIGMgPCAyICYmICh1ID0gVHlwZUVycm9yKFxcXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcXFwiICsgbyArIFxcXCInIG1ldGhvZFxcXCIpLCBjID0gMSk7IGkgPSBlOyB9IGVsc2UgaWYgKCh0ID0gKHkgPSBHLm4gPCAwKSA/IHUgOiByLmNhbGwobiwgRykpICE9PSBhKSBicmVhazsgfSBjYXRjaCAodCkgeyBpID0gZSwgYyA9IDEsIHUgPSB0OyB9IGZpbmFsbHkgeyBmID0gMTsgfSB9IHJldHVybiB7IHZhbHVlOiB0LCBkb25lOiB5IH07IH07IH0ociwgbywgaSksICEwKSwgdTsgfSB2YXIgYSA9IHt9OyBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fSBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge30gdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgdmFyIGMgPSBbXVtuXSA/IHQodChbXVtuXSgpKSkgOiAoX3JlZ2VuZXJhdG9yRGVmaW5lMih0ID0ge30sIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCB0KSwgdSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGMpOyBmdW5jdGlvbiBmKGUpIHsgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAoZS5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSksIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh1KSwgZTsgfSByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcImNvbnN0cnVjdG9yXFxcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiwgX3JlZ2VuZXJhdG9yRGVmaW5lMihHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbywgXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbywgXFxcIkdlbmVyYXRvclxcXCIpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJ0b1N0cmluZ1xcXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFxcXCJbb2JqZWN0IEdlbmVyYXRvcl1cXFwiOyB9KSwgKF9yZWdlbmVyYXRvciA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgcmV0dXJuIHsgdzogaSwgbTogZiB9OyB9KSgpOyB9XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBuLCB0KSB7IHZhciBpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5OyB0cnkgeyBpKHt9LCBcXFwiXFxcIiwge30pOyB9IGNhdGNoIChlKSB7IGkgPSAwOyB9IF9yZWdlbmVyYXRvckRlZmluZTIgPSBmdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUoZSwgciwgbiwgdCkgeyBmdW5jdGlvbiBvKHIsIG4pIHsgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5faW52b2tlKHIsIG4sIGUpOyB9KTsgfSByID8gaSA/IGkoZSwgciwgeyB2YWx1ZTogbiwgZW51bWVyYWJsZTogIXQsIGNvbmZpZ3VyYWJsZTogIXQsIHdyaXRhYmxlOiAhdCB9KSA6IGVbcl0gPSBuIDogKG8oXFxcIm5leHRcXFwiLCAwKSwgbyhcXFwidGhyb3dcXFwiLCAxKSwgbyhcXFwicmV0dXJuXFxcIiwgMikpOyB9LCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG5cXG5cXG52YXIgd29ya2VyID0gc2VsZjtcXG4vLyBUaGlzIGlzIGhvdyB0aGUgZG9jdW1lbnRhdGlvbiBpbnN0cnVjdHMgdG8gZG8gaXQgLSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS93b3JrZXItbG9hZGVyXFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xcbnZhciBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XFxuICBmdW5jdGlvbiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcigpIHtcXG4gICAgX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQoKSh0aGlzLCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcik7XFxuICB9XFxuICByZXR1cm4gX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiaGFuZGxlQWRkVHJhbnNmb3JtXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUFkZFRyYW5zZm9ybSh0eXBlKSB7XFxuICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCkge1xcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogUGlwZWxpbmUgaXMgbG9ja2VkLiBBIHRyYW5zZm9ybSBjYW5ub3QgYmUgYWRkZWQgb25jZSB0aGUgcGlwZWxpbmUgaGFzIGJlZW4gY29uZmlndXJlZCcpO1xcbiAgICAgIH1cXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgIGNhc2UgJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbic6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSgpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQtdmlkZW8nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwcm90ZWN0ZWQtYXVkaW8nOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybSh3b3JrZXIpKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICdwYXNzLXRocm91Z2gnOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKF90cmFuc2Zvcm1zX1dvcmtlclRyYW5zZm9ybXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX1tcXFwiZGVmYXVsdFxcXCJdLmNyZWF0ZVBhc3NUaHJvdWdoVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiRXJyb3I6IFVua25vd24gdHJhbnNmb3JtIHR5cGUgW1xcXCIuY29uY2F0KHR5cGUsIFxcXCJdXFxcIikpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJjb25maWd1cmVQaXBlbGluZVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XFxuICAgICAgdmFyIF9jb25maWd1cmVQaXBlbGluZSA9IF9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQoKSgvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKHNvdXJjZSwgc2luaykge1xcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7XFxuICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Lm4pIHtcXG4gICAgICAgICAgICBjYXNlIDA6XFxuICAgICAgICAgICAgICBpZiAoc291cmNlICYmIHNpbmspIHtcXG4gICAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDE7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogQ29uZmlndXJhdGlvbiBvZiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZSByZXF1aXJlcyBib3RoIGEgcmVhZGJhbGUgc291cmNlIGFuZCB3cml0YWJsZSBzaW5rJyk7XFxuICAgICAgICAgICAgY2FzZSAxOlxcbiAgICAgICAgICAgICAgaWYgKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5wdXNoKCk7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjtcXG4gICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5yZWR1Y2VSaWdodChmdW5jdGlvbiAocGlwZWxpbmUsIHRyYW5zZm9ybSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlwZWxpbmUucGlwZVRocm91Z2godHJhbnNmb3JtKTtcXG4gICAgICAgICAgICAgIH0sIHNvdXJjZSkucGlwZVRvKHNpbmspO1xcbiAgICAgICAgICAgIGNhc2UgMjpcXG4gICAgICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl9pc1BpcGVsaW5lQ29uZmlndXJlZCA9IHRydWU7XFxuICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkLFxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgICAgbmFtZTogVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3dvcmtlck5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2FzZSAzOlxcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmEoMik7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH0sIF9jYWxsZWUpO1xcbiAgICAgIH0pKTtcXG4gICAgICBmdW5jdGlvbiBjb25maWd1cmVQaXBlbGluZShfeCwgX3gyKSB7XFxuICAgICAgICByZXR1cm4gX2NvbmZpZ3VyZVBpcGVsaW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBjb25maWd1cmVQaXBlbGluZTtcXG4gICAgfSgpXFxuICB9LCB7XFxuICAgIGtleTogXFxcImhhbmRsZU1lc3NhZ2VcXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShfcmVmKSB7XFxuICAgICAgdmFyIG1lc3NhZ2UgPSBfcmVmLmRhdGE7XFxuICAgICAgdmFyIHR5cGUgPSBtZXNzYWdlLnR5cGU7XFxuICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5BZGRUcmFuc2Zvcm06XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLmhhbmRsZUFkZFRyYW5zZm9ybShtZXNzYWdlLmRhdGEpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShtZXNzYWdlLmRhdGEuc291cmNlLCBtZXNzYWdlLmRhdGEuc2luayk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGE6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bms6XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgKDAsX2xhbmdfYXNzZXJ0VW5yZWFjaGFibGVfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX1tcXFwiZGVmYXVsdFxcXCJdKSh0eXBlKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyID0gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXI7XFxuX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl90cmFuc2Zvcm1zXFxcIiwgW10pO1xcbl9ob21lX3RlYW1jaXR5X2J1aWxkQWdlbnRfd29ya181NDU0M2YwNGIyNTNkMGNjX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIFxcXCJfaXNQaXBlbGluZUNvbmZpZ3VyZWRcXFwiLCBmYWxzZSk7XFxuX2hvbWVfdGVhbWNpdHlfYnVpbGRBZ2VudF93b3JrXzU0NTQzZjA0YjI1M2QwY2Nfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl93b3JrZXJOYW1lXFxcIiwgdm9pZCAwKTtcXG4oZnVuY3Rpb24gKCkge1xcbiAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1tUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcl0gRXJyb3I6IFslc10nLCBlcnJvcik7XFxuICB9O1xcbiAgd29ya2VyLm9ubWVzc2FnZSA9IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVNZXNzYWdlLmJpbmQoX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyKTtcXG4gIGlmICh3b3JrZXIuUlRDVHJhbnNmb3JtRXZlbnQpIHtcXG4gICAgd29ya2VyLm9ucnRjdHJhbnNmb3JtID0gZnVuY3Rpb24gKF9yZWYyKSB7XFxuICAgICAgdmFyIHRyYW5zZm9ybWVyID0gX3JlZjIudHJhbnNmb3JtZXI7XFxuICAgICAgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lID0gdHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lO1xcbiAgICAgIHZhciBzb3VyY2UgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZTtcXG4gICAgICB2YXIgc2luayA9IHRyYW5zZm9ybWVyLndyaXRhYmxlO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5jb25maWd1cmVQaXBlbGluZShzb3VyY2UsIHNpbmspO1xcbiAgICB9O1xcbiAgfVxcbn0pKCk7XFxuLyogdW51c2VkIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gdmFyIF9fV0VCUEFDS19ERUZBVUxUX0VYUE9SVF9fID0gKG51bGwpO1xcbn0pKCk7XFxuXFxuLyoqKioqKi8gfSkoKVxcbjtcXG5cIiwgXCJXb3JrZXJcIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiwgbm8tdXNlLWJlZm9yZS1kZWZpbmUsIG5ldy1jYXAgKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNvbnRlbnQsIHdvcmtlckNvbnN0cnVjdG9yLCB3b3JrZXJPcHRpb25zLCB1cmwpIHtcbiAgdmFyIGdsb2JhbFNjb3BlID0gc2VsZiB8fCB3aW5kb3c7XG5cbiAgdHJ5IHtcbiAgICB0cnkge1xuICAgICAgdmFyIGJsb2I7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIE5ldyBBUElcbiAgICAgICAgYmxvYiA9IG5ldyBnbG9iYWxTY29wZS5CbG9iKFtjb250ZW50XSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIEJsb2JCdWlsZGVyID0gRGVwcmVjYXRlZCwgYnV0IHdpZGVseSBpbXBsZW1lbnRlZFxuICAgICAgICB2YXIgQmxvYkJ1aWxkZXIgPSBnbG9iYWxTY29wZS5CbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5XZWJLaXRCbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5Nb3pCbG9iQnVpbGRlciB8fCBnbG9iYWxTY29wZS5NU0Jsb2JCdWlsZGVyO1xuICAgICAgICBibG9iID0gbmV3IEJsb2JCdWlsZGVyKCk7XG4gICAgICAgIGJsb2IuYXBwZW5kKGNvbnRlbnQpO1xuICAgICAgICBibG9iID0gYmxvYi5nZXRCbG9iKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBVUkwgPSBnbG9iYWxTY29wZS5VUkwgfHwgZ2xvYmFsU2NvcGUud2Via2l0VVJMO1xuICAgICAgdmFyIG9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICB2YXIgd29ya2VyID0gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXShvYmplY3RVUkwsIHdvcmtlck9wdGlvbnMpO1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVUkwpO1xuICAgICAgcmV0dXJuIHdvcmtlcjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlW3dvcmtlckNvbnN0cnVjdG9yXShcImRhdGE6YXBwbGljYXRpb24vamF2YXNjcmlwdCxcIi5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpKSwgd29ya2VyT3B0aW9ucyk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IEVycm9yKFwiSW5saW5lIHdvcmtlciBpcyBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKHVybCwgd29ya2VyT3B0aW9ucyk7XG4gIH1cbn07IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aG91dEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xuICB0cnkge1xuICAgIHZhciBpID0gblthXShjKSxcbiAgICAgIHUgPSBpLnZhbHVlO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIHZvaWQgZShuKTtcbiAgfVxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHQgPSB0aGlzLFxuICAgICAgZSA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIG4pO1xuICAgICAgfVxuICAgICAgX25leHQodm9pZCAwKTtcbiAgICB9KTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW5oZXJpdHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlUmVzdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCB0LmluZGV4T2YobykgPj0gMCB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5kZXhPZihuKSA+PSAwKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF90eXBlb2Yobyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi9DaGFubmVscyc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsInVuZGVmaW5lZCIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCIsIlBhcmFtZXRlcnMiLCJfZGlzY292ZXJ5UGFyYW1ldGVycyIsImFwcGx5UGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJfX1BBUkFNRVRFUlNfXyIsImRpc2NvdmVyeSIsImludGVudGlvbnMiLCJwcm92aWRlZEdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiZG9jdW1lbnQiLCJfbG9jYXRpb24iLCJsb2NhdGlvbiIsIl93aW5kb3ciLCJ3aW5kb3ciLCJGb3JtRGF0YSIsIk1lZGlhU3RyZWFtIiwiTWVkaWFTdHJlYW1UcmFjayIsIk1lZGlhU291cmNlIiwiUlRDUGVlckNvbm5lY3Rpb24iLCJSVENTZXNzaW9uRGVzY3JpcHRpb24iLCJSVENJY2VDYW5kaWRhdGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJjbGVhckludGVydmFsIiwiY2xlYXJUaW1lb3V0IiwiY3JlYXRlRWxlbWVudCIsImhhc0ZvY3VzIiwiaGlkZGVuIiwicXVlcnlTZWxlY3RvciIsImZldGNoIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJjb25uZWN0aW9uIiwib25MaW5lIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsIl9pbnN0YW5jZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwidXJsIiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJnbG9iYWxTY29wZSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsImNhdGNoIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiUnRjQ29ubmVjdGlvbk1vbml0b3IiLCJtZWRpYVN0cmVhbSIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl90cmFja3NUb01vbml0b3IiLCJnZXRUcmFja3MiLCJtYXAiLCJ0cmFjayIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsInBhcnNlZFNEUCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfaXNNb25pdG9yUnVubmluZyIsIl91cGRhdGVUaW1lb3V0IiwiX3VwZGF0ZVN0YXRpc3RpYyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjciLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiZ2V0U3RhdHNMZWdhY3kiLCJyZXN1bHQiLCJuYW1lcyIsInN0YXQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241IiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwicmVzb2x2ZSIsInJlamVjdCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwiX3RoaXM0IiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiX3ZhbHVlIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJEaW1lbnNpb24iLCJDaGFubmVsU3RhdGUiLCJWaWRlb1RlbGVtZXRyeSIsIlNlc3Npb25UZWxlbWV0cnkiLCJUb2tlbkNvbnRleHQiLCJDaGFubmVsQ29udGV4dCIsIkVuY29kZWRTdHJlYW1TaW5rIiwiU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiU3RhdGVDb250ZXh0IiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJTdHJlYW1GYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwib25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5RXhpc3RzIiwiZXhpc3RzIiwiX3JlYWRPbmx5QXV0b011dGVkIiwiYXV0b011dGVkIiwiX3JlYWRPbmx5QXV0b1BhdXNlZCIsImF1dG9QYXVzZWQiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwidG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQbGF5aW5nIiwicGxheWluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlUYXJnZXRMYWciLCJfcmVhZE9ubHlMYWciLCJsYWciLCJfcmVhZE9ubHlCaXRyYXRlTGltaXQiLCJiaXRyYXRlTGltaXQiLCJfcmVhZE9ubHlSZXNvbHV0aW9uIiwicmVzb2x1dGlvbiIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsImZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiZW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJzdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsImNoYW5uZWxEaXNwb3NhYmxlcyIsIl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIiLCJoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCIsIl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsImNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkIiwiaXNFbmFibGVkIiwiX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVyRGlzcG9zYWJsZXMiLCJ2aWRlb1RlbGVtZXRyeSIsImRhdGFzZXQiLCJzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lIiwic2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nIiwiU3RvcHBlZCIsInJlc3RhcnRBZnRlclN0b3AiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQbGF5aW5nIiwib25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzIiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiY2hhbm5lbEluaXRpYWxpemF0aW9uIiwiZ2V0VGltZSIsImxpbWl0Qml0cmF0ZSIsIktlZXAiLCJOb3JtYWwiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsInN0YXJ0IiwicGF1c2UiLCJzcmNPYmplY3QiLCJJbml0aWFsaXppbmciLCJ3aWR0aCIsInZpZGVvV2lkdGgiLCJoZWlnaHQiLCJ2aWRlb0hlaWdodCIsImVtcHR5IiwiZGlzcG9zYWJsZXMiLCJzZXRCaXRyYXRlTGltaXQiLCJjbGVhckJpdHJhdGVMaW1pdCIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJSZXNldCIsInVwZGF0ZVRhcmdldExhZyIsIl9zdG9wIiwicmVhc29uIiwiaXNTdGFydGluZyIsInByb2Nlc3NTdG9wIiwic3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVBsYXllciIsIl9jb250ZXh0NSIsIlN0YXJ0aW5nIiwiVW5hdXRob3JpemVkIiwidmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtIiwiQ29uZmlndXJhdGlvbkVycm9yIiwidmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luayIsImlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJSZWNvdmVyaW5nIiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInRpbWVvdXRJZCIsImdldFJldHJ5SW50ZXJ2YWwiLCJfcmVzdGFydEFmdGVyU3RvcCIsIl9jYWxsZWU2IiwiX2NvbnRleHQ2IiwiX3BsYXkiLCJfY2FsbGVlNyIsIl9jb250ZXh0NyIsInBsYXkiLCJTdGFuZEJ5IiwiT2ZmbGluZSIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUGF1c2VkIiwiUmVjb25uZWN0aW5nIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsIl90aGlzNiIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJkZXN0cm95U3RyZWFtIiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsIl90aGlzNyIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5IiwiY2FwYWJpbGl0eSIsInNob3VsZEV4dHJhY3RUaW1lY29kZSIsInNob3VsZEV4dHJhY3RUaW1lc3RhbXBzIiwiaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCIsIm9wdGlvbiIsInRyaW0iLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzOCIsInBsYXlQcm9taXNlIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsIm9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3MiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiX29wdGlvbnMkb25SZWFsVGltZVN1IiwiX29wdGlvbnMkb25SZWFsVGltZVN1MiIsInJ0Y0F1ZGlvU3RhdGlzdGljIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzIiwiYXVkaW9UcmFjayIsIm1lZGlhU3RyZWFtVHJhY2siLCJyZWNlaXZlciIsIm1pZCIsInRyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMiLCJ2aWRlb1RyYWNrIiwiQXVkaW9Db2RlYyIsIkF1ZGlvQ29kZWNNYXBwaW5nIiwiY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlIiwiT1BVUyIsIkFBQyIsImNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWNUeXBlIiwiYXVkaW9Db2RlY1N0cmluZyIsInRvVXBwZXJDYXNlIiwiVmlkZW9Db2RlYyIsIlZpZGVvQ29kZWNNYXBwaW5nIiwiY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlIiwiSDI2NCIsIlZQOCIsIlZQOSIsImNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyIsInZpZGVvQ29kZWNUeXBlIiwidmlkZW9Db2RlY1N0cmluZyIsIlVpbnQ4QXJyYXkiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJyYWNlIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsImNsaWVudFZlcnNpb24iLCJyZXF1ZXN0Qm9keSIsImh0dHBSZXNwb25zZSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjIiLCJfcmVzcG9uc2UiLCJzdWJzY3JpYmVSZXNwb25zZSIsImJ1aWxkVXJsIiwiYmVhcmVyVG9rZW4iLCJodHRwUm91bmRUcmlwVGltZSIsInNlc3Npb25EZXNjcmlwdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbiIsIm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwiY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJjYW5kaWRhdGVzIiwiZGlzY292ZXJ5Q29tcGxldGVkIiwiYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2FyZ3M2IiwibWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDEzIiwiX3gxNCIsIl94MTUiLCJfZGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50Iiwic2VuZEJlYWNvbiIsIl94MTgiLCJfeDE5IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlIiwicnRjQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJvdGhlclByb3BlcnRpZXMiLCJqc29uIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiX29iamVjdFNwcmVhZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsIl94MjAiLCJfeDIxIiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsIl9jYWxsZWUwIiwicHVibGlzaFJlc3BvbnNlIiwiX2NvbnRleHQwIiwiX3gyMiIsIl94MjMiLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwiX3gyNCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyNiIsIlRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyIiwiY29udGV4dCIsIk1hcCIsImNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwic2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJzZXR1cEZyYW1lVGltaW5nSW5mb3JtYXRpb25UcmFuc2Zvcm0iLCJ0cmFja0lkIiwiZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0IiwiaXNFbmFibGVkU3ViamVjdCIsInJlZ2lzdGVyUm91dGUiLCJGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlIiwiX3RyYW5zZm9ybU5hbWUiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJydHBUaW1lc3RhbXAiLCJtZXRhZGF0YSIsInJ0cFRpbWVzdGFtcE51bWJlciIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbiIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbjIiLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwidGltZWNvZGUiLCJyZWNlaXZlVGltZXN0YW1wIiwic291cmNlVGltZXN0YW1wIiwiaW5nZXN0VGltZXN0YW1wIiwiZW5jb2RlVGltZXN0YW1wIiwidHJhbnNjb2RlVGltZXN0YW1wIiwicGxheWJhY2tTdGF0ZSIsIl9jdXJyZW50UGxheWJhY2tTdGF0ZSIsIl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wIiwidmlkZW9FbGVtZW50U3ViamVjdCIsImNsZWFyIiwiX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzIiwic2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzIiwiaGFuZGxlVmlkZW9GcmFtZUNhbGxiYWNrIiwiX2FybVZpZGVvRnJhbWVDYWxsYmFjayIsInRpbWVzdGFtcHNUb0RlbGV0ZSIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwiX3N0ZXAkdmFsdWUiLCJmcmFtZVRpbWluZyIsInJlbmRlclRpbWVzdGFtcCIsInBlcmZvcm1hbmNlIiwidGltZU9yaWdpbiIsImVyciIsIl9pMiIsIl90aW1lc3RhbXBzVG9EZWxldGUiLCJkZWxldGUiLCJvblBsYXlpbmciLCJvblBhdXNlIiwib25TdGFsbGVkIiwib25XYWl0aW5nIiwib25FbmRlZCIsIm9uRXJyb3IiLCJfYXJtZWRWaWRlb0ZyYW1lQ2FsbGJhY2tJZCIsImNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayIsIkNodW5rZWRTdHJlYW1pbmciLCJOZXR3b3JrU3RhdGVzIiwiQ2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSIsIkNodW5rZWRTdHJlYW0iLCJjaGFubmVsQ29udGV4dCIsImNodW5rZWRTdHJlYW1QbGF5YmFja01vZGUiLCJfY2h1bmtlZFN0cmVhbVBsYXliYWNrTW9kZSIsIl9jcmVhdGVPZmZlckRlc2NyaXB0aSIsIm9mZmVyU2RwIiwib3JpZ2luU3RhcnRUaW1lIiwicmV0cnlPblN0cmVhbUZhaWx1cmUiLCJwbGF5ZXIiLCJtb25pdG9yIiwiX21vbml0b3JGYWlsdXJlQ291bnQiLCJfbW9uaXRvckRpc3Bvc2FibGVzIiwiX3RoaXMzJF9jaGFubmVsQ29udGV4IiwiX3RoaXMzJF9jaGFubmVsQ29udGV4MiIsIl90aGlzMyRfY2hhbm5lbENvbnRleDMiLCJfdGhpczMkX2NoYW5uZWxDb250ZXg0IiwiX3RoaXMzJF9jaGFubmVsQ29udGV4NSIsIm5ld1N0cmVhbVN0YXRpc3RpY3MiLCJMaXZlIiwibmV0d29ya1N0YXRlIiwiTmV0d29ya05vU291cmNlIiwiY3VycmVudFRpbWUiLCJkdXJhdGlvbiIsIl9zdHJlYW1TdGF0aXN0aWNzIiwicGF1c2VkIiwiZGF0YUJ1ZmZlcmVkIiwiV2ViUGxheWVyIiwiU2hha2FQbGF5ZXIiLCJIbHNQbGF5ZXIiLCJfaGxzUGxheWVyIiwiX3BoZW5peFdlYlBsYXllciIsIl9zaGFrYSIsIl9vcHRpb25zIiwibG9hZGVkIiwiX3BlbmRpbmciLCJfcGxheWVyIiwiUGxheWVyIiwiZGFzaE1hbmlmZXN0VXJsTWF0Y2giLCJobHNNYW5pZmVzdFVybE1hdGNoIiwibWFuaWZlc3RVcmwiLCJwbGF5bGlzdFVybCIsInNob3VsZFVzZU5hdGl2ZUhscyIsInByZWZlck5hdGl2ZSIsIm1hbmlmZXN0VVJJIiwiX3ZpZGVvRWxlbWVudCIsIl9raW5kIiwiX3N0cmVhbUlkIiwiX21hbmlmZXN0VVJJIiwiZW5jb2RlVVJJIiwicmVwbGFjZSIsImhsc1BsYXllciIsImVuYWJsZVdvcmtlciIsIm1heEJ1ZmZlckxlbmd0aCIsImJhY2tCdWZmZXJMZW5ndGgiLCJsaXZlU3luY0R1cmF0aW9uIiwibGl2ZUR1cmF0aW9uSW5maW5pdHkiLCJsaXZlTWF4TGF0ZW5jeUR1cmF0aW9uIiwiSW5maW5pdHkiLCJoaWdoQnVmZmVyV2F0Y2hkb2dQZXJpb2QiLCJsb2FkU291cmNlIiwiYXR0YWNoTWVkaWEiLCJjYW5QbGF5VHlwZSIsInN0YXRpc3RpY3MiLCJtZWRpYSIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiTmV0d29ya0lkbGUiLCJidWZmZXJlZCIsImVuZCIsInN0cmVhbUNvbnRyb2xsZXIiLCJOZXR3b3JrTG9hZGluZyIsIk5ldHdvcmtFbXB0eSIsInRydWVDdXJyZW50VGltZSIsIm1heCIsImRlc3Ryb3kiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSW5zZXJ0YWJsZVN0cmVhbXMiLCJFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0IiwiUmVhbFRpbWVTdHJlYW0iLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQiLCJyZXF1aXJlc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImFsbCIsIl9yZWYzIiwiX3JlZjMkIiwic3Vic2NyaWJlT3B0aW9ucyIsImNsaWVudE9mZmVyRGlzYWJsZWQiLCJzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24iLCJzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24iLCJhcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJzdWJtaXRDYW5kaWRhdGVzVGltZW91dCIsImNhbmNlbERpc2NvdmVyeSIsImNhbmRpZGF0ZSIsIl90aGlzJF9jaGFubmVsQ29udGV4dCIsIl9yZWY0IiwicmV0cnlDYWxsYmFjayIsIm5hdmlnYXRvcklzT25MaW5lIiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJtZWRpYVN0cmVhbVByb21pc2UiLCJvblRyYWNrRGlzYWJsZWQiLCJzdHJlYW1zIiwidHJhY2tMaXN0ZW5lciIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJfdGhpcyRfY2hhbm5lbENvbnRleHQyIiwiX3BlZXJDb25uZWN0aW9uJGdldFRyIiwiX3BlZXJDb25uZWN0aW9uJGdldFRyMiIsInBhcnNlZFJlbW90ZURlc2NyaXB0aW9uIiwicmVjZWl2ZXJzIiwiZ2V0VmlkZW9UcmFja3MiLCJ2aWRlb1RyYWNrUmVjZWl2ZXIiLCJzdXBwb3J0c0dldFRyYW5zY2VpdmVycyIsInRyYW5zY2VpdmVyIiwiZ2V0QXVkaW9UcmFja3MiLCJhdWRpb1RyYWNrUmVjZWl2ZXIiLCJjcmVhdGVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJyZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJmcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHQiLCJyZXF1aXJlc0VuY29kZWRNZWRpYVRyYW5zZm9ybSIsImVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0IiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiX0luc2VydGFibGVTdHJlYW1zJGNvIiwiY29uZmlndXJlSW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtZWRTdHJlYW0iLCJydGNDb25uZWN0aW9uTW9uaXRvciIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uIiwicnRjU3RhdGlzdGljIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlMiIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiX21vbml0b3JlZFN0YXRpc3RpY3MiLCJlc3RpbWF0ZWRCYW5kd2lkdGgiLCJwbGF5VGltZSIsInNoYWthIiwicGxheWVyT3B0aW9ucyIsImFiciIsImRlZmF1bHRCYW5kd2lkdGhFc3RpbWF0ZSIsIm1hbmlmZXN0IiwicmV0cnlQYXJhbWV0ZXJzIiwic3RyZWFtaW5nIiwibGl2ZVN5bmNQYW5pY1RocmVzaG9sZCIsImJ1ZmZlcmluZ0dvYWwiLCJidWZmZXJCZWhpbmQiLCJtYXhBdHRlbXB0cyIsImJhY2tvZmZGYWN0b3IiLCJsb2FkUGxheWVyIiwidW5sb2FkIiwicGxheWVyQ29uZmlnIiwiX3RoaXMkX3BsYXllciIsIl90aGlzJF9wbGF5ZXIyIiwiX3RoaXMkX3BsYXllcjQiLCJjb25maWd1cmUiLCJlcnJvckhhbmRsZXIiLCJfdGhpcyRfcGxheWVyMyIsImxvYWQiLCJjb2RlIiwidG9rZW5DYXBhYmlsaXRpZXMiLCJoYXNTdHJlYW1pbmciLCJoYXNPbkRlbWFuZCIsIk9uZERlbWFuZCIsImJhbmR3aWR0aFRvU3RhcnRBdCIsIm1pblRpbWVCZWZvcmVOZXh0UmVsb2FkIiwiX2xhc3RSZWxvYWRUaW1lIiwicGhlbml4V2ViUGxheWVyIiwiZXJyb3JPYmplY3QiLCJjYW5SZWxvYWQiLCJzZXZlcml0eSIsImVycm9ycyIsIlJFQ09WRVJBQkxFIiwicmVsb2FkSWZBYmxlIiwiX3RoaXMkX3ZpZGVvRWxlbWVudCRiIiwiX3RoaXMkX3ZpZGVvRWxlbWVudCRiMiIsImlzTmF0aXZlIiwiZGVsaXZlcnlUeXBlIiwiaGFzRWxhcHNlZE1pblRpbWVTaW5jZUxhc3RSZWxvYWQiLCJyZWxvYWQiLCJTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiU2tpcEZyYW1lIiwiRW5jb2RlZFZpZGVvQ2h1bmsiLCJjaHVuayIsImVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwiRW5jb2RlZEF1ZGlvQ2h1bmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsIl9lbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiX2VuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJtb2RlIiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsImNvbnN0cnVjdG9yIiwiZnJvbSIsIlRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIiwiVHJhbnNmb3JtTWVzc2FnZVR5cGUiLCJUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIiwiY3JlYXRlVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJGb3JUcmFjayIsIndvcmtlciIsInRlcm1pbmF0ZSIsInZpZGVvVHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwiYXVkaW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJfY29uZmlndXJlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwiYWRkVHJhY2tUcmFuc2Zvcm1zIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXMiLCJ0cmFuc2Zvcm1GdW5jdGlvbk5hbWUiLCJwb3N0TWVzc2FnZSIsIkFkZFRyYW5zZm9ybSIsImNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrIiwidHJhY2tSZWNlaXZlciIsInRyYWNrTWVkaWFTdHJlYW1UcmFjayIsInRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIiLCJ0cmFuc2Zvcm0iLCJQaXBlbGluZUNvbmZpZ3VyZWQiLCJvbmNlIiwiY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayIsImFjdGlvbnMiLCJlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zIiwiQ29uZmlndXJlUGlwZWxpbmUiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ0cmFuc2ZlciIsImluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwicmVtb3ZlVHJhY2siLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImFubmV4QkZvdXJCeXRlU3RhcnRDb2RlIiwic3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lIiwic3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl9pc1NhZmFyaSIsIl9zdXJyb2dhdGUyOHgxNkgyNjRJRnJhbWUiLCJfZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjIiwiX2lzQW5kcm9pZENocm9tZSIsIl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9zdXJyb2dhdGUyOHgxNkgyNjRQRnJhbWUiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIiLCJtZXNzYWdlVHlwZSIsInJvdXRlTWVzc2FnZSIsIl9tZXNzYWdlUm91dGVzIiwicm91dGVNZXNzYWdlRGF0YSIsIkNodW5rIiwiTWV0YWRhdGEiLCJfX0JVSUxEX1ZFUlNJT05fXyIsIl9kZWZhdWx0VmVyc2lvbiIsIlRlbGVtZXRyeVNlcnZpY2UiLCJfdGVsZW1ldHJ5U2VydmljZSIsInZhbHVlT2YiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWluIiwib3RoZXIiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9uZXR3b3JrTW9uaXRvciIsImlzRm9yZWdyb3VuZCIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJmbG9hdCIsIm5vb3AiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJldmVudCIsIm9uQ29udGludWF0aW9uIiwiX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciIsInB1c2hUaW1lVG9GaXJzdEZyYW1lIiwicHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdGltZVRvRmlyc3RGcmFtZSIsImR1cmF0aW9uU2luY2VQYWdlTG9hZCIsIl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3ZpZGVvU3RhbGxlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
|