olas-operate-middleware 0.1.0rc59__py3-none-any.whl → 0.13.2__py3-none-any.whl

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 (98) hide show
  1. olas_operate_middleware-0.13.2.dist-info/METADATA +75 -0
  2. olas_operate_middleware-0.13.2.dist-info/RECORD +101 -0
  3. {olas_operate_middleware-0.1.0rc59.dist-info → olas_operate_middleware-0.13.2.dist-info}/WHEEL +1 -1
  4. operate/__init__.py +17 -0
  5. operate/account/user.py +35 -9
  6. operate/bridge/bridge_manager.py +470 -0
  7. operate/bridge/providers/lifi_provider.py +377 -0
  8. operate/bridge/providers/native_bridge_provider.py +677 -0
  9. operate/bridge/providers/provider.py +469 -0
  10. operate/bridge/providers/relay_provider.py +457 -0
  11. operate/cli.py +1565 -417
  12. operate/constants.py +60 -12
  13. operate/data/README.md +19 -0
  14. operate/data/contracts/{service_staking_token → dual_staking_token}/__init__.py +2 -2
  15. operate/data/contracts/dual_staking_token/build/DualStakingToken.json +443 -0
  16. operate/data/contracts/dual_staking_token/contract.py +132 -0
  17. operate/data/contracts/dual_staking_token/contract.yaml +23 -0
  18. operate/{ledger/base.py → data/contracts/foreign_omnibridge/__init__.py} +2 -19
  19. operate/data/contracts/foreign_omnibridge/build/ForeignOmnibridge.json +1372 -0
  20. operate/data/contracts/foreign_omnibridge/contract.py +130 -0
  21. operate/data/contracts/foreign_omnibridge/contract.yaml +23 -0
  22. operate/{ledger/solana.py → data/contracts/home_omnibridge/__init__.py} +2 -20
  23. operate/data/contracts/home_omnibridge/build/HomeOmnibridge.json +1421 -0
  24. operate/data/contracts/home_omnibridge/contract.py +80 -0
  25. operate/data/contracts/home_omnibridge/contract.yaml +23 -0
  26. operate/data/contracts/l1_standard_bridge/__init__.py +20 -0
  27. operate/data/contracts/l1_standard_bridge/build/L1StandardBridge.json +831 -0
  28. operate/data/contracts/l1_standard_bridge/contract.py +158 -0
  29. operate/data/contracts/l1_standard_bridge/contract.yaml +23 -0
  30. operate/data/contracts/l2_standard_bridge/__init__.py +20 -0
  31. operate/data/contracts/l2_standard_bridge/build/L2StandardBridge.json +626 -0
  32. operate/data/contracts/l2_standard_bridge/contract.py +130 -0
  33. operate/data/contracts/l2_standard_bridge/contract.yaml +23 -0
  34. operate/data/contracts/mech_activity/__init__.py +20 -0
  35. operate/data/contracts/mech_activity/build/MechActivity.json +111 -0
  36. operate/data/contracts/mech_activity/contract.py +44 -0
  37. operate/data/contracts/mech_activity/contract.yaml +23 -0
  38. operate/data/contracts/optimism_mintable_erc20/__init__.py +20 -0
  39. operate/data/contracts/optimism_mintable_erc20/build/OptimismMintableERC20.json +491 -0
  40. operate/data/contracts/optimism_mintable_erc20/contract.py +45 -0
  41. operate/data/contracts/optimism_mintable_erc20/contract.yaml +23 -0
  42. operate/data/contracts/recovery_module/__init__.py +20 -0
  43. operate/data/contracts/recovery_module/build/RecoveryModule.json +811 -0
  44. operate/data/contracts/recovery_module/contract.py +61 -0
  45. operate/data/contracts/recovery_module/contract.yaml +23 -0
  46. operate/data/contracts/requester_activity_checker/__init__.py +20 -0
  47. operate/data/contracts/requester_activity_checker/build/RequesterActivityChecker.json +111 -0
  48. operate/data/contracts/requester_activity_checker/contract.py +33 -0
  49. operate/data/contracts/requester_activity_checker/contract.yaml +23 -0
  50. operate/data/contracts/staking_token/__init__.py +20 -0
  51. operate/data/contracts/staking_token/build/StakingToken.json +1336 -0
  52. operate/data/contracts/{service_staking_token → staking_token}/contract.py +27 -13
  53. operate/data/contracts/staking_token/contract.yaml +23 -0
  54. operate/data/contracts/uniswap_v2_erc20/contract.yaml +3 -1
  55. operate/data/contracts/uniswap_v2_erc20/tests/__init__.py +20 -0
  56. operate/data/contracts/uniswap_v2_erc20/tests/test_contract.py +363 -0
  57. operate/keys.py +118 -33
  58. operate/ledger/__init__.py +159 -56
  59. operate/ledger/profiles.py +321 -18
  60. operate/migration.py +555 -0
  61. operate/{http → operate_http}/__init__.py +3 -2
  62. operate/{http → operate_http}/exceptions.py +6 -4
  63. operate/operate_types.py +544 -0
  64. operate/pearl.py +13 -1
  65. operate/quickstart/analyse_logs.py +118 -0
  66. operate/quickstart/claim_staking_rewards.py +104 -0
  67. operate/quickstart/reset_configs.py +106 -0
  68. operate/quickstart/reset_password.py +70 -0
  69. operate/quickstart/reset_staking.py +145 -0
  70. operate/quickstart/run_service.py +726 -0
  71. operate/quickstart/stop_service.py +72 -0
  72. operate/quickstart/terminate_on_chain_service.py +83 -0
  73. operate/quickstart/utils.py +298 -0
  74. operate/resource.py +62 -3
  75. operate/services/agent_runner.py +202 -0
  76. operate/services/deployment_runner.py +868 -0
  77. operate/services/funding_manager.py +929 -0
  78. operate/services/health_checker.py +280 -0
  79. operate/services/manage.py +2356 -620
  80. operate/services/protocol.py +1246 -340
  81. operate/services/service.py +756 -391
  82. operate/services/utils/mech.py +103 -0
  83. operate/services/utils/tendermint.py +86 -12
  84. operate/settings.py +70 -0
  85. operate/utils/__init__.py +135 -0
  86. operate/utils/gnosis.py +407 -80
  87. operate/utils/single_instance.py +226 -0
  88. operate/utils/ssl.py +133 -0
  89. operate/wallet/master.py +708 -123
  90. operate/wallet/wallet_recovery_manager.py +507 -0
  91. olas_operate_middleware-0.1.0rc59.dist-info/METADATA +0 -304
  92. olas_operate_middleware-0.1.0rc59.dist-info/RECORD +0 -41
  93. operate/data/contracts/service_staking_token/build/ServiceStakingToken.json +0 -1273
  94. operate/data/contracts/service_staking_token/contract.yaml +0 -23
  95. operate/ledger/ethereum.py +0 -48
  96. operate/types.py +0 -260
  97. {olas_operate_middleware-0.1.0rc59.dist-info → olas_operate_middleware-0.13.2.dist-info}/entry_points.txt +0 -0
  98. {olas_operate_middleware-0.1.0rc59.dist-info → olas_operate_middleware-0.13.2.dist-info/licenses}/LICENSE +0 -0
