@witnet/sdk 1.0.14 → 1.0.15

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/README.md CHANGED
@@ -67,22 +67,22 @@ You can optionally:
67
67
  ### CLI modules
68
68
 
69
69
  ---
70
- #### `$ npx witsdk network`
70
+ #### `npx witsdk network`
71
71
  Retrieve dynamic information from the Witnet's P2P network:
72
72
  ![Snapshot showing Witnet SDK's network commands](https://raw.githubusercontent.com/witnet/witnet-toolkit/main/docs/network.png)
73
73
 
74
74
  ---
75
- #### `$ npx witsdk wallet`
75
+ #### `npx witsdk wallet`
76
76
  Self-custody local wallet for spending and staking at will your own $WIT coins:
77
77
  ![Snapshot showing Witnet SDK's wallet commands](https://raw.githubusercontent.com/witnet/witnet-toolkit/main/docs/wallet.png)
78
78
 
79
79
  ---
80
- #### `$ npx witsdk inspect`
80
+ #### `npx witsdk inspect`
81
81
  Inspect public data from the Witnet blockchain:
82
82
  ![Snapshot showing Witnet SDK's inspection commands](https://raw.githubusercontent.com/witnet/witnet-toolkit/main/docs/inspect.png)
83
83
 
84
84
  ---
85
- #### `$ npx witsdk radon`
85
+ #### `npx witsdk radon`
86
86
  - Manage pre-built Witnet-compliant data requests and templates (aka. Radon assets):
87
87
  ![Snapshot showing Witnet SDK's radon commands](https://raw.githubusercontent.com/witnet/witnet-toolkit/main/docs/radon.png)
88
88
 
@@ -92,7 +92,7 @@ Inspect public data from the Witnet blockchain:
92
92
  ```
93
93
 
94
94
  ---
95
- #### `$ npx witsdk nodes`
95
+ #### `npx witsdk nodes`
96
96
  Interact with your own private Witnet nodes, if reachable:
97
97
  ![Snapshot showing Witnet SDK's nodes farming commands](https://raw.githubusercontent.com/witnet/witnet-toolkit/main/docs/nodes.png)
98
98
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witnet/sdk",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
5
5
  "author": "Witnet Foundation",
6
6
  "license": "MIT",
@@ -47,7 +47,7 @@ export declare class DataRequestPayload extends TransactionPayloadMultiSig<DataR
47
47
  protected _cleanTargetExtras(target?: any): any;
48
48
  protected _estimateNetworkFees(provider: IJsonRpcProvider, priority?: TransactionPriority): Promise<bigint>;
49
49
  protected _fees2UnitaryCommitRevealReward(fees: bigint, witnesses: number): bigint;
50
- protected _fees2UnitaryReward(fees: bigint, witnesses: number): bigint;
50
+ protected _fees2UnitaryReward(fees: bigint, _witnesses: number): bigint;
51
51
  protected _fees2Value(fees: bigint, witnesses: number): bigint;
52
52
  protected _toDrOutputProtobuf(): any;
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataRequestPayload.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/payloads/DataRequestPayload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataRequestPayload.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/payloads/DataRequestPayload.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const radon_1 = require("../../radon");
9
9
  const payloads_1 = require("../payloads");
10
10
  const types_1 = require("../types");
11
11
  const utils_1 = require("../utils");
12
+ const COLLATERAL_RATIO = 100n;
12
13
  const DR_COMMIT_TX_WEIGHT = 400;
13
14
  const DR_REVEAL_TX_WEIGHT = 200;
14
15
  const DR_TALLY_TX_WEIGHT = 100;
@@ -315,8 +316,8 @@ class DataRequestPayload extends payloads_1.TransactionPayloadMultiSig {
315
316
  _fees2UnitaryCommitRevealReward(fees, witnesses) {
316
317
  return fees / BigInt(witnesses) || 1n;
317
318
  }
318
- _fees2UnitaryReward(fees, witnesses) {
319
- return utils_1.BigMath.max(fees, 1n + DataRequestPayload.MIN_COLLATERAL / BigInt(witnesses));
319
+ _fees2UnitaryReward(fees, _witnesses) {
320
+ return utils_1.BigMath.max(fees, 1n + DataRequestPayload.MIN_COLLATERAL / COLLATERAL_RATIO);
320
321
  }
321
322
  _fees2Value(fees, witnesses) {
322
323
  return (BigInt(witnesses) * (this._fees2UnitaryReward(fees, witnesses)
@@ -336,4 +337,4 @@ DataRequestPayload.DEFAULT_WITNESSES = 12;
336
337
  DataRequestPayload.MAX_WEIGHT = 80000;
337
338
  DataRequestPayload.MIN_COLLATERAL = 20000000000n;
338
339
  DataRequestPayload.MIN_CONSENSUS_PERCENTAGE = 51;
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RQYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vcGF5bG9hZHMvRGF0YVJlcXVlc3RQYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUU1QiwyQ0FBOEM7QUFDOUMsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQTtBQUVyRixrREFBaUU7QUFFakUsdUNBQXlEO0FBSXpELDBDQUF3RDtBQUN4RCxvQ0FBdUY7QUFDdkYsb0NBQTBDO0FBa0IxQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQUU5QixNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQTtBQUM1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQTtBQUUzQixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTtBQUNoQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtBQUVoQyxNQUFhLGtCQUFtQixTQUFRLHFDQUE2QztJQVVqRixZQUFhLGFBQXFCLEVBQUUsS0FBbUMsRUFBRSxhQUFpQztRQUN0RyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ25DLElBQUksS0FBSyxZQUFZLG9CQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLFlBQVkscUJBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLFNBQVMsQ0FB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O0lBQ0wsQ0FBQzs7QUFuWEwsZ0RBb1hDO0FBbFhpQixvQ0FBaUIsR0FBRyxFQUFFLENBQUE7QUFDdEIsNkJBQVUsR0FBRyxLQUFNLENBQUE7QUFDbkIsaUNBQWMsR0FBRyxZQUFlLENBQUE7QUFDaEMsMkNBQXdCLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTG9uZyA9IHJlcXVpcmUoXCJsb25nXCIpXHJcblxyXG5pbXBvcnQgeyBSb290IGFzIFByb3RvUm9vdCB9IGZyb20gXCJwcm90b2J1ZmpzXCJcclxuY29uc3QgcHJvdG9Sb290ID0gUHJvdG9Sb290LmZyb21KU09OKHJlcXVpcmUoXCIuLi8uLi8uLi8uLi93aXRuZXQvd2l0bmV0LnByb3RvLmpzb25cIikpXHJcblxyXG5pbXBvcnQgeyBmcm9tSGV4U3RyaW5nLCB0b0hleFN0cmluZyB9IGZyb20gXCIuLi8uLi8uLi9iaW4vaGVscGVyc1wiXHJcblxyXG5pbXBvcnQgeyBSYWRvblJlcXVlc3QsIFJhZG9uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vcmFkb25cIlxyXG5pbXBvcnQgeyBIYXNoLCBIZXhTdHJpbmcsIElKc29uUnBjUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIlxyXG5cclxuaW1wb3J0IHsgSUxlZGdlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCJcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcgfSBmcm9tIFwiLi4vcGF5bG9hZHNcIlxyXG5pbXBvcnQgeyBDb2lucywgUHVibGljS2V5SGFzaCwgVHJhbnNhY3Rpb25QYXJhbXMsIFRyYW5zYWN0aW9uUHJpb3JpdHkgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBCaWdNYXRoLCBzaGEyNTYgfSBmcm9tIFwiLi4vdXRpbHNcIlxyXG5cclxuZXhwb3J0IHR5cGUgRGF0YVJlcXVlc3RUZW1wbGF0ZUFyZ3MgPSBhbnkgfCBzdHJpbmcgfCBzdHJpbmdbXSB8IHN0cmluZ1tdW11cclxuICAgIFxyXG5leHBvcnQgdHlwZSBEYXRhUmVxdWVzdFBhcmFtcyA9IFRyYW5zYWN0aW9uUGFyYW1zICYge1xyXG4gICAgYXJncz86IERhdGFSZXF1ZXN0VGVtcGxhdGVBcmdzLFxyXG4gICAgbWF4UmVzdWx0U2l6ZT86IG51bWJlcixcclxuICAgIHdpdG5lc3Nlcz86IG51bWJlcixcclxufVxyXG5cclxudHlwZSBEYXRhUmVxdWVzdE91dHB1dFNMQSA9IHtcclxuICAgIGNvbGxhdGVyYWw6IG51bWJlcixcclxuICAgIGNvbW1pdEFuZFJldmVhbEZlZTogbnVtYmVyLFxyXG4gICAgbWluQ29uc2Vuc3VzUGVyY2VudGFnZTogbnVtYmVyLFxyXG4gICAgd2l0bmVzc2VzOiBudW1iZXIsXHJcbiAgICB3aXRuZXNzUmV3YXJkPzogbnVtYmVyLFxyXG59XHJcblxyXG5jb25zdCBEUl9DT01NSVRfVFhfV0VJR0hUID0gNDAwXHJcbmNvbnN0IERSX1JFVkVBTF9UWF9XRUlHSFQgPSAyMDBcclxuY29uc3QgRFJfVEFMTFlfVFhfV0VJR0hUID0gMTAwXHJcblxyXG5jb25zdCBEUl9UWF9XRUlHSFRfQUxQSEEgPSAxXHJcbmNvbnN0IERSX1RYX1dFSUdIVF9CRVRBID0gMVxyXG5cclxuY29uc3QgVFhfV0VJR0hUX0lOUFVUX1NJWkUgPSAxMzNcclxuY29uc3QgVFhfV0VJR0hUX09VVFBVVF9TSVpFID0gMzZcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhUmVxdWVzdFBheWxvYWQgZXh0ZW5kcyBUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZzxEYXRhUmVxdWVzdFBhcmFtcz4ge1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9XSVRORVNTRVMgPSAxMlxyXG4gICAgcHVibGljIHN0YXRpYyBNQVhfV0VJR0hUID0gODBfMDAwXHJcbiAgICBwdWJsaWMgc3RhdGljIE1JTl9DT0xMQVRFUkFMID0gMjBfMDAwXzAwMF8wMDBuXHJcbiAgICBwdWJsaWMgc3RhdGljIE1JTl9DT05TRU5TVVNfUEVSQ0VOVEFHRSA9IDUxO1xyXG5cclxuICAgIHByb3RlY3RlZCBfcmVxdWVzdD86IFJhZG9uUmVxdWVzdCBcclxuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZT86IFJhZG9uVGVtcGxhdGVcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcmFkb246IFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUsIGluaXRpYWxUYXJnZXQ/OiBEYXRhUmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgIHN1cGVyKHByb3RvVHlwZU5hbWUsIGluaXRpYWxUYXJnZXQpXHJcbiAgICAgICAgaWYgKHJhZG9uIGluc3RhbmNlb2YgUmFkb25SZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSByYWRvblxyXG4gICAgICAgIH0gZWxzZSBpZiAocmFkb24gaW5zdGFuY2VvZiBSYWRvblRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSByYWRvblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYERhdGFSZXF1ZXN0UGF5bG9hZDogdW5zdXBwb3J0ZWQgUmFkb24gYXNzZXQgdHlwZTogJHsocmFkb24gYXMgYW55KT8uY29uc3RydWN0b3IubmFtZX1gKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRyb0hhc2goKTogSGFzaCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5fdG9Eck91dHB1dFByb3RvYnVmKClcclxuICAgICAgICBpZiAob2JqKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IERhdGFSZXF1ZXN0T3V0cHV0ID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUoXCJEYXRhUmVxdWVzdE91dHB1dFwiKVxyXG4gICAgICAgICAgICBjb25zdCBlcnIgPSBEYXRhUmVxdWVzdE91dHB1dC52ZXJpZnkob2JqKVxyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLm9iaiA9PlwiLCBKU09OLnN0cmluZ2lmeShvYmopKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IERhdGFSZXF1ZXN0T3V0cHV0LmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLm1lc3NhZ2UgPT5cIiwgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBieXRlY29kZSA9IERhdGFSZXF1ZXN0T3V0cHV0LmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJcXG5kcm9IYXNoLmJ5dGVjb2RlID0+XCIsIGJ5dGVjb2RlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHNoYTI1NihieXRlY29kZSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZHJvU0xBKCk6IERhdGFSZXF1ZXN0T3V0cHV0U0xBIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0ICYmIHRoaXMuX2ZlZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgbWluQ29uc2Vuc3VzUGVyY2VudGFnZSA9IERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09OU0VOU1VTX1BFUkNFTlRBR0VcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gKFxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyh0aGlzLl90YXJnZXQud2l0bmVzc2VzKS5sZW5ndGggXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90YXJnZXQud2l0bmVzc2VzIHx8IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgY29tbWl0QW5kUmV2ZWFsRmVlID0gdGhpcy5fZmVlczJVbml0YXJ5Q29tbWl0UmV2ZWFsUmV3YXJkKHRoaXMuX2ZlZXMsIHdpdG5lc3NlcylcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc1Jld2FyZCA9IHRoaXMuX2ZlZXMyVW5pdGFyeVJld2FyZCh0aGlzLl9mZWVzLCB3aXRuZXNzZXMpIFxyXG4gICAgICAgICAgICBjb25zdCBjb2xsYXRlcmFsID0gd2l0bmVzc1Jld2FyZCAqIEJpZ0ludCh3aXRuZXNzZXMpXHJcbiAgICAgICAgICAgIGlmIChjb2xsYXRlcmFsID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIFxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0b28gbXVjaCB3aXRuZXNzIGNvbGxhdGVyYWw6ICR7Y29sbGF0ZXJhbC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdpdG5lc3NSZXdhcmQgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUilcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdG9vIG11Y2ggd2l0bmVzcyByZXdhcmQ6ICR7d2l0bmVzc1Jld2FyZC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbW1pdEFuZFJldmVhbEZlZSA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0b28gbXVjaCBjb21taXQvcmV2ZWFsIGZlZTogJHtjb21taXRBbmRSZXZlYWxGZWUudG9TdHJpbmcoKX0gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY29sbGF0ZXJhbDogTnVtYmVyKGNvbGxhdGVyYWwpLFxyXG4gICAgICAgICAgICAgICAgY29tbWl0QW5kUmV2ZWFsRmVlOiBOdW1iZXIoY29tbWl0QW5kUmV2ZWFsRmVlKSxcclxuICAgICAgICAgICAgICAgIG1pbkNvbnNlbnN1c1BlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzZXMsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzUmV3YXJkOiBOdW1iZXIod2l0bmVzc1Jld2FyZCksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGhhc2goKTogSGFzaCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgX2J5dGVjb2RlID0gdGhpcy5ieXRlY29kZVxyXG4gICAgICAgIGlmIChfYnl0ZWNvZGUgJiYgdGhpcy5kcm9IYXNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYoQnVmZmVyLmNvbmNhdChbXHJcbiAgICAgICAgICAgICAgICBmcm9tSGV4U3RyaW5nKHRoaXMuZHJvSGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaGEyNTYoX2J5dGVjb2RlKSxcclxuICAgICAgICAgICAgXSkpKSBhcyBIYXNoXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1heFdlaWdodCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBEYXRhUmVxdWVzdFBheWxvYWQuTUFYX1dFSUdIVFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcGFyYW1ldGVyaXplZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLnRlbXBsYXRlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwcmVwYXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLmNvdmVyZWRcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX2lucHV0cy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3JlcXVlc3RcclxuICAgICAgICAgICAgICAgICYmICEhdGhpcy5fdGFyZ2V0XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmFkQXJncygpOiBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGUgPyB0aGlzLl90YXJnZXQ/LmFyZ3MgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHJhZEhhc2goKTogSGV4U3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0Py5yYWRIYXNoXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCByZXF1ZXN0KCk6IFJhZG9uUmVxdWVzdCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IENvaW5zIHtcclxuICAgICAgICBpZiAodGhpcy5fdGFyZ2V0ICYmIHRoaXMuX2ZlZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3ModGhpcy5fZmVlczJWYWx1ZSh0aGlzLl9mZWVzLCB0aGlzLl90YXJnZXQud2l0bmVzc2VzIHx8IDApKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBDb2lucy56ZXJvKClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB3ZWlnaHQoKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodGhpcy5fcmVxdWVzdCAmJiB0aGlzLl90YXJnZXQpIHtcclxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzc2VzID0gdHlwZW9mIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnID8gT2JqZWN0LmtleXModGhpcy5fdGFyZ2V0LndpdG5lc3NlcykubGVuZ3RoIDogdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyB8fCAwXHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBEUl9UWF9XRUlHSFRfQUxQSEEgKiAodGhpcy5fcmVxdWVzdC53ZWlnaHQoKSArIDggKyAyICsgOCArIDQgKyA4KSxcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuX2lucHV0cy5sZW5ndGggKiBUWF9XRUlHSFRfSU5QVVRfU0laRSBcclxuICAgICAgICAgICAgICAgICAgICArIHRoaXMuX291dHB1dHMubGVuZ3RoICogVFhfV0VJR0hUX09VVFBVVF9TSVpFIFxyXG4gICAgICAgICAgICAgICAgICAgICsgd2l0bmVzc2VzICogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJfQ09NTUlUX1RYX1dFSUdIVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgRFJfUkVWRUFMX1RYX1dFSUdIVCAqIERSX1RYX1dFSUdIVF9CRVRBICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFRYX1dFSUdIVF9PVVRQVVRfU0laRSAvLyBUT0RPIFYyLjE6IHR5cGVvZiB0aGlzLl90YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0JyA/IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA6IDBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKyBNYXRoLm1heChEUl9UQUxMWV9UWF9XRUlHSFQsIHRoaXMuX3RhcmdldD8ubWF4UmVzdWx0U2l6ZSB8fCAwKSAqIERSX1RYX1dFSUdIVF9CRVRBXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIsIHJlbG9hZD86IGJvb2xlYW4pOiBQcm9taXNlPGJpZ2ludD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogbm8gaW4tZmxpZ2h0IHBhcmFtcy5gKVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuX3RhcmdldCBhcyBhbnkpPy5mZWVzIGluc3RhbmNlb2YgQ29pbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmVlcyA9ICh0aGlzLl90YXJnZXQgYXMgYW55KS5mZWVzLnBlZHJvcztcclxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNvbnN1bWVVdHhvcyhsZWRnZXIsIHJlbG9hZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jb3ZlcmVkKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0LndpdG5lc3Nlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgICAgIERhdGFSZXF1ZXN0UGF5bG9hZC5ERUZBVUxUX1dJVE5FU1NFUywgXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbGVkZ2VyLnByb3ZpZGVyLndpdG5lc3NlcygpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA8IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBjYW5ub3QgZXN0aW1hdGUgd2l0bmVzc2VzOiBuZXR3b3JrIG5vdCByZWFkeSBmb3Igd2l0bmVzc2luZy5gKSAgICBcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLndlaWdodCA+IERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUICogMC44KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGEgPSB0aGlzLndlaWdodCAtIERhdGFSZXF1ZXN0UGF5bG9hZC5NQVhfV0VJR0hUICogMC44XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyAtPSBNYXRoLmNlaWwoZGVsdGEgLyAoRFJfQ09NTUlUX1RYX1dFSUdIVCArIERSX1JFVkVBTF9UWF9XRUlHSFQgKiBUWF9XRUlHSFRfT1VUUFVUX1NJWkUpKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90YXJnZXQud2l0bmVzc2VzIDwgMykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFyZ2V0LndpdG5lc3Nlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogY2Fubm90IGVzdGltYXRlIHdpdG5lc3NlczogcmFkb24gcmVxdWVzdCB0b28gY29tcGxleDogJHt0aGlzLndlaWdodH0gd2VpZ2h0IHVuaXRzYClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgcHJpb3JpdHkgPSAodGhpcy5fdGFyZ2V0IGFzIGFueSk/LmZlZXMgYXMgVHJhbnNhY3Rpb25Qcmlvcml0eSB8fCBUcmFuc2FjdGlvblByaW9yaXR5Lk9wdWxlbnRcclxuICAgICAgICAgICAgbGV0IGVzdGltYXRlZEZlZXMgPSBhd2FpdCB0aGlzLl9lc3RpbWF0ZU5ldHdvcmtGZWVzKGxlZGdlci5wcm92aWRlciwgcHJpb3JpdHkpO1xyXG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fZmVlcyA8IGVzdGltYXRlZEZlZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZlZXMgPSBlc3RpbWF0ZWRGZWVzXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdXRwdXRzID0gW11cclxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICAgICAgICAgIC8vIGNvbnN1bWUgdXR4b3MgYXMgdG8gY292ZXIgZm9yIGVzdGltYXRlZCB2YWx1ZSBhbmQgZXN0aW1hdGVkIGZlZXMgXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2ZlZXMyVmFsdWUodGhpcy5fZmVlcywgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcylcclxuICAgICAgICAgICAgICAgIGNvbnN0IHV0eG9zID0gYXdhaXQgbGVkZ2VyLnNlbGVjdFV0eG9zKHsgXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IENvaW5zLmZyb21QZWRyb3ModmFsdWUgKyB0aGlzLl9mZWVzIC0gdGhpcy5fY292ZXJlZCksIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZCxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3ZlcmVkICs9IHV0eG9zLm1hcCh1dHhvID0+IEJpZ0ludCh1dHhvLnZhbHVlKSkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMG4pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMucHVzaCguLi51dHhvcylcclxuICAgICAgICAgICAgICAgIGxlZGdlci5jb25zdW1lVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2UgPSB0aGlzLl9jb3ZlcmVkIC0gKHZhbHVlICsgdGhpcy5fZmVlcylcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFuZ2UgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZU91dHB1dHMoeyB2YWx1ZTogdGhpcy5fY2hhbmdlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVkRmVlcyA9IGF3YWl0IHRoaXMuX2VzdGltYXRlTmV0d29ya0ZlZXMobGVkZ2VyLnByb3ZpZGVyLCBwcmlvcml0eSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5zdWZmaWNpZW50IGZ1bmRzIC4uLlxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnRvUmVjZWlwdCh0YXJnZXQ6IERhdGFSZXF1ZXN0UGFyYW1zKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkcm9IYXNoOiB0aGlzLmRyb0hhc2gsXHJcbiAgICAgICAgICAgIHJhZEFyZ3M6IHRoaXMucmFkQXJncyxcclxuICAgICAgICAgICAgcmFkSGFzaDogdGhpcy5yYWRIYXNoLFxyXG4gICAgICAgICAgICB3aXRuZXNzZXM6IHRhcmdldC53aXRuZXNzZXMsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwcmVwYXJlT3V0cHV0cyhjaGFuZ2U/OiB7IHZhbHVlOiBiaWdpbnQgfSk6IGFueSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZT8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBraDogdGhpcy5faW5wdXRzWzBdLnNpZ25lcixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXHJcbiAgICAgICAgICAgICAgICB0aW1lX2xvY2s6IDAsXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXNldFRhcmdldCh0YXJnZXQ6IERhdGFSZXF1ZXN0UGFyYW1zKTogYW55IHtcclxuICAgICAgICB0aGlzLl9jaGFuZ2UgPSAwblxyXG4gICAgICAgIHRoaXMuX2NvdmVyZWQgPSAwblxyXG4gICAgICAgIHRoaXMuX2ZlZXMgPSAwblxyXG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXHJcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0XHJcbiAgICAgICAgaWYgKHRoaXMuZHJvU0xBPy5jb2xsYXRlcmFsICYmIHRoaXMuZHJvU0xBLmNvbGxhdGVyYWwgPCBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdpdG5lc3NpbmcgY29sbGF0ZXJhbCBiZWxvdyBtaW5pbXVtOiAke1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvU0xBLmNvbGxhdGVyYWxcclxuICAgICAgICAgICAgICAgIH0gPCAke1xyXG4gICAgICAgICAgICAgICAgICAgIERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09MTEFURVJBTFxyXG4gICAgICAgICAgICAgICAgfWBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJncyA9IHRhcmdldD8uYXJnc1xyXG4gICAgICAgICAgICBpZiAoYXJncyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IG5vIHRlbXBsYXRlIGFyZ3Mgd2VyZSBwYXNzZWQuYClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJncyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KFthcmdzXSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0aGlzLnRlbXBsYXRlLmJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3MpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuX3ByaW9yaXRpZXNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9KU09OKGh1bWFuaXplID0gZmFsc2UpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGRyb1NMQSA9IHRoaXMuZHJvU0xBICAgICAgICBcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpbnB1dHM6IHRoaXMuaW5wdXRzXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgb3V0cHV0X3BvaW50ZXI6IHV0eG8ub3V0cHV0X3BvaW50ZXIgfSkpLFxyXG4gICAgICAgICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMubWFwKHZ0byA9PiAoeyBcclxuICAgICAgICAgICAgICAgIHBraDogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgIHRpbWVfbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICBkcl9vdXRwdXQ6IHtcclxuICAgICAgICAgICAgICAgIC4uLih0aGlzLl9yZXF1ZXN0ID8geyBkYXRhX3JlcXVlc3Q6IHRoaXMuX3JlcXVlc3QudG9KU09OKGh1bWFuaXplKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgY29tbWl0X2FuZF9yZXZlYWxfZmVlOiBkcm9TTEE/LmNvbW1pdEFuZFJldmVhbEZlZSxcclxuICAgICAgICAgICAgICAgIG1pbl9jb25zZW5zdXNfcGVyY2VudGFnZTogZHJvU0xBPy5taW5Db25zZW5zdXNQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICAgICAgd2l0bmVzc2VzOiBkcm9TTEE/LndpdG5lc3NlcyxcclxuICAgICAgICAgICAgICAgIHdpdG5lc3NfcmV3YXJkOiBkcm9TTEE/LndpdG5lc3NSZXdhcmQsXHJcbiAgICAgICAgICAgICAgICBjb2xsYXRlcmFsOiBkcm9TTEE/LmNvbGxhdGVyYWxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0gICBcclxuXHJcbiAgICBwdWJsaWMgdG9Qcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkICYmIHRoaXMuX3RhcmdldCAmJiB0aGlzLl9yZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7ICAgIFxyXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB0aGlzLmlucHV0c1xyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAodXR4byA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbklkID0gdXR4by5vdXRwdXRfcG9pbnRlci5zcGxpdCgnOicpWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dEluZGV4ID0gcGFyc2VJbnQodXR4by5vdXRwdXRfcG9pbnRlci5zcGxpdCgnOicpWzFdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0UG9pbnRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSWQ6IHsgU0hBMjU2OiBBcnJheS5mcm9tKGZyb21IZXhTdHJpbmcodHJhbnNhY3Rpb25JZCkpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKG91dHB1dEluZGV4ID4gMCA/IHsgb3V0cHV0SW5kZXggfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIG91dHB1dHM6IHRoaXMub3V0cHV0cy5tYXAodnRvID0+ICh7IFxyXG4gICAgICAgICAgICAgICAgICAgIHBraDogeyBoYXNoOiBBcnJheS5mcm9tKFB1YmxpY0tleUhhc2guZnJvbUJlY2gzMih2dG8ucGtoKS50b0J5dGVzMjAoKSksIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IExvbmcuZnJvbVZhbHVlKHZ0by52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKHZ0by50aW1lX2xvY2sgPiAwID8geyB0aW1lTG9jazogdnRvLnRpbWVfbG9jayB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgZHJPdXRwdXQ6IHRoaXMuX3RvRHJPdXRwdXRQcm90b2J1ZigpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBhbnkpOiBEYXRhUmVxdWVzdFBhcmFtcyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgdGFyZ2V0ID0gdGhpcy5fY2xlYW5UYXJnZXRFeHRyYXModGFyZ2V0KVxyXG4gICAgICAgIGlmICh0YXJnZXQgJiYgT2JqZWN0LmtleXModGFyZ2V0KS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmICghKFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0XHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGFyZ2V0Py5mZWVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZmVlcyBpbnN0YW5jZW9mIENvaW5zICYmICh0YXJnZXQuZmVlcyBhcyBDb2lucykucGVkcm9zID4gMCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IE9iamVjdC52YWx1ZXMoVHJhbnNhY3Rpb25Qcmlvcml0eSkuaW5jbHVkZXModGFyZ2V0LmZlZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKHRhcmdldD8ud2l0bmVzc2VzIHx8IHRhcmdldD8ud2l0bmVzc2VzID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKCF0aGlzLnRlbXBsYXRlIHx8IHRhcmdldD8uYXJncylcclxuICAgICAgICAgICAgKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnZhbGlkIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX1gKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldD8ud2l0bmVzc2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRhcmdldC53aXRuZXNzZXMgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBleHBsaWNpdCB3aXRuZXNzaW5nIGNvbW1pdHRlZXMgbm90IHlldCBzdXBwb3J0ZWQ6ICR7dGFyZ2V0LndpdG5lc3Nlc31gKVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIHRhcmdldC53aXRuZXNzZXMgPSBwYXJzZUludCh0YXJnZXQud2l0bmVzc2VzIGFzIHN0cmluZylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0IGFzIERhdGFSZXF1ZXN0UGFyYW1zXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2NsZWFuVGFyZ2V0RXh0cmFzKHRhcmdldD86IGFueSk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGFyZ2V0KS5maWx0ZXIoKFtrZXksXSkgPT4gW1xyXG4gICAgICAgICAgICAgICAgICAgICdhcmdzJyxcclxuICAgICAgICAgICAgICAgICAgICAnZmVlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ21heFJlc3VsdFNpemUnLFxyXG4gICAgICAgICAgICAgICAgICAgICd3aXRuZXNzZXMnLFxyXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBfZXN0aW1hdGVOZXR3b3JrRmVlcyhwcm92aWRlcjogSUpzb25ScGNQcm92aWRlciwgcHJpb3JpdHkgPSBUcmFuc2FjdGlvblByaW9yaXR5Lk1lZGl1bSk6IFByb21pc2U8YmlnaW50PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9wcmlvcml0aWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByaW9yaXRpZXMgPSBhd2FpdCBwcm92aWRlci5wcmlvcml0aWVzKClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEJpZ0ludChNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICB0aGlzLl9wcmlvcml0aWVzW2BkcnRfJHtwcmlvcml0eX1gXS5wcmlvcml0eSAqIChcclxuICAgICAgICAgICAgICAgIHRoaXMuY292ZXJlZCA/IHRoaXMud2VpZ2h0IDogKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2VpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXN0aW1hdGUgd2VpZ2h0IG9mIG9uZSBzaW5nbGUgb3V0cHV0IGluIGNhc2UgdGhlcmUgd2FzIGNoYW5nZSB0byBwYXkgYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICsgVFhfV0VJR0hUX09VVFBVVF9TSVpFIFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9mZWVzMlVuaXRhcnlDb21taXRSZXZlYWxSZXdhcmQoZmVlczogYmlnaW50LCB3aXRuZXNzZXM6IG51bWJlcik6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIGZlZXMgLyBCaWdJbnQod2l0bmVzc2VzKSB8fCAxblxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZmVlczJVbml0YXJ5UmV3YXJkKGZlZXM6IGJpZ2ludCwgd2l0bmVzc2VzOiBudW1iZXIpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiBCaWdNYXRoLm1heChcclxuICAgICAgICAgICAgZmVlcyxcclxuICAgICAgICAgICAgMW4gKyBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUwgLyBCaWdJbnQod2l0bmVzc2VzKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXMyVmFsdWUoZmVlczogYmlnaW50LCB3aXRuZXNzZXM6IG51bWJlcik6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgQmlnSW50KHdpdG5lc3NlcykgKiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9mZWVzMlVuaXRhcnlSZXdhcmQoZmVlcywgd2l0bmVzc2VzKVxyXG4gICAgICAgICAgICAgICAgKyAybiAqIHRoaXMuX2ZlZXMyVW5pdGFyeUNvbW1pdFJldmVhbFJld2FyZChmZWVzLCB3aXRuZXNzZXMpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9Eck91dHB1dFByb3RvYnVmKCk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZHJvU0xBLFxyXG4gICAgICAgICAgICAgICAgZGF0YVJlcXVlc3Q6IHRoaXMuX3JlcXVlc3QudG9Qcm90b2J1ZigpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RQYXlsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vcGF5bG9hZHMvRGF0YVJlcXVlc3RQYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUU1QiwyQ0FBOEM7QUFDOUMsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQTtBQUVyRixrREFBaUU7QUFFakUsdUNBQXlEO0FBSXpELDBDQUF3RDtBQUN4RCxvQ0FBdUY7QUFDdkYsb0NBQTBDO0FBa0IxQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUU5QixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUMvQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQUU5QixNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQTtBQUM1QixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQTtBQUUzQixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTtBQUNoQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtBQUVoQyxNQUFhLGtCQUFtQixTQUFRLHFDQUE2QztJQVVqRixZQUFhLGFBQXFCLEVBQUUsS0FBbUMsRUFBRSxhQUFpQztRQUN0RyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ25DLElBQUksS0FBSyxZQUFZLG9CQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtRQUN6QixDQUFDO2FBQU0sSUFBSSxLQUFLLFlBQVkscUJBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLENBQUM7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YUFDMUMsQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDOztBQW5YTCxnREFvWEM7QUFsWGlCLG9DQUFpQixHQUFHLEVBQUUsQ0FBQTtBQUN0Qiw2QkFBVSxHQUFHLEtBQU0sQ0FBQTtBQUNuQixpQ0FBYyxHQUFHLFlBQWUsQ0FBQTtBQUNoQywyQ0FBd0IsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBMb25nID0gcmVxdWlyZShcImxvbmdcIilcclxuXHJcbmltcG9ydCB7IFJvb3QgYXMgUHJvdG9Sb290IH0gZnJvbSBcInByb3RvYnVmanNcIlxyXG5jb25zdCBwcm90b1Jvb3QgPSBQcm90b1Jvb3QuZnJvbUpTT04ocmVxdWlyZShcIi4uLy4uLy4uLy4uL3dpdG5ldC93aXRuZXQucHJvdG8uanNvblwiKSlcclxuXHJcbmltcG9ydCB7IGZyb21IZXhTdHJpbmcsIHRvSGV4U3RyaW5nIH0gZnJvbSBcIi4uLy4uLy4uL2Jpbi9oZWxwZXJzXCJcclxuXHJcbmltcG9ydCB7IFJhZG9uUmVxdWVzdCwgUmFkb25UZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9yYWRvblwiXHJcbmltcG9ydCB7IEhhc2gsIEhleFN0cmluZywgSUpzb25ScGNQcm92aWRlciB9IGZyb20gXCIuLi8uLi90eXBlc1wiXHJcblxyXG5pbXBvcnQgeyBJTGVkZ2VyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZyB9IGZyb20gXCIuLi9wYXlsb2Fkc1wiXHJcbmltcG9ydCB7IENvaW5zLCBQdWJsaWNLZXlIYXNoLCBUcmFuc2FjdGlvblBhcmFtcywgVHJhbnNhY3Rpb25Qcmlvcml0eSB9IGZyb20gXCIuLi90eXBlc1wiXHJcbmltcG9ydCB7IEJpZ01hdGgsIHNoYTI1NiB9IGZyb20gXCIuLi91dGlsc1wiXHJcblxyXG5leHBvcnQgdHlwZSBEYXRhUmVxdWVzdFRlbXBsYXRlQXJncyA9IGFueSB8IHN0cmluZyB8IHN0cmluZ1tdIHwgc3RyaW5nW11bXVxyXG4gICAgXHJcbmV4cG9ydCB0eXBlIERhdGFSZXF1ZXN0UGFyYW1zID0gVHJhbnNhY3Rpb25QYXJhbXMgJiB7XHJcbiAgICBhcmdzPzogRGF0YVJlcXVlc3RUZW1wbGF0ZUFyZ3MsXHJcbiAgICBtYXhSZXN1bHRTaXplPzogbnVtYmVyLFxyXG4gICAgd2l0bmVzc2VzPzogbnVtYmVyLFxyXG59XHJcblxyXG50eXBlIERhdGFSZXF1ZXN0T3V0cHV0U0xBID0ge1xyXG4gICAgY29sbGF0ZXJhbDogbnVtYmVyLFxyXG4gICAgY29tbWl0QW5kUmV2ZWFsRmVlOiBudW1iZXIsXHJcbiAgICBtaW5Db25zZW5zdXNQZXJjZW50YWdlOiBudW1iZXIsXHJcbiAgICB3aXRuZXNzZXM6IG51bWJlcixcclxuICAgIHdpdG5lc3NSZXdhcmQ/OiBudW1iZXIsXHJcbn1cclxuXHJcbmNvbnN0IENPTExBVEVSQUxfUkFUSU8gPSAxMDBuO1xyXG5cclxuY29uc3QgRFJfQ09NTUlUX1RYX1dFSUdIVCA9IDQwMFxyXG5jb25zdCBEUl9SRVZFQUxfVFhfV0VJR0hUID0gMjAwXHJcbmNvbnN0IERSX1RBTExZX1RYX1dFSUdIVCA9IDEwMFxyXG5cclxuY29uc3QgRFJfVFhfV0VJR0hUX0FMUEhBID0gMVxyXG5jb25zdCBEUl9UWF9XRUlHSFRfQkVUQSA9IDFcclxuXHJcbmNvbnN0IFRYX1dFSUdIVF9JTlBVVF9TSVpFID0gMTMzXHJcbmNvbnN0IFRYX1dFSUdIVF9PVVRQVVRfU0laRSA9IDM2XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVJlcXVlc3RQYXlsb2FkIGV4dGVuZHMgVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8RGF0YVJlcXVlc3RQYXJhbXM+IHtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIERFRkFVTFRfV0lUTkVTU0VTID0gMTJcclxuICAgIHB1YmxpYyBzdGF0aWMgTUFYX1dFSUdIVCA9IDgwXzAwMFxyXG4gICAgcHVibGljIHN0YXRpYyBNSU5fQ09MTEFURVJBTCA9IDIwXzAwMF8wMDBfMDAwblxyXG4gICAgcHVibGljIHN0YXRpYyBNSU5fQ09OU0VOU1VTX1BFUkNFTlRBR0UgPSA1MTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JlcXVlc3Q/OiBSYWRvblJlcXVlc3QgXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGU/OiBSYWRvblRlbXBsYXRlXHJcbiAgICBcclxuICAgIGNvbnN0cnVjdG9yIChwcm90b1R5cGVOYW1lOiBzdHJpbmcsIHJhZG9uOiBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlLCBpbml0aWFsVGFyZ2V0PzogRGF0YVJlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICBzdXBlcihwcm90b1R5cGVOYW1lLCBpbml0aWFsVGFyZ2V0KVxyXG4gICAgICAgIGlmIChyYWRvbiBpbnN0YW5jZW9mIFJhZG9uUmVxdWVzdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gcmFkb25cclxuICAgICAgICB9IGVsc2UgaWYgKHJhZG9uIGluc3RhbmNlb2YgUmFkb25UZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gcmFkb25cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBEYXRhUmVxdWVzdFBheWxvYWQ6IHVuc3VwcG9ydGVkIFJhZG9uIGFzc2V0IHR5cGU6ICR7KHJhZG9uIGFzIGFueSk/LmNvbnN0cnVjdG9yLm5hbWV9YClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBkcm9IYXNoKCk6IEhhc2ggfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvRHJPdXRwdXRQcm90b2J1ZigpXHJcbiAgICAgICAgaWYgKG9iaikge1xyXG4gICAgICAgICAgICBjb25zdCBEYXRhUmVxdWVzdE91dHB1dCA9IHByb3RvUm9vdC5sb29rdXBUeXBlKFwiRGF0YVJlcXVlc3RPdXRwdXRcIilcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gRGF0YVJlcXVlc3RPdXRwdXQudmVyaWZ5KG9iailcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGVycilcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiXFxuZHJvSGFzaC5vYmogPT5cIiwgSlNPTi5zdHJpbmdpZnkob2JqKSlcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBEYXRhUmVxdWVzdE91dHB1dC5mcm9tT2JqZWN0KG9iailcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiXFxuZHJvSGFzaC5tZXNzYWdlID0+XCIsIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZWNvZGUgPSBEYXRhUmVxdWVzdE91dHB1dC5lbmNvZGUobWVzc2FnZSkuZmluaXNoKClcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiXFxuZHJvSGFzaC5ieXRlY29kZSA9PlwiLCBieXRlY29kZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYoYnl0ZWNvZGUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRyb1NMQSgpOiBEYXRhUmVxdWVzdE91dHB1dFNMQSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldCAmJiB0aGlzLl9mZWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1pbkNvbnNlbnN1c1BlcmNlbnRhZ2UgPSBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTlNFTlNVU19QRVJDRU5UQUdFXHJcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3NlcyA9IChcclxuICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLl90YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0J1xyXG4gICAgICAgICAgICAgICAgICAgID8gT2JqZWN0LmtleXModGhpcy5fdGFyZ2V0LndpdG5lc3NlcykubGVuZ3RoIFxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyB8fCAwXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbW1pdEFuZFJldmVhbEZlZSA9IHRoaXMuX2ZlZXMyVW5pdGFyeUNvbW1pdFJldmVhbFJld2FyZCh0aGlzLl9mZWVzLCB3aXRuZXNzZXMpXHJcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3NSZXdhcmQgPSB0aGlzLl9mZWVzMlVuaXRhcnlSZXdhcmQodGhpcy5fZmVlcywgd2l0bmVzc2VzKSBcclxuICAgICAgICAgICAgY29uc3QgY29sbGF0ZXJhbCA9IHdpdG5lc3NSZXdhcmQgKiBCaWdJbnQod2l0bmVzc2VzKVxyXG4gICAgICAgICAgICBpZiAoY29sbGF0ZXJhbCA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSBcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdG9vIG11Y2ggd2l0bmVzcyBjb2xsYXRlcmFsOiAke2NvbGxhdGVyYWwudG9TdHJpbmcoKX0gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh3aXRuZXNzUmV3YXJkID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRvbyBtdWNoIHdpdG5lc3MgcmV3YXJkOiAke3dpdG5lc3NSZXdhcmQudG9TdHJpbmcoKX0gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWApO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjb21taXRBbmRSZXZlYWxGZWUgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUilcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdG9vIG11Y2ggY29tbWl0L3JldmVhbCBmZWU6ICR7Y29tbWl0QW5kUmV2ZWFsRmVlLnRvU3RyaW5nKCl9ID4gJHtOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn1gKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGNvbGxhdGVyYWw6IE51bWJlcihjb2xsYXRlcmFsKSxcclxuICAgICAgICAgICAgICAgIGNvbW1pdEFuZFJldmVhbEZlZTogTnVtYmVyKGNvbW1pdEFuZFJldmVhbEZlZSksXHJcbiAgICAgICAgICAgICAgICBtaW5Db25zZW5zdXNQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICAgICAgd2l0bmVzc2VzLFxyXG4gICAgICAgICAgICAgICAgd2l0bmVzc1Jld2FyZDogTnVtYmVyKHdpdG5lc3NSZXdhcmQpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBoYXNoKCk6IEhhc2ggfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IF9ieXRlY29kZSA9IHRoaXMuYnl0ZWNvZGVcclxuICAgICAgICBpZiAoX2J5dGVjb2RlICYmIHRoaXMuZHJvSGFzaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoc2hhMjU2KEJ1ZmZlci5jb25jYXQoW1xyXG4gICAgICAgICAgICAgICAgZnJvbUhleFN0cmluZyh0aGlzLmRyb0hhc2gpLFxyXG4gICAgICAgICAgICAgICAgc2hhMjU2KF9ieXRlY29kZSksXHJcbiAgICAgICAgICAgIF0pKSkgYXMgSGFzaFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBtYXhXZWlnaHQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gRGF0YVJlcXVlc3RQYXlsb2FkLk1BWF9XRUlHSFRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHBhcmFtZXRlcml6ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy50ZW1wbGF0ZVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcHJlcGFyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5jb3ZlcmVkXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLl9pbnB1dHMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgJiYgISF0aGlzLl9yZXF1ZXN0XHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3RhcmdldFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHJhZEFyZ3MoKTogRGF0YVJlcXVlc3RUZW1wbGF0ZUFyZ3MgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlID8gdGhpcy5fdGFyZ2V0Py5hcmdzIDogdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCByYWRIYXNoKCk6IEhleFN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdD8ucmFkSGFzaFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmVxdWVzdCgpOiBSYWRvblJlcXVlc3QgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBDb2lucyB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3RhcmdldCAmJiB0aGlzLl9mZWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBDb2lucy5mcm9tUGVkcm9zKHRoaXMuX2ZlZXMyVmFsdWUodGhpcy5fZmVlcywgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyB8fCAwKSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gQ29pbnMuemVybygpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgd2VpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QgJiYgdGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3NlcyA9IHR5cGVvZiB0aGlzLl90YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0JyA/IE9iamVjdC5rZXlzKHRoaXMuX3RhcmdldC53aXRuZXNzZXMpLmxlbmd0aCA6IHRoaXMuX3RhcmdldC53aXRuZXNzZXMgfHwgMFxyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgRFJfVFhfV0VJR0hUX0FMUEhBICogKHRoaXMuX3JlcXVlc3Qud2VpZ2h0KCkgKyA4ICsgMiArIDggKyA0ICsgOCksXHJcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLl9pbnB1dHMubGVuZ3RoICogVFhfV0VJR0hUX0lOUFVUX1NJWkUgXHJcbiAgICAgICAgICAgICAgICAgICAgKyB0aGlzLl9vdXRwdXRzLmxlbmd0aCAqIFRYX1dFSUdIVF9PVVRQVVRfU0laRSBcclxuICAgICAgICAgICAgICAgICAgICArIHdpdG5lc3NlcyAqIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSX0NPTU1JVF9UWF9XRUlHSFRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIERSX1JFVkVBTF9UWF9XRUlHSFQgKiBEUl9UWF9XRUlHSFRfQkVUQSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBUWF9XRUlHSFRfT1VUUFVUX1NJWkUgLy8gVE9ETyBWMi4xOiB0eXBlb2YgdGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA9PT0gJ29iamVjdCcgPyBUWF9XRUlHSFRfT1VUUFVUX1NJWkUgOiAwXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICsgTWF0aC5tYXgoRFJfVEFMTFlfVFhfV0VJR0hULCB0aGlzLl90YXJnZXQ/Lm1heFJlc3VsdFNpemUgfHwgMCkgKiBEUl9UWF9XRUlHSFRfQkVUQVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBjb25zdW1lVXR4b3MobGVkZ2VyOiBJTGVkZ2VyLCByZWxvYWQ/OiBib29sZWFuKTogUHJvbWlzZTxiaWdpbnQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX3RhcmdldCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IG5vIGluLWZsaWdodCBwYXJhbXMuYClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLl90YXJnZXQgYXMgYW55KT8uZmVlcyBpbnN0YW5jZW9mIENvaW5zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZlZXMgPSAodGhpcy5fdGFyZ2V0IGFzIGFueSkuZmVlcy5wZWRyb3M7XHJcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5jb25zdW1lVXR4b3MobGVkZ2VyLCByZWxvYWQpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY292ZXJlZCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RhcmdldC53aXRuZXNzZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPSBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICBEYXRhUmVxdWVzdFBheWxvYWQuREVGQVVMVF9XSVRORVNTRVMsIFxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGxlZGdlci5wcm92aWRlci53aXRuZXNzZXMoKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RhcmdldC53aXRuZXNzZXMgPCAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RhcmdldC53aXRuZXNzZXNcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogY2Fubm90IGVzdGltYXRlIHdpdG5lc3NlczogbmV0d29yayBub3QgcmVhZHkgZm9yIHdpdG5lc3NpbmcuYCkgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy53ZWlnaHQgPiBEYXRhUmVxdWVzdFBheWxvYWQuTUFYX1dFSUdIVCAqIDAuOCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gdGhpcy53ZWlnaHQgLSBEYXRhUmVxdWVzdFBheWxvYWQuTUFYX1dFSUdIVCAqIDAuOFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhcmdldC53aXRuZXNzZXMgLT0gTWF0aC5jZWlsKGRlbHRhIC8gKERSX0NPTU1JVF9UWF9XRUlHSFQgKyBEUl9SRVZFQUxfVFhfV0VJR0hUICogVFhfV0VJR0hUX09VVFBVVF9TSVpFKSlcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFyZ2V0LndpdG5lc3NlcyA8IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RhcmdldC53aXRuZXNzZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBlc3RpbWF0ZSB3aXRuZXNzZXM6IHJhZG9uIHJlcXVlc3QgdG9vIGNvbXBsZXg6ICR7dGhpcy53ZWlnaHR9IHdlaWdodCB1bml0c2ApXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHByaW9yaXR5ID0gKHRoaXMuX3RhcmdldCBhcyBhbnkpPy5mZWVzIGFzIFRyYW5zYWN0aW9uUHJpb3JpdHkgfHwgVHJhbnNhY3Rpb25Qcmlvcml0eS5PcHVsZW50XHJcbiAgICAgICAgICAgIGxldCBlc3RpbWF0ZWRGZWVzID0gYXdhaXQgdGhpcy5fZXN0aW1hdGVOZXR3b3JrRmVlcyhsZWRnZXIucHJvdmlkZXIsIHByaW9yaXR5KTtcclxuICAgICAgICAgICAgd2hpbGUgKHRoaXMuX2ZlZXMgPCBlc3RpbWF0ZWRGZWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9mZWVzID0gZXN0aW1hdGVkRmVlc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY292ZXJlZCA9IDBuXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zdW1lIHV0eG9zIGFzIHRvIGNvdmVyIGZvciBlc3RpbWF0ZWQgdmFsdWUgYW5kIGVzdGltYXRlZCBmZWVzIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9mZWVzMlZhbHVlKHRoaXMuX2ZlZXMsIHRoaXMuX3RhcmdldC53aXRuZXNzZXMpXHJcbiAgICAgICAgICAgICAgICBjb25zdCB1dHhvcyA9IGF3YWl0IGxlZGdlci5zZWxlY3RVdHhvcyh7IFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBDb2lucy5mcm9tUGVkcm9zKHZhbHVlICsgdGhpcy5fZmVlcyAtIHRoaXMuX2NvdmVyZWQpLCBcclxuICAgICAgICAgICAgICAgICAgICByZWxvYWQsXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY292ZXJlZCArPSB1dHhvcy5tYXAodXR4byA9PiBCaWdJbnQodXR4by52YWx1ZSkpLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsIDBuKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXRzLnB1c2goLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICBsZWRnZXIuY29uc3VtZVV0eG9zKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlID0gdGhpcy5fY292ZXJlZCAtICh2YWx1ZSArIHRoaXMuX2ZlZXMpXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbmdlID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVPdXRwdXRzKHsgdmFsdWU6IHRoaXMuX2NoYW5nZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGVzdGltYXRlZEZlZXMgPSBhd2FpdCB0aGlzLl9lc3RpbWF0ZU5ldHdvcmtGZWVzKGxlZGdlci5wcm92aWRlciwgcHJpb3JpdHkpXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluc3VmZmljaWVudCBmdW5kcyAuLi5cclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9jaGFuZ2VcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW50b1JlY2VpcHQodGFyZ2V0OiBEYXRhUmVxdWVzdFBhcmFtcyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZHJvSGFzaDogdGhpcy5kcm9IYXNoLFxyXG4gICAgICAgICAgICByYWRBcmdzOiB0aGlzLnJhZEFyZ3MsXHJcbiAgICAgICAgICAgIHJhZEhhc2g6IHRoaXMucmFkSGFzaCxcclxuICAgICAgICAgICAgd2l0bmVzc2VzOiB0YXJnZXQud2l0bmVzc2VzLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHJlcGFyZU91dHB1dHMoY2hhbmdlPzogeyB2YWx1ZTogYmlnaW50IH0pOiBhbnkge1xyXG4gICAgICAgIGlmIChjaGFuZ2U/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX291dHB1dHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwa2g6IHRoaXMuX2lucHV0c1swXS5zaWduZXIsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgdGltZV9sb2NrOiAwLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXRUYXJnZXQodGFyZ2V0OiBEYXRhUmVxdWVzdFBhcmFtcyk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlID0gMG5cclxuICAgICAgICB0aGlzLl9jb3ZlcmVkID0gMG5cclxuICAgICAgICB0aGlzLl9mZWVzID0gMG5cclxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBbXVxyXG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldFxyXG4gICAgICAgIGlmICh0aGlzLmRyb1NMQT8uY29sbGF0ZXJhbCAmJiB0aGlzLmRyb1NMQS5jb2xsYXRlcmFsIDwgRGF0YVJlcXVlc3RQYXlsb2FkLk1JTl9DT0xMQVRFUkFMKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB3aXRuZXNzaW5nIGNvbGxhdGVyYWwgYmVsb3cgbWluaW11bTogJHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb1NMQS5jb2xsYXRlcmFsXHJcbiAgICAgICAgICAgICAgICB9IDwgJHtcclxuICAgICAgICAgICAgICAgICAgICBEYXRhUmVxdWVzdFBheWxvYWQuTUlOX0NPTExBVEVSQUxcclxuICAgICAgICAgICAgICAgIH1gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSB0YXJnZXQ/LmFyZ3NcclxuICAgICAgICAgICAgaWYgKGFyZ3MgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBubyB0ZW1wbGF0ZSBhcmdzIHdlcmUgcGFzc2VkLmApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3MgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gdGhpcy50ZW1wbGF0ZS5idWlsZFJhZG9uUmVxdWVzdChbYXJnc10pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gdGhpcy50ZW1wbGF0ZS5idWlsZFJhZG9uUmVxdWVzdChhcmdzKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9wcmlvcml0aWVzXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSlNPTihodW1hbml6ZSA9IGZhbHNlKTogYW55IHtcclxuICAgICAgICBjb25zdCBkcm9TTEEgPSB0aGlzLmRyb1NMQSAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaW5wdXRzOiB0aGlzLmlucHV0c1xyXG4gICAgICAgICAgICAgICAgLm1hcCh1dHhvID0+ICh7IG91dHB1dF9wb2ludGVyOiB1dHhvLm91dHB1dF9wb2ludGVyIH0pKSxcclxuICAgICAgICAgICAgb3V0cHV0czogdGhpcy5vdXRwdXRzLm1hcCh2dG8gPT4gKHsgXHJcbiAgICAgICAgICAgICAgICBwa2g6IHZ0by5wa2gsXHJcbiAgICAgICAgICAgICAgICB0aW1lX2xvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdnRvLnZhbHVlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgZHJfb3V0cHV0OiB7XHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5fcmVxdWVzdCA/IHsgZGF0YV9yZXF1ZXN0OiB0aGlzLl9yZXF1ZXN0LnRvSlNPTihodW1hbml6ZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgIGNvbW1pdF9hbmRfcmV2ZWFsX2ZlZTogZHJvU0xBPy5jb21taXRBbmRSZXZlYWxGZWUsXHJcbiAgICAgICAgICAgICAgICBtaW5fY29uc2Vuc3VzX3BlcmNlbnRhZ2U6IGRyb1NMQT8ubWluQ29uc2Vuc3VzUGVyY2VudGFnZSxcclxuICAgICAgICAgICAgICAgIHdpdG5lc3NlczogZHJvU0xBPy53aXRuZXNzZXMsXHJcbiAgICAgICAgICAgICAgICB3aXRuZXNzX3Jld2FyZDogZHJvU0xBPy53aXRuZXNzUmV3YXJkLFxyXG4gICAgICAgICAgICAgICAgY29sbGF0ZXJhbDogZHJvU0xBPy5jb2xsYXRlcmFsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcblxyXG4gICAgcHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5wcmVwYXJlZCAmJiB0aGlzLl90YXJnZXQgJiYgdGhpcy5fcmVxdWVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4geyAgICBcclxuICAgICAgICAgICAgICAgIGlucHV0czogdGhpcy5pbnB1dHNcclxuICAgICAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4geyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25JZCA9IHV0eG8ub3V0cHV0X3BvaW50ZXIuc3BsaXQoJzonKVswXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRJbmRleCA9IHBhcnNlSW50KHV0eG8ub3V0cHV0X3BvaW50ZXIuc3BsaXQoJzonKVsxXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFBvaW50ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbklkOiB7IFNIQTI1NjogQXJyYXkuZnJvbShmcm9tSGV4U3RyaW5nKHRyYW5zYWN0aW9uSWQpKSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihvdXRwdXRJbmRleCA+IDAgPyB7IG91dHB1dEluZGV4IH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMubWFwKHZ0byA9PiAoeyBcclxuICAgICAgICAgICAgICAgICAgICBwa2g6IHsgaGFzaDogQXJyYXkuZnJvbShQdWJsaWNLZXlIYXNoLmZyb21CZWNoMzIodnRvLnBraCkudG9CeXRlczIwKCkpLCB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBMb25nLmZyb21WYWx1ZSh2dG8udmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLih2dG8udGltZV9sb2NrID4gMCA/IHsgdGltZUxvY2s6IHZ0by50aW1lX2xvY2sgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgIGRyT3V0cHV0OiB0aGlzLl90b0RyT3V0cHV0UHJvdG9idWYoKSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmFsaWRhdGVUYXJnZXQodGFyZ2V0PzogYW55KTogRGF0YVJlcXVlc3RQYXJhbXMgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHRhcmdldCA9IHRoaXMuX2NsZWFuVGFyZ2V0RXh0cmFzKHRhcmdldClcclxuICAgICAgICBpZiAodGFyZ2V0ICYmIE9iamVjdC5rZXlzKHRhcmdldCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoIShcclxuICAgICAgICAgICAgICAgIHRhcmdldFxyXG4gICAgICAgICAgICAgICAgICAgICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXRhcmdldD8uZmVlcyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmZlZXMgaW5zdGFuY2VvZiBDb2lucyAmJiAodGFyZ2V0LmZlZXMgYXMgQ29pbnMpLnBlZHJvcyA+IDAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBPYmplY3QudmFsdWVzKFRyYW5zYWN0aW9uUHJpb3JpdHkpLmluY2x1ZGVzKHRhcmdldC5mZWVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICYmICh0YXJnZXQ/LndpdG5lc3NlcyB8fCB0YXJnZXQ/LndpdG5lc3NlcyA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICYmICghdGhpcy50ZW1wbGF0ZSB8fCB0YXJnZXQ/LmFyZ3MpXHJcbiAgICAgICAgICAgICkpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW52YWxpZCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KHRhcmdldCl9YClcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQ/LndpdG5lc3Nlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQud2l0bmVzc2VzID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogZXhwbGljaXQgd2l0bmVzc2luZyBjb21taXR0ZWVzIG5vdCB5ZXQgc3VwcG9ydGVkOiAke3RhcmdldC53aXRuZXNzZXN9YClcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQud2l0bmVzc2VzID0gcGFyc2VJbnQodGFyZ2V0LndpdG5lc3NlcyBhcyBzdHJpbmcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldCBhcyBEYXRhUmVxdWVzdFBhcmFtc1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9jbGVhblRhcmdldEV4dHJhcyh0YXJnZXQ/OiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcclxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRhcmdldCkuZmlsdGVyKChba2V5LF0pID0+IFtcclxuICAgICAgICAgICAgICAgICAgICAnYXJncycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2ZlZXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICdtYXhSZXN1bHRTaXplJyxcclxuICAgICAgICAgICAgICAgICAgICAnd2l0bmVzc2VzJyxcclxuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoa2V5KSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgX2VzdGltYXRlTmV0d29ya0ZlZXMocHJvdmlkZXI6IElKc29uUnBjUHJvdmlkZXIsIHByaW9yaXR5ID0gVHJhbnNhY3Rpb25Qcmlvcml0eS5NZWRpdW0pOiBQcm9taXNlPGJpZ2ludD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5fcHJpb3JpdGllcykge1xyXG4gICAgICAgICAgICB0aGlzLl9wcmlvcml0aWVzID0gYXdhaXQgcHJvdmlkZXIucHJpb3JpdGllcygpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBCaWdJbnQoTWF0aC5mbG9vcihcclxuICAgICAgICAgICAgdGhpcy5fcHJpb3JpdGllc1tgZHJ0XyR7cHJpb3JpdHl9YF0ucHJpb3JpdHkgKiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdmVyZWQgPyB0aGlzLndlaWdodCA6IChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndlaWdodFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzdGltYXRlIHdlaWdodCBvZiBvbmUgc2luZ2xlIG91dHB1dCBpbiBjYXNlIHRoZXJlIHdhcyBjaGFuZ2UgdG8gcGF5IGJhY2tcclxuICAgICAgICAgICAgICAgICAgICArIFRYX1dFSUdIVF9PVVRQVVRfU0laRSBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZmVlczJVbml0YXJ5Q29tbWl0UmV2ZWFsUmV3YXJkKGZlZXM6IGJpZ2ludCwgd2l0bmVzc2VzOiBudW1iZXIpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiBmZWVzIC8gQmlnSW50KHdpdG5lc3NlcykgfHwgMW5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2ZlZXMyVW5pdGFyeVJld2FyZChmZWVzOiBiaWdpbnQsIF93aXRuZXNzZXM6IG51bWJlcik6IGJpZ2ludCB7XHJcbiAgICAgICAgcmV0dXJuIEJpZ01hdGgubWF4KFxyXG4gICAgICAgICAgICBmZWVzLFxyXG4gICAgICAgICAgICAxbiArIERhdGFSZXF1ZXN0UGF5bG9hZC5NSU5fQ09MTEFURVJBTCAvIENPTExBVEVSQUxfUkFUSU9cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9mZWVzMlZhbHVlKGZlZXM6IGJpZ2ludCwgd2l0bmVzc2VzOiBudW1iZXIpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIEJpZ0ludCh3aXRuZXNzZXMpICogKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmVlczJVbml0YXJ5UmV3YXJkKGZlZXMsIHdpdG5lc3NlcylcclxuICAgICAgICAgICAgICAgICsgMm4gKiB0aGlzLl9mZWVzMlVuaXRhcnlDb21taXRSZXZlYWxSZXdhcmQoZmVlcywgd2l0bmVzc2VzKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3RvRHJPdXRwdXRQcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRyb1NMQSxcclxuICAgICAgICAgICAgICAgIGRhdGFSZXF1ZXN0OiB0aGlzLl9yZXF1ZXN0LnRvUHJvdG9idWYoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witnet/sdk",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
5
5
  "author": "Witnet Foundation",
6
6
  "license": "MIT",