@arcblock/contracts 0.2.5
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.
- package/README.md +98 -0
- package/lib/abi/ERC20Rollup.json +569 -0
- package/lib/abi/ERC20RollupFactory.json +141 -0
- package/lib/abi/ERC20Token.json +286 -0
- package/lib/abi/MultiSigVault.json +358 -0
- package/lib/abi/MultiSigVaultFactory.json +126 -0
- package/lib/abi/SignerManager.json +362 -0
- package/lib/abi/SignerManagerFactory.json +136 -0
- package/lib/error.js +77 -0
- package/lib/index.js +35 -0
- package/package.json +53 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "MultiSigVault",
|
|
4
|
+
"sourceName": "src/MultiSigVault.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [],
|
|
8
|
+
"stateMutability": "nonpayable",
|
|
9
|
+
"type": "constructor"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"anonymous": false,
|
|
13
|
+
"inputs": [
|
|
14
|
+
{
|
|
15
|
+
"indexed": false,
|
|
16
|
+
"internalType": "address",
|
|
17
|
+
"name": "from",
|
|
18
|
+
"type": "address"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"indexed": false,
|
|
22
|
+
"internalType": "uint256",
|
|
23
|
+
"name": "amount",
|
|
24
|
+
"type": "uint256"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"indexed": false,
|
|
28
|
+
"internalType": "bytes",
|
|
29
|
+
"name": "data",
|
|
30
|
+
"type": "bytes"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"name": "Deposited",
|
|
34
|
+
"type": "event"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"anonymous": false,
|
|
38
|
+
"inputs": [
|
|
39
|
+
{
|
|
40
|
+
"indexed": false,
|
|
41
|
+
"internalType": "address",
|
|
42
|
+
"name": "token",
|
|
43
|
+
"type": "address"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"indexed": false,
|
|
47
|
+
"internalType": "address",
|
|
48
|
+
"name": "spender",
|
|
49
|
+
"type": "address"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"indexed": false,
|
|
53
|
+
"internalType": "uint256",
|
|
54
|
+
"name": "amount",
|
|
55
|
+
"type": "uint256"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"indexed": false,
|
|
59
|
+
"internalType": "address",
|
|
60
|
+
"name": "sender",
|
|
61
|
+
"type": "address"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"name": "ERC20Approved",
|
|
65
|
+
"type": "event"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"anonymous": false,
|
|
69
|
+
"inputs": [
|
|
70
|
+
{
|
|
71
|
+
"indexed": false,
|
|
72
|
+
"internalType": "address",
|
|
73
|
+
"name": "token",
|
|
74
|
+
"type": "address"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"indexed": false,
|
|
78
|
+
"internalType": "address",
|
|
79
|
+
"name": "to",
|
|
80
|
+
"type": "address"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"indexed": false,
|
|
84
|
+
"internalType": "uint256",
|
|
85
|
+
"name": "amount",
|
|
86
|
+
"type": "uint256"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"indexed": false,
|
|
90
|
+
"internalType": "address",
|
|
91
|
+
"name": "sender",
|
|
92
|
+
"type": "address"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"name": "ERC20Transferred",
|
|
96
|
+
"type": "event"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"anonymous": false,
|
|
100
|
+
"inputs": [
|
|
101
|
+
{
|
|
102
|
+
"indexed": false,
|
|
103
|
+
"internalType": "address",
|
|
104
|
+
"name": "to",
|
|
105
|
+
"type": "address"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"indexed": false,
|
|
109
|
+
"internalType": "uint256",
|
|
110
|
+
"name": "amount",
|
|
111
|
+
"type": "uint256"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"indexed": false,
|
|
115
|
+
"internalType": "address",
|
|
116
|
+
"name": "sender",
|
|
117
|
+
"type": "address"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"name": "EtherTransferred",
|
|
121
|
+
"type": "event"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"anonymous": false,
|
|
125
|
+
"inputs": [
|
|
126
|
+
{
|
|
127
|
+
"indexed": false,
|
|
128
|
+
"internalType": "uint8",
|
|
129
|
+
"name": "version",
|
|
130
|
+
"type": "uint8"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"name": "Initialized",
|
|
134
|
+
"type": "event"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"stateMutability": "payable",
|
|
138
|
+
"type": "fallback"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"inputs": [
|
|
142
|
+
{
|
|
143
|
+
"internalType": "address",
|
|
144
|
+
"name": "token",
|
|
145
|
+
"type": "address"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"internalType": "address",
|
|
149
|
+
"name": "spender",
|
|
150
|
+
"type": "address"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"internalType": "uint256",
|
|
154
|
+
"name": "amount",
|
|
155
|
+
"type": "uint256"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"components": [
|
|
159
|
+
{
|
|
160
|
+
"internalType": "address",
|
|
161
|
+
"name": "signer",
|
|
162
|
+
"type": "address"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"internalType": "bytes",
|
|
166
|
+
"name": "signature",
|
|
167
|
+
"type": "bytes"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"internalType": "uint256",
|
|
171
|
+
"name": "nonce",
|
|
172
|
+
"type": "uint256"
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"internalType": "struct Signature[]",
|
|
176
|
+
"name": "signatures",
|
|
177
|
+
"type": "tuple[]"
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"name": "approveERC20",
|
|
181
|
+
"outputs": [],
|
|
182
|
+
"stateMutability": "nonpayable",
|
|
183
|
+
"type": "function"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"inputs": [
|
|
187
|
+
{
|
|
188
|
+
"internalType": "address",
|
|
189
|
+
"name": "spender",
|
|
190
|
+
"type": "address"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"internalType": "address[]",
|
|
194
|
+
"name": "tokens",
|
|
195
|
+
"type": "address[]"
|
|
196
|
+
}
|
|
197
|
+
],
|
|
198
|
+
"name": "getAllowances",
|
|
199
|
+
"outputs": [
|
|
200
|
+
{
|
|
201
|
+
"internalType": "uint256[]",
|
|
202
|
+
"name": "",
|
|
203
|
+
"type": "uint256[]"
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
"stateMutability": "view",
|
|
207
|
+
"type": "function"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"inputs": [
|
|
211
|
+
{
|
|
212
|
+
"internalType": "address",
|
|
213
|
+
"name": "user",
|
|
214
|
+
"type": "address"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"internalType": "address[]",
|
|
218
|
+
"name": "tokens",
|
|
219
|
+
"type": "address[]"
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"name": "getBalances",
|
|
223
|
+
"outputs": [
|
|
224
|
+
{
|
|
225
|
+
"internalType": "uint256[]",
|
|
226
|
+
"name": "",
|
|
227
|
+
"type": "uint256[]"
|
|
228
|
+
}
|
|
229
|
+
],
|
|
230
|
+
"stateMutability": "view",
|
|
231
|
+
"type": "function"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"inputs": [
|
|
235
|
+
{
|
|
236
|
+
"internalType": "address",
|
|
237
|
+
"name": "_signerManager",
|
|
238
|
+
"type": "address"
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
"name": "initialize",
|
|
242
|
+
"outputs": [],
|
|
243
|
+
"stateMutability": "nonpayable",
|
|
244
|
+
"type": "function"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"inputs": [
|
|
248
|
+
{
|
|
249
|
+
"internalType": "address",
|
|
250
|
+
"name": "token",
|
|
251
|
+
"type": "address"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"internalType": "address",
|
|
255
|
+
"name": "to",
|
|
256
|
+
"type": "address"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"internalType": "uint256",
|
|
260
|
+
"name": "amount",
|
|
261
|
+
"type": "uint256"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"components": [
|
|
265
|
+
{
|
|
266
|
+
"internalType": "address",
|
|
267
|
+
"name": "signer",
|
|
268
|
+
"type": "address"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"internalType": "bytes",
|
|
272
|
+
"name": "signature",
|
|
273
|
+
"type": "bytes"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"internalType": "uint256",
|
|
277
|
+
"name": "nonce",
|
|
278
|
+
"type": "uint256"
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
"internalType": "struct Signature[]",
|
|
282
|
+
"name": "signatures",
|
|
283
|
+
"type": "tuple[]"
|
|
284
|
+
}
|
|
285
|
+
],
|
|
286
|
+
"name": "sendERC20",
|
|
287
|
+
"outputs": [],
|
|
288
|
+
"stateMutability": "nonpayable",
|
|
289
|
+
"type": "function"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"inputs": [
|
|
293
|
+
{
|
|
294
|
+
"internalType": "address",
|
|
295
|
+
"name": "to",
|
|
296
|
+
"type": "address"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"internalType": "uint256",
|
|
300
|
+
"name": "amount",
|
|
301
|
+
"type": "uint256"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"internalType": "bytes",
|
|
305
|
+
"name": "data",
|
|
306
|
+
"type": "bytes"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"components": [
|
|
310
|
+
{
|
|
311
|
+
"internalType": "address",
|
|
312
|
+
"name": "signer",
|
|
313
|
+
"type": "address"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"internalType": "bytes",
|
|
317
|
+
"name": "signature",
|
|
318
|
+
"type": "bytes"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"internalType": "uint256",
|
|
322
|
+
"name": "nonce",
|
|
323
|
+
"type": "uint256"
|
|
324
|
+
}
|
|
325
|
+
],
|
|
326
|
+
"internalType": "struct Signature[]",
|
|
327
|
+
"name": "signatures",
|
|
328
|
+
"type": "tuple[]"
|
|
329
|
+
}
|
|
330
|
+
],
|
|
331
|
+
"name": "sendEther",
|
|
332
|
+
"outputs": [],
|
|
333
|
+
"stateMutability": "nonpayable",
|
|
334
|
+
"type": "function"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"inputs": [],
|
|
338
|
+
"name": "signerManager",
|
|
339
|
+
"outputs": [
|
|
340
|
+
{
|
|
341
|
+
"internalType": "address",
|
|
342
|
+
"name": "",
|
|
343
|
+
"type": "address"
|
|
344
|
+
}
|
|
345
|
+
],
|
|
346
|
+
"stateMutability": "view",
|
|
347
|
+
"type": "function"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"stateMutability": "payable",
|
|
351
|
+
"type": "receive"
|
|
352
|
+
}
|
|
353
|
+
],
|
|
354
|
+
"bytecode": "0x60a0604052600073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004557600080fd5b506200007a7f1547c574b819c9c5c08ffc18d8921f84a6d43196782dfa376f7055e35cc1da6260001b620000f860201b60201c565b620000ae7f89c69700f627af1d65b9d84fc4dd97ec45275aed617c9e87194595517ad0a97e60001b620000f860201b60201c565b620000e27f2a6856d921ae870616b8825215be41e07676a47de52773d18cc4c7a11accfe3660001b620000f860201b60201c565b620000f2620000fb60201b60201c565b620002a6565b50565b600060019054906101000a900460ff16156200014e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001459062000249565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620001c05760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620001b7919062000289565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b600062000231602783620001c2565b91506200023e82620001d3565b604082019050919050565b60006020820190508181036000830152620002648162000222565b9050919050565b600060ff82169050919050565b62000283816200026b565b82525050565b6000602082019050620002a0600083018462000278565b92915050565b6080516142d0620002d7600039600081816107d801528181610dc2015281816117a8015261243101526142d06000f3fe6080604052600436106100745760003560e01c80637e5a72e71161004e5780637e5a72e714610399578063c4d66de8146103c2578063cba89d58146103eb578063e0de101c1461041657610173565b8063118ee5a0146102f65780636a385ae91461031f578063764d2de91461035c57610173565b36610173576100a57f3e442cc66eb34011aee285af8e5c9e32e3dd2ab9755e23434d511b56546c702460001b61043f565b6000341115610144576100da7f3dc8d42331d5101deb5a7bbd7cfa2f74d3bef59d165e76dfe95501b88427cfc460001b61043f565b6101067fbb891e1e57f5521e00d250fce1f1f28abaaa8b3639df13a22762b4bb2d331ac060001b61043f565b7f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334604051610137929190612f85565b60405180910390a1610171565b6101707f6948389792ce1f418d61e391f74fae3003efe93c790ec1798e3b49ea0ff2ac4a60001b61043f565b5b005b61019f7fb7041cc3f3dd74c036e6833ded8089d8971a31e42b621cbf3712b657c68803fa60001b61043f565b6101cb7fdd1b7c75b89a09229811340780ffdc29fc9f42f039da5109b3cf550fa5ff687960001b61043f565b6101f77f1136b1529655d1d24e3050a64cbb67725c399ae37ccd5895dbebbb9c54bfcf3e60001b61043f565b60003411156102c75761022c7f8c7fac4e5372eb59e6f8b50613c951189801d08f3a5f0e99c9c163ea8bcd045660001b61043f565b6102587fa8a7c1b430dabce453164e894a8dd6060020a5f79563e528fa35515d341275d960001b61043f565b6102847fd4932bf9015e3951ef39fc558d0361fd72b4a3f221e88292aba792b1a50c277560001b61043f565b7f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f033346000366040516102ba949392919061300e565b60405180910390a16102f4565b6102f37fe97822e11ebee4cc21e310d66e1c28a8f11a3cf60ad177d8b7dd4dee36ba7d3960001b61043f565b5b005b34801561030257600080fd5b5061031d6004803603810190610318919061311f565b610442565b005b34801561032b57600080fd5b50610346600480360381019061034191906132e5565b610c30565b60405161035391906133ff565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906132e5565b6110f9565b60405161039091906133ff565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb919061311f565b611412565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190613421565b611d6b565b005b3480156103f757600080fd5b50610400612075565b60405161040d919061344e565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906134bf565b61209b565b005b50565b61046e7f71d9d831c13f5291e3dae13c67c521b689002e9731c43ab0d480a38cb5a150aa60001b61043f565b61049a7fb8f8a7362a84c1a8efe4710754a990d8a4141ba758a24fca8993fd6332d3e40a60001b61043f565b6104c67fc2f22589e37d570495a2144c93e326eb3c5938f4e27a878893033b6d5eb7a54a60001b61043f565b6104f27fc99bbf54a7bb87fdb0d7f7199bbd06676ea5323122cb8d3a3fc9a4f08ef1e59660001b61043f565b60016104fc612a75565b60ff161461053f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610536906135c3565b60405180910390fd5b61056b7f93ce6ab1cb55d66559f29bd55988f9ae854ed632facd61e69fce972125e6635a60001b61043f565b6105977f6551b956b1236435fef21914b1696e1a1d022c0ba560250a62d036383e7b88e060001b61043f565b6105c37f1c38daa7b4c4a76f928ad0ff7dbefb0e3106f80110659a81a583e32e418a90ec60001b61043f565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506106157f73f440b67e78fa5f0b8925244c32ee30dbd399a925527e518e1cd88b46b58fbf60001b61043f565b6106417f81c9dc0fea0eaca9fab97cf9ea98c992575ea7989e01307965c6fa00d96400fa60001b61043f565b61066d7f61125254a7e1ba656e9494e73e85463316f5a8120483b119723494e3c3943bd760001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663efc78401336040518263ffffffff1660e01b81526004016106a6919061344e565b602060405180830381865afa1580156106c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e7919061361b565b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d90613694565b60405180910390fd5b6107527fcfd24b38eec71f15c6ca37dfd4d3d04a4c8bd6e73f1fd875e08f0c5d1fcc92e160001b61043f565b61077e7f80731c297a87d326aeb0fbb4708101b642ee4bf4cec414daf7ddf09967066a7760001b61043f565b6107aa7f1c69471399dd84ba07cc36316d7fa91980c00ad467b746d52b819ed412f8005c60001b61043f565b6107d67fe3fb514aa2d0e9b19f50692d5ede3c941db8d4cbc249710a76030c157c598af060001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90613700565b60405180910390fd5b6108907ff2b44eb8828944ff13e99623ce7f0f08ac0c7e37337aa730390e4bf47558ea2860001b61043f565b6108bc7fd92366f96cf9a90b5d5cb2e1cde8c72765c0848bc640e6ece5854dab7b10ac8860001b61043f565b6108e87f23d8e6da0cb96c941ce28bd0ec969b1e29643d8cabc41e24b5e8f6a7e380626a60001b61043f565b6109147f497052e91b3ba1a23fa7672dbb45b03208813230e7fdb5d693990ae6155edec660001b61043f565b60008411610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e9061376c565b60405180910390fd5b6109837f0e8af7d6ce2bf008650beda4e847c8add2b4135e55d06da8af2231f827baefe560001b61043f565b6109af7f51b835e8f05288b4ae03df29db3a3b4e5c2a743993f8bd9deeea120fa61a8c5a60001b61043f565b6109db7fca6229ddbe35f2cd49cc28829fb710b74124c0f10a8d21305646fdcced4ef5c060001b61043f565b60008686866040516020016109f2939291906137f5565b604051602081830303815290604052805190602001209050610a367fbd53197200d272ccd398514cc174fb228cdce99939d1960d6975dfc87a31718060001b61043f565b610a627f6846dc726feb35698821eea4721bc150aced0b7bd856e3a709e88e8a20eaae4660001b61043f565b8173ffffffffffffffffffffffffffffffffffffffff166323f10e838286866040518463ffffffff1660e01b8152600401610a9f93929190613a7a565b600060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b50505050610afd7fa8ec0d1aecb2d174d6ad1714dc6d7b6b2d33576929d3ff5ecb609d8b3486046260001b61043f565b610b297f146302a5541767f7fb02bc458d83c9ac8c56eb4a3a7f70494e99d3617f8ead2560001b61043f565b6000879050610b5a7f3784653a7d50607d099d9d243071039feb74748caad23804eef4d067c530921960001b61043f565b610b867f33be839984416111b7e9fe2190be3e78defd66cfd37bc1448a7f206fb6fe55ef60001b61043f565b610b91818888612a8b565b610bbd7f190bd233f29168b863b3088a751be346b195bdc7b00e483410379b366ca8a21460001b61043f565b610be97f3dd5d067f536f51273a5f9e5db7b150699efa90acdab341a8c95bb5623908e7960001b61043f565b7f36cba1f1091db204da52720e3b8cc1739f198191dfe19117a52d03651870900888888833604051610c1e9493929190613aac565b60405180910390a15050505050505050565b6060610c5e7f676cac0e73931dcb0eca6629ad3fe707e83236b1d65cf96bcd565fb8fb977ec960001b61043f565b610c8a7f24d2715f7f0170dcfd32777a369b9e83dff2fd42df447300d1a37ae5edb12b7b60001b61043f565b610cb67f390adc1f83876b0dbc266cc6dcab8adf1a200fe327a96cb3ee41c961912fff4860001b61043f565b6000825167ffffffffffffffff811115610cd357610cd26131a7565b5b604051908082528060200260200182016040528015610d015781602001602082028036833780820191505090505b509050610d307fe8a0fb49ca301fbd71bdea126dde58f81e28cf8d027a019d5794c8c5c630cb8360001b61043f565b610d5c7f6455fabbf0a161e8df745b333d3ee4c03f3ad14931b45ed16203f5baf5ddb59160001b61043f565b60005b835181101561109657610d947f190af0e5410e42c9b08b7ac4d3f1cc18c857e11ddba52013b4809133c7fb54f160001b61043f565b610dc07f11a724463b9fbc90e35aae7105e3faadd71c9576f4598602da198b66217a718460001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848281518110610e0a57610e09613af1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610fc757610e597f407575c721cbfa43c74f2cd2659dc82a0e3e93377a1e23a7a4c06b7af057bed860001b61043f565b610e857f63b5dbd343f8f9384bbcae1073d23f8bcec23c6df9e89107b3019850577c44ef60001b61043f565b610eb17fbe2ed61f808a1eef680b24c53d884284f6e18251bc7859b0a3befd5a25c3093460001b61043f565b6000848281518110610ec657610ec5613af1565b5b60200260200101519050610efc7fd44e1ac1e1859284c30f25bb8f70830ce160fa470cf664292055fc3f84745b4760001b61043f565b610f287f347716750d47df651d4503eadc94da1419e95634c1110f5a6298e1d3ba28ee0e60001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401610f61919061344e565b602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa29190613b35565b838381518110610fb557610fb4613af1565b5b60200260200101818152505050611083565b610ff37f4494890344ec0f65ec2d53feacb924fbf6716c75a0ea6695fc2328d6da3bd97560001b61043f565b61101f7fda826d8e06594617450cb283971ffda508b73eabd327eb183bef55352b13bc3660001b61043f565b61104b7f874c00b721c5ac73ae628161ce0baa8cf3bcecbc4b8303bed4027c0e06b6cb0760001b61043f565b8473ffffffffffffffffffffffffffffffffffffffff163182828151811061107657611075613af1565b5b6020026020010181815250505b808061108e90613b91565b915050610d5f565b506110c37f6e330a9505493670deae7b024a8e9602fb397e1e4c90d8b92989c9a49aab2da660001b61043f565b6110ef7f7a184523e6f3baa93e5c31b06fa7b5f966e9228b84039beef79e1236c75fe98360001b61043f565b8091505092915050565b60606111277ff76e4bd711d18e79cae5b7b7b47901dfb34d1adcd2946b9ae33e03ab500651e960001b61043f565b6111537f7f4faf69b04f500b70ed2e8d1a22f80c80be9770c5efea72f7c93420a6427e3460001b61043f565b61117f7f45b99b82651b2d2f24b78e6d2a25a9a4c97c62911781e612584cbe1aa322fe5b60001b61043f565b6000825167ffffffffffffffff81111561119c5761119b6131a7565b5b6040519080825280602002602001820160405280156111ca5781602001602082028036833780820191505090505b5090506111f97f0801e7ae20bb6a9ba78a99c2c21684a596e161ef7e1f1e6676c79bd43d2a159960001b61043f565b6112257f397000a15fec59c90d64656e1576218cce5f5ebf40499884ba24df24194d3aae60001b61043f565b60005b83518110156113af5761125d7fb646c91c9c0906c60d2e4e4a57303ab8e47d7e71a3f0cffbdbfa6e8f1f5ff9cd60001b61043f565b6112897f73d9b8e016646d7b918a071c3c8538036617837b851d1c7ef9e3ad3159e26f8560001b61043f565b600084828151811061129e5761129d613af1565b5b602002602001015190506112d47f90042764755cfecad9c41fe9b3841fe3298d748305c89507158bb880960317a660001b61043f565b6113007f3648b78003425b5cd30f9b13d421cc04d159e10258434eff6bc41682d36ce41060001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30886040518363ffffffff1660e01b815260040161133b929190613bd9565b602060405180830381865afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c9190613b35565b83838151811061138f5761138e613af1565b5b6020026020010181815250505080806113a790613b91565b915050611228565b506113dc7f72691e8c2cc37d5405cd78be3be54913c4aa81eaa86622a5e5196bb569138c2360001b61043f565b6114087fd6ada3fb5f6adce970dc6a250e60c1291935b1338fdee52b58e3446b47efb4fc60001b61043f565b8091505092915050565b61143e7f5c81ce12fdb383ef5de8aed8c4bd9f6850732822b3b84df4ca62191027109a1f60001b61043f565b61146a7f3af24c4de0c945233d6c95b7b8702a58408c2ef2d6de422bcf39a7450895a9c260001b61043f565b6114967f8d01c40d47dd58059662849e1d257b441de4a30fc50c5bc1f378939f79fae6d060001b61043f565b6114c27fdf2843f873f91747167f3965bcee83de92a98081bc865089b0ede4bff2e51f8f60001b61043f565b60016114cc612a75565b60ff161461150f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611506906135c3565b60405180910390fd5b61153b7f1bb0f36cf6a0204ed556741f824a9df6c1dead26a10b6527cdd65f9f0129927960001b61043f565b6115677fb8b852149aea45b23ec67a633a4d98439f0b4551ead9da6607751bfd5b46980060001b61043f565b6115937f278b885e16d398ed231dd09eed8e055f3a137e271547dc821fb39691d113f1c460001b61043f565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506115e57f397235743fab62455e330aaa3bcf2285071e3dc099a1908a7309caf79a6cf93760001b61043f565b6116117f850d62df3f2beebb526aa0c54f645f0c6578b2e599e0963469515cc02aa4831a60001b61043f565b61163d7f7222664ba3c60f0da8c9799c11ff317a76f3da59cbca1509a6bc6a5f5c18340f60001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663efc78401336040518263ffffffff1660e01b8152600401611676919061344e565b602060405180830381865afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061361b565b6116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90613694565b60405180910390fd5b6117227fc6486e6b9578ab0834aac4dc094a756f4ba4e87fd3acb94e2152f5cfe107879c60001b61043f565b61174e7f39870ea5d4c2a29b6a0564b828d51b13b096e12fd79fa23025d7ec07ce88f93660001b61043f565b61177a7fe5d4c3306210cc89e0f2da339745a445628f3a7df4d0f63d49958635435c066260001b61043f565b6117a67ff1011fae91d91c84232688920d8c9d79202bd7fa30fa57dfa8ec7a46f813957460001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90613700565b60405180910390fd5b6118607f3a966035c35d3fbd4c792bb7741e929604a2cc894ceb332017b2083631791d4d60001b61043f565b61188c7fa8775ab4365fe2e13b218fcf6e65ee5827975602995d59dbd28950475a5b273c60001b61043f565b6118b87ff80211ca6fbe18520b4395599ee32ec00f80810c4dadd61411dd225e80f6e2b460001b61043f565b6118e47fc6feffd94c4389a95848bd769ec9e21bf3f23ba758ec9987d4aa53e2606cfa2b60001b61043f565b60008411611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e9061376c565b60405180910390fd5b6119537f5e2f040c81a841eaa3e777e1fd2ceba7b0b622de146c53909c307715fe29448a60001b61043f565b61197f7f2d51ca167422b1225d8f381bf8b0250a9a1b40826b245c934336d9e3a466e0a060001b61043f565b6119ab7f8ed0d36123f18a1988313da4e7be57679c350e51c48e155336d77125c5f616a760001b61043f565b60008690506119dc7fa11e495c22bee7740bd278517ff1a16b10e9f127c12af3a257473bfbd96e360460001b61043f565b611a077ef5ea7d1a764aa136c24e209732c7929c5fc31d9fab47702f55703f0446abcd60001b61043f565b611a337f06d41a03b8ba09ad86e577b5b2ad5e74a5d7a5cae7cf1e5f3cb83fac4b51580c60001b61043f565b848173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a6d919061344e565b602060405180830381865afa158015611a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aae9190613b35565b1015611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690613c4e565b60405180910390fd5b611b1b7f2bd8661ec13c25d7665a3b15706e75468f348020b6563303615cc196e3bfb06860001b61043f565b611b477f0ede9c366e6decc0dd5e91bcfd3dbd8acaf468cb4759d03ad3d072c612d49a8760001b61043f565b611b737fbc5106eab669d4d28f2c71f651072017b10aa1f119b2b95bfcde831faa2321a060001b61043f565b6000878787604051602001611b8a939291906137f5565b604051602081830303815290604052805190602001209050611bce7f25360f8969636b3b373bd32d8347a52722a2ffc22b4f7b7472f4045f8230188260001b61043f565b611bfa7fc5a729846ec4bca8824b20917814421d2e706aca434643814401452d1ff4895b60001b61043f565b8273ffffffffffffffffffffffffffffffffffffffff166323f10e838287876040518463ffffffff1660e01b8152600401611c3793929190613a7a565b600060405180830381600087803b158015611c5157600080fd5b505af1158015611c65573d6000803e3d6000fd5b50505050611c957f9b58d05113a219c5af3ac9435730f52600278749398571ab232eab99bd11f84e60001b61043f565b611cc17f279d87d91c80ae77de38964e9798b8bf62491672b34f5c49f27220896a78368c60001b61043f565b611ccc828888612bda565b611cf87f683eb025b7be043df7ab1b050b56b6ae84b284436a91c80f74c593ae66bbb04260001b61043f565b611d247f9a5707eb2e8e25e839b717da1abd38916d3fd5144081d1a8e5881820febddc1560001b61043f565b7f19715c5cb60c0bcb5659ba55b4fbd5dc6be370d474cdafd377fa2720d1f62a3b88888833604051611d599493929190613aac565b60405180910390a15050505050505050565b60008060019054906101000a900460ff16159050808015611d9c5750600160008054906101000a900460ff1660ff16105b80611dc95750611dab30612c60565b158015611dc85750600160008054906101000a900460ff1660ff16145b5b611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff90613ce0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611e45576001600060016101000a81548160ff0219169083151502179055505b611e717ffb3b51f313b1ca5d1d31b4d36043ead1168a41d4c484cd4c4ec2454f0102c76f60001b61043f565b611e9d7f9dd5f1c2d3f9bece00f4fa00ba458f90bad9035a43e962e1a2d5c1d856311f3960001b61043f565b611ec97fcd273c696f59ad5773b92704373354e872658cbaf9528e00757a1e9a56ee42fa60001b61043f565b611ef57f5432544cc062192a041f58b9c2c2ebcfacaadae34307095dd5126e3c51a2822960001b61043f565b611f148273ffffffffffffffffffffffffffffffffffffffff16612c60565b611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90613d4c565b60405180910390fd5b611f7f7f6b512c066e36970139ee9167adec57bfd26ba6d58cb772ad6cf2eab47c4f3a9d60001b61043f565b611fab7fd842eb41883f8cc87a2b89353682e248f3fc49bff6605a6976b35e226bb1c60660001b61043f565b611fd77f57a25b492d447fa12f89c6ccd4857e2b382e01ddf8c817581974c94a3e26446160001b61043f565b81600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156120715760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516120689190613dbe565b60405180910390a15b5050565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120c77f3c03b9301b687c284dce6b5432992df3efa3b75ab4d33923bce8bc685154bb0960001b61043f565b6120f37fc6c7519c80d0ef03cbcc8663e19be2f700552fd7d9a6406916de148b59bfb3d760001b61043f565b61211f7f8bcdcac7a06dcf47c1540ab3147952e8d0f207267dcb323bbde443b4cf35114c60001b61043f565b61214b7f975ccdd6ab6416da65a831cd92d5498e10b35dd93420a3877c07466ab7dc9eea60001b61043f565b6001612155612a75565b60ff1614612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f906135c3565b60405180910390fd5b6121c47ff986d709c3c2eeb443f11ea84adc53dbfddfe4f21c221c36c246f6561ad6667b60001b61043f565b6121f07f7c7ee93a18f4f835cdda428a047acc10f475cb6df1132464bd8c57d9e0c9874560001b61043f565b61221c7f3859f64803bcf751107e4ce27743d6e418c35fa9865a54bb06d93b415c96faef60001b61043f565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061226e7f571ae4065d26645d13548cfe52e3adf2768478704fe4e7e6928a15959c93904b60001b61043f565b61229a7fc7b79933d7367e2d0961f0bb1b416f9723766e2cebdc07e58f7a00cee138639160001b61043f565b6122c67fe0cd6dd816b8503aa8c2276b4544d280ecfcc3b42c6a1b838aebe38cdbd1ba2160001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663efc78401336040518263ffffffff1660e01b81526004016122ff919061344e565b602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612340919061361b565b61237f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237690613694565b60405180910390fd5b6123ab7fdb18072e81cbe438df60b7306c5a06344cb979059895ea3b092498ec8f028fa360001b61043f565b6123d77f563545a47b3ad3b8079404856d3cf88d84847dd0e7c58d482b5a977660a1d4a960001b61043f565b6124037f11d155e2517eb677384b2b27031838887f8e98663a9fe0f7f878415b36d909a860001b61043f565b61242f7fc5e875c38e5235f4bf0a469de67f2fbbfe8c65629a7447a778bfbc374abe0fdc60001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490613700565b60405180910390fd5b6124e97f97efe7c318f9adc7f53acf781940e80432a38adc92539f9e84f7737fe3b278ce60001b61043f565b6125157f6f12386adba04cab3aedb57531aa67ef7a1db7310133ef15d72cf8e4a6b86f5a60001b61043f565b6125417fbb29f7a66e51fd5335bd700debc385bf1b9fe0d9bfd3ee5d7c2a8ea57afe0a0260001b61043f565b61256d7f6843547d2d2ebff4669c624591d0861d19a94aba6089b325d524ed8e324c995d60001b61043f565b600086116125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a79061376c565b60405180910390fd5b6125dc7f1e2b57e1e6dac02f3aeba9fe47b9cdd480be4462f95fd28c857be246b7a5294160001b61043f565b6126087f6728a13d79826dd8e851386e76997b61bdca0634bc335a783c36a75d6e9b17eb60001b61043f565b6126347f246ac039ba3241337f11163c3a500e35fb978b5a4ab32d9505ad1ae15602013b60001b61043f565b6126607f18124d202b00eafc87524e32cde84e95e7d5f2ab1570d75f8a4387573e21a04260001b61043f565b854710156126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269a90613e25565b60405180910390fd5b6126cf7f6b3583059e5c1a15dc241e5dff2c7d1a3447f3ef8f2bd18fbf106d4b3c63401360001b61043f565b6126fb7f0bf4a828bf55df544f97bf0c0a115cadd27d22078bf4b732ac6b921f1f35c4e560001b61043f565b6127277fa8b861de42f929c6bf22baa2d2a9bf55876133b317defb22c05aa4e123356a3560001b61043f565b6000878787876040516020016127409493929190613e75565b6040516020818303038152906040528051906020012090506127847f3cf4700c166390b908b271f5a0884a3cc8c37afad29110104a052189e5aa837460001b61043f565b6127b07fd68c6b3f3e67e80f47bfc175ecfd969b302c3e9de5862296fb9f641191e66eaf60001b61043f565b8173ffffffffffffffffffffffffffffffffffffffff166323f10e838286866040518463ffffffff1660e01b81526004016127ed93929190613a7a565b600060405180830381600087803b15801561280757600080fd5b505af115801561281b573d6000803e3d6000fd5b5050505061284b7fc727d946e58e0c0a35f50b8e22b14033e5790c62ea7b9a805099390d3368c16e60001b61043f565b6128777f481000db977a04a638c07db4e71ed530eb04683cf25e112bbde35b3e1b77660260001b61043f565b60008873ffffffffffffffffffffffffffffffffffffffff168888886040516128a1929190613eb0565b60006040518083038185875af1925050503d80600081146128de576040519150601f19603f3d011682016040523d82523d6000602084013e6128e3565b606091505b505090506129137f0eae072d1dd2d008a10832a55cefaa90680bebf5a66f855507b10155f366dd0a60001b61043f565b61293f7f9a2e36ef5b672cbdba9732259bf8b9e74f32c108c732aba03ced58c1b70a30c760001b61043f565b61296b7fb616ba3ec3f3ebdee1cfb4b0776f51f0f4b55d6d72a2bcb746f1e88bc9a7d9a360001b61043f565b806129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a290613f15565b60405180910390fd5b6129d77f0bcbbdac5f6854dc88cbfe09b875017c6a422ab59091608ed1816cd6837b6e3860001b61043f565b612a037fc547d9a06f09cc75185345fd56075bdbfa3db28b1c0968b8982c6a113891f46a60001b61043f565b612a2f7fd42f8662dadbbaeff6e92c9e9bee135149d65cdd0cdee80bfb312d99a3c09bae60001b61043f565b7ff6fde05d65bfbd93fc7bd67147246813a60d9b6e9f050fa635d55a1d990a3260898933604051612a6293929190613f35565b60405180910390a1505050505050505050565b60008060009054906101000a900460ff16905090565b6000811480612b15575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401612ad2929190613bd9565b602060405180830381865afa158015612aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b139190613b35565b145b612b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4b90613fde565b60405180910390fd5b612bd58363095ea7b360e01b8484604051602401612b73929190613ffe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c83565b505050565b612c5b8363a9059cbb60e01b8484604051602401612bf9929190613ffe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c83565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000612ce5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612d4a9092919063ffffffff16565b9050600081511115612d455780806020019051810190612d05919061361b565b612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3b90614099565b60405180910390fd5b5b505050565b6060612d598484600085612d62565b90509392505050565b606082471015612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9e9061412b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612dd091906141b1565b60006040518083038185875af1925050503d8060008114612e0d576040519150601f19603f3d011682016040523d82523d6000602084013e612e12565b606091505b5091509150612e2387838387612e2f565b92505050949350505050565b60608315612e91576000835103612e8957612e4985612c60565b612e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7f90614214565b60405180910390fd5b5b829050612e9c565b612e9b8383612ea4565b5b949350505050565b600082511115612eb75781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb9190614278565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1f82612ef4565b9050919050565b612f2f81612f14565b82525050565b6000819050919050565b612f4881612f35565b82525050565b600082825260208201905092915050565b50565b6000612f6f600083612f4e565b9150612f7a82612f5f565b600082019050919050565b6000606082019050612f9a6000830185612f26565b612fa76020830184612f3f565b8181036040830152612fb881612f62565b90509392505050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000612fed8385612f4e565b9350612ffa838584612fc1565b61300383612fd0565b840190509392505050565b60006060820190506130236000830187612f26565b6130306020830186612f3f565b8181036040830152613043818486612fe1565b905095945050505050565b6000604051905090565b600080fd5b600080fd5b61306b81612f14565b811461307657600080fd5b50565b60008135905061308881613062565b92915050565b61309781612f35565b81146130a257600080fd5b50565b6000813590506130b48161308e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130df576130de6130ba565b5b8235905067ffffffffffffffff8111156130fc576130fb6130bf565b5b602083019150836020820283011115613118576131176130c4565b5b9250929050565b60008060008060006080868803121561313b5761313a613058565b5b600061314988828901613079565b955050602061315a88828901613079565b945050604061316b888289016130a5565b935050606086013567ffffffffffffffff81111561318c5761318b61305d565b5b613198888289016130c9565b92509250509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131df82612fd0565b810181811067ffffffffffffffff821117156131fe576131fd6131a7565b5b80604052505050565b600061321161304e565b905061321d82826131d6565b919050565b600067ffffffffffffffff82111561323d5761323c6131a7565b5b602082029050602081019050919050565b600061326161325c84613222565b613207565b90508083825260208201905060208402830185811115613284576132836130c4565b5b835b818110156132ad57806132998882613079565b845260208401935050602081019050613286565b5050509392505050565b600082601f8301126132cc576132cb6130ba565b5b81356132dc84826020860161324e565b91505092915050565b600080604083850312156132fc576132fb613058565b5b600061330a85828601613079565b925050602083013567ffffffffffffffff81111561332b5761332a61305d565b5b613337858286016132b7565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61337681612f35565b82525050565b6000613388838361336d565b60208301905092915050565b6000602082019050919050565b60006133ac82613341565b6133b6818561334c565b93506133c18361335d565b8060005b838110156133f25781516133d9888261337c565b97506133e483613394565b9250506001810190506133c5565b5085935050505092915050565b6000602082019050818103600083015261341981846133a1565b905092915050565b60006020828403121561343757613436613058565b5b600061344584828501613079565b91505092915050565b60006020820190506134636000830184612f26565b92915050565b60008083601f84011261347f5761347e6130ba565b5b8235905067ffffffffffffffff81111561349c5761349b6130bf565b5b6020830191508360018202830111156134b8576134b76130c4565b5b9250929050565b600080600080600080608087890312156134dc576134db613058565b5b60006134ea89828a01613079565b96505060206134fb89828a016130a5565b955050604087013567ffffffffffffffff81111561351c5761351b61305d565b5b61352889828a01613469565b9450945050606087013567ffffffffffffffff81111561354b5761354a61305d565b5b61355789828a016130c9565b92509250509295509295509295565b600082825260208201905092915050565b7f4531303000000000000000000000000000000000000000000000000000000000600082015250565b60006135ad600483613566565b91506135b882613577565b602082019050919050565b600060208201905081810360008301526135dc816135a0565b9050919050565b60008115159050919050565b6135f8816135e3565b811461360357600080fd5b50565b600081519050613615816135ef565b92915050565b60006020828403121561363157613630613058565b5b600061363f84828501613606565b91505092915050565b7f4531323000000000000000000000000000000000000000000000000000000000600082015250565b600061367e600483613566565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b7f4533303500000000000000000000000000000000000000000000000000000000600082015250565b60006136ea600483613566565b91506136f5826136b4565b602082019050919050565b60006020820190508181036000830152613719816136dd565b9050919050565b7f4533303600000000000000000000000000000000000000000000000000000000600082015250565b6000613756600483613566565b915061376182613720565b602082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b60008160601b9050919050565b60006137a48261378c565b9050919050565b60006137b682613799565b9050919050565b6137ce6137c982612f14565b6137ab565b82525050565b6000819050919050565b6137ef6137ea82612f35565b6137d4565b82525050565b600061380182866137bd565b60148201915061381182856137bd565b60148201915061382182846137de565b602082019150819050949350505050565b6000819050919050565b61384581613832565b82525050565b600082825260208201905092915050565b6000819050919050565b60006138756020840184613079565b905092915050565b61388681612f14565b82525050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126138b8576138b7613896565b5b83810192508235915060208301925067ffffffffffffffff8211156138e0576138df61388c565b5b6001820236038313156138f6576138f5613891565b5b509250929050565b600082825260208201905092915050565b600061391b83856138fe565b9350613928838584612fc1565b61393183612fd0565b840190509392505050565b600061394b60208401846130a5565b905092915050565b6000606083016139666000840184613866565b613973600086018261387d565b50613981602084018461389b565b858303602087015261399483828461390f565b925050506139a5604084018461393c565b6139b2604086018261336d565b508091505092915050565b60006139c98383613953565b905092915050565b6000823560016060038336030381126139ed576139ec613896565b5b82810191505092915050565b6000602082019050919050565b6000613a12838561384b565b935083602084028501613a248461385c565b8060005b87811015613a68578484038952613a3f82846139d1565b613a4985826139bd565b9450613a54836139f9565b925060208a01995050600181019050613a28565b50829750879450505050509392505050565b6000604082019050613a8f600083018661383c565b8181036020830152613aa2818486613a06565b9050949350505050565b6000608082019050613ac16000830187612f26565b613ace6020830186612f26565b613adb6040830185612f3f565b613ae86060830184612f26565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b2f8161308e565b92915050565b600060208284031215613b4b57613b4a613058565b5b6000613b5984828501613b20565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b9c82612f35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bce57613bcd613b62565b5b600182019050919050565b6000604082019050613bee6000830185612f26565b613bfb6020830184612f26565b9392505050565b7f4533303400000000000000000000000000000000000000000000000000000000600082015250565b6000613c38600483613566565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613cca602e83613566565b9150613cd582613c6e565b604082019050919050565b60006020820190508181036000830152613cf981613cbd565b9050919050565b7f4533303100000000000000000000000000000000000000000000000000000000600082015250565b6000613d36600483613566565b9150613d4182613d00565b602082019050919050565b60006020820190508181036000830152613d6581613d29565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000613da8613da3613d9e84613d6c565b613d83565b613d76565b9050919050565b613db881613d8d565b82525050565b6000602082019050613dd36000830184613daf565b92915050565b7f4533303200000000000000000000000000000000000000000000000000000000600082015250565b6000613e0f600483613566565b9150613e1a82613dd9565b602082019050919050565b60006020820190508181036000830152613e3e81613e02565b9050919050565b600081905092915050565b6000613e5c8385613e45565b9350613e69838584612fc1565b82840190509392505050565b6000613e8182876137bd565b601482019150613e9182866137de565b602082019150613ea2828486613e50565b915081905095945050505050565b6000613ebd828486613e50565b91508190509392505050565b7f4533303300000000000000000000000000000000000000000000000000000000600082015250565b6000613eff600483613566565b9150613f0a82613ec9565b602082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b6000606082019050613f4a6000830186612f26565b613f576020830185612f3f565b613f646040830184612f26565b949350505050565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6000613fc8603683613566565b9150613fd382613f6c565b604082019050919050565b60006020820190508181036000830152613ff781613fbb565b9050919050565b60006040820190506140136000830185612f26565b6140206020830184612f3f565b9392505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000614083602a83613566565b915061408e82614027565b604082019050919050565b600060208201905081810360008301526140b281614076565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000614115602683613566565b9150614120826140b9565b604082019050919050565b6000602082019050818103600083015261414481614108565b9050919050565b600081519050919050565b60005b83811015614174578082015181840152602081019050614159565b60008484015250505050565b600061418b8261414b565b6141958185613e45565b93506141a5818560208601614156565b80840191505092915050565b60006141bd8284614180565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006141fe601d83613566565b9150614209826141c8565b602082019050919050565b6000602082019050818103600083015261422d816141f1565b9050919050565b600081519050919050565b600061424a82614234565b6142548185613566565b9350614264818560208601614156565b61426d81612fd0565b840191505092915050565b60006020820190508181036000830152614292818461423f565b90509291505056fea2646970667358221220a60feabd6ff316d236b3af55e581a3a8a63302a5ae063e912a86e29b5df3f32464736f6c63430008110033",
|
|
355
|
+
"deployedBytecode": "0x6080604052600436106100745760003560e01c80637e5a72e71161004e5780637e5a72e714610399578063c4d66de8146103c2578063cba89d58146103eb578063e0de101c1461041657610173565b8063118ee5a0146102f65780636a385ae91461031f578063764d2de91461035c57610173565b36610173576100a57f3e442cc66eb34011aee285af8e5c9e32e3dd2ab9755e23434d511b56546c702460001b61043f565b6000341115610144576100da7f3dc8d42331d5101deb5a7bbd7cfa2f74d3bef59d165e76dfe95501b88427cfc460001b61043f565b6101067fbb891e1e57f5521e00d250fce1f1f28abaaa8b3639df13a22762b4bb2d331ac060001b61043f565b7f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334604051610137929190612f85565b60405180910390a1610171565b6101707f6948389792ce1f418d61e391f74fae3003efe93c790ec1798e3b49ea0ff2ac4a60001b61043f565b5b005b61019f7fb7041cc3f3dd74c036e6833ded8089d8971a31e42b621cbf3712b657c68803fa60001b61043f565b6101cb7fdd1b7c75b89a09229811340780ffdc29fc9f42f039da5109b3cf550fa5ff687960001b61043f565b6101f77f1136b1529655d1d24e3050a64cbb67725c399ae37ccd5895dbebbb9c54bfcf3e60001b61043f565b60003411156102c75761022c7f8c7fac4e5372eb59e6f8b50613c951189801d08f3a5f0e99c9c163ea8bcd045660001b61043f565b6102587fa8a7c1b430dabce453164e894a8dd6060020a5f79563e528fa35515d341275d960001b61043f565b6102847fd4932bf9015e3951ef39fc558d0361fd72b4a3f221e88292aba792b1a50c277560001b61043f565b7f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f033346000366040516102ba949392919061300e565b60405180910390a16102f4565b6102f37fe97822e11ebee4cc21e310d66e1c28a8f11a3cf60ad177d8b7dd4dee36ba7d3960001b61043f565b5b005b34801561030257600080fd5b5061031d6004803603810190610318919061311f565b610442565b005b34801561032b57600080fd5b50610346600480360381019061034191906132e5565b610c30565b60405161035391906133ff565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e91906132e5565b6110f9565b60405161039091906133ff565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb919061311f565b611412565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190613421565b611d6b565b005b3480156103f757600080fd5b50610400612075565b60405161040d919061344e565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906134bf565b61209b565b005b50565b61046e7f71d9d831c13f5291e3dae13c67c521b689002e9731c43ab0d480a38cb5a150aa60001b61043f565b61049a7fb8f8a7362a84c1a8efe4710754a990d8a4141ba758a24fca8993fd6332d3e40a60001b61043f565b6104c67fc2f22589e37d570495a2144c93e326eb3c5938f4e27a878893033b6d5eb7a54a60001b61043f565b6104f27fc99bbf54a7bb87fdb0d7f7199bbd06676ea5323122cb8d3a3fc9a4f08ef1e59660001b61043f565b60016104fc612a75565b60ff161461053f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610536906135c3565b60405180910390fd5b61056b7f93ce6ab1cb55d66559f29bd55988f9ae854ed632facd61e69fce972125e6635a60001b61043f565b6105977f6551b956b1236435fef21914b1696e1a1d022c0ba560250a62d036383e7b88e060001b61043f565b6105c37f1c38daa7b4c4a76f928ad0ff7dbefb0e3106f80110659a81a583e32e418a90ec60001b61043f565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506106157f73f440b67e78fa5f0b8925244c32ee30dbd399a925527e518e1cd88b46b58fbf60001b61043f565b6106417f81c9dc0fea0eaca9fab97cf9ea98c992575ea7989e01307965c6fa00d96400fa60001b61043f565b61066d7f61125254a7e1ba656e9494e73e85463316f5a8120483b119723494e3c3943bd760001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663efc78401336040518263ffffffff1660e01b81526004016106a6919061344e565b602060405180830381865afa1580156106c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e7919061361b565b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d90613694565b60405180910390fd5b6107527fcfd24b38eec71f15c6ca37dfd4d3d04a4c8bd6e73f1fd875e08f0c5d1fcc92e160001b61043f565b61077e7f80731c297a87d326aeb0fbb4708101b642ee4bf4cec414daf7ddf09967066a7760001b61043f565b6107aa7f1c69471399dd84ba07cc36316d7fa91980c00ad467b746d52b819ed412f8005c60001b61043f565b6107d67fe3fb514aa2d0e9b19f50692d5ede3c941db8d4cbc249710a76030c157c598af060001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90613700565b60405180910390fd5b6108907ff2b44eb8828944ff13e99623ce7f0f08ac0c7e37337aa730390e4bf47558ea2860001b61043f565b6108bc7fd92366f96cf9a90b5d5cb2e1cde8c72765c0848bc640e6ece5854dab7b10ac8860001b61043f565b6108e87f23d8e6da0cb96c941ce28bd0ec969b1e29643d8cabc41e24b5e8f6a7e380626a60001b61043f565b6109147f497052e91b3ba1a23fa7672dbb45b03208813230e7fdb5d693990ae6155edec660001b61043f565b60008411610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e9061376c565b60405180910390fd5b6109837f0e8af7d6ce2bf008650beda4e847c8add2b4135e55d06da8af2231f827baefe560001b61043f565b6109af7f51b835e8f05288b4ae03df29db3a3b4e5c2a743993f8bd9deeea120fa61a8c5a60001b61043f565b6109db7fca6229ddbe35f2cd49cc28829fb710b74124c0f10a8d21305646fdcced4ef5c060001b61043f565b60008686866040516020016109f2939291906137f5565b604051602081830303815290604052805190602001209050610a367fbd53197200d272ccd398514cc174fb228cdce99939d1960d6975dfc87a31718060001b61043f565b610a627f6846dc726feb35698821eea4721bc150aced0b7bd856e3a709e88e8a20eaae4660001b61043f565b8173ffffffffffffffffffffffffffffffffffffffff166323f10e838286866040518463ffffffff1660e01b8152600401610a9f93929190613a7a565b600060405180830381600087803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b50505050610afd7fa8ec0d1aecb2d174d6ad1714dc6d7b6b2d33576929d3ff5ecb609d8b3486046260001b61043f565b610b297f146302a5541767f7fb02bc458d83c9ac8c56eb4a3a7f70494e99d3617f8ead2560001b61043f565b6000879050610b5a7f3784653a7d50607d099d9d243071039feb74748caad23804eef4d067c530921960001b61043f565b610b867f33be839984416111b7e9fe2190be3e78defd66cfd37bc1448a7f206fb6fe55ef60001b61043f565b610b91818888612a8b565b610bbd7f190bd233f29168b863b3088a751be346b195bdc7b00e483410379b366ca8a21460001b61043f565b610be97f3dd5d067f536f51273a5f9e5db7b150699efa90acdab341a8c95bb5623908e7960001b61043f565b7f36cba1f1091db204da52720e3b8cc1739f198191dfe19117a52d03651870900888888833604051610c1e9493929190613aac565b60405180910390a15050505050505050565b6060610c5e7f676cac0e73931dcb0eca6629ad3fe707e83236b1d65cf96bcd565fb8fb977ec960001b61043f565b610c8a7f24d2715f7f0170dcfd32777a369b9e83dff2fd42df447300d1a37ae5edb12b7b60001b61043f565b610cb67f390adc1f83876b0dbc266cc6dcab8adf1a200fe327a96cb3ee41c961912fff4860001b61043f565b6000825167ffffffffffffffff811115610cd357610cd26131a7565b5b604051908082528060200260200182016040528015610d015781602001602082028036833780820191505090505b509050610d307fe8a0fb49ca301fbd71bdea126dde58f81e28cf8d027a019d5794c8c5c630cb8360001b61043f565b610d5c7f6455fabbf0a161e8df745b333d3ee4c03f3ad14931b45ed16203f5baf5ddb59160001b61043f565b60005b835181101561109657610d947f190af0e5410e42c9b08b7ac4d3f1cc18c857e11ddba52013b4809133c7fb54f160001b61043f565b610dc07f11a724463b9fbc90e35aae7105e3faadd71c9576f4598602da198b66217a718460001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848281518110610e0a57610e09613af1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610fc757610e597f407575c721cbfa43c74f2cd2659dc82a0e3e93377a1e23a7a4c06b7af057bed860001b61043f565b610e857f63b5dbd343f8f9384bbcae1073d23f8bcec23c6df9e89107b3019850577c44ef60001b61043f565b610eb17fbe2ed61f808a1eef680b24c53d884284f6e18251bc7859b0a3befd5a25c3093460001b61043f565b6000848281518110610ec657610ec5613af1565b5b60200260200101519050610efc7fd44e1ac1e1859284c30f25bb8f70830ce160fa470cf664292055fc3f84745b4760001b61043f565b610f287f347716750d47df651d4503eadc94da1419e95634c1110f5a6298e1d3ba28ee0e60001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401610f61919061344e565b602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa29190613b35565b838381518110610fb557610fb4613af1565b5b60200260200101818152505050611083565b610ff37f4494890344ec0f65ec2d53feacb924fbf6716c75a0ea6695fc2328d6da3bd97560001b61043f565b61101f7fda826d8e06594617450cb283971ffda508b73eabd327eb183bef55352b13bc3660001b61043f565b61104b7f874c00b721c5ac73ae628161ce0baa8cf3bcecbc4b8303bed4027c0e06b6cb0760001b61043f565b8473ffffffffffffffffffffffffffffffffffffffff163182828151811061107657611075613af1565b5b6020026020010181815250505b808061108e90613b91565b915050610d5f565b506110c37f6e330a9505493670deae7b024a8e9602fb397e1e4c90d8b92989c9a49aab2da660001b61043f565b6110ef7f7a184523e6f3baa93e5c31b06fa7b5f966e9228b84039beef79e1236c75fe98360001b61043f565b8091505092915050565b60606111277ff76e4bd711d18e79cae5b7b7b47901dfb34d1adcd2946b9ae33e03ab500651e960001b61043f565b6111537f7f4faf69b04f500b70ed2e8d1a22f80c80be9770c5efea72f7c93420a6427e3460001b61043f565b61117f7f45b99b82651b2d2f24b78e6d2a25a9a4c97c62911781e612584cbe1aa322fe5b60001b61043f565b6000825167ffffffffffffffff81111561119c5761119b6131a7565b5b6040519080825280602002602001820160405280156111ca5781602001602082028036833780820191505090505b5090506111f97f0801e7ae20bb6a9ba78a99c2c21684a596e161ef7e1f1e6676c79bd43d2a159960001b61043f565b6112257f397000a15fec59c90d64656e1576218cce5f5ebf40499884ba24df24194d3aae60001b61043f565b60005b83518110156113af5761125d7fb646c91c9c0906c60d2e4e4a57303ab8e47d7e71a3f0cffbdbfa6e8f1f5ff9cd60001b61043f565b6112897f73d9b8e016646d7b918a071c3c8538036617837b851d1c7ef9e3ad3159e26f8560001b61043f565b600084828151811061129e5761129d613af1565b5b602002602001015190506112d47f90042764755cfecad9c41fe9b3841fe3298d748305c89507158bb880960317a660001b61043f565b6113007f3648b78003425b5cd30f9b13d421cc04d159e10258434eff6bc41682d36ce41060001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30886040518363ffffffff1660e01b815260040161133b929190613bd9565b602060405180830381865afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c9190613b35565b83838151811061138f5761138e613af1565b5b6020026020010181815250505080806113a790613b91565b915050611228565b506113dc7f72691e8c2cc37d5405cd78be3be54913c4aa81eaa86622a5e5196bb569138c2360001b61043f565b6114087fd6ada3fb5f6adce970dc6a250e60c1291935b1338fdee52b58e3446b47efb4fc60001b61043f565b8091505092915050565b61143e7f5c81ce12fdb383ef5de8aed8c4bd9f6850732822b3b84df4ca62191027109a1f60001b61043f565b61146a7f3af24c4de0c945233d6c95b7b8702a58408c2ef2d6de422bcf39a7450895a9c260001b61043f565b6114967f8d01c40d47dd58059662849e1d257b441de4a30fc50c5bc1f378939f79fae6d060001b61043f565b6114c27fdf2843f873f91747167f3965bcee83de92a98081bc865089b0ede4bff2e51f8f60001b61043f565b60016114cc612a75565b60ff161461150f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611506906135c3565b60405180910390fd5b61153b7f1bb0f36cf6a0204ed556741f824a9df6c1dead26a10b6527cdd65f9f0129927960001b61043f565b6115677fb8b852149aea45b23ec67a633a4d98439f0b4551ead9da6607751bfd5b46980060001b61043f565b6115937f278b885e16d398ed231dd09eed8e055f3a137e271547dc821fb39691d113f1c460001b61043f565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506115e57f397235743fab62455e330aaa3bcf2285071e3dc099a1908a7309caf79a6cf93760001b61043f565b6116117f850d62df3f2beebb526aa0c54f645f0c6578b2e599e0963469515cc02aa4831a60001b61043f565b61163d7f7222664ba3c60f0da8c9799c11ff317a76f3da59cbca1509a6bc6a5f5c18340f60001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663efc78401336040518263ffffffff1660e01b8152600401611676919061344e565b602060405180830381865afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061361b565b6116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90613694565b60405180910390fd5b6117227fc6486e6b9578ab0834aac4dc094a756f4ba4e87fd3acb94e2152f5cfe107879c60001b61043f565b61174e7f39870ea5d4c2a29b6a0564b828d51b13b096e12fd79fa23025d7ec07ce88f93660001b61043f565b61177a7fe5d4c3306210cc89e0f2da339745a445628f3a7df4d0f63d49958635435c066260001b61043f565b6117a67ff1011fae91d91c84232688920d8c9d79202bd7fa30fa57dfa8ec7a46f813957460001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90613700565b60405180910390fd5b6118607f3a966035c35d3fbd4c792bb7741e929604a2cc894ceb332017b2083631791d4d60001b61043f565b61188c7fa8775ab4365fe2e13b218fcf6e65ee5827975602995d59dbd28950475a5b273c60001b61043f565b6118b87ff80211ca6fbe18520b4395599ee32ec00f80810c4dadd61411dd225e80f6e2b460001b61043f565b6118e47fc6feffd94c4389a95848bd769ec9e21bf3f23ba758ec9987d4aa53e2606cfa2b60001b61043f565b60008411611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e9061376c565b60405180910390fd5b6119537f5e2f040c81a841eaa3e777e1fd2ceba7b0b622de146c53909c307715fe29448a60001b61043f565b61197f7f2d51ca167422b1225d8f381bf8b0250a9a1b40826b245c934336d9e3a466e0a060001b61043f565b6119ab7f8ed0d36123f18a1988313da4e7be57679c350e51c48e155336d77125c5f616a760001b61043f565b60008690506119dc7fa11e495c22bee7740bd278517ff1a16b10e9f127c12af3a257473bfbd96e360460001b61043f565b611a077ef5ea7d1a764aa136c24e209732c7929c5fc31d9fab47702f55703f0446abcd60001b61043f565b611a337f06d41a03b8ba09ad86e577b5b2ad5e74a5d7a5cae7cf1e5f3cb83fac4b51580c60001b61043f565b848173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a6d919061344e565b602060405180830381865afa158015611a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aae9190613b35565b1015611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690613c4e565b60405180910390fd5b611b1b7f2bd8661ec13c25d7665a3b15706e75468f348020b6563303615cc196e3bfb06860001b61043f565b611b477f0ede9c366e6decc0dd5e91bcfd3dbd8acaf468cb4759d03ad3d072c612d49a8760001b61043f565b611b737fbc5106eab669d4d28f2c71f651072017b10aa1f119b2b95bfcde831faa2321a060001b61043f565b6000878787604051602001611b8a939291906137f5565b604051602081830303815290604052805190602001209050611bce7f25360f8969636b3b373bd32d8347a52722a2ffc22b4f7b7472f4045f8230188260001b61043f565b611bfa7fc5a729846ec4bca8824b20917814421d2e706aca434643814401452d1ff4895b60001b61043f565b8273ffffffffffffffffffffffffffffffffffffffff166323f10e838287876040518463ffffffff1660e01b8152600401611c3793929190613a7a565b600060405180830381600087803b158015611c5157600080fd5b505af1158015611c65573d6000803e3d6000fd5b50505050611c957f9b58d05113a219c5af3ac9435730f52600278749398571ab232eab99bd11f84e60001b61043f565b611cc17f279d87d91c80ae77de38964e9798b8bf62491672b34f5c49f27220896a78368c60001b61043f565b611ccc828888612bda565b611cf87f683eb025b7be043df7ab1b050b56b6ae84b284436a91c80f74c593ae66bbb04260001b61043f565b611d247f9a5707eb2e8e25e839b717da1abd38916d3fd5144081d1a8e5881820febddc1560001b61043f565b7f19715c5cb60c0bcb5659ba55b4fbd5dc6be370d474cdafd377fa2720d1f62a3b88888833604051611d599493929190613aac565b60405180910390a15050505050505050565b60008060019054906101000a900460ff16159050808015611d9c5750600160008054906101000a900460ff1660ff16105b80611dc95750611dab30612c60565b158015611dc85750600160008054906101000a900460ff1660ff16145b5b611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff90613ce0565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611e45576001600060016101000a81548160ff0219169083151502179055505b611e717ffb3b51f313b1ca5d1d31b4d36043ead1168a41d4c484cd4c4ec2454f0102c76f60001b61043f565b611e9d7f9dd5f1c2d3f9bece00f4fa00ba458f90bad9035a43e962e1a2d5c1d856311f3960001b61043f565b611ec97fcd273c696f59ad5773b92704373354e872658cbaf9528e00757a1e9a56ee42fa60001b61043f565b611ef57f5432544cc062192a041f58b9c2c2ebcfacaadae34307095dd5126e3c51a2822960001b61043f565b611f148273ffffffffffffffffffffffffffffffffffffffff16612c60565b611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90613d4c565b60405180910390fd5b611f7f7f6b512c066e36970139ee9167adec57bfd26ba6d58cb772ad6cf2eab47c4f3a9d60001b61043f565b611fab7fd842eb41883f8cc87a2b89353682e248f3fc49bff6605a6976b35e226bb1c60660001b61043f565b611fd77f57a25b492d447fa12f89c6ccd4857e2b382e01ddf8c817581974c94a3e26446160001b61043f565b81600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156120715760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516120689190613dbe565b60405180910390a15b5050565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120c77f3c03b9301b687c284dce6b5432992df3efa3b75ab4d33923bce8bc685154bb0960001b61043f565b6120f37fc6c7519c80d0ef03cbcc8663e19be2f700552fd7d9a6406916de148b59bfb3d760001b61043f565b61211f7f8bcdcac7a06dcf47c1540ab3147952e8d0f207267dcb323bbde443b4cf35114c60001b61043f565b61214b7f975ccdd6ab6416da65a831cd92d5498e10b35dd93420a3877c07466ab7dc9eea60001b61043f565b6001612155612a75565b60ff1614612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f906135c3565b60405180910390fd5b6121c47ff986d709c3c2eeb443f11ea84adc53dbfddfe4f21c221c36c246f6561ad6667b60001b61043f565b6121f07f7c7ee93a18f4f835cdda428a047acc10f475cb6df1132464bd8c57d9e0c9874560001b61043f565b61221c7f3859f64803bcf751107e4ce27743d6e418c35fa9865a54bb06d93b415c96faef60001b61043f565b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061226e7f571ae4065d26645d13548cfe52e3adf2768478704fe4e7e6928a15959c93904b60001b61043f565b61229a7fc7b79933d7367e2d0961f0bb1b416f9723766e2cebdc07e58f7a00cee138639160001b61043f565b6122c67fe0cd6dd816b8503aa8c2276b4544d280ecfcc3b42c6a1b838aebe38cdbd1ba2160001b61043f565b8073ffffffffffffffffffffffffffffffffffffffff1663efc78401336040518263ffffffff1660e01b81526004016122ff919061344e565b602060405180830381865afa15801561231c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612340919061361b565b61237f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237690613694565b60405180910390fd5b6123ab7fdb18072e81cbe438df60b7306c5a06344cb979059895ea3b092498ec8f028fa360001b61043f565b6123d77f563545a47b3ad3b8079404856d3cf88d84847dd0e7c58d482b5a977660a1d4a960001b61043f565b6124037f11d155e2517eb677384b2b27031838887f8e98663a9fe0f7f878415b36d909a860001b61043f565b61242f7fc5e875c38e5235f4bf0a469de67f2fbbfe8c65629a7447a778bfbc374abe0fdc60001b61043f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490613700565b60405180910390fd5b6124e97f97efe7c318f9adc7f53acf781940e80432a38adc92539f9e84f7737fe3b278ce60001b61043f565b6125157f6f12386adba04cab3aedb57531aa67ef7a1db7310133ef15d72cf8e4a6b86f5a60001b61043f565b6125417fbb29f7a66e51fd5335bd700debc385bf1b9fe0d9bfd3ee5d7c2a8ea57afe0a0260001b61043f565b61256d7f6843547d2d2ebff4669c624591d0861d19a94aba6089b325d524ed8e324c995d60001b61043f565b600086116125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a79061376c565b60405180910390fd5b6125dc7f1e2b57e1e6dac02f3aeba9fe47b9cdd480be4462f95fd28c857be246b7a5294160001b61043f565b6126087f6728a13d79826dd8e851386e76997b61bdca0634bc335a783c36a75d6e9b17eb60001b61043f565b6126347f246ac039ba3241337f11163c3a500e35fb978b5a4ab32d9505ad1ae15602013b60001b61043f565b6126607f18124d202b00eafc87524e32cde84e95e7d5f2ab1570d75f8a4387573e21a04260001b61043f565b854710156126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269a90613e25565b60405180910390fd5b6126cf7f6b3583059e5c1a15dc241e5dff2c7d1a3447f3ef8f2bd18fbf106d4b3c63401360001b61043f565b6126fb7f0bf4a828bf55df544f97bf0c0a115cadd27d22078bf4b732ac6b921f1f35c4e560001b61043f565b6127277fa8b861de42f929c6bf22baa2d2a9bf55876133b317defb22c05aa4e123356a3560001b61043f565b6000878787876040516020016127409493929190613e75565b6040516020818303038152906040528051906020012090506127847f3cf4700c166390b908b271f5a0884a3cc8c37afad29110104a052189e5aa837460001b61043f565b6127b07fd68c6b3f3e67e80f47bfc175ecfd969b302c3e9de5862296fb9f641191e66eaf60001b61043f565b8173ffffffffffffffffffffffffffffffffffffffff166323f10e838286866040518463ffffffff1660e01b81526004016127ed93929190613a7a565b600060405180830381600087803b15801561280757600080fd5b505af115801561281b573d6000803e3d6000fd5b5050505061284b7fc727d946e58e0c0a35f50b8e22b14033e5790c62ea7b9a805099390d3368c16e60001b61043f565b6128777f481000db977a04a638c07db4e71ed530eb04683cf25e112bbde35b3e1b77660260001b61043f565b60008873ffffffffffffffffffffffffffffffffffffffff168888886040516128a1929190613eb0565b60006040518083038185875af1925050503d80600081146128de576040519150601f19603f3d011682016040523d82523d6000602084013e6128e3565b606091505b505090506129137f0eae072d1dd2d008a10832a55cefaa90680bebf5a66f855507b10155f366dd0a60001b61043f565b61293f7f9a2e36ef5b672cbdba9732259bf8b9e74f32c108c732aba03ced58c1b70a30c760001b61043f565b61296b7fb616ba3ec3f3ebdee1cfb4b0776f51f0f4b55d6d72a2bcb746f1e88bc9a7d9a360001b61043f565b806129ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a290613f15565b60405180910390fd5b6129d77f0bcbbdac5f6854dc88cbfe09b875017c6a422ab59091608ed1816cd6837b6e3860001b61043f565b612a037fc547d9a06f09cc75185345fd56075bdbfa3db28b1c0968b8982c6a113891f46a60001b61043f565b612a2f7fd42f8662dadbbaeff6e92c9e9bee135149d65cdd0cdee80bfb312d99a3c09bae60001b61043f565b7ff6fde05d65bfbd93fc7bd67147246813a60d9b6e9f050fa635d55a1d990a3260898933604051612a6293929190613f35565b60405180910390a1505050505050505050565b60008060009054906101000a900460ff16905090565b6000811480612b15575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401612ad2929190613bd9565b602060405180830381865afa158015612aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b139190613b35565b145b612b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4b90613fde565b60405180910390fd5b612bd58363095ea7b360e01b8484604051602401612b73929190613ffe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c83565b505050565b612c5b8363a9059cbb60e01b8484604051602401612bf9929190613ffe565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c83565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000612ce5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612d4a9092919063ffffffff16565b9050600081511115612d455780806020019051810190612d05919061361b565b612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3b90614099565b60405180910390fd5b5b505050565b6060612d598484600085612d62565b90509392505050565b606082471015612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9e9061412b565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612dd091906141b1565b60006040518083038185875af1925050503d8060008114612e0d576040519150601f19603f3d011682016040523d82523d6000602084013e612e12565b606091505b5091509150612e2387838387612e2f565b92505050949350505050565b60608315612e91576000835103612e8957612e4985612c60565b612e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7f90614214565b60405180910390fd5b5b829050612e9c565b612e9b8383612ea4565b5b949350505050565b600082511115612eb75781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb9190614278565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1f82612ef4565b9050919050565b612f2f81612f14565b82525050565b6000819050919050565b612f4881612f35565b82525050565b600082825260208201905092915050565b50565b6000612f6f600083612f4e565b9150612f7a82612f5f565b600082019050919050565b6000606082019050612f9a6000830185612f26565b612fa76020830184612f3f565b8181036040830152612fb881612f62565b90509392505050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000612fed8385612f4e565b9350612ffa838584612fc1565b61300383612fd0565b840190509392505050565b60006060820190506130236000830187612f26565b6130306020830186612f3f565b8181036040830152613043818486612fe1565b905095945050505050565b6000604051905090565b600080fd5b600080fd5b61306b81612f14565b811461307657600080fd5b50565b60008135905061308881613062565b92915050565b61309781612f35565b81146130a257600080fd5b50565b6000813590506130b48161308e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130df576130de6130ba565b5b8235905067ffffffffffffffff8111156130fc576130fb6130bf565b5b602083019150836020820283011115613118576131176130c4565b5b9250929050565b60008060008060006080868803121561313b5761313a613058565b5b600061314988828901613079565b955050602061315a88828901613079565b945050604061316b888289016130a5565b935050606086013567ffffffffffffffff81111561318c5761318b61305d565b5b613198888289016130c9565b92509250509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131df82612fd0565b810181811067ffffffffffffffff821117156131fe576131fd6131a7565b5b80604052505050565b600061321161304e565b905061321d82826131d6565b919050565b600067ffffffffffffffff82111561323d5761323c6131a7565b5b602082029050602081019050919050565b600061326161325c84613222565b613207565b90508083825260208201905060208402830185811115613284576132836130c4565b5b835b818110156132ad57806132998882613079565b845260208401935050602081019050613286565b5050509392505050565b600082601f8301126132cc576132cb6130ba565b5b81356132dc84826020860161324e565b91505092915050565b600080604083850312156132fc576132fb613058565b5b600061330a85828601613079565b925050602083013567ffffffffffffffff81111561332b5761332a61305d565b5b613337858286016132b7565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61337681612f35565b82525050565b6000613388838361336d565b60208301905092915050565b6000602082019050919050565b60006133ac82613341565b6133b6818561334c565b93506133c18361335d565b8060005b838110156133f25781516133d9888261337c565b97506133e483613394565b9250506001810190506133c5565b5085935050505092915050565b6000602082019050818103600083015261341981846133a1565b905092915050565b60006020828403121561343757613436613058565b5b600061344584828501613079565b91505092915050565b60006020820190506134636000830184612f26565b92915050565b60008083601f84011261347f5761347e6130ba565b5b8235905067ffffffffffffffff81111561349c5761349b6130bf565b5b6020830191508360018202830111156134b8576134b76130c4565b5b9250929050565b600080600080600080608087890312156134dc576134db613058565b5b60006134ea89828a01613079565b96505060206134fb89828a016130a5565b955050604087013567ffffffffffffffff81111561351c5761351b61305d565b5b61352889828a01613469565b9450945050606087013567ffffffffffffffff81111561354b5761354a61305d565b5b61355789828a016130c9565b92509250509295509295509295565b600082825260208201905092915050565b7f4531303000000000000000000000000000000000000000000000000000000000600082015250565b60006135ad600483613566565b91506135b882613577565b602082019050919050565b600060208201905081810360008301526135dc816135a0565b9050919050565b60008115159050919050565b6135f8816135e3565b811461360357600080fd5b50565b600081519050613615816135ef565b92915050565b60006020828403121561363157613630613058565b5b600061363f84828501613606565b91505092915050565b7f4531323000000000000000000000000000000000000000000000000000000000600082015250565b600061367e600483613566565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b7f4533303500000000000000000000000000000000000000000000000000000000600082015250565b60006136ea600483613566565b91506136f5826136b4565b602082019050919050565b60006020820190508181036000830152613719816136dd565b9050919050565b7f4533303600000000000000000000000000000000000000000000000000000000600082015250565b6000613756600483613566565b915061376182613720565b602082019050919050565b6000602082019050818103600083015261378581613749565b9050919050565b60008160601b9050919050565b60006137a48261378c565b9050919050565b60006137b682613799565b9050919050565b6137ce6137c982612f14565b6137ab565b82525050565b6000819050919050565b6137ef6137ea82612f35565b6137d4565b82525050565b600061380182866137bd565b60148201915061381182856137bd565b60148201915061382182846137de565b602082019150819050949350505050565b6000819050919050565b61384581613832565b82525050565b600082825260208201905092915050565b6000819050919050565b60006138756020840184613079565b905092915050565b61388681612f14565b82525050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126138b8576138b7613896565b5b83810192508235915060208301925067ffffffffffffffff8211156138e0576138df61388c565b5b6001820236038313156138f6576138f5613891565b5b509250929050565b600082825260208201905092915050565b600061391b83856138fe565b9350613928838584612fc1565b61393183612fd0565b840190509392505050565b600061394b60208401846130a5565b905092915050565b6000606083016139666000840184613866565b613973600086018261387d565b50613981602084018461389b565b858303602087015261399483828461390f565b925050506139a5604084018461393c565b6139b2604086018261336d565b508091505092915050565b60006139c98383613953565b905092915050565b6000823560016060038336030381126139ed576139ec613896565b5b82810191505092915050565b6000602082019050919050565b6000613a12838561384b565b935083602084028501613a248461385c565b8060005b87811015613a68578484038952613a3f82846139d1565b613a4985826139bd565b9450613a54836139f9565b925060208a01995050600181019050613a28565b50829750879450505050509392505050565b6000604082019050613a8f600083018661383c565b8181036020830152613aa2818486613a06565b9050949350505050565b6000608082019050613ac16000830187612f26565b613ace6020830186612f26565b613adb6040830185612f3f565b613ae86060830184612f26565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b2f8161308e565b92915050565b600060208284031215613b4b57613b4a613058565b5b6000613b5984828501613b20565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b9c82612f35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bce57613bcd613b62565b5b600182019050919050565b6000604082019050613bee6000830185612f26565b613bfb6020830184612f26565b9392505050565b7f4533303400000000000000000000000000000000000000000000000000000000600082015250565b6000613c38600483613566565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613cca602e83613566565b9150613cd582613c6e565b604082019050919050565b60006020820190508181036000830152613cf981613cbd565b9050919050565b7f4533303100000000000000000000000000000000000000000000000000000000600082015250565b6000613d36600483613566565b9150613d4182613d00565b602082019050919050565b60006020820190508181036000830152613d6581613d29565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000613da8613da3613d9e84613d6c565b613d83565b613d76565b9050919050565b613db881613d8d565b82525050565b6000602082019050613dd36000830184613daf565b92915050565b7f4533303200000000000000000000000000000000000000000000000000000000600082015250565b6000613e0f600483613566565b9150613e1a82613dd9565b602082019050919050565b60006020820190508181036000830152613e3e81613e02565b9050919050565b600081905092915050565b6000613e5c8385613e45565b9350613e69838584612fc1565b82840190509392505050565b6000613e8182876137bd565b601482019150613e9182866137de565b602082019150613ea2828486613e50565b915081905095945050505050565b6000613ebd828486613e50565b91508190509392505050565b7f4533303300000000000000000000000000000000000000000000000000000000600082015250565b6000613eff600483613566565b9150613f0a82613ec9565b602082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b6000606082019050613f4a6000830186612f26565b613f576020830185612f3f565b613f646040830184612f26565b949350505050565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6000613fc8603683613566565b9150613fd382613f6c565b604082019050919050565b60006020820190508181036000830152613ff781613fbb565b9050919050565b60006040820190506140136000830185612f26565b6140206020830184612f3f565b9392505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000614083602a83613566565b915061408e82614027565b604082019050919050565b600060208201905081810360008301526140b281614076565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000614115602683613566565b9150614120826140b9565b604082019050919050565b6000602082019050818103600083015261414481614108565b9050919050565b600081519050919050565b60005b83811015614174578082015181840152602081019050614159565b60008484015250505050565b600061418b8261414b565b6141958185613e45565b93506141a5818560208601614156565b80840191505092915050565b60006141bd8284614180565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006141fe601d83613566565b9150614209826141c8565b602082019050919050565b6000602082019050818103600083015261422d816141f1565b9050919050565b600081519050919050565b600061424a82614234565b6142548185613566565b9350614264818560208601614156565b61426d81612fd0565b840191505092915050565b60006020820190508181036000830152614292818461423f565b90509291505056fea2646970667358221220a60feabd6ff316d236b3af55e581a3a8a63302a5ae063e912a86e29b5df3f32464736f6c63430008110033",
|
|
356
|
+
"linkReferences": {},
|
|
357
|
+
"deployedLinkReferences": {}
|
|
358
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "MultiSigVaultFactory",
|
|
4
|
+
"sourceName": "src/MultiSigVaultFactory.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "address",
|
|
10
|
+
"name": "_implementation",
|
|
11
|
+
"type": "address"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"stateMutability": "nonpayable",
|
|
15
|
+
"type": "constructor"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"anonymous": false,
|
|
19
|
+
"inputs": [
|
|
20
|
+
{
|
|
21
|
+
"indexed": false,
|
|
22
|
+
"internalType": "address",
|
|
23
|
+
"name": "vaultAddress",
|
|
24
|
+
"type": "address"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"name": "MultiSigVaultCreated",
|
|
28
|
+
"type": "event"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"anonymous": false,
|
|
32
|
+
"inputs": [
|
|
33
|
+
{
|
|
34
|
+
"indexed": true,
|
|
35
|
+
"internalType": "address",
|
|
36
|
+
"name": "previousOwner",
|
|
37
|
+
"type": "address"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"indexed": true,
|
|
41
|
+
"internalType": "address",
|
|
42
|
+
"name": "newOwner",
|
|
43
|
+
"type": "address"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"name": "OwnershipTransferred",
|
|
47
|
+
"type": "event"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"inputs": [
|
|
51
|
+
{
|
|
52
|
+
"internalType": "address",
|
|
53
|
+
"name": "signerManager",
|
|
54
|
+
"type": "address"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"name": "create",
|
|
58
|
+
"outputs": [],
|
|
59
|
+
"stateMutability": "nonpayable",
|
|
60
|
+
"type": "function"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"inputs": [],
|
|
64
|
+
"name": "implementation",
|
|
65
|
+
"outputs": [
|
|
66
|
+
{
|
|
67
|
+
"internalType": "address",
|
|
68
|
+
"name": "",
|
|
69
|
+
"type": "address"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"stateMutability": "view",
|
|
73
|
+
"type": "function"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"inputs": [],
|
|
77
|
+
"name": "owner",
|
|
78
|
+
"outputs": [
|
|
79
|
+
{
|
|
80
|
+
"internalType": "address",
|
|
81
|
+
"name": "",
|
|
82
|
+
"type": "address"
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"stateMutability": "view",
|
|
86
|
+
"type": "function"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"inputs": [],
|
|
90
|
+
"name": "renounceOwnership",
|
|
91
|
+
"outputs": [],
|
|
92
|
+
"stateMutability": "nonpayable",
|
|
93
|
+
"type": "function"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"inputs": [
|
|
97
|
+
{
|
|
98
|
+
"internalType": "address",
|
|
99
|
+
"name": "_implementation",
|
|
100
|
+
"type": "address"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"name": "setImplementation",
|
|
104
|
+
"outputs": [],
|
|
105
|
+
"stateMutability": "nonpayable",
|
|
106
|
+
"type": "function"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"inputs": [
|
|
110
|
+
{
|
|
111
|
+
"internalType": "address",
|
|
112
|
+
"name": "newOwner",
|
|
113
|
+
"type": "address"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"name": "transferOwnership",
|
|
117
|
+
"outputs": [],
|
|
118
|
+
"stateMutability": "nonpayable",
|
|
119
|
+
"type": "function"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"bytecode": "0x60806040523480156200001157600080fd5b5060405162000c6238038062000c62833981810160405281019062000037919062000274565b620000576200004b6200013b60201b60201c565b6200014360201b60201c565b6200008b7fb0156613412e8750049e9c0e302572ac065b19aa8152f3b6c8bf8b865207b03760001b6200020760201b60201c565b620000bf7f0c584ccaa20a31936368ded4fe87fcafd9641456ac89b296ceefefb4a4c7cb9960001b6200020760201b60201c565b620000f37f896370cb52a6291f274a7dc13f7fbfc9003970ac1dc53a973fe13446389c831660001b6200020760201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002a6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b50565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200023c826200020f565b9050919050565b6200024e816200022f565b81146200025a57600080fd5b50565b6000815190506200026e8162000243565b92915050565b6000602082840312156200028d576200028c6200020a565b5b60006200029d848285016200025d565b91505092915050565b6109ac80620002b66000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80635c60da1b14610067578063715018a6146100855780638da5cb5b1461008f5780639ed93318146100ad578063d784d426146100c9578063f2fde38b146100e5575b600080fd5b61006f610101565b60405161007c9190610708565b60405180910390f35b61008d610127565b005b61009761013b565b6040516100a49190610708565b60405180910390f35b6100c760048036038101906100c29190610754565b610164565b005b6100e360048036038101906100de9190610754565b61036d565b005b6100ff60048036038101906100fa9190610754565b61043d565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61012f6104c0565b610139600061053e565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101907ff888eadcda0b1b63343aef36c104da16ba11c83513a2fad984871a1afac26ecc60001b610602565b6101bc7feff1aa135b9a5ee6e55c1a46b7988c4fd6d4ad8a49408be34de1951a09367f4e60001b610602565b6101e87fb29957a37aec89c65dee5dec8a4fe60acafdeab35423372efdaf48c14ba1b9bc60001b610602565b6000610215600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610605565b90506102437ff55e0d8b86a43ad8491a29267d5334af26f1359975345703d0c6f08db9d8c08860001b610602565b61026f7f765916b87b4ffdb0834ab2fe5d67f73cdb8012e39c72ddafbaeb240286c5902160001b610602565b8073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff1660e01b81526004016102a89190610708565b600060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506103067fbf4722b41f4b221174df0acdd2a8cc4df711a654d10fe2d3eace3e4d6303c80260001b610602565b6103327fa72e2deaadfed5d948a8e1168fd3d7b3885ba849270015d1fd236edc2080395460001b610602565b7f62cbaed5c4a6bc49df5c1359395eb538cf5181d4cea04d96eda676bebf581a1d8160405161036191906107e0565b60405180910390a15050565b6103756104c0565b6103a17ffc743d7da1fa0fbf6203251553187d3081099fbb0af11be752265807ecfe54b260001b610602565b6103cd7f397b81dc7bd797406b26d57b73372e400b1060ec32989a2d75eb4b05872fd25d60001b610602565b6103f97f8047f82bc05f45ddd816bd679f01f6f41a802c8621dff8c8ae45545e6cb7f07b60001b610602565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104456104c0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab9061087e565b60405180910390fd5b6104bd8161053e565b50565b6104c86106bf565b73ffffffffffffffffffffffffffffffffffffffff166104e661013b565b73ffffffffffffffffffffffffffffffffffffffff161461053c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610533906108ea565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f09050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b190610956565b60405180910390fd5b919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106f2826106c7565b9050919050565b610702816106e7565b82525050565b600060208201905061071d60008301846106f9565b92915050565b600080fd5b610731816106e7565b811461073c57600080fd5b50565b60008135905061074e81610728565b92915050565b60006020828403121561076a57610769610723565b5b60006107788482850161073f565b91505092915050565b6000819050919050565b60006107a66107a161079c846106c7565b610781565b6106c7565b9050919050565b60006107b88261078b565b9050919050565b60006107ca826107ad565b9050919050565b6107da816107bf565b82525050565b60006020820190506107f560008301846107d1565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006108686026836107fb565b91506108738261080c565b604082019050919050565b600060208201905081810360008301526108978161085b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006108d46020836107fb565b91506108df8261089e565b602082019050919050565b60006020820190508181036000830152610903816108c7565b9050919050565b7f455243313136373a20637265617465206661696c656400000000000000000000600082015250565b60006109406016836107fb565b915061094b8261090a565b602082019050919050565b6000602082019050818103600083015261096f81610933565b905091905056fea2646970667358221220d067fdc9322c8dfd1e635ec30368e48e56e17986c71a57b52eafb9ae89008bbf64736f6c63430008110033",
|
|
123
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80635c60da1b14610067578063715018a6146100855780638da5cb5b1461008f5780639ed93318146100ad578063d784d426146100c9578063f2fde38b146100e5575b600080fd5b61006f610101565b60405161007c9190610708565b60405180910390f35b61008d610127565b005b61009761013b565b6040516100a49190610708565b60405180910390f35b6100c760048036038101906100c29190610754565b610164565b005b6100e360048036038101906100de9190610754565b61036d565b005b6100ff60048036038101906100fa9190610754565b61043d565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61012f6104c0565b610139600061053e565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101907ff888eadcda0b1b63343aef36c104da16ba11c83513a2fad984871a1afac26ecc60001b610602565b6101bc7feff1aa135b9a5ee6e55c1a46b7988c4fd6d4ad8a49408be34de1951a09367f4e60001b610602565b6101e87fb29957a37aec89c65dee5dec8a4fe60acafdeab35423372efdaf48c14ba1b9bc60001b610602565b6000610215600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610605565b90506102437ff55e0d8b86a43ad8491a29267d5334af26f1359975345703d0c6f08db9d8c08860001b610602565b61026f7f765916b87b4ffdb0834ab2fe5d67f73cdb8012e39c72ddafbaeb240286c5902160001b610602565b8073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8836040518263ffffffff1660e01b81526004016102a89190610708565b600060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050506103067fbf4722b41f4b221174df0acdd2a8cc4df711a654d10fe2d3eace3e4d6303c80260001b610602565b6103327fa72e2deaadfed5d948a8e1168fd3d7b3885ba849270015d1fd236edc2080395460001b610602565b7f62cbaed5c4a6bc49df5c1359395eb538cf5181d4cea04d96eda676bebf581a1d8160405161036191906107e0565b60405180910390a15050565b6103756104c0565b6103a17ffc743d7da1fa0fbf6203251553187d3081099fbb0af11be752265807ecfe54b260001b610602565b6103cd7f397b81dc7bd797406b26d57b73372e400b1060ec32989a2d75eb4b05872fd25d60001b610602565b6103f97f8047f82bc05f45ddd816bd679f01f6f41a802c8621dff8c8ae45545e6cb7f07b60001b610602565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104456104c0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab9061087e565b60405180910390fd5b6104bd8161053e565b50565b6104c86106bf565b73ffffffffffffffffffffffffffffffffffffffff166104e661013b565b73ffffffffffffffffffffffffffffffffffffffff161461053c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610533906108ea565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f09050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b190610956565b60405180910390fd5b919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106f2826106c7565b9050919050565b610702816106e7565b82525050565b600060208201905061071d60008301846106f9565b92915050565b600080fd5b610731816106e7565b811461073c57600080fd5b50565b60008135905061074e81610728565b92915050565b60006020828403121561076a57610769610723565b5b60006107788482850161073f565b91505092915050565b6000819050919050565b60006107a66107a161079c846106c7565b610781565b6106c7565b9050919050565b60006107b88261078b565b9050919050565b60006107ca826107ad565b9050919050565b6107da816107bf565b82525050565b60006020820190506107f560008301846107d1565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006108686026836107fb565b91506108738261080c565b604082019050919050565b600060208201905081810360008301526108978161085b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006108d46020836107fb565b91506108df8261089e565b602082019050919050565b60006020820190508181036000830152610903816108c7565b9050919050565b7f455243313136373a20637265617465206661696c656400000000000000000000600082015250565b60006109406016836107fb565b915061094b8261090a565b602082019050919050565b6000602082019050818103600083015261096f81610933565b905091905056fea2646970667358221220d067fdc9322c8dfd1e635ec30368e48e56e17986c71a57b52eafb9ae89008bbf64736f6c63430008110033",
|
|
124
|
+
"linkReferences": {},
|
|
125
|
+
"deployedLinkReferences": {}
|
|
126
|
+
}
|