impermax-sdk 1.0.1 → 1.0.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 (103) hide show
  1. package/package.json +9 -3
  2. package/.idea/impermax-sdk.iml +0 -12
  3. package/.idea/misc.xml +0 -6
  4. package/.idea/modules.xml +0 -8
  5. package/.idea/workspace.xml +0 -642
  6. package/abis/ImpermaxABI.ts +0 -3
  7. package/abis/contracts/BAllowance.json +0 -4735
  8. package/abis/contracts/BDeployer.json +0 -1195
  9. package/abis/contracts/BInterestRateModel.json +0 -10796
  10. package/abis/contracts/BSetter.json +0 -6219
  11. package/abis/contracts/BStorage.json +0 -2613
  12. package/abis/contracts/Borrowable.json +0 -19937
  13. package/abis/contracts/CDeployer.json +0 -1104
  14. package/abis/contracts/CSetter.json +0 -5094
  15. package/abis/contracts/CStorage.json +0 -516
  16. package/abis/contracts/ClaimAggregator.json +0 -2015
  17. package/abis/contracts/Collateral.json +0 -21615
  18. package/abis/contracts/ERC20.json +0 -819
  19. package/abis/contracts/Factory.json +0 -21986
  20. package/abis/contracts/FarmingPool.json +0 -8601
  21. package/abis/contracts/IBDeployer.json +0 -351
  22. package/abis/contracts/IBorrowTracker.json +0 -346
  23. package/abis/contracts/IBorrowable.json +0 -13207
  24. package/abis/contracts/ICDeployer.json +0 -294
  25. package/abis/contracts/IClaimable.json +0 -406
  26. package/abis/contracts/ICollateral.json +0 -8952
  27. package/abis/contracts/IERC20.json +0 -2376
  28. package/abis/contracts/IFactory.json +0 -3660
  29. package/abis/contracts/IFarmingPool.json +0 -3584
  30. package/abis/contracts/IImpermaxCallee.json +0 -679
  31. package/abis/contracts/IMerkleDistributor.json +0 -1134
  32. package/abis/contracts/IPoolToken.json +0 -5343
  33. package/abis/contracts/IRouter01.json +0 -6891
  34. package/abis/contracts/IRouter02.json +0 -7283
  35. package/abis/contracts/ISimpleUniswapOracle.json +0 -1469
  36. package/abis/contracts/IStakedLPToken.json +0 -7309
  37. package/abis/contracts/IStakingRewards.json +0 -1036
  38. package/abis/contracts/IUniswapV2Callee.json +0 -403
  39. package/abis/contracts/IUniswapV2ERC20.json +0 -3155
  40. package/abis/contracts/IUniswapV2Factory.json +0 -1690
  41. package/abis/contracts/IUniswapV2Pair.json +0 -6761
  42. package/abis/contracts/IWETH.json +0 -561
  43. package/abis/contracts/ImpermaxChef.json +0 -20945
  44. package/abis/contracts/ImpermaxERC20.json +0 -12095
  45. package/abis/contracts/Math.json +0 -1966
  46. package/abis/contracts/MockERC20.json +0 -8884
  47. package/abis/contracts/PoolToken.json +0 -10784
  48. package/abis/contracts/Router01.json +0 -43963
  49. package/abis/contracts/SafeMath.json +0 -6828
  50. package/abis/contracts/SimpleUniswapOracle.json +0 -9640
  51. package/abis/contracts/TransferHelper.json +0 -4875
  52. package/abis/contracts/UQ112x112.json +0 -1201
  53. package/abis/contracts/UniswapV2ERC20.json +0 -10969
  54. package/abis/contracts/UniswapV2Factory.json +0 -5521
  55. package/abis/contracts/UniswapV2Library.json +0 -13789
  56. package/abis/contracts/UniswapV2Pair.json +0 -30782
  57. package/abis/contracts/WETH9.json +0 -6613
  58. package/config/amms.ts +0 -199
  59. package/config/contracts/claim-aggregators.ts +0 -16
  60. package/config/contracts/impermax-chef.ts +0 -16
  61. package/config/contracts/imxes.ts +0 -16
  62. package/config/contracts/merkle-distributors.ts +0 -13
  63. package/config/contracts/routers.ts +0 -36
  64. package/config/contracts/simple-uniswap-oracles.ts +0 -33
  65. package/config/contracts/weths.ts +0 -18
  66. package/config/debank-ids.ts +0 -15
  67. package/config/endpoints/merkle-distributors.ts +0 -13
  68. package/config/eth.ts +0 -32
  69. package/config/factories.ts +0 -26
  70. package/config/farms.ts +0 -119
  71. package/config/general.ts +0 -8
  72. package/config/subgraphs.ts +0 -69
  73. package/config/types.ts +0 -81
  74. package/impermax-router/Account.ts +0 -123
  75. package/impermax-router/AccountBorrowable.ts +0 -110
  76. package/impermax-router/AccountCollateral.ts +0 -40
  77. package/impermax-router/AccountLendingPool.ts +0 -231
  78. package/impermax-router/AccountPoolToken.ts +0 -76
  79. package/impermax-router/Borrowable.ts +0 -86
  80. package/impermax-router/Collateral.ts +0 -26
  81. package/impermax-router/ContractsHelper.ts +0 -64
  82. package/impermax-router/ImpermaxFactory.ts +0 -47
  83. package/impermax-router/Interactions.ts +0 -94
  84. package/impermax-router/InteractionsLendingPool.ts +0 -129
  85. package/impermax-router/InteractionsPoolToken.ts +0 -187
  86. package/impermax-router/LendingPool.ts +0 -256
  87. package/impermax-router/PoolToken.ts +0 -112
  88. package/impermax-router/index.ts +0 -49
  89. package/impermax-router/interfaces.ts +0 -233
  90. package/index.ts +0 -5
  91. package/subgraph/Account.ts +0 -93
  92. package/subgraph/AccountLendingPool.ts +0 -60
  93. package/subgraph/AccountPoolToken.ts +0 -60
  94. package/subgraph/LendingPool.ts +0 -179
  95. package/subgraph/PoolToken.ts +0 -381
  96. package/subgraph/PriceHelper.ts +0 -150
  97. package/subgraph/SolidexHelper.ts +0 -54
  98. package/subgraph/index.ts +0 -166
  99. package/subgraph/initializer.ts +0 -509
  100. package/subgraph/query.ts +0 -224
  101. package/tsconfig.json +0 -16
  102. package/utils/ether-utils.ts +0 -22
  103. package/utils/index.ts +0 -12
