@bitgo-beta/sdk-coin-starknet 0.0.1-beta.7 → 0.0.1-beta.71

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 (45) hide show
  1. package/dist/src/lib/constants.d.ts +9 -0
  2. package/dist/src/lib/constants.d.ts.map +1 -1
  3. package/dist/src/lib/constants.js +21 -2
  4. package/dist/src/lib/iface.d.ts +38 -0
  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/transaction.d.ts +6 -1
  11. package/dist/src/lib/transaction.d.ts.map +1 -1
  12. package/dist/src/lib/transaction.js +81 -4
  13. package/dist/src/lib/transactionBuilder.d.ts +5 -1
  14. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  15. package/dist/src/lib/transactionBuilder.js +37 -4
  16. package/dist/src/lib/transactionBuilderFactory.d.ts +2 -1
  17. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  18. package/dist/src/lib/transactionBuilderFactory.js +6 -3
  19. package/dist/src/lib/transferBuilder.d.ts +2 -0
  20. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  21. package/dist/src/lib/transferBuilder.js +11 -2
  22. package/dist/src/lib/utils.d.ts +28 -1
  23. package/dist/src/lib/utils.d.ts.map +1 -1
  24. package/dist/src/lib/utils.js +125 -1
  25. package/dist/src/lib/walletInitializationBuilder.d.ts +26 -0
  26. package/dist/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/walletInitializationBuilder.js +117 -0
  28. package/dist/src/starknet.d.ts +2 -0
  29. package/dist/src/starknet.d.ts.map +1 -1
  30. package/dist/src/starknet.js +10 -3
  31. package/dist/test/resources/starknet.d.ts +45 -0
  32. package/dist/test/resources/starknet.d.ts.map +1 -1
  33. package/dist/test/resources/starknet.js +31 -2
  34. package/dist/test/unit/starknet.js +39 -1
  35. package/dist/test/unit/transaction.js +28 -3
  36. package/dist/test/unit/transferBuilder.d.ts +2 -0
  37. package/dist/test/unit/transferBuilder.d.ts.map +1 -0
  38. package/dist/test/unit/transferBuilder.js +229 -0
  39. package/dist/test/unit/utils.d.ts.map +1 -1
  40. package/dist/test/unit/utils.js +232 -5
  41. package/dist/test/unit/walletInitializationBuilder.d.ts +2 -0
  42. package/dist/test/unit/walletInitializationBuilder.d.ts.map +1 -0
  43. package/dist/test/unit/walletInitializationBuilder.js +123 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +8 -8
@@ -4,6 +4,7 @@ exports.TransactionBuilderFactory = void 0;
4
4
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
5
  const transaction_1 = require("./transaction");
6
6
  const transferBuilder_1 = require("./transferBuilder");
7
+ const walletInitializationBuilder_1 = require("./walletInitializationBuilder");
7
8
  const iface_1 = require("./iface");
8
9
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
9
10
  constructor(_coinConfig) {
@@ -17,6 +18,8 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
17
18
  switch (transaction.starknetTransactionData.transactionType) {
18
19
  case iface_1.StarknetTransactionType.INVOKE:
19
20
  return this.getTransferBuilder(transaction);
21
+ case iface_1.StarknetTransactionType.DEPLOY_ACCOUNT:
22
+ return this.getWalletInitializationBuilder(transaction);
20
23
  default:
21
24
  throw new sdk_core_1.InvalidTransactionError('Invalid transaction type');
22
25
  }
@@ -36,9 +39,9 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
36
39
  return TransactionBuilderFactory.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
37
40
  }
38
41
  /** @inheritdoc */
39
- getWalletInitializationBuilder() {
40
- throw new sdk_core_1.MethodNotImplementedError();
42
+ getWalletInitializationBuilder(tx) {
43
+ return TransactionBuilderFactory.initializeBuilder(tx, new walletInitializationBuilder_1.WalletInitializationBuilder(this._coinConfig));
41
44
  }
42
45
  }
43
46
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBeUg7QUFFekgsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCxtQ0FBa0Q7QUFFbEQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLGNBQXNCO1FBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDO1lBQ0gsUUFBUSxXQUFXLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzVELEtBQUssK0JBQXVCLENBQUMsTUFBTTtvQkFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzlDO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUNwRyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0IsQ0FBQyxFQUFnQjtRQUNqQyxPQUFPLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLG9DQUF5QixFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBckNELDhEQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGZyb20ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25CdWlsZGVyPiB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgYXdhaXQgdHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0cmFuc2FjdGlvbi5zdGFya25ldFRyYW5zYWN0aW9uRGF0YS50cmFuc2FjdGlvblR5cGUpIHtcbiAgICAgICAgY2FzZSBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5JTlZPS0U6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHRyYW5zYWN0aW9uKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogJyArIGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBOEY7QUFFOUYsK0NBQTRDO0FBRTVDLHVEQUFvRDtBQUNwRCwrRUFBNEU7QUFDNUUsbUNBQWtEO0FBRWxELE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFzQjtRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sV0FBVyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQztZQUNILFFBQVEsV0FBVyxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM1RCxLQUFLLCtCQUF1QixDQUFDLE1BQU07b0JBQ2pDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLCtCQUF1QixDQUFDLGNBQWM7b0JBQ3pDLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRDtvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUErQixFQUEyQixFQUFFLE9BQVU7UUFDcEcsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCLENBQUMsRUFBZ0I7UUFDakMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCLENBQUMsRUFBZ0I7UUFDN0MsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5REFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0NBQ0Y7QUF2Q0QsOERBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgZnJvbShyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbkJ1aWxkZXI+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICBhd2FpdCB0cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLnN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLnRyYW5zYWN0aW9uVHlwZSkge1xuICAgICAgICBjYXNlIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLklOVk9LRTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLkRFUExPWV9BQ0NPVU5UOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246ICcgKyBlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVCdWlsZGVyPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXI+KHR4OiBUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCwgYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxufVxuIl19
@@ -5,10 +5,12 @@ import { StarknetTransactionType } from './iface';
5
5
  export declare class TransferBuilder extends TransactionBuilder {
6
6
  protected _receiverAddress?: string;
7
7
  protected _amount?: string;
8
+ protected _tokenContractAddress: string;
8
9
  constructor(_coinConfig: Readonly<CoinConfig>);
9
10
  protected get transactionType(): StarknetTransactionType;
10
11
  receiverId(address: string): this;
11
12
  amount(value: string): this;
13
+ tokenContractAddress(address: string): this;
12
14
  /** @inheritdoc */
13
15
  initBuilder(tx: Transaction): void;
14
16
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAgB,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIhE,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEf,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,uBAAuB,CAEvD;IAEM,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASlC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAWlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,gBAAgB;CAiBzB"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAgB,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAIhE,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAuB;gBAElD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,uBAAuB,CAEvD;IAEM,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQlD,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAYlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,gBAAgB;CAiBzB"}
@@ -12,6 +12,7 @@ const utils_1 = __importDefault(require("./utils"));
12
12
  class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
13
13
  constructor(_coinConfig) {
14
14
  super(_coinConfig);
15
+ this._tokenContractAddress = constants_1.STRK_TOKEN_CONTRACT;
15
16
  }
16
17
  get transactionType() {
17
18
  return iface_1.StarknetTransactionType.INVOKE;
@@ -31,6 +32,13 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
31
32
  this._amount = value;
32
33
  return this;
33
34
  }
35
+ tokenContractAddress(address) {
36
+ if (!address || !utils_1.default.isValidAddress(address)) {
37
+ throw new sdk_core_1.BuildTransactionError('Invalid token contract address, got: ' + address);
38
+ }
39
+ this._tokenContractAddress = address;
40
+ return this;
41
+ }
34
42
  /** @inheritdoc */
35
43
  initBuilder(tx) {
36
44
  super.initBuilder(tx);
@@ -39,6 +47,7 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
39
47
  if (transfer) {
40
48
  this._receiverAddress = transfer.recipient;
41
49
  this._amount = transfer.amount;
50
+ this._tokenContractAddress = transfer.tokenContract;
42
51
  }
43
52
  }
44
53
  }
@@ -46,7 +55,7 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
46
55
  async buildImplementation() {
47
56
  this.validateTransfer();
48
57
  const transferCall = {
49
- contractAddress: constants_1.STRK_TOKEN_CONTRACT,
58
+ contractAddress: this._tokenContractAddress,
50
59
  entrypoint: 'transfer',
51
60
  calldata: this.compileTransferCalldata(this._receiverAddress, this._amount),
52
61
  };
@@ -76,4 +85,4 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
76
85
  }
77
86
  }
