@bitgo/sdk-coin-flrp 1.8.0 → 1.9.0

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.
Files changed (30) hide show
  1. package/dist/src/flrp.d.ts +8 -0
  2. package/dist/src/flrp.d.ts.map +1 -1
  3. package/dist/src/flrp.js +43 -1
  4. package/dist/src/lib/iface.d.ts +12 -2
  5. package/dist/src/lib/iface.d.ts.map +1 -1
  6. package/dist/src/lib/iface.js +1 -1
  7. package/dist/src/lib/index.d.ts +1 -0
  8. package/dist/src/lib/index.d.ts.map +1 -1
  9. package/dist/src/lib/index.js +4 -2
  10. package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts +108 -0
  11. package/dist/src/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/permissionlessDelegatorTxBuilder.js +268 -0
  13. package/dist/src/lib/transaction.d.ts.map +1 -1
  14. package/dist/src/lib/transaction.js +30 -8
  15. package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
  16. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  17. package/dist/src/lib/transactionBuilderFactory.js +14 -1
  18. package/dist/src/lib/utils.d.ts +6 -0
  19. package/dist/src/lib/utils.d.ts.map +1 -1
  20. package/dist/src/lib/utils.js +24 -1
  21. package/dist/test/resources/transactionData/delegatorTx.d.ts +83 -0
  22. package/dist/test/resources/transactionData/delegatorTx.d.ts.map +1 -0
  23. package/dist/test/resources/transactionData/delegatorTx.js +77 -0
  24. package/dist/test/unit/flrp.js +72 -1
  25. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts +2 -0
  26. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.d.ts.map +1 -0
  27. package/dist/test/unit/lib/permissionlessDelegatorTxBuilder.js +235 -0
  28. package/dist/test/unit/lib/utils.js +11 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +6 -6
@@ -12,6 +12,9 @@ const secp256k1_1 = require("@bitgo/secp256k1");
12
12
  const iface_1 = require("./iface");
13
13
  const bs58_1 = __importDefault(require("bs58"));
14
14
  const bech32_1 = require("bech32");