@@ -1,1195 +0,0 @@
1
- {
2
- "contractName": "BDeployer",
3
- "abi": [
4
- {
5
- "inputs": [],
6
- "payable": false,
7
- "stateMutability": "nonpayable",
8
- "type": "constructor"
9
- },
10
- {
11
- "constant": false,
12
- "inputs": [
13
- {
14
- "internalType": "address",
15
- "name": "uniswapV2Pair",
16
- "type": "address"
17
- },
18
- {
19
- "internalType": "uint8",
20
- "name": "index",
21
- "type": "uint8"
22
- }
23
- ],
24
- "name": "deployBorrowable",
25
- "outputs": [
26
- {
27
- "internalType": "address",
28
- "name": "borrowable",
29
- "type": "address"
30
- }
31
- ],
32
- "payable": false,
33
- "stateMutability": "nonpayable",
34
- "type": "function"
35
- }
36
- ],
37
- "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"uniswapV2Pair\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"deployBorrowable\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"borrowable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BDeployer.sol\":\"BDeployer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BAllowance.sol\":{\"keccak256\":\"0x252d163e2ae3fb3e23ea8d01f817e06db79e7c39038bd0df24263a88b9e863f1\",\"urls\":[\"bzz-raw://d36c298ce777c8a91fd733e8fb880f11411b2dcb7d65090bdf181a7f03db6dd8\",\"dweb:/ipfs/QmXqhsMXcn1zanrJx6WSXCHyTtbiHAxCDwdscQqwhzgg7P\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BDeployer.sol\":{\"keccak256\":\"0x32d92dde3b375eb846fce576583d929db6e5547467fb812c17ad82120b14f4fc\",\"urls\":[\"bzz-raw://2447e27b6248e6307c572a30d8057b54a51523e0f3c5a4332439fcd12e4abe73\",\"dweb:/ipfs/QmQTsNvfE7GKi1H87X8X88GtSXwuiCTGbpQTRu35J4SZjR\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BInterestRateModel.sol\":{\"keccak256\":\"0x09883d11c8f6d2d410ff37978b238e3a44c88d8405b447173945032ba041db32\",\"urls\":[\"bzz-raw://db61f09acf2dbc74b34aeab92f99ca01feacba3d5829eb8f9dec3c2692f2ea10\",\"dweb:/ipfs/QmcUNLBJ7xk2ukwF3KdaSbse7iFPvjRgpoAWTXuDbqqAUC\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BSetter.sol\":{\"keccak256\":\"0xdc3d4fd0f057840c1e4db5ec18080e8060d53e38e7e39668a18b393d7e78dd2a\",\"urls\":[\"bzz-raw://a112ea85365b06ceff910de0f014a3ab277ad61eb35e52194b5f0d6dbaf9d016\",\"dweb:/ipfs/Qme2Jvvt2ocCuED4grVpU2Yc8PCZX8GLdGMboy1xmhpN6m\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BStorage.sol\":{\"keccak256\":\"0x3dd747da5b10f85b71ddd313996775044c87003d5877351531f2fe0f286355c9\",\"urls\":[\"bzz-raw://96c21f1c978495c0fb43c6d9b336af80ef6765104e19f85a6cc9b4e76360673a\",\"dweb:/ipfs/QmYjRk4ReG2DyKPmf4wR8cqDXCVSgTNtAs7MjYWhtdQ66K\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/Borrowable.sol\":{\"keccak256\":\"0x25e12f9a4c73be87019cdd952ac93b8894f4bb4c50a4c0fabb49177c36cf3418\",\"urls\":[\"bzz-raw://d85c6b590ccf8e579eb2d16d60e457cbae1d989ead29d67d9380bf621b132d3c\",\"dweb:/ipfs/QmPhXciwbjs2E9JhnJS9UkDPpJWV4DGuYkczJZHP5b7Jvx\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/ImpermaxERC20.sol\":{\"keccak256\":\"0x7bf487094af4e32db8cc5e779450c87d86d0e65fdae32052ccad8a26462bd07c\",\"urls\":[\"bzz-raw://25b17403257768c87f754b090b283a18e32660f3ecc0ecc2b56a9d7022608756\",\"dweb:/ipfs/QmQBvgrgsqMg9msxACLXQzkP8W1mGiNg8dqYUNQfVMHYrQ\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/PoolToken.sol\":{\"keccak256\":\"0xa0a1ceee2628b2c69d8aa453f571835e3bccf47071a7290f892519e5d9e72300\",\"urls\":[\"bzz-raw://0fa208526bdbde5576895faba97fb92c5db9203fdcc81a1d5b565905999b2fa3\",\"dweb:/ipfs/QmRjuTDeq7VTufRw7ibXsD2KYXWiv72FWREp6ePv7wTRjb\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IBDeployer.sol\":{\"keccak256\":\"0x355a390f6ae04754647499879c85e4c7ef044e57b8cf7e1abd7fe3151b137941\",\"urls\":[\"bzz-raw://f9c26d8987afac1db2b0885af8012ee9690e372e31ab5c1584ec2cbf7b26e915\",\"dweb:/ipfs/QmNyjWKPymsDrYNptQ1D6PQwVWmWW5rp4m73QsUocnnym3\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IBorrowTracker.sol\":{\"keccak256\":\"0xc2ddd380effc1179ff0ca88f4733113ff8ab9b7317e75483df57abc2f4dfab0b\",\"urls\":[\"bzz-raw://3bde59cee4b505dc0ed83cc67e6a26a530b08dfe02bdaf9a8da096576a630ff5\",\"dweb:/ipfs/QmNdnZBVo4eWPirmUU8AhoC5adUbS2xferbeBi1AZkaLtW\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IBorrowable.sol\":{\"keccak256\":\"0x16a157ab22e3d76a6cf0dd89f55d6426abd8b15ac641ce318e3fa22e7dd1284b\",\"urls\":[\"bzz-raw://368476ee8b1e9d5287cbac49ceaae1e230e4ab95426a00141fbd43b6477d2928\",\"dweb:/ipfs/QmPN3cm2TJUJG3tXa6zCeCWrcitjPP6SofwHpygaiQJ9CV\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/ICollateral.sol\":{\"keccak256\":\"0x354b560bca7dcce7550c2c0c7f7ed050baf0f251277a9308fd568e03c61e1ce5\",\"urls\":[\"bzz-raw://8c422658288da6ad5055644d8dc236c37d7e58fdd83016ef37ea27459fa1dc82\",\"dweb:/ipfs/QmNigfZAkA1tNoPsmPpA6gqt9YPcxeubCiyMkowwSJ89B2\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IFactory.sol\":{\"keccak256\":\"0xc800bcea5a98412b8d52a11289f6e174cc5ecd68c3bf4ea949fe7fffac78daf0\",\"urls\":[\"bzz-raw://6985cfcce7192c6943ee2c70c0458636a50460239c0e3fae8e7a2ffc6d7fb950\",\"dweb:/ipfs/QmdTxGx9dq7YeKk7AJ2XQcroHsRUCaYTkQAetpGi1mK643\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IImpermaxCallee.sol\":{\"keccak256\":\"0x8a34b6c59347d7246d45561ea6de67b7627bee144045fce316f3225e36a2165a\",\"urls\":[\"bzz-raw://22293bc770da410f1b534be76073f28f64ab62aeba8cae7225fc2058ab2356b1\",\"dweb:/ipfs/QmUmYVC4hUgqL8YGvVbTnFGzk4QbXw7zCGeA5EkuAEJtFN\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IPoolToken.sol\":{\"keccak256\":\"0x10612c60a75d45933558f7fbba0cb4ee15c8eed3b838f326aa747f200dd9cee5\",\"urls\":[\"bzz-raw://3ab5e233942f1b60a8abd4becd18fee98bf8085643837c426c87c7f9d2ad7e50\",\"dweb:/ipfs/QmbHjUhcUkaTiRYci4WBHBERjuiZfaBu67RvncTZgbod7Y\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/libraries/Math.sol\":{\"keccak256\":\"0x17d7ca549e9f536147f717238c57cddf95880ccf1ba8abfad24a0b062d353568\",\"urls\":[\"bzz-raw://24ae906f11890c9cfd6d6213f1284d697511cb5d70d73a7cdb132e5f7d8eca94\",\"dweb:/ipfs/QmQqC1N4A5DCSdUfWF1nEN2ikKg1gGzx23LvMMtSTsS6mp\"]},\"/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/libraries/SafeMath.sol\":{\"keccak256\":\"0xe362afec478ef9d8f773dec0e95b2948fb37319f622aa48bf4079bf30b81dad3\",\"urls\":[\"bzz-raw://32072de977d6be362cff13445b105f26b07485821357a2262a70078c500c42d5\",\"dweb:/ipfs/QmPnczieHKRGB3PJESwqB4XaBnmXsJJXk4ikyg8uQPXptG\"]}},\"version\":1}",
38
- "bytecode": "0x608060405234801561001057600080fd5b50615bc7806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354bcd7ad14610030575b600080fd5b61007f6004803603604081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506100c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006060604051806020016100d5906101a1565b6020820181038252601f19601f8201166040525090506000338585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018260ff1660ff1660f81b81526001019350505050604051602081830303815290604052805190602001209050808251602084016000f59250505092915050565b6159e4806101af8339019056fe60806040526012600260006101000a81548160ff021916908360ff1602179055506001600b60006101000a81548160ff021916908315150217905550670de0b6b3a7640000600e60006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555064010000000042816200008757fe5b06600e601c6101000a81548163ffffffff021916908363ffffffff160217905550635e80a6c0601060066101000a81548165ffffffffffff021916908365ffffffffffff1602179055506401000000004281620000e057fe5b066010600c6101000a81548163ffffffff021916908363ffffffff16021790555067016345785d8a00006011556709b6e64a8ec600006012556486bd6db0206013553480156200012f57600080fd5b506158a480620001406000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806370a08231116101e9578063b7f1118a1161010f578063c914b437116100ad578063e07660001161007c578063e07660001461126d578063e12b63061461128b578063fca7820b146112b5578063fff6cae9146112e357610399565b8063c914b437146110e4578063d505accf14611112578063d8dfeb45146111ab578063dd62ed3e146111f557610399565b8063bc25cf77116100e9578063bc25cf771461101a578063be340e321461105e578063c45a01551461107c578063c72f3fbb146110c657610399565b8063b7f1118a14610f8e578063b95b92a314610fd2578063ba9a7a5614610ffc57610399565b806395a2251f11610187578063a6afed9511610156578063a6afed9514610ec2578063a9059cbb14610ecc578063aa5af0fd14610f32578063ad7a672f14610f7057610399565b806395a2251f14610d3057806395d89b4114610d885780639e79b55c14610e0b578063a071571914610ea457610399565b806386b9d81f116101c357806386b9d81f14610bf657806391b4274514610c6e578063926d845b14610c9c5780639292b03214610d0257610399565b806370a0823114610b1c578063796b89b914610b745780637ecebe0014610b9e57610399565b806335542822116102ce5780634d73e9ba1161026c5780636a030c111161023b5780636a030c11146108f45780636a62784214610a025780636bd76d2414610a5a5780636f307dc314610ad257610399565b80634d73e9ba14610816578063559572201461086e5780635b2b9d1a146108b857806368544065146108d657610399565b80634322b714116102a85780634322b71414610792578063452ae95f146107b057806347bd3718146107ce5780634a5d316c1461080c57610399565b806335542822146107125780633644e515146107565780633ba0b9a91461077457610399565b80632374e8a91161033b57806327549a0b1161031557806327549a0b146106845780632d5231d3146106b257806330adf81f146106d0578063313ce567146106ee57610399565b80632374e8a9146105c257806323b872dd146105e0578063253c24f31461066657610399565b8063095ea7b311610377578063095ea7b31461045d57806318160ddd146104c35780631aebf12f146104e15780631e7dcc0d146104ff57610399565b806301f8c1c81461039e57806306fdde03146103bc578063075f4e7f1461043f575b600080fd5b6103a66112ed565b6040518082815260200191505060405180910390f35b6103c4611314565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104045780820151818401526020810190506103e9565b50505050905090810190601f1680156104315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104476113b2565b6040518082815260200191505060405180910390f35b6104a96004803603604081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113bb565b604051808215151515815260200191505060405180910390f35b6104cb6113d2565b6040518082815260200191505060405180910390f35b6104e96113d8565b6040518082815260200191505060405180910390f35b6105c06004803603608081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460018302840111640100000000831117156105b057600080fd5b90919293919293905050506113de565b005b6105ca611a00565b6040518082815260200191505060405180910390f35b61064c600480360360608110156105f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0c565b604051808215151515815260200191505060405180910390f35b61066e611c0e565b6040518082815260200191505060405180910390f35b6106b06004803603602081101561069a57600080fd5b8101908080359060200190929190505050611c18565b005b6106ba611d27565b6040518082815260200191505060405180910390f35b6106d8611d2d565b6040518082815260200191505060405180910390f35b6106f6611d54565b604051808260ff1660ff16815260200191505060405180910390f35b6107546004803603602081101561072857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d67565b005b61075e611ece565b6040518082815260200191505060405180910390f35b61077c611ed4565b6040518082815260200191505060405180910390f35b61079a611f93565b6040518082815260200191505060405180910390f35b6107b8611f99565b6040518082815260200191505060405180910390f35b6107d6611fa2565b60405180826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200191505060405180910390f35b610814611fc1565b005b6108586004803603602081101561082c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c8565b6040518082815260200191505060405180910390f35b61087661224f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108c0612275565b6040518082815260200191505060405180910390f35b6108de61227a565b6040518082815260200191505060405180910390f35b610a006004803603608081101561090a57600080fd5b810190808035906020019064010000000081111561092757600080fd5b82018360208201111561093957600080fd5b8035906020019184600183028401116401000000008311171561095b57600080fd5b90919293919293908035906020019064010000000081111561097c57600080fd5b82018360208201111561098e57600080fd5b803590602001918460018302840111640100000000831117156109b057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612286565b005b610a4460048036036020811015610a1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612474565b6040518082815260200191505060405180910390f35b610abc60048036036040811015610a7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612787565b6040518082815260200191505060405180910390f35b610ada6127ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b5e60048036036020811015610b3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127d2565b6040518082815260200191505060405180910390f35b610b7c6127ea565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b610be060048036036020811015610bb457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612800565b6040518082815260200191505060405180910390f35b610c5860048036036040811015610c0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612818565b6040518082815260200191505060405180910390f35b610c76612bc8565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b610ce860048036036040811015610cb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612be0565b604051808215151515815260200191505060405180910390f35b610d2e60048036036020811015610d1857600080fd5b8101908080359060200190929190505050612bf7565b005b610d7260048036036020811015610d4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d0b565b6040518082815260200191505060405180910390f35b610d90612fbc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dd0578082015181840152602081019050610db5565b50505050905090810190601f168015610dfd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ea2600480360360e0811015610e2157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061305a565b005b610eac6130a1565b6040518082815260200191505060405180910390f35b610eca6130ac565b005b610f1860048036036040811015610ee257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132ff565b604051808215151515815260200191505060405180910390f35b610f3a613316565b60405180826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200191505060405180910390f35b610f78613336565b6040518082815260200191505060405180910390f35b610fd060048036036020811015610fa457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061333c565b005b610fda61337e565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b611004613394565b6040518082815260200191505060405180910390f35b61105c6004803603602081101561103057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061339a565b005b61106661354c565b6040518082815260200191505060405180910390f35b611084613552565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110ce613578565b6040518082815260200191505060405180910390f35b6110ec613584565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6111a9600480360360e081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061359c565b005b6111b36135e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6112576004803603604081101561120b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613609565b6040518082815260200191505060405180910390f35b61127561362e565b6040518082815260200191505060405180910390f35b611293613636565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6112e1600480360360208110156112cb57600080fd5b810190808035906020019092919050505061364c565b005b6112eb613759565b005b7ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f60001b81565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113aa5780601f1061137f576101008083540402835291602001916113aa565b820191906000526020600020905b81548152906001019060200180831161138d57829003601f168201915b505050505081565b640d7957c4d081565b60006113c8338484613823565b6001905092915050565b60035481565b60125481565b600b60009054906101000a900460ff16611460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506114836130ac565b6000600a54905080841115611500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496d7065726d61783a20494e53554646494349454e545f43415348000000000081525060200191505060405180910390fd5b61150b86338661390e565b600084111561151f5761151e8585613af0565b5b6000838390501115611633578473ffffffffffffffffffffffffffffffffffffffff1663876d9d9e33888787876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561161a57600080fd5b505af115801561162e573d6000803e3d6000fd5b505050505b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116d457600080fd5b505afa1580156116e8573d6000803e3d6000fd5b505050506040513d60208110156116fe57600080fd5b810190808051906020019092919050505090506000611747670de0b6b3a764000061173966038d7ea4c6800089613d5e90919063ffffffff16565b613de490919063ffffffff16565b9050600061175e8288613e2e90919063ffffffff16565b90506000611787856117798a87613e2e90919063ffffffff16565b613eb690919063ffffffff16565b905060008060006117998d8686613f00565b9250925092508385111561193257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639aac2c538e30856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561188457600080fd5b505af1158015611898573d6000803e3d6000fd5b505050506040513d60208110156118ae57600080fd5b8101908080519060200190929190505050611931576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496d7065726d61783a20494e53554646494349454e545f4c495155494449545981525060200191505060405180910390fd5b5b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f33f3048bd4e6af45e53afb722adfd57dbde82da7e93e44db921fb4b8c6a70c4b8e88888888604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a450505050505050506119de6142af565b6001600b60006101000a81548160ff0219169083151502179055505050505050565b670853a0d2313c000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611bf857611b77826040518060400160405280601e81526020017f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f5745440000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142c19092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c03848484614381565b600190509392505050565b6505436648e14081565b600b60009054906101000a900460ff16611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550611ccb81640d7957c4d06505436648e14061454c565b806013819055507f1396dfcdb64fb7eb77fb84966f27b81afe14aa70b6e966c68d74af3302a9fe90816040518082815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b60135481565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b600260009054906101000a900460ff1681565b600b60009054906101000a900460ff16611de9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550611e0c614645565b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f468b6598e7e810c65c9858b5f23a2d5b8692fb753b78a032232de4c6ed3cabbf81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b60065481565b6000611ede6130ac565b600060035490506000611f27600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600a54613e2e90919063ffffffff16565b90506000821480611f385750600081145b15611f4f57670de0b6b3a764000092505050611f90565b6000611f7e83611f70670de0b6b3a764000085613d5e90919063ffffffff16565b613de490919063ffffffff16565b9050611f8a818461478a565b93505050505b90565b60115481565b6407620d070081565b600e809054906101000a90046dffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496d7065726d61783a20464143544f52595f414c52454144595f53455400000081525060200191505060405180910390fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006120d261571d565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815250509050600081602001516dffffffffffffffffffffffffffff1614156121cd57600091505061224a565b61224681602001516dffffffffffffffffffffffffffff16612238600e60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1684600001516dffffffffffffffffffffffffffff16613d5e90919063ffffffff16565b613de490919063ffffffff16565b9150505b919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600581565b670c7d713b49da000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496d7065726d61783a20554e415554484f52495a45440000000000000000000081525060200191505060405180910390fd5b6123db86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061490f565b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000600f81905550505050505050565b6000600b60009054906101000a900460ff166124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d60208110156125de57600080fd5b810190808051906020019092919050505090506000612608600a5483613eb690919063ffffffff16565b905061263e612615611ed4565b612630670de0b6b3a764000084613d5e90919063ffffffff16565b613de490919063ffffffff16565b925060006003541415612670576126606103e884613eb690919063ffffffff16565b925061266f60006103e8614a1b565b5b600083116126e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496d7065726d61783a204d494e545f414d4f554e545f5a45524f00000000000081525060200191505060405180910390fd5b6126f08484614a1b565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8386604051808381526020018281526020019250505060405180910390a350506127676142af565b6001600b60006101000a81548160ff021916908315150217905550919050565b600c602052816000526040600020602052806000526040600020600091509150505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b600064010000000042816127fa57fe5b06905090565b60076020528060005260406000206000915090505481565b6000600b60009054906101000a900460ff1661289c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506128bf6130ac565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561296057600080fd5b505afa158015612974573d6000803e3d6000fd5b505050506040513d602081101561298a57600080fd5b8101908080519060200190929190505050905060006129b4600a5483613eb690919063ffffffff16565b905060006129ca6129c4876120c8565b83614b35565b9050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2a02ff18688846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612aa957600080fd5b505af1158015612abd573d6000803e3d6000fd5b505050506040513d6020811015612ad357600080fd5b810190808051906020019092919050505093506000806000612af789600087613f00565b9250925092508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fb0dbe18c6ffdf0da655dd690e77211d379205c497be44c64447c3f5f021b51678a89888888604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a4505050505050612ba76142af565b6001600b60006101000a81548160ff02191690831515021790555092915050565b601060069054906101000a900465ffffffffffff1681565b6000612bed338484614b4e565b6001905092915050565b600b60009054906101000a900460ff16612c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550612caf81670853a0d2313c0000670c7d713b49da000061454c565b806012819055507f7a550b1995ff63260fb313f12024e66e73bad425372e5af6b1e04cb3799ef38c816040518082815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b6000600b60009054906101000a900460ff16612d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612e22670de0b6b3a7640000612e14612e05611ed4565b84613d5e90919063ffffffff16565b613de490919063ffffffff16565b915060008211612e9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496d7065726d61783a2052454445454d5f414d4f554e545f5a45524f0000000081525060200191505060405180910390fd5b600a54821115612f12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496d7065726d61783a20494e53554646494349454e545f43415348000000000081525060200191505060405180910390fd5b612f1c8383613af0565b612f263082614c39565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc8484604051808381526020018281526020019250505060405180910390a350612f9c6142af565b6001600b60006101000a81548160ff021916908315150217905550919050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130525780601f1061302757610100808354040283529160200191613052565b820191906000526020600020905b81548152906001019060200180831161303557829003601f168201915b505050505081565b61308d878787878787877ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f60001b614d53565b613098878787614b4e565b50505050505050565b66038d7ea4c6800081565b6000600e60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000600e601c9054906101000a900463ffffffff169050600061312e6127ea565b90508063ffffffff168263ffffffff16141561314d57505050506132fd565b6000828203905081600e601c6101000a81548163ffffffff021916908363ffffffff16021790555060006131ac8263ffffffff16601060009054906101000a900465ffffffffffff1665ffffffffffff16613d5e90919063ffffffff16565b905060006131dd670de0b6b3a76400006131cf8885613d5e90919063ffffffff16565b613de490919063ffffffff16565b90506131f28187613e2e90919063ffffffff16565b9550613233613224670de0b6b3a76400006132168a86613d5e90919063ffffffff16565b613de490919063ffffffff16565b88613e2e90919063ffffffff16565b965061323e8761506a565b600e60006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555061327b8661506a565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055507f875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb981888860405180848152602001838152602001828152602001935050505060405180910390a1505050505050505b565b600061330c338484614381565b6001905092915050565b600e60009054906101000a90046dffffffffffffffffffffffffffff1681565b600a5481565b61337b81613349836120c8565b600e60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166150f8565b50565b600e601c9054906101000a900463ffffffff1681565b6103e881565b600b60009054906101000a900460ff1661341c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff02191690831515021790555061352e81613529600a54600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156134e057600080fd5b505afa1580156134f4573d6000803e3d6000fd5b505050506040513d602081101561350a57600080fd5b8101908080519060200190929190505050613eb690919063ffffffff16565b613af0565b6001600b60006101000a81548160ff02191690831515021790555050565b600f5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6702c68af0bb14000081565b601060009054906101000a900465ffffffffffff1681565b6135cf878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b614d53565b6135da878787613823565b50505050505050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b6312e687c081565b6010600c9054906101000a900463ffffffff1681565b600b60009054906101000a900460ff166136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506136fd8160006702c68af0bb14000061454c565b806011819055507f9d9cd27245b4e6b06dcf523ac57b6e851b934e199eee376313f906e94bfbfd55816040518082815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b600b60009054906101000a900460ff166137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506137fe6130ac565b6138066142af565b6001600b60006101000a81548160ff021916908315150217905550565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156139eb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15613aea5781811015613a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496d7065726d61783a20424f52524f575f4e4f545f414c4c4f5745440000000081525060200191505060405180910390fd5b818103600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b60006060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310613c3f5780518252602082019150602081019050602083039250613c1c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ca1576040519150601f19603f3d011682016040523d82523d6000602084013e613ca6565b606091505b5091509150818015613ce65750600081511480613ce55750808060200190516020811015613cd357600080fd5b81019080805190602001909291905050505b5b613d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496d7065726d61783a205452414e534645525f4641494c45440000000000000081525060200191505060405180910390fd5b50505050565b600080831415613d715760009050613dde565b6000828402905082848281613d8257fe5b0414613dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061584f6021913960400191505060405180910390fd5b809150505b92915050565b6000613e2683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615208565b905092915050565b600080828401905083811015613eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613ef883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506142c1565b905092915050565b6000806000613f0e866120c8565b925083851415613f54578283600e809054906101000a90046dffffffffffffffffffffffffffff16806dffffffffffffffffffffffffffff1690509250925092506142a6565b6000600e60009054906101000a90046dffffffffffffffffffffffffffff169050848611156140d5576000600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008688039050613fda8187613e2e90919063ffffffff16565b9450613fe58561506a565b8260000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508282600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555061409081600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613e2e90919063ffffffff16565b935061409b8461506a565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050614289565b6000600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000878703905080861161412d576000614131565b8086035b945061413c8561506a565b8260000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060008514156141b857600082600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055506141f0565b8282600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505b60006142058688613eb690919063ffffffff16565b9050600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff169450808511614243576000614247565b8085035b94506142528561506a565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050505b6142a48784836dffffffffffffffffffffffffffff166150f8565b505b93509350939050565b6142b76152ce565b6142bf6153e9565b565b600083831115829061436e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614333578082015181840152602081019050614318565b50505050905090810190601f1680156143605780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61440a816040518060400160405280601b81526020017f496d7065726d61783a205452414e534645525f544f4f5f484947480000000000815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142c19092919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449f81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e2e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b614554614645565b818310156145ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496d7065726d61783a20494e56414c49445f53455454494e470000000000000081525060200191505060405180910390fd5b80831115614640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496d7065726d61783a20494e56414c49445f53455454494e470000000000000081525060200191505060405180910390fd5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156146ad57600080fd5b505afa1580156146c1573d6000803e3d6000fd5b505050506040513d60208110156146d757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496d7065726d61783a20554e415554484f52495a45440000000000000000000081525060200191505060405180910390fd5b565b600080600f549050808411156149045760006147ef6147e0670de0b6b3a76400006147d26011546147c4878b613eb690919063ffffffff16565b613d5e90919063ffffffff16565b613de490919063ffffffff16565b86613eb690919063ffffffff16565b9050600061482a8561481c8461480e8a8a613d5e90919063ffffffff16565b613de490919063ffffffff16565b613eb690919063ffffffff16565b9050600081141561484057859350505050614909565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345ef9416040518163ffffffff1660e01b815260040160206040518083038186803b1580156148aa57600080fd5b505afa1580156148be573d6000803e3d6000fd5b505050506040513d60208110156148d457600080fd5b810190808051906020019092919050505090506148f18183614a1b565b82600f8190555082945050505050614909565b839150505b92915050565b8160009080519060200190614925929190615757565b50806001908051906020019061493c929190615757565b50600046905060405180806157fd605291396052019050604051809103902083805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120600681905550505050565b614a3081600354613e2e90919063ffffffff16565b600381905550614a8881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e2e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310614b445781614b46565b825b905092915050565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3c1215b41d54142382d54a05fb991007165ae91bcb1879bac8b290d9111aaf4836040518082815260200191505060405180910390a3505050565b614c8b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613eb690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ce381600354613eb690919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b42851015614dc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496d7065726d61783a204558504952454400000000000000000000000000000081525060200191505060405180910390fd5b6000600654828a8a8a600760008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614f78573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015614fec57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61505e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496d7065726d61783a20494e56414c49445f5349474e4154555245000000000081525060200191505060405180910390fd5b50505050505050505050565b60006e01000000000000000000000000000082106150f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496d7065726d61783a205341464531313200000000000000000000000000000081525060200191505060405180910390fd5b819050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561515a5750615203565b8073ffffffffffffffffffffffffffffffffffffffff166305285d7f8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156151e957600080fd5b505af11580156151fd573d6000803e3d6000fd5b50505050505b505050565b600080831182906152b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561527957808201518184015260208101905061525e565b50505050905090810190601f1680156152a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816152c057fe5b049050809150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561536d57600080fd5b505afa158015615381573d6000803e3d6000fd5b505050506040513d602081101561539757600080fd5b8101908080519060200190929190505050600a819055507f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf4600a546040518082815260200191505060405180910390a1565b60006012549050600060135490506000601060009054906101000a900465ffffffffffff1665ffffffffffff1690506000601060069054906101000a900465ffffffffffff1665ffffffffffff16905060006010600c9054906101000a900463ffffffff16905060008161545b6127ea565b03905060008163ffffffff1611156155e0576154756127ea565b6010600c6101000a81548163ffffffff021916908363ffffffff1602179055506000838510156154fe576000670de0b6b3a76400008363ffffffff168887670de0b6b3a76400008a8a0302816154c757fe5b040202816154d157fe5b049050670de0b6b3a764000081116154f35780670de0b6b3a7640000036154f6565b60005b915050615542565b6000670de0b6b3a76400008363ffffffff168887670de0b6b3a7640000898b03028161552657fe5b0402028161553057fe5b049050670de0b6b3a764000081019150505b670de0b6b3a76400008185028161555557fe5b0493506407620d070084111561556e576407620d070093505b6312e687c0841015615582576312e687c093505b83601060066101000a81548165ffffffffffff021916908365ffffffffffff1602179055507f713a98ffb7d769b8e33e2ee945ebb6acb7f397532688164d3ce1081f903c77bc846040518082815260200191505060405180910390a1505b600080600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff169050600061562882600a54613e2e90919063ffffffff16565b90506000811461564b5780670de0b6b3a764000083028161564557fe5b0461564e565b60005b9250505086811161566c57868185028161566457fe5b0494506156b8565b600087670de0b6b3a764000003670de0b6b3a7640000898403028161568d57fe5b049050670de0b6b3a764000085670de0b6b3a7640000836001600503020102816156b357fe5b049550505b84601060006101000a81548165ffffffffffff021916908365ffffffffffff1602179055507f338541dc9083f6af6715482fb419e1483c1ae9097764fd68a5dc98109bd5a788856040518082815260200191505060405180910390a150505050505050565b604051806040016040528060006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061579857805160ff19168380011785556157c6565b828001600101855582156157c6579182015b828111156157c55782518255916020019190600101906157aa565b5b5090506157d391906157d7565b5090565b6157f991905b808211156157f55760008160009055506001016157dd565b5090565b9056fe454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582061b95e98f600883328f4345f410e389b22f8b24fc3c01594efdc9999e6525c8b64736f6c63430005100032a265627a7a72315820ad2a8da74105b50d867d21171b5f2e8a79cf670bf5b11b2c8764410da243bf8164736f6c63430005100032",
39
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806354bcd7ad14610030575b600080fd5b61007f6004803603604081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506100c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006060604051806020016100d5906101a1565b6020820181038252601f19601f8201166040525090506000338585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018260ff1660ff1660f81b81526001019350505050604051602081830303815290604052805190602001209050808251602084016000f59250505092915050565b6159e4806101af8339019056fe60806040526012600260006101000a81548160ff021916908360ff1602179055506001600b60006101000a81548160ff021916908315150217905550670de0b6b3a7640000600e60006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555064010000000042816200008757fe5b06600e601c6101000a81548163ffffffff021916908363ffffffff160217905550635e80a6c0601060066101000a81548165ffffffffffff021916908365ffffffffffff1602179055506401000000004281620000e057fe5b066010600c6101000a81548163ffffffff021916908363ffffffff16021790555067016345785d8a00006011556709b6e64a8ec600006012556486bd6db0206013553480156200012f57600080fd5b506158a480620001406000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806370a08231116101e9578063b7f1118a1161010f578063c914b437116100ad578063e07660001161007c578063e07660001461126d578063e12b63061461128b578063fca7820b146112b5578063fff6cae9146112e357610399565b8063c914b437146110e4578063d505accf14611112578063d8dfeb45146111ab578063dd62ed3e146111f557610399565b8063bc25cf77116100e9578063bc25cf771461101a578063be340e321461105e578063c45a01551461107c578063c72f3fbb146110c657610399565b8063b7f1118a14610f8e578063b95b92a314610fd2578063ba9a7a5614610ffc57610399565b806395a2251f11610187578063a6afed9511610156578063a6afed9514610ec2578063a9059cbb14610ecc578063aa5af0fd14610f32578063ad7a672f14610f7057610399565b806395a2251f14610d3057806395d89b4114610d885780639e79b55c14610e0b578063a071571914610ea457610399565b806386b9d81f116101c357806386b9d81f14610bf657806391b4274514610c6e578063926d845b14610c9c5780639292b03214610d0257610399565b806370a0823114610b1c578063796b89b914610b745780637ecebe0014610b9e57610399565b806335542822116102ce5780634d73e9ba1161026c5780636a030c111161023b5780636a030c11146108f45780636a62784214610a025780636bd76d2414610a5a5780636f307dc314610ad257610399565b80634d73e9ba14610816578063559572201461086e5780635b2b9d1a146108b857806368544065146108d657610399565b80634322b714116102a85780634322b71414610792578063452ae95f146107b057806347bd3718146107ce5780634a5d316c1461080c57610399565b806335542822146107125780633644e515146107565780633ba0b9a91461077457610399565b80632374e8a91161033b57806327549a0b1161031557806327549a0b146106845780632d5231d3146106b257806330adf81f146106d0578063313ce567146106ee57610399565b80632374e8a9146105c257806323b872dd146105e0578063253c24f31461066657610399565b8063095ea7b311610377578063095ea7b31461045d57806318160ddd146104c35780631aebf12f146104e15780631e7dcc0d146104ff57610399565b806301f8c1c81461039e57806306fdde03146103bc578063075f4e7f1461043f575b600080fd5b6103a66112ed565b6040518082815260200191505060405180910390f35b6103c4611314565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104045780820151818401526020810190506103e9565b50505050905090810190601f1680156104315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104476113b2565b6040518082815260200191505060405180910390f35b6104a96004803603604081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113bb565b604051808215151515815260200191505060405180910390f35b6104cb6113d2565b6040518082815260200191505060405180910390f35b6104e96113d8565b6040518082815260200191505060405180910390f35b6105c06004803603608081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460018302840111640100000000831117156105b057600080fd5b90919293919293905050506113de565b005b6105ca611a00565b6040518082815260200191505060405180910390f35b61064c600480360360608110156105f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0c565b604051808215151515815260200191505060405180910390f35b61066e611c0e565b6040518082815260200191505060405180910390f35b6106b06004803603602081101561069a57600080fd5b8101908080359060200190929190505050611c18565b005b6106ba611d27565b6040518082815260200191505060405180910390f35b6106d8611d2d565b6040518082815260200191505060405180910390f35b6106f6611d54565b604051808260ff1660ff16815260200191505060405180910390f35b6107546004803603602081101561072857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d67565b005b61075e611ece565b6040518082815260200191505060405180910390f35b61077c611ed4565b6040518082815260200191505060405180910390f35b61079a611f93565b6040518082815260200191505060405180910390f35b6107b8611f99565b6040518082815260200191505060405180910390f35b6107d6611fa2565b60405180826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200191505060405180910390f35b610814611fc1565b005b6108586004803603602081101561082c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120c8565b6040518082815260200191505060405180910390f35b61087661224f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108c0612275565b6040518082815260200191505060405180910390f35b6108de61227a565b6040518082815260200191505060405180910390f35b610a006004803603608081101561090a57600080fd5b810190808035906020019064010000000081111561092757600080fd5b82018360208201111561093957600080fd5b8035906020019184600183028401116401000000008311171561095b57600080fd5b90919293919293908035906020019064010000000081111561097c57600080fd5b82018360208201111561098e57600080fd5b803590602001918460018302840111640100000000831117156109b057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612286565b005b610a4460048036036020811015610a1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612474565b6040518082815260200191505060405180910390f35b610abc60048036036040811015610a7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612787565b6040518082815260200191505060405180910390f35b610ada6127ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b5e60048036036020811015610b3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127d2565b6040518082815260200191505060405180910390f35b610b7c6127ea565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b610be060048036036020811015610bb457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612800565b6040518082815260200191505060405180910390f35b610c5860048036036040811015610c0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612818565b6040518082815260200191505060405180910390f35b610c76612bc8565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b610ce860048036036040811015610cb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612be0565b604051808215151515815260200191505060405180910390f35b610d2e60048036036020811015610d1857600080fd5b8101908080359060200190929190505050612bf7565b005b610d7260048036036020811015610d4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d0b565b6040518082815260200191505060405180910390f35b610d90612fbc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dd0578082015181840152602081019050610db5565b50505050905090810190601f168015610dfd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610ea2600480360360e0811015610e2157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061305a565b005b610eac6130a1565b6040518082815260200191505060405180910390f35b610eca6130ac565b005b610f1860048036036040811015610ee257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132ff565b604051808215151515815260200191505060405180910390f35b610f3a613316565b60405180826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200191505060405180910390f35b610f78613336565b6040518082815260200191505060405180910390f35b610fd060048036036020811015610fa457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061333c565b005b610fda61337e565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b611004613394565b6040518082815260200191505060405180910390f35b61105c6004803603602081101561103057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061339a565b005b61106661354c565b6040518082815260200191505060405180910390f35b611084613552565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110ce613578565b6040518082815260200191505060405180910390f35b6110ec613584565b604051808265ffffffffffff1665ffffffffffff16815260200191505060405180910390f35b6111a9600480360360e081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061359c565b005b6111b36135e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6112576004803603604081101561120b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613609565b6040518082815260200191505060405180910390f35b61127561362e565b6040518082815260200191505060405180910390f35b611293613636565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6112e1600480360360208110156112cb57600080fd5b810190808035906020019092919050505061364c565b005b6112eb613759565b005b7ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f60001b81565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113aa5780601f1061137f576101008083540402835291602001916113aa565b820191906000526020600020905b81548152906001019060200180831161138d57829003601f168201915b505050505081565b640d7957c4d081565b60006113c8338484613823565b6001905092915050565b60035481565b60125481565b600b60009054906101000a900460ff16611460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506114836130ac565b6000600a54905080841115611500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496d7065726d61783a20494e53554646494349454e545f43415348000000000081525060200191505060405180910390fd5b61150b86338661390e565b600084111561151f5761151e8585613af0565b5b6000838390501115611633578473ffffffffffffffffffffffffffffffffffffffff1663876d9d9e33888787876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561161a57600080fd5b505af115801561162e573d6000803e3d6000fd5b505050505b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116d457600080fd5b505afa1580156116e8573d6000803e3d6000fd5b505050506040513d60208110156116fe57600080fd5b810190808051906020019092919050505090506000611747670de0b6b3a764000061173966038d7ea4c6800089613d5e90919063ffffffff16565b613de490919063ffffffff16565b9050600061175e8288613e2e90919063ffffffff16565b90506000611787856117798a87613e2e90919063ffffffff16565b613eb690919063ffffffff16565b905060008060006117998d8686613f00565b9250925092508385111561193257600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639aac2c538e30856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561188457600080fd5b505af1158015611898573d6000803e3d6000fd5b505050506040513d60208110156118ae57600080fd5b8101908080519060200190929190505050611931576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496d7065726d61783a20494e53554646494349454e545f4c495155494449545981525060200191505060405180910390fd5b5b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f33f3048bd4e6af45e53afb722adfd57dbde82da7e93e44db921fb4b8c6a70c4b8e88888888604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a450505050505050506119de6142af565b6001600b60006101000a81548160ff0219169083151502179055505050505050565b670853a0d2313c000081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611bf857611b77826040518060400160405280601e81526020017f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f5745440000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142c19092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c03848484614381565b600190509392505050565b6505436648e14081565b600b60009054906101000a900460ff16611c9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550611ccb81640d7957c4d06505436648e14061454c565b806013819055507f1396dfcdb64fb7eb77fb84966f27b81afe14aa70b6e966c68d74af3302a9fe90816040518082815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b60135481565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b600260009054906101000a900460ff1681565b600b60009054906101000a900460ff16611de9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550611e0c614645565b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f468b6598e7e810c65c9858b5f23a2d5b8692fb753b78a032232de4c6ed3cabbf81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b60065481565b6000611ede6130ac565b600060035490506000611f27600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600a54613e2e90919063ffffffff16565b90506000821480611f385750600081145b15611f4f57670de0b6b3a764000092505050611f90565b6000611f7e83611f70670de0b6b3a764000085613d5e90919063ffffffff16565b613de490919063ffffffff16565b9050611f8a818461478a565b93505050505b90565b60115481565b6407620d070081565b600e809054906101000a90046dffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496d7065726d61783a20464143544f52595f414c52454144595f53455400000081525060200191505060405180910390fd5b33600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006120d261571d565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815260200160008201600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815250509050600081602001516dffffffffffffffffffffffffffff1614156121cd57600091505061224a565b61224681602001516dffffffffffffffffffffffffffff16612238600e60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1684600001516dffffffffffffffffffffffffffff16613d5e90919063ffffffff16565b613de490919063ffffffff16565b9150505b919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600581565b670c7d713b49da000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496d7065726d61783a20554e415554484f52495a45440000000000000000000081525060200191505060405180910390fd5b6123db86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061490f565b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000600f81905550505050505050565b6000600b60009054906101000a900460ff166124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d60208110156125de57600080fd5b810190808051906020019092919050505090506000612608600a5483613eb690919063ffffffff16565b905061263e612615611ed4565b612630670de0b6b3a764000084613d5e90919063ffffffff16565b613de490919063ffffffff16565b925060006003541415612670576126606103e884613eb690919063ffffffff16565b925061266f60006103e8614a1b565b5b600083116126e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496d7065726d61783a204d494e545f414d4f554e545f5a45524f00000000000081525060200191505060405180910390fd5b6126f08484614a1b565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8386604051808381526020018281526020019250505060405180910390a350506127676142af565b6001600b60006101000a81548160ff021916908315150217905550919050565b600c602052816000526040600020602052806000526040600020600091509150505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b600064010000000042816127fa57fe5b06905090565b60076020528060005260406000206000915090505481565b6000600b60009054906101000a900460ff1661289c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506128bf6130ac565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561296057600080fd5b505afa158015612974573d6000803e3d6000fd5b505050506040513d602081101561298a57600080fd5b8101908080519060200190929190505050905060006129b4600a5483613eb690919063ffffffff16565b905060006129ca6129c4876120c8565b83614b35565b9050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2a02ff18688846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612aa957600080fd5b505af1158015612abd573d6000803e3d6000fd5b505050506040513d6020811015612ad357600080fd5b810190808051906020019092919050505093506000806000612af789600087613f00565b9250925092508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fb0dbe18c6ffdf0da655dd690e77211d379205c497be44c64447c3f5f021b51678a89888888604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a4505050505050612ba76142af565b6001600b60006101000a81548160ff02191690831515021790555092915050565b601060069054906101000a900465ffffffffffff1681565b6000612bed338484614b4e565b6001905092915050565b600b60009054906101000a900460ff16612c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff021916908315150217905550612caf81670853a0d2313c0000670c7d713b49da000061454c565b806012819055507f7a550b1995ff63260fb313f12024e66e73bad425372e5af6b1e04cb3799ef38c816040518082815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b6000600b60009054906101000a900460ff16612d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612e22670de0b6b3a7640000612e14612e05611ed4565b84613d5e90919063ffffffff16565b613de490919063ffffffff16565b915060008211612e9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496d7065726d61783a2052454445454d5f414d4f554e545f5a45524f0000000081525060200191505060405180910390fd5b600a54821115612f12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496d7065726d61783a20494e53554646494349454e545f43415348000000000081525060200191505060405180910390fd5b612f1c8383613af0565b612f263082614c39565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc8484604051808381526020018281526020019250505060405180910390a350612f9c6142af565b6001600b60006101000a81548160ff021916908315150217905550919050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130525780601f1061302757610100808354040283529160200191613052565b820191906000526020600020905b81548152906001019060200180831161303557829003601f168201915b505050505081565b61308d878787878787877ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f60001b614d53565b613098878787614b4e565b50505050505050565b66038d7ea4c6800081565b6000600e60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1690506000600e601c9054906101000a900463ffffffff169050600061312e6127ea565b90508063ffffffff168263ffffffff16141561314d57505050506132fd565b6000828203905081600e601c6101000a81548163ffffffff021916908363ffffffff16021790555060006131ac8263ffffffff16601060009054906101000a900465ffffffffffff1665ffffffffffff16613d5e90919063ffffffff16565b905060006131dd670de0b6b3a76400006131cf8885613d5e90919063ffffffff16565b613de490919063ffffffff16565b90506131f28187613e2e90919063ffffffff16565b9550613233613224670de0b6b3a76400006132168a86613d5e90919063ffffffff16565b613de490919063ffffffff16565b88613e2e90919063ffffffff16565b965061323e8761506a565b600e60006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555061327b8661506a565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055507f875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb981888860405180848152602001838152602001828152602001935050505060405180910390a1505050505050505b565b600061330c338484614381565b6001905092915050565b600e60009054906101000a90046dffffffffffffffffffffffffffff1681565b600a5481565b61337b81613349836120c8565b600e60009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166150f8565b50565b600e601c9054906101000a900463ffffffff1681565b6103e881565b600b60009054906101000a900460ff1661341c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff02191690831515021790555061352e81613529600a54600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156134e057600080fd5b505afa1580156134f4573d6000803e3d6000fd5b505050506040513d602081101561350a57600080fd5b8101908080519060200190929190505050613eb690919063ffffffff16565b613af0565b6001600b60006101000a81548160ff02191690831515021790555050565b600f5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6702c68af0bb14000081565b601060009054906101000a900465ffffffffffff1681565b6135cf878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b614d53565b6135da878787613823565b50505050505050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b6312e687c081565b6010600c9054906101000a900463ffffffff1681565b600b60009054906101000a900460ff166136ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506136fd8160006702c68af0bb14000061454c565b806011819055507f9d9cd27245b4e6b06dcf523ac57b6e851b934e199eee376313f906e94bfbfd55816040518082815260200191505060405180910390a16001600b60006101000a81548160ff02191690831515021790555050565b600b60009054906101000a900460ff166137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f496d7065726d61783a205245454e54455245440000000000000000000000000081525060200191505060405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506137fe6130ac565b6138066142af565b6001600b60006101000a81548160ff021916908315150217905550565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156139eb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15613aea5781811015613a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496d7065726d61783a20424f52524f575f4e4f545f414c4c4f5745440000000081525060200191505060405180910390fd5b818103600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050565b60006060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310613c3f5780518252602082019150602081019050602083039250613c1c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ca1576040519150601f19603f3d011682016040523d82523d6000602084013e613ca6565b606091505b5091509150818015613ce65750600081511480613ce55750808060200190516020811015613cd357600080fd5b81019080805190602001909291905050505b5b613d58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496d7065726d61783a205452414e534645525f4641494c45440000000000000081525060200191505060405180910390fd5b50505050565b600080831415613d715760009050613dde565b6000828402905082848281613d8257fe5b0414613dd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061584f6021913960400191505060405180910390fd5b809150505b92915050565b6000613e2683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615208565b905092915050565b600080828401905083811015613eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613ef883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506142c1565b905092915050565b6000806000613f0e866120c8565b925083851415613f54578283600e809054906101000a90046dffffffffffffffffffffffffffff16806dffffffffffffffffffffffffffff1690509250925092506142a6565b6000600e60009054906101000a90046dffffffffffffffffffffffffffff169050848611156140d5576000600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008688039050613fda8187613e2e90919063ffffffff16565b9450613fe58561506a565b8260000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508282600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555061409081600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613e2e90919063ffffffff16565b935061409b8461506a565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050614289565b6000600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000878703905080861161412d576000614131565b8086035b945061413c8561506a565b8260000160006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555060008514156141b857600082600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055506141f0565b8282600001600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505b60006142058688613eb690919063ffffffff16565b9050600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff169450808511614243576000614247565b8085035b94506142528561506a565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050505b6142a48784836dffffffffffffffffffffffffffff166150f8565b505b93509350939050565b6142b76152ce565b6142bf6153e9565b565b600083831115829061436e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614333578082015181840152602081019050614318565b50505050905090810190601f1680156143605780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61440a816040518060400160405280601b81526020017f496d7065726d61783a205452414e534645525f544f4f5f484947480000000000815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142c19092919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449f81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e2e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b614554614645565b818310156145ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496d7065726d61783a20494e56414c49445f53455454494e470000000000000081525060200191505060405180910390fd5b80831115614640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496d7065726d61783a20494e56414c49445f53455454494e470000000000000081525060200191505060405180910390fd5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156146ad57600080fd5b505afa1580156146c1573d6000803e3d6000fd5b505050506040513d60208110156146d757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496d7065726d61783a20554e415554484f52495a45440000000000000000000081525060200191505060405180910390fd5b565b600080600f549050808411156149045760006147ef6147e0670de0b6b3a76400006147d26011546147c4878b613eb690919063ffffffff16565b613d5e90919063ffffffff16565b613de490919063ffffffff16565b86613eb690919063ffffffff16565b9050600061482a8561481c8461480e8a8a613d5e90919063ffffffff16565b613de490919063ffffffff16565b613eb690919063ffffffff16565b9050600081141561484057859350505050614909565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345ef9416040518163ffffffff1660e01b815260040160206040518083038186803b1580156148aa57600080fd5b505afa1580156148be573d6000803e3d6000fd5b505050506040513d60208110156148d457600080fd5b810190808051906020019092919050505090506148f18183614a1b565b82600f8190555082945050505050614909565b839150505b92915050565b8160009080519060200190614925929190615757565b50806001908051906020019061493c929190615757565b50600046905060405180806157fd605291396052019050604051809103902083805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120600681905550505050565b614a3081600354613e2e90919063ffffffff16565b600381905550614a8881600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e2e90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310614b445781614b46565b825b905092915050565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3c1215b41d54142382d54a05fb991007165ae91bcb1879bac8b290d9111aaf4836040518082815260200191505060405180910390a3505050565b614c8b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613eb690919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ce381600354613eb690919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b42851015614dc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496d7065726d61783a204558504952454400000000000000000000000000000081525060200191505060405180910390fd5b6000600654828a8a8a600760008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614f78573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015614fec57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61505e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496d7065726d61783a20494e56414c49445f5349474e4154555245000000000081525060200191505060405180910390fd5b50505050505050505050565b60006e01000000000000000000000000000082106150f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496d7065726d61783a205341464531313200000000000000000000000000000081525060200191505060405180910390fd5b819050919050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561515a5750615203565b8073ffffffffffffffffffffffffffffffffffffffff166305285d7f8585856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156151e957600080fd5b505af11580156151fd573d6000803e3d6000fd5b50505050505b505050565b600080831182906152b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561527957808201518184015260208101905061525e565b50505050905090810190601f1680156152a65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816152c057fe5b049050809150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561536d57600080fd5b505afa158015615381573d6000803e3d6000fd5b505050506040513d602081101561539757600080fd5b8101908080519060200190929190505050600a819055507f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf4600a546040518082815260200191505060405180910390a1565b60006012549050600060135490506000601060009054906101000a900465ffffffffffff1665ffffffffffff1690506000601060069054906101000a900465ffffffffffff1665ffffffffffff16905060006010600c9054906101000a900463ffffffff16905060008161545b6127ea565b03905060008163ffffffff1611156155e0576154756127ea565b6010600c6101000a81548163ffffffff021916908363ffffffff1602179055506000838510156154fe576000670de0b6b3a76400008363ffffffff168887670de0b6b3a76400008a8a0302816154c757fe5b040202816154d157fe5b049050670de0b6b3a764000081116154f35780670de0b6b3a7640000036154f6565b60005b915050615542565b6000670de0b6b3a76400008363ffffffff168887670de0b6b3a7640000898b03028161552657fe5b0402028161553057fe5b049050670de0b6b3a764000081019150505b670de0b6b3a76400008185028161555557fe5b0493506407620d070084111561556e576407620d070093505b6312e687c0841015615582576312e687c093505b83601060066101000a81548165ffffffffffff021916908365ffffffffffff1602179055507f713a98ffb7d769b8e33e2ee945ebb6acb7f397532688164d3ce1081f903c77bc846040518082815260200191505060405180910390a1505b600080600e809054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff169050600061562882600a54613e2e90919063ffffffff16565b90506000811461564b5780670de0b6b3a764000083028161564557fe5b0461564e565b60005b9250505086811161566c57868185028161566457fe5b0494506156b8565b600087670de0b6b3a764000003670de0b6b3a7640000898403028161568d57fe5b049050670de0b6b3a764000085670de0b6b3a7640000836001600503020102816156b357fe5b049550505b84601060006101000a81548165ffffffffffff021916908365ffffffffffff1602179055507f338541dc9083f6af6715482fb419e1483c1ae9097764fd68a5dc98109bd5a788856040518082815260200191505060405180910390a150505050505050565b604051806040016040528060006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061579857805160ff19168380011785556157c6565b828001600101855582156157c6579182015b828111156157c55782518255916020019190600101906157aa565b5b5090506157d391906157d7565b5090565b6157f991905b808211156157f55760008160009055506001016157dd565b5090565b9056fe454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582061b95e98f600883328f4345f410e389b22f8b24fc3c01594efdc9999e6525c8b64736f6c63430005100032a265627a7a72315820ad2a8da74105b50d867d21171b5f2e8a79cf670bf5b11b2c8764410da243bf8164736f6c63430005100032",
40
- "sourceMap": "230:404:5:-;;;267:24;8:9:-1;5:2;;;30:1;27;20:12;5:2;267:24:5;230:404;;;;;;",
41
- "deployedSourceMap": "230:404:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:404:5;;;;;;;;;;;;;;;;;;;297:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;297:334:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;377:18;402:21;426:29;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;426:29:5;402:53;;460:12;502:10;514:13;529:5;485:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;485:50:5;;;475:61;;;;;;460:76;;617:4;606:8;600:15;595:2;585:8;581:17;578:1;570:52;556:66;;550:77;;;;;;:::o;230:404::-;;;;;;;;:::o",
42
- "source": "pragma solidity =0.5.16;\r\n\r\nimport \"./Borrowable.sol\";\r\nimport \"./interfaces/IBDeployer.sol\";\r\n\r\n/*\r\n * This contract is used by the Factory to deploy Borrowable(s)\r\n * The bytecode would be too long to fit in the Factory\r\n */\r\n\r\ncontract BDeployer is IBDeployer {\r\n\tconstructor () public {}\r\n\t\r\n\tfunction deployBorrowable(address uniswapV2Pair, uint8 index) external returns (address borrowable) {\r\n\t\tbytes memory bytecode = type(Borrowable).creationCode;\r\n\t\tbytes32 salt = keccak256(abi.encodePacked(msg.sender, uniswapV2Pair, index));\r\n\t\tassembly {\r\n\t\t\tborrowable := create2(0, add(bytecode, 32), mload(bytecode), salt)\r\n\t\t}\r\n\t}\r\n}",
43
- "sourcePath": "C:/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BDeployer.sol",
44
- "ast": {
45
- "absolutePath": "/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BDeployer.sol",
46
- "exportedSymbols": {
47
- "BDeployer": [
48
- 1101
49
- ]
50
- },
51
- "id": 1102,
52
- "nodeType": "SourceUnit",
53
- "nodes": [
54
- {
55
- "id": 1062,
56
- "literals": [
57
- "solidity",
58
- "=",
59
- "0.5",
60
- ".16"
61
- ],
62
- "nodeType": "PragmaDirective",
63
- "src": "0:24:5"
64
- },
65
- {
66
- "absolutePath": "/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/Borrowable.sol",
67
- "file": "./Borrowable.sol",
68
- "id": 1063,
69
- "nodeType": "ImportDirective",
70
- "scope": 1102,
71
- "sourceUnit": 2439,
72
- "src": "28:26:5",
73
- "symbolAliases": [],
74
- "unitAlias": ""
75
- },
76
- {
77
- "absolutePath": "/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IBDeployer.sol",
78
- "file": "./interfaces/IBDeployer.sol",
79
- "id": 1064,
80
- "nodeType": "ImportDirective",
81
- "scope": 1102,
82
- "sourceUnit": 4933,
83
- "src": "56:37:5",
84
- "symbolAliases": [],
85
- "unitAlias": ""
86
- },
87
- {
88
- "baseContracts": [
89
- {
90
- "arguments": null,
91
- "baseName": {
92
- "contractScope": null,
93
- "id": 1065,
94
- "name": "IBDeployer",
95
- "nodeType": "UserDefinedTypeName",
96
- "referencedDeclaration": 4932,
97
- "src": "252:10:5",
98
- "typeDescriptions": {
99
- "typeIdentifier": "t_contract$_IBDeployer_$4932",
100
- "typeString": "contract IBDeployer"
101
- }
102
- },
103
- "id": 1066,
104
- "nodeType": "InheritanceSpecifier",
105
- "src": "252:10:5"
106
- }
107
- ],
108
- "contractDependencies": [
109
- 2438,
110
- 4932
111
- ],
112
- "contractKind": "contract",
113
- "documentation": null,
114
- "fullyImplemented": true,
115
- "id": 1101,
116
- "linearizedBaseContracts": [
117
- 1101,
118
- 4932
119
- ],
120
- "name": "BDeployer",
121
- "nodeType": "ContractDefinition",
122
- "nodes": [
123
- {
124
- "body": {
125
- "id": 1069,
126
- "nodeType": "Block",
127
- "src": "289:2:5",
128
- "statements": []
129
- },
130
- "documentation": null,
131
- "id": 1070,
132
- "implemented": true,
133
- "kind": "constructor",
134
- "modifiers": [],
135
- "name": "",
136
- "nodeType": "FunctionDefinition",
137
- "parameters": {
138
- "id": 1067,
139
- "nodeType": "ParameterList",
140
- "parameters": [],
141
- "src": "279:2:5"
142
- },
143
- "returnParameters": {
144
- "id": 1068,
145
- "nodeType": "ParameterList",
146
- "parameters": [],
147
- "src": "289:0:5"
148
- },
149
- "scope": 1101,
150
- "src": "267:24:5",
151
- "stateMutability": "nonpayable",
152
- "superFunction": null,
153
- "visibility": "public"
154
- },
155
- {
156
- "body": {
157
- "id": 1099,
158
- "nodeType": "Block",
159
- "src": "397:234:5",
160
- "statements": [
161
- {
162
- "assignments": [
163
- 1080
164
- ],
165
- "declarations": [
166
- {
167
- "constant": false,
168
- "id": 1080,
169
- "name": "bytecode",
170
- "nodeType": "VariableDeclaration",
171
- "scope": 1099,
172
- "src": "402:21:5",
173
- "stateVariable": false,
174
- "storageLocation": "memory",
175
- "typeDescriptions": {
176
- "typeIdentifier": "t_bytes_memory_ptr",
177
- "typeString": "bytes"
178
- },
179
- "typeName": {
180
- "id": 1079,
181
- "name": "bytes",
182
- "nodeType": "ElementaryTypeName",
183
- "src": "402:5:5",
184
- "typeDescriptions": {
185
- "typeIdentifier": "t_bytes_storage_ptr",
186
- "typeString": "bytes"
187
- }
188
- },
189
- "value": null,
190
- "visibility": "internal"
191
- }
192
- ],
193
- "id": 1085,
194
- "initialValue": {
195
- "argumentTypes": null,
196
- "expression": {
197
- "argumentTypes": null,
198
- "arguments": [
199
- {
200
- "argumentTypes": null,
201
- "id": 1082,
202
- "name": "Borrowable",
203
- "nodeType": "Identifier",
204
- "overloadedDeclarations": [],
205
- "referencedDeclaration": 2438,
206
- "src": "431:10:5",
207
- "typeDescriptions": {
208
- "typeIdentifier": "t_type$_t_contract$_Borrowable_$2438_$",
209
- "typeString": "type(contract Borrowable)"
210
- }
211
- }
212
- ],
213
- "expression": {
214
- "argumentTypes": [
215
- {
216
- "typeIdentifier": "t_type$_t_contract$_Borrowable_$2438_$",
217
- "typeString": "type(contract Borrowable)"
218
- }
219
- ],
220
- "id": 1081,
221
- "name": "type",
222
- "nodeType": "Identifier",
223
- "overloadedDeclarations": [],
224
- "referencedDeclaration": 9831,
225
- "src": "426:4:5",
226
- "typeDescriptions": {
227
- "typeIdentifier": "t_function_metatype_pure$_t_address_$returns$__$",
228
- "typeString": "function (address) pure"
229
- }
230
- },
231
- "id": 1083,
232
- "isConstant": false,
233
- "isLValue": false,
234
- "isPure": true,
235
- "kind": "functionCall",
236
- "lValueRequested": false,
237
- "names": [],
238
- "nodeType": "FunctionCall",
239
- "src": "426:16:5",
240
- "typeDescriptions": {
241
- "typeIdentifier": "t_magic_meta_type_t_contract$_Borrowable_$2438",
242
- "typeString": "type(contract Borrowable)"
243
- }
244
- },
245
- "id": 1084,
246
- "isConstant": false,
247
- "isLValue": false,
248
- "isPure": true,
249
- "lValueRequested": false,
250
- "memberName": "creationCode",
251
- "nodeType": "MemberAccess",
252
- "referencedDeclaration": null,
253
- "src": "426:29:5",
254
- "typeDescriptions": {
255
- "typeIdentifier": "t_bytes_memory_ptr",
256
- "typeString": "bytes memory"
257
- }
258
- },
259
- "nodeType": "VariableDeclarationStatement",
260
- "src": "402:53:5"
261
- },
262
- {
263
- "assignments": [
264
- 1087
265
- ],
266
- "declarations": [
267
- {
268
- "constant": false,
269
- "id": 1087,
270
- "name": "salt",
271
- "nodeType": "VariableDeclaration",
272
- "scope": 1099,
273
- "src": "460:12:5",
274
- "stateVariable": false,
275
- "storageLocation": "default",
276
- "typeDescriptions": {
277
- "typeIdentifier": "t_bytes32",
278
- "typeString": "bytes32"
279
- },
280
- "typeName": {
281
- "id": 1086,
282
- "name": "bytes32",
283
- "nodeType": "ElementaryTypeName",
284
- "src": "460:7:5",
285
- "typeDescriptions": {
286
- "typeIdentifier": "t_bytes32",
287
- "typeString": "bytes32"
288
- }
289
- },
290
- "value": null,
291
- "visibility": "internal"
292
- }
293
- ],
294
- "id": 1097,
295
- "initialValue": {
296
- "argumentTypes": null,
297
- "arguments": [
298
- {
299
- "argumentTypes": null,
300
- "arguments": [
301
- {
302
- "argumentTypes": null,
303
- "expression": {
304
- "argumentTypes": null,
305
- "id": 1091,
306
- "name": "msg",
307
- "nodeType": "Identifier",
308
- "overloadedDeclarations": [],
309
- "referencedDeclaration": 9818,
310
- "src": "502:3:5",
311
- "typeDescriptions": {
312
- "typeIdentifier": "t_magic_message",
313
- "typeString": "msg"
314
- }
315
- },
316
- "id": 1092,
317
- "isConstant": false,
318
- "isLValue": false,
319
- "isPure": false,
320
- "lValueRequested": false,
321
- "memberName": "sender",
322
- "nodeType": "MemberAccess",
323
- "referencedDeclaration": null,
324
- "src": "502:10:5",
325
- "typeDescriptions": {
326
- "typeIdentifier": "t_address_payable",
327
- "typeString": "address payable"
328
- }
329
- },
330
- {
331
- "argumentTypes": null,
332
- "id": 1093,
333
- "name": "uniswapV2Pair",
334
- "nodeType": "Identifier",
335
- "overloadedDeclarations": [],
336
- "referencedDeclaration": 1072,
337
- "src": "514:13:5",
338
- "typeDescriptions": {
339
- "typeIdentifier": "t_address",
340
- "typeString": "address"
341
- }
342
- },
343
- {
344
- "argumentTypes": null,
345
- "id": 1094,
346
- "name": "index",
347
- "nodeType": "Identifier",
348
- "overloadedDeclarations": [],
349
- "referencedDeclaration": 1074,
350
- "src": "529:5:5",
351
- "typeDescriptions": {
352
- "typeIdentifier": "t_uint8",
353
- "typeString": "uint8"
354
- }
355
- }
356
- ],
357
- "expression": {
358
- "argumentTypes": [
359
- {
360
- "typeIdentifier": "t_address_payable",
361
- "typeString": "address payable"
362
- },
363
- {
364
- "typeIdentifier": "t_address",
365
- "typeString": "address"
366
- },
367
- {
368
- "typeIdentifier": "t_uint8",
369
- "typeString": "uint8"
370
- }
371
- ],
372
- "expression": {
373
- "argumentTypes": null,
374
- "id": 1089,
375
- "name": "abi",
376
- "nodeType": "Identifier",
377
- "overloadedDeclarations": [],
378
- "referencedDeclaration": 9805,
379
- "src": "485:3:5",
380
- "typeDescriptions": {
381
- "typeIdentifier": "t_magic_abi",
382
- "typeString": "abi"
383
- }
384
- },
385
- "id": 1090,
386
- "isConstant": false,
387
- "isLValue": false,
388
- "isPure": true,
389
- "lValueRequested": false,
390
- "memberName": "encodePacked",
391
- "nodeType": "MemberAccess",
392
- "referencedDeclaration": null,
393
- "src": "485:16:5",
394
- "typeDescriptions": {
395
- "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
396
- "typeString": "function () pure returns (bytes memory)"
397
- }
398
- },
399
- "id": 1095,
400
- "isConstant": false,
401
- "isLValue": false,
402
- "isPure": false,
403
- "kind": "functionCall",
404
- "lValueRequested": false,
405
- "names": [],
406
- "nodeType": "FunctionCall",
407
- "src": "485:50:5",
408
- "typeDescriptions": {
409
- "typeIdentifier": "t_bytes_memory_ptr",
410
- "typeString": "bytes memory"
411
- }
412
- }
413
- ],
414
- "expression": {
415
- "argumentTypes": [
416
- {
417
- "typeIdentifier": "t_bytes_memory_ptr",
418
- "typeString": "bytes memory"
419
- }
420
- ],
421
- "id": 1088,
422
- "name": "keccak256",
423
- "nodeType": "Identifier",
424
- "overloadedDeclarations": [],
425
- "referencedDeclaration": 9812,
426
- "src": "475:9:5",
427
- "typeDescriptions": {
428
- "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
429
- "typeString": "function (bytes memory) pure returns (bytes32)"
430
- }
431
- },
432
- "id": 1096,
433
- "isConstant": false,
434
- "isLValue": false,
435
- "isPure": false,
436
- "kind": "functionCall",
437
- "lValueRequested": false,
438
- "names": [],
439
- "nodeType": "FunctionCall",
440
- "src": "475:61:5",
441
- "typeDescriptions": {
442
- "typeIdentifier": "t_bytes32",
443
- "typeString": "bytes32"
444
- }
445
- },
446
- "nodeType": "VariableDeclarationStatement",
447
- "src": "460:76:5"
448
- },
449
- {
450
- "externalReferences": [
451
- {
452
- "salt": {
453
- "declaration": 1087,
454
- "isOffset": false,
455
- "isSlot": false,
456
- "src": "617:4:5",
457
- "valueSize": 1
458
- }
459
- },
460
- {
461
- "borrowable": {
462
- "declaration": 1077,
463
- "isOffset": false,
464
- "isSlot": false,
465
- "src": "556:10:5",
466
- "valueSize": 1
467
- }
468
- },
469
- {
470
- "bytecode": {
471
- "declaration": 1080,
472
- "isOffset": false,
473
- "isSlot": false,
474
- "src": "606:8:5",
475
- "valueSize": 1
476
- }
477
- },
478
- {
479
- "bytecode": {
480
- "declaration": 1080,
481
- "isOffset": false,
482
- "isSlot": false,
483
- "src": "585:8:5",
484
- "valueSize": 1
485
- }
486
- }
487
- ],
488
- "id": 1098,
489
- "nodeType": "InlineAssembly",
490
- "operations": "{\n borrowable := create2(0, add(bytecode, 32), mload(bytecode), salt)\n}",
491
- "src": "541:86:5"
492
- }
493
- ]
494
- },
495
- "documentation": null,
496
- "id": 1100,
497
- "implemented": true,
498
- "kind": "function",
499
- "modifiers": [],
500
- "name": "deployBorrowable",
501
- "nodeType": "FunctionDefinition",
502
- "parameters": {
503
- "id": 1075,
504
- "nodeType": "ParameterList",
505
- "parameters": [
506
- {
507
- "constant": false,
508
- "id": 1072,
509
- "name": "uniswapV2Pair",
510
- "nodeType": "VariableDeclaration",
511
- "scope": 1100,
512
- "src": "323:21:5",
513
- "stateVariable": false,
514
- "storageLocation": "default",
515
- "typeDescriptions": {
516
- "typeIdentifier": "t_address",
517
- "typeString": "address"
518
- },
519
- "typeName": {
520
- "id": 1071,
521
- "name": "address",
522
- "nodeType": "ElementaryTypeName",
523
- "src": "323:7:5",
524
- "stateMutability": "nonpayable",
525
- "typeDescriptions": {
526
- "typeIdentifier": "t_address",
527
- "typeString": "address"
528
- }
529
- },
530
- "value": null,
531
- "visibility": "internal"
532
- },
533
- {
534
- "constant": false,
535
- "id": 1074,
536
- "name": "index",
537
- "nodeType": "VariableDeclaration",
538
- "scope": 1100,
539
- "src": "346:11:5",
540
- "stateVariable": false,
541
- "storageLocation": "default",
542
- "typeDescriptions": {
543
- "typeIdentifier": "t_uint8",
544
- "typeString": "uint8"
545
- },
546
- "typeName": {
547
- "id": 1073,
548
- "name": "uint8",
549
- "nodeType": "ElementaryTypeName",
550
- "src": "346:5:5",
551
- "typeDescriptions": {
552
- "typeIdentifier": "t_uint8",
553
- "typeString": "uint8"
554
- }
555
- },
556
- "value": null,
557
- "visibility": "internal"
558
- }
559
- ],
560
- "src": "322:36:5"
561
- },
562
- "returnParameters": {
563
- "id": 1078,
564
- "nodeType": "ParameterList",
565
- "parameters": [
566
- {
567
- "constant": false,
568
- "id": 1077,
569
- "name": "borrowable",
570
- "nodeType": "VariableDeclaration",
571
- "scope": 1100,
572
- "src": "377:18:5",
573
- "stateVariable": false,
574
- "storageLocation": "default",
575
- "typeDescriptions": {
576
- "typeIdentifier": "t_address",
577
- "typeString": "address"
578
- },
579
- "typeName": {
580
- "id": 1076,
581
- "name": "address",
582
- "nodeType": "ElementaryTypeName",
583
- "src": "377:7:5",
584
- "stateMutability": "nonpayable",
585
- "typeDescriptions": {
586
- "typeIdentifier": "t_address",
587
- "typeString": "address"
588
- }
589
- },
590
- "value": null,
591
- "visibility": "internal"
592
- }
593
- ],
594
- "src": "376:20:5"
595
- },
596
- "scope": 1101,
597
- "src": "297:334:5",
598
- "stateMutability": "nonpayable",
599
- "superFunction": 4931,
600
- "visibility": "external"
601
- }
602
- ],
603
- "scope": 1102,
604
- "src": "230:404:5"
605
- }
606
- ],
607
- "src": "0:634:5"
608
- },
609
- "legacyAST": {
610
- "absolutePath": "/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/BDeployer.sol",
611
- "exportedSymbols": {
612
- "BDeployer": [
613
- 1101
614
- ]
615
- },
616
- "id": 1102,
617
- "nodeType": "SourceUnit",
618
- "nodes": [
619
- {
620
- "id": 1062,
621
- "literals": [
622
- "solidity",
623
- "=",
624
- "0.5",
625
- ".16"
626
- ],
627
- "nodeType": "PragmaDirective",
628
- "src": "0:24:5"
629
- },
630
- {
631
- "absolutePath": "/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/Borrowable.sol",
632
- "file": "./Borrowable.sol",
633
- "id": 1063,
634
- "nodeType": "ImportDirective",
635
- "scope": 1102,
636
- "sourceUnit": 2439,
637
- "src": "28:26:5",
638
- "symbolAliases": [],
639
- "unitAlias": ""
640
- },
641
- {
642
- "absolutePath": "/C/Users/simor/Desktop/impermax-x-uniswapv2-periphery/test/Contracts/imx-univ2-core/interfaces/IBDeployer.sol",
643
- "file": "./interfaces/IBDeployer.sol",
644
- "id": 1064,
645
- "nodeType": "ImportDirective",
646
- "scope": 1102,
647
- "sourceUnit": 4933,
648
- "src": "56:37:5",
649
- "symbolAliases": [],
650
- "unitAlias": ""
651
- },
652
- {
653
- "baseContracts": [
654
- {
655
- "arguments": null,
656
- "baseName": {
657
- "contractScope": null,
658
- "id": 1065,
659
- "name": "IBDeployer",
660
- "nodeType": "UserDefinedTypeName",
661
- "referencedDeclaration": 4932,
662
- "src": "252:10:5",
663
- "typeDescriptions": {
664
- "typeIdentifier": "t_contract$_IBDeployer_$4932",
665
- "typeString": "contract IBDeployer"
666
- }
667
- },
668
- "id": 1066,
669
- "nodeType": "InheritanceSpecifier",
670
- "src": "252:10:5"
671
- }
672
- ],
673
- "contractDependencies": [
674
- 2438,
675
- 4932
676
- ],
677
- "contractKind": "contract",
678
- "documentation": null,
679
- "fullyImplemented": true,
680
- "id": 1101,
681
- "linearizedBaseContracts": [
682
- 1101,
683
- 4932
684
- ],
685
- "name": "BDeployer",
686
- "nodeType": "ContractDefinition",
687
- "nodes": [
688
- {
689
- "body": {
690
- "id": 1069,
691
- "nodeType": "Block",
692
- "src": "289:2:5",
693
- "statements": []
694
- },
695
- "documentation": null,
696
- "id": 1070,
697
- "implemented": true,
698
- "kind": "constructor",
699
- "modifiers": [],
700
- "name": "",
701
- "nodeType": "FunctionDefinition",
702
- "parameters": {
703
- "id": 1067,
704
- "nodeType": "ParameterList",
705
- "parameters": [],
706
- "src": "279:2:5"
707
- },
708
- "returnParameters": {
709
- "id": 1068,
710
- "nodeType": "ParameterList",
711
- "parameters": [],
712
- "src": "289:0:5"
713
- },
714
- "scope": 1101,
715
- "src": "267:24:5",
716
- "stateMutability": "nonpayable",
717
- "superFunction": null,
718
- "visibility": "public"
719
- },
720
- {
721
- "body": {
722
- "id": 1099,
723
- "nodeType": "Block",
724
- "src": "397:234:5",
725
- "statements": [
726
- {
727
- "assignments": [
728
- 1080
729
- ],
730
- "declarations": [
731
- {
732
- "constant": false,
733
- "id": 1080,
734
- "name": "bytecode",
735
- "nodeType": "VariableDeclaration",
736
- "scope": 1099,
737
- "src": "402:21:5",
738
- "stateVariable": false,
739
- "storageLocation": "memory",
740
- "typeDescriptions": {
741
- "typeIdentifier": "t_bytes_memory_ptr",
742
- "typeString": "bytes"
743
- },
744
- "typeName": {
745
- "id": 1079,
746
- "name": "bytes",
747
- "nodeType": "ElementaryTypeName",
748
- "src": "402:5:5",
749
- "typeDescriptions": {
750
- "typeIdentifier": "t_bytes_storage_ptr",
751
- "typeString": "bytes"
752
- }
753
- },
754
- "value": null,
755
- "visibility": "internal"
756
- }
757
- ],
758
- "id": 1085,
759
- "initialValue": {
760
- "argumentTypes": null,
761
- "expression": {
762
- "argumentTypes": null,
763
- "arguments": [
764
- {
765
- "argumentTypes": null,
766
- "id": 1082,
767
- "name": "Borrowable",
768
- "nodeType": "Identifier",
769
- "overloadedDeclarations": [],
770
- "referencedDeclaration": 2438,
771
- "src": "431:10:5",
772
- "typeDescriptions": {
773
- "typeIdentifier": "t_type$_t_contract$_Borrowable_$2438_$",
774
- "typeString": "type(contract Borrowable)"
775
- }
776
- }
777
- ],
778
- "expression": {
779
- "argumentTypes": [
780
- {
781
- "typeIdentifier": "t_type$_t_contract$_Borrowable_$2438_$",
782
- "typeString": "type(contract Borrowable)"
783
- }
784
- ],
785
- "id": 1081,
786
- "name": "type",
787
- "nodeType": "Identifier",
788
- "overloadedDeclarations": [],
789
- "referencedDeclaration": 9831,
790
- "src": "426:4:5",
791
- "typeDescriptions": {
792
- "typeIdentifier": "t_function_metatype_pure$_t_address_$returns$__$",
793
- "typeString": "function (address) pure"
794
- }
795
- },
796
- "id": 1083,
797
- "isConstant": false,
798
- "isLValue": false,
799
- "isPure": true,
800
- "kind": "functionCall",
801
- "lValueRequested": false,
802
- "names": [],
803
- "nodeType": "FunctionCall",
804
- "src": "426:16:5",
805
- "typeDescriptions": {
806
- "typeIdentifier": "t_magic_meta_type_t_contract$_Borrowable_$2438",
807
- "typeString": "type(contract Borrowable)"
808
- }
809
- },
810
- "id": 1084,
811
- "isConstant": false,
812
- "isLValue": false,
813
- "isPure": true,
814
- "lValueRequested": false,
815
- "memberName": "creationCode",
816
- "nodeType": "MemberAccess",
817
- "referencedDeclaration": null,
818
- "src": "426:29:5",
819
- "typeDescriptions": {
820
- "typeIdentifier": "t_bytes_memory_ptr",
821
- "typeString": "bytes memory"
822
- }
823
- },
824
- "nodeType": "VariableDeclarationStatement",
825
- "src": "402:53:5"
826
- },
827
- {
828
- "assignments": [
829
- 1087
830
- ],
831
- "declarations": [
832
- {
833
- "constant": false,
834
- "id": 1087,
835
- "name": "salt",
836
- "nodeType": "VariableDeclaration",
837
- "scope": 1099,
838
- "src": "460:12:5",
839
- "stateVariable": false,
840
- "storageLocation": "default",
841
- "typeDescriptions": {
842
- "typeIdentifier": "t_bytes32",
843
- "typeString": "bytes32"
844
- },
845
- "typeName": {
846
- "id": 1086,
847
- "name": "bytes32",
848
- "nodeType": "ElementaryTypeName",
849
- "src": "460:7:5",
850
- "typeDescriptions": {
851
- "typeIdentifier": "t_bytes32",
852
- "typeString": "bytes32"
853
- }
854
- },
855
- "value": null,
856
- "visibility": "internal"
857
- }
858
- ],
859
- "id": 1097,
860
- "initialValue": {
861
- "argumentTypes": null,
862
- "arguments": [
863
- {
864
- "argumentTypes": null,
865
- "arguments": [
866
- {
867
- "argumentTypes": null,
868
- "expression": {
869
- "argumentTypes": null,
870
- "id": 1091,
871
- "name": "msg",
872
- "nodeType": "Identifier",
873
- "overloadedDeclarations": [],
874
- "referencedDeclaration": 9818,
875
- "src": "502:3:5",
876
- "typeDescriptions": {
877
- "typeIdentifier": "t_magic_message",
878
- "typeString": "msg"
879
- }
880
- },
881
- "id": 1092,
882
- "isConstant": false,
883
- "isLValue": false,
884
- "isPure": false,
885
- "lValueRequested": false,
886
- "memberName": "sender",
887
- "nodeType": "MemberAccess",
888
- "referencedDeclaration": null,
889
- "src": "502:10:5",
890
- "typeDescriptions": {
891
- "typeIdentifier": "t_address_payable",
892
- "typeString": "address payable"
893
- }
894
- },
895
- {
896
- "argumentTypes": null,
897
- "id": 1093,
898
- "name": "uniswapV2Pair",
899
- "nodeType": "Identifier",
900
- "overloadedDeclarations": [],
901
- "referencedDeclaration": 1072,
902
- "src": "514:13:5",
903
- "typeDescriptions": {
904
- "typeIdentifier": "t_address",
905
- "typeString": "address"
906
- }
907
- },
908
- {
909
- "argumentTypes": null,
910
- "id": 1094,
911
- "name": "index",
912
- "nodeType": "Identifier",
913
- "overloadedDeclarations": [],
914
- "referencedDeclaration": 1074,
915
- "src": "529:5:5",
916
- "typeDescriptions": {
917
- "typeIdentifier": "t_uint8",
918
- "typeString": "uint8"
919
- }
920
- }
921
- ],
922
- "expression": {
923
- "argumentTypes": [
924
- {
925
- "typeIdentifier": "t_address_payable",
926
- "typeString": "address payable"
927
- },
928
- {
929
- "typeIdentifier": "t_address",
930
- "typeString": "address"
931
- },
932
- {
933
- "typeIdentifier": "t_uint8",
934
- "typeString": "uint8"
935
- }
936
- ],
937
- "expression": {
938
- "argumentTypes": null,
939
- "id": 1089,
940
- "name": "abi",
941
- "nodeType": "Identifier",
942
- "overloadedDeclarations": [],
943
- "referencedDeclaration": 9805,
944
- "src": "485:3:5",
945
- "typeDescriptions": {
946
- "typeIdentifier": "t_magic_abi",
947
- "typeString": "abi"
948
- }
949
- },
950
- "id": 1090,
951
- "isConstant": false,
952
- "isLValue": false,
953
- "isPure": true,
954
- "lValueRequested": false,
955
- "memberName": "encodePacked",
956
- "nodeType": "MemberAccess",
957
- "referencedDeclaration": null,
958
- "src": "485:16:5",
959
- "typeDescriptions": {
960
- "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
961
- "typeString": "function () pure returns (bytes memory)"
962
- }
963
- },
964
- "id": 1095,
965
- "isConstant": false,
966
- "isLValue": false,
967
- "isPure": false,
968
- "kind": "functionCall",
969
- "lValueRequested": false,
970
- "names": [],
971
- "nodeType": "FunctionCall",
972
- "src": "485:50:5",
973
- "typeDescriptions": {
974
- "typeIdentifier": "t_bytes_memory_ptr",
975
- "typeString": "bytes memory"
976
- }
977
- }
978
- ],
979
- "expression": {
980
- "argumentTypes": [
981
- {
982
- "typeIdentifier": "t_bytes_memory_ptr",
983
- "typeString": "bytes memory"
984
- }
985
- ],
986
- "id": 1088,
987
- "name": "keccak256",
988
- "nodeType": "Identifier",
989
- "overloadedDeclarations": [],
990
- "referencedDeclaration": 9812,
991
- "src": "475:9:5",
992
- "typeDescriptions": {
993
- "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
994
- "typeString": "function (bytes memory) pure returns (bytes32)"
995
- }
996
- },
997
- "id": 1096,
998
- "isConstant": false,
999
- "isLValue": false,
1000
- "isPure": false,
1001
- "kind": "functionCall",
1002
- "lValueRequested": false,
1003
- "names": [],
1004
- "nodeType": "FunctionCall",
1005
- "src": "475:61:5",
1006
- "typeDescriptions": {
1007
- "typeIdentifier": "t_bytes32",
1008
- "typeString": "bytes32"
1009
- }
1010
- },
1011
- "nodeType": "VariableDeclarationStatement",
1012
- "src": "460:76:5"
1013
- },
1014
- {
1015
- "externalReferences": [
1016
- {
1017
- "salt": {
1018
- "declaration": 1087,
1019
- "isOffset": false,
1020
- "isSlot": false,
1021
- "src": "617:4:5",
1022
- "valueSize": 1
1023
- }
1024
- },
1025
- {
1026
- "borrowable": {
1027
- "declaration": 1077,
1028
- "isOffset": false,
1029
- "isSlot": false,
1030
- "src": "556:10:5",
1031
- "valueSize": 1
1032
- }
1033
- },
1034
- {
1035
- "bytecode": {
1036
- "declaration": 1080,
1037
- "isOffset": false,
1038
- "isSlot": false,
1039
- "src": "606:8:5",
1040
- "valueSize": 1
1041
- }
1042
- },
1043
- {
1044
- "bytecode": {
1045
- "declaration": 1080,
1046
- "isOffset": false,
1047
- "isSlot": false,
1048
- "src": "585:8:5",
1049
- "valueSize": 1
1050
- }
1051
- }
1052
- ],
1053
- "id": 1098,
1054
- "nodeType": "InlineAssembly",
1055
- "operations": "{\n borrowable := create2(0, add(bytecode, 32), mload(bytecode), salt)\n}",
1056
- "src": "541:86:5"
1057
- }
1058
- ]
1059
- },
1060
- "documentation": null,
1061
- "id": 1100,
1062
- "implemented": true,
1063
- "kind": "function",
1064
- "modifiers": [],
1065
- "name": "deployBorrowable",
1066
- "nodeType": "FunctionDefinition",
1067
- "parameters": {
1068
- "id": 1075,
1069
- "nodeType": "ParameterList",
1070
- "parameters": [
1071
- {
1072
- "constant": false,
1073
- "id": 1072,
1074
- "name": "uniswapV2Pair",
1075
- "nodeType": "VariableDeclaration",
1076
- "scope": 1100,
1077
- "src": "323:21:5",
1078
- "stateVariable": false,
1079
- "storageLocation": "default",
1080
- "typeDescriptions": {
1081
- "typeIdentifier": "t_address",
1082
- "typeString": "address"
1083
- },
1084
- "typeName": {
1085
- "id": 1071,
1086
- "name": "address",
1087
- "nodeType": "ElementaryTypeName",
1088
- "src": "323:7:5",
1089
- "stateMutability": "nonpayable",
1090
- "typeDescriptions": {
1091
- "typeIdentifier": "t_address",
1092
- "typeString": "address"
1093
- }
1094
- },
1095
- "value": null,
1096
- "visibility": "internal"
1097
- },
1098
- {
1099
- "constant": false,
1100
- "id": 1074,
1101
- "name": "index",
1102
- "nodeType": "VariableDeclaration",
1103
- "scope": 1100,
1104
- "src": "346:11:5",
1105
- "stateVariable": false,
1106
- "storageLocation": "default",
1107
- "typeDescriptions": {
1108
- "typeIdentifier": "t_uint8",
1109
- "typeString": "uint8"
1110
- },
1111
- "typeName": {
1112
- "id": 1073,
1113
- "name": "uint8",
1114
- "nodeType": "ElementaryTypeName",
1115
- "src": "346:5:5",
1116
- "typeDescriptions": {
1117
- "typeIdentifier": "t_uint8",
1118
- "typeString": "uint8"
1119
- }
1120
- },
1121
- "value": null,
1122
- "visibility": "internal"
1123
- }
1124
- ],
1125
- "src": "322:36:5"
1126
- },
1127
- "returnParameters": {
1128
- "id": 1078,
1129
- "nodeType": "ParameterList",
1130
- "parameters": [
1131
- {
1132
- "constant": false,
1133
- "id": 1077,
1134
- "name": "borrowable",
1135
- "nodeType": "VariableDeclaration",
1136
- "scope": 1100,
1137
- "src": "377:18:5",
1138
- "stateVariable": false,
1139
- "storageLocation": "default",
1140
- "typeDescriptions": {
1141
- "typeIdentifier": "t_address",
1142
- "typeString": "address"
1143
- },
1144
- "typeName": {
1145
- "id": 1076,
1146
- "name": "address",
1147
- "nodeType": "ElementaryTypeName",
1148
- "src": "377:7:5",
1149
- "stateMutability": "nonpayable",
1150
- "typeDescriptions": {
1151
- "typeIdentifier": "t_address",
1152
- "typeString": "address"
1153
- }
1154
- },
1155
- "value": null,
1156
- "visibility": "internal"
1157
- }
1158
- ],
1159
- "src": "376:20:5"
1160
- },
1161
- "scope": 1101,
1162
- "src": "297:334:5",
1163
- "stateMutability": "nonpayable",
1164
- "superFunction": 4931,
1165
- "visibility": "external"
1166
- }
1167
- ],
1168
- "scope": 1102,
1169
- "src": "230:404:5"
1170
- }
1171
- ],
1172
- "src": "0:634:5"
1173
- },
1174
- "compiler": {
1175
- "name": "solc",
1176
- "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
1177
- },
1178
- "networks": {
1179
- "3": {
1180
- "events": {},
1181
- "links": {},
1182
- "address": "0x9825Efda416b41f3a4a17c5fFD0aEFAa7D6a2950",
1183
- "transactionHash": "0xb34cb348cf536953c98dd5ec9d024a0c3bcbca494815491b1c817230b77ea060"
1184
- }
1185
- },
1186
- "schemaVersion": "3.3.2",
1187
- "updatedAt": "2021-01-09T21:19:45.618Z",
1188
- "networkType": "ethereum",
1189
- "devdoc": {
1190
- "methods": {}
1191
- },
1192
- "userdoc": {
1193
- "methods": {}
1194
- }
1195
- }