78
87
  exports.TransferBuilder = TransferBuilder;
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTZEO0FBRTdELDZEQUEwRDtBQUUxRCxtQ0FBZ0U7QUFDaEUsMkNBQTREO0FBQzVELG9EQUE0QjtBQUU1QixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBSXJELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywrQkFBdUIsQ0FBQyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRDQUE0QyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFhO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQkFBbUIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE1BQU0sWUFBWSxHQUFpQjtZQUNqQyxlQUFlLEVBQUUsK0JBQW1CO1lBQ3BDLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGdCQUEwQixFQUFFLElBQUksQ0FBQyxPQUFpQixDQUFDO1NBQ2hHLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0IsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsU0FBaUIsRUFBRSxNQUFjO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxvQkFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksZ0NBQXFCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksZ0NBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJCQUEyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTlFRCwwQ0E4RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3RhcmtuZXRDYWxsLCBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgU1RSS19UT0tFTl9DT05UUkFDVCwgTUFTS18xMjggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3JlY2VpdmVyQWRkcmVzcz86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hbW91bnQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5JTlZPS0U7XG4gIH1cblxuICBwdWJsaWMgcmVjZWl2ZXJJZChhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgcmVjZWl2ZXIgYWRkcmVzcywgZ290OiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3JlY2VpdmVyQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYW1vdW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWwgPSBCaWdJbnQodmFsdWUpO1xuICAgIGlmICh2YWwgPCAwbikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBhbW91bnQ6ICR7dmFsdWV9YCk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBpZiAodGhpcy5fY2FsbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdHJhbnNmZXIgPSB1dGlscy5wYXJzZVRyYW5zZmVyQ2FsbCh0aGlzLl9jYWxsc1swXSk7XG4gICAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgICAgdGhpcy5fcmVjZWl2ZXJBZGRyZXNzID0gdHJhbnNmZXIucmVjaXBpZW50O1xuICAgICAgICB0aGlzLl9hbW91bnQgPSB0cmFuc2Zlci5hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNmZXIoKTtcblxuICAgIGNvbnN0IHRyYW5zZmVyQ2FsbDogU3RhcmtuZXRDYWxsID0ge1xuICAgICAgY29udHJhY3RBZGRyZXNzOiBTVFJLX1RPS0VOX0NPTlRSQUNULFxuICAgICAgZW50cnlwb2ludDogJ3RyYW5zZmVyJyxcbiAgICAgIGNhbGxkYXRhOiB0aGlzLmNvbXBpbGVUcmFuc2ZlckNhbGxkYXRhKHRoaXMuX3JlY2VpdmVyQWRkcmVzcyBhcyBzdHJpbmcsIHRoaXMuX2Ftb3VudCBhcyBzdHJpbmcpLFxuICAgIH07XG5cbiAgICB0aGlzLl9jYWxscyA9IFt0cmFuc2ZlckNhbGxdO1xuXG4gICAgcmV0dXJuIHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGlsZVRyYW5zZmVyQ2FsbGRhdGEocmVjaXBpZW50OiBzdHJpbmcsIGFtb3VudDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGFtb3VudEJpZyA9IEJpZ0ludChhbW91bnQpO1xuICAgIHJldHVybiBbcmVjaXBpZW50LCAnMHgnICsgKGFtb3VudEJpZyAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksICcweCcgKyAoYW1vdW50QmlnID4+IDEyOG4pLnRvU3RyaW5nKDE2KV07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNmZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NlbmRlciBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3JlY2VpdmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignUmVjZWl2ZXIgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9hbW91bnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0Ftb3VudCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHRoaXMuX3NlbmRlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc2VuZGVyIGFkZHJlc3M6ICR7dGhpcy5fc2VuZGVyfWApO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKHRoaXMuX3JlY2VpdmVyQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgcmVjZWl2ZXIgYWRkcmVzczogJHt0aGlzLl9yZWNlaXZlckFkZHJlc3N9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTZEO0FBRTdELDZEQUEwRDtBQUUxRCxtQ0FBZ0U7QUFDaEUsMkNBQTREO0FBQzVELG9EQUE0QjtBQUU1QixNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBS3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSFgsMEJBQXFCLEdBQVcsK0JBQW1CLENBQUM7SUFJOUQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLCtCQUF1QixDQUFDLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsNENBQTRDLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDekIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxPQUFlO1FBQ3pDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHVDQUF1QyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsTUFBTSxZQUFZLEdBQWlCO1lBQ2pDLGVBQWUsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQzNDLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGdCQUEwQixFQUFFLElBQUksQ0FBQyxPQUFpQixDQUFDO1NBQ2hHLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0IsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsU0FBaUIsRUFBRSxNQUFjO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxvQkFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksZ0NBQXFCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksZ0NBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJCQUEyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXhGRCwwQ0F3RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3RhcmtuZXRDYWxsLCBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgU1RSS19UT0tFTl9DT05UUkFDVCwgTUFTS18xMjggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3JlY2VpdmVyQWRkcmVzcz86IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hbW91bnQ/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdG9rZW5Db250cmFjdEFkZHJlc3M6IHN0cmluZyA9IFNUUktfVE9LRU5fQ09OVFJBQ1Q7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5JTlZPS0U7XG4gIH1cblxuICBwdWJsaWMgcmVjZWl2ZXJJZChhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgcmVjZWl2ZXIgYWRkcmVzcywgZ290OiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3JlY2VpdmVyQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYW1vdW50KHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWwgPSBCaWdJbnQodmFsdWUpO1xuICAgIGlmICh2YWwgPCAwbikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBhbW91bnQ6ICR7dmFsdWV9YCk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRva2VuQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdG9rZW4gY29udHJhY3QgYWRkcmVzcywgZ290OiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgaWYgKHRoaXMuX2NhbGxzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRyYW5zZmVyID0gdXRpbHMucGFyc2VUcmFuc2ZlckNhbGwodGhpcy5fY2FsbHNbMF0pO1xuICAgICAgaWYgKHRyYW5zZmVyKSB7XG4gICAgICAgIHRoaXMuX3JlY2VpdmVyQWRkcmVzcyA9IHRyYW5zZmVyLnJlY2lwaWVudDtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gdHJhbnNmZXIuYW1vdW50O1xuICAgICAgICB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyA9IHRyYW5zZmVyLnRva2VuQ29udHJhY3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNmZXIoKTtcblxuICAgIGNvbnN0IHRyYW5zZmVyQ2FsbDogU3RhcmtuZXRDYWxsID0ge1xuICAgICAgY29udHJhY3RBZGRyZXNzOiB0aGlzLl90b2tlbkNvbnRyYWN0QWRkcmVzcyxcbiAgICAgIGVudHJ5cG9pbnQ6ICd0cmFuc2ZlcicsXG4gICAgICBjYWxsZGF0YTogdGhpcy5jb21waWxlVHJhbnNmZXJDYWxsZGF0YSh0aGlzLl9yZWNlaXZlckFkZHJlc3MgYXMgc3RyaW5nLCB0aGlzLl9hbW91bnQgYXMgc3RyaW5nKSxcbiAgICB9O1xuXG4gICAgdGhpcy5fY2FsbHMgPSBbdHJhbnNmZXJDYWxsXTtcblxuICAgIHJldHVybiBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbXBpbGVUcmFuc2ZlckNhbGxkYXRhKHJlY2lwaWVudDogc3RyaW5nLCBhbW91bnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBhbW91bnRCaWcgPSBCaWdJbnQoYW1vdW50KTtcbiAgICByZXR1cm4gW3JlY2lwaWVudCwgJzB4JyArIChhbW91bnRCaWcgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLCAnMHgnICsgKGFtb3VudEJpZyA+PiAxMjhuKS50b1N0cmluZygxNildO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRyYW5zZmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc2VuZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTZW5kZXIgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9yZWNlaXZlckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1JlY2VpdmVyIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fYW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBbW91bnQgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyh0aGlzLl9zZW5kZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHNlbmRlciBhZGRyZXNzOiAke3RoaXMuX3NlbmRlcn1gKTtcbiAgICB9XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyh0aGlzLl9yZWNlaXZlckFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHJlY2VpdmVyIGFkZHJlc3M6ICR7dGhpcy5fcmVjZWl2ZXJBZGRyZXNzfWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { StarknetTransactionData, StarknetCall, ParsedTransferData } from './iface';
1
+ import { StarknetTransactionData, StarknetCall, ParsedTransferData, InvokeTransactionHashParams, DeployAccountTransactionHashParams } from './iface';
2
2
  /**
3
3
  * Normalize a Starknet address to canonical form: 0x + 64 hex chars, zero-padded.
4
4
  */