15
+ // NodeID format constants
16
+ const NODE_ID_PREFIX = 'NodeID-';
17
+ const NODE_ID_DECODED_LENGTH = 24;
15
18
  class Utils {
16
19
  constructor() {
17
20
  /**
@@ -157,6 +160,26 @@ class Utils {
157
160
  allHexChars(str) {
158
161
  return /^(0x){0,1}([0-9a-f])+$/i.test(str);
159
162
  }
163
+ /**
164
+ * Validates a NodeID format
165
+ * @param {string} nodeID - NodeID to validate (e.g., "NodeID-xxx")
166
+ * @returns {boolean} - true if valid, false otherwise
167
+ */
168
+ isValidNodeID(nodeID) {
169
+ if (!nodeID) {
170
+ return false;
171
+ }
172
+ if (!nodeID.startsWith(NODE_ID_PREFIX)) {
173
+ return false;
174
+ }
175
+ try {
176
+ const decoded = bs58_1.default.decode(nodeID.slice(NODE_ID_PREFIX.length));
177
+ return decoded.length === NODE_ID_DECODED_LENGTH;
178
+ }
179
+ catch {
180
+ return false;
181
+ }
182
+ }
160
183
  /**
161
184
  * Creates a signature using the Flare network parameters
162
185
  * Returns a 65-byte signature (64 bytes signature + 1 byte recovery parameter)
@@ -507,4 +530,4 @@ class Utils {
507
530
  exports.Utils = Utils;
508
531
  const utils = new Utils();
509
532
  exports.default = utils;
510
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVUrQjtBQUMvQiw4Q0FPeUI7QUFFekIsbUNBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxnREFBdUM7QUFDdkMsbUNBQW1HO0FBQ25HLGdEQUF3QjtBQUN4QixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBQWxCO1FBNlBFOztXQUVHO1FBQ0ksb0JBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxNQUFjLEVBQUUsT0FBZSxFQUFVLEVBQUU7WUFDaEYsK0RBQStEO1lBQy9ELE1BQU0sS0FBSyxHQUFHLGVBQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsK0VBQStFO1lBQy9FLE9BQU8sR0FBRyxNQUFNLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxDQUFDLENBQUM7UUEyQ0YsbURBQW1EO1FBRW5EOzs7O1dBSUc7UUFDSSxpQkFBWSxHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztRQUVLLG9CQUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsR0FBWSxFQUFVLEVBQUU7WUFDakUsdUJBQXVCO1lBQ3ZCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsbUNBQW1DO1lBQ25DLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sZUFBTSxDQUFDLElB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LElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV0RSxxRUFBcUU7UUFDckUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sWUFBWSxHQUFHLHNCQUFZLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUYsK0NBQStDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSx3QkFBYyxDQUFDLElBQUksa0JBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RSw2QkFBNkI7UUFDN0IsT0FBTyxJQUFJLGNBQUksQ0FBQyxNQUFNLEVBQUUsWUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxjQUFjLENBQUMsWUFBOEIsRUFBRSxPQUFlO1FBQ25FLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFqaUJELHNCQWlpQkM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQzFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUcmFuc2Zlck91dHB1dCxcbiAgVHlwZVN5bWJvbHMsXG4gIElkLFxuICBVdHhvLFxuICBCaWdJbnRQcixcbiAgT3V0cHV0T3duZXJzLFxuICBhdmF4U2VyaWFsLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHtcbiAgQmFzZVV0aWxzLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGlzVmFsaWRYcHJ2LFxuICBpc1ZhbGlkWHB1YixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBBRERSRVNTX1NFUEFSQVRPUiwgRGVjb2RlZFV0eG9PYmosIE91dHB1dCwgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFkZHJlc3NlcyBpbiB3YWxsZXQgbWF0Y2ggVVRYTyBvdXRwdXQgYWRkcmVzc2VzXG4gICAqL1xuICBwdWJsaWMgaW5jbHVkZUluKHdhbGxldEFkZHJlc3Nlczogc3RyaW5nW10sIG90eG9PdXRwdXRBZGRyZXNzZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdhbGxldEFkZHJlc3Nlcy5tYXAoKGEpID0+IG90eG9PdXRwdXRBZGRyZXNzZXMuaW5jbHVkZXMoYSkpLnJlZHVjZSgoYSwgYikgPT4gYSAmJiBiLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBGbGFyZSBhZGRyZXNzIG9yIGFycmF5IG9mIGFkZHJlc3Nlc1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhZGRyZXNzIC0gYWRkcmVzcyhlcykgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWRkcmVzc0Fycjogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KGFkZHJlc3MpID8gYWRkcmVzcyA6IGFkZHJlc3Muc3BsaXQoJ34nKTtcblxuICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBhZGRyZXNzQXJyKSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3NSZWdleChhZGRyZXNzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRBZGRyZXNzUmVnZXgoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eKF5QfHxOb2RlSUQpLVthLXpBLVowLTldKyQvLnRlc3QoYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgYmxvY2sgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhc2ggLSBibG9jayBJRCB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBCdWZmZXIuZnJvbShoYXNoLCAnaGV4Jyk7XG4gICAgICByZXR1cm4gZGVjb2RlZC5sZW5ndGggPT09IDMyO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzVmFsaWRYcHViKHB1YikpIHJldHVybiB0cnVlO1xuXG4gICAgbGV0IHB1YkJ1ZjogQnVmZmVyO1xuICAgIGlmIChwdWIubGVuZ3RoID09PSA1MCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcHViQnVmID0gQnVmZmVyLmZyb20ocHViLCAnaGV4Jyk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHViLmxlbmd0aCAhPT0gNjYgJiYgcHViLmxlbmd0aCAhPT0gMTMwKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGZpcnN0Qnl0ZSA9IHB1Yi5zbGljZSgwLCAyKTtcbiAgICAgIGlmIChwdWIubGVuZ3RoID09PSAxMzAgJiYgZmlyc3RCeXRlICE9PSAnMDQnKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAocHViLmxlbmd0aCA9PT0gNjYgJiYgZmlyc3RCeXRlICE9PSAnMDInICYmIGZpcnN0Qnl0ZSAhPT0gJzAzJykgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLmFsbEhleENoYXJzKHB1YikpIHJldHVybiBmYWxzZTtcblxuICAgICAgcHViQnVmID0gQnVmZmVyLmZyb20ocHViLCAnaGV4Jyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGVjYy5pc1BvaW50KHB1YkJ1Zik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHByaXZhdGUga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaXNWYWxpZFhwcnYocHJ2KSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKHBydi5sZW5ndGggIT09IDY0ICYmIHBydi5sZW5ndGggIT09IDY2KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHBydi5sZW5ndGggPT09IDY2ICYmIHBydi5zbGljZSg2NCkgIT09ICcwMScpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5hbGxIZXhDaGFycyhwcnYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHN0cmluZyBjb250YWlucyBvbmx5IGhleCBjaGFyYWN0ZXJzXG4gICAqL1xuICBhbGxIZXhDaGFycyhzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXigweCl7MCwxfShbMC05YS1mXSkrJC9pLnRlc3Qoc3RyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2lnbmF0dXJlIHVzaW5nIHRoZSBGbGFyZSBuZXR3b3JrIHBhcmFtZXRlcnNcbiAgICogUmV0dXJucyBhIDY1LWJ5dGUgc2lnbmF0dXJlICg2NCBieXRlcyBzaWduYXR1cmUgKyAxIGJ5dGUgcmVjb3ZlcnkgcGFyYW1ldGVyKVxuICAgKi9cbiAgY3JlYXRlU2lnbmF0dXJlKG5ldHdvcms6IEZsYXJlTmV0d29yaywgbWVzc2FnZTogQnVmZmVyLCBwcnY6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgbWVzc2FnZUhhc2ggPSB0aGlzLnNoYTI1NihtZXNzYWdlKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBlY2Muc2lnbihtZXNzYWdlSGFzaCwgcHJ2KTtcblxuICAgIC8vIEdldCB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBwcml2YXRlIGtleSBmb3IgcmVjb3ZlcnkgcGFyYW1ldGVyIGRldGVybWluYXRpb25cbiAgICBjb25zdCBwdWJsaWNLZXkgPSBlY2MucG9pbnRGcm9tU2NhbGFyKHBydiwgdHJ1ZSk7XG4gICAgaWYgKCFwdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlcml2ZSBwdWJsaWMga2V5IGZyb20gcHJpdmF0ZSBrZXknKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgcmVjb3Zlcnkgd2l0aCBwYXJhbSAwIGFuZCAxIHRvIGZpbmQgdGhlIGNvcnJlY3Qgb25lXG4gICAgbGV0IHJlY292ZXJ5UGFyYW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDE7IGkrKykge1xuICAgICAgY29uc3QgcmVjb3ZlcmVkID0gZWNjLnJlY292ZXJQdWJsaWNLZXkobWVzc2FnZUhhc2gsIHNpZ25hdHVyZSwgaSwgdHJ1ZSk7XG4gICAgICBpZiAocmVjb3ZlcmVkICYmIEJ1ZmZlci5mcm9tKHJlY292ZXJlZCkuZXF1YWxzKEJ1ZmZlci5mcm9tKHB1YmxpY0tleSkpKSB7XG4gICAgICAgIHJlY292ZXJ5UGFyYW0gPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBlbmQgcmVjb3ZlcnkgcGFyYW1ldGVyIHRvIGNyZWF0ZSA2NS1ieXRlIHNpZ25hdHVyZVxuICAgIGNvbnN0IHNpZ1dpdGhSZWNvdmVyeSA9IEJ1ZmZlci5hbGxvYyg2NSk7XG4gICAgQnVmZmVyLmZyb20oc2lnbmF0dXJlKS5jb3B5KHNpZ1dpdGhSZWNvdmVyeSwgMCk7XG4gICAgc2lnV2l0aFJlY292ZXJ5WzY0XSA9IHJlY292ZXJ5UGFyYW07XG5cbiAgICByZXR1cm4gc2lnV2l0aFJlY292ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtZXNzYWdlSGFzaCAtIFRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgbWVzc2FnZSAoZS5nLiwgc2lnbmFibGVQYXlsb2FkKVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIC0gVGhlIDY0LWJ5dGUgc2lnbmF0dXJlICh3aXRob3V0IHJlY292ZXJ5IHBhcmFtZXRlcilcbiAgICogQHBhcmFtIHB1YmxpY0tleSAtIFRoZSBwdWJsaWMga2V5IHRvIHZlcmlmeSBhZ2FpbnN0XG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkXG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmUobWVzc2FnZUhhc2g6IEJ1ZmZlciwgc2lnbmF0dXJlOiBCdWZmZXIsIHB1YmxpY0tleTogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlY2MudmVyaWZ5KG1lc3NhZ2VIYXNoLCBwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHNpZ25hdHVyZSBvYmplY3RcbiAgICovXG4gIGNyZWF0ZU5ld1NpZyhzaWdIZXg6IHN0cmluZyk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc2lnSGV4LnBhZFN0YXJ0KDEzMCwgJzAnKSwgJ2hleCcpO1xuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGJ1ZmZlcik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlbXB0eSBzaWduYXR1cmUgd2l0aCBlbWJlZGRlZCBhZGRyZXNzIGZvciBzaWduYXR1cmUgc2xvdCBpZGVudGlmaWNhdGlvbi5cbiAgICogVGhlIGFkZHJlc3MgaXMgZW1iZWRkZWQgYXQgcG9zaXRpb24gOTAgKGFmdGVyIHRoZSBmaXJzdCA0NSB6ZXJvIGJ5dGVzKS5cbiAgICogVGhpcyBhbGxvd3MgdGhlIHNpZ25pbmcgbG9naWMgdG8gZGV0ZXJtaW5lIHdoaWNoIHNsb3QgYmVsb25ncyB0byB3aGljaCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gYWRkcmVzc0hleCBUaGUgMjAtYnl0ZSBhZGRyZXNzIGluIGhleCBmb3JtYXQgKDQwIGNoYXJzLCB3aXRob3V0IDB4IHByZWZpeClcbiAgICovXG4gIGNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoYWRkcmVzc0hleDogc3RyaW5nKTogU2lnbmF0dXJlIHtcbiAgICAvLyBGaXJzdCA0NSBieXRlcyAoOTAgaGV4IGNoYXJzKSBhcmUgemVyb3MsIGZvbGxvd2VkIGJ5IDIwLWJ5dGUgYWRkcmVzcyAoNDAgaGV4IGNoYXJzKVxuICAgIGNvbnN0IGNsZWFuQWRkciA9IHRoaXMucmVtb3ZlSGV4UHJlZml4KGFkZHJlc3NIZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3Qgc2lnSGV4ID0gJzAnLnJlcGVhdCg5MCkgKyBjbGVhbkFkZHIucGFkU3RhcnQoNDAsICcwJyk7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc2lnSGV4LCAnaGV4Jyk7XG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoYnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgZW1iZWRkZWQgYWRkcmVzcyBmcm9tIGFuIGVtcHR5IHNpZ25hdHVyZS5cbiAgICogUmV0dXJucyB0aGUgYWRkcmVzcyBoZXggc3RyaW5nICg0MCBjaGFycykgb3IgZW1wdHkgc3RyaW5nIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGdldEFkZHJlc3NGcm9tRW1wdHlTaWcoc2lnOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFuU2lnID0gdGhpcy5yZW1vdmVIZXhQcmVmaXgoc2lnKTtcbiAgICBpZiAoY2xlYW5TaWcubGVuZ3RoID49IDEzMCkge1xuICAgICAgLy8gQWRkcmVzcyBpcyBhdCBwb3NpdGlvbiA5MC0xMzAgKGxhc3QgNDAgaGV4IGNoYXJzID0gMjAgYnl0ZXMpXG4gICAgICByZXR1cm4gY2xlYW5TaWcuc3Vic3RyaW5nKDkwLCAxMzApLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBTSEEyNTYgaGFzaFxuICAgKi9cbiAgc2hhMjU2KGJ1ZjogVWludDhBcnJheSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShidWYpLmRpZ2VzdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyByYXcgdHJhbnNhY3Rpb24gZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWxsSGV4Q2hhcnMocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgbm90IGhleCBzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG91dHB1dCBpcyBUcmFuc2ZlcmFibGVPdXRwdXQgdHlwZVxuICAgKi9cbiAgaXNUcmFuc2ZlcmFibGVPdXRwdXQob3V0cHV0OiBPdXRwdXQpOiBvdXRwdXQgaXMgVHJhbnNmZXJhYmxlT3V0cHV0IHtcbiAgICByZXR1cm4gb3V0cHV0Py5fdHlwZSA9PT0gVHlwZVN5bWJvbHMuVHJhbnNmZXJhYmxlT3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgb3V0cHV0cyB0byBlbnRyeSBmb3JtYXRcbiAgICovXG4gIG1hcE91dHB1dFRvRW50cnkobmV0d29yazogRmxhcmVOZXR3b3JrKTogKE91dHB1dCkgPT4gRW50cnkge1xuICAgIHJldHVybiAob3V0cHV0OiBPdXRwdXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzVHJhbnNmZXJhYmxlT3V0cHV0KG91dHB1dCkpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0LmFtb3VudCgpO1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gKG91dHB1dC5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQpXG4gICAgICAgICAgLmdldE93bmVycygpXG4gICAgICAgICAgLm1hcCgoYSkgPT4gdGhpcy5hZGRyZXNzVG9TdHJpbmcobmV0d29yay5ocnAsIG5ldHdvcmsuYWxpYXMsIEJ1ZmZlci5mcm9tKGEpKSlcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBvdXRwdXRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG91dHB1dCB0eXBlJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIDB4IHByZWZpeCBmcm9tIGhleCBzdHJpbmdcbiAgICovXG4gIHJlbW92ZUhleFByZWZpeChoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhleC5zdGFydHNXaXRoKCcweCcpID8gaGV4LnN1YnN0cmluZygyKSA6IGhleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBvdXRwdXQgaW5kZXggdG8gYnVmZmVyXG4gICAqL1xuICBvdXRwdXRpZHhOdW1iZXJUb0J1ZmZlcihvdXRwdXRpZHg6IHN0cmluZyk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKE51bWJlcihvdXRwdXRpZHgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCAnMCcpLCAnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgb3V0cHV0IGluZGV4IGJ1ZmZlciB0byBudW1iZXIgc3RyaW5nXG4gICAqL1xuICBvdXRwdXRpZHhCdWZmZXJUb051bWJlcihvdXRwdXRpZHg6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhcnNlSW50KG91dHB1dGlkeC50b1N0cmluZygnaGV4JyksIDE2KS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY29udmVydCBhZGRyZXNzIGNvbXBvbmVudHMgdG8gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkcmVzc1RvU3RyaW5nID0gKGhycDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgYWRkcmVzczogQnVmZmVyKTogc3RyaW5nID0+IHtcbiAgICAvLyBDb252ZXJ0IHRoZSBhZGRyZXNzIGJ5dGVzIHRvIDUtYml0IHdvcmRzIGZvciBiZWNoMzIgZW5jb2RpbmdcbiAgICBjb25zdCB3b3JkcyA9IGJlY2gzMi50b1dvcmRzKGFkZHJlc3MpO1xuICAgIC8vIENyZWF0ZSB0aGUgZnVsbCBiZWNoMzIgYWRkcmVzcyB3aXRoIGZvcm1hdDogUC17aHJwfTF7YmVjaDMyX2VuY29kZWRfYWRkcmVzc31cbiAgICByZXR1cm4gYCR7cHJlZml4fS0ke2JlY2gzMi5lbmNvZGUoaHJwLCB3b3Jkcyl9YDtcbiAgfTtcblxuICAvKipcbiAgICogRGVjb2RlcyBhIGJhc2U1OCBzdHJpbmcgd2l0aCBjaGVja3N1bSB0byBhIEJ1ZmZlclxuICAgKi9cbiAgcHVibGljIGNiNThEZWNvZGUoc3RyOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiczU4LmRlY29kZShzdHIpO1xuICAgIGlmICghdGhpcy52YWxpZGF0ZUNoZWNrc3VtKEJ1ZmZlci5mcm9tKGRlY29kZWQpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoZWNrc3VtJyk7XG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIuZnJvbShkZWNvZGVkLnNsaWNlKDAsIGRlY29kZWQubGVuZ3RoIC0gNCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGNoZWNrc3VtIG9uIGEgQnVmZmVyIGFuZCByZXR1cm5zIHRydWUgaWYgdmFsaWQsIGZhbHNlIGlmIG5vdFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNoZWNrc3VtKGJ1ZmY6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc2hTbGljZSA9IGJ1ZmYuc2xpY2UoYnVmZi5sZW5ndGggLSA0KTtcbiAgICBjb25zdCBjYWxjdWxhdGVkSGFzaFNsaWNlID0gY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgIC51cGRhdGUoYnVmZi5zbGljZSgwLCBidWZmLmxlbmd0aCAtIDQpKVxuICAgICAgLmRpZ2VzdCgpXG4gICAgICAuc2xpY2UoMjgpO1xuICAgIHJldHVybiBoYXNoU2xpY2UudG9TdHJpbmcoJ2hleCcpID09PSBjYWxjdWxhdGVkSGFzaFNsaWNlLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgQnVmZmVyIGFzIGEgYmFzZTU4IHN0cmluZyB3aXRoIGNoZWNrc3VtXG4gICAqL1xuICBwdWJsaWMgY2I1OEVuY29kZShieXRlczogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3aXRoQ2hlY2tzdW0gPSB0aGlzLmFkZENoZWNrc3VtKGJ5dGVzKTtcbiAgICByZXR1cm4gYnM1OC5lbmNvZGUod2l0aENoZWNrc3VtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2hlY2tzdW0gdG8gYSBCdWZmZXIgYW5kIHJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRcbiAgICogVXNlcyBsYXN0IDQgYnl0ZXMgb2YgU0hBMjU2IGhhc2ggYXMgY2hlY2tzdW0gKG1hdGNoaW5nIGF2YXhwIGJlaGF2aW9yKVxuICAgKi9cbiAgcHVibGljIGFkZENoZWNrc3VtKGJ1ZmY6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICBjb25zdCBoYXNoU2xpY2UgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKS5zbGljZSgyOCk7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgaGFzaFNsaWNlXSkpO1xuICB9XG5cbiAgLy8gSW4gdXRpbHMudHMsIGFkZCB0aGlzIG1ldGhvZCB0byB0aGUgVXRpbHMgY2xhc3M6XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFuIGFkZHJlc3Mgc3RyaW5nIGludG8gYSBCdWZmZXJcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBwYXJzZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgY29udGFpbmluZyB0aGUgcGFyc2VkIGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBwYXJzZUFkZHJlc3MgPSAoYWRkcmVzczogc3RyaW5nKTogQnVmZmVyID0+IHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUb0FkZHJlc3MoYWRkcmVzcyk7XG4gIH07XG5cbiAgcHVibGljIHN0cmluZ1RvQWRkcmVzcyA9IChhZGRyZXNzOiBzdHJpbmcsIGhycD86IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gICAgLy8gSGFuZGxlIGhleCBhZGRyZXNzZXNcbiAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oYWRkcmVzcy5zbGljZSgyKSwgJ2hleCcpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSByYXcgaGV4IHdpdGhvdXQgMHggcHJlZml4XG4gICAgaWYgKC9eWzAtOWEtZkEtRl17NDB9JC8udGVzdChhZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFkZHJlc3MsICdoZXgnKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQmVjaDMyIGFkZHJlc3Nlc1xuICAgIGNvbnN0IHBhcnRzID0gYWRkcmVzcy50cmltKCkuc3BsaXQoJy0nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciAtIFZhbGlkIGFkZHJlc3Mgc2hvdWxkIGluY2x1ZGUgLScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwbGl0ID0gcGFydHNbMV0ubGFzdEluZGV4T2YoJzEnKTtcbiAgICBpZiAoc3BsaXQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gVmFsaWQgYmVjaDMyIGFkZHJlc3MgbXVzdCBpbmNsdWRlIHNlcGFyYXRvciAoMSknKTtcbiAgICB9XG5cbiAgICBjb25zdCBodW1hblJlYWRhYmxlUGFydCA9IHBhcnRzWzFdLnNsaWNlKDAsIHNwbGl0KTtcbiAgICBpZiAoaHVtYW5SZWFkYWJsZVBhcnQgIT09ICdmbGFyZScgJiYgaHVtYW5SZWFkYWJsZVBhcnQgIT09ICdjb3N0d28nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gSW52YWxpZCBIUlAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYmVjaDMyLmZyb21Xb3JkcyhiZWNoMzIuZGVjb2RlKHBhcnRzWzFdKS53b3JkcykpO1xuICB9O1xuXG4gIGZsYXJlSWRTdHJpbmcodmFsdWU6IHN0cmluZyk6IElkIHtcbiAgICByZXR1cm4gbmV3IElkKEJ1ZmZlci5mcm9tKHZhbHVlLCAnaGV4JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgYWRkcmVzc2VzIGxleGljb2dyYXBoaWNhbGx5IGJ5IHRoZWlyIGJ5dGUgcmVwcmVzZW50YXRpb24uXG4gICAqIFRoaXMgbWF0Y2hlcyBob3cgYWRkcmVzc2VzIGFyZSBzdG9yZWQgb24tY2hhaW4gaW4gQXZhbGFuY2hlL0ZsYXJlIFAtY2hhaW4gVVRYT3MuXG4gICAqXG4gICAqIElNUE9SVEFOVDogVGhpcyBzb3J0aW5nIE1VU1QgYmUgY29uc2lzdGVudCB3aXRoIEZsYXJlSlMncyBpbnRlcm5hbCBhZGRyZXNzIHNvcnRpbmcuXG4gICAqIEZsYXJlSlMgdXNlcyB0aGUgc2FtZSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb246IGBoZXhBLmxvY2FsZUNvbXBhcmUoaGV4QilgLlxuICAgKiBUaGUgc2lnSW5kaWNlcyBpbiB0cmFuc2FjdGlvbiBpbnB1dHMgZGVwZW5kIG9uIHRoaXMgc29ydGVkIG9yZGVyLCBzbyBhbnkgZGV2aWF0aW9uXG4gICAqIHdvdWxkIGNhdXNlIHNpZ25hdHVyZSBvcmRlciBtaXNtYXRjaGVzIGFuZCBvbi1jaGFpbiB2ZXJpZmljYXRpb24gZmFpbHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzZXMgLSBBcnJheSBvZiBiZWNoMzIgYWRkcmVzcyBzdHJpbmdzIChlLmcuLCBcIlAtY29zdHdvMS4uLlwiKVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBhZGRyZXNzZXMgc29ydGVkIGJ5IGhleCB2YWx1ZSAoYXNjZW5kaW5nIGxleGljb2dyYXBoaWMgb3JkZXIpXG4gICAqL1xuICBwdWJsaWMgc29ydEFkZHJlc3Nlc0J5SGV4KGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi5hZGRyZXNzZXNdLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFIZXggPSB0aGlzLnBhcnNlQWRkcmVzcyhhKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBiSGV4ID0gdGhpcy5wYXJzZUFkZHJlc3MoYikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgcmV0dXJuIGFIZXgubG9jYWxlQ29tcGFyZShiSGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IGFkZHJlc3MgYnVmZmVycyBsZXhpY29ncmFwaGljYWxseSBieSB0aGVpciBieXRlIHJlcHJlc2VudGF0aW9uLlxuICAgKiBUaGlzIG1hdGNoZXMgaG93IGFkZHJlc3NlcyBhcmUgc3RvcmVkIG9uLWNoYWluIGluIEF2YWxhbmNoZS9GbGFyZSBQLWNoYWluIFVUWE9zLlxuICAgKiBAcGFyYW0gYWRkcmVzc0J1ZmZlcnMgLSBBcnJheSBvZiBhZGRyZXNzIGJ5dGUgYnVmZmVyc1xuICAgKiBAcmV0dXJucyBBcnJheSBvZiBhZGRyZXNzIGJ1ZmZlcnMgc29ydGVkIGJ5IGhleCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNvcnRBZGRyZXNzQnVmZmVyc0J5SGV4KGFkZHJlc3NCdWZmZXJzOiBCdWZmZXJbXSk6IEJ1ZmZlcltdIHtcbiAgICByZXR1cm4gWy4uLmFkZHJlc3NCdWZmZXJzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS50b1N0cmluZygnaGV4JykubG9jYWxlQ29tcGFyZShiLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3ZlciBwdWJsaWMga2V5IGZyb20gc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtZXNzYWdlSGFzaCAtIFRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgbWVzc2FnZSAoZS5nLiwgc2lnbmFibGVQYXlsb2FkKVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIC0gNjUtYnl0ZSBzaWduYXR1cmUgKDY0IGJ5dGVzIHNpZ25hdHVyZSArIDEgYnl0ZSByZWNvdmVyeSBwYXJhbWV0ZXIpXG4gICAqIEByZXR1cm4gcmVjb3ZlcmVkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY292ZXJ5U2lnbmF0dXJlKG1lc3NhZ2VIYXNoOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICB0cnkge1xuICAgICAgLy8gRXh0cmFjdCByZWNvdmVyeSBwYXJhbWV0ZXIgYW5kIHNpZ25hdHVyZVxuICAgICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDY1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaWduYXR1cmUgbGVuZ3RoIC0gZXhwZWN0ZWQgNjUgYnl0ZXMgKDY0IGJ5dGVzIHNpZ25hdHVyZSArIDEgYnl0ZSByZWNvdmVyeSknKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjb3ZlcnlQYXJhbSA9IHNpZ25hdHVyZVs2NF07XG4gICAgICBjb25zdCBzaWdPbmx5ID0gc2lnbmF0dXJlLnNsaWNlKDAsIDY0KTtcblxuICAgICAgLy8gUmVjb3ZlciBwdWJsaWMga2V5IHVzaW5nIHRoZSBwcm92aWRlZCByZWNvdmVyeSBwYXJhbWV0ZXJcbiAgICAgIC8vIG1lc3NhZ2VIYXNoIHNob3VsZCBhbHJlYWR5IGJlIHRoZSBTSEEyNTYgaGFzaCAoc2lnbmFibGVQYXlsb2FkKVxuICAgICAgY29uc3QgcmVjb3ZlcmVkID0gZWNjLnJlY292ZXJQdWJsaWNLZXkobWVzc2FnZUhhc2gsIHNpZ09ubHksIHJlY292ZXJ5UGFyYW0sIHRydWUpO1xuICAgICAgaWYgKCFyZWNvdmVyZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcmVjb3ZlciBwdWJsaWMga2V5Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShyZWNvdmVyZWQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZWNvdmVyIHNpZ25hdHVyZTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0eCBpcyBmb3IgdGhlIGJsb2NrY2hhaW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge1R4fSB0eFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmxvY2tjaGFpbklkIC0gYmxvY2tjaGFpbiBJRCBpbiBoZXggZm9ybWF0XG4gICAqIEByZXR1cm5zIHRydWUgaWYgdHggaXMgZm9yIGJsb2NrY2hhaW5JZFxuICAgKi9cbiAgaXNUcmFuc2FjdGlvbk9mKHR4OiBUeCwgYmxvY2tjaGFpbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBOb3RlOiBnZXRCbG9ja2NoYWluSWQoKSBhbmQgQmxvY2tjaGFpbklkLnZhbHVlKCkgcmV0dXJuIENCNTgtZW5jb2RlZCBzdHJpbmdzLFxuICAgIC8vIGJ1dCB3ZSBuZWVkIGhleCBmb3JtYXQsIHNvIHdlIHVzZSB0b0J5dGVzKCkgYW5kIGNvbnZlcnQgdG8gaGV4XG4gICAgY29uc3QgZXh0cmFjdEJsb2NrY2hhaW5JZCA9ICh0eE9iajogYW55KTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodHlwZW9mIHR4T2JqLmdldFR4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IGlubmVyVHggPSB0eE9iai5nZXRUeCgpO1xuICAgICAgICBpZiAoaW5uZXJUeC5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShpbm5lclR4LmJhc2VUeC5CbG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubmVyVHguYmxvY2tjaGFpbklkPy50b0J5dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlubmVyVHguYmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eE9iai50eD8uYmFzZVR4Py5CbG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4T2JqLnR4LmJhc2VUeC5CbG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eE9iai5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20odHhPYmouYmFzZVR4LkJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eE9iai5ibG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4T2JqLmJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IHR4QmxvY2tjaGFpbklkID0gZXh0cmFjdEJsb2NrY2hhaW5JZCh0eCk7XG4gICAgcmV0dXJuIHR4QmxvY2tjaGFpbklkID09PSBibG9ja2NoYWluSWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBGbGFyZUpTIG5hdGl2ZSBVdHhvIHRvIERlY29kZWRVdHhvT2JqIGZvciBpbnRlcm5hbCB1c2VcbiAgICogQHBhcmFtIHV0eG8gLSBGbGFyZUpTIFV0eG8gb2JqZWN0XG4gICAqIEBwYXJhbSBuZXR3b3JrIC0gRmxhcmUgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIERlY29kZWRVdHhvT2JqIGNvbXBhdGlibGUgd2l0aCBleGlzdGluZyBtZXRob2RzXG4gICAqL1xuICBwdWJsaWMgdXR4b1RvRGVjb2RlZCh1dHhvOiBVdHhvLCBuZXR3b3JrOiBGbGFyZU5ldHdvcmspOiBEZWNvZGVkVXR4b09iaiB7XG4gICAgY29uc3Qgb3V0cHV0T3duZXJzID0gdXR4by5nZXRPdXRwdXRPd25lcnMoKTtcbiAgICBjb25zdCBvdXRwdXQgPSB1dHhvLm91dHB1dCBhcyBUcmFuc2Zlck91dHB1dDtcblxuICAgIC8vIEdldCBhbW91bnQgZnJvbSBvdXRwdXRcbiAgICBjb25zdCBhbW91bnQgPSBvdXRwdXQuYW1vdW50KCkudG9TdHJpbmcoKTtcblxuICAgIC8vIEdldCB0eGlkIGZyb20gdXR4b0lkIChjYjU4IGVuY29kZWQpXG4gICAgY29uc3QgdHhpZCA9IHRoaXMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh1dHhvLnV0eG9JZC50eElELnRvQnl0ZXMoKSkpO1xuXG4gICAgLy8gR2V0IG91dHB1dCBpbmRleFxuICAgIGNvbnN0IG91dHB1dGlkeCA9IHV0eG8udXR4b0lkLm91dHB1dElkeC52YWx1ZSgpLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBHZXQgdGhyZXNob2xkXG4gICAgY29uc3QgdGhyZXNob2xkID0gb3V0cHV0T3duZXJzLnRocmVzaG9sZC52YWx1ZSgpO1xuXG4gICAgLy8gR2V0IGxvY2t0aW1lXG4gICAgY29uc3QgbG9ja3RpbWUgPSBvdXRwdXRPd25lcnMubG9ja3RpbWUudmFsdWUoKS50b1N0cmluZygpO1xuXG4gICAgLy8gR2V0IGFkZHJlc3NlcyBhcyBiZWNoMzIgc3RyaW5nc1xuICAgIGNvbnN0IGFkZHJlc3NlcyA9IG91dHB1dE93bmVycy5hZGRycy5tYXAoKGFkZHIpID0+XG4gICAgICB0aGlzLmFkZHJlc3NUb1N0cmluZyhuZXR3b3JrLmhycCwgbmV0d29yay5hbGlhcywgQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3V0cHV0SUQ6IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsXG4gICAgICBsb2NrdGltZSxcbiAgICAgIGFtb3VudCxcbiAgICAgIHR4aWQsXG4gICAgICBvdXRwdXRpZHgsXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBhZGRyZXNzZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFycmF5IG9mIEZsYXJlSlMgVXR4b3MgdG8gRGVjb2RlZFV0eG9PYmogYXJyYXlcbiAgICogQHBhcmFtIHV0eG9zIC0gQXJyYXkgb2YgRmxhcmVKUyBVdHhvIG9iamVjdHNcbiAgICogQHBhcmFtIG5ldHdvcmsgLSBGbGFyZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgRGVjb2RlZFV0eG9PYmpcbiAgICovXG4gIHB1YmxpYyB1dHhvc1RvRGVjb2RlZCh1dHhvczogVXR4b1tdLCBuZXR3b3JrOiBGbGFyZU5ldHdvcmspOiBEZWNvZGVkVXR4b09ialtdIHtcbiAgICByZXR1cm4gdXR4b3MubWFwKCh1dHhvKSA9PiB0aGlzLnV0eG9Ub0RlY29kZWQodXR4bywgbmV0d29yaykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RcbiAgICogVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiB1dHhvVG9EZWNvZGVkXG4gICAqXG4gICAqIElNUE9SVEFOVDogQWRkcmVzc2VzIGFyZSBzb3J0ZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgYnl0ZSB2YWx1ZSB0byBtYXRjaFxuICAgKiBvbi1jaGFpbiBzdG9yYWdlIG9yZGVyLiBUaGUgQVBJIG1heSByZXR1cm4gYWRkcmVzc2VzIGluIGFyYml0cmFyeSBvcmRlciwgYnV0XG4gICAqIG9uLWNoYWluIFVUWE9zIGFsd2F5cyBzdG9yZSBhZGRyZXNzZXMgaW4gc29ydGVkIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZGVjb2RlZCAtIERlY29kZWRVdHhvT2JqIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIGFzc2V0SWQgLSBBc3NldCBJRCBhcyBjYjU4IGVuY29kZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIE5hdGl2ZSBGbGFyZUpTIFV0eG8gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4byhkZWNvZGVkOiBEZWNvZGVkVXR4b09iaiwgYXNzZXRJZDogc3RyaW5nKTogVXR4byB7XG4gICAgLy8gQ3JlYXRlIFVUWE9JRCBmcm9tIHR4aWQgYW5kIG91dHB1dCBpbmRleFxuICAgIGNvbnN0IHV0eG9JZCA9IGF2YXhTZXJpYWwuVVRYT0lELmZyb21OYXRpdmUoZGVjb2RlZC50eGlkLCBwYXJzZUludChkZWNvZGVkLm91dHB1dGlkeCwgMTApKTtcblxuICAgIC8vIFBhcnNlIGFkZHJlc3NlcyBmcm9tIGJlY2gzMiBzdHJpbmdzIHRvIGJ5dGUgYnVmZmVyc1xuICAgIGNvbnN0IGFkZHJlc3NCeXRlcyA9IGRlY29kZWQuYWRkcmVzc2VzLm1hcCgoYWRkcikgPT4gdGhpcy5wYXJzZUFkZHJlc3MoYWRkcikpO1xuXG4gICAgLy8gU29ydCBhZGRyZXNzZXMgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgYnl0ZSB2YWx1ZSB0byBtYXRjaCBvbi1jaGFpbiBvcmRlclxuICAgIC8vIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSB0aGUgUC1jaGFpbiBzdG9yZXMgYWRkcmVzc2VzIGluIHNvcnRlZCBvcmRlcixcbiAgICAvLyBhbmQgc2lnSW5kaWNlcyBtdXN0IHJlZmVyZW5jZSB0aGUgY29ycmVjdCBwb3NpdGlvbnMuXG4gICAgY29uc3Qgc29ydGVkQWRkcmVzc0J5dGVzID0gdGhpcy5zb3J0QWRkcmVzc0J1ZmZlcnNCeUhleChhZGRyZXNzQnl0ZXMpO1xuXG4gICAgLy8gQ3JlYXRlIE91dHB1dE93bmVycyB3aXRoIGxvY2t0aW1lLCB0aHJlc2hvbGQsIGFuZCBTT1JURUQgYWRkcmVzc2VzXG4gICAgY29uc3QgbG9ja3RpbWUgPSBkZWNvZGVkLmxvY2t0aW1lID8gQmlnSW50KGRlY29kZWQubG9ja3RpbWUpIDogQmlnSW50KDApO1xuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IE91dHB1dE93bmVycy5mcm9tTmF0aXZlKHNvcnRlZEFkZHJlc3NCeXRlcywgbG9ja3RpbWUsIGRlY29kZWQudGhyZXNob2xkKTtcblxuICAgIC8vIENyZWF0ZSBUcmFuc2Zlck91dHB1dCB3aXRoIGFtb3VudCBhbmQgb3duZXJzXG4gICAgY29uc3QgYW1vdW50ID0gQmlnSW50KGRlY29kZWQuYW1vdW50KTtcbiAgICBjb25zdCB0cmFuc2Zlck91dHB1dCA9IG5ldyBUcmFuc2Zlck91dHB1dChuZXcgQmlnSW50UHIoYW1vdW50KSwgb3V0cHV0T3duZXJzKTtcblxuICAgIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHRoZSBVdHhvXG4gICAgcmV0dXJuIG5ldyBVdHhvKHV0eG9JZCwgSWQuZnJvbVN0cmluZyhhc3NldElkKSwgdHJhbnNmZXJPdXRwdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYXJyYXkgb2YgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqIEBwYXJhbSBkZWNvZGVkVXR4b3MgLSBBcnJheSBvZiBEZWNvZGVkVXR4b09ialxuICAgKiBAcGFyYW0gYXNzZXRJZCAtIEFzc2V0IElEIGFzIGNiNTggZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4b3MoZGVjb2RlZFV0eG9zOiBEZWNvZGVkVXR4b09ialtdLCBhc3NldElkOiBzdHJpbmcpOiBVdHhvW10ge1xuICAgIHJldHVybiBkZWNvZGVkVXR4b3MubWFwKChkZWNvZGVkKSA9PiB0aGlzLmRlY29kZWRUb1V0eG8oZGVjb2RlZCwgYXNzZXRJZCkpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
533
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVUrQjtBQUMvQiw4Q0FPeUI7QUFFekIsbUNBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxnREFBdUM7QUFDdkMsbUNBQW1HO0FBQ25HLGdEQUF3QjtBQUN4QixtQ0FBZ0M7QUFFaEMsMEJBQTBCO0FBQzFCLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUVsQyxNQUFhLEtBQUs7SUFBbEI7UUFpUkU7O1dBRUc7UUFDSSxvQkFBZSxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQWMsRUFBRSxPQUFlLEVBQVUsRUFBRTtZQUNoRiwrREFBK0Q7WUFDL0QsTUFBTSxLQUFLLEdBQUcsZUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QywrRUFBK0U7WUFDL0UsT0FBTyxHQUFHLE1BQU0sSUFBSSxlQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xELENBQUMsQ0FBQztRQTJDRixtREFBbUQ7UUFFbkQ7Ozs7V0FJRztRQUNJLGlCQUFZLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDO1FBRUssb0JBQWUsR0FBRyxDQUFDLE9BQWUsRUFBRSxHQUFZLEVBQVUsRUFBRTtZQUNqRSx1QkFBdUI7WUFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFFRCxtQ0FBbUM7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N0IsT0FBTyxJQUFJLGNBQUksQ0FBQyxNQUFNLEVBQUUsWUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxjQUFjLENBQUMsWUFBOEIsRUFBRSxPQUFlO1FBQ25FLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFyakJELHNCQXFqQkM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQzFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUcmFuc2Zlck91dHB1dCxcbiAgVHlwZVN5bWJvbHMsXG4gIElkLFxuICBVdHhvLFxuICBCaWdJbnRQcixcbiAgT3V0cHV0T3duZXJzLFxuICBhdmF4U2VyaWFsLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHtcbiAgQmFzZVV0aWxzLFxuICBFbnRyeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGlzVmFsaWRYcHJ2LFxuICBpc1ZhbGlkWHB1YixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBBRERSRVNTX1NFUEFSQVRPUiwgRGVjb2RlZFV0eG9PYmosIE91dHB1dCwgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCwgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJztcblxuLy8gTm9kZUlEIGZvcm1hdCBjb25zdGFudHNcbmNvbnN0IE5PREVfSURfUFJFRklYID0gJ05vZGVJRC0nO1xuY29uc3QgTk9ERV9JRF9ERUNPREVEX0xFTkdUSCA9IDI0O1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzc2VzIGluIHdhbGxldCBtYXRjaCBVVFhPIG91dHB1dCBhZGRyZXNzZXNcbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlSW4od2FsbGV0QWRkcmVzc2VzOiBzdHJpbmdbXSwgb3R4b091dHB1dEFkZHJlc3Nlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2FsbGV0QWRkcmVzc2VzLm1hcCgoYSkgPT4gb3R4b091dHB1dEFkZHJlc3Nlcy5pbmNsdWRlcyhhKSkucmVkdWNlKChhLCBiKSA9PiBhICYmIGIsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIEZsYXJlIGFkZHJlc3Mgb3IgYXJyYXkgb2YgYWRkcmVzc2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFkZHJlc3MgLSBhZGRyZXNzKGVzKSB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB2YWxpZGF0aW9uIHJlc3VsdFxuICAgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBhZGRyZXNzQXJyOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoYWRkcmVzcykgPyBhZGRyZXNzIDogYWRkcmVzcy5zcGxpdCgnficpO1xuXG4gICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGFkZHJlc3NBcnIpIHtcbiAgICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzc1JlZ2V4KGFkZHJlc3MpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZEFkZHJlc3NSZWdleChhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL14oXlB8fE5vZGVJRCktW2EtekEtWjAtOV0rJC8udGVzdChhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBibG9jayBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gaGFzaCAtIGJsb2NrIElEIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZCA9IEJ1ZmZlci5mcm9tKGhhc2gsICdoZXgnKTtcbiAgICAgIHJldHVybiBkZWNvZGVkLmxlbmd0aCA9PT0gMzI7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHB1YmxpYyBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIHB1YmxpYyBrZXkgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRQdWJsaWNLZXkocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaXNWYWxpZFhwdWIocHViKSkgcmV0dXJuIHRydWU7XG5cbiAgICBsZXQgcHViQnVmOiBCdWZmZXI7XG4gICAgaWYgKHB1Yi5sZW5ndGggPT09IDUwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwdWJCdWYgPSBCdWZmZXIuZnJvbShwdWIsICdoZXgnKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwdWIubGVuZ3RoICE9PSA2NiAmJiBwdWIubGVuZ3RoICE9PSAxMzApIHJldHVybiBmYWxzZTtcblxuICAgICAgY29uc3QgZmlyc3RCeXRlID0gcHViLnNsaWNlKDAsIDIpO1xuICAgICAgaWYgKHB1Yi5sZW5ndGggPT09IDEzMCAmJiBmaXJzdEJ5dGUgIT09ICcwNCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmIChwdWIubGVuZ3RoID09PSA2NiAmJiBmaXJzdEJ5dGUgIT09ICcwMicgJiYgZmlyc3RCeXRlICE9PSAnMDMnKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIXRoaXMuYWxsSGV4Q2hhcnMocHViKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBwdWJCdWYgPSBCdWZmZXIuZnJvbShwdWIsICdoZXgnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZWNjLmlzUG9pbnQocHViQnVmKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChpc1ZhbGlkWHBydihwcnYpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAocHJ2Lmxlbmd0aCAhPT0gNjQgJiYgcHJ2Lmxlbmd0aCAhPT0gNjYpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocHJ2Lmxlbmd0aCA9PT0gNjYgJiYgcHJ2LnNsaWNlKDY0KSAhPT0gJzAxJykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmFsbEhleENoYXJzKHBydik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgc3RyaW5nIGNvbnRhaW5zIG9ubHkgaGV4IGNoYXJhY3RlcnNcbiAgICovXG4gIGFsbEhleENoYXJzKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eKDB4KXswLDF9KFswLTlhLWZdKSskL2kudGVzdChzdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIE5vZGVJRCBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5vZGVJRCAtIE5vZGVJRCB0byB2YWxpZGF0ZSAoZS5nLiwgXCJOb2RlSUQteHh4XCIpXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIHRydWUgaWYgdmFsaWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaXNWYWxpZE5vZGVJRChub2RlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghbm9kZUlELnN0YXJ0c1dpdGgoTk9ERV9JRF9QUkVGSVgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gYnM1OC5kZWNvZGUobm9kZUlELnNsaWNlKE5PREVfSURfUFJFRklYLmxlbmd0aCkpO1xuICAgICAgcmV0dXJuIGRlY29kZWQubGVuZ3RoID09PSBOT0RFX0lEX0RFQ09ERURfTEVOR1RIO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2lnbmF0dXJlIHVzaW5nIHRoZSBGbGFyZSBuZXR3b3JrIHBhcmFtZXRlcnNcbiAgICogUmV0dXJucyBhIDY1LWJ5dGUgc2lnbmF0dXJlICg2NCBieXRlcyBzaWduYXR1cmUgKyAxIGJ5dGUgcmVjb3ZlcnkgcGFyYW1ldGVyKVxuICAgKi9cbiAgY3JlYXRlU2lnbmF0dXJlKG5ldHdvcms6IEZsYXJlTmV0d29yaywgbWVzc2FnZTogQnVmZmVyLCBwcnY6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgY29uc3QgbWVzc2FnZUhhc2ggPSB0aGlzLnNoYTI1NihtZXNzYWdlKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBlY2Muc2lnbihtZXNzYWdlSGFzaCwgcHJ2KTtcblxuICAgIC8vIEdldCB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBwcml2YXRlIGtleSBmb3IgcmVjb3ZlcnkgcGFyYW1ldGVyIGRldGVybWluYXRpb25cbiAgICBjb25zdCBwdWJsaWNLZXkgPSBlY2MucG9pbnRGcm9tU2NhbGFyKHBydiwgdHJ1ZSk7XG4gICAgaWYgKCFwdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlcml2ZSBwdWJsaWMga2V5IGZyb20gcHJpdmF0ZSBrZXknKTtcbiAgICB9XG5cbiAgICAvLyBUcnkgcmVjb3Zlcnkgd2l0aCBwYXJhbSAwIGFuZCAxIHRvIGZpbmQgdGhlIGNvcnJlY3Qgb25lXG4gICAgbGV0IHJlY292ZXJ5UGFyYW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDE7IGkrKykge1xuICAgICAgY29uc3QgcmVjb3ZlcmVkID0gZWNjLnJlY292ZXJQdWJsaWNLZXkobWVzc2FnZUhhc2gsIHNpZ25hdHVyZSwgaSwgdHJ1ZSk7XG4gICAgICBpZiAocmVjb3ZlcmVkICYmIEJ1ZmZlci5mcm9tKHJlY292ZXJlZCkuZXF1YWxzKEJ1ZmZlci5mcm9tKHB1YmxpY0tleSkpKSB7XG4gICAgICAgIHJlY292ZXJ5UGFyYW0gPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBlbmQgcmVjb3ZlcnkgcGFyYW1ldGVyIHRvIGNyZWF0ZSA2NS1ieXRlIHNpZ25hdHVyZVxuICAgIGNvbnN0IHNpZ1dpdGhSZWNvdmVyeSA9IEJ1ZmZlci5hbGxvYyg2NSk7XG4gICAgQnVmZmVyLmZyb20oc2lnbmF0dXJlKS5jb3B5KHNpZ1dpdGhSZWNvdmVyeSwgMCk7XG4gICAgc2lnV2l0aFJlY292ZXJ5WzY0XSA9IHJlY292ZXJ5UGFyYW07XG5cbiAgICByZXR1cm4gc2lnV2l0aFJlY292ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtZXNzYWdlSGFzaCAtIFRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgbWVzc2FnZSAoZS5nLiwgc2lnbmFibGVQYXlsb2FkKVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIC0gVGhlIDY0LWJ5dGUgc2lnbmF0dXJlICh3aXRob3V0IHJlY292ZXJ5IHBhcmFtZXRlcilcbiAgICogQHBhcmFtIHB1YmxpY0tleSAtIFRoZSBwdWJsaWMga2V5IHRvIHZlcmlmeSBhZ2FpbnN0XG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkXG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmUobWVzc2FnZUhhc2g6IEJ1ZmZlciwgc2lnbmF0dXJlOiBCdWZmZXIsIHB1YmxpY0tleTogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlY2MudmVyaWZ5KG1lc3NhZ2VIYXNoLCBwdWJsaWNLZXksIHNpZ25hdHVyZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHNpZ25hdHVyZSBvYmplY3RcbiAgICovXG4gIGNyZWF0ZU5ld1NpZyhzaWdIZXg6IHN0cmluZyk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc2lnSGV4LnBhZFN0YXJ0KDEzMCwgJzAnKSwgJ2hleCcpO1xuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGJ1ZmZlcik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlbXB0eSBzaWduYXR1cmUgd2l0aCBlbWJlZGRlZCBhZGRyZXNzIGZvciBzaWduYXR1cmUgc2xvdCBpZGVudGlmaWNhdGlvbi5cbiAgICogVGhlIGFkZHJlc3MgaXMgZW1iZWRkZWQgYXQgcG9zaXRpb24gOTAgKGFmdGVyIHRoZSBmaXJzdCA0NSB6ZXJvIGJ5dGVzKS5cbiAgICogVGhpcyBhbGxvd3MgdGhlIHNpZ25pbmcgbG9naWMgdG8gZGV0ZXJtaW5lIHdoaWNoIHNsb3QgYmVsb25ncyB0byB3aGljaCBhZGRyZXNzLlxuICAgKiBAcGFyYW0gYWRkcmVzc0hleCBUaGUgMjAtYnl0ZSBhZGRyZXNzIGluIGhleCBmb3JtYXQgKDQwIGNoYXJzLCB3aXRob3V0IDB4IHByZWZpeClcbiAgICovXG4gIGNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoYWRkcmVzc0hleDogc3RyaW5nKTogU2lnbmF0dXJlIHtcbiAgICAvLyBGaXJzdCA0NSBieXRlcyAoOTAgaGV4IGNoYXJzKSBhcmUgemVyb3MsIGZvbGxvd2VkIGJ5IDIwLWJ5dGUgYWRkcmVzcyAoNDAgaGV4IGNoYXJzKVxuICAgIGNvbnN0IGNsZWFuQWRkciA9IHRoaXMucmVtb3ZlSGV4UHJlZml4KGFkZHJlc3NIZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3Qgc2lnSGV4ID0gJzAnLnJlcGVhdCg5MCkgKyBjbGVhbkFkZHIucGFkU3RhcnQoNDAsICcwJyk7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oc2lnSGV4LCAnaGV4Jyk7XG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoYnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgZW1iZWRkZWQgYWRkcmVzcyBmcm9tIGFuIGVtcHR5IHNpZ25hdHVyZS5cbiAgICogUmV0dXJucyB0aGUgYWRkcmVzcyBoZXggc3RyaW5nICg0MCBjaGFycykgb3IgZW1wdHkgc3RyaW5nIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGdldEFkZHJlc3NGcm9tRW1wdHlTaWcoc2lnOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFuU2lnID0gdGhpcy5yZW1vdmVIZXhQcmVmaXgoc2lnKTtcbiAgICBpZiAoY2xlYW5TaWcubGVuZ3RoID49IDEzMCkge1xuICAgICAgLy8gQWRkcmVzcyBpcyBhdCBwb3NpdGlvbiA5MC0xMzAgKGxhc3QgNDAgaGV4IGNoYXJzID0gMjAgYnl0ZXMpXG4gICAgICByZXR1cm4gY2xlYW5TaWcuc3Vic3RyaW5nKDkwLCAxMzApLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBTSEEyNTYgaGFzaFxuICAgKi9cbiAgc2hhMjU2KGJ1ZjogVWludDhBcnJheSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShidWYpLmRpZ2VzdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyByYXcgdHJhbnNhY3Rpb24gZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWxsSGV4Q2hhcnMocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgbm90IGhleCBzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG91dHB1dCBpcyBUcmFuc2ZlcmFibGVPdXRwdXQgdHlwZVxuICAgKi9cbiAgaXNUcmFuc2ZlcmFibGVPdXRwdXQob3V0cHV0OiBPdXRwdXQpOiBvdXRwdXQgaXMgVHJhbnNmZXJhYmxlT3V0cHV0IHtcbiAgICByZXR1cm4gb3V0cHV0Py5fdHlwZSA9PT0gVHlwZVN5bWJvbHMuVHJhbnNmZXJhYmxlT3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgb3V0cHV0cyB0byBlbnRyeSBmb3JtYXRcbiAgICovXG4gIG1hcE91dHB1dFRvRW50cnkobmV0d29yazogRmxhcmVOZXR3b3JrKTogKE91dHB1dCkgPT4gRW50cnkge1xuICAgIHJldHVybiAob3V0cHV0OiBPdXRwdXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzVHJhbnNmZXJhYmxlT3V0cHV0KG91dHB1dCkpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0LmFtb3VudCgpO1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gKG91dHB1dC5vdXRwdXQgYXMgVHJhbnNmZXJPdXRwdXQpXG4gICAgICAgICAgLmdldE93bmVycygpXG4gICAgICAgICAgLm1hcCgoYSkgPT4gdGhpcy5hZGRyZXNzVG9TdHJpbmcobmV0d29yay5ocnAsIG5ldHdvcmsuYWxpYXMsIEJ1ZmZlci5mcm9tKGEpKSlcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBvdXRwdXRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG91dHB1dCB0eXBlJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIDB4IHByZWZpeCBmcm9tIGhleCBzdHJpbmdcbiAgICovXG4gIHJlbW92ZUhleFByZWZpeChoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGhleC5zdGFydHNXaXRoKCcweCcpID8gaGV4LnN1YnN0cmluZygyKSA6IGhleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBvdXRwdXQgaW5kZXggdG8gYnVmZmVyXG4gICAqL1xuICBvdXRwdXRpZHhOdW1iZXJUb0J1ZmZlcihvdXRwdXRpZHg6IHN0cmluZyk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKE51bWJlcihvdXRwdXRpZHgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCAnMCcpLCAnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgb3V0cHV0IGluZGV4IGJ1ZmZlciB0byBudW1iZXIgc3RyaW5nXG4gICAqL1xuICBvdXRwdXRpZHhCdWZmZXJUb051bWJlcihvdXRwdXRpZHg6IEJ1ZmZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhcnNlSW50KG91dHB1dGlkeC50b1N0cmluZygnaGV4JyksIDE2KS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY29udmVydCBhZGRyZXNzIGNvbXBvbmVudHMgdG8gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkcmVzc1RvU3RyaW5nID0gKGhycDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgYWRkcmVzczogQnVmZmVyKTogc3RyaW5nID0+IHtcbiAgICAvLyBDb252ZXJ0IHRoZSBhZGRyZXNzIGJ5dGVzIHRvIDUtYml0IHdvcmRzIGZvciBiZWNoMzIgZW5jb2RpbmdcbiAgICBjb25zdCB3b3JkcyA9IGJlY2gzMi50b1dvcmRzKGFkZHJlc3MpO1xuICAgIC8vIENyZWF0ZSB0aGUgZnVsbCBiZWNoMzIgYWRkcmVzcyB3aXRoIGZvcm1hdDogUC17aHJwfTF7YmVjaDMyX2VuY29kZWRfYWRkcmVzc31cbiAgICByZXR1cm4gYCR7cHJlZml4fS0ke2JlY2gzMi5lbmNvZGUoaHJwLCB3b3Jkcyl9YDtcbiAgfTtcblxuICAvKipcbiAgICogRGVjb2RlcyBhIGJhc2U1OCBzdHJpbmcgd2l0aCBjaGVja3N1bSB0byBhIEJ1ZmZlclxuICAgKi9cbiAgcHVibGljIGNiNThEZWNvZGUoc3RyOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiczU4LmRlY29kZShzdHIpO1xuICAgIGlmICghdGhpcy52YWxpZGF0ZUNoZWNrc3VtKEJ1ZmZlci5mcm9tKGRlY29kZWQpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoZWNrc3VtJyk7XG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIuZnJvbShkZWNvZGVkLnNsaWNlKDAsIGRlY29kZWQubGVuZ3RoIC0gNCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIGNoZWNrc3VtIG9uIGEgQnVmZmVyIGFuZCByZXR1cm5zIHRydWUgaWYgdmFsaWQsIGZhbHNlIGlmIG5vdFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNoZWNrc3VtKGJ1ZmY6IEJ1ZmZlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc2hTbGljZSA9IGJ1ZmYuc2xpY2UoYnVmZi5sZW5ndGggLSA0KTtcbiAgICBjb25zdCBjYWxjdWxhdGVkSGFzaFNsaWNlID0gY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgIC51cGRhdGUoYnVmZi5zbGljZSgwLCBidWZmLmxlbmd0aCAtIDQpKVxuICAgICAgLmRpZ2VzdCgpXG4gICAgICAuc2xpY2UoMjgpO1xuICAgIHJldHVybiBoYXNoU2xpY2UudG9TdHJpbmcoJ2hleCcpID09PSBjYWxjdWxhdGVkSGFzaFNsaWNlLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGVzIGEgQnVmZmVyIGFzIGEgYmFzZTU4IHN0cmluZyB3aXRoIGNoZWNrc3VtXG4gICAqL1xuICBwdWJsaWMgY2I1OEVuY29kZShieXRlczogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3aXRoQ2hlY2tzdW0gPSB0aGlzLmFkZENoZWNrc3VtKGJ5dGVzKTtcbiAgICByZXR1cm4gYnM1OC5lbmNvZGUod2l0aENoZWNrc3VtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2hlY2tzdW0gdG8gYSBCdWZmZXIgYW5kIHJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRcbiAgICogVXNlcyBsYXN0IDQgYnl0ZXMgb2YgU0hBMjU2IGhhc2ggYXMgY2hlY2tzdW0gKG1hdGNoaW5nIGF2YXhwIGJlaGF2aW9yKVxuICAgKi9cbiAgcHVibGljIGFkZENoZWNrc3VtKGJ1ZmY6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICBjb25zdCBoYXNoU2xpY2UgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKS5zbGljZSgyOCk7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgaGFzaFNsaWNlXSkpO1xuICB9XG5cbiAgLy8gSW4gdXRpbHMudHMsIGFkZCB0aGlzIG1ldGhvZCB0byB0aGUgVXRpbHMgY2xhc3M6XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFuIGFkZHJlc3Mgc3RyaW5nIGludG8gYSBCdWZmZXJcbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBwYXJzZVxuICAgKiBAcmV0dXJucyBCdWZmZXIgY29udGFpbmluZyB0aGUgcGFyc2VkIGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBwYXJzZUFkZHJlc3MgPSAoYWRkcmVzczogc3RyaW5nKTogQnVmZmVyID0+IHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUb0FkZHJlc3MoYWRkcmVzcyk7XG4gIH07XG5cbiAgcHVibGljIHN0cmluZ1RvQWRkcmVzcyA9IChhZGRyZXNzOiBzdHJpbmcsIGhycD86IHN0cmluZyk6IEJ1ZmZlciA9PiB7XG4gICAgLy8gSGFuZGxlIGhleCBhZGRyZXNzZXNcbiAgICBpZiAoYWRkcmVzcy5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oYWRkcmVzcy5zbGljZSgyKSwgJ2hleCcpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSByYXcgaGV4IHdpdGhvdXQgMHggcHJlZml4XG4gICAgaWYgKC9eWzAtOWEtZkEtRl17NDB9JC8udGVzdChhZGRyZXNzKSkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFkZHJlc3MsICdoZXgnKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQmVjaDMyIGFkZHJlc3Nlc1xuICAgIGNvbnN0IHBhcnRzID0gYWRkcmVzcy50cmltKCkuc3BsaXQoJy0nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciAtIFZhbGlkIGFkZHJlc3Mgc2hvdWxkIGluY2x1ZGUgLScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwbGl0ID0gcGFydHNbMV0ubGFzdEluZGV4T2YoJzEnKTtcbiAgICBpZiAoc3BsaXQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gVmFsaWQgYmVjaDMyIGFkZHJlc3MgbXVzdCBpbmNsdWRlIHNlcGFyYXRvciAoMSknKTtcbiAgICB9XG5cbiAgICBjb25zdCBodW1hblJlYWRhYmxlUGFydCA9IHBhcnRzWzFdLnNsaWNlKDAsIHNwbGl0KTtcbiAgICBpZiAoaHVtYW5SZWFkYWJsZVBhcnQgIT09ICdmbGFyZScgJiYgaHVtYW5SZWFkYWJsZVBhcnQgIT09ICdjb3N0d28nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIC0gSW52YWxpZCBIUlAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYmVjaDMyLmZyb21Xb3JkcyhiZWNoMzIuZGVjb2RlKHBhcnRzWzFdKS53b3JkcykpO1xuICB9O1xuXG4gIGZsYXJlSWRTdHJpbmcodmFsdWU6IHN0cmluZyk6IElkIHtcbiAgICByZXR1cm4gbmV3IElkKEJ1ZmZlci5mcm9tKHZhbHVlLCAnaGV4JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgYWRkcmVzc2VzIGxleGljb2dyYXBoaWNhbGx5IGJ5IHRoZWlyIGJ5dGUgcmVwcmVzZW50YXRpb24uXG4gICAqIFRoaXMgbWF0Y2hlcyBob3cgYWRkcmVzc2VzIGFyZSBzdG9yZWQgb24tY2hhaW4gaW4gQXZhbGFuY2hlL0ZsYXJlIFAtY2hhaW4gVVRYT3MuXG4gICAqXG4gICAqIElNUE9SVEFOVDogVGhpcyBzb3J0aW5nIE1VU1QgYmUgY29uc2lzdGVudCB3aXRoIEZsYXJlSlMncyBpbnRlcm5hbCBhZGRyZXNzIHNvcnRpbmcuXG4gICAqIEZsYXJlSlMgdXNlcyB0aGUgc2FtZSBsZXhpY29ncmFwaGljIGNvbXBhcmlzb246IGBoZXhBLmxvY2FsZUNvbXBhcmUoaGV4QilgLlxuICAgKiBUaGUgc2lnSW5kaWNlcyBpbiB0cmFuc2FjdGlvbiBpbnB1dHMgZGVwZW5kIG9uIHRoaXMgc29ydGVkIG9yZGVyLCBzbyBhbnkgZGV2aWF0aW9uXG4gICAqIHdvdWxkIGNhdXNlIHNpZ25hdHVyZSBvcmRlciBtaXNtYXRjaGVzIGFuZCBvbi1jaGFpbiB2ZXJpZmljYXRpb24gZmFpbHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzZXMgLSBBcnJheSBvZiBiZWNoMzIgYWRkcmVzcyBzdHJpbmdzIChlLmcuLCBcIlAtY29zdHdvMS4uLlwiKVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBhZGRyZXNzZXMgc29ydGVkIGJ5IGhleCB2YWx1ZSAoYXNjZW5kaW5nIGxleGljb2dyYXBoaWMgb3JkZXIpXG4gICAqL1xuICBwdWJsaWMgc29ydEFkZHJlc3Nlc0J5SGV4KGFkZHJlc3Nlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi5hZGRyZXNzZXNdLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFIZXggPSB0aGlzLnBhcnNlQWRkcmVzcyhhKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBiSGV4ID0gdGhpcy5wYXJzZUFkZHJlc3MoYikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgcmV0dXJuIGFIZXgubG9jYWxlQ29tcGFyZShiSGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IGFkZHJlc3MgYnVmZmVycyBsZXhpY29ncmFwaGljYWxseSBieSB0aGVpciBieXRlIHJlcHJlc2VudGF0aW9uLlxuICAgKiBUaGlzIG1hdGNoZXMgaG93IGFkZHJlc3NlcyBhcmUgc3RvcmVkIG9uLWNoYWluIGluIEF2YWxhbmNoZS9GbGFyZSBQLWNoYWluIFVUWE9zLlxuICAgKiBAcGFyYW0gYWRkcmVzc0J1ZmZlcnMgLSBBcnJheSBvZiBhZGRyZXNzIGJ5dGUgYnVmZmVyc1xuICAgKiBAcmV0dXJucyBBcnJheSBvZiBhZGRyZXNzIGJ1ZmZlcnMgc29ydGVkIGJ5IGhleCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNvcnRBZGRyZXNzQnVmZmVyc0J5SGV4KGFkZHJlc3NCdWZmZXJzOiBCdWZmZXJbXSk6IEJ1ZmZlcltdIHtcbiAgICByZXR1cm4gWy4uLmFkZHJlc3NCdWZmZXJzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS50b1N0cmluZygnaGV4JykubG9jYWxlQ29tcGFyZShiLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3ZlciBwdWJsaWMga2V5IGZyb20gc2lnbmF0dXJlXG4gICAqIEBwYXJhbSBtZXNzYWdlSGFzaCAtIFRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgbWVzc2FnZSAoZS5nLiwgc2lnbmFibGVQYXlsb2FkKVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIC0gNjUtYnl0ZSBzaWduYXR1cmUgKDY0IGJ5dGVzIHNpZ25hdHVyZSArIDEgYnl0ZSByZWNvdmVyeSBwYXJhbWV0ZXIpXG4gICAqIEByZXR1cm4gcmVjb3ZlcmVkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY292ZXJ5U2lnbmF0dXJlKG1lc3NhZ2VIYXNoOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICB0cnkge1xuICAgICAgLy8gRXh0cmFjdCByZWNvdmVyeSBwYXJhbWV0ZXIgYW5kIHNpZ25hdHVyZVxuICAgICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDY1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaWduYXR1cmUgbGVuZ3RoIC0gZXhwZWN0ZWQgNjUgYnl0ZXMgKDY0IGJ5dGVzIHNpZ25hdHVyZSArIDEgYnl0ZSByZWNvdmVyeSknKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjb3ZlcnlQYXJhbSA9IHNpZ25hdHVyZVs2NF07XG4gICAgICBjb25zdCBzaWdPbmx5ID0gc2lnbmF0dXJlLnNsaWNlKDAsIDY0KTtcblxuICAgICAgLy8gUmVjb3ZlciBwdWJsaWMga2V5IHVzaW5nIHRoZSBwcm92aWRlZCByZWNvdmVyeSBwYXJhbWV0ZXJcbiAgICAgIC8vIG1lc3NhZ2VIYXNoIHNob3VsZCBhbHJlYWR5IGJlIHRoZSBTSEEyNTYgaGFzaCAoc2lnbmFibGVQYXlsb2FkKVxuICAgICAgY29uc3QgcmVjb3ZlcmVkID0gZWNjLnJlY292ZXJQdWJsaWNLZXkobWVzc2FnZUhhc2gsIHNpZ09ubHksIHJlY292ZXJ5UGFyYW0sIHRydWUpO1xuICAgICAgaWYgKCFyZWNvdmVyZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcmVjb3ZlciBwdWJsaWMga2V5Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShyZWNvdmVyZWQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZWNvdmVyIHNpZ25hdHVyZTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0eCBpcyBmb3IgdGhlIGJsb2NrY2hhaW5JZFxuICAgKlxuICAgKiBAcGFyYW0ge1R4fSB0eFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmxvY2tjaGFpbklkIC0gYmxvY2tjaGFpbiBJRCBpbiBoZXggZm9ybWF0XG4gICAqIEByZXR1cm5zIHRydWUgaWYgdHggaXMgZm9yIGJsb2NrY2hhaW5JZFxuICAgKi9cbiAgaXNUcmFuc2FjdGlvbk9mKHR4OiBUeCwgYmxvY2tjaGFpbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBOb3RlOiBnZXRCbG9ja2NoYWluSWQoKSBhbmQgQmxvY2tjaGFpbklkLnZhbHVlKCkgcmV0dXJuIENCNTgtZW5jb2RlZCBzdHJpbmdzLFxuICAgIC8vIGJ1dCB3ZSBuZWVkIGhleCBmb3JtYXQsIHNvIHdlIHVzZSB0b0J5dGVzKCkgYW5kIGNvbnZlcnQgdG8gaGV4XG4gICAgY29uc3QgZXh0cmFjdEJsb2NrY2hhaW5JZCA9ICh0eE9iajogYW55KTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodHlwZW9mIHR4T2JqLmdldFR4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IGlubmVyVHggPSB0eE9iai5nZXRUeCgpO1xuICAgICAgICBpZiAoaW5uZXJUeC5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShpbm5lclR4LmJhc2VUeC5CbG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlubmVyVHguYmxvY2tjaGFpbklkPy50b0J5dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGlubmVyVHguYmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eE9iai50eD8uYmFzZVR4Py5CbG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4T2JqLnR4LmJhc2VUeC5CbG9ja2NoYWluSWQudG9CeXRlcygpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eE9iai5iYXNlVHg/LkJsb2NrY2hhaW5JZD8udG9CeXRlcykge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20odHhPYmouYmFzZVR4LkJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eE9iai5ibG9ja2NoYWluSWQ/LnRvQnl0ZXMpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4T2JqLmJsb2NrY2hhaW5JZC50b0J5dGVzKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIGNvbnN0IHR4QmxvY2tjaGFpbklkID0gZXh0cmFjdEJsb2NrY2hhaW5JZCh0eCk7XG4gICAgcmV0dXJuIHR4QmxvY2tjaGFpbklkID09PSBibG9ja2NoYWluSWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBGbGFyZUpTIG5hdGl2ZSBVdHhvIHRvIERlY29kZWRVdHhvT2JqIGZvciBpbnRlcm5hbCB1c2VcbiAgICogQHBhcmFtIHV0eG8gLSBGbGFyZUpTIFV0eG8gb2JqZWN0XG4gICAqIEBwYXJhbSBuZXR3b3JrIC0gRmxhcmUgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIERlY29kZWRVdHhvT2JqIGNvbXBhdGlibGUgd2l0aCBleGlzdGluZyBtZXRob2RzXG4gICAqL1xuICBwdWJsaWMgdXR4b1RvRGVjb2RlZCh1dHhvOiBVdHhvLCBuZXR3b3JrOiBGbGFyZU5ldHdvcmspOiBEZWNvZGVkVXR4b09iaiB7XG4gICAgY29uc3Qgb3V0cHV0T3duZXJzID0gdXR4by5nZXRPdXRwdXRPd25lcnMoKTtcbiAgICBjb25zdCBvdXRwdXQgPSB1dHhvLm91dHB1dCBhcyBUcmFuc2Zlck91dHB1dDtcblxuICAgIC8vIEdldCBhbW91bnQgZnJvbSBvdXRwdXRcbiAgICBjb25zdCBhbW91bnQgPSBvdXRwdXQuYW1vdW50KCkudG9TdHJpbmcoKTtcblxuICAgIC8vIEdldCB0eGlkIGZyb20gdXR4b0lkIChjYjU4IGVuY29kZWQpXG4gICAgY29uc3QgdHhpZCA9IHRoaXMuY2I1OEVuY29kZShCdWZmZXIuZnJvbSh1dHhvLnV0eG9JZC50eElELnRvQnl0ZXMoKSkpO1xuXG4gICAgLy8gR2V0IG91dHB1dCBpbmRleFxuICAgIGNvbnN0IG91dHB1dGlkeCA9IHV0eG8udXR4b0lkLm91dHB1dElkeC52YWx1ZSgpLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBHZXQgdGhyZXNob2xkXG4gICAgY29uc3QgdGhyZXNob2xkID0gb3V0cHV0T3duZXJzLnRocmVzaG9sZC52YWx1ZSgpO1xuXG4gICAgLy8gR2V0IGxvY2t0aW1lXG4gICAgY29uc3QgbG9ja3RpbWUgPSBvdXRwdXRPd25lcnMubG9ja3RpbWUudmFsdWUoKS50b1N0cmluZygpO1xuXG4gICAgLy8gR2V0IGFkZHJlc3NlcyBhcyBiZWNoMzIgc3RyaW5nc1xuICAgIGNvbnN0IGFkZHJlc3NlcyA9IG91dHB1dE93bmVycy5hZGRycy5tYXAoKGFkZHIpID0+XG4gICAgICB0aGlzLmFkZHJlc3NUb1N0cmluZyhuZXR3b3JrLmhycCwgbmV0d29yay5hbGlhcywgQnVmZmVyLmZyb20oYWRkci50b0J5dGVzKCkpKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3V0cHV0SUQ6IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQsXG4gICAgICBsb2NrdGltZSxcbiAgICAgIGFtb3VudCxcbiAgICAgIHR4aWQsXG4gICAgICBvdXRwdXRpZHgsXG4gICAgICB0aHJlc2hvbGQsXG4gICAgICBhZGRyZXNzZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFycmF5IG9mIEZsYXJlSlMgVXR4b3MgdG8gRGVjb2RlZFV0eG9PYmogYXJyYXlcbiAgICogQHBhcmFtIHV0eG9zIC0gQXJyYXkgb2YgRmxhcmVKUyBVdHhvIG9iamVjdHNcbiAgICogQHBhcmFtIG5ldHdvcmsgLSBGbGFyZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgRGVjb2RlZFV0eG9PYmpcbiAgICovXG4gIHB1YmxpYyB1dHhvc1RvRGVjb2RlZCh1dHhvczogVXR4b1tdLCBuZXR3b3JrOiBGbGFyZU5ldHdvcmspOiBEZWNvZGVkVXR4b09ialtdIHtcbiAgICByZXR1cm4gdXR4b3MubWFwKCh1dHhvKSA9PiB0aGlzLnV0eG9Ub0RlY29kZWQodXR4bywgbmV0d29yaykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RcbiAgICogVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiB1dHhvVG9EZWNvZGVkXG4gICAqXG4gICAqIElNUE9SVEFOVDogQWRkcmVzc2VzIGFyZSBzb3J0ZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgYnl0ZSB2YWx1ZSB0byBtYXRjaFxuICAgKiBvbi1jaGFpbiBzdG9yYWdlIG9yZGVyLiBUaGUgQVBJIG1heSByZXR1cm4gYWRkcmVzc2VzIGluIGFyYml0cmFyeSBvcmRlciwgYnV0XG4gICAqIG9uLWNoYWluIFVUWE9zIGFsd2F5cyBzdG9yZSBhZGRyZXNzZXMgaW4gc29ydGVkIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZGVjb2RlZCAtIERlY29kZWRVdHhvT2JqIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIGFzc2V0SWQgLSBBc3NldCBJRCBhcyBjYjU4IGVuY29kZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIE5hdGl2ZSBGbGFyZUpTIFV0eG8gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4byhkZWNvZGVkOiBEZWNvZGVkVXR4b09iaiwgYXNzZXRJZDogc3RyaW5nKTogVXR4byB7XG4gICAgLy8gQ3JlYXRlIFVUWE9JRCBmcm9tIHR4aWQgYW5kIG91dHB1dCBpbmRleFxuICAgIGNvbnN0IHV0eG9JZCA9IGF2YXhTZXJpYWwuVVRYT0lELmZyb21OYXRpdmUoZGVjb2RlZC50eGlkLCBwYXJzZUludChkZWNvZGVkLm91dHB1dGlkeCwgMTApKTtcblxuICAgIC8vIFBhcnNlIGFkZHJlc3NlcyBmcm9tIGJlY2gzMiBzdHJpbmdzIHRvIGJ5dGUgYnVmZmVyc1xuICAgIGNvbnN0IGFkZHJlc3NCeXRlcyA9IGRlY29kZWQuYWRkcmVzc2VzLm1hcCgoYWRkcikgPT4gdGhpcy5wYXJzZUFkZHJlc3MoYWRkcikpO1xuXG4gICAgLy8gU29ydCBhZGRyZXNzZXMgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgYnl0ZSB2YWx1ZSB0byBtYXRjaCBvbi1jaGFpbiBvcmRlclxuICAgIC8vIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSB0aGUgUC1jaGFpbiBzdG9yZXMgYWRkcmVzc2VzIGluIHNvcnRlZCBvcmRlcixcbiAgICAvLyBhbmQgc2lnSW5kaWNlcyBtdXN0IHJlZmVyZW5jZSB0aGUgY29ycmVjdCBwb3NpdGlvbnMuXG4gICAgY29uc3Qgc29ydGVkQWRkcmVzc0J5dGVzID0gdGhpcy5zb3J0QWRkcmVzc0J1ZmZlcnNCeUhleChhZGRyZXNzQnl0ZXMpO1xuXG4gICAgLy8gQ3JlYXRlIE91dHB1dE93bmVycyB3aXRoIGxvY2t0aW1lLCB0aHJlc2hvbGQsIGFuZCBTT1JURUQgYWRkcmVzc2VzXG4gICAgY29uc3QgbG9ja3RpbWUgPSBkZWNvZGVkLmxvY2t0aW1lID8gQmlnSW50KGRlY29kZWQubG9ja3RpbWUpIDogQmlnSW50KDApO1xuICAgIGNvbnN0IG91dHB1dE93bmVycyA9IE91dHB1dE93bmVycy5mcm9tTmF0aXZlKHNvcnRlZEFkZHJlc3NCeXRlcywgbG9ja3RpbWUsIGRlY29kZWQudGhyZXNob2xkKTtcblxuICAgIC8vIENyZWF0ZSBUcmFuc2Zlck91dHB1dCB3aXRoIGFtb3VudCBhbmQgb3duZXJzXG4gICAgY29uc3QgYW1vdW50ID0gQmlnSW50KGRlY29kZWQuYW1vdW50KTtcbiAgICBjb25zdCB0cmFuc2Zlck91dHB1dCA9IG5ldyBUcmFuc2Zlck91dHB1dChuZXcgQmlnSW50UHIoYW1vdW50KSwgb3V0cHV0T3duZXJzKTtcblxuICAgIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHRoZSBVdHhvXG4gICAgcmV0dXJuIG5ldyBVdHhvKHV0eG9JZCwgSWQuZnJvbVN0cmluZyhhc3NldElkKSwgdHJhbnNmZXJPdXRwdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYXJyYXkgb2YgRGVjb2RlZFV0eG9PYmogdG8gbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqIEBwYXJhbSBkZWNvZGVkVXR4b3MgLSBBcnJheSBvZiBEZWNvZGVkVXR4b09ialxuICAgKiBAcGFyYW0gYXNzZXRJZCAtIEFzc2V0IElEIGFzIGNiNTggZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbmF0aXZlIEZsYXJlSlMgVXR4byBvYmplY3RzXG4gICAqL1xuICBwdWJsaWMgZGVjb2RlZFRvVXR4b3MoZGVjb2RlZFV0eG9zOiBEZWNvZGVkVXR4b09ialtdLCBhc3NldElkOiBzdHJpbmcpOiBVdHhvW10ge1xuICAgIHJldHVybiBkZWNvZGVkVXR4b3MubWFwKChkZWNvZGVkKSA9PiB0aGlzLmRlY29kZWRUb1V0eG8oZGVjb2RlZCwgYXNzZXRJZCkpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
@@ -0,0 +1,83 @@
1
+ export declare const DELEGATION_TX_1: {
2
+ txhash: string;
3
+ signedHex: string;
4
+ nodeID: string;
5
+ stakeAmount: string;
6
+ startTime: number;
7
+ endTime: number;
8
+ pAddresses: string[];
9
+ threshold: number;
10
+ locktime: number;
11
+ context: {
12
+ xBlockchainID: string;
13
+ pBlockchainID: string;
14
+ cBlockchainID: string;
15
+ avaxAssetID: string;
16
+ baseTxFee: bigint;
17
+ createAssetTxFee: bigint;
18
+ createSubnetTxFee: bigint;
19
+ transformSubnetTxFee: bigint;
20
+ createBlockchainTxFee: bigint;
21
+ addPrimaryNetworkValidatorFee: bigint;
22
+ addPrimaryNetworkDelegatorFee: bigint;
23
+ addSubnetValidatorFee: bigint;
24
+ addSubnetDelegatorFee: bigint;
25
+ networkID: number;
26
+ hrp: string;
27
+ platformFeeConfig: {
28
+ weights: {
29
+ 0: number;
30
+ 1: number;
31
+ 2: number;
32
+ 3: number;
33
+ };
34
+ maxCapacity: bigint;
35
+ maxPerSecond: bigint;
36
+ targetPerSecond: bigint;
37
+ minPrice: bigint;
38
+ excessConversionConstant: bigint;
39
+ };
40
+ };
41
+ };
42
+ export declare const DELEGATION_TX_2: {
43
+ txhash: string;
44
+ signedHex: string;
45
+ nodeID: string;
46
+ stakeAmount: string;
47
+ startTime: number;
48
+ endTime: number;
49
+ pAddresses: string[];
50
+ threshold: number;
51
+ locktime: number;
52
+ context: {
53
+ xBlockchainID: string;
54
+ pBlockchainID: string;
55
+ cBlockchainID: string;
56
+ avaxAssetID: string;
57
+ baseTxFee: bigint;
58
+ createAssetTxFee: bigint;
59
+ createSubnetTxFee: bigint;
60
+ transformSubnetTxFee: bigint;
61
+ createBlockchainTxFee: bigint;
62
+ addPrimaryNetworkValidatorFee: bigint;
63
+ addPrimaryNetworkDelegatorFee: bigint;
64
+ addSubnetValidatorFee: bigint;
65
+ addSubnetDelegatorFee: bigint;
66
+ networkID: number;
67
+ hrp: string;
68
+ platformFeeConfig: {
69
+ weights: {
70
+ 0: number;
71
+ 1: number;
72
+ 2: number;
73
+ 3: number;
74
+ };
75
+ maxCapacity: bigint;
76
+ maxPerSecond: bigint;
77
+ targetPerSecond: bigint;
78
+ minPrice: bigint;
79
+ excessConversionConstant: bigint;
80
+ };
81
+ };
82
+ };
83
+ //# sourceMappingURL=delegatorTx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegatorTx.d.ts","sourceRoot":"","sources":["../../../../test/resources/transactionData/delegatorTx.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAC;AAGF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELEGATION_TX_2 = exports.DELEGATION_TX_1 = void 0;
4
+ exports.DELEGATION_TX_1 = {
5
+ txhash: '22Uff2JJeULyrtrqpcwbXHi5Kk3RyDf4yWBeKE6iEJNN9mSft',
6
+ signedHex: '0x00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700000000515b482e000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000d01f7dd0e5da53081c6099d8f0afa210155ad458a901526f72674f4d3526fee8e0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae40000000010000000019b7e281d137b2e514433fede0a9ff8c86e5a4b6c44ca4dd118ec6c68dfc3c2e0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae40000000010000000083faa4bd5f31b3f8341222a058a07b65fc00a8a40729d2cdec6bac4c551a45e80000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002eb2a6a000000010000000092c456b05e78c3e3c68a237b4496062e57f342552ad24b6806828f2a0e45d06b0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b8b03ea0000000100000000b67a44c2ce746c9169a91945d6ba9810d91f492949e96724996d5a6e1e7c90830000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b8b87c00000000100000000c2458a918382b12cec5f2fb3831a21af064348fbd111c72436e187e2f061a3510000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000017485863800000000100000000c63bca17b55213b6daaddb79e5a4ca70e1e339a091d919a13e509626bed1fcd20000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000001b5b8aba9ea0000000100000000cc2be401e345098f2ff0bed49defa523fe3a3b2885ff8b923b7aaff79d5242dc0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000000026351120000000100000000d018ee6fdd5b7b62a76221835906971f691e8a6827e76895ada9749d282c7d3a0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b8b87c00000000100000000d9da0a8661e56097be7e039458fd78d1acf7c8f483311320cf4a961eae2df5cc0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002ba7dee339ea0000000100000000f7df027fbffbf24b9340580f5c157a908a7e54622714355385e416d9b313d9600000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000253ed5f800000000100000000f938b9085f48102bbe5a037eab4391939b2dae590bb13c981fe863a93179be8d0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002eb2a6a0000000100000000fe1dff2fd7db1696e05afe3f96123d9d70fbb5ca80104b2a9e322beb74bacd520000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000001e5b7df40000000010000000000000000664b4924a25af8be5f07052b2c2e582f7c10a654000000006926d93d0000000069394e3d00002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d2000000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000b000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000d00000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd0100000009000000012d4872c17946adf5fd4e3094001610c30218857f30c649ac08a9f0d1f27ff84c190bce972096de6f14b1b72622319892302daa97841ec99af713bcf9c729c9bd01c161eee9',
7
+ nodeID: 'NodeID-AKt7WaK6ozEy5K8azKNacZXLzxZ9xFgC7',
8
+ stakeAmount: '50000000000000', // 50,000 FLR in nanoFLR
9
+ startTime: 1764280637,
10
+ endTime: 1765490237, // ~14 days later
11
+ pAddresses: ['P-costwo1p3jmmcpu9uxhz2wm3z6673hnnp8xavr0vy6vqn'],
12
+ threshold: 1,
13
+ locktime: 0,
14
+ context: {
15
+ xBlockchainID: 'FJuSwZuP85eyBpuBrKECnpPedGyXoDy2hP9q4JD8qBTZGxYbJ',
16
+ pBlockchainID: '11111111111111111111111111111111LpoYY',
17
+ cBlockchainID: 'vE8M98mEQH6wk56sStD1ML8HApTgSqfJZLk9gQ3Fsd4i6m3Bi',
18
+ avaxAssetID: 'fxMAKpBQQpFedrUhWMsDYfCUJxdUw4mneTczKBzNg3rc2JUub',
19
+ baseTxFee: 1000000n,
20
+ createAssetTxFee: 1000000n,
21
+ createSubnetTxFee: 100000000n,
22
+ transformSubnetTxFee: 100000000n,
23
+ createBlockchainTxFee: 100000000n,
24
+ addPrimaryNetworkValidatorFee: 0n,
25
+ addPrimaryNetworkDelegatorFee: 0n,
26
+ addSubnetValidatorFee: 1000000n,
27
+ addSubnetDelegatorFee: 1000000n,
28
+ networkID: 114,
29
+ hrp: 'costwo',
30
+ platformFeeConfig: {
31
+ weights: { 0: 1, 1: 1000, 2: 1000, 3: 4 },
32
+ maxCapacity: 1000000n,
33
+ maxPerSecond: 100000n,
34
+ targetPerSecond: 50000n,
35
+ minPrice: 250n,
36
+ excessConversionConstant: 2164043n,
37
+ },
38
+ },
39
+ };
40
+ // Second delegation transaction - simpler with 3 inputs (used for round-trip testing)
41
+ exports.DELEGATION_TX_2 = {
42
+ txhash: '2YvHZngWoddX8vS8ZR5izJJmdhRnkhqQHqpJSEiW66Mtf3CB28',
43
+ signedHex: '0x00000000001a0000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002635112000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f00000003048351567748c8fbc3ce9f638b16b1fc324ea52620d020f0881ec49968a7f1420000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500002d7984ff54440000000100000000a27213128a72837d0711284e38980649d5d98d98c1d50385db69fabc181cd99d0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae400000000100000000e918bf6dceb24368264cb6b9c5d67e9f94dd06021b484836363378467fcc89900000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002ebae40000000010000000000000000664b4924a25af8be5f07052b2c2e582f7c10a654000000006926ca570000000069393f5700002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000700002d79883d2000000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f0000000b000000000000000000000001000000010c65bde03c2f0d7129db88b5af46f3984e6eb06f00000003000000090000000145ba455f2766e6b9c8aa913aceab2c512db29efa855b2303a0dba72cb90ac12e5d9a942419d6854f0549d43248a4ef22331665f78ee46b8a5655eb61c941641b01000000090000000145ba455f2766e6b9c8aa913aceab2c512db29efa855b2303a0dba72cb90ac12e5d9a942419d6854f0549d43248a4ef22331665f78ee46b8a5655eb61c941641b01000000090000000145ba455f2766e6b9c8aa913aceab2c512db29efa855b2303a0dba72cb90ac12e5d9a942419d6854f0549d43248a4ef22331665f78ee46b8a5655eb61c941641b019d5242dc',
44
+ nodeID: 'NodeID-AKt7WaK6ozEy5K8azKNacZXLzxZ9xFgC7',
45
+ stakeAmount: '50000000000000', // 50,000 FLR in nanoFLR
46
+ startTime: 1764276823,
47
+ endTime: 1765486423, // ~14 days later
48
+ pAddresses: ['P-costwo1p3jmmcpu9uxhz2wm3z6673hnnp8xavr0vy6vqn'],
49
+ threshold: 1,
50
+ locktime: 0,
51
+ context: {
52
+ xBlockchainID: 'FJuSwZuP85eyBpuBrKECnpPedGyXoDy2hP9q4JD8qBTZGxYbJ',
53
+ pBlockchainID: '11111111111111111111111111111111LpoYY',
54
+ cBlockchainID: 'vE8M98mEQH6wk56sStD1ML8HApTgSqfJZLk9gQ3Fsd4i6m3Bi',
55
+ avaxAssetID: 'fxMAKpBQQpFedrUhWMsDYfCUJxdUw4mneTczKBzNg3rc2JUub',
56
+ baseTxFee: 1000000n,
57
+ createAssetTxFee: 1000000n,
58
+ createSubnetTxFee: 100000000n,
59
+ transformSubnetTxFee: 100000000n,
60
+ createBlockchainTxFee: 100000000n,
61
+ addPrimaryNetworkValidatorFee: 0n,
62
+ addPrimaryNetworkDelegatorFee: 0n,
63
+ addSubnetValidatorFee: 1000000n,
64
+ addSubnetDelegatorFee: 1000000n,
65
+ networkID: 114,
66
+ hrp: 'costwo',
67
+ platformFeeConfig: {
68
+ weights: { 0: 1, 1: 1000, 2: 1000, 3: 4 },
69
+ maxCapacity: 1000000n,
70
+ maxPerSecond: 100000n,
71
+ targetPerSecond: 50000n,
72
+ minPrice: 250n,
73
+ excessConversionConstant: 2164043n,
74
+ },
75
+ },
76
+ };
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3Jlc291cmNlcy90cmFuc2FjdGlvbkRhdGEvZGVsZWdhdG9yVHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLG1EQUFtRDtJQUMzRCxTQUFTLEVBQ1AsMHdKQUEwd0o7SUFDNXdKLE1BQU0sRUFBRSwwQ0FBMEM7SUFDbEQsV0FBVyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QjtJQUN2RCxTQUFTLEVBQUUsVUFBVTtJQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQjtJQUN0QyxVQUFVLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQztJQUMvRCxTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxDQUFDO0lBQ1gsT0FBTyxFQUFFO1FBQ1AsYUFBYSxFQUFFLG1EQUFtRDtRQUNsRSxhQUFhLEVBQUUsdUNBQXVDO1FBQ3RELGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsV0FBVyxFQUFFLG1EQUFtRDtRQUNoRSxTQUFTLEVBQUUsUUFBUTtRQUNuQixnQkFBZ0IsRUFBRSxRQUFRO1FBQzFCLGlCQUFpQixFQUFFLFVBQVU7UUFDN0Isb0JBQW9CLEVBQUUsVUFBVTtRQUNoQyxxQkFBcUIsRUFBRSxVQUFVO1FBQ2pDLDZCQUE2QixFQUFFLEVBQUU7UUFDakMsNkJBQTZCLEVBQUUsRUFBRTtRQUNqQyxxQkFBcUIsRUFBRSxRQUFRO1FBQy9CLHFCQUFxQixFQUFFLFFBQVE7UUFDL0IsU0FBUyxFQUFFLEdBQUc7UUFDZCxHQUFHLEVBQUUsUUFBUTtRQUNiLGlCQUFpQixFQUFFO1lBQ2pCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekMsV0FBVyxFQUFFLFFBQVE7WUFDckIsWUFBWSxFQUFFLE9BQU87WUFDckIsZUFBZSxFQUFFLE1BQU07WUFDdkIsUUFBUSxFQUFFLElBQUk7WUFDZCx3QkFBd0IsRUFBRSxRQUFRO1NBQ25DO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsc0ZBQXNGO0FBQ3pFLFFBQUEsZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxvREFBb0Q7SUFDNUQsU0FBUyxFQUNQLHNuREFBc25EO0lBQ3huRCxNQUFNLEVBQUUsMENBQTBDO0lBQ2xELFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0I7SUFDdkQsU0FBUyxFQUFFLFVBQVU7SUFDckIsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUI7SUFDdEMsVUFBVSxFQUFFLENBQUMsaURBQWlELENBQUM7SUFDL0QsU0FBUyxFQUFFLENBQUM7SUFDWixRQUFRLEVBQUUsQ0FBQztJQUNYLE9BQU8sRUFBRTtRQUNQLGFBQWEsRUFBRSxtREFBbUQ7UUFDbEUsYUFBYSxFQUFFLHVDQUF1QztRQUN0RCxhQUFhLEVBQUUsbURBQW1EO1FBQ2xFLFdBQVcsRUFBRSxtREFBbUQ7UUFDaEUsU0FBUyxFQUFFLFFBQVE7UUFDbkIsZ0JBQWdCLEVBQUUsUUFBUTtRQUMxQixpQkFBaUIsRUFBRSxVQUFVO1FBQzdCLG9CQUFvQixFQUFFLFVBQVU7UUFDaEMscUJBQXFCLEVBQUUsVUFBVTtRQUNqQyw2QkFBNkIsRUFBRSxFQUFFO1FBQ2pDLDZCQUE2QixFQUFFLEVBQUU7UUFDakMscUJBQXFCLEVBQUUsUUFBUTtRQUMvQixxQkFBcUIsRUFBRSxRQUFRO1FBQy9CLFNBQVMsRUFBRSxHQUFHO1FBQ2QsR0FBRyxFQUFFLFFBQVE7UUFDYixpQkFBaUIsRUFBRTtZQUNqQixPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2Qsd0JBQXdCLEVBQUUsUUFBUTtTQUNuQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUxFR0FUSU9OX1RYXzEgPSB7XG4gIHR4aGFzaDogJzIyVWZmMkpKZVVMeXJ0cnFwY3diWEhpNUtrM1J5RGY0eVdCZUtFNmlFSk5OOW1TZnQnLFxuICBzaWduZWRIZXg6XG4gICAgJzB4MDAwMDAwMDAwMDFhMDAwMDAwNzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDcwMDAwMDAwMDUxNWI0ODJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwYzY1YmRlMDNjMmYwZDcxMjlkYjg4YjVhZjQ2ZjM5ODRlNmViMDZmMDAwMDAwMGQwMWY3ZGQwZTVkYTUzMDgxYzYwOTlkOGYwYWZhMjEwMTU1YWQ0NThhOTAxNTI2ZjcyNjc0ZjRkMzUyNmZlZThlMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDAwMDAyZWJhZTQwMDAwMDAwMDEwMDAwMDAwMDE5YjdlMjgxZDEzN2IyZTUxNDQzM2ZlZGUwYTlmZjhjODZlNWE0YjZjNDRjYTRkZDExOGVjNmM2OGRmYzNjMmUwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwMDJlYmFlNDAwMDAwMDAwMTAwMDAwMDAwODNmYWE0YmQ1ZjMxYjNmODM0MTIyMmEwNThhMDdiNjVmYzAwYThhNDA3MjlkMmNkZWM2YmFjNGM1NTFhNDVlODAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAwMmViMmE2YTAwMDAwMDAxMDAwMDAwMDA5MmM0NTZiMDVlNzhjM2UzYzY4YTIzN2I0NDk2MDYyZTU3ZjM0MjU1MmFkMjRiNjgwNjgyOGYyYTBlNDVkMDZiMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDAwMDNiOGIwM2VhMDAwMDAwMDEwMDAwMDAwMGI2N2E0NGMyY2U3NDZjOTE2OWE5MTk0NWQ2YmE5ODEwZDkxZjQ5Mjk0OWU5NjcyNDk5NmQ1YTZlMWU3YzkwODMwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwM2I4Yjg3YzAwMDAwMDAwMTAwMDAwMDAwYzI0NThhOTE4MzgyYjEyY2VjNWYyZmIzODMxYTIxYWYwNjQzNDhmYmQxMTFjNzI0MzZlMTg3ZTJmMDYxYTM1MTAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMTc0ODU4NjM4MDAwMDAwMDAxMDAwMDAwMDBjNjNiY2ExN2I1NTIxM2I2ZGFhZGRiNzllNWE0Y2E3MGUxZTMzOWEwOTFkOTE5YTEzZTUwOTYyNmJlZDFmY2QyMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDFiNWI4YWJhOWVhMDAwMDAwMDEwMDAwMDAwMGNjMmJlNDAxZTM0NTA5OGYyZmYwYmVkNDlkZWZhNTIzZmUzYTNiMjg4NWZmOGI5MjNiN2FhZmY3OWQ1MjQyZGMwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwMDI2MzUxMTIwMDAwMDAwMTAwMDAwMDAwZDAxOGVlNmZkZDViN2I2MmE3NjIyMTgzNTkwNjk3MWY2OTFlOGE2ODI3ZTc2ODk1YWRhOTc0OWQyODJjN2QzYTAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAzYjhiODdjMDAwMDAwMDAxMDAwMDAwMDBkOWRhMGE4NjYxZTU2MDk3YmU3ZTAzOTQ1OGZkNzhkMWFjZjdjOGY0ODMzMTEzMjBjZjRhOTYxZWFlMmRmNWNjMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMmJhN2RlZTMzOWVhMDAwMDAwMDEwMDAwMDAwMGY3ZGYwMjdmYmZmYmYyNGI5MzQwNTgwZjVjMTU3YTkwOGE3ZTU0NjIyNzE0MzU1Mzg1ZTQxNmQ5YjMxM2Q5NjAwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAyNTNlZDVmODAwMDAwMDAwMTAwMDAwMDAwZjkzOGI5MDg1ZjQ4MTAyYmJlNWEwMzdlYWI0MzkxOTM5YjJkYWU1OTBiYjEzYzk4MWZlODYzYTkzMTc5YmU4ZDAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAwMmViMmE2YTAwMDAwMDAxMDAwMDAwMDBmZTFkZmYyZmQ3ZGIxNjk2ZTA1YWZlM2Y5NjEyM2Q5ZDcwZmJiNWNhODAxMDRiMmE5ZTMyMmJlYjc0YmFjZDUyMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMDAwMWU1YjdkZjQwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwNjY0YjQ5MjRhMjVhZjhiZTVmMDcwNTJiMmMyZTU4MmY3YzEwYTY1NDAwMDAwMDAwNjkyNmQ5M2QwMDAwMDAwMDY5Mzk0ZTNkMDAwMDJkNzk4ODNkMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNzAwMDAyZDc5ODgzZDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTBjNjViZGUwM2MyZjBkNzEyOWRiODhiNWFmNDZmMzk4NGU2ZWIwNmYwMDAwMDAwYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMGM2NWJkZTAzYzJmMGQ3MTI5ZGI4OGI1YWY0NmYzOTg0ZTZlYjA2ZjAwMDAwMDBkMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDEwMDAwMDAwOTAwMDAwMDAxMmQ0ODcyYzE3OTQ2YWRmNWZkNGUzMDk0MDAxNjEwYzMwMjE4ODU3ZjMwYzY0OWFjMDhhOWYwZDFmMjdmZjg0YzE5MGJjZTk3MjA5NmRlNmYxNGIxYjcyNjIyMzE5ODkyMzAyZGFhOTc4NDFlYzk5YWY3MTNiY2Y5YzcyOWM5YmQwMTAwMDAwMDA5MDAwMDAwMDEyZDQ4NzJjMTc5NDZhZGY1ZmQ0ZTMwOTQwMDE2MTBjMzAyMTg4NTdmMzBjNjQ5YWMwOGE5ZjBkMWYyN2ZmODRjMTkwYmNlOTcyMDk2ZGU2ZjE0YjFiNzI2MjIzMTk4OTIzMDJkYWE5Nzg0MWVjOTlhZjcxM2JjZjljNzI5YzliZDAxMDAwMDAwMDkwMDAwMDAwMTJkNDg3MmMxNzk0NmFkZjVmZDRlMzA5NDAwMTYxMGMzMDIxODg1N2YzMGM2NDlhYzA4YTlmMGQxZjI3ZmY4NGMxOTBiY2U5NzIwOTZkZTZmMTRiMWI3MjYyMjMxOTg5MjMwMmRhYTk3ODQxZWM5OWFmNzEzYmNmOWM3MjljOWJkMDFjMTYxZWVlOScsXG4gIG5vZGVJRDogJ05vZGVJRC1BS3Q3V2FLNm96RXk1SzhhektOYWNaWEx6eFo5eEZnQzcnLFxuICBzdGFrZUFtb3VudDogJzUwMDAwMDAwMDAwMDAwJywgLy8gNTAsMDAwIEZMUiBpbiBuYW5vRkxSXG4gIHN0YXJ0VGltZTogMTc2NDI4MDYzNyxcbiAgZW5kVGltZTogMTc2NTQ5MDIzNywgLy8gfjE0IGRheXMgbGF0ZXJcbiAgcEFkZHJlc3NlczogWydQLWNvc3R3bzFwM2ptbWNwdTl1eGh6MndtM3o2NjczaG5ucDh4YXZyMHZ5NnZxbiddLFxuICB0aHJlc2hvbGQ6IDEsXG4gIGxvY2t0aW1lOiAwLFxuICBjb250ZXh0OiB7XG4gICAgeEJsb2NrY2hhaW5JRDogJ0ZKdVN3WnVQODVleUJwdUJyS0VDbnBQZWRHeVhvRHkyaFA5cTRKRDhxQlRaR3hZYkonLFxuICAgIHBCbG9ja2NoYWluSUQ6ICcxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMUxwb1lZJyxcbiAgICBjQmxvY2tjaGFpbklEOiAndkU4TTk4bUVRSDZ3azU2c1N0RDFNTDhIQXBUZ1NxZkpaTGs5Z1EzRnNkNGk2bTNCaScsXG4gICAgYXZheEFzc2V0SUQ6ICdmeE1BS3BCUVFwRmVkclVoV01zRFlmQ1VKeGRVdzRtbmVUY3pLQnpOZzNyYzJKVXViJyxcbiAgICBiYXNlVHhGZWU6IDEwMDAwMDBuLFxuICAgIGNyZWF0ZUFzc2V0VHhGZWU6IDEwMDAwMDBuLFxuICAgIGNyZWF0ZVN1Ym5ldFR4RmVlOiAxMDAwMDAwMDBuLFxuICAgIHRyYW5zZm9ybVN1Ym5ldFR4RmVlOiAxMDAwMDAwMDBuLFxuICAgIGNyZWF0ZUJsb2NrY2hhaW5UeEZlZTogMTAwMDAwMDAwbixcbiAgICBhZGRQcmltYXJ5TmV0d29ya1ZhbGlkYXRvckZlZTogMG4sXG4gICAgYWRkUHJpbWFyeU5ldHdvcmtEZWxlZ2F0b3JGZWU6IDBuLFxuICAgIGFkZFN1Ym5ldFZhbGlkYXRvckZlZTogMTAwMDAwMG4sXG4gICAgYWRkU3VibmV0RGVsZWdhdG9yRmVlOiAxMDAwMDAwbixcbiAgICBuZXR3b3JrSUQ6IDExNCxcbiAgICBocnA6ICdjb3N0d28nLFxuICAgIHBsYXRmb3JtRmVlQ29uZmlnOiB7XG4gICAgICB3ZWlnaHRzOiB7IDA6IDEsIDE6IDEwMDAsIDI6IDEwMDAsIDM6IDQgfSxcbiAgICAgIG1heENhcGFjaXR5OiAxMDAwMDAwbixcbiAgICAgIG1heFBlclNlY29uZDogMTAwMDAwbixcbiAgICAgIHRhcmdldFBlclNlY29uZDogNTAwMDBuLFxuICAgICAgbWluUHJpY2U6IDI1MG4sXG4gICAgICBleGNlc3NDb252ZXJzaW9uQ29uc3RhbnQ6IDIxNjQwNDNuLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vLyBTZWNvbmQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvbiAtIHNpbXBsZXIgd2l0aCAzIGlucHV0cyAodXNlZCBmb3Igcm91bmQtdHJpcCB0ZXN0aW5nKVxuZXhwb3J0IGNvbnN0IERFTEVHQVRJT05fVFhfMiA9IHtcbiAgdHhoYXNoOiAnMll2SFpuZ1dvZGRYOHZTOFpSNWl6SkptZGhSbmtocVFIcXBKU0VpVzY2TXRmM0NCMjgnLFxuICBzaWduZWRIZXg6XG4gICAgJzB4MDAwMDAwMDAwMDFhMDAwMDAwNzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDcwMDAwMDAwMDAyNjM1MTEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwYzY1YmRlMDNjMmYwZDcxMjlkYjg4YjVhZjQ2ZjM5ODRlNmViMDZmMDAwMDAwMDMwNDgzNTE1Njc3NDhjOGZiYzNjZTlmNjM4YjE2YjFmYzMyNGVhNTI2MjBkMDIwZjA4ODFlYzQ5OTY4YTdmMTQyMDAwMDAwMDA1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDUwMDAwMmQ3OTg0ZmY1NDQ0MDAwMDAwMDEwMDAwMDAwMGEyNzIxMzEyOGE3MjgzN2QwNzExMjg0ZTM4OTgwNjQ5ZDVkOThkOThjMWQ1MDM4NWRiNjlmYWJjMTgxY2Q5OWQwMDAwMDAwMDU4NzM0Zjk0YWY4NzFjM2QxMzFiNTYxMzFiNmZiN2EwMjkxZWFjYWRkMjYxZTY5ZGZiNDJhOWNkZjZmN2ZkZGQwMDAwMDAwNTAwMDAwMDAwMDJlYmFlNDAwMDAwMDAwMTAwMDAwMDAwZTkxOGJmNmRjZWIyNDM2ODI2NGNiNmI5YzVkNjdlOWY5NGRkMDYwMjFiNDg0ODM2MzYzMzc4NDY3ZmNjODk5MDAwMDAwMDAwNTg3MzRmOTRhZjg3MWMzZDEzMWI1NjEzMWI2ZmI3YTAyOTFlYWNhZGQyNjFlNjlkZmI0MmE5Y2RmNmY3ZmRkZDAwMDAwMDA1MDAwMDAwMDAwMmViYWU0MDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDY2NGI0OTI0YTI1YWY4YmU1ZjA3MDUyYjJjMmU1ODJmN2MxMGE2NTQwMDAwMDAwMDY5MjZjYTU3MDAwMDAwMDA2OTM5M2Y1NzAwMDAyZDc5ODgzZDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1ODczNGY5NGFmODcxYzNkMTMxYjU2MTMxYjZmYjdhMDI5MWVhY2FkZDI2MWU2OWRmYjQyYTljZGY2ZjdmZGRkMDAwMDAwMDcwMDAwMmQ3OTg4M2QyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwYzY1YmRlMDNjMmYwZDcxMjlkYjg4YjVhZjQ2ZjM5ODRlNmViMDZmMDAwMDAwMGIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTBjNjViZGUwM2MyZjBkNzEyOWRiODhiNWFmNDZmMzk4NGU2ZWIwNmYwMDAwMDAwMzAwMDAwMDA5MDAwMDAwMDE0NWJhNDU1ZjI3NjZlNmI5YzhhYTkxM2FjZWFiMmM1MTJkYjI5ZWZhODU1YjIzMDNhMGRiYTcyY2I5MGFjMTJlNWQ5YTk0MjQxOWQ2ODU0ZjA1NDlkNDMyNDhhNGVmMjIzMzE2NjVmNzhlZTQ2YjhhNTY1NWViNjFjOTQxNjQxYjAxMDAwMDAwMDkwMDAwMDAwMTQ1YmE0NTVmMjc2NmU2YjljOGFhOTEzYWNlYWIyYzUxMmRiMjllZmE4NTViMjMwM2EwZGJhNzJjYjkwYWMxMmU1ZDlhOTQyNDE5ZDY4NTRmMDU0OWQ0MzI0OGE0ZWYyMjMzMTY2NWY3OGVlNDZiOGE1NjU1ZWI2MWM5NDE2NDFiMDEwMDAwMDAwOTAwMDAwMDAxNDViYTQ1NWYyNzY2ZTZiOWM4YWE5MTNhY2VhYjJjNTEyZGIyOWVmYTg1NWIyMzAzYTBkYmE3MmNiOTBhYzEyZTVkOWE5NDI0MTlkNjg1NGYwNTQ5ZDQzMjQ4YTRlZjIyMzMxNjY1Zjc4ZWU0NmI4YTU2NTVlYjYxYzk0MTY0MWIwMTlkNTI0MmRjJyxcbiAgbm9kZUlEOiAnTm9kZUlELUFLdDdXYUs2b3pFeTVLOGF6S05hY1pYTHp4Wjl4RmdDNycsXG4gIHN0YWtlQW1vdW50OiAnNTAwMDAwMDAwMDAwMDAnLCAvLyA1MCwwMDAgRkxSIGluIG5hbm9GTFJcbiAgc3RhcnRUaW1lOiAxNzY0Mjc2ODIzLFxuICBlbmRUaW1lOiAxNzY1NDg2NDIzLCAvLyB+MTQgZGF5cyBsYXRlclxuICBwQWRkcmVzc2VzOiBbJ1AtY29zdHdvMXAzam1tY3B1OXV4aHoyd20zejY2NzNobm5wOHhhdnIwdnk2dnFuJ10sXG4gIHRocmVzaG9sZDogMSxcbiAgbG9ja3RpbWU6IDAsXG4gIGNvbnRleHQ6IHtcbiAgICB4QmxvY2tjaGFpbklEOiAnRkp1U3dadVA4NWV5QnB1QnJLRUNucFBlZEd5WG9EeTJoUDlxNEpEOHFCVFpHeFliSicsXG4gICAgcEJsb2NrY2hhaW5JRDogJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExTHBvWVknLFxuICAgIGNCbG9ja2NoYWluSUQ6ICd2RThNOThtRVFINndrNTZzU3REMU1MOEhBcFRnU3FmSlpMazlnUTNGc2Q0aTZtM0JpJyxcbiAgICBhdmF4QXNzZXRJRDogJ2Z4TUFLcEJRUXBGZWRyVWhXTXNEWWZDVUp4ZFV3NG1uZVRjektCek5nM3JjMkpVdWInLFxuICAgIGJhc2VUeEZlZTogMTAwMDAwMG4sXG4gICAgY3JlYXRlQXNzZXRUeEZlZTogMTAwMDAwMG4sXG4gICAgY3JlYXRlU3VibmV0VHhGZWU6IDEwMDAwMDAwMG4sXG4gICAgdHJhbnNmb3JtU3VibmV0VHhGZWU6IDEwMDAwMDAwMG4sXG4gICAgY3JlYXRlQmxvY2tjaGFpblR4RmVlOiAxMDAwMDAwMDBuLFxuICAgIGFkZFByaW1hcnlOZXR3b3JrVmFsaWRhdG9yRmVlOiAwbixcbiAgICBhZGRQcmltYXJ5TmV0d29ya0RlbGVnYXRvckZlZTogMG4sXG4gICAgYWRkU3VibmV0VmFsaWRhdG9yRmVlOiAxMDAwMDAwbixcbiAgICBhZGRTdWJuZXREZWxlZ2F0b3JGZWU6IDEwMDAwMDBuLFxuICAgIG5ldHdvcmtJRDogMTE0LFxuICAgIGhycDogJ2Nvc3R3bycsXG4gICAgcGxhdGZvcm1GZWVDb25maWc6IHtcbiAgICAgIHdlaWdodHM6IHsgMDogMSwgMTogMTAwMCwgMjogMTAwMCwgMzogNCB9LFxuICAgICAgbWF4Q2FwYWNpdHk6IDEwMDAwMDBuLFxuICAgICAgbWF4UGVyU2Vjb25kOiAxMDAwMDBuLFxuICAgICAgdGFyZ2V0UGVyU2Vjb25kOiA1MDAwMG4sXG4gICAgICBtaW5QcmljZTogMjUwbixcbiAgICAgIGV4Y2Vzc0NvbnZlcnNpb25Db25zdGFudDogMjE2NDA0M24sXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=