@bitgo-beta/sdk-coin-sol 2.4.3-beta.999 → 7.6.3

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 (142) hide show
  1. package/dist/src/bigint-buffer-guard.d.ts +1 -0
  2. package/dist/src/bigint-buffer-guard.d.ts.map +1 -0
  3. package/dist/src/bigint-buffer-guard.js +29 -0
  4. package/dist/src/config/token2022StaticConfig.d.ts +3 -0
  5. package/dist/src/config/token2022StaticConfig.d.ts.map +1 -0
  6. package/dist/src/config/token2022StaticConfig.js +50 -0
  7. package/dist/src/index.d.ts +1 -0
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +2 -1
  10. package/dist/src/lib/constants.d.ts +35 -2
  11. package/dist/src/lib/constants.d.ts.map +1 -1
  12. package/dist/src/lib/constants.js +41 -2
  13. package/dist/src/lib/customInstructionBuilder.d.ts +72 -0
  14. package/dist/src/lib/customInstructionBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/customInstructionBuilder.js +289 -0
  16. package/dist/src/lib/iface.d.ts +79 -5
  17. package/dist/src/lib/iface.d.ts.map +1 -1
  18. package/dist/src/lib/iface.js +1 -1
  19. package/dist/src/lib/index.d.ts +1 -0
  20. package/dist/src/lib/index.d.ts.map +1 -1
  21. package/dist/src/lib/index.js +4 -2
  22. package/dist/src/lib/instructionParamsFactory.d.ts.map +1 -1
  23. package/dist/src/lib/instructionParamsFactory.js +364 -78
  24. package/dist/src/lib/jitoStakePoolOperations.d.ts +113 -0
  25. package/dist/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  26. package/dist/src/lib/jitoStakePoolOperations.js +200 -0
  27. package/dist/src/lib/solInstructionFactory.d.ts.map +1 -1
  28. package/dist/src/lib/solInstructionFactory.js +266 -69
  29. package/dist/src/lib/stakingActivateBuilder.d.ts +16 -5
  30. package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
  31. package/dist/src/lib/stakingActivateBuilder.js +23 -10
  32. package/dist/src/lib/stakingDeactivateBuilder.d.ts +16 -5
  33. package/dist/src/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  34. package/dist/src/lib/stakingDeactivateBuilder.js +43 -20
  35. package/dist/src/lib/token2022Config.d.ts +44 -0
  36. package/dist/src/lib/token2022Config.d.ts.map +1 -0
  37. package/dist/src/lib/token2022Config.js +27 -0
  38. package/dist/src/lib/tokenTransferBuilder.js +7 -7
  39. package/dist/src/lib/transaction.d.ts +31 -4
  40. package/dist/src/lib/transaction.d.ts.map +1 -1
  41. package/dist/src/lib/transaction.js +134 -46
  42. package/dist/src/lib/transactionBuilder.d.ts +18 -2
  43. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  44. package/dist/src/lib/transactionBuilder.js +78 -2
  45. package/dist/src/lib/transactionBuilderFactory.d.ts +5 -0
  46. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  47. package/dist/src/lib/transactionBuilderFactory.js +10 -1
  48. package/dist/src/lib/utils.d.ts +34 -1
  49. package/dist/src/lib/utils.d.ts.map +1 -1
  50. package/dist/src/lib/utils.js +88 -24
  51. package/dist/src/sol.d.ts +36 -13
  52. package/dist/src/sol.d.ts.map +1 -1
  53. package/dist/src/sol.js +230 -38
  54. package/dist/test/fixtures/sol.d.ts +1152 -0
  55. package/dist/test/fixtures/sol.d.ts.map +1 -0
  56. package/dist/test/fixtures/sol.js +1433 -0
  57. package/dist/test/resources/sol.d.ts +238 -0
  58. package/dist/test/resources/sol.d.ts.map +1 -0
  59. package/dist/test/resources/sol.js +320 -0
  60. package/dist/test/unit/fixtures/solBackupKey.d.ts +5 -0
  61. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  62. package/dist/test/unit/fixtures/solBackupKey.js +8 -0
  63. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  64. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  65. package/dist/test/unit/getBuilderFactory.js +10 -0
  66. package/dist/test/unit/instructionParamsFactory.d.ts +2 -0
  67. package/dist/test/unit/instructionParamsFactory.d.ts.map +1 -0
  68. package/dist/test/unit/instructionParamsFactory.js +412 -0
  69. package/dist/test/unit/instructionParamsFactory.staking.d.ts +2 -0
  70. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  71. package/dist/test/unit/instructionParamsFactory.staking.js +1059 -0
  72. package/dist/test/unit/keyPair.d.ts +2 -0
  73. package/dist/test/unit/keyPair.d.ts.map +1 -0
  74. package/dist/test/unit/keyPair.js +177 -0
  75. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  76. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  77. package/dist/test/unit/messages/messageBuilderFactory.js +118 -0
  78. package/dist/test/unit/messages/simpleMessageBuilder.d.ts +2 -0
  79. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  80. package/dist/test/unit/messages/simpleMessageBuilder.js +194 -0
  81. package/dist/test/unit/sol.d.ts +2 -0
  82. package/dist/test/unit/sol.d.ts.map +1 -0
  83. package/dist/test/unit/sol.js +3108 -0
  84. package/dist/test/unit/solInstructionFactory.d.ts +2 -0
  85. package/dist/test/unit/solInstructionFactory.d.ts.map +1 -0
  86. package/dist/test/unit/solInstructionFactory.js +454 -0
  87. package/dist/test/unit/solToken.d.ts +2 -0
  88. package/dist/test/unit/solToken.d.ts.map +1 -0
  89. package/dist/test/unit/solToken.js +31 -0
  90. package/dist/test/unit/transaction.d.ts +2 -0
  91. package/dist/test/unit/transaction.d.ts.map +1 -0
  92. package/dist/test/unit/transaction.js +983 -0
  93. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +2 -0
  94. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  95. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  96. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts +2 -0
  97. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  98. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  99. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts +2 -0
  100. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  101. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  102. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts +2 -0
  103. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  104. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  105. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +2 -0
  106. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  107. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  108. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +2 -0
  109. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  110. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  111. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts +2 -0
  112. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  113. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  114. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +2 -0
  115. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  116. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  117. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  118. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  119. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
  120. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  121. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  122. package/dist/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  123. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  124. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  125. package/dist/test/unit/transactionBuilder/transferBuilder.js +286 -0
  126. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts +2 -0
  127. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  128. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
  129. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts +2 -0
  130. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  131. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  132. package/dist/test/unit/utils.d.ts +2 -0
  133. package/dist/test/unit/utils.d.ts.map +1 -0
  134. package/dist/test/unit/utils.js +505 -0
  135. package/dist/test/unit/versionedTransaction.d.ts +2 -0
  136. package/dist/test/unit/versionedTransaction.d.ts.map +1 -0
  137. package/dist/test/unit/versionedTransaction.js +207 -0
  138. package/dist/tsconfig.tsbuildinfo +1 -0
  139. package/package.json +14 -9
  140. package/.eslintignore +0 -5
  141. package/.mocharc.yml +0 -8
  142. package/CHANGELOG.md +0 -1223