@@ -63,6 +63,28 @@ export declare function generateKeyPair(seed?: Buffer): {
63
63
  * Validate raw transaction data has required fields.
64
64
  */
65
65
  export declare function validateRawTransaction(tx: StarknetTransactionData): void;
66
+ /**
67
+ * Encode an ASCII string (max 31 chars) as a felt252.
68
+ */
69
+ export declare function encodeShortString(str: string): bigint;
70
+ /**
71
+ * Compute the Starknet function selector: keccak256(name) masked to 250 bits.
72
+ * @scure/starknet's keccak() already applies the 250-bit mask.
73
+ */
74
+ export declare function getSelectorFromName(name: string): bigint;
75
+ /**
76
+ * Compile calls into the Cairo 1 multicall __execute__ calldata format.
77
+ * Format: [num_calls, to_0, selector_0, data_len_0, ...data_0, to_1, ...]
78
+ */
79
+ export declare function compileExecuteCalldata(calls: StarknetCall[]): string[];
80
+ /**
81
+ * Compute the Poseidon V3 INVOKE transaction hash per SNIP-8.
82
+ */
83
+ export declare function calculateInvokeTransactionHash(params: InvokeTransactionHashParams): string;
84
+ /**
85
+ * Compute the Poseidon V3 DEPLOY_ACCOUNT transaction hash per SNIP-8 (starknet.js v3).
86
+ */
87
+ export declare function calculateDeployAccountTransactionHash(params: DeployAccountTransactionHashParams): string;
66
88
  declare const _default: {
67
89
  isValidAddress: typeof isValidAddress;
68
90
  isValidPublicKey: typeof isValidPublicKey;
@@ -77,6 +99,11 @@ declare const _default: {
77
99
  parseTransferCall: typeof parseTransferCall;
78
100
  generateKeyPair: typeof generateKeyPair;
79
101
  validateRawTransaction: typeof validateRawTransaction;
102
+ encodeShortString: typeof encodeShortString;
103
+ getSelectorFromName: typeof getSelectorFromName;
104
+ compileExecuteCalldata: typeof compileExecuteCalldata;
105
+ calculateInvokeTransactionHash: typeof calculateInvokeTransactionHash;
106
+ calculateDeployAccountTransactionHash: typeof calculateDeployAccountTransactionHash;
80
107
  };
81
108
  export default _default;
82
109
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGpF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAUpF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,eAAe,EAAE,MAAM,GAAG,MAAM,GAC/B,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CASA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAYvF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,CAYpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQ3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAOxE;;;;;;;;;;;;;;;;AAED,wBAcE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,uBAAuB,EAEvB,YAAY,EACZ,kBAAkB,EAClB,2BAA2B,EAC3B,kCAAkC,EACnC,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAUpF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,eAAe,EAAE,MAAM,GAAG,MAAM,GAC/B,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CASA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAYvF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,CAYpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQ3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAkBxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAerD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAUtE;AAMD;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,CA+C1F;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,kCAAkC,GAAG,MAAM,CA4CxG;;;;;;;;;;;;;;;;;;;;;AAED,wBAmBE"}
@@ -13,8 +13,14 @@ exports.formatEthAccountSignature = formatEthAccountSignature;
13
13
  exports.parseTransferCall = parseTransferCall;
14
14
  exports.generateKeyPair = generateKeyPair;
15
15
  exports.validateRawTransaction = validateRawTransaction;
16
+ exports.encodeShortString = encodeShortString;
17
+ exports.getSelectorFromName = getSelectorFromName;
18
+ exports.compileExecuteCalldata = compileExecuteCalldata;
19
+ exports.calculateInvokeTransactionHash = calculateInvokeTransactionHash;
20
+ exports.calculateDeployAccountTransactionHash = calculateDeployAccountTransactionHash;
16
21
  const starknet_1 = require("@scure/starknet");
17
22
  const constants_1 = require("./constants");
23
+ const iface_1 = require("./iface");
18
24
  const secp256k1_1 = require("@bitgo-beta/secp256k1");
19
25
  /**
20
26
  * Normalize a Starknet address to canonical form: 0x + 64 hex chars, zero-padded.
@@ -189,6 +195,119 @@ function validateRawTransaction(tx) {
189
195
  if (!isValidAddress(tx.senderAddress)) {
190
196
  throw new Error(`Invalid sender address: ${tx.senderAddress}`);
191
197
  }
198
+ if (tx.transactionType === iface_1.StarknetTransactionType.DEPLOY_ACCOUNT) {
199
+ if (!tx.classHash) {
200
+ throw new Error('Missing class hash for deploy account transaction');
201
+ }
202
+ if (!tx.constructorCalldata || tx.constructorCalldata.length === 0) {
203
+ throw new Error('Missing constructor calldata for deploy account transaction');
204
+ }
205
+ if (!tx.contractAddressSalt) {
206
+ throw new Error('Missing contract address salt for deploy account transaction');
207
+ }
208
+ }
209
+ }
210
+ /**
211
+ * Encode an ASCII string (max 31 chars) as a felt252.
212
+ */
213
+ function encodeShortString(str) {
214
+ if (str.length > 31) {
215
+ throw new Error(`Short string too long: ${str.length} > 31`);
216
+ }
217
+ for (let i = 0; i < str.length; i++) {
218
+ const code = str.charCodeAt(i);
219
+ if (code > 127) {
220
+ throw new Error(`Non-ASCII character at index ${i}: code ${code}`);
221
+ }
222
+ }
223
+ let result = 0n;
224
+ for (let i = 0; i < str.length; i++) {
225
+ result = (result << 8n) | BigInt(str.charCodeAt(i));
226
+ }
227
+ return result;
228
+ }
229
+ /**
230
+ * Compute the Starknet function selector: keccak256(name) masked to 250 bits.
231
+ * @scure/starknet's keccak() already applies the 250-bit mask.
232
+ */
233
+ function getSelectorFromName(name) {
234
+ return (0, starknet_1.keccak)(Buffer.from(name, 'ascii'));
235
+ }
236
+ /**
237
+ * Compile calls into the Cairo 1 multicall __execute__ calldata format.
238
+ * Format: [num_calls, to_0, selector_0, data_len_0, ...data_0, to_1, ...]
239
+ */
240
+ function compileExecuteCalldata(calls) {
241
+ const result = [];
242
+ result.push('0x' + BigInt(calls.length).toString(16));
243
+ for (const call of calls) {
244
+ result.push(call.contractAddress);
245
+ result.push('0x' + getSelectorFromName(call.entrypoint).toString(16));
246
+ result.push('0x' + BigInt(call.calldata.length).toString(16));
247
+ result.push(...call.calldata);
248
+ }
249
+ return result;
250
+ }
251
+ function encodeResourceBound(typeName, maxAmount, maxPricePerUnit) {
252
+ return (typeName << 192n) | (BigInt(maxAmount) << 128n) | BigInt(maxPricePerUnit);
253
+ }
254
+ /**
255
+ * Compute the Poseidon V3 INVOKE transaction hash per SNIP-8.
256
+ */
257
+ function calculateInvokeTransactionHash(params) {
258
+ const { senderAddress, compiledCalldata, chainId, nonce, resourceBounds, tip = '0x0', nonceDataAvailabilityMode = 0, feeDataAvailabilityMode = 0, paymasterData = [], accountDeploymentData = [], proofFacts, } = params;
259
+ const feeFieldHash = (0, starknet_1.poseidonHashMany)([
260
+ BigInt(tip),
261
+ encodeResourceBound(constants_1.L1_GAS_NAME, resourceBounds.l1_gas.max_amount, resourceBounds.l1_gas.max_price_per_unit),
262
+ encodeResourceBound(constants_1.L2_GAS_NAME, resourceBounds.l2_gas.max_amount, resourceBounds.l2_gas.max_price_per_unit),
263
+ encodeResourceBound(constants_1.L1_DATA_GAS_NAME, resourceBounds.l1_data_gas.max_amount, resourceBounds.l1_data_gas.max_price_per_unit),
264
+ ]);
265
+ const daMode = (BigInt(nonceDataAvailabilityMode) << 32n) | BigInt(feeDataAvailabilityMode);
266
+ const hashFields = [
267
+ constants_1.INVOKE_TX_PREFIX,
268
+ constants_1.TRANSACTION_VERSION_3,
269
+ BigInt(senderAddress),
270
+ feeFieldHash,
271
+ (0, starknet_1.poseidonHashMany)(paymasterData.map(BigInt)),
272
+ BigInt(chainId),
273
+ BigInt(nonce),
274
+ daMode,
275
+ (0, starknet_1.poseidonHashMany)(accountDeploymentData.map(BigInt)),
276
+ (0, starknet_1.poseidonHashMany)(compiledCalldata.map(BigInt)),
277
+ ];
278
+ if (proofFacts && proofFacts.length > 0) {
279
+ hashFields.push((0, starknet_1.poseidonHashMany)(proofFacts.map(BigInt)));
280
+ }
281
+ const hash = (0, starknet_1.poseidonHashMany)(hashFields);
282
+ return '0x' + hash.toString(16);
283
+ }
284
+ /**
285
+ * Compute the Poseidon V3 DEPLOY_ACCOUNT transaction hash per SNIP-8 (starknet.js v3).
286
+ */
287
+ function calculateDeployAccountTransactionHash(params) {
288
+ const { contractAddress, classHash, constructorCalldata, contractAddressSalt, chainId, nonce, resourceBounds, tip = '0x0', nonceDataAvailabilityMode = 0, feeDataAvailabilityMode = 0, paymasterData = [], } = params;
289
+ const feeFieldHash = (0, starknet_1.poseidonHashMany)([
290
+ BigInt(tip),
291
+ encodeResourceBound(constants_1.L1_GAS_NAME, resourceBounds.l1_gas.max_amount, resourceBounds.l1_gas.max_price_per_unit),
292
+ encodeResourceBound(constants_1.L2_GAS_NAME, resourceBounds.l2_gas.max_amount, resourceBounds.l2_gas.max_price_per_unit),
293
+ encodeResourceBound(constants_1.L1_DATA_GAS_NAME, resourceBounds.l1_data_gas.max_amount, resourceBounds.l1_data_gas.max_price_per_unit),
294
+ ]);
295
+ const daMode = (BigInt(nonceDataAvailabilityMode) << 32n) | BigInt(feeDataAvailabilityMode);
296
+ const hashFields = [
297
+ constants_1.DEPLOY_ACCOUNT_TX_PREFIX,
298
+ constants_1.TRANSACTION_VERSION_3,
299
+ BigInt(contractAddress),
300
+ feeFieldHash,
301
+ (0, starknet_1.poseidonHashMany)(paymasterData.map(BigInt)),
302
+ BigInt(chainId),
303
+ BigInt(nonce),
304
+ daMode,
305
+ (0, starknet_1.poseidonHashMany)(constructorCalldata.map(BigInt)),
306
+ BigInt(classHash),
307
+ BigInt(contractAddressSalt),
308
+ ];
309
+ const hash = (0, starknet_1.poseidonHashMany)(hashFields);
310
+ return '0x' + hash.toString(16);
192
311
  }
193
312
  exports.default = {
194
313
  isValidAddress,
@@ -204,5 +323,10 @@ exports.default = {
204
323
  parseTransferCall,
205
324
  generateKeyPair,
206
325
  validateRawTransaction,
326
+ encodeShortString,
327
+ getSelectorFromName,
328
+ compileExecuteCalldata,
329
+ calculateInvokeTransactionHash,
330
+ calculateDeployAccountTransactionHash,
207
331
  };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsNENBR0M7QUFNRCx3Q0FTQztBQUtELDRDQWdCQztBQUtELDhDQUdDO0FBS0QsNERBYUM7QUFNRCxvRkFVQztBQU1ELDRFQWVDO0FBS0Qsd0RBYUM7QUFLRCwwREFJQztBQU1ELDhEQVlDO0FBTUQsOENBWUM7QUFLRCwwQ0FRQztBQUtELHdEQU9DO0FBdE1ELDhDQUF3RDtBQUN4RCwyQ0FBaUg7QUFFakgscURBQTRDO0FBRTVDOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM5QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEUsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsb0JBQVEsQ0FBQztJQUNwQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gs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QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxFQUEyQjtJQUNoRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0FBQ0gsQ0FBQztBQUVELGtCQUFlO0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsd0JBQXdCO0lBQ3hCLG9DQUFvQztJQUNwQyxnQ0FBZ0M7SUFDaEMsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixnQkFBZ0I7SUFDaEIseUJBQXlCO0lBQ3pCLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2Ysc0JBQXNCO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlSGFzaE9uRWxlbWVudHMgfSBmcm9tICdAc2N1cmUvc3RhcmtuZXQnO1xuaW1wb3J0IHsgRkVMVF9NQVgsIE1BU0tfMTI4LCBPWl9FVEhfQUNDT1VOVF9DTEFTU19IQVNILCBBRERSX0JPVU5ELCBDT05UUkFDVF9BRERSRVNTX1BSRUZJWCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLCBTdGFya25ldENhbGwsIFBhcnNlZFRyYW5zZmVyRGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBTdGFya25ldCBhZGRyZXNzIHRvIGNhbm9uaWNhbCBmb3JtOiAweCArIDY0IGhleCBjaGFycywgemVyby1wYWRkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhleCA9IGFkZHJlc3Muc3RhcnRzV2l0aCgnMHgnKSA/IGFkZHJlc3Muc2xpY2UoMikgOiBhZGRyZXNzO1xuICByZXR1cm4gJzB4JyArIGhleC5wYWRTdGFydCg2NCwgJzAnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFN0YXJrbmV0IGFkZHJlc3NlcyBhcmUgZmVsdDI1MiB2YWx1ZXMgcmVwcmVzZW50ZWQgYXMgMHgtcHJlZml4ZWQgaGV4LlxuICogVmFsaWQgcmFuZ2U6IDAgPCBhZGRyZXNzIDwgRkVMVF9NQVgsIHdpdGggMHggcHJlZml4IGFuZCBoZXggY2hhcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBhZGRyZXNzICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWFkZHJlc3MubWF0Y2goL14weFswLTlhLWZBLUZdezEsNjR9JC8pKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsID0gQmlnSW50KGFkZHJlc3MpO1xuICAgIHJldHVybiB2YWwgPiAwbiAmJiB2YWwgPCBGRUxUX01BWDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBzZWNwMjU2azEgcHVibGljIGtleSAoY29tcHJlc3NlZCAzMyBieXRlcyBvciB1bmNvbXByZXNzZWQgNjUgYnl0ZXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShrZXksICdoZXgnKTtcbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gMzMgJiYgKGJ1ZlswXSA9PT0gMHgwMiB8fCBidWZbMF0gPT09IDB4MDMpKSB7XG4gICAgICBlY2MucG9pbnRDb21wcmVzcyhidWYsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChidWYubGVuZ3RoID09PSA2NSAmJiBidWZbMF0gPT09IDB4MDQpIHtcbiAgICAgIGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHNlY3AyNTZrMSBwcml2YXRlIGtleSAoMzIgYnl0ZXMgaGV4KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gL15bMC05YS1mQS1GXXs2NH0kLy50ZXN0KGtleSk7XG59XG5cbi8qKlxuICogR2V0IHVuY29tcHJlc3NlZCBwdWJsaWMga2V5ICh4IHx8IHksIDEyOCBoZXggY2hhcnMsIG5vIDA0IHByZWZpeCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmNvbXByZXNzZWRQdWJsaWNLZXkoY29tcHJlc3NlZEhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oY29tcHJlc3NlZEhleCwgJ2hleCcpO1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gNjUgJiYgYnVmWzBdID09PSAweDA0KSB7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRIZXguc2xpY2UoMik7XG4gIH1cbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDMzICYmIChidWZbMF0gPT09IDB4MDIgfHwgYnVmWzBdID09PSAweDAzKSkge1xuICAgIGNvbnN0IHVuY29tcHJlc3NlZCA9IEJ1ZmZlci5mcm9tKGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgZmFsc2UpKTtcbiAgICByZXR1cm4gdW5jb21wcmVzc2VkLnRvU3RyaW5nKCdoZXgnKS5zbGljZSgyKTtcbiAgfVxuICBpZiAoYnVmLmxlbmd0aCA9PT0gNjQpIHtcbiAgICByZXR1cm4gY29tcHJlc3NlZEhleDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHVibGljIGtleSBmb3JtYXQ6ICR7Y29tcHJlc3NlZEhleC5zdWJzdHJpbmcoMCwgMTApfS4uLmApO1xufVxuXG4vKipcbiAqIENvbXBpbGUgRXRoQWNjb3VudCBjb25zdHJ1Y3RvciBjYWxsZGF0YSBmcm9tIGZ1bGwgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gKiBSZXR1cm5zIFt4X2xvdywgeF9oaWdoLCB5X2xvdywgeV9oaWdoXSBhcyBmZWx0MjUyIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEoZnVsbFB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwdWJYID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDAsIDY0KSk7XG4gIGNvbnN0IHB1YlkgPSBCaWdJbnQoJzB4JyArIGZ1bGxQdWJsaWNLZXkuc2xpY2UoNjQpKTtcblxuICByZXR1cm4gW1xuICAgICcweCcgKyAocHViWCAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChwdWJYID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHB1YlkgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAocHViWSA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gIF07XG59XG5cbi8qKlxuICogQ29tcHV0ZSBTdGFya25ldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaGFzaCBjb21wb25lbnRzLlxuICogUmVwbGljYXRlcyBzdGFya25ldC5qcyBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaCB1c2luZyBAc2N1cmUvc3RhcmtuZXQgcGVkZXJzZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaChcbiAgc2FsdDogc3RyaW5nLFxuICBjbGFzc0hhc2g6IHN0cmluZyxcbiAgY29uc3RydWN0b3JDYWxsZGF0YTogc3RyaW5nW10sXG4gIGRlcGxveWVyQWRkcmVzczogbnVtYmVyIHwgYmlnaW50XG4pOiBzdHJpbmcge1xuICBjb25zdCBjYWxsZGF0YUhhc2ggPSBjb21wdXRlSGFzaE9uRWxlbWVudHMoY29uc3RydWN0b3JDYWxsZGF0YS5tYXAoQmlnSW50KSkgYXMgc3RyaW5nO1xuICBjb25zdCByYXdIYXNoID0gY29tcHV0ZUhhc2hPbkVsZW1lbnRzKFtcbiAgICBDT05UUkFDVF9BRERSRVNTX1BSRUZJWCxcbiAgICBCaWdJbnQoZGVwbG95ZXJBZGRyZXNzKSxcbiAgICBCaWdJbnQoc2FsdCksXG4gICAgQmlnSW50KGNsYXNzSGFzaCksXG4gICAgQmlnSW50KGNhbGxkYXRhSGFzaCksXG4gIF0pIGFzIHN0cmluZztcbiAgcmV0dXJuIG5vcm1hbGl6ZUFkZHJlc3MoJzB4JyArIChCaWdJbnQocmF3SGFzaCkgJSBBRERSX0JPVU5EKS50b1N0cmluZygxNikpO1xufVxuXG4vKipcbiAqIENvbXB1dGUgU3RhcmtuZXQgRXRoQWNjb3VudCBjb3VudGVyZmFjdHVhbCBhZGRyZXNzIGZyb20gcHVibGljIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleTogc3RyaW5nKToge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yQ2FsbGRhdGE6IHN0cmluZ1tdO1xuICBzYWx0OiBzdHJpbmc7XG59IHtcbiAgY29uc3QgY29uc3RydWN0b3JDYWxsZGF0YSA9IGNvbXBpbGVFdGhBY2NvdW50Q29uc3RydWN0b3JDYWxsZGF0YShmdWxsUHVibGljS2V5KTtcblxuICBjb25zdCBwdWJYID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDAsIDY0KSk7XG4gIGNvbnN0IHNhbHQgPSAnMHgnICsgKHB1YlggJSBGRUxUX01BWCkudG9TdHJpbmcoMTYpO1xuXG4gIGNvbnN0IGFkZHJlc3MgPSBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaChzYWx0LCBPWl9FVEhfQUNDT1VOVF9DTEFTU19IQVNILCBjb25zdHJ1Y3RvckNhbGxkYXRhLCAwKTtcblxuICByZXR1cm4geyBhZGRyZXNzLCBjb25zdHJ1Y3RvckNhbGxkYXRhLCBzYWx0IH07XG59XG5cbi8qKlxuICogRGVyaXZlIFN0YXJrbmV0IEV0aEFjY291bnQgYWRkcmVzcyBmcm9tIGNvbXByZXNzZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShjb21wcmVzc2VkUHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmdWxsUHVibGljS2V5ID0gZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5KGNvbXByZXNzZWRQdWJsaWNLZXkpO1xuICBjb25zdCB7IGFkZHJlc3MgfSA9IGNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleSk7XG4gIHJldHVybiBhZGRyZXNzO1xufVxuXG4vKipcbiAqIEZvcm1hdCBFQ0RTQSBzaWduYXR1cmUgZm9yIFN0YXJrbmV0IEV0aEFjY291bnQuXG4gKiBSZXR1cm5zIFtyX2xvdywgcl9oaWdoLCBzX2xvdywgc19oaWdoLCB2XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEV0aEFjY291bnRTaWduYXR1cmUocjogc3RyaW5nLCBzOiBzdHJpbmcsIHJlY2lkOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJCaWcgPSBCaWdJbnQoJzB4JyArIHIpO1xuICBjb25zdCBzQmlnID0gQmlnSW50KCcweCcgKyBzKTtcbiAgY29uc3QgdiA9IEJpZ0ludChyZWNpZCk7XG5cbiAgcmV0dXJuIFtcbiAgICAnMHgnICsgKHJCaWcgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAockJpZyA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChzQmlnICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHNCaWcgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyB2LnRvU3RyaW5nKDE2KSxcbiAgXTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJlY2lwaWVudCwgYW1vdW50LCBhbmQgdG9rZW4gY29udHJhY3QgZnJvbSBhIHRyYW5zZmVyIGNhbGwuXG4gKiBSZXZlcnNlIG9mIFRyYW5zZmVyQnVpbGRlci5jb21waWxlVHJhbnNmZXJDYWxsZGF0YTogY2FsbGRhdGEgPSBbcmVjaXBpZW50LCBhbW91bnRfbG93LCBhbW91bnRfaGlnaF0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyYW5zZmVyQ2FsbChjYWxsOiBTdGFya25ldENhbGwpOiBQYXJzZWRUcmFuc2ZlckRhdGEgfCB1bmRlZmluZWQge1xuICBpZiAoY2FsbC5lbnRyeXBvaW50ICE9PSAndHJhbnNmZXInIHx8IGNhbGwuY2FsbGRhdGEubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgYW1vdW50TG93ID0gQmlnSW50KGNhbGwuY2FsbGRhdGFbMV0pO1xuICBjb25zdCBhbW91bnRIaWdoID0gQmlnSW50KGNhbGwuY2FsbGRhdGFbMl0pO1xuICBjb25zdCBhbW91bnQgPSAoKGFtb3VudEhpZ2ggPDwgMTI4bikgfCBhbW91bnRMb3cpLnRvU3RyaW5nKCk7XG4gIHJldHVybiB7XG4gICAgcmVjaXBpZW50OiBjYWxsLmNhbGxkYXRhWzBdLFxuICAgIGFtb3VudCxcbiAgICB0b2tlbkNvbnRyYWN0OiBjYWxsLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG5ldyBzZWNwMjU2azEga2V5IHBhaXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IHsgcHViOiBzdHJpbmc7IHBydjogc3RyaW5nIH0ge1xuICBjb25zdCB7IEtleVBhaXI6IFN0YXJrbmV0S2V5UGFpciB9ID0gcmVxdWlyZSgnLi9rZXlQYWlyJyk7XG4gIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IFN0YXJrbmV0S2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgU3RhcmtuZXRLZXlQYWlyKCk7XG4gIGNvbnN0IHsgcHViLCBwcnYgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICBpZiAoIXBydikge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpdmF0ZSBrZXkgaXMgbWlzc2luZyBpbiB0aGUgZ2VuZXJhdGVkIGtleSBwYWlyLicpO1xuICB9XG4gIHJldHVybiB7IHB1YiwgcHJ2IH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgcmF3IHRyYW5zYWN0aW9uIGRhdGEgaGFzIHJlcXVpcmVkIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odHg6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhKTogdm9pZCB7XG4gIGlmICghdHguc2VuZGVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBzZW5kZXIgYWRkcmVzcycpO1xuICB9XG4gIGlmICghaXNWYWxpZEFkZHJlc3ModHguc2VuZGVyQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VuZGVyIGFkZHJlc3M6ICR7dHguc2VuZGVyQWRkcmVzc31gKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzVmFsaWRBZGRyZXNzLFxuICBpc1ZhbGlkUHVibGljS2V5LFxuICBpc1ZhbGlkUHJpdmF0ZUtleSxcbiAgZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5LFxuICBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEsXG4gIGNhbGN1bGF0ZUNvbnRyYWN0QWRkcmVzc0Zyb21IYXNoLFxuICBjb21wdXRlU3RhcmtuZXRBZGRyZXNzLFxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleSxcbiAgbm9ybWFsaXplQWRkcmVzcyxcbiAgZm9ybWF0RXRoQWNjb3VudFNpZ25hdHVyZSxcbiAgcGFyc2VUcmFuc2ZlckNhbGwsXG4gIGdlbmVyYXRlS2V5UGFpcixcbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbixcbn07XG4iXX0=
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMkJBLDRDQUdDO0FBTUQsd0NBU0M7QUFLRCw0Q0FnQkM7QUFLRCw4Q0FHQztBQUtELDREQWFDO0FBTUQsb0ZBVUM7QUFNRCw0RUFlQztBQUtELHdEQWFDO0FBS0QsMERBSUM7QUFNRCw4REFZQztBQU1ELDhDQVlDO0FBS0QsMENBUUM7QUFLRCx3REFrQkM7QUFLRCw4Q0FlQztBQU1ELGtEQUVDO0FBTUQsd0RBVUM7QUFTRCx3RUErQ0M7QUFLRCxzRkE0Q0M7QUF6WEQsOENBQWtGO0FBQ2xGLDJDQVlxQjtBQUNyQixtQ0FPaUI7QUFDakIscURBQTRDO0FBRTVDOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM5QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEUsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsb0JBQVEsQ0FBQztJQUNwQyxDQUFD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QUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztLQUM1QixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBZ0IsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxrQkFBZTtJQUNiLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLHdCQUF3QjtJQUN4QixvQ0FBb0M7SUFDcEMsZ0NBQWdDO0lBQ2hDLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLHlCQUF5QjtJQUN6QixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0Qiw4QkFBOEI7SUFDOUIscUNBQXFDO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlSGFzaE9uRWxlbWVudHMsIHBvc2VpZG9uSGFzaE1hbnksIGtlY2NhayB9IGZyb20gJ0BzY3VyZS9zdGFya25ldCc7XG5pbXBvcnQge1xuICBGRUxUX01BWCxcbiAgTUFTS18xMjgsXG4gIE9aX0VUSF9BQ0NPVU5UX0NMQVNTX0hBU0gsXG4gIEFERFJfQk9VTkQsXG4gIENPTlRSQUNUX0FERFJFU1NfUFJFRklYLFxuICBJTlZPS0VfVFhfUFJFRklYLFxuICBERVBMT1lfQUNDT1VOVF9UWF9QUkVGSVgsXG4gIFRSQU5TQUNUSU9OX1ZFUlNJT05fMyxcbiAgTDFfR0FTX05BTUUsXG4gIEwyX0dBU19OQU1FLFxuICBMMV9EQVRBX0dBU19OQU1FLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBTdGFya25ldFRyYW5zYWN0aW9uRGF0YSxcbiAgU3RhcmtuZXRUcmFuc2FjdGlvblR5cGUsXG4gIFN0YXJrbmV0Q2FsbCxcbiAgUGFyc2VkVHJhbnNmZXJEYXRhLFxuICBJbnZva2VUcmFuc2FjdGlvbkhhc2hQYXJhbXMsXG4gIERlcGxveUFjY291bnRUcmFuc2FjdGlvbkhhc2hQYXJhbXMsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZWNjIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBTdGFya25ldCBhZGRyZXNzIHRvIGNhbm9uaWNhbCBmb3JtOiAweCArIDY0IGhleCBjaGFycywgemVyby1wYWRkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhleCA9IGFkZHJlc3Muc3RhcnRzV2l0aCgnMHgnKSA/IGFkZHJlc3Muc2xpY2UoMikgOiBhZGRyZXNzO1xuICByZXR1cm4gJzB4JyArIGhleC5wYWRTdGFydCg2NCwgJzAnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFN0YXJrbmV0IGFkZHJlc3NlcyBhcmUgZmVsdDI1MiB2YWx1ZXMgcmVwcmVzZW50ZWQgYXMgMHgtcHJlZml4ZWQgaGV4LlxuICogVmFsaWQgcmFuZ2U6IDAgPCBhZGRyZXNzIDwgRkVMVF9NQVgsIHdpdGggMHggcHJlZml4IGFuZCBoZXggY2hhcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBhZGRyZXNzICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWFkZHJlc3MubWF0Y2goL14weFswLTlhLWZBLUZdezEsNjR9JC8pKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsID0gQmlnSW50KGFkZHJlc3MpO1xuICAgIHJldHVybiB2YWwgPiAwbiAmJiB2YWwgPCBGRUxUX01BWDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSBzZWNwMjU2azEgcHVibGljIGtleSAoY29tcHJlc3NlZCAzMyBieXRlcyBvciB1bmNvbXByZXNzZWQgNjUgYnl0ZXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShrZXksICdoZXgnKTtcbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gMzMgJiYgKGJ1ZlswXSA9PT0gMHgwMiB8fCBidWZbMF0gPT09IDB4MDMpKSB7XG4gICAgICBlY2MucG9pbnRDb21wcmVzcyhidWYsIHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChidWYubGVuZ3RoID09PSA2NSAmJiBidWZbMF0gPT09IDB4MDQpIHtcbiAgICAgIGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgdHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHNlY3AyNTZrMSBwcml2YXRlIGtleSAoMzIgYnl0ZXMgaGV4KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gL15bMC05YS1mQS1GXXs2NH0kLy50ZXN0KGtleSk7XG59XG5cbi8qKlxuICogR2V0IHVuY29tcHJlc3NlZCBwdWJsaWMga2V5ICh4IHx8IHksIDEyOCBoZXggY2hhcnMsIG5vIDA0IHByZWZpeCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmNvbXByZXNzZWRQdWJsaWNLZXkoY29tcHJlc3NlZEhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oY29tcHJlc3NlZEhleCwgJ2hleCcpO1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gNjUgJiYgYnVmWzBdID09PSAweDA0KSB7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRIZXguc2xpY2UoMik7XG4gIH1cbiAgaWYgKGJ1Zi5sZW5ndGggPT09IDMzICYmIChidWZbMF0gPT09IDB4MDIgfHwgYnVmWzBdID09PSAweDAzKSkge1xuICAgIGNvbnN0IHVuY29tcHJlc3NlZCA9IEJ1ZmZlci5mcm9tKGVjYy5wb2ludENvbXByZXNzKGJ1ZiwgZmFsc2UpKTtcbiAgICByZXR1cm4gdW5jb21wcmVzc2VkLnRvU3RyaW5nKCdoZXgnKS5zbGljZSgyKTtcbiAgfVxuICBpZiAoYnVmLmxlbmd0aCA9PT0gNjQpIHtcbiAgICByZXR1cm4gY29tcHJlc3NlZEhleDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHVibGljIGtleSBmb3JtYXQ6ICR7Y29tcHJlc3NlZEhleC5zdWJzdHJpbmcoMCwgMTApfS4uLmApO1xufVxuXG4vKipcbiAqIENvbXBpbGUgRXRoQWNjb3VudCBjb25zdHJ1Y3RvciBjYWxsZGF0YSBmcm9tIGZ1bGwgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gKiBSZXR1cm5zIFt4X2xvdywgeF9oaWdoLCB5X2xvdywgeV9oaWdoXSBhcyBmZWx0MjUyIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlRXRoQWNjb3VudENvbnN0cnVjdG9yQ2FsbGRhdGEoZnVsbFB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwdWJYID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDAsIDY0KSk7XG4gIGNvbnN0IHB1YlkgPSBCaWdJbnQoJzB4JyArIGZ1bGxQdWJsaWNLZXkuc2xpY2UoNjQpKTtcblxuICByZXR1cm4gW1xuICAgICcweCcgKyAocHViWCAmIE1BU0tfMTI4KS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChwdWJYID4+IDEyOG4pLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHB1YlkgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAocHViWSA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gIF07XG59XG5cbi8qKlxuICogQ29tcHV0ZSBTdGFya25ldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaGFzaCBjb21wb25lbnRzLlxuICogUmVwbGljYXRlcyBzdGFya25ldC5qcyBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaCB1c2luZyBAc2N1cmUvc3RhcmtuZXQgcGVkZXJzZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaChcbiAgc2FsdDogc3RyaW5nLFxuICBjbGFzc0hhc2g6IHN0cmluZyxcbiAgY29uc3RydWN0b3JDYWxsZGF0YTogc3RyaW5nW10sXG4gIGRlcGxveWVyQWRkcmVzczogbnVtYmVyIHwgYmlnaW50XG4pOiBzdHJpbmcge1xuICBjb25zdCBjYWxsZGF0YUhhc2ggPSBjb21wdXRlSGFzaE9uRWxlbWVudHMoY29uc3RydWN0b3JDYWxsZGF0YS5tYXAoQmlnSW50KSkgYXMgc3RyaW5nO1xuICBjb25zdCByYXdIYXNoID0gY29tcHV0ZUhhc2hPbkVsZW1lbnRzKFtcbiAgICBDT05UUkFDVF9BRERSRVNTX1BSRUZJWCxcbiAgICBCaWdJbnQoZGVwbG95ZXJBZGRyZXNzKSxcbiAgICBCaWdJbnQoc2FsdCksXG4gICAgQmlnSW50KGNsYXNzSGFzaCksXG4gICAgQmlnSW50KGNhbGxkYXRhSGFzaCksXG4gIF0pIGFzIHN0cmluZztcbiAgcmV0dXJuIG5vcm1hbGl6ZUFkZHJlc3MoJzB4JyArIChCaWdJbnQocmF3SGFzaCkgJSBBRERSX0JPVU5EKS50b1N0cmluZygxNikpO1xufVxuXG4vKipcbiAqIENvbXB1dGUgU3RhcmtuZXQgRXRoQWNjb3VudCBjb3VudGVyZmFjdHVhbCBhZGRyZXNzIGZyb20gcHVibGljIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleTogc3RyaW5nKToge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yQ2FsbGRhdGE6IHN0cmluZ1tdO1xuICBzYWx0OiBzdHJpbmc7XG59IHtcbiAgY29uc3QgY29uc3RydWN0b3JDYWxsZGF0YSA9IGNvbXBpbGVFdGhBY2NvdW50Q29uc3RydWN0b3JDYWxsZGF0YShmdWxsUHVibGljS2V5KTtcblxuICBjb25zdCBwdWJYID0gQmlnSW50KCcweCcgKyBmdWxsUHVibGljS2V5LnNsaWNlKDAsIDY0KSk7XG4gIGNvbnN0IHNhbHQgPSAnMHgnICsgKHB1YlggJSBGRUxUX01BWCkudG9TdHJpbmcoMTYpO1xuXG4gIGNvbnN0IGFkZHJlc3MgPSBjYWxjdWxhdGVDb250cmFjdEFkZHJlc3NGcm9tSGFzaChzYWx0LCBPWl9FVEhfQUNDT1VOVF9DTEFTU19IQVNILCBjb25zdHJ1Y3RvckNhbGxkYXRhLCAwKTtcblxuICByZXR1cm4geyBhZGRyZXNzLCBjb25zdHJ1Y3RvckNhbGxkYXRhLCBzYWx0IH07XG59XG5cbi8qKlxuICogRGVyaXZlIFN0YXJrbmV0IEV0aEFjY291bnQgYWRkcmVzcyBmcm9tIGNvbXByZXNzZWQgc2VjcDI1NmsxIHB1YmxpYyBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShjb21wcmVzc2VkUHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmdWxsUHVibGljS2V5ID0gZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5KGNvbXByZXNzZWRQdWJsaWNLZXkpO1xuICBjb25zdCB7IGFkZHJlc3MgfSA9IGNvbXB1dGVTdGFya25ldEFkZHJlc3MoZnVsbFB1YmxpY0tleSk7XG4gIHJldHVybiBhZGRyZXNzO1xufVxuXG4vKipcbiAqIEZvcm1hdCBFQ0RTQSBzaWduYXR1cmUgZm9yIFN0YXJrbmV0IEV0aEFjY291bnQuXG4gKiBSZXR1cm5zIFtyX2xvdywgcl9oaWdoLCBzX2xvdywgc19oaWdoLCB2XS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEV0aEFjY291bnRTaWduYXR1cmUocjogc3RyaW5nLCBzOiBzdHJpbmcsIHJlY2lkOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJCaWcgPSBCaWdJbnQoJzB4JyArIHIpO1xuICBjb25zdCBzQmlnID0gQmlnSW50KCcweCcgKyBzKTtcbiAgY29uc3QgdiA9IEJpZ0ludChyZWNpZCk7XG5cbiAgcmV0dXJuIFtcbiAgICAnMHgnICsgKHJCaWcgJiBNQVNLXzEyOCkudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyAockJpZyA+PiAxMjhuKS50b1N0cmluZygxNiksXG4gICAgJzB4JyArIChzQmlnICYgTUFTS18xMjgpLnRvU3RyaW5nKDE2KSxcbiAgICAnMHgnICsgKHNCaWcgPj4gMTI4bikudG9TdHJpbmcoMTYpLFxuICAgICcweCcgKyB2LnRvU3RyaW5nKDE2KSxcbiAgXTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJlY2lwaWVudCwgYW1vdW50LCBhbmQgdG9rZW4gY29udHJhY3QgZnJvbSBhIHRyYW5zZmVyIGNhbGwuXG4gKiBSZXZlcnNlIG9mIFRyYW5zZmVyQnVpbGRlci5jb21waWxlVHJhbnNmZXJDYWxsZGF0YTogY2FsbGRhdGEgPSBbcmVjaXBpZW50LCBhbW91bnRfbG93LCBhbW91bnRfaGlnaF0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyYW5zZmVyQ2FsbChjYWxsOiBTdGFya25ldENhbGwpOiBQYXJzZWRUcmFuc2ZlckRhdGEgfCB1bmRlZmluZWQge1xuICBpZiAoY2FsbC5lbnRyeXBvaW50ICE9PSAndHJhbnNmZXInIHx8IGNhbGwuY2FsbGRhdGEubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgYW1vdW50TG93ID0gQmlnSW50KGNhbGwuY2FsbGRhdGFbMV0pO1xuICBjb25zdCBhbW91bnRIaWdoID0gQmlnSW50KGNhbGwuY2FsbGRhdGFbMl0pO1xuICBjb25zdCBhbW91bnQgPSAoKGFtb3VudEhpZ2ggPDwgMTI4bikgfCBhbW91bnRMb3cpLnRvU3RyaW5nKCk7XG4gIHJldHVybiB7XG4gICAgcmVjaXBpZW50OiBjYWxsLmNhbGxkYXRhWzBdLFxuICAgIGFtb3VudCxcbiAgICB0b2tlbkNvbnRyYWN0OiBjYWxsLmNvbnRyYWN0QWRkcmVzcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIG5ldyBzZWNwMjU2azEga2V5IHBhaXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IHsgcHViOiBzdHJpbmc7IHBydjogc3RyaW5nIH0ge1xuICBjb25zdCB7IEtleVBhaXI6IFN0YXJrbmV0S2V5UGFpciB9ID0gcmVxdWlyZSgnLi9rZXlQYWlyJyk7XG4gIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IFN0YXJrbmV0S2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgU3RhcmtuZXRLZXlQYWlyKCk7XG4gIGNvbnN0IHsgcHViLCBwcnYgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICBpZiAoIXBydikge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpdmF0ZSBrZXkgaXMgbWlzc2luZyBpbiB0aGUgZ2VuZXJhdGVkIGtleSBwYWlyLicpO1xuICB9XG4gIHJldHVybiB7IHB1YiwgcHJ2IH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgcmF3IHRyYW5zYWN0aW9uIGRhdGEgaGFzIHJlcXVpcmVkIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24odHg6IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhKTogdm9pZCB7XG4gIGlmICghdHguc2VuZGVyQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBzZW5kZXIgYWRkcmVzcycpO1xuICB9XG4gIGlmICghaXNWYWxpZEFkZHJlc3ModHguc2VuZGVyQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VuZGVyIGFkZHJlc3M6ICR7dHguc2VuZGVyQWRkcmVzc31gKTtcbiAgfVxuICBpZiAodHgudHJhbnNhY3Rpb25UeXBlID09PSBTdGFya25ldFRyYW5zYWN0aW9uVHlwZS5ERVBMT1lfQUNDT1VOVCkge1xuICAgIGlmICghdHguY2xhc3NIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgY2xhc3MgaGFzaCBmb3IgZGVwbG95IGFjY291bnQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0eC5jb25zdHJ1Y3RvckNhbGxkYXRhIHx8IHR4LmNvbnN0cnVjdG9yQ2FsbGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgY29uc3RydWN0b3IgY2FsbGRhdGEgZm9yIGRlcGxveSBhY2NvdW50IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdHguY29udHJhY3RBZGRyZXNzU2FsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNvbnRyYWN0IGFkZHJlc3Mgc2FsdCBmb3IgZGVwbG95IGFjY291bnQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFbmNvZGUgYW4gQVNDSUkgc3RyaW5nIChtYXggMzEgY2hhcnMpIGFzIGEgZmVsdDI1Mi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVNob3J0U3RyaW5nKHN0cjogc3RyaW5nKTogYmlnaW50IHtcbiAgaWYgKHN0ci5sZW5ndGggPiAzMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2hvcnQgc3RyaW5nIHRvbyBsb25nOiAke3N0ci5sZW5ndGh9ID4gMzFgKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA+IDEyNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb24tQVNDSUkgY2hhcmFjdGVyIGF0IGluZGV4ICR7aX06IGNvZGUgJHtjb2RlfWApO1xuICAgIH1cbiAgfVxuICBsZXQgcmVzdWx0ID0gMG47XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzdWx0ID0gKHJlc3VsdCA8PCA4bikgfCBCaWdJbnQoc3RyLmNoYXJDb2RlQXQoaSkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgU3RhcmtuZXQgZnVuY3Rpb24gc2VsZWN0b3I6IGtlY2NhazI1NihuYW1lKSBtYXNrZWQgdG8gMjUwIGJpdHMuXG4gKiBAc2N1cmUvc3RhcmtuZXQncyBrZWNjYWsoKSBhbHJlYWR5IGFwcGxpZXMgdGhlIDI1MC1iaXQgbWFzay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdG9yRnJvbU5hbWUobmFtZTogc3RyaW5nKTogYmlnaW50IHtcbiAgcmV0dXJuIGtlY2NhayhCdWZmZXIuZnJvbShuYW1lLCAnYXNjaWknKSk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBjYWxscyBpbnRvIHRoZSBDYWlybyAxIG11bHRpY2FsbCBfX2V4ZWN1dGVfXyBjYWxsZGF0YSBmb3JtYXQuXG4gKiBGb3JtYXQ6IFtudW1fY2FsbHMsIHRvXzAsIHNlbGVjdG9yXzAsIGRhdGFfbGVuXzAsIC4uLmRhdGFfMCwgdG9fMSwgLi4uXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZUV4ZWN1dGVDYWxsZGF0YShjYWxsczogU3RhcmtuZXRDYWxsW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgcmVzdWx0LnB1c2goJzB4JyArIEJpZ0ludChjYWxscy5sZW5ndGgpLnRvU3RyaW5nKDE2KSk7XG4gIGZvciAoY29uc3QgY2FsbCBvZiBjYWxscykge1xuICAgIHJlc3VsdC5wdXNoKGNhbGwuY29udHJhY3RBZGRyZXNzKTtcbiAgICByZXN1bHQucHVzaCgnMHgnICsgZ2V0U2VsZWN0b3JGcm9tTmFtZShjYWxsLmVudHJ5cG9pbnQpLnRvU3RyaW5nKDE2KSk7XG4gICAgcmVzdWx0LnB1c2goJzB4JyArIEJpZ0ludChjYWxsLmNhbGxkYXRhLmxlbmd0aCkudG9TdHJpbmcoMTYpKTtcbiAgICByZXN1bHQucHVzaCguLi5jYWxsLmNhbGxkYXRhKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVSZXNvdXJjZUJvdW5kKHR5cGVOYW1lOiBiaWdpbnQsIG1heEFtb3VudDogc3RyaW5nLCBtYXhQcmljZVBlclVuaXQ6IHN0cmluZyk6IGJpZ2ludCB7XG4gIHJldHVybiAodHlwZU5hbWUgPDwgMTkybikgfCAoQmlnSW50KG1heEFtb3VudCkgPDwgMTI4bikgfCBCaWdJbnQobWF4UHJpY2VQZXJVbml0KTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBQb3NlaWRvbiBWMyBJTlZPS0UgdHJhbnNhY3Rpb24gaGFzaCBwZXIgU05JUC04LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlSW52b2tlVHJhbnNhY3Rpb25IYXNoKHBhcmFtczogSW52b2tlVHJhbnNhY3Rpb25IYXNoUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIHNlbmRlckFkZHJlc3MsXG4gICAgY29tcGlsZWRDYWxsZGF0YSxcbiAgICBjaGFpbklkLFxuICAgIG5vbmNlLFxuICAgIHJlc291cmNlQm91bmRzLFxuICAgIHRpcCA9ICcweDAnLFxuICAgIG5vbmNlRGF0YUF2YWlsYWJpbGl0eU1vZGUgPSAwLFxuICAgIGZlZURhdGFBdmFpbGFiaWxpdHlNb2RlID0gMCxcbiAgICBwYXltYXN0ZXJEYXRhID0gW10sXG4gICAgYWNjb3VudERlcGxveW1lbnREYXRhID0gW10sXG4gICAgcHJvb2ZGYWN0cyxcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBmZWVGaWVsZEhhc2ggPSBwb3NlaWRvbkhhc2hNYW55KFtcbiAgICBCaWdJbnQodGlwKSxcbiAgICBlbmNvZGVSZXNvdXJjZUJvdW5kKEwxX0dBU19OQU1FLCByZXNvdXJjZUJvdW5kcy5sMV9nYXMubWF4X2Ftb3VudCwgcmVzb3VyY2VCb3VuZHMubDFfZ2FzLm1heF9wcmljZV9wZXJfdW5pdCksXG4gICAgZW5jb2RlUmVzb3VyY2VCb3VuZChMMl9HQVNfTkFNRSwgcmVzb3VyY2VCb3VuZHMubDJfZ2FzLm1heF9hbW91bnQsIHJlc291cmNlQm91bmRzLmwyX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXQpLFxuICAgIGVuY29kZVJlc291cmNlQm91bmQoXG4gICAgICBMMV9EQVRBX0dBU19OQU1FLFxuICAgICAgcmVzb3VyY2VCb3VuZHMubDFfZGF0YV9nYXMubWF4X2Ftb3VudCxcbiAgICAgIHJlc291cmNlQm91bmRzLmwxX2RhdGFfZ2FzLm1heF9wcmljZV9wZXJfdW5pdFxuICAgICksXG4gIF0pO1xuXG4gIGNvbnN0IGRhTW9kZSA9IChCaWdJbnQobm9uY2VEYXRhQXZhaWxhYmlsaXR5TW9kZSkgPDwgMzJuKSB8IEJpZ0ludChmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZSk7XG5cbiAgY29uc3QgaGFzaEZpZWxkczogYmlnaW50W10gPSBbXG4gICAgSU5WT0tFX1RYX1BSRUZJWCxcbiAgICBUUkFOU0FDVElPTl9WRVJTSU9OXzMsXG4gICAgQmlnSW50KHNlbmRlckFkZHJlc3MpLFxuICAgIGZlZUZpZWxkSGFzaCxcbiAgICBwb3NlaWRvbkhhc2hNYW55KHBheW1hc3RlckRhdGEubWFwKEJpZ0ludCkpLFxuICAgIEJpZ0ludChjaGFpbklkKSxcbiAgICBCaWdJbnQobm9uY2UpLFxuICAgIGRhTW9kZSxcbiAgICBwb3NlaWRvbkhhc2hNYW55KGFjY291bnREZXBsb3ltZW50RGF0YS5tYXAoQmlnSW50KSksXG4gICAgcG9zZWlkb25IYXNoTWFueShjb21waWxlZENhbGxkYXRhLm1hcChCaWdJbnQpKSxcbiAgXTtcblxuICBpZiAocHJvb2ZGYWN0cyAmJiBwcm9vZkZhY3RzLmxlbmd0aCA+IDApIHtcbiAgICBoYXNoRmllbGRzLnB1c2gocG9zZWlkb25IYXNoTWFueShwcm9vZkZhY3RzLm1hcChCaWdJbnQpKSk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gcG9zZWlkb25IYXNoTWFueShoYXNoRmllbGRzKTtcbiAgcmV0dXJuICcweCcgKyBoYXNoLnRvU3RyaW5nKDE2KTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBQb3NlaWRvbiBWMyBERVBMT1lfQUNDT1VOVCB0cmFuc2FjdGlvbiBoYXNoIHBlciBTTklQLTggKHN0YXJrbmV0LmpzIHYzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZURlcGxveUFjY291bnRUcmFuc2FjdGlvbkhhc2gocGFyYW1zOiBEZXBsb3lBY2NvdW50VHJhbnNhY3Rpb25IYXNoUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGNvbnRyYWN0QWRkcmVzcyxcbiAgICBjbGFzc0hhc2gsXG4gICAgY29uc3RydWN0b3JDYWxsZGF0YSxcbiAgICBjb250cmFjdEFkZHJlc3NTYWx0LFxuICAgIGNoYWluSWQsXG4gICAgbm9uY2UsXG4gICAgcmVzb3VyY2VCb3VuZHMsXG4gICAgdGlwID0gJzB4MCcsXG4gICAgbm9uY2VEYXRhQXZhaWxhYmlsaXR5TW9kZSA9IDAsXG4gICAgZmVlRGF0YUF2YWlsYWJpbGl0eU1vZGUgPSAwLFxuICAgIHBheW1hc3RlckRhdGEgPSBbXSxcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBmZWVGaWVsZEhhc2ggPSBwb3NlaWRvbkhhc2hNYW55KFtcbiAgICBCaWdJbnQodGlwKSxcbiAgICBlbmNvZGVSZXNvdXJjZUJvdW5kKEwxX0dBU19OQU1FLCByZXNvdXJjZUJvdW5kcy5sMV9nYXMubWF4X2Ftb3VudCwgcmVzb3VyY2VCb3VuZHMubDFfZ2FzLm1heF9wcmljZV9wZXJfdW5pdCksXG4gICAgZW5jb2RlUmVzb3VyY2VCb3VuZChMMl9HQVNfTkFNRSwgcmVzb3VyY2VCb3VuZHMubDJfZ2FzLm1heF9hbW91bnQsIHJlc291cmNlQm91bmRzLmwyX2dhcy5tYXhfcHJpY2VfcGVyX3VuaXQpLFxuICAgIGVuY29kZVJlc291cmNlQm91bmQoXG4gICAgICBMMV9EQVRBX0dBU19OQU1FLFxuICAgICAgcmVzb3VyY2VCb3VuZHMubDFfZGF0YV9nYXMubWF4X2Ftb3VudCxcbiAgICAgIHJlc291cmNlQm91bmRzLmwxX2RhdGFfZ2FzLm1heF9wcmljZV9wZXJfdW5pdFxuICAgICksXG4gIF0pO1xuXG4gIGNvbnN0IGRhTW9kZSA9IChCaWdJbnQobm9uY2VEYXRhQXZhaWxhYmlsaXR5TW9kZSkgPDwgMzJuKSB8IEJpZ0ludChmZWVEYXRhQXZhaWxhYmlsaXR5TW9kZSk7XG5cbiAgY29uc3QgaGFzaEZpZWxkczogYmlnaW50W10gPSBbXG4gICAgREVQTE9ZX0FDQ09VTlRfVFhfUFJFRklYLFxuICAgIFRSQU5TQUNUSU9OX1ZFUlNJT05fMyxcbiAgICBCaWdJbnQoY29udHJhY3RBZGRyZXNzKSxcbiAgICBmZWVGaWVsZEhhc2gsXG4gICAgcG9zZWlkb25IYXNoTWFueShwYXltYXN0ZXJEYXRhLm1hcChCaWdJbnQpKSxcbiAgICBCaWdJbnQoY2hhaW5JZCksXG4gICAgQmlnSW50KG5vbmNlKSxcbiAgICBkYU1vZGUsXG4gICAgcG9zZWlkb25IYXNoTWFueShjb25zdHJ1Y3RvckNhbGxkYXRhLm1hcChCaWdJbnQpKSxcbiAgICBCaWdJbnQoY2xhc3NIYXNoKSxcbiAgICBCaWdJbnQoY29udHJhY3RBZGRyZXNzU2FsdCksXG4gIF07XG5cbiAgY29uc3QgaGFzaCA9IHBvc2VpZG9uSGFzaE1hbnkoaGFzaEZpZWxkcyk7XG4gIHJldHVybiAnMHgnICsgaGFzaC50b1N0cmluZygxNik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaXNWYWxpZEFkZHJlc3MsXG4gIGlzVmFsaWRQdWJsaWNLZXksXG4gIGlzVmFsaWRQcml2YXRlS2V5LFxuICBnZXRVbmNvbXByZXNzZWRQdWJsaWNLZXksXG4gIGNvbXBpbGVFdGhBY2NvdW50Q29uc3RydWN0b3JDYWxsZGF0YSxcbiAgY2FsY3VsYXRlQ29udHJhY3RBZGRyZXNzRnJvbUhhc2gsXG4gIGNvbXB1dGVTdGFya25ldEFkZHJlc3MsXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5LFxuICBub3JtYWxpemVBZGRyZXNzLFxuICBmb3JtYXRFdGhBY2NvdW50U2lnbmF0dXJlLFxuICBwYXJzZVRyYW5zZmVyQ2FsbCxcbiAgZ2VuZXJhdGVLZXlQYWlyLFxuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uLFxuICBlbmNvZGVTaG9ydFN0cmluZyxcbiAgZ2V0U2VsZWN0b3JGcm9tTmFtZSxcbiAgY29tcGlsZUV4ZWN1dGVDYWxsZGF0YSxcbiAgY2FsY3VsYXRlSW52b2tlVHJhbnNhY3Rpb25IYXNoLFxuICBjYWxjdWxhdGVEZXBsb3lBY2NvdW50VHJhbnNhY3Rpb25IYXNoLFxufTtcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionBuilder } from './transactionBuilder';
3
+ import { Transaction } from './transaction';
4
+ import { StarknetTransactionType } from './iface';
5
+ /**
6
+ * Builds DEPLOY_ACCOUNT v3 transactions for counterfactual EthAccount activation.
7
+ */
8
+ export declare class WalletInitializationBuilder extends TransactionBuilder {
9
+ protected _classHash: string;
10
+ protected _constructorCalldata?: string[];
11
+ protected _contractAddressSalt?: string;
12
+ constructor(_coinConfig: Readonly<CoinConfig>);
13
+ protected get transactionType(): StarknetTransactionType;
14
+ /**
15
+ * Set deploy parameters from a secp256k1 public key (compressed or uncompressed).
16
+ * Derives counterfactual address, constructor calldata, and salt.
17
+ */
18
+ fromPublicKey(pubKey: string): this;
19
+ classHash(classHash: string): this;
20
+ /** @inheritdoc */
21
+ initBuilder(tx: Transaction): void;
22
+ /** @inheritdoc */
23
+ protected buildImplementation(): Promise<Transaction>;
24
+ private ensureDeployFields;
25
+ }
26
+ //# sourceMappingURL=walletInitializationBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/walletInitializationBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA2B,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAI3E;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,SAAS,CAAC,UAAU,EAAE,MAAM,CAA6B;IACzD,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1C,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,uBAAuB,CAEvD;IAED;;;OAGG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWnC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQzC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAclC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAuC3D,OAAO,CAAC,kBAAkB;CA4B3B"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WalletInitializationBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const iface_1 = require("./iface");
10
+ const constants_1 = require("./constants");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ /**
13
+ * Builds DEPLOY_ACCOUNT v3 transactions for counterfactual EthAccount activation.
14
+ */
15
+ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
16
+ constructor(_coinConfig) {
17
+ super(_coinConfig);
18
+ this._classHash = constants_1.OZ_ETH_ACCOUNT_CLASS_HASH;
19
+ }
20
+ get transactionType() {
21
+ return iface_1.StarknetTransactionType.DEPLOY_ACCOUNT;
22
+ }
23
+ /**
24
+ * Set deploy parameters from a secp256k1 public key (compressed or uncompressed).
25
+ * Derives counterfactual address, constructor calldata, and salt.
26
+ */
27
+ fromPublicKey(pubKey) {
28
+ if (!utils_1.default.isValidPublicKey(pubKey)) {
29
+ throw new sdk_core_1.BuildTransactionError('Invalid pubKey, got: ' + pubKey);
30
+ }
31
+ const fullPublicKey = utils_1.default.getUncompressedPublicKey(pubKey);
32
+ const { address, constructorCalldata, salt } = utils_1.default.computeStarknetAddress(fullPublicKey);
33
+ this._constructorCalldata = constructorCalldata;
34
+ this._contractAddressSalt = salt;
35
+ return this.sender(address, pubKey);
36
+ }
37
+ classHash(classHash) {
38
+ if (!classHash || !utils_1.default.isValidAddress(classHash)) {
39
+ throw new sdk_core_1.BuildTransactionError('Invalid class hash, got: ' + classHash);
40
+ }
41
+ this._classHash = classHash;
42
+ return this;
43
+ }
44
+ /** @inheritdoc */
45
+ initBuilder(tx) {
46
+ super.initBuilder(tx);
47
+ const data = tx.starknetTransactionData;
48
+ if (data.classHash) {
49
+ this._classHash = data.classHash;
50
+ }
51
+ if (data.constructorCalldata) {
52
+ this._constructorCalldata = data.constructorCalldata;
53
+ }
54
+ if (data.contractAddressSalt) {
55
+ this._contractAddressSalt = data.contractAddressSalt;
56
+ }
57
+ }
58
+ /** @inheritdoc */
59
+ async buildImplementation() {
60
+ this.ensureDeployFields();
61
+ const contractAddress = this._sender;
62
+ const chainId = this._chainId;
63
+ const nonce = this._nonce;
64
+ const constructorCalldata = this._constructorCalldata;
65
+ const contractAddressSalt = this._contractAddressSalt;
66
+ const transactionHash = utils_1.default.calculateDeployAccountTransactionHash({
67
+ contractAddress,
68
+ classHash: this._classHash,
69
+ constructorCalldata,
70
+ contractAddressSalt,
71
+ chainId,
72
+ nonce,
73
+ resourceBounds: this._resourceBounds,
74
+ tip: this._tip,
75
+ });
76
+ const data = {
77
+ senderAddress: contractAddress,
78
+ contractAddress,
79
+ calls: [],
80
+ nonce,
81
+ chainId,
82
+ transactionType: iface_1.StarknetTransactionType.DEPLOY_ACCOUNT,
83
+ resourceBounds: this._resourceBounds,
84
+ tip: this._tip,
85
+ transactionHash,
86
+ classHash: this._classHash,
87
+ constructorCalldata,
88
+ contractAddressSalt,
89
+ };
90
+ this._transaction.starknetTransactionData = data;
91
+ return this._transaction;
92
+ }
93
+ ensureDeployFields() {
94
+ if (!this._sender) {
95
+ throw new sdk_core_1.BuildTransactionError('Sender (counterfactual address) is required');
96
+ }
97
+ if (this._publicKey && (!this._constructorCalldata || !this._contractAddressSalt)) {
98
+ this.fromPublicKey(this._publicKey);
99
+ }
100
+ if (!this._constructorCalldata || !this._contractAddressSalt) {
101
+ throw new sdk_core_1.BuildTransactionError('Deploy account requires public key (fromPublicKey) or explicit constructor calldata and salt');
102
+ }
103
+ const fullPublicKey = this._publicKey ? utils_1.default.getUncompressedPublicKey(this._publicKey) : undefined;
104
+ if (fullPublicKey) {
105
+ const derived = utils_1.default.computeStarknetAddress(fullPublicKey);
106
+ if (utils_1.default.normalizeAddress(derived.address) !== utils_1.default.normalizeAddress(this._sender)) {
107
+ throw new sdk_core_1.BuildTransactionError(`Address does not match public key. Expected ${derived.address}, got ${this._sender}`);
108
+ }
109
+ if (derived.constructorCalldata.join(',') !== this._constructorCalldata.join(',') ||
110
+ derived.salt !== this._contractAddressSalt) {
111
+ throw new sdk_core_1.BuildTransactionError('Constructor calldata or salt does not match public key');
112
+ }
113
+ }
114
+ }
115
+ }
116
+ exports.WalletInitializationBuilder = WalletInitializationBuilder;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTZEO0FBRTdELDZEQUEwRDtBQUUxRCxtQ0FBMkU7QUFDM0UsMkNBQXdEO0FBQ3hELG9EQUE0QjtBQUU1Qjs7R0FFRztBQUNILE1BQWEsMkJBQTRCLFNBQVEsdUNBQWtCO0lBS2pFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTFgsZUFBVSxHQUFXLHFDQUF5QixDQUFDO0lBTXpELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywrQkFBdUIsQ0FBQyxjQUFjLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxHQUFHLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxTQUFTLENBQUMsU0FBaUI7UUFDaEMsSUFBSSxDQUFDLFNBQVMs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cUIsQ0FDN0IsOEZBQThGLENBQy9GLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVELElBQUksZUFBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IsK0NBQStDLE9BQU8sQ0FBQyxPQUFPLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUN0RixDQUFDO1lBQ0osQ0FBQztZQUNELElBQ0UsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDN0UsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQzFDLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDNUYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF2SEQsa0VBdUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLCBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgT1pfRVRIX0FDQ09VTlRfQ0xBU1NfSEFTSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBCdWlsZHMgREVQTE9ZX0FDQ09VTlQgdjMgdHJhbnNhY3Rpb25zIGZvciBjb3VudGVyZmFjdHVhbCBFdGhBY2NvdW50IGFjdGl2YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2NsYXNzSGFzaDogc3RyaW5nID0gT1pfRVRIX0FDQ09VTlRfQ0xBU1NfSEFTSDtcbiAgcHJvdGVjdGVkIF9jb25zdHJ1Y3RvckNhbGxkYXRhPzogc3RyaW5nW107XG4gIHByb3RlY3RlZCBfY29udHJhY3RBZGRyZXNzU2FsdD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBTdGFya25ldFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLkRFUExPWV9BQ0NPVU5UO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkZXBsb3kgcGFyYW1ldGVycyBmcm9tIGEgc2VjcDI1NmsxIHB1YmxpYyBrZXkgKGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkKS5cbiAgICogRGVyaXZlcyBjb3VudGVyZmFjdHVhbCBhZGRyZXNzLCBjb25zdHJ1Y3RvciBjYWxsZGF0YSwgYW5kIHNhbHQuXG4gICAqL1xuICBwdWJsaWMgZnJvbVB1YmxpY0tleShwdWJLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWJLZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHB1YktleSwgZ290OiAnICsgcHViS2V5KTtcbiAgICB9XG4gICAgY29uc3QgZnVsbFB1YmxpY0tleSA9IHV0aWxzLmdldFVuY29tcHJlc3NlZFB1YmxpY0tleShwdWJLZXkpO1xuICAgIGNvbnN0IHsgYWRkcmVzcywgY29uc3RydWN0b3JDYWxsZGF0YSwgc2FsdCB9ID0gdXRpbHMuY29tcHV0ZVN0YXJrbmV0QWRkcmVzcyhmdWxsUHVibGljS2V5KTtcbiAgICB0aGlzLl9jb25zdHJ1Y3RvckNhbGxkYXRhID0gY29uc3RydWN0b3JDYWxsZGF0YTtcbiAgICB0aGlzLl9jb250cmFjdEFkZHJlc3NTYWx0ID0gc2FsdDtcbiAgICByZXR1cm4gdGhpcy5zZW5kZXIoYWRkcmVzcywgcHViS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGFzc0hhc2goY2xhc3NIYXNoOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWNsYXNzSGFzaCB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoY2xhc3NIYXNoKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBjbGFzcyBoYXNoLCBnb3Q6ICcgKyBjbGFzc0hhc2gpO1xuICAgIH1cbiAgICB0aGlzLl9jbGFzc0hhc2ggPSBjbGFzc0hhc2g7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGRhdGEgPSB0eC5zdGFya25ldFRyYW5zYWN0aW9uRGF0YTtcbiAgICBpZiAoZGF0YS5jbGFzc0hhc2gpIHtcbiAgICAgIHRoaXMuX2NsYXNzSGFzaCA9IGRhdGEuY2xhc3NIYXNoO1xuICAgIH1cbiAgICBpZiAoZGF0YS5jb25zdHJ1Y3RvckNhbGxkYXRhKSB7XG4gICAgICB0aGlzLl9jb25zdHJ1Y3RvckNhbGxkYXRhID0gZGF0YS5jb25zdHJ1Y3RvckNhbGxkYXRhO1xuICAgIH1cbiAgICBpZiAoZGF0YS5jb250cmFjdEFkZHJlc3NTYWx0KSB7XG4gICAgICB0aGlzLl9jb250cmFjdEFkZHJlc3NTYWx0ID0gZGF0YS5jb250cmFjdEFkZHJlc3NTYWx0O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5lbnN1cmVEZXBsb3lGaWVsZHMoKTtcblxuICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9IHRoaXMuX3NlbmRlciBhcyBzdHJpbmc7XG4gICAgY29uc3QgY2hhaW5JZCA9IHRoaXMuX2NoYWluSWQgYXMgc3RyaW5nO1xuICAgIGNvbnN0IG5vbmNlID0gdGhpcy5fbm9uY2UgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yQ2FsbGRhdGEgPSB0aGlzLl9jb25zdHJ1Y3RvckNhbGxkYXRhIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzc1NhbHQgPSB0aGlzLl9jb250cmFjdEFkZHJlc3NTYWx0IGFzIHN0cmluZztcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZURlcGxveUFjY291bnRUcmFuc2FjdGlvbkhhc2goe1xuICAgICAgY29udHJhY3RBZGRyZXNzLFxuICAgICAgY2xhc3NIYXNoOiB0aGlzLl9jbGFzc0hhc2gsXG4gICAgICBjb25zdHJ1Y3RvckNhbGxkYXRhLFxuICAgICAgY29udHJhY3RBZGRyZXNzU2FsdCxcbiAgICAgIGNoYWluSWQsXG4gICAgICBub25jZSxcbiAgICAgIHJlc291cmNlQm91bmRzOiB0aGlzLl9yZXNvdXJjZUJvdW5kcyxcbiAgICAgIHRpcDogdGhpcy5fdGlwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YTogU3RhcmtuZXRUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICBzZW5kZXJBZGRyZXNzOiBjb250cmFjdEFkZHJlc3MsXG4gICAgICBjb250cmFjdEFkZHJlc3MsXG4gICAgICBjYWxsczogW10sXG4gICAgICBub25jZSxcbiAgICAgIGNoYWluSWQsXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IFN0YXJrbmV0VHJhbnNhY3Rpb25UeXBlLkRFUExPWV9BQ0NPVU5ULFxuICAgICAgcmVzb3VyY2VCb3VuZHM6IHRoaXMuX3Jlc291cmNlQm91bmRzLFxuICAgICAgdGlwOiB0aGlzLl90aXAsXG4gICAgICB0cmFuc2FjdGlvbkhhc2gsXG4gICAgICBjbGFzc0hhc2g6IHRoaXMuX2NsYXNzSGFzaCxcbiAgICAgIGNvbnN0cnVjdG9yQ2FsbGRhdGEsXG4gICAgICBjb250cmFjdEFkZHJlc3NTYWx0LFxuICAgIH07XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zdGFya25ldFRyYW5zYWN0aW9uRGF0YSA9IGRhdGE7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVEZXBsb3lGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NlbmRlciAoY291bnRlcmZhY3R1YWwgYWRkcmVzcykgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3B1YmxpY0tleSAmJiAoIXRoaXMuX2NvbnN0cnVjdG9yQ2FsbGRhdGEgfHwgIXRoaXMuX2NvbnRyYWN0QWRkcmVzc1NhbHQpKSB7XG4gICAgICB0aGlzLmZyb21QdWJsaWNLZXkodGhpcy5fcHVibGljS2V5KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9jb25zdHJ1Y3RvckNhbGxkYXRhIHx8ICF0aGlzLl9jb250cmFjdEFkZHJlc3NTYWx0KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAnRGVwbG95IGFjY291bnQgcmVxdWlyZXMgcHVibGljIGtleSAoZnJvbVB1YmxpY0tleSkgb3IgZXhwbGljaXQgY29uc3RydWN0b3IgY2FsbGRhdGEgYW5kIHNhbHQnXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmdWxsUHVibGljS2V5ID0gdGhpcy5fcHVibGljS2V5ID8gdXRpbHMuZ2V0VW5jb21wcmVzc2VkUHVibGljS2V5KHRoaXMuX3B1YmxpY0tleSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGZ1bGxQdWJsaWNLZXkpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSB1dGlscy5jb21wdXRlU3RhcmtuZXRBZGRyZXNzKGZ1bGxQdWJsaWNLZXkpO1xuICAgICAgaWYgKHV0aWxzLm5vcm1hbGl6ZUFkZHJlc3MoZGVyaXZlZC5hZGRyZXNzKSAhPT0gdXRpbHMubm9ybWFsaXplQWRkcmVzcyh0aGlzLl9zZW5kZXIpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYEFkZHJlc3MgZG9lcyBub3QgbWF0Y2ggcHVibGljIGtleS4gRXhwZWN0ZWQgJHtkZXJpdmVkLmFkZHJlc3N9LCBnb3QgJHt0aGlzLl9zZW5kZXJ9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkZXJpdmVkLmNvbnN0cnVjdG9yQ2FsbGRhdGEuam9pbignLCcpICE9PSB0aGlzLl9jb25zdHJ1Y3RvckNhbGxkYXRhLmpvaW4oJywnKSB8fFxuICAgICAgICBkZXJpdmVkLnNhbHQgIT09IHRoaXMuX2NvbnRyYWN0QWRkcmVzc1NhbHRcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdDb25zdHJ1Y3RvciBjYWxsZGF0YSBvciBzYWx0IGRvZXMgbm90IG1hdGNoIHB1YmxpYyBrZXknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==