@rosen-bridge/minimum-fee 2.1.0 → 2.2.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.
@@ -43,6 +43,10 @@ export declare class MinimumFeeBoxBuilder {
43
43
  * validates some of specified configs
44
44
  */
45
45
  protected validate: () => void;
46
+ /**
47
+ * removes heights and configs of all chains which don't have any configs
48
+ */
49
+ prune: () => MinimumFeeBoxBuilder;
46
50
  /**
47
51
  * validates specified configs and builds ErgoBoxCandidate of config box using them
48
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MinimumFeeBoxBuilder.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBoxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAOR,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAK9B,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMlD;;;OAGG;IACH,SAAS,cAAe,gBAAgB,KAAG,oBAAoB,CAG7D;IAEF;;;OAGG;IACH,YAAY,UAAW,MAAM,KAAG,oBAAoB,CAGlD;IAEF;;OAEG;IACH,UAAU,QAAO,MAAM,GAAG,CAAC,CAEzB;IAEF;;;;OAIG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;;OAGG;IACH,SAAS,kBAAmB,MAAM,KAAG,oBAAoB,CAGvD;IAEF;;;OAGG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;OAEG;IACH,SAAS,CAAC,QAAQ,QAAO,IAAI,CA6B3B;IAEF;;OAEG;IACH,KAAK,QAAO,gBAAgB,CAiC1B;CACH"}
1
+ {"version":3,"file":"MinimumFeeBoxBuilder.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBoxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAMR,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAK9B,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMlD;;;OAGG;IACH,SAAS,cAAe,gBAAgB,KAAG,oBAAoB,CAG7D;IAEF;;;OAGG;IACH,YAAY,UAAW,MAAM,KAAG,oBAAoB,CAGlD;IAEF;;OAEG;IACH,UAAU,QAAO,MAAM,GAAG,CAAC,CAEzB;IAEF;;;;OAIG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;;OAGG;IACH,SAAS,kBAAmB,MAAM,KAAG,oBAAoB,CAGvD;IAEF;;;OAGG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;OAEG;IACH,SAAS,CAAC,QAAQ,QAAO,IAAI,CA6B3B;IAEF;;OAEG;IACH,KAAK,QAAO,oBAAoB,CA8B9B;IAEF;;OAEG;IACH,KAAK,QAAO,gBAAgB,CAiC1B;CACH"}
@@ -83,6 +83,35 @@ export class MinimumFeeBoxBuilder {
83
83
  });
84
84
  }
85
85
  };
86
+ /**
87
+ * removes heights and configs of all chains which don't have any configs
88
+ */
89
+ prune = () => {
90
+ const activeChains = [];
91
+ for (let i = 0; i < this.fees.length; i++) {
92
+ const chains = Object.keys(this.fees[i].heights);
93
+ chains.forEach((chain) => {
94
+ const feeConfig = this.fees[i].configs[chain];
95
+ if (feeConfig &&
96
+ (feeConfig.bridgeFee !== -1n ||
97
+ feeConfig.networkFee !== -1n ||
98
+ feeConfig.rsnRatio !== -1n ||
99
+ feeConfig.rsnRatioDivisor !== -1n ||
100
+ feeConfig.feeRatio !== -1n))
101
+ activeChains.push(chain);
102
+ });
103
+ }
104
+ for (let i = 0; i < this.fees.length; i++) {
105
+ const chains = Object.keys(this.fees[i].heights);
106
+ chains.forEach((chain) => {
107
+ if (!activeChains.includes(chain)) {
108
+ delete this.fees[i].heights[chain];
109
+ delete this.fees[i].configs[chain];
110
+ }
111
+ });
112
+ }
113
+ return this;
114
+ };
86
115
  /**
87
116
  * validates specified configs and builds ErgoBoxCandidate of config box using them
88
117
  */
@@ -106,4 +135,4 @@ export class MinimumFeeBoxBuilder {
106
135
  return boxBuilder.build();
107
136
  };
108
137
  }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUJveEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvTWluaW11bUZlZUJveEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixHQUFHLEVBQ0gsV0FBVyxFQUNYLE9BQU8sR0FHUixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3JCLElBQUksQ0FBYTtJQUNqQixRQUFRLENBQVc7SUFDbkIsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsT0FBTyxDQUFTO0lBRTFCLFlBQVksYUFBcUIsRUFBRSxPQUFlO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsR0FBRyxDQUFDLFNBQTJCLEVBQXdCLEVBQUU7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQXdCLEVBQUU7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8s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RUFBRSxDQUFDLENBQUM7UUFFcEQsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZGRyZXNzLFxuICBCb3hWYWx1ZSxcbiAgQ29udHJhY3QsXG4gIEVyZ29Cb3hDYW5kaWRhdGVCdWlsZGVyLFxuICBJNjQsXG4gIFRva2VuQW1vdW50LFxuICBUb2tlbklkLFxuICBDb25zdGFudCxcbiAgRXJnb0JveENhbmRpZGF0ZSxcbn0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgTWluaW11bUZlZUNvbmZpZyB9IGZyb20gJy4vTWluaW11bUZlZUNvbmZpZyc7XG5pbXBvcnQgeyBGZWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEludmFsaWRDb25maWcgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBFUkdPX05BVElWRV9UT0tFTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGZlZVRvUmVnaXN0ZXJWYWx1ZXMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIE1pbmltdW1GZWVCb3hCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGZlZXM6IEFycmF5PEZlZT47XG4gIHByb3RlY3RlZCBib3hWYWx1ZTogQm94VmFsdWU7XG4gIHByb3RlY3RlZCBib3hIZWlnaHQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIHRva2VuSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIG1pbmltdW1GZWVORlQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFkZHJlc3M6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtaW5pbXVtRmVlTkZUOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZykge1xuICAgIHRoaXMuZmVlcyA9IFtdO1xuICAgIHRoaXMubWluaW11bUZlZU5GVCA9IG1pbmltdW1GZWVORlQ7XG4gICAgdGhpcy5hZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGRzIGEgZmVlQ29uZmlnXG4gICAqIEBwYXJhbSBmZWVDb25maWdcbiAgICovXG4gIGFkZENvbmZpZyA9IChmZWVDb25maWc6IE1pbmltdW1GZWVDb25maWcpOiBNaW5pbXVtRmVlQm94QnVpbGRlciA9PiB7XG4gICAgdGhpcy5mZWVzLnB1c2goZmVlQ29uZmlnLmdldENvbmZpZygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBhIGNvbmZpZyBieSBpbmRleFxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHJlbW92ZUNvbmZpZyA9IChpbmRleDogbnVtYmVyKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMuZmVlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZXRzIGN1cnJlbnQgZmVlQ29uZmlnXG4gICAqL1xuICBnZXRDb25maWdzID0gKCk6IEFycmF5PEZlZT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmZlZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgRXJnb0JveCBFcmcgdmFsdWVcbiAgICogQHBhcmFtIG5hbm9FcmdcbiAgICogQHJldHVybnNcbiAgICovXG4gIHNldFZhbHVlID0gKG5hbm9Fcmc6IGJpZ2ludCk6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICB0aGlzLmJveFZhbHVlID0gQm94VmFsdWUuZnJvbV9pNjQoSTY0LmZyb21fc3RyKG5hbm9FcmcudG9TdHJpbmcoKSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIEVyZ29Cb3ggY3JlYXRpb25oZWlnaHRcbiAgICogQHBhcmFtIGN1cnJlbnRIZWlnaHRcbiAgICovXG4gIHNldEhlaWdodCA9IChjdXJyZW50SGVpZ2h0OiBudW1iZXIpOiBNaW5pbXVtRmVlQm94QnVpbGRlciA9PiB7XG4gICAgdGhpcy5ib3hIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIGNvbmZpZyB0b2tlbiBpZFxuICAgKiBAcGFyYW0gdG9rZW5JZFxuICAgKi9cbiAgc2V0VG9rZW4gPSAodG9rZW5JZDogc3RyaW5nKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMudG9rZW5JZCA9IHRva2VuSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHZhbGlkYXRlcyBzb21lIG9mIHNwZWNpZmllZCBjb25maWdzXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGUgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmJveFZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoYEJveCB2YWx1ZSBhcmd1bWVudCBpcyBub3QgZGVmaW5lZGApO1xuICAgIGlmICghdGhpcy5ib3hIZWlnaHQpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhgQm94IGNyZWF0aW9uIGhlaWdodCBhcmd1bWVudCBpcyBub3QgZGVmaW5lZGApO1xuICAgIGlmICghdGhpcy50b2tlbklkKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoYENvbmZpZyB0b2tlbiBpZCBpcyBub3QgZGVmaW5lZGApO1xuICAgIGlmICh0aGlzLmZlZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoXG4gICAgICAgIGBObyBjb25maWcgYWRkZWQuIFBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIGNvbmZpZ2BcbiAgICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmVlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYWlucyA9IE9iamVjdC5rZXlzKHRoaXMuZmVlc1swXS5oZWlnaHRzKTtcbiAgICAgIGNoYWlucy5mb3JFYWNoKChjaGFpbikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZmVlc1tpICsgMV0uaGVpZ2h0c1tjaGFpbl0pXG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoXG4gICAgICAgICAgICBgRXhwZWN0ZWQgY2hhaW4gWyR7Y2hhaW59XSBhdCBpbmRleCBbJHtpICsgMX1dYFxuICAgICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmZlZXNbaSArIDFdLmhlaWdodHNbY2hhaW5dIDwgdGhpcy5mZWVzW2ldLmhlaWdodHNbY2hhaW5dKVxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKFxuICAgICAgICAgICAgYEFsbCBoZWlnaHRzIGZvciBhIGNoYWluIHNob3VsZCBiZSBhc2NlbmRpbmcuIEhlaWdodHMgb2YgY2hhaW4gWyR7Y2hhaW59XSBhdCBpbmRleGVzIFske2l9LCR7XG4gICAgICAgICAgICAgIGkgKyAxXG4gICAgICAgICAgICB9XSBhcmUgaW52YWxpZCBbJHt0aGlzLmZlZXNbaSArIDFdLmhlaWdodHNbY2hhaW5dfSA8ICR7XG4gICAgICAgICAgICAgIHRoaXMuZmVlc1tpXS5oZWlnaHRzW2NoYWluXVxuICAgICAgICAgICAgfV1gXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogdmFsaWRhdGVzIHNwZWNpZmllZCBjb25maWdzIGFuZCBidWlsZHMgRXJnb0JveENhbmRpZGF0ZSBvZiBjb25maWcgYm94IHVzaW5nIHRoZW1cbiAgICovXG4gIGJ1aWxkID0gKCk6IEVyZ29Cb3hDYW5kaWRhdGUgPT4ge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcblxuICAgIC8vIGFkZCBib3ggdmFsdWUsIGFkZHJlc3MgYW5kIGNyZWF0aW9uIGhlaWdodFxuICAgIGNvbnN0IGJveEJ1aWxkZXIgPSBuZXcgRXJnb0JveENhbmRpZGF0ZUJ1aWxkZXIoXG4gICAgICB0aGlzLmJveFZhbHVlLFxuICAgICAgQ29udHJhY3QubmV3KEFkZHJlc3MuZnJvbV9iYXNlNTgodGhpcy5hZGRyZXNzKS50b19lcmdvX3RyZWUoKSksXG4gICAgICB0aGlzLmJveEhlaWdodFxuICAgICk7XG5cbiAgICAvLyBhZGQgYm94IHRva2Vuc1xuICAgIGJveEJ1aWxkZXIuYWRkX3Rva2VuKFxuICAgICAgVG9rZW5JZC5mcm9tX3N0cih0aGlzLm1pbmltdW1GZWVORlQpLFxuICAgICAgVG9rZW5BbW91bnQuZnJvbV9pNjQoSTY0LmZyb21fc3RyKCcxJykpXG4gICAgKTtcbiAgICBpZiAodGhpcy50b2tlbklkICE9PSBFUkdPX05BVElWRV9UT0tFTilcbiAgICAgIGJveEJ1aWxkZXIuYWRkX3Rva2VuKFxuICAgICAgICBUb2tlbklkLmZyb21fc3RyKHRoaXMudG9rZW5JZCksXG4gICAgICAgIFRva2VuQW1vdW50LmZyb21faTY0KEk2NC5mcm9tX3N0cignMScpKVxuICAgICAgKTtcblxuICAgIC8vIGdlbmVyYXRlIHJlZ2lzdGVyIHZhbHVlc1xuICAgIGNvbnN0IHJlZ2lzdGVyVmFsdWVzID0gZmVlVG9SZWdpc3RlclZhbHVlcyh0aGlzLmZlZXMpO1xuXG4gICAgLy8gYWRkIGJveCByZWdpc3RlcnNcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg0LCByZWdpc3RlclZhbHVlcy5SNCk7XG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoNSwgcmVnaXN0ZXJWYWx1ZXMuUjUpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDYsIHJlZ2lzdGVyVmFsdWVzLlI2KTtcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg3LCByZWdpc3RlclZhbHVlcy5SNyk7XG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoOCwgcmVnaXN0ZXJWYWx1ZXMuUjgpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDksIHJlZ2lzdGVyVmFsdWVzLlI5KTtcblxuICAgIHJldHVybiBib3hCdWlsZGVyLmJ1aWxkKCk7XG4gIH07XG59XG4iXX0=
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUJveEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvTWluaW11bUZlZUJveEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixHQUFHLEVBQ0gsV0FBVyxFQUNYLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3JCLElBQUksQ0FBYTtJQUNqQixRQUFRLENBQVc7SUFDbkIsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsT0FBTyxDQUFTO0lBRTFCLFlBQVksYUFBcUIsRUFBRSxPQUFlO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsR0FBRyxDQUFDLFNBQTJCLEVBQXdCLEVBQUU7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQXdCLEVBQUU7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDSCxVQUFVLEdBQUcsR0FBZSxFQUFFO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsUUFBUSxHQUFHLENBQUMsT0FBZSxFQUF3QixFQUFFO1FBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxTQUFTLEdBQUcsQ0FBQyxhQUFxQixFQUF3QixFQUFFO1FBQzFELElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsUUFBUSxHQUFHLENBQUMsT0FBZSxFQUF3QixFQUFFO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFDTyxRQUFRLEdBQUcsR0FBUyxFQUFFO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNoQixNQUFNLElBQUksYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2pCLE1BQU0sSUFBSSxhQUFhLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZixNQUFNLElBQUksYUFBYSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxhQUFhLENBQ3JCLGlEQUFpRCxDQUNsRCxDQUFDO1FBRUosS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDbEMsTUFBTSxJQUFJLGFBQWEsQ0FDckIsbUJBQW1CLEtBQUssZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQ2hELENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUMvRCxNQUFNLElBQUksYUFBYSxDQUNyQixrRUFBa0UsS0FBSyxpQkFBaUIsQ0FBQyxJQUN2RixDQUFDLEdBQUcsQ0FDTixrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQzVCLEdBQUcsQ0FDSixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsS0FBSyxHQUFHLEdBQXlCLEVBQUU7UUFDakMsTUFBTSxZQUFZLEdBQWEsRUFBRSxDQUFDO1FBRWxDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUMsSUFDRSxTQUFTO29CQUNULENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7d0JBQzFCLFNBQVMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO3dCQUM1QixTQUFTLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTt3QkFDMUIsU0FBUyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7d0JBQ2pDLFNBQVMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBRTdCLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILEtBQUssR0FBRyxHQUFxQixFQUFFO1FBQzdCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQiw2Q0FBNkM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FDNUMsSUFBSSxDQUFDLFFBQVEsRUFDYixRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQzlELElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztRQUVGLGlCQUFpQjtRQUNqQixVQUFVLENBQUMsU0FBUyxDQUNsQixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDcEMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3hDLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssaUJBQWlCO1lBQ3BDLFVBQVUsQ0FBQyxTQUFTLENBQ2xCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUM5QixXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDeEMsQ0FBQztRQUVKLDJCQUEyQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEQsb0JBQW9CO1FBQ3BCLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWRkcmVzcyxcbiAgQm94VmFsdWUsXG4gIENvbnRyYWN0LFxuICBFcmdvQm94Q2FuZGlkYXRlQnVpbGRlcixcbiAgSTY0LFxuICBUb2tlbkFtb3VudCxcbiAgVG9rZW5JZCxcbiAgRXJnb0JveENhbmRpZGF0ZSxcbn0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgTWluaW11bUZlZUNvbmZpZyB9IGZyb20gJy4vTWluaW11bUZlZUNvbmZpZyc7XG5pbXBvcnQgeyBGZWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEludmFsaWRDb25maWcgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBFUkdPX05BVElWRV9UT0tFTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGZlZVRvUmVnaXN0ZXJWYWx1ZXMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIE1pbmltdW1GZWVCb3hCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGZlZXM6IEFycmF5PEZlZT47XG4gIHByb3RlY3RlZCBib3hWYWx1ZTogQm94VmFsdWU7XG4gIHByb3RlY3RlZCBib3hIZWlnaHQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIHRva2VuSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIG1pbmltdW1GZWVORlQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFkZHJlc3M6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtaW5pbXVtRmVlTkZUOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZykge1xuICAgIHRoaXMuZmVlcyA9IFtdO1xuICAgIHRoaXMubWluaW11bUZlZU5GVCA9IG1pbmltdW1GZWVORlQ7XG4gICAgdGhpcy5hZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGRzIGEgZmVlQ29uZmlnXG4gICAqIEBwYXJhbSBmZWVDb25maWdcbiAgICovXG4gIGFkZENvbmZpZyA9IChmZWVDb25maWc6IE1pbmltdW1GZWVDb25maWcpOiBNaW5pbXVtRmVlQm94QnVpbGRlciA9PiB7XG4gICAgdGhpcy5mZWVzLnB1c2goZmVlQ29uZmlnLmdldENvbmZpZygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBhIGNvbmZpZyBieSBpbmRleFxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHJlbW92ZUNvbmZpZyA9IChpbmRleDogbnVtYmVyKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMuZmVlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZXRzIGN1cnJlbnQgZmVlQ29uZmlnXG4gICAqL1xuICBnZXRDb25maWdzID0gKCk6IEFycmF5PEZlZT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmZlZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgRXJnb0JveCBFcmcgdmFsdWVcbiAgICogQHBhcmFtIG5hbm9FcmdcbiAgICogQHJldHVybnNcbiAgICovXG4gIHNldFZhbHVlID0gKG5hbm9Fcmc6IGJpZ2ludCk6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICB0aGlzLmJveFZhbHVlID0gQm94VmFsdWUuZnJvbV9pNjQoSTY0LmZyb21fc3RyKG5hbm9FcmcudG9TdHJpbmcoKSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIEVyZ29Cb3ggY3JlYXRpb25oZWlnaHRcbiAgICogQHBhcmFtIGN1cnJlbnRIZWlnaHRcbiAgICovXG4gIHNldEhlaWdodCA9IChjdXJyZW50SGVpZ2h0OiBudW1iZXIpOiBNaW5pbXVtRmVlQm94QnVpbGRlciA9PiB7XG4gICAgdGhpcy5ib3hIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIGNvbmZpZyB0b2tlbiBpZFxuICAgKiBAcGFyYW0gdG9rZW5JZFxuICAgKi9cbiAgc2V0VG9rZW4gPSAodG9rZW5JZDogc3RyaW5nKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMudG9rZW5JZCA9IHRva2VuSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHZhbGlkYXRlcyBzb21lIG9mIHNwZWNpZmllZCBjb25maWdzXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGUgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmJveFZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoYEJveCB2YWx1ZSBhcmd1bWVudCBpcyBub3QgZGVmaW5lZGApO1xuICAgIGlmICghdGhpcy5ib3hIZWlnaHQpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhgQm94IGNyZWF0aW9uIGhlaWdodCBhcmd1bWVudCBpcyBub3QgZGVmaW5lZGApO1xuICAgIGlmICghdGhpcy50b2tlbklkKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoYENvbmZpZyB0b2tlbiBpZCBpcyBub3QgZGVmaW5lZGApO1xuICAgIGlmICh0aGlzLmZlZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoXG4gICAgICAgIGBObyBjb25maWcgYWRkZWQuIFBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIGNvbmZpZ2BcbiAgICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmVlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYWlucyA9IE9iamVjdC5rZXlzKHRoaXMuZmVlc1swXS5oZWlnaHRzKTtcbiAgICAgIGNoYWlucy5mb3JFYWNoKChjaGFpbikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZmVlc1tpICsgMV0uaGVpZ2h0c1tjaGFpbl0pXG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoXG4gICAgICAgICAgICBgRXhwZWN0ZWQgY2hhaW4gWyR7Y2hhaW59XSBhdCBpbmRleCBbJHtpICsgMX1dYFxuICAgICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmZlZXNbaSArIDFdLmhlaWdodHNbY2hhaW5dIDwgdGhpcy5mZWVzW2ldLmhlaWdodHNbY2hhaW5dKVxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKFxuICAgICAgICAgICAgYEFsbCBoZWlnaHRzIGZvciBhIGNoYWluIHNob3VsZCBiZSBhc2NlbmRpbmcuIEhlaWdodHMgb2YgY2hhaW4gWyR7Y2hhaW59XSBhdCBpbmRleGVzIFske2l9LCR7XG4gICAgICAgICAgICAgIGkgKyAxXG4gICAgICAgICAgICB9XSBhcmUgaW52YWxpZCBbJHt0aGlzLmZlZXNbaSArIDFdLmhlaWdodHNbY2hhaW5dfSA8ICR7XG4gICAgICAgICAgICAgIHRoaXMuZmVlc1tpXS5oZWlnaHRzW2NoYWluXVxuICAgICAgICAgICAgfV1gXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBoZWlnaHRzIGFuZCBjb25maWdzIG9mIGFsbCBjaGFpbnMgd2hpY2ggZG9uJ3QgaGF2ZSBhbnkgY29uZmlnc1xuICAgKi9cbiAgcHJ1bmUgPSAoKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIGNvbnN0IGFjdGl2ZUNoYWluczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mZWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGFpbnMgPSBPYmplY3Qua2V5cyh0aGlzLmZlZXNbaV0uaGVpZ2h0cyk7XG4gICAgICBjaGFpbnMuZm9yRWFjaCgoY2hhaW4pID0+IHtcbiAgICAgICAgY29uc3QgZmVlQ29uZmlnID0gdGhpcy5mZWVzW2ldLmNvbmZpZ3NbY2hhaW5dO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZmVlQ29uZmlnICYmXG4gICAgICAgICAgKGZlZUNvbmZpZy5icmlkZ2VGZWUgIT09IC0xbiB8fFxuICAgICAgICAgICAgZmVlQ29uZmlnLm5ldHdvcmtGZWUgIT09IC0xbiB8fFxuICAgICAgICAgICAgZmVlQ29uZmlnLnJzblJhdGlvICE9PSAtMW4gfHxcbiAgICAgICAgICAgIGZlZUNvbmZpZy5yc25SYXRpb0Rpdmlzb3IgIT09IC0xbiB8fFxuICAgICAgICAgICAgZmVlQ29uZmlnLmZlZVJhdGlvICE9PSAtMW4pXG4gICAgICAgIClcbiAgICAgICAgICBhY3RpdmVDaGFpbnMucHVzaChjaGFpbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hhaW5zID0gT2JqZWN0LmtleXModGhpcy5mZWVzW2ldLmhlaWdodHMpO1xuICAgICAgY2hhaW5zLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICAgIGlmICghYWN0aXZlQ2hhaW5zLmluY2x1ZGVzKGNoYWluKSkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmZlZXNbaV0uaGVpZ2h0c1tjaGFpbl07XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZmVlc1tpXS5jb25maWdzW2NoYWluXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHZhbGlkYXRlcyBzcGVjaWZpZWQgY29uZmlncyBhbmQgYnVpbGRzIEVyZ29Cb3hDYW5kaWRhdGUgb2YgY29uZmlnIGJveCB1c2luZyB0aGVtXG4gICAqL1xuICBidWlsZCA9ICgpOiBFcmdvQm94Q2FuZGlkYXRlID0+IHtcbiAgICB0aGlzLnZhbGlkYXRlKCk7XG5cbiAgICAvLyBhZGQgYm94IHZhbHVlLCBhZGRyZXNzIGFuZCBjcmVhdGlvbiBoZWlnaHRcbiAgICBjb25zdCBib3hCdWlsZGVyID0gbmV3IEVyZ29Cb3hDYW5kaWRhdGVCdWlsZGVyKFxuICAgICAgdGhpcy5ib3hWYWx1ZSxcbiAgICAgIENvbnRyYWN0Lm5ldyhBZGRyZXNzLmZyb21fYmFzZTU4KHRoaXMuYWRkcmVzcykudG9fZXJnb190cmVlKCkpLFxuICAgICAgdGhpcy5ib3hIZWlnaHRcbiAgICApO1xuXG4gICAgLy8gYWRkIGJveCB0b2tlbnNcbiAgICBib3hCdWlsZGVyLmFkZF90b2tlbihcbiAgICAgIFRva2VuSWQuZnJvbV9zdHIodGhpcy5taW5pbXVtRmVlTkZUKSxcbiAgICAgIFRva2VuQW1vdW50LmZyb21faTY0KEk2NC5mcm9tX3N0cignMScpKVxuICAgICk7XG4gICAgaWYgKHRoaXMudG9rZW5JZCAhPT0gRVJHT19OQVRJVkVfVE9LRU4pXG4gICAgICBib3hCdWlsZGVyLmFkZF90b2tlbihcbiAgICAgICAgVG9rZW5JZC5mcm9tX3N0cih0aGlzLnRva2VuSWQpLFxuICAgICAgICBUb2tlbkFtb3VudC5mcm9tX2k2NChJNjQuZnJvbV9zdHIoJzEnKSlcbiAgICAgICk7XG5cbiAgICAvLyBnZW5lcmF0ZSByZWdpc3RlciB2YWx1ZXNcbiAgICBjb25zdCByZWdpc3RlclZhbHVlcyA9IGZlZVRvUmVnaXN0ZXJWYWx1ZXModGhpcy5mZWVzKTtcblxuICAgIC8vIGFkZCBib3ggcmVnaXN0ZXJzXG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoNCwgcmVnaXN0ZXJWYWx1ZXMuUjQpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDUsIHJlZ2lzdGVyVmFsdWVzLlI1KTtcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg2LCByZWdpc3RlclZhbHVlcy5SNik7XG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoNywgcmVnaXN0ZXJWYWx1ZXMuUjcpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDgsIHJlZ2lzdGVyVmFsdWVzLlI4KTtcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg5LCByZWdpc3RlclZhbHVlcy5SOSk7XG5cbiAgICByZXR1cm4gYm94QnVpbGRlci5idWlsZCgpO1xuICB9O1xufVxuIl19