@@ -0,0 +1,5 @@
1
+ export declare const solBackupKey: {
2
+ key: string;
3
+ commonKeychain: string;
4
+ };
5
+ //# sourceMappingURL=solBackupKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solBackupKey.d.ts","sourceRoot":"","sources":["../../../../test/unit/fixtures/solBackupKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;CAIxB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.solBackupKey = void 0;
4
+ exports.solBackupKey = {
5
+ key: '{"iv":"BeSAuY3ngyRQlvNSRsL52g==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n:"ccm","adata":"","cipher":"aes","salt":"XACKBRej6Tc=","ct":"u3hPEWb+4pXgGt\nxXAt9EH3K8O2oP0Aptvfl/7jGs5gueSvt1ZVMaeu7JQ/1jCPPdKNrXaJ6WFdIs1JHC2AVHSYN7W\nJnWF7XbfYzNbTIPN4/uR90Nrt+zAQ64iu/zaNMZXRjwlgGS3T8jjGIFngiUKCMC0uqYNptXlV1t\nMKy/m21e+FFhHJombJJ+3ueOQRuJbJq6RF7pf9eSjE+fVXao2OlWKB4W9pVkldP0dsfK5INoQXB\ngbQfqhyd0s3Xkge67dbm8fNZ3r6GcdfpZeDcqOeGGCFGlIs35w6pqr4cFdS/iJ3JaxjGS64VzV7\nlean6ubAiPsj9RHJU4QDI19QsGhh4qLet6YP/UqH6dJL094JcC38/CAZZISN4KY5/m6vlKAJ4ii\n2TxtZSeSCxISUYVFF5JVuDzPGB8hwbTK2B/sjdr8zO/IX5GMulMSXFVO9MrcTo0vNvOTvTc6Dgv\nXXldLfoKexsZeZkj5hqi5DE6jBniiMWYqADxdvMlEVGa4QgDx/iTUC7yoZt6TU6jh13D8uPeOu9\n5ZmMtuKnxWSxuw3IuNY9rXGvKHZH8GYHLdIvK+iRttg9/vKIoyAF5q9kwhwKPvUKf8KqVgp1LSu\nM8irZnKj0IejJ5F1g2FXbGkJ/Yxw6OQtK5+7/Uje3iDTpWDubatJ5vPcGeTa1n75DVia3d7Nn4g\nVlH90HiatCcynPgn8nYOsfS2+QcTpR9LF5pvp36bpvqK6iWqgLXs/RgQQAjx4l8D05cdfhZfh0A\nZjIzQs3z6SdmjyrkrIkeH67YwWNzJ0IFNFMYYJnAuSKajrnyVV/UX7JJk4+d26DW/W4ruph8JUC\no6YFpKFfKyON2Wyh1o4UrmbP0knFX/Yu9EqpEKVJy2sWviwsyflLBbaKZ5I8dyUdC+xEg/z1m33\n7gOoQtj7DIgoHifiDJKmHu0HiSGt17Tsjo5Dyp+0F/YwJN2kINOmXmIt11XPspU0bX9g5a3r52A\nhxNv8rGFDO9l05A2pJ71oUpECm4BCLR6CHX7jiunAvwcyvYCh/SMzGLMrQ9brzHVbN8S/7LRnXT\nTth2K0AFyn6pbcxBNCPT9xFE2St7B5uKp+5eHUKlsEAUpsaw5J5KD4qmAlO6kbP7uLugYWZVNqH\npbxm7Yzs8HnnJ47XiktwgjvIHeLmJ1hKyQVQXEP80MkifOZljLtr/ILMz8R1SHg=="}',
6
+ commonKeychain: 'fea55c1530e851fbea92acf31bcfd3ebd749584e778c3c6e2c70d9259bc1b19e13ef17639217dfb2c79602be32eb9d98d49aa2a39d674b047bef1f3731f42031',
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sQmFja3VwS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2ZpeHR1cmVzL3NvbEJhY2t1cEtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQUUsazJDQUFrMkM7SUFDdjJDLGNBQWMsRUFDWixrSUFBa0k7Q0FDckksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzb2xCYWNrdXBLZXkgPSB7XG4gIGtleTogJ3tcIml2XCI6XCJCZVNBdVkzbmd5UlFsdk5TUnNMNTJnPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiXFxuOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiWEFDS0JSZWo2VGM9XCIsXCJjdFwiOlwidTNoUEVXYis0cFhnR3RcXG54WEF0OUVIM0s4TzJvUDBBcHR2ZmwvN2pHczVndWVTdnQxWlZNYWV1N0pRLzFqQ1BQZEtOclhhSjZXRmRJczFKSEMyQVZIU1lON1dcXG5KbldGN1hiZll6TmJUSVBONC91UjkwTnJ0K3pBUTY0aXUvemFOTVpYUmp3bGdHUzNUOGpqR0lGbmdpVUtDTUMwdXFZTnB0WGxWMXRcXG5NS3kvbTIxZStGRmhISm9tYkpKKzN1ZU9RUnVKYkpxNlJGN3BmOWVTakUrZlZYYW8yT2xXS0I0VzlwVmtsZFAwZHNmSzVJTm9RWEJcXG5nYlFmcWh5ZDBzM1hrZ2U2N2RibThmTlozcjZHY2RmcFplRGNxT2VHR0NGR2xJczM1dzZwcXI0Y0ZkUy9pSjNKYXhqR1M2NFZ6VjdcXG5sZWFuNnViQWlQc2o5UkhKVTRRREkxOVFzR2hoNHFMZXQ2WVAvVXFINmRKTDA5NEpjQzM4L0NBWlpJU040S1k1L202dmxLQUo0aWlcXG4yVHh0WlNlU0N4SVNVWVZGRjVKVnVEelBHQjhod2JUSzJCL3NqZHI4ek8vSVg1R011bE1TWEZWTzlNcmNUbzB2TnZPVHZUYzZEZ3ZcXG5YWGxkTGZvS2V4c1plWmtqNWhxaTVERTZqQm5paU1XWXFBRHhkdk1sRVZHYTRRZ0R4L2lUVUM3eW9adDZUVTZqaDEzRDh1UGVPdTlcXG41Wm1NdHVLbnhXU3h1dzNJdU5ZOXJYR3ZLSFpIOEdZSExkSXZLK2lSdHRnOS92S0lveUFGNXE5a3dod0tQdlVLZjhLcVZncDFMU3VcXG5NOGlyWm5LajBJZWpKNUYxZzJGWGJHa0ovWXh3Nk9RdEs1KzcvVWplM2lEVHBXRHViYXRKNXZQY0dlVGExbjc1RFZpYTNkN05uNGdcXG5WbEg5MEhpYXRDY3luUGduOG5ZT3NmUzIrUWNUcFI5TEY1cHZwMzZicHZxSzZpV3FnTFhzL1JnUVFBang0bDhEMDVjZGZoWmZoMEFcXG5aakl6UXMzejZTZG1qeXJrcklrZUg2N1l3V056SjBJRk5GTVlZSm5BdVNLYWpybnlWVi9VWDdKSms0K2QyNkRXL1c0cnVwaDhKVUNcXG5vNllGcEtGZkt5T04yV3loMW80VXJtYlAwa25GWC9ZdTlFcXBFS1ZKeTJzV3Zpd3N5ZmxMQmJhS1o1SThkeVVkQyt4RWcvejFtMzNcXG43Z09vUXRqN0RJZ29IaWZpREpLbUh1MEhpU0d0MTdUc2pvNUR5cCswRi9Zd0pOMmtJTk9tWG1JdDExWFBzcFUwYlg5ZzVhM3I1MkFcXG5oeE52OHJHRkRPOWwwNUEycEo3MW9VcEVDbTRCQ0xSNkNIWDdqaXVuQXZ3Y3l2WUNoL1NNekdMTXJROWJyekhWYk44Uy83TFJuWFRcXG5UdGgySzBBRnluNnBiY3hCTkNQVDl4RkUyU3Q3QjV1S3ArNWVIVUtsc0VBVXBzYXc1SjVLRDRxbUFsTzZrYlA3dUx1Z1lXWlZOcUhcXG5wYnhtN1l6czhIbm5KNDdYaWt0d2dqdklIZUxtSjFoS3lRVlFYRVA4ME1raWZPWmxqTHRyL0lMTXo4UjFTSGc9PVwifScsXG4gIGNvbW1vbktleWNoYWluOlxuICAgICdmZWE1NWMxNTMwZTg1MWZiZWE5MmFjZjMxYmNmZDNlYmQ3NDk1ODRlNzc4YzNjNmUyYzcwZDkyNTliYzFiMTllMTNlZjE3NjM5MjE3ZGZiMmM3OTYwMmJlMzJlYjlkOThkNDlhYTJhMzlkNjc0YjA0N2JlZjFmMzczMWY0MjAzMScsXG59O1xuIl19
@@ -0,0 +1,3 @@
1
+ import { TransactionBuilderFactory } from '../../src';
2
+ export declare const getBuilderFactory: (coin: string) => TransactionBuilderFactory;
3
+ //# sourceMappingURL=getBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBuilderFactory.d.ts","sourceRoot":"","sources":["../../../test/unit/getBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,yBAEhD,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBuilderFactory = void 0;
4
+ const src_1 = require("../../src");
5
+ const statics_1 = require("@bitgo-beta/statics");
6
+ const getBuilderFactory = (coin) => {
7
+ return new src_1.TransactionBuilderFactory(statics_1.coins.get(coin));
8
+ };
9
+ exports.getBuilderFactory = getBuilderFactory;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QnVpbGRlckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvZ2V0QnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNEO0FBQ3RELGlEQUE0QztBQUVyQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUE2QixFQUFFO0lBQzNFLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRlcsUUFBQSxpQkFBaUIscUJBRTVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnVpbGRlckZhY3RvcnkgPSAoY29pbjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSA9PiB7XG4gIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoY29pbikpO1xufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=instructionParamsFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructionParamsFactory.d.ts","sourceRoot":"","sources":["../../../test/unit/instructionParamsFactory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,412 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const testData = __importStar(require("../resources/sol"));
41
+ const instructionParamsFactory_1 = require("../../src/lib/instructionParamsFactory");
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const constants_1 = require("../../src/lib/constants");
44
+ const web3_js_1 = require("@solana/web3.js");
45
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
46
+ const spl_token_1 = require("@solana/spl-token");
47
+ describe('Instruction Parser Tests: ', function () {
48
+ describe('Succeed ', function () {
49
+ it('Wallet init tx instructions', () => {
50
+ const fromAddress = testData.authAccount.pub;
51
+ const nonceAddress = testData.nonceAccount.pub;
52
+ const authAddress = testData.authAccount.pub;
53
+ const amount = '100000';
54
+ const instructions = web3_js_1.SystemProgram.createNonceAccount({
55
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
56
+ noncePubkey: new web3_js_1.PublicKey(nonceAddress),
57
+ authorizedPubkey: new web3_js_1.PublicKey(authAddress),
58
+ lamports: new bignumber_js_1.default(amount).toNumber(),
59
+ }).instructions;
60
+ const createNonceAccount = {
61
+ type: constants_1.InstructionBuilderTypes.CreateNonceAccount,
62
+ params: { fromAddress, nonceAddress, authAddress, amount },
63
+ };
64
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.WalletInitialization, instructions);
65
+ should_1.default.deepEqual(result, [createNonceAccount]);
66
+ });
67
+ it('Send tx instructions', () => {
68
+ const authAccount = testData.authAccount.pub;
69
+ const nonceAccount = testData.nonceAccount.pub;
70
+ const amount = '100000';
71
+ const memo = 'test memo';
72
+ // nonce
73
+ const nonceAdvanceParams = {
74
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
75
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
76
+ };
77
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
78
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
79
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
80
+ });
81
+ // transfer
82
+ const transferParams = {
83
+ type: constants_1.InstructionBuilderTypes.Transfer,
84
+ params: { fromAddress: authAccount, toAddress: nonceAccount, amount },
85
+ };
86
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
87
+ fromPubkey: new web3_js_1.PublicKey(authAccount),
88
+ toPubkey: new web3_js_1.PublicKey(nonceAccount),
89
+ lamports: new bignumber_js_1.default(amount).toNumber(),
90
+ });
91
+ // memo
92
+ const memoParams = {
93
+ type: constants_1.InstructionBuilderTypes.Memo,
94
+ params: { memo },
95
+ };
96
+ const memoInstruction = new web3_js_1.TransactionInstruction({
97
+ keys: [],
98
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
99
+ data: Buffer.from(memo),
100
+ });
101
+ const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
102
+ const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
103
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
104
+ should_1.default.deepEqual(result, instructionsData);
105
+ });
106
+ it('Send token tx instructions', () => {
107
+ const authAccount = testData.authAccount.pub;
108
+ const nonceAccount = testData.nonceAccount.pub;
109
+ const amount = testData.tokenTransfers.amount;
110
+ const memo = testData.tokenTransfers.memo;
111
+ const decimals = testData.tokenTransfers.decimals;
112
+ const nameUSDC = testData.tokenTransfers.nameUSDC;
113
+ const mintUSDC = testData.tokenTransfers.mintUSDC;
114
+ const owner = testData.tokenTransfers.owner;
115
+ const sourceUSDC = testData.tokenTransfers.sourceUSDC;
116
+ // nonce
117
+ const nonceAdvanceParams = {
118
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
119
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
120
+ };
121
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
122
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
123
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
124
+ });
125
+ // token transfer
126
+ const transferParams = {
127
+ type: constants_1.InstructionBuilderTypes.TokenTransfer,
128
+ params: {
129
+ fromAddress: owner,
130
+ toAddress: nonceAccount,
131
+ amount: amount.toString(),
132
+ tokenName: nameUSDC,
133
+ sourceAddress: sourceUSDC,
134
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
135
+ tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
136
+ decimalPlaces: 9,
137
+ },
138
+ };
139
+ const transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(sourceUSDC), new web3_js_1.PublicKey(mintUSDC), new web3_js_1.PublicKey(nonceAccount), new web3_js_1.PublicKey(owner), amount, decimals);
140
+ // memo
141
+ const memoParams = {
142
+ type: constants_1.InstructionBuilderTypes.Memo,
143
+ params: { memo },
144
+ };
145
+ const memoInstruction = new web3_js_1.TransactionInstruction({
146
+ keys: [],
147
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
148
+ data: Buffer.from(memo),
149
+ });
150
+ const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
151
+ const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
152
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
153
+ should_1.default.deepEqual(result, instructionsData);
154
+ });
155
+ it('Send sol 2022 token tx instructions', () => {
156
+ const authAccount = testData.authAccount.pub;
157
+ const nonceAccount = testData.nonceAccount.pub;
158
+ const amount = testData.sol2022TokenTransfers.amount;
159
+ const memo = testData.sol2022TokenTransfers.memo;
160
+ const decimals = testData.sol2022TokenTransfers.decimals;
161
+ const name = testData.sol2022TokenTransfers.name;
162
+ const mint = testData.sol2022TokenTransfers.mint;
163
+ const owner = testData.sol2022TokenTransfers.owner;
164
+ const source = testData.sol2022TokenTransfers.source;
165
+ // nonce
166
+ const nonceAdvanceParams = {
167
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
168
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
169
+ };
170
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
171
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
172
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
173
+ });
174
+ // token transfer
175
+ const transferParams = {
176
+ type: constants_1.InstructionBuilderTypes.TokenTransfer,
177
+ params: {
178
+ fromAddress: owner,
179
+ toAddress: nonceAccount,
180
+ amount: amount.toString(),
181
+ tokenName: name,
182
+ sourceAddress: source,
183
+ tokenAddress: '5NR1bQwLWqjbkhbQ1hx72HKJybbuvwkDnUZNoAZ2VhW6',
184
+ programId: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
185
+ decimalPlaces: 9,
186
+ },
187
+ };
188
+ const transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(source), new web3_js_1.PublicKey(mint), new web3_js_1.PublicKey(nonceAccount), new web3_js_1.PublicKey(owner), amount, decimals, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
189
+ // memo
190
+ const memoParams = {
191
+ type: constants_1.InstructionBuilderTypes.Memo,
192
+ params: { memo },
193
+ };
194
+ const memoInstruction = new web3_js_1.TransactionInstruction({
195
+ keys: [],
196
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
197
+ data: Buffer.from(memo),
198
+ });
199
+ const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
200
+ const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
201
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
202
+ should_1.default.deepEqual(result, instructionsData);
203
+ });
204
+ it('multi ATA init tx instructions', () => {
205
+ const ataParams = [
206
+ {
207
+ mintAddress: testData.associatedTokenAccounts.mintId,
208
+ ownerAddress: testData.associatedTokenAccounts.accounts[0].pub,
209
+ payerAddress: testData.associatedTokenAccounts.accounts[0].pub,
210
+ ataAddress: testData.associatedTokenAccounts.accounts[0].ata,
211
+ programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
212
+ },
213
+ {
214
+ mintAddress: testData.associatedTokenAccounts.mintId,
215
+ ownerAddress: testData.associatedTokenAccounts.accounts[1].pub,
216
+ payerAddress: testData.associatedTokenAccounts.accounts[0].pub,
217
+ ataAddress: testData.associatedTokenAccounts.accounts[1].ata,
218
+ programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
219
+ },
220
+ ];
221
+ const ataInstructions = [];
222
+ const createATAParams = [];
223
+ ataParams.forEach((param) => {
224
+ ataInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(param.payerAddress), new web3_js_1.PublicKey(param.ataAddress), new web3_js_1.PublicKey(param.ownerAddress), new web3_js_1.PublicKey(param.mintAddress)));
225
+ createATAParams.push({
226
+ type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
227
+ params: { ...param, tokenName: 'sol:usdc' },
228
+ });
229
+ });
230
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization, ataInstructions);
231
+ should_1.default.deepEqual(result, createATAParams);
232
+ });
233
+ it('sol 2022 ATA init tx instructions', () => {
234
+ const ataParams = [
235
+ {
236
+ mintAddress: testData.associatedTokenAccountsForSol2022.mintId,
237
+ ownerAddress: testData.associatedTokenAccountsForSol2022.accounts[0].pub,
238
+ payerAddress: testData.associatedTokenAccountsForSol2022.accounts[0].pub,
239
+ ataAddress: testData.associatedTokenAccountsForSol2022.accounts[0].ata,
240
+ programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
241
+ },
242
+ ];
243
+ const ataInstructions = [];
244
+ const createATAParams = [];
245
+ ataParams.forEach((param) => {
246
+ ataInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(param.payerAddress), new web3_js_1.PublicKey(param.ataAddress), new web3_js_1.PublicKey(param.ownerAddress), new web3_js_1.PublicKey(param.mintAddress), spl_token_1.TOKEN_2022_PROGRAM_ID));
247
+ createATAParams.push({
248
+ type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
249
+ params: { ...param, tokenName: 'tsol:t22mint' },
250
+ });
251
+ });
252
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization, ataInstructions);
253
+ should_1.default.deepEqual(result, createATAParams);
254
+ });
255
+ it('Mint To - Standard SPL Token instruction parsing', () => {
256
+ const mintAddress = testData.tokenTransfers.mintUSDC;
257
+ const destinationAddress = testData.tokenTransfers.sourceUSDC;
258
+ const authorityAddress = testData.authAccount.pub;
259
+ const amount = '1000000';
260
+ const tokenName = testData.tokenTransfers.nameUSDC;
261
+ const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount));
262
+ const expectedMintParams = {
263
+ type: constants_1.InstructionBuilderTypes.MintTo,
264
+ params: {
265
+ mintAddress,
266
+ destinationAddress,
267
+ authorityAddress,
268
+ amount,
269
+ tokenName,
270
+ decimalPlaces: undefined,
271
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
272
+ },
273
+ };
274
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [mintInstruction]);
275
+ should_1.default.deepEqual(result, [expectedMintParams]);
276
+ });
277
+ it('Mint To - Token-2022 Program instruction parsing', () => {
278
+ const mintAddress = testData.sol2022TokenTransfers.mint;
279
+ const destinationAddress = testData.sol2022TokenTransfers.source;
280
+ const authorityAddress = testData.authAccount.pub;
281
+ const amount = '2000000';
282
+ const tokenName = testData.sol2022TokenTransfers.name;
283
+ const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount), undefined, spl_token_1.TOKEN_2022_PROGRAM_ID);
284
+ const expectedMintParams = {
285
+ type: constants_1.InstructionBuilderTypes.MintTo,
286
+ params: {
287
+ mintAddress,
288
+ destinationAddress,
289
+ authorityAddress,
290
+ amount,
291
+ tokenName,
292
+ decimalPlaces: undefined,
293
+ programId: spl_token_1.TOKEN_2022_PROGRAM_ID.toString(),
294
+ },
295
+ };
296
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [mintInstruction]);
297
+ should_1.default.deepEqual(result, [expectedMintParams]);
298
+ });
299
+ it('Burn - Standard SPL Token instruction parsing', () => {
300
+ const mintAddress = testData.tokenTransfers.mintUSDC;
301
+ const accountAddress = testData.tokenTransfers.sourceUSDC;
302
+ const authorityAddress = testData.authAccount.pub;
303
+ const amount = '500000';
304
+ const tokenName = testData.tokenTransfers.nameUSDC;
305
+ const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount));
306
+ const expectedBurnParams = {
307
+ type: constants_1.InstructionBuilderTypes.Burn,
308
+ params: {
309
+ mintAddress,
310
+ accountAddress,
311
+ authorityAddress,
312
+ amount,
313
+ tokenName,
314
+ decimalPlaces: undefined,
315
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
316
+ },
317
+ };
318
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [burnInstruction]);
319
+ should_1.default.deepEqual(result, [expectedBurnParams]);
320
+ });
321
+ it('Burn - Token-2022 Program instruction parsing', () => {
322
+ const mintAddress = testData.sol2022TokenTransfers.mint;
323
+ const accountAddress = testData.sol2022TokenTransfers.source;
324
+ const authorityAddress = testData.authAccount.pub;
325
+ const amount = '750000';
326
+ const tokenName = testData.sol2022TokenTransfers.name;
327
+ const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount), undefined, spl_token_1.TOKEN_2022_PROGRAM_ID);
328
+ const expectedBurnParams = {
329
+ type: constants_1.InstructionBuilderTypes.Burn,
330
+ params: {
331
+ mintAddress,
332
+ accountAddress,
333
+ authorityAddress,
334
+ amount,
335
+ tokenName,
336
+ decimalPlaces: undefined,
337
+ programId: spl_token_1.TOKEN_2022_PROGRAM_ID.toString(),
338
+ },
339
+ };
340
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [burnInstruction]);
341
+ should_1.default.deepEqual(result, [expectedBurnParams]);
342
+ });
343
+ it('Mixed instructions - Mint, Burn, and Transfer', () => {
344
+ const authAccount = testData.authAccount.pub;
345
+ const nonceAccount = testData.nonceAccount.pub;
346
+ const mintAddress = testData.tokenTransfers.mintUSDC;
347
+ const destinationAddress = testData.tokenTransfers.sourceUSDC;
348
+ const accountAddress = testData.tokenTransfers.sourceUSDC;
349
+ const tokenName = testData.tokenTransfers.nameUSDC;
350
+ // Nonce advance
351
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
352
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
353
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
354
+ });
355
+ const nonceAdvanceParams = {
356
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
357
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
358
+ };
359
+ // Mint instruction
360
+ const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authAccount), BigInt('1000000'));
361
+ const expectedMintParams = {
362
+ type: constants_1.InstructionBuilderTypes.MintTo,
363
+ params: {
364
+ mintAddress,
365
+ destinationAddress,
366
+ authorityAddress: authAccount,
367
+ amount: '1000000',
368
+ tokenName,
369
+ decimalPlaces: undefined,
370
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
371
+ },
372
+ };
373
+ // Burn instruction
374
+ const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authAccount), BigInt('500000'));
375
+ const expectedBurnParams = {
376
+ type: constants_1.InstructionBuilderTypes.Burn,
377
+ params: {
378
+ mintAddress,
379
+ accountAddress,
380
+ authorityAddress: authAccount,
381
+ amount: '500000',
382
+ tokenName,
383
+ decimalPlaces: undefined,
384
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
385
+ },
386
+ };
387
+ const instructions = [nonceAdvanceInstruction, mintInstruction, burnInstruction];
388
+ const expectedParams = [nonceAdvanceParams, expectedMintParams, expectedBurnParams];
389
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
390
+ should_1.default.deepEqual(result, expectedParams);
391
+ });
392
+ });
393
+ describe('Fail ', function () {
394
+ it('Invalid type', () => {
395
+ (0, should_1.default)(() => (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.ContractCall, [])).throwError('Invalid transaction, transaction type not supported: ' + sdk_core_1.TransactionType.ContractCall);
396
+ });
397
+ it('Invalid Instruction for Send Type', () => {
398
+ const fromAddress = testData.authAccount.pub;
399
+ const nonceAddress = testData.nonceAccount.pub;
400
+ const authAddress = testData.authAccount.pub;
401
+ const amount = '100000';
402
+ const instructions = web3_js_1.SystemProgram.createNonceAccount({
403
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
404
+ noncePubkey: new web3_js_1.PublicKey(nonceAddress),
405
+ authorizedPubkey: new web3_js_1.PublicKey(authAddress),
406
+ lamports: new bignumber_js_1.default(amount).toNumber(),
407
+ }).instructions;
408
+ (0, should_1.default)(() => (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions)).throwError('Invalid transaction, instruction type not supported: Create');
409
+ });
410
+ });
411
+ });
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2luc3RydWN0aW9uUGFyYW1zRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwyREFBNkM7QUFDN0MscUZBQWtGO0FBQ2xGLG1EQUF1RDtBQUV2RCx1REFBbUY7QUFDbkYsNkNBQW1GO0FBQ25GLGdFQUFxQztBQUNyQyxpREFNMkI7QUFFM0IsUUFBUSxDQUFDLDRCQUE0QixFQUFFO0lBQ3JDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDbkIsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtZQUNyQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUMvQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDeEIsTUFBTSxZQUFZLEdBQUcsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDcEQsVUFBVSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3RDLFdBQVcsRUFBRSxJQUFJLG1CQUFTLENBQUMsWUFBWSxDQUFDO2dCQUN4QyxnQkFBZ0IsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxRQUFRLEVBQUUsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTthQUMzQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRWhCLE1BQU0sa0JBQWtCLEdBQXNCO2dCQUM1QyxJQUFJLEVBQUUsbUNBQXVCLENBQUMsa0JBQWtCO2dCQUNoRCxNQUFNLEVB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O0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYy9saWIvaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEluc3RydWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgTUVNT19QUk9HUkFNX1BLIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtLCBUcmFuc2FjdGlvbkluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbixcbiAgY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24sXG4gIGNyZWF0ZU1pbnRUb0luc3RydWN0aW9uLFxuICBjcmVhdGVCdXJuSW5zdHJ1Y3Rpb24sXG4gIFRPS0VOXzIwMjJfUFJPR1JBTV9JRCxcbn0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG5kZXNjcmliZSgnSW5zdHJ1Y3Rpb24gUGFyc2VyIFRlc3RzOiAnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdTdWNjZWVkICcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnV2FsbGV0IGluaXQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBub25jZUFkZHJlc3MgPSB0ZXN0RGF0YS5ub25jZUFjY291bnQucHViO1xuICAgICAgY29uc3QgYXV0aEFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwJztcbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IFN5c3RlbVByb2dyYW0uY3JlYXRlTm9uY2VBY2NvdW50KHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFkZHJlc3MpLFxuICAgICAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gICAgICB9KS5pbnN0cnVjdGlvbnM7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZU5vbmNlQWNjb3VudDogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudCxcbiAgICAgICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24sIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2NyZWF0ZU5vbmNlQWNjb3VudF0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ1NlbmQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXV0aEFjY291bnQgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBub25jZUFjY291bnQgPSB0ZXN0RGF0YS5ub25jZUFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMCc7XG4gICAgICBjb25zdCBtZW1vID0gJ3Rlc3QgbWVtbyc7XG5cbiAgICAgIC8vIG5vbmNlXG4gICAgICBjb25zdCBub25jZUFkdmFuY2VQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgIHBhcmFtczogeyB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudCwgYXV0aFdhbGxldEFkZHJlc3M6IGF1dGhBY2NvdW50IH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLm5vbmNlQWR2YW5jZSh7XG4gICAgICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWNjb3VudCksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYW5zZmVyXG4gICAgICBjb25zdCB0cmFuc2ZlclBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3M6IGF1dGhBY2NvdW50LCB0b0FkZHJlc3M6IG5vbmNlQWNjb3VudCwgYW1vdW50IH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50KSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIG1lbW9cbiAgICAgIGNvbnN0IG1lbW9QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHsgbWVtbyB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWVtb0luc3RydWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24oe1xuICAgICAgICBrZXlzOiBbXSxcbiAgICAgICAgcHJvZ3JhbUlkOiBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSyksXG4gICAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKG1lbW8pLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IFtub25jZUFkdmFuY2VJbnN0cnVjdGlvbiwgdHJhbnNmZXJJbnN0cnVjdGlvbiwgbWVtb0luc3RydWN0aW9uXTtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSBbbm9uY2VBZHZhbmNlUGFyYW1zLCB0cmFuc2ZlclBhcmFtcywgbWVtb1BhcmFtc107XG4gICAgICBjb25zdCByZXN1bHQgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoVHJhbnNhY3Rpb25UeXBlLlNlbmQsIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgaW5zdHJ1Y3Rpb25zRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2VuZCB0b2tlbiB0eCBpbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhdXRoQWNjb3VudCA9IHRlc3REYXRhLmF1dGhBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudCA9IHRlc3REYXRhLm5vbmNlQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5hbW91bnQ7XG4gICAgICBjb25zdCBtZW1vID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWVtbztcbiAgICAgIGNvbnN0IGRlY2ltYWxzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMuZGVjaW1hbHM7XG4gICAgICBjb25zdCBuYW1lVVNEQyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLm5hbWVVU0RDO1xuICAgICAgY29uc3QgbWludFVTREMgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5taW50VVNEQztcbiAgICAgIGNvbnN0IG93bmVyID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMub3duZXI7XG4gICAgICBjb25zdCBzb3VyY2VVU0RDID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMuc291cmNlVVNEQztcblxuICAgICAgLy8gbm9uY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZVBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgcGFyYW1zOiB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LCBhdXRoV2FsbGV0QWRkcmVzczogYXV0aEFjY291bnQgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICAgICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICB9KTtcblxuICAgICAgLy8gdG9rZW4gdHJhbnNmZXJcbiAgICAgIGNvbnN0IHRyYW5zZmVyUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogb3duZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBub25jZUFjY291bnQsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICB0b2tlbk5hbWU6IG5hbWVVU0RDLFxuICAgICAgICAgIHNvdXJjZUFkZHJlc3M6IHNvdXJjZVVTREMsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgdG9rZW5BZGRyZXNzOiAnRjR1TGVYSm9GejNodzEzTXBvc3V3YVFiTWNaYkNqcXZFR1BQZVJSQjFCeWYnLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IDksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KHNvdXJjZVVTREMpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRVU0RDKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShub25jZUFjY291bnQpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG93bmVyKSxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBkZWNpbWFsc1xuICAgICAgKTtcblxuICAgICAgLy8gbWVtb1xuICAgICAgY29uc3QgbWVtb1BhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sXG4gICAgICAgIHBhcmFtczogeyBtZW1vIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgICAgIGtleXM6IFtdLFxuICAgICAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKSxcbiAgICAgICAgZGF0YTogQnVmZmVyLmZyb20obWVtbyksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gW25vbmNlQWR2YW5jZUluc3RydWN0aW9uLCB0cmFuc2Zlckluc3RydWN0aW9uLCBtZW1vSW5zdHJ1Y3Rpb25dO1xuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IFtub25jZUFkdmFuY2VQYXJhbXMsIHRyYW5zZmVyUGFyYW1zLCBtZW1vUGFyYW1zXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuU2VuZCwgaW5zdHJ1Y3Rpb25zKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocmVzdWx0LCBpbnN0cnVjdGlvbnNEYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdTZW5kIHNvbCAyMDIyIHRva2VuIHR4IGluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF1dGhBY2NvdW50ID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50ID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5hbW91bnQ7XG4gICAgICBjb25zdCBtZW1vID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1lbW87XG4gICAgICBjb25zdCBkZWNpbWFscyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5kZWNpbWFscztcbiAgICAgIGNvbnN0IG5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcbiAgICAgIGNvbnN0IG1pbnQgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubWludDtcbiAgICAgIGNvbnN0IG93bmVyID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm93bmVyO1xuICAgICAgY29uc3Qgc291cmNlID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcblxuICAgICAgLy8gbm9uY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZVBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgcGFyYW1zOiB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LCBhdXRoV2FsbGV0QWRkcmVzczogYXV0aEFjY291bnQgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICAgICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICB9KTtcblxuICAgICAgLy8gdG9rZW4gdHJhbnNmZXJcbiAgICAgIGNvbnN0IHRyYW5zZmVyUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogb3duZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBub25jZUFjY291bnQsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICB0b2tlbk5hbWU6IG5hbWUsXG4gICAgICAgICAgc291cmNlQWRkcmVzczogc291cmNlLFxuICAgICAgICAgIHRva2VuQWRkcmVzczogJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JyxcbiAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiA5LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBjcmVhdGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbihcbiAgICAgICAgbmV3IFB1YmxpY0tleShzb3VyY2UpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnQpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG5vbmNlQWNjb3VudCksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkob3duZXIpLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIGRlY2ltYWxzLFxuICAgICAgICBbXSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lEXG4gICAgICApO1xuXG4gICAgICAvLyBtZW1vXG4gICAgICBjb25zdCBtZW1vUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgICAgcGFyYW1zOiB7IG1lbW8gfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1lbW9JbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICAgICAga2V5czogW10sXG4gICAgICAgIHByb2dyYW1JZDogbmV3IFB1YmxpY0tleShNRU1PX1BST0dSQU1fUEspLFxuICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShtZW1vKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIHRyYW5zZmVySW5zdHJ1Y3Rpb24sIG1lbW9JbnN0cnVjdGlvbl07XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnNEYXRhID0gW25vbmNlQWR2YW5jZVBhcmFtcywgdHJhbnNmZXJQYXJhbXMsIG1lbW9QYXJhbXNdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBpbnN0cnVjdGlvbnMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIGluc3RydWN0aW9uc0RhdGEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ211bHRpIEFUQSBpbml0IHR4IGluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF0YVBhcmFtcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG1pbnRBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgYXRhQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMF0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1pbnRBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1sxXS5wdWIsXG4gICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgYXRhQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMV0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGF0YUluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gICAgICBjb25zdCBjcmVhdGVBVEFQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcblxuICAgICAgYXRhUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGF0YUluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0ucGF5ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0uYXRhQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm93bmVyQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm1pbnRBZGRyZXNzKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjcmVhdGVBVEFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHsgLi4ucGFyYW0sIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24sIGF0YUluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgY3JlYXRlQVRBUGFyYW1zKTtcbiAgICB9KTtcbiAgICBpdCgnc29sIDIwMjIgQVRBIGluaXQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXRhUGFyYW1zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbWludEFkZHJlc3M6IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0ucHViLFxuICAgICAgICAgIHBheWVyQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHNGb3JTb2wyMDIyLmFjY291bnRzWzBdLnB1YixcbiAgICAgICAgICBhdGFBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGF0YUluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gICAgICBjb25zdCBjcmVhdGVBVEFQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcblxuICAgICAgYXRhUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGF0YUluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0ucGF5ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0uYXRhQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm93bmVyQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm1pbnRBZGRyZXNzKSxcbiAgICAgICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjcmVhdGVBVEFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHsgLi4ucGFyYW0sIHRva2VuTmFtZTogJ3Rzb2w6dDIybWludCcgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uLCBhdGFJbnN0cnVjdGlvbnMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIGNyZWF0ZUFUQVBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnTWludCBUbyAtIFN0YW5kYXJkIFNQTCBUb2tlbiBpbnN0cnVjdGlvbiBwYXJzaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWludEFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5taW50VVNEQztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLnNvdXJjZVVTREM7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAnO1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubmFtZVVTREM7XG5cbiAgICAgIGNvbnN0IG1pbnRJbnN0cnVjdGlvbiA9IGNyZWF0ZU1pbnRUb0luc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShkZXN0aW5hdGlvbkFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGF1dGhvcml0eUFkZHJlc3MpLFxuICAgICAgICBCaWdJbnQoYW1vdW50KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNaW50UGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWludFRvLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuU2VuZCwgW21pbnRJbnN0cnVjdGlvbl0pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIFtleHBlY3RlZE1pbnRQYXJhbXNdKTtcbiAgICB9KTtcblxuICAgIGl0KCdNaW50IFRvIC0gVG9rZW4tMjAyMiBQcm9ncmFtIGluc3RydWN0aW9uIHBhcnNpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtaW50QWRkcmVzcyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5taW50O1xuICAgICAgY29uc3QgZGVzdGluYXRpb25BZGRyZXNzID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcbiAgICAgIGNvbnN0IGF1dGhvcml0eUFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMjAwMDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcblxuICAgICAgY29uc3QgbWludEluc3RydWN0aW9uID0gY3JlYXRlTWludFRvSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNaW50UGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWludFRvLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbbWludEluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkTWludFBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ0J1cm4gLSBTdGFuZGFyZCBTUEwgVG9rZW4gaW5zdHJ1Y3Rpb24gcGFyc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWludFVTREM7XG4gICAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLnNvdXJjZVVTREM7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzUwMDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5uYW1lVVNEQztcblxuICAgICAgY29uc3QgYnVybkluc3RydWN0aW9uID0gY3JlYXRlQnVybkluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KGFjY291bnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBleHBlY3RlZEJ1cm5QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5CdXJuLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBhY2NvdW50QWRkcmVzcyxcbiAgICAgICAgICBhdXRob3JpdHlBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgZGVjaW1hbFBsYWNlczogdW5kZWZpbmVkLFxuICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbYnVybkluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkQnVyblBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ0J1cm4gLSBUb2tlbi0yMDIyIFByb2dyYW0gaW5zdHJ1Y3Rpb24gcGFyc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1pbnQ7XG4gICAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5zb3VyY2U7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzc1MDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcblxuICAgICAgY29uc3QgYnVybkluc3RydWN0aW9uID0gY3JlYXRlQnVybkluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KGFjY291bnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRCdXJuUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQnVybixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgICAgYWNjb3VudEFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbYnVybkluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkQnVyblBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ01peGVkIGluc3RydWN0aW9ucyAtIE1pbnQsIEJ1cm4sIGFuZCBUcmFuc2ZlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGF1dGhBY2NvdW50ID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50ID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWludFVTREM7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbkFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5zb3VyY2VVU0RDO1xuICAgICAgY29uc3QgYWNjb3VudEFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5zb3VyY2VVU0RDO1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubmFtZVVTREM7XG5cbiAgICAgIC8vIE5vbmNlIGFkdmFuY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZUluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5ub25jZUFkdmFuY2Uoe1xuICAgICAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFjY291bnQpLFxuICAgICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICBwYXJhbXM6IHsgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFjY291bnQsIGF1dGhXYWxsZXRBZGRyZXNzOiBhdXRoQWNjb3VudCB9LFxuICAgICAgfTtcblxuICAgICAgLy8gTWludCBpbnN0cnVjdGlvblxuICAgICAgY29uc3QgbWludEluc3RydWN0aW9uID0gY3JlYXRlTWludFRvSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQpLFxuICAgICAgICBCaWdJbnQoJzEwMDAwMDAnKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTWludFBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1pbnRUbyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgICAgZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgICAgIGF1dGhvcml0eUFkZHJlc3M6IGF1dGhBY2NvdW50LFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBCdXJuIGluc3RydWN0aW9uXG4gICAgICBjb25zdCBidXJuSW5zdHJ1Y3Rpb24gPSBjcmVhdGVCdXJuSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYWNjb3VudEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICAgIEJpZ0ludCgnNTAwMDAwJylcbiAgICAgICk7XG4gICAgICBjb25zdCBleHBlY3RlZEJ1cm5QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5CdXJuLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBhY2NvdW50QWRkcmVzcyxcbiAgICAgICAgICBhdXRob3JpdHlBZGRyZXNzOiBhdXRoQWNjb3VudCxcbiAgICAgICAgICBhbW91bnQ6ICc1MDAwMDAnLFxuICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIG1pbnRJbnN0cnVjdGlvbiwgYnVybkluc3RydWN0aW9uXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUGFyYW1zID0gW25vbmNlQWR2YW5jZVBhcmFtcywgZXhwZWN0ZWRNaW50UGFyYW1zLCBleHBlY3RlZEJ1cm5QYXJhbXNdO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoVHJhbnNhY3Rpb25UeXBlLlNlbmQsIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRQYXJhbXMpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ0ZhaWwgJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdJbnZhbGlkIHR5cGUnLCAoKSA9PiB7XG4gICAgICBzaG91bGQoKCkgPT4gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwsIFtdKSkudGhyb3dFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZDogJyArIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGxcbiAgICAgICk7XG4gICAgfSk7XG4gICAgaXQoJ0ludmFsaWQgSW5zdHJ1Y3Rpb24gZm9yIFNlbmQgVHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21BZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBZGRyZXNzID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IGF1dGhBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMCc7XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBTeXN0ZW1Qcm9ncmFtLmNyZWF0ZU5vbmNlQWNjb3VudCh7XG4gICAgICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgICAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFkZHJlc3MpLFxuICAgICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBZGRyZXNzKSxcbiAgICAgICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICAgICAgfSkuaW5zdHJ1Y3Rpb25zO1xuXG4gICAgICBzaG91bGQoKCkgPT4gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBpbnN0cnVjdGlvbnMpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiBDcmVhdGUnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=instructionParamsFactory.staking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructionParamsFactory.staking.d.ts","sourceRoot":"","sources":["../../../test/unit/instructionParamsFactory.staking.ts"],"names":[],"mappings":""}