operate/constants.py CHANGED
@@ -19,19 +19,67 @@
19
19
 
20
20
  """Constants."""
21
21
 
22
+ from pathlib import Path
23
+
24
+
22
25
  OPERATE = ".operate"
23
- CONFIG = "config.json"
24
- SERVICES = "services"
25
- KEYS = "keys"
26
- DEPLOYMENT = "deployment"
26
+ OPERATE_HOME = Path.cwd() / OPERATE
27
+ SERVICES_DIR = "services"
28
+ KEYS_DIR = "keys"
29
+ WALLETS_DIR = "wallets"
30
+ WALLET_RECOVERY_DIR = "wallet_recovery"
31
+ DEPLOYMENT_DIR = "deployment"
27
32
  DEPLOYMENT_JSON = "deployment.json"
28
- CONFIG = "config.json"
29
- KEY = "key"
30
- KEYS = "keys"
31
- KEYS_JSON = "keys.json"
32
- DOCKER_COMPOSE_YAML = "docker-compose.yaml"
33
- SERVICE_YAML = "service.yaml"
33
+ CONFIG_JSON = "config.json"
34
+ USER_JSON = "user.json"
35
+ HEALTHCHECK_JSON = "healthcheck.json"
36
+ VERSION_FILE = "operate.version"
37
+ SETTINGS_JSON = "settings.json"
38
+ FUNDING_REQUIREMENTS_JSON = "funding_requirements.json"
39
+ DEFAULT_TOPUP_THRESHOLD = 0.5
40
+
41
+ MASTER_EOA_PLACEHOLDER = "master_eoa"
42
+ MASTER_SAFE_PLACEHOLDER = "master_safe"
43
+ AGENT_EOA_PLACEHOLDER = "agent_eoa"
44
+ SERVICE_SAFE_PLACEHOLDER = "service_safe"
45
+
46
+ FERNET_KEY_LENGTH = 32
47
+
48
+ AGENT_PERSISTENT_STORAGE_DIR = "persistent_data"
49
+ AGENT_PERSISTENT_STORAGE_ENV_VAR = "STORE_PATH"
50
+ AGENT_LOG_DIR = "benchmarks"
51
+ AGENT_LOG_ENV_VAR = "LOG_DIR"
52
+ AGENT_RUNNER_PREFIX = "agent_runner"
53
+
54
+ ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"
55
+
56
+ MIN_AGENT_BOND = 1
57
+ MIN_SECURITY_DEPOSIT = 1
34
58
 
35
59
  ON_CHAIN_INTERACT_TIMEOUT = 120.0
36
- ON_CHAIN_INTERACT_RETRIES = 40.0
37
- ON_CHAIN_INTERACT_SLEEP = 3.0
60
+ ON_CHAIN_INTERACT_RETRIES = 12
61
+ ON_CHAIN_INTERACT_SLEEP = 5.0
62
+ MIN_PASSWORD_LENGTH = 8
63
+ DEFAULT_FUNDING_REQUESTS_COOLDOWN_SECONDS = 300 # Seconds to wait after an agent has been funded during which it will not be asked for fund requirements again
64
+
65
+ HEALTH_CHECK_URL = "http://127.0.0.1:8716/healthcheck" # possible DNS issues on windows so use IP address
66
+ AGENT_FUNDS_STATUS_URL = "http://127.0.0.1:8716/funds-status"
67
+ SAFE_WEBAPP_URL = "https://app.safe.global/home?safe=gno:"
68
+ TM_CONTROL_URL = "http://localhost:8080"
69
+ IPFS_ADDRESS = "https://gateway.autonolas.tech/ipfs/f01701220{hash}"
70
+
71
+ # TODO: These links may break in the future, use a more robust approach
72
+ MECH_CONTRACT_JSON_URL = "https://raw.githubusercontent.com/valory-xyz/mech/refs/tags/v0.8.0/packages/valory/contracts/agent_mech/build/AgentMech.json"
73
+ STAKING_TOKEN_INSTANCE_ABI_PATH = "https://raw.githubusercontent.com/valory-xyz/trader/refs/tags/v0.23.0/packages/valory/contracts/staking_token/build/StakingToken.json" # nosec
74
+ MECH_ACTIVITY_CHECKER_JSON_URL = "https://raw.githubusercontent.com/valory-xyz/autonolas-staking-programmes/refs/heads/main/abis/0.8.25/SingleMechActivityChecker.json"
75
+ SERVICE_REGISTRY_TOKEN_UTILITY_JSON_URL = "https://raw.githubusercontent.com/valory-xyz/open-autonomy/refs/tags/v0.18.4/packages/valory/contracts/service_registry_token_utility/build/ServiceRegistryTokenUtility.json" # nosec
76
+ MECH_AGENT_FACTORY_JSON_URL = "https://raw.githubusercontent.com/valory-xyz/ai-registry-mech/main/abis/0.8.25/AgentFactory.json"
77
+ MECH_MARKETPLACE_JSON_URL = "https://raw.githubusercontent.com/valory-xyz/mech-quickstart/refs/heads/main/contracts/MechMarketplace.json"
78
+ NO_STAKING_PROGRAM_ID = "no_staking"
79
+
80
+
81
+ DEPLOYMENT_START_TRIES_NUM = 3
82
+ IPFS_CHECK_URL = "https://gateway.autonolas.tech/ipfs/bafybeigcllaxn4ycjjvika3zd6eicksuriez2wtg67gx7pamhcazl3tv54/echo/README.md"
83
+ MSG_NEW_PASSWORD_MISSING = "'new_password' is required." # nosec
84
+ MSG_INVALID_PASSWORD = "Password is not valid." # nosec
85
+ MSG_INVALID_MNEMONIC = "Seed phrase is not valid." # nosec
operate/data/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # Contracts Data
2
+
3
+ Reused packages from other repositories:
4
+
5
+ - `contracts/staking_token` is copied from [valory/trader](https://github.com/valory-xyz/trader/tree/main/packages/valory/contracts/staking_token)
6
+ - `contracts/mech_activity` is copied from [valory/trader](https://github.com/valory-xyz/trader/tree/main/packages/valory/contracts/mech_activity)
7
+ - `contracts/uniswap_v2_erc20` is copied from [valory/optimus-quickstart](https://github.com/valory-xyz/optimus-quickstart/tree/main/operate/data/contracts/uniswap_v2_erc20)
8
+
9
+ New packages from this repository:
10
+
11
+ - `contracts/dual_staking_token`
12
+ - `contracts/foreign_omnibridge`
13
+ - `contracts/home_omnibridge`
14
+ - `contracts/l1_standard_bridge`
15
+ - `contracts/l2_standard_bridge`
16
+ - `contracts/optimism_mintable_erc20`
17
+ - `contracts/requester_activity_checker`
18
+
19
+ TODO: Have a better way to import and reuse packages in the middleware.
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # ------------------------------------------------------------------------------
3
3
  #
4
- # Copyright 2023 Valory AG
4
+ # Copyright 2025 Valory AG
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -17,4 +17,4 @@
17
17
  #
18
18
  # ------------------------------------------------------------------------------
19
19
 
20
- """This module contains the support resources for the agent registry contract."""
20
+ """This module contains the support resources for the dual staking contract."""
@@ -0,0 +1,443 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "DualStakingToken",
4
+ "sourceName": "contracts/dual_token/DualStakingToken.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_serviceRegistry",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_secondToken",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_stakingInstance",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "uint256",
25
+ "name": "_stakeRatio",
26
+ "type": "uint256"
27
+ },
28
+ {
29
+ "internalType": "uint256",
30
+ "name": "_rewardRatio",
31
+ "type": "uint256"
32
+ }
33
+ ],
34
+ "stateMutability": "nonpayable",
35
+ "type": "constructor"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "uint256",
41
+ "name": "serviceId",
42
+ "type": "uint256"
43
+ }
44
+ ],
45
+ "name": "AlreadyStaked",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "ReentrancyGuard",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [
55
+ {
56
+ "internalType": "address",
57
+ "name": "sender",
58
+ "type": "address"
59
+ },
60
+ {
61
+ "internalType": "address",
62
+ "name": "staker",
63
+ "type": "address"
64
+ }
65
+ ],
66
+ "name": "StakerOnly",
67
+ "type": "error"
68
+ },
69
+ {
70
+ "inputs": [
71
+ {
72
+ "internalType": "address",
73
+ "name": "token",
74
+ "type": "address"
75
+ },
76
+ {
77
+ "internalType": "address",
78
+ "name": "from",
79
+ "type": "address"
80
+ },
81
+ {
82
+ "internalType": "address",
83
+ "name": "to",
84
+ "type": "address"
85
+ },
86
+ {
87
+ "internalType": "uint256",
88
+ "name": "value",
89
+ "type": "uint256"
90
+ }
91
+ ],
92
+ "name": "TokenTransferFailed",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [
97
+ {
98
+ "internalType": "uint256",
99
+ "name": "serviceId",
100
+ "type": "uint256"
101
+ },
102
+ {
103
+ "internalType": "enum IStaking.StakingState",
104
+ "name": "state",
105
+ "type": "uint8"
106
+ }
107
+ ],
108
+ "name": "WrongStakingState",
109
+ "type": "error"
110
+ },
111
+ {
112
+ "inputs": [],
113
+ "name": "ZeroAddress",
114
+ "type": "error"
115
+ },
116
+ {
117
+ "inputs": [],
118
+ "name": "ZeroValue",
119
+ "type": "error"
120
+ },
121
+ {
122
+ "anonymous": false,
123
+ "inputs": [
124
+ {
125
+ "indexed": true,
126
+ "internalType": "uint256",
127
+ "name": "serviceId",
128
+ "type": "uint256"
129
+ },
130
+ {
131
+ "indexed": false,
132
+ "internalType": "uint256",
133
+ "name": "reward",
134
+ "type": "uint256"
135
+ }
136
+ ],
137
+ "name": "Claimed",
138
+ "type": "event"
139
+ },
140
+ {
141
+ "anonymous": false,
142
+ "inputs": [
143
+ {
144
+ "indexed": true,
145
+ "internalType": "address",
146
+ "name": "sender",
147
+ "type": "address"
148
+ },
149
+ {
150
+ "indexed": false,
151
+ "internalType": "uint256",
152
+ "name": "amount",
153
+ "type": "uint256"
154
+ },
155
+ {
156
+ "indexed": false,
157
+ "internalType": "uint256",
158
+ "name": "balance",
159
+ "type": "uint256"
160
+ },
161
+ {
162
+ "indexed": false,
163
+ "internalType": "uint256",
164
+ "name": "availableRewards",
165
+ "type": "uint256"
166
+ }
167
+ ],
168
+ "name": "Deposit",
169
+ "type": "event"
170
+ },
171
+ {
172
+ "anonymous": false,
173
+ "inputs": [
174
+ {
175
+ "indexed": true,
176
+ "internalType": "uint256",
177
+ "name": "serviceId",
178
+ "type": "uint256"
179
+ }
180
+ ],
181
+ "name": "Staked",
182
+ "type": "event"
183
+ },
184
+ {
185
+ "anonymous": false,
186
+ "inputs": [
187
+ {
188
+ "indexed": true,
189
+ "internalType": "uint256",
190
+ "name": "serviceId",
191
+ "type": "uint256"
192
+ }
193
+ ],
194
+ "name": "Unstaked",
195
+ "type": "event"
196
+ },
197
+ {
198
+ "anonymous": false,
199
+ "inputs": [
200
+ {
201
+ "indexed": true,
202
+ "internalType": "address",
203
+ "name": "to",
204
+ "type": "address"
205
+ },
206
+ {
207
+ "indexed": false,
208
+ "internalType": "uint256",
209
+ "name": "amount",
210
+ "type": "uint256"
211
+ }
212
+ ],
213
+ "name": "Withdraw",
214
+ "type": "event"
215
+ },
216
+ {
217
+ "inputs": [],
218
+ "name": "checkpoint",
219
+ "outputs": [],
220
+ "stateMutability": "nonpayable",
221
+ "type": "function"
222
+ },
223
+ {
224
+ "inputs": [
225
+ {
226
+ "internalType": "uint256",
227
+ "name": "serviceId",
228
+ "type": "uint256"
229
+ }
230
+ ],
231
+ "name": "claim",
232
+ "outputs": [],
233
+ "stateMutability": "nonpayable",
234
+ "type": "function"
235
+ },
236
+ {
237
+ "inputs": [
238
+ {
239
+ "internalType": "address",
240
+ "name": "",
241
+ "type": "address"
242
+ }
243
+ ],
244
+ "name": "mapMutisigs",
245
+ "outputs": [
246
+ {
247
+ "internalType": "bool",
248
+ "name": "",
249
+ "type": "bool"
250
+ }
251
+ ],
252
+ "stateMutability": "view",
253
+ "type": "function"
254
+ },
255
+ {
256
+ "inputs": [
257
+ {
258
+ "internalType": "uint256",
259
+ "name": "",
260
+ "type": "uint256"
261
+ }
262
+ ],
263
+ "name": "mapServiceIdStakers",
264
+ "outputs": [
265
+ {
266
+ "internalType": "address",
267
+ "name": "",
268
+ "type": "address"
269
+ }
270
+ ],
271
+ "stateMutability": "view",
272
+ "type": "function"
273
+ },
274
+ {
275
+ "inputs": [],
276
+ "name": "numServices",
277
+ "outputs": [
278
+ {
279
+ "internalType": "uint256",
280
+ "name": "",
281
+ "type": "uint256"
282
+ }
283
+ ],
284
+ "stateMutability": "view",
285
+ "type": "function"
286
+ },
287
+ {
288
+ "inputs": [
289
+ {
290
+ "internalType": "address",
291
+ "name": "",
292
+ "type": "address"
293
+ },
294
+ {
295
+ "internalType": "address",
296
+ "name": "",
297
+ "type": "address"
298
+ },
299
+ {
300
+ "internalType": "uint256",
301
+ "name": "",
302
+ "type": "uint256"
303
+ },
304
+ {
305
+ "internalType": "bytes",
306
+ "name": "",
307
+ "type": "bytes"
308
+ }
309
+ ],
310
+ "name": "onERC721Received",
311
+ "outputs": [
312
+ {
313
+ "internalType": "bytes4",
314
+ "name": "",
315
+ "type": "bytes4"
316
+ }
317
+ ],
318
+ "stateMutability": "nonpayable",
319
+ "type": "function"
320
+ },
321
+ {
322
+ "inputs": [
323
+ {
324
+ "internalType": "uint256",
325
+ "name": "serviceId",
326
+ "type": "uint256"
327
+ }
328
+ ],
329
+ "name": "restake",
330
+ "outputs": [],
331
+ "stateMutability": "nonpayable",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [],
336
+ "name": "rewardRatio",
337
+ "outputs": [
338
+ {
339
+ "internalType": "uint256",
340
+ "name": "",
341
+ "type": "uint256"
342
+ }
343
+ ],
344
+ "stateMutability": "view",
345
+ "type": "function"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "secondToken",
350
+ "outputs": [
351
+ {
352
+ "internalType": "address",
353
+ "name": "",
354
+ "type": "address"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
360
+ {
361
+ "inputs": [],
362
+ "name": "secondTokenAmount",
363
+ "outputs": [
364
+ {
365
+ "internalType": "uint256",
366
+ "name": "",
367
+ "type": "uint256"
368
+ }
369
+ ],
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
373
+ {
374
+ "inputs": [],
375
+ "name": "serviceRegistry",
376
+ "outputs": [
377
+ {
378
+ "internalType": "address",
379
+ "name": "",
380
+ "type": "address"
381
+ }
382
+ ],
383
+ "stateMutability": "view",
384
+ "type": "function"
385
+ },
386
+ {
387
+ "inputs": [
388
+ {
389
+ "internalType": "uint256",
390
+ "name": "serviceId",
391
+ "type": "uint256"
392
+ }
393
+ ],
394
+ "name": "stake",
395
+ "outputs": [],
396
+ "stateMutability": "nonpayable",
397
+ "type": "function"
398
+ },
399
+ {
400
+ "inputs": [],
401
+ "name": "stakeRatio",
402
+ "outputs": [
403
+ {
404
+ "internalType": "uint256",
405
+ "name": "",
406
+ "type": "uint256"
407
+ }
408
+ ],
409
+ "stateMutability": "view",
410
+ "type": "function"
411
+ },
412
+ {
413
+ "inputs": [],
414
+ "name": "stakingInstance",
415
+ "outputs": [
416
+ {
417
+ "internalType": "address",
418
+ "name": "",
419
+ "type": "address"
420
+ }
421
+ ],
422
+ "stateMutability": "view",
423
+ "type": "function"
424
+ },
425
+ {
426
+ "inputs": [
427
+ {
428
+ "internalType": "uint256",
429
+ "name": "serviceId",
430
+ "type": "uint256"
431
+ }
432
+ ],
433
+ "name": "unstake",
434
+ "outputs": [],
435
+ "stateMutability": "nonpayable",
436
+ "type": "function"
437
+ }
438
+ ],
439
+ "bytecode": "0x61014060405260018055348015610014575f5ffd5b50604051611f6c380380611f6c833981016040819052610033916101f2565b6001600160a01b038516158061005057506001600160a01b038416155b8061006257506001600160a01b038316155b156100805760405163d92e233d60e01b815260040160405180910390fd5b81158061008b575080155b156100a957604051637c946ed760e01b815260040160405180910390fd5b6001600160a01b0380861660805284811660a052831660c08190526101008390526101208290526040805163160a717b60e21b815290515f9291635829c5ec9160048083019260209291908290030181865afa15801561010b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012f9190610244565b90505f846001600160a01b031663e77cdcc96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561016e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101929190610244565b9050670de0b6b3a7640000846101a984600161026f565b6101b39084610288565b6101bd9190610288565b6101c7919061029f565b60e052506102be95505050505050565b80516001600160a01b03811681146101ed575f5ffd5b919050565b5f5f5f5f5f60a08688031215610206575f5ffd5b61020f866101d7565b945061021d602087016101d7565b935061022b604087016101d7565b6060870151608090970151959894975095949392505050565b5f60208284031215610254575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102825761028261025b565b92915050565b80820281158282048414176102825761028261025b565b5f826102b957634e487b7160e01b5f52601260045260245ffd5b500490565b60805160a05160c05160e0516101005161012051611bc66103a65f395f818161024a01526113a501525f6102a601525f81816103220152818161055701528181610beb01526113db01525f8181610167015281816105ac0152818161084501528181610cf101528181610da601528181610f3701528181611035015281816110f2015281816111a5015261126201525f81816101db01528181610bc80152818161131d015261143201525f81816102fb01528181610439015281816106ca015281816108fd01528181610aa601528181610c4a01528181610d2001526111210152611bc65ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c8063646033bc11610093578063bce1b52011610063578063bce1b520146102db578063c2c4c5c1146102ee578063cbcf252a146102f6578063cc6567251461031d575f5ffd5b8063646033bc1461024557806368ff20c81461026c5780638e00a8e8146102a1578063a694fc3a146102c8575f5ffd5b8063379607f5116100ce578063379607f5146101c35780633bfd49da146101d65780635ba19af4146101fd57806360d964c314610213575f5ffd5b8063150b7a02146100f457806326e86d95146101625780632e17de78146101ae575b5f5ffd5b61012c6101023660046116c2565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6101897f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610159565b6101c16101bc36600461175b565b610344565b005b6101c16101d136600461175b565b610755565b6101897f000000000000000000000000000000000000000000000000000000000000000081565b6102055f5481565b604051908152602001610159565b610235610221366004611772565b60036020525f908152604090205460ff1681565b6040519015158152602001610159565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b61018961027a36600461175b565b60026020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b6101c16102d636600461175b565b6109d2565b6101c16102e936600461175b565b610e47565b6101c161121c565b6101897f000000000000000000000000000000000000000000000000000000000000000081565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b600180541115610380576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff16338114610408576040517f1728a1a900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044015b60405180910390fd5b6040517f4236aff8000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634236aff89060240160e060405180830381865afa158015610493573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b791906117ac565b5050505f87815260026020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905573ffffffffffffffffffffffffffffffffffffffff861683526003909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055805493955092935082915061054c905083611872565b919050555061057b827f0000000000000000000000000000000000000000000000000000000000000000611318565b6040517f2e17de78000000000000000000000000000000000000000000000000000000008152600481018490525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e17de78906024016020604051808303815f875af1158015610607573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062b91906118a6565b905080156106785761063d8282611397565b837fc83b5086ce94ec8d5a88a9f5fea4b18a522bb238ed0d2d8abd959549a80c16b88260405161066f91815260200190565b60405180910390a25b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8481166024830152604482018690527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064015f604051808303815f87803b15801561070b575f5ffd5b505af115801561071d573d5f5f3e3d5ffd5b50506040518692507f11725367022c3ff288940f4b5473aa61c2da6a24af7363a1128ee2401e8983b291505f90a25050600180555050565b600180541115610791576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff16338114610814576040517f1728a1a900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044016103ff565b6040517f379607f5000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063379607f5906024016020604051808303815f875af11580156108a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c491906118a6565b905080156109c9576040517f4236aff8000000000000000000000000000000000000000000000000000000008152600481018490525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634236aff89060240160e060405180830381865afa158015610957573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b91906117ac565b505050505091505061098d8183611397565b837fc83b5086ce94ec8d5a88a9f5fea4b18a522bb238ed0d2d8abd959549a80c16b8836040516109bf91815260200190565b60405180910390a2505b50506001805550565b600180541115610a0e576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff168015610a75576040517f7a5afbde000000000000000000000000000000000000000000000000000000008152600481018390526024016103ff565b6040517f4236aff8000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634236aff89060240160e060405180830381865afa158015610b00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2491906117ac565b5050505f87815260026020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905573ffffffffffffffffffffffffffffffffffffffff861683526003909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558054939550929350829150610bbe9050836118bd565b9190505550610c0f7f000000000000000000000000000000000000000000000000000000000000000033307f00000000000000000000000000000000000000000000000000000000000000006114dd565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342842e0e906064015f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044015f604051808303815f87803b158015610d63575f5ffd5b505af1158015610d75573d5f5f3e3d5ffd5b50506040517fa694fc3a000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a694fc3a91506024015f604051808303815f87803b158015610dfe575f5ffd5b505af1158015610e10573d5f5f3e3d5ffd5b50506040518592507feebbaa86c348cb664e392b180fd0ff2e1998af9fa833ef69a778cb0b42d3ca2791505f90a250506001805550565b600180541115610e83576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff16338114610f06576040517f1728a1a900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044016103ff565b6040517ffd0bba8c000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063fd0bba8c90602401602060405180830381865afa158015610f91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb591906118f4565b90506002816002811115610fcb57610fcb611912565b146110065782816040517f1bcf512c0000000000000000000000000000000000000000000000000000000081526004016103ff92919061193f565b6040517f2e17de78000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e17de78906024016020604051808303815f875af1158015611090573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b491906118a6565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044015f604051808303815f87803b158015611162575f5ffd5b505af1158015611174573d5f5f3e3d5ffd5b50506040517fa694fc3a000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a694fc3a91506024015f604051808303815f87803b1580156111fd575f5ffd5b505af115801561120f573d5f5f3e3d5ffd5b5050600180555050505050565b600180541115611258576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b81526004015f604051808303815f875af11580156112c9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261130e9190810190611a6f565b5050600180555050565b6113437f000000000000000000000000000000000000000000000000000000000000000083836115cc565b8173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648260405161138b91815260200190565b60405180910390a25050565b670de0b6b3a76400006113ca7f000000000000000000000000000000000000000000000000000000000000000083611b28565b6113d49190611b45565b90505f5f547f00000000000000000000000000000000000000000000000000000000000000006114049190611b28565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561148c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b091906118a6565b6114ba9190611b7d565b9050808211156114c8578091505b81156114d8576114d88383611318565b505050565b5f6040517f23b872dd000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff851660045273ffffffffffffffffffffffffffffffffffffffff84166024528260445260205f60645f5f8a5af13d15601f3d1160015f511416171691505f6060528060405250806115c5576040517fabae3d6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8087166004830152808616602483015284166044820152606481018390526084016103ff565b5050505050565b5f6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff84166004528260245260205f60445f5f895af13d15601f3d1160015f511416171691505f606052806040525080611698576040517fabae3d6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015230602483015284166044820152606481018390526084016103ff565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146116bf575f5ffd5b50565b5f5f5f5f5f608086880312156116d6575f5ffd5b85356116e18161169e565b945060208601356116f18161169e565b935060408601359250606086013567ffffffffffffffff811115611713575f5ffd5b8601601f81018813611723575f5ffd5b803567ffffffffffffffff811115611739575f5ffd5b88602082840101111561174a575f5ffd5b959894975092955050506020019190565b5f6020828403121561176b575f5ffd5b5035919050565b5f60208284031215611782575f5ffd5b813561178d8161169e565b9392505050565b805163ffffffff811681146117a7575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a0312156117c2575f5ffd5b87516bffffffffffffffffffffffff811681146117dd575f5ffd5b60208901519097506117ee8161169e565b6040890151909650945061180460608901611794565b935061181260808901611794565b925061182060a08901611794565b915060c088015160ff81168114611835575f5ffd5b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8161188057611880611845565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f602082840312156118b6575f5ffd5b5051919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118ed576118ed611845565b5060010190565b5f60208284031215611904575f5ffd5b81516003811061178d575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604081016003831061197b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126119c4575f5ffd5b815167ffffffffffffffff8111156119de576119de611988565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715611a2957611a29611988565b604052918252602081850181019290810186841115611a46575f5ffd5b6020860192505b83831015611a65578251815260209283019201611a4d565b5095945050505050565b5f5f5f5f60808587031215611a82575f5ffd5b845167ffffffffffffffff811115611a98575f5ffd5b611aa4878288016119b5565b945050602085015167ffffffffffffffff811115611ac0575f5ffd5b611acc878288016119b5565b935050604085015167ffffffffffffffff811115611ae8575f5ffd5b611af4878288016119b5565b925050606085015167ffffffffffffffff811115611b10575f5ffd5b611b1c878288016119b5565b91505092959194509250565b8082028115828204841417611b3f57611b3f611845565b92915050565b5f82611b78577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115611b3f57611b3f61184556fea2646970667358221220e21b82de4c7c0978b8e18241747b14682c2d2fe47896b44f1735c5b90e59df7264736f6c634300081c0033",
440
+ "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c8063646033bc11610093578063bce1b52011610063578063bce1b520146102db578063c2c4c5c1146102ee578063cbcf252a146102f6578063cc6567251461031d575f5ffd5b8063646033bc1461024557806368ff20c81461026c5780638e00a8e8146102a1578063a694fc3a146102c8575f5ffd5b8063379607f5116100ce578063379607f5146101c35780633bfd49da146101d65780635ba19af4146101fd57806360d964c314610213575f5ffd5b8063150b7a02146100f457806326e86d95146101625780632e17de78146101ae575b5f5ffd5b61012c6101023660046116c2565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6101897f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610159565b6101c16101bc36600461175b565b610344565b005b6101c16101d136600461175b565b610755565b6101897f000000000000000000000000000000000000000000000000000000000000000081565b6102055f5481565b604051908152602001610159565b610235610221366004611772565b60036020525f908152604090205460ff1681565b6040519015158152602001610159565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b61018961027a36600461175b565b60026020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b6101c16102d636600461175b565b6109d2565b6101c16102e936600461175b565b610e47565b6101c161121c565b6101897f000000000000000000000000000000000000000000000000000000000000000081565b6102057f000000000000000000000000000000000000000000000000000000000000000081565b600180541115610380576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff16338114610408576040517f1728a1a900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044015b60405180910390fd5b6040517f4236aff8000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634236aff89060240160e060405180830381865afa158015610493573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b791906117ac565b5050505f87815260026020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905573ffffffffffffffffffffffffffffffffffffffff861683526003909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055805493955092935082915061054c905083611872565b919050555061057b827f0000000000000000000000000000000000000000000000000000000000000000611318565b6040517f2e17de78000000000000000000000000000000000000000000000000000000008152600481018490525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e17de78906024016020604051808303815f875af1158015610607573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062b91906118a6565b905080156106785761063d8282611397565b837fc83b5086ce94ec8d5a88a9f5fea4b18a522bb238ed0d2d8abd959549a80c16b88260405161066f91815260200190565b60405180910390a25b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8481166024830152604482018690527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064015f604051808303815f87803b15801561070b575f5ffd5b505af115801561071d573d5f5f3e3d5ffd5b50506040518692507f11725367022c3ff288940f4b5473aa61c2da6a24af7363a1128ee2401e8983b291505f90a25050600180555050565b600180541115610791576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff16338114610814576040517f1728a1a900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044016103ff565b6040517f379607f5000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063379607f5906024016020604051808303815f875af11580156108a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c491906118a6565b905080156109c9576040517f4236aff8000000000000000000000000000000000000000000000000000000008152600481018490525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634236aff89060240160e060405180830381865afa158015610957573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b91906117ac565b505050505091505061098d8183611397565b837fc83b5086ce94ec8d5a88a9f5fea4b18a522bb238ed0d2d8abd959549a80c16b8836040516109bf91815260200190565b60405180910390a2505b50506001805550565b600180541115610a0e576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff168015610a75576040517f7a5afbde000000000000000000000000000000000000000000000000000000008152600481018390526024016103ff565b6040517f4236aff8000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634236aff89060240160e060405180830381865afa158015610b00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2491906117ac565b5050505f87815260026020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905573ffffffffffffffffffffffffffffffffffffffff861683526003909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558054939550929350829150610bbe9050836118bd565b9190505550610c0f7f000000000000000000000000000000000000000000000000000000000000000033307f00000000000000000000000000000000000000000000000000000000000000006114dd565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342842e0e906064015f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b50506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044015f604051808303815f87803b158015610d63575f5ffd5b505af1158015610d75573d5f5f3e3d5ffd5b50506040517fa694fc3a000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a694fc3a91506024015f604051808303815f87803b158015610dfe575f5ffd5b505af1158015610e10573d5f5f3e3d5ffd5b50506040518592507feebbaa86c348cb664e392b180fd0ff2e1998af9fa833ef69a778cb0b42d3ca2791505f90a250506001805550565b600180541115610e83576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260018190555f828152602091909152604090205473ffffffffffffffffffffffffffffffffffffffff16338114610f06576040517f1728a1a900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044016103ff565b6040517ffd0bba8c000000000000000000000000000000000000000000000000000000008152600481018390525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063fd0bba8c90602401602060405180830381865afa158015610f91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb591906118f4565b90506002816002811115610fcb57610fcb611912565b146110065782816040517f1bcf512c0000000000000000000000000000000000000000000000000000000081526004016103ff92919061193f565b6040517f2e17de78000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e17de78906024016020604051808303815f875af1158015611090573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b491906118a6565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044015f604051808303815f87803b158015611162575f5ffd5b505af1158015611174573d5f5f3e3d5ffd5b50506040517fa694fc3a000000000000000000000000000000000000000000000000000000008152600481018690527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063a694fc3a91506024015f604051808303815f87803b1580156111fd575f5ffd5b505af115801561120f573d5f5f3e3d5ffd5b5050600180555050505050565b600180541115611258576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026001819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b81526004015f604051808303815f875af11580156112c9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261130e9190810190611a6f565b5050600180555050565b6113437f000000000000000000000000000000000000000000000000000000000000000083836115cc565b8173ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648260405161138b91815260200190565b60405180910390a25050565b670de0b6b3a76400006113ca7f000000000000000000000000000000000000000000000000000000000000000083611b28565b6113d49190611b45565b90505f5f547f00000000000000000000000000000000000000000000000000000000000000006114049190611b28565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561148c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b091906118a6565b6114ba9190611b7d565b9050808211156114c8578091505b81156114d8576114d88383611318565b505050565b5f6040517f23b872dd000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff851660045273ffffffffffffffffffffffffffffffffffffffff84166024528260445260205f60645f5f8a5af13d15601f3d1160015f511416171691505f6060528060405250806115c5576040517fabae3d6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8087166004830152808616602483015284166044820152606481018390526084016103ff565b5050505050565b5f6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff84166004528260245260205f60445f5f895af13d15601f3d1160015f511416171691505f606052806040525080611698576040517fabae3d6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015230602483015284166044820152606481018390526084016103ff565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146116bf575f5ffd5b50565b5f5f5f5f5f608086880312156116d6575f5ffd5b85356116e18161169e565b945060208601356116f18161169e565b935060408601359250606086013567ffffffffffffffff811115611713575f5ffd5b8601601f81018813611723575f5ffd5b803567ffffffffffffffff811115611739575f5ffd5b88602082840101111561174a575f5ffd5b959894975092955050506020019190565b5f6020828403121561176b575f5ffd5b5035919050565b5f60208284031215611782575f5ffd5b813561178d8161169e565b9392505050565b805163ffffffff811681146117a7575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a0312156117c2575f5ffd5b87516bffffffffffffffffffffffff811681146117dd575f5ffd5b60208901519097506117ee8161169e565b6040890151909650945061180460608901611794565b935061181260808901611794565b925061182060a08901611794565b915060c088015160ff81168114611835575f5ffd5b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8161188057611880611845565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f602082840312156118b6575f5ffd5b5051919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118ed576118ed611845565b5060010190565b5f60208284031215611904575f5ffd5b81516003811061178d575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604081016003831061197b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126119c4575f5ffd5b815167ffffffffffffffff8111156119de576119de611988565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715611a2957611a29611988565b604052918252602081850181019290810186841115611a46575f5ffd5b6020860192505b83831015611a65578251815260209283019201611a4d565b5095945050505050565b5f5f5f5f60808587031215611a82575f5ffd5b845167ffffffffffffffff811115611a98575f5ffd5b611aa4878288016119b5565b945050602085015167ffffffffffffffff811115611ac0575f5ffd5b611acc878288016119b5565b935050604085015167ffffffffffffffff811115611ae8575f5ffd5b611af4878288016119b5565b925050606085015167ffffffffffffffff811115611b10575f5ffd5b611b1c878288016119b5565b91505092959194509250565b8082028115828204841417611b3f57611b3f611845565b92915050565b5f82611b78577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b81810381811115611b3f57611b3f61184556fea2646970667358221220e21b82de4c7c0978b8e18241747b14682c2d2fe47896b44f1735c5b90e59df7264736f6c634300081c0033",
441
+ "linkReferences": {},
442
+ "deployedLinkReferences": {}
443
+ }