@layerzerolabs/lz-evm-messagelib-v2 2.0.13 → 2.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/artifacts/contracts/Executor.sol/Executor.json +20 -20
  2. package/artifacts/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +19 -19
  3. package/artifacts/contracts/MessageLibBase.sol/MessageLibBase.json +1 -1
  4. package/artifacts/contracts/PriceFeed.sol/PriceFeed.json +15 -15
  5. package/artifacts/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +1 -1
  6. package/artifacts/contracts/SendLibBase.sol/SendLibBase.json +6 -6
  7. package/artifacts/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +10 -10
  8. package/artifacts/contracts/Treasury.sol/Treasury.json +9 -9
  9. package/artifacts/contracts/Worker.sol/Worker.json +18 -18
  10. package/artifacts/contracts/interfaces/IExecutor.sol/IExecutor.json +3 -3
  11. package/artifacts/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +4 -4
  12. package/artifacts/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +3 -3
  13. package/artifacts/contracts/interfaces/IWorker.sol/IWorker.json +3 -3
  14. package/artifacts/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  15. package/artifacts/contracts/uln/LzExecutor.sol/LzExecutor.json +279 -20
  16. package/artifacts/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +90 -11
  17. package/artifacts/contracts/uln/SendUlnBase.sol/SendUlnBase.json +7 -7
  18. package/artifacts/contracts/uln/UlnBase.sol/UlnBase.json +7 -7
  19. package/artifacts/contracts/uln/dvn/DVN.sol/DVN.json +31 -31
  20. package/artifacts/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +14 -14
  21. package/artifacts/contracts/uln/dvn/MultiSig.sol/MultiSig.json +5 -5
  22. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +488 -169
  23. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +372 -16
  24. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +419 -93
  25. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  26. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  27. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  28. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  29. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +611 -249
  30. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  31. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +526 -13
  32. package/artifacts/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  33. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  34. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  35. package/artifacts/contracts/uln/interfaces/IDVN.sol/IDVN.json +3 -3
  36. package/artifacts/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +1 -1
  37. package/artifacts/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +0 -24
  38. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  39. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +282 -0
  40. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +91 -0
  41. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +290 -0
  42. package/artifacts/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +4 -4
  43. package/artifacts/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +7 -7
  44. package/artifacts/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +2 -2
  45. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +5 -5
  46. package/artifacts/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +88 -57
  47. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  48. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  49. package/artifacts/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +15 -15
  50. package/artifacts/contracts/uln/uln301/SendUln301.sol/SendUln301.json +76 -76
  51. package/artifacts/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +5 -5
  52. package/artifacts/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +4 -4
  53. package/artifacts/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +79 -24
  54. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  55. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  56. package/artifacts/contracts/uln/uln302/SendUln302.sol/SendUln302.json +75 -75
  57. package/artifacts/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +18 -18
  58. package/contracts/ExecutorFeeLib.sol +6 -6
  59. package/contracts/MessageLibBase.sol +2 -2
  60. package/contracts/PriceFeed.sol +3 -3
  61. package/contracts/ReceiveLibBaseE2.sol +0 -26
  62. package/contracts/SendLibBase.sol +10 -10
  63. package/contracts/SendLibBaseE2.sol +4 -4
  64. package/contracts/Treasury.sol +2 -2
  65. package/contracts/Worker.sol +3 -3
  66. package/contracts/interfaces/IExecutorFeeLib.sol +4 -4
  67. package/contracts/interfaces/ILayerZeroPriceFeed.sol +3 -3
  68. package/contracts/interfaces/IWorker.sol +3 -3
  69. package/contracts/uln/LzExecutor.sol +51 -19
  70. package/contracts/uln/ReceiveUlnBase.sol +21 -14
  71. package/contracts/uln/UlnBase.sol +19 -19
  72. package/contracts/uln/dvn/DVN.sol +16 -16
  73. package/contracts/uln/dvn/DVNFeeLib.sol +2 -2
  74. package/contracts/uln/dvn/MultiSig.sol +13 -13
  75. package/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol +95 -97
  76. package/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol +64 -2
  77. package/contracts/uln/dvn/adapters/DVNAdapterBase.sol +74 -124
  78. package/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol +126 -0
  79. package/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol +50 -0
  80. package/contracts/uln/dvn/adapters/avalanche/NOTES.md +4 -0
  81. package/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol +85 -100
  82. package/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol +121 -2
  83. package/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol +36 -0
  84. package/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol +86 -0
  85. package/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol +58 -0
  86. package/contracts/uln/interfaces/IDVNFeeLib.sol +1 -1
  87. package/contracts/uln/interfaces/IReceiveUlnE2.sol +0 -5
  88. package/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol +45 -0
  89. package/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol +48 -0
  90. package/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol +30 -0
  91. package/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol +45 -0
  92. package/contracts/uln/libs/DVNOptions.sol +6 -6
  93. package/contracts/uln/libs/UlnOptions.sol +13 -13
  94. package/contracts/uln/uln301/AddressSizeConfig.sol +4 -4
  95. package/contracts/uln/uln301/ReceiveLibBaseE1.sol +4 -4
  96. package/contracts/uln/uln301/ReceiveUln301.sol +4 -41
  97. package/contracts/uln/uln301/ReceiveUln301View.sol +89 -0
  98. package/contracts/uln/uln301/SendLibBaseE1.sol +5 -5
  99. package/contracts/uln/uln301/SendUln301.sol +3 -3
  100. package/contracts/uln/uln301/TreasuryFeeHandler.sol +6 -6
  101. package/contracts/uln/uln301/interfaces/IMessageLibE1.sol +4 -4
  102. package/contracts/uln/uln302/ReceiveUln302.sol +4 -27
  103. package/contracts/uln/uln302/ReceiveUln302View.sol +89 -0
  104. package/contracts/uln/uln302/SendUln302.sol +3 -3
  105. package/contracts/upgradeable/WorkerUpgradeable.sol +3 -3
  106. package/package.json +7 -5
  107. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterFeeLibBase.sol/DVNAdapterFeeLibBase.json +0 -50
  108. package/artifacts/contracts/uln/interfaces/IDVNAdapterFeeLib.sol/IDVNAdapterFeeLib.json +0 -50
  109. package/contracts/uln/dvn/adapters/DVNAdapterFeeLibBase.sol +0 -20
  110. package/contracts/uln/interfaces/IDVNAdapterFeeLib.sol +0 -13
@@ -5,16 +5,6 @@
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "_sendLib",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "address",
15
- "name": "_receiveLib",
16
- "type": "address"
17
- },
18
8
  {
19
9
  "internalType": "address[]",
20
10
  "name": "_admins",
@@ -24,11 +14,6 @@
24
14
  "internalType": "address",
25
15
  "name": "_gateway",
26
16
  "type": "address"
27
- },
28
- {
29
- "internalType": "address",
30
- "name": "_gasReceiver",
31
- "type": "address"
32
17
  }
33
18
  ],
34
19
  "stateMutability": "nonpayable",
@@ -36,27 +21,75 @@
36
21
  },
37
22
  {
38
23
  "inputs": [],
39
- "name": "InvalidAddress",
24
+ "name": "AxelarDVNAdapter_OnlyWorkerFeeLib",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "string",
31
+ "name": "chainName",
32
+ "type": "string"
33
+ },
34
+ {
35
+ "internalType": "string",
36
+ "name": "peer",
37
+ "type": "string"
38
+ }
39
+ ],
40
+ "name": "AxelarDVNAdapter_UntrustedPeer",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [
45
+ {
46
+ "internalType": "uint256",
47
+ "name": "actual",
48
+ "type": "uint256"
49
+ },
50
+ {
51
+ "internalType": "uint256",
52
+ "name": "requested",
53
+ "type": "uint256"
54
+ }
55
+ ],
56
+ "name": "DVNAdapter_InsufficientBalance",
40
57
  "type": "error"
41
58
  },
42
59
  {
43
60
  "inputs": [],
44
- "name": "InvalidPayloadSize",
61
+ "name": "DVNAdapter_InvalidMessageSize",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "address",
68
+ "name": "sendLib",
69
+ "type": "address"
70
+ },
71
+ {
72
+ "internalType": "uint32",
73
+ "name": "dstEid",
74
+ "type": "uint32"
75
+ }
76
+ ],
77
+ "name": "DVNAdapter_MissingRecieveLib",
45
78
  "type": "error"
46
79
  },
47
80
  {
48
81
  "inputs": [],
49
- "name": "NotApprovedByGateway",
82
+ "name": "DVNAdapter_NotImplemented",
50
83
  "type": "error"
51
84
  },
52
85
  {
53
86
  "inputs": [],
54
- "name": "OnlySendLib",
87
+ "name": "InvalidAddress",
55
88
  "type": "error"
56
89
  },
57
90
  {
58
91
  "inputs": [],
59
- "name": "ToAddressIsZero",
92
+ "name": "NotApprovedByGateway",
60
93
  "type": "error"
61
94
  },
62
95
  {
@@ -72,49 +105,92 @@
72
105
  "type": "uint256"
73
106
  }
74
107
  ],
75
- "name": "TransferNativeFailed",
108
+ "name": "Transfer_NativeFailed",
109
+ "type": "error"
110
+ },
111
+ {
112
+ "inputs": [],
113
+ "name": "Transfer_ToAddressIsZero",
76
114
  "type": "error"
77
115
  },
78
116
  {
79
117
  "inputs": [],
80
- "name": "Unauthorized",
118
+ "name": "Worker_NotAllowed",
81
119
  "type": "error"
82
120
  },
83
121
  {
84
122
  "inputs": [],
85
- "name": "VersionMismatch",
123
+ "name": "Worker_OnlyMessageLib",
124
+ "type": "error"
125
+ },
126
+ {
127
+ "inputs": [],
128
+ "name": "Worker_RoleRenouncingDisabled",
86
129
  "type": "error"
87
130
  },
88
131
  {
89
132
  "anonymous": false,
90
133
  "inputs": [
91
134
  {
92
- "indexed": true,
93
- "internalType": "address",
94
- "name": "admin",
95
- "type": "address"
96
- },
97
- {
135
+ "components": [
136
+ {
137
+ "internalType": "uint32",
138
+ "name": "dstEid",
139
+ "type": "uint32"
140
+ },
141
+ {
142
+ "internalType": "string",
143
+ "name": "chainName",
144
+ "type": "string"
145
+ },
146
+ {
147
+ "internalType": "string",
148
+ "name": "peer",
149
+ "type": "string"
150
+ },
151
+ {
152
+ "internalType": "uint16",
153
+ "name": "multiplierBps",
154
+ "type": "uint16"
155
+ },
156
+ {
157
+ "internalType": "uint256",
158
+ "name": "nativeGasFee",
159
+ "type": "uint256"
160
+ }
161
+ ],
98
162
  "indexed": false,
99
- "internalType": "bool",
100
- "name": "isAdmin",
101
- "type": "bool"
163
+ "internalType": "struct IAxelarDVNAdapter.DstConfigParam[]",
164
+ "name": "params",
165
+ "type": "tuple[]"
102
166
  }
103
167
  ],
104
- "name": "AdminSet",
168
+ "name": "DstConfigSet",
105
169
  "type": "event"
106
170
  },
107
171
  {
108
172
  "anonymous": false,
109
173
  "inputs": [
110
174
  {
175
+ "components": [
176
+ {
177
+ "internalType": "uint32",
178
+ "name": "dstEid",
179
+ "type": "uint32"
180
+ },
181
+ {
182
+ "internalType": "uint128",
183
+ "name": "floorMarginUSD",
184
+ "type": "uint128"
185
+ }
186
+ ],
111
187
  "indexed": false,
112
- "internalType": "uint16",
113
- "name": "multiplierBps",
114
- "type": "uint16"
188
+ "internalType": "struct IAxelarDVNAdapter.FloorMarginUSDParam[]",
189
+ "name": "params",
190
+ "type": "tuple[]"
115
191
  }
116
192
  ],
117
- "name": "DefaultMultiplierSet",
193
+ "name": "FloorMarginUSDSet",
118
194
  "type": "event"
119
195
  },
120
196
  {
@@ -131,30 +207,15 @@
131
207
  "internalType": "uint16",
132
208
  "name": "multiplierBps",
133
209
  "type": "uint16"
134
- },
135
- {
136
- "internalType": "uint256",
137
- "name": "nativeGasFee",
138
- "type": "uint256"
139
- },
140
- {
141
- "internalType": "string",
142
- "name": "peer",
143
- "type": "string"
144
- },
145
- {
146
- "internalType": "string",
147
- "name": "chainName",
148
- "type": "string"
149
210
  }
150
211
  ],
151
212
  "indexed": false,
152
- "internalType": "struct AxelarDVNAdapter.DstConfigParam[]",
213
+ "internalType": "struct IAxelarDVNAdapter.MultiplierParam[]",
153
214
  "name": "params",
154
215
  "type": "tuple[]"
155
216
  }
156
217
  ],
157
- "name": "DstConfigSet",
218
+ "name": "MultiplierSet",
158
219
  "type": "event"
159
220
  },
160
221
  {
@@ -174,12 +235,25 @@
174
235
  }
175
236
  ],
176
237
  "indexed": false,
177
- "internalType": "struct AxelarDVNAdapter.DstFeeParam[]",
238
+ "internalType": "struct IAxelarDVNAdapter.NativeGasFeeParam[]",
178
239
  "name": "params",
179
240
  "type": "tuple[]"
180
241
  }
181
242
  ],
182
- "name": "DstFeeSet",
243
+ "name": "NativeGasFeeSet",
244
+ "type": "event"
245
+ },
246
+ {
247
+ "anonymous": false,
248
+ "inputs": [
249
+ {
250
+ "indexed": false,
251
+ "internalType": "address",
252
+ "name": "account",
253
+ "type": "address"
254
+ }
255
+ ],
256
+ "name": "Paused",
183
257
  "type": "event"
184
258
  },
185
259
  {
@@ -187,90 +261,190 @@
187
261
  "inputs": [
188
262
  {
189
263
  "components": [
264
+ {
265
+ "internalType": "address",
266
+ "name": "sendLib",
267
+ "type": "address"
268
+ },
190
269
  {
191
270
  "internalType": "uint32",
192
271
  "name": "dstEid",
193
272
  "type": "uint32"
194
273
  },
195
274
  {
196
- "internalType": "uint16",
197
- "name": "multiplierBps",
198
- "type": "uint16"
275
+ "internalType": "bytes32",
276
+ "name": "receiveLib",
277
+ "type": "bytes32"
199
278
  }
200
279
  ],
201
280
  "indexed": false,
202
- "internalType": "struct DVNAdapterBase.DstMultiplierParam[]",
281
+ "internalType": "struct ReceiveLibParam[]",
203
282
  "name": "params",
204
283
  "type": "tuple[]"
205
284
  }
206
285
  ],
207
- "name": "DstMultiplierSet",
286
+ "name": "ReceiveLibsSet",
287
+ "type": "event"
288
+ },
289
+ {
290
+ "anonymous": false,
291
+ "inputs": [
292
+ {
293
+ "indexed": true,
294
+ "internalType": "bytes32",
295
+ "name": "role",
296
+ "type": "bytes32"
297
+ },
298
+ {
299
+ "indexed": true,
300
+ "internalType": "bytes32",
301
+ "name": "previousAdminRole",
302
+ "type": "bytes32"
303
+ },
304
+ {
305
+ "indexed": true,
306
+ "internalType": "bytes32",
307
+ "name": "newAdminRole",
308
+ "type": "bytes32"
309
+ }
310
+ ],
311
+ "name": "RoleAdminChanged",
208
312
  "type": "event"
209
313
  },
210
314
  {
211
315
  "anonymous": false,
212
316
  "inputs": [
317
+ {
318
+ "indexed": true,
319
+ "internalType": "bytes32",
320
+ "name": "role",
321
+ "type": "bytes32"
322
+ },
213
323
  {
214
324
  "indexed": true,
215
325
  "internalType": "address",
216
- "name": "feeLib",
326
+ "name": "account",
327
+ "type": "address"
328
+ },
329
+ {
330
+ "indexed": true,
331
+ "internalType": "address",
332
+ "name": "sender",
217
333
  "type": "address"
218
334
  }
219
335
  ],
220
- "name": "FeeLibSet",
336
+ "name": "RoleGranted",
221
337
  "type": "event"
222
338
  },
223
339
  {
224
340
  "anonymous": false,
225
341
  "inputs": [
342
+ {
343
+ "indexed": true,
344
+ "internalType": "bytes32",
345
+ "name": "role",
346
+ "type": "bytes32"
347
+ },
226
348
  {
227
349
  "indexed": true,
228
350
  "internalType": "address",
229
- "name": "to",
351
+ "name": "account",
230
352
  "type": "address"
231
353
  },
354
+ {
355
+ "indexed": true,
356
+ "internalType": "address",
357
+ "name": "sender",
358
+ "type": "address"
359
+ }
360
+ ],
361
+ "name": "RoleRevoked",
362
+ "type": "event"
363
+ },
364
+ {
365
+ "anonymous": false,
366
+ "inputs": [
232
367
  {
233
368
  "indexed": false,
234
- "internalType": "uint256",
235
- "name": "amount",
236
- "type": "uint256"
369
+ "internalType": "uint16",
370
+ "name": "multiplierBps",
371
+ "type": "uint16"
237
372
  }
238
373
  ],
239
- "name": "FeeWithdrawn",
374
+ "name": "SetDefaultMultiplierBps",
240
375
  "type": "event"
241
376
  },
242
377
  {
243
378
  "anonymous": false,
244
379
  "inputs": [
245
380
  {
246
- "indexed": true,
381
+ "indexed": false,
247
382
  "internalType": "address",
248
- "name": "previousOwner",
383
+ "name": "priceFeed",
249
384
  "type": "address"
385
+ }
386
+ ],
387
+ "name": "SetPriceFeed",
388
+ "type": "event"
389
+ },
390
+ {
391
+ "anonymous": false,
392
+ "inputs": [
393
+ {
394
+ "indexed": false,
395
+ "internalType": "uint32",
396
+ "name": "dstEid",
397
+ "type": "uint32"
250
398
  },
251
399
  {
252
- "indexed": true,
400
+ "indexed": false,
401
+ "internalType": "uint8[]",
402
+ "name": "optionTypes",
403
+ "type": "uint8[]"
404
+ }
405
+ ],
406
+ "name": "SetSupportedOptionTypes",
407
+ "type": "event"
408
+ },
409
+ {
410
+ "anonymous": false,
411
+ "inputs": [
412
+ {
413
+ "indexed": false,
253
414
  "internalType": "address",
254
- "name": "newOwner",
415
+ "name": "workerLib",
255
416
  "type": "address"
256
417
  }
257
418
  ],
258
- "name": "OwnershipTransferred",
419
+ "name": "SetWorkerLib",
259
420
  "type": "event"
260
421
  },
261
422
  {
262
423
  "anonymous": false,
263
424
  "inputs": [
264
425
  {
265
- "indexed": true,
426
+ "indexed": false,
266
427
  "internalType": "address",
267
- "name": "to",
428
+ "name": "account",
429
+ "type": "address"
430
+ }
431
+ ],
432
+ "name": "Unpaused",
433
+ "type": "event"
434
+ },
435
+ {
436
+ "anonymous": false,
437
+ "inputs": [
438
+ {
439
+ "indexed": false,
440
+ "internalType": "address",
441
+ "name": "lib",
268
442
  "type": "address"
269
443
  },
270
444
  {
271
445
  "indexed": false,
272
446
  "internalType": "address",
273
- "name": "token",
447
+ "name": "to",
274
448
  "type": "address"
275
449
  },
276
450
  {
@@ -280,23 +454,30 @@
280
454
  "type": "uint256"
281
455
  }
282
456
  ],
283
- "name": "TokenWithdrawn",
457
+ "name": "Withdraw",
284
458
  "type": "event"
285
459
  },
286
460
  {
287
- "inputs": [
461
+ "inputs": [],
462
+ "name": "DEFAULT_ADMIN_ROLE",
463
+ "outputs": [
288
464
  {
289
- "internalType": "address",
290
- "name": "admin",
291
- "type": "address"
465
+ "internalType": "bytes32",
466
+ "name": "",
467
+ "type": "bytes32"
292
468
  }
293
469
  ],
294
- "name": "admins",
470
+ "stateMutability": "view",
471
+ "type": "function"
472
+ },
473
+ {
474
+ "inputs": [],
475
+ "name": "allowlistSize",
295
476
  "outputs": [
296
477
  {
297
- "internalType": "bool",
478
+ "internalType": "uint64",
298
479
  "name": "",
299
- "type": "bool"
480
+ "type": "uint64"
300
481
  }
301
482
  ],
302
483
  "stateMutability": "view",
@@ -338,7 +519,7 @@
338
519
  },
339
520
  {
340
521
  "internalType": "bytes",
341
- "name": "",
522
+ "name": "_options",
342
523
  "type": "bytes"
343
524
  }
344
525
  ],
@@ -346,7 +527,7 @@
346
527
  "outputs": [
347
528
  {
348
529
  "internalType": "uint256",
349
- "name": "fee",
530
+ "name": "totalFee",
350
531
  "type": "uint256"
351
532
  }
352
533
  ],
@@ -354,32 +535,126 @@
354
535
  "type": "function"
355
536
  },
356
537
  {
357
- "inputs": [
538
+ "inputs": [],
539
+ "name": "defaultMultiplierBps",
540
+ "outputs": [
358
541
  {
359
- "internalType": "string",
360
- "name": "axelarChain",
361
- "type": "string"
542
+ "internalType": "uint16",
543
+ "name": "",
544
+ "type": "uint16"
362
545
  }
363
546
  ],
364
- "name": "axelarChainToEid",
365
- "outputs": [
547
+ "stateMutability": "view",
548
+ "type": "function"
549
+ },
550
+ {
551
+ "inputs": [
366
552
  {
367
553
  "internalType": "uint32",
368
- "name": "eid",
554
+ "name": "dstEid",
369
555
  "type": "uint32"
370
556
  }
371
557
  ],
558
+ "name": "dstConfig",
559
+ "outputs": [
560
+ {
561
+ "internalType": "string",
562
+ "name": "chainName",
563
+ "type": "string"
564
+ },
565
+ {
566
+ "internalType": "string",
567
+ "name": "peer",
568
+ "type": "string"
569
+ },
570
+ {
571
+ "internalType": "uint16",
572
+ "name": "multiplierBps",
573
+ "type": "uint16"
574
+ },
575
+ {
576
+ "internalType": "uint256",
577
+ "name": "nativeGasFee",
578
+ "type": "uint256"
579
+ }
580
+ ],
372
581
  "stateMutability": "view",
373
582
  "type": "function"
374
583
  },
584
+ {
585
+ "inputs": [
586
+ {
587
+ "internalType": "bytes32",
588
+ "name": "commandId",
589
+ "type": "bytes32"
590
+ },
591
+ {
592
+ "internalType": "string",
593
+ "name": "sourceChain",
594
+ "type": "string"
595
+ },
596
+ {
597
+ "internalType": "string",
598
+ "name": "sourceAddress",
599
+ "type": "string"
600
+ },
601
+ {
602
+ "internalType": "bytes",
603
+ "name": "payload",
604
+ "type": "bytes"
605
+ }
606
+ ],
607
+ "name": "execute",
608
+ "outputs": [],
609
+ "stateMutability": "nonpayable",
610
+ "type": "function"
611
+ },
612
+ {
613
+ "inputs": [
614
+ {
615
+ "internalType": "bytes32",
616
+ "name": "commandId",
617
+ "type": "bytes32"
618
+ },
619
+ {
620
+ "internalType": "string",
621
+ "name": "sourceChain",
622
+ "type": "string"
623
+ },
624
+ {
625
+ "internalType": "string",
626
+ "name": "sourceAddress",
627
+ "type": "string"
628
+ },
629
+ {
630
+ "internalType": "bytes",
631
+ "name": "payload",
632
+ "type": "bytes"
633
+ },
634
+ {
635
+ "internalType": "string",
636
+ "name": "tokenSymbol",
637
+ "type": "string"
638
+ },
639
+ {
640
+ "internalType": "uint256",
641
+ "name": "amount",
642
+ "type": "uint256"
643
+ }
644
+ ],
645
+ "name": "executeWithToken",
646
+ "outputs": [],
647
+ "stateMutability": "nonpayable",
648
+ "type": "function"
649
+ },
375
650
  {
376
651
  "inputs": [],
377
- "name": "defaultMultiplierBps",
652
+ "name": "gateway",
378
653
  "outputs": [
379
654
  {
380
- "internalType": "uint16",
655
+ "internalType": "contract IAxelarGateway",
381
656
  "name": "",
382
- "type": "uint16"
657
+ "type": "address"
383
658
  }
384
659
  ],
385
660
  "stateMutability": "view",
@@ -389,31 +664,69 @@
389
664
  "inputs": [
390
665
  {
391
666
  "internalType": "uint32",
392
- "name": "dstEid",
667
+ "name": "_dstEid",
393
668
  "type": "uint32"
669
+ },
670
+ {
671
+ "internalType": "uint64",
672
+ "name": "_confirmations",
673
+ "type": "uint64"
674
+ },
675
+ {
676
+ "internalType": "address",
677
+ "name": "_sender",
678
+ "type": "address"
679
+ },
680
+ {
681
+ "internalType": "bytes",
682
+ "name": "_options",
683
+ "type": "bytes"
394
684
  }
395
685
  ],
396
- "name": "dstConfig",
686
+ "name": "getFee",
397
687
  "outputs": [
398
688
  {
399
689
  "internalType": "uint256",
400
- "name": "nativeGasFee",
690
+ "name": "totalFee",
401
691
  "type": "uint256"
402
- },
692
+ }
693
+ ],
694
+ "stateMutability": "view",
695
+ "type": "function"
696
+ },
697
+ {
698
+ "inputs": [
403
699
  {
404
- "internalType": "uint16",
405
- "name": "multiplierBps",
406
- "type": "uint16"
407
- },
700
+ "internalType": "bytes32",
701
+ "name": "role",
702
+ "type": "bytes32"
703
+ }
704
+ ],
705
+ "name": "getRoleAdmin",
706
+ "outputs": [
408
707
  {
409
- "internalType": "string",
410
- "name": "peer",
411
- "type": "string"
412
- },
708
+ "internalType": "bytes32",
709
+ "name": "",
710
+ "type": "bytes32"
711
+ }
712
+ ],
713
+ "stateMutability": "view",
714
+ "type": "function"
715
+ },
716
+ {
717
+ "inputs": [
718
+ {
719
+ "internalType": "uint32",
720
+ "name": "_eid",
721
+ "type": "uint32"
722
+ }
723
+ ],
724
+ "name": "getSupportedOptionTypes",
725
+ "outputs": [
413
726
  {
414
- "internalType": "string",
415
- "name": "chainName",
416
- "type": "string"
727
+ "internalType": "uint8[]",
728
+ "name": "",
729
+ "type": "uint8[]"
417
730
  }
418
731
  ],
419
732
  "stateMutability": "view",
@@ -423,26 +736,16 @@
423
736
  "inputs": [
424
737
  {
425
738
  "internalType": "bytes32",
426
- "name": "commandId",
739
+ "name": "role",
427
740
  "type": "bytes32"
428
741
  },
429
742
  {
430
- "internalType": "string",
431
- "name": "sourceChain",
432
- "type": "string"
433
- },
434
- {
435
- "internalType": "string",
436
- "name": "sourceAddress",
437
- "type": "string"
438
- },
439
- {
440
- "internalType": "bytes",
441
- "name": "payload",
442
- "type": "bytes"
743
+ "internalType": "address",
744
+ "name": "account",
745
+ "type": "address"
443
746
  }
444
747
  ],
445
- "name": "execute",
748
+ "name": "grantRole",
446
749
  "outputs": [],
447
750
  "stateMutability": "nonpayable",
448
751
  "type": "function"
@@ -450,62 +753,41 @@
450
753
  {
451
754
  "inputs": [
452
755
  {
453
- "internalType": "bytes32",
454
- "name": "commandId",
455
- "type": "bytes32"
456
- },
457
- {
458
- "internalType": "string",
459
- "name": "sourceChain",
460
- "type": "string"
461
- },
462
- {
463
- "internalType": "string",
464
- "name": "sourceAddress",
465
- "type": "string"
466
- },
467
- {
468
- "internalType": "bytes",
469
- "name": "payload",
470
- "type": "bytes"
471
- },
472
- {
473
- "internalType": "string",
474
- "name": "tokenSymbol",
475
- "type": "string"
476
- },
477
- {
478
- "internalType": "uint256",
479
- "name": "amount",
480
- "type": "uint256"
756
+ "internalType": "address",
757
+ "name": "_sender",
758
+ "type": "address"
481
759
  }
482
760
  ],
483
- "name": "executeWithToken",
484
- "outputs": [],
485
- "stateMutability": "nonpayable",
486
- "type": "function"
487
- },
488
- {
489
- "inputs": [],
490
- "name": "feeLib",
761
+ "name": "hasAcl",
491
762
  "outputs": [
492
763
  {
493
- "internalType": "contract IDVNAdapterFeeLib",
764
+ "internalType": "bool",
494
765
  "name": "",
495
- "type": "address"
766
+ "type": "bool"
496
767
  }
497
768
  ],
498
769
  "stateMutability": "view",
499
770
  "type": "function"
500
771
  },
501
772
  {
502
- "inputs": [],
503
- "name": "gasService",
773
+ "inputs": [
774
+ {
775
+ "internalType": "bytes32",
776
+ "name": "role",
777
+ "type": "bytes32"
778
+ },
779
+ {
780
+ "internalType": "address",
781
+ "name": "account",
782
+ "type": "address"
783
+ }
784
+ ],
785
+ "name": "hasRole",
504
786
  "outputs": [
505
787
  {
506
- "internalType": "contract IAxelarGasService",
788
+ "internalType": "bool",
507
789
  "name": "",
508
- "type": "address"
790
+ "type": "bool"
509
791
  }
510
792
  ],
511
793
  "stateMutability": "view",
@@ -513,12 +795,12 @@
513
795
  },
514
796
  {
515
797
  "inputs": [],
516
- "name": "gateway",
798
+ "name": "paused",
517
799
  "outputs": [
518
800
  {
519
- "internalType": "contract IAxelarGateway",
801
+ "internalType": "bool",
520
802
  "name": "",
521
- "type": "address"
803
+ "type": "bool"
522
804
  }
523
805
  ],
524
806
  "stateMutability": "view",
@@ -527,32 +809,17 @@
527
809
  {
528
810
  "inputs": [
529
811
  {
530
- "internalType": "uint32",
531
- "name": "_dstEid",
532
- "type": "uint32"
533
- },
534
- {
535
- "internalType": "uint64",
536
- "name": "",
537
- "type": "uint64"
538
- },
539
- {
540
- "internalType": "address",
541
- "name": "_sender",
542
- "type": "address"
543
- },
544
- {
545
- "internalType": "bytes",
546
- "name": "",
547
- "type": "bytes"
812
+ "internalType": "string",
813
+ "name": "axelarChain",
814
+ "type": "string"
548
815
  }
549
816
  ],
550
- "name": "getFee",
817
+ "name": "peers",
551
818
  "outputs": [
552
819
  {
553
- "internalType": "uint256",
554
- "name": "fee",
555
- "type": "uint256"
820
+ "internalType": "string",
821
+ "name": "peer",
822
+ "type": "string"
556
823
  }
557
824
  ],
558
825
  "stateMutability": "view",
@@ -560,7 +827,7 @@
560
827
  },
561
828
  {
562
829
  "inputs": [],
563
- "name": "owner",
830
+ "name": "priceFeed",
564
831
  "outputs": [
565
832
  {
566
833
  "internalType": "address",
@@ -572,52 +839,61 @@
572
839
  "type": "function"
573
840
  },
574
841
  {
575
- "inputs": [],
576
- "name": "receiveLib",
577
- "outputs": [
842
+ "inputs": [
578
843
  {
579
- "internalType": "contract IReceiveUlnE2",
580
- "name": "",
844
+ "internalType": "address",
845
+ "name": "sendLib",
581
846
  "type": "address"
847
+ },
848
+ {
849
+ "internalType": "uint32",
850
+ "name": "dstEid",
851
+ "type": "uint32"
852
+ }
853
+ ],
854
+ "name": "receiveLibs",
855
+ "outputs": [
856
+ {
857
+ "internalType": "bytes32",
858
+ "name": "receiveLib",
859
+ "type": "bytes32"
582
860
  }
583
861
  ],
584
862
  "stateMutability": "view",
585
863
  "type": "function"
586
864
  },
587
865
  {
588
- "inputs": [],
589
- "name": "renounceOwnership",
590
- "outputs": [],
591
- "stateMutability": "nonpayable",
592
- "type": "function"
593
- },
594
- {
595
- "inputs": [],
596
- "name": "sendLib",
597
- "outputs": [
866
+ "inputs": [
867
+ {
868
+ "internalType": "bytes32",
869
+ "name": "",
870
+ "type": "bytes32"
871
+ },
598
872
  {
599
- "internalType": "contract ISendLib",
873
+ "internalType": "address",
600
874
  "name": "",
601
875
  "type": "address"
602
876
  }
603
877
  ],
604
- "stateMutability": "view",
878
+ "name": "renounceRole",
879
+ "outputs": [],
880
+ "stateMutability": "pure",
605
881
  "type": "function"
606
882
  },
607
883
  {
608
884
  "inputs": [
609
885
  {
610
- "internalType": "address",
611
- "name": "_admin",
612
- "type": "address"
886
+ "internalType": "bytes32",
887
+ "name": "role",
888
+ "type": "bytes32"
613
889
  },
614
890
  {
615
- "internalType": "bool",
616
- "name": "_isAdmin",
617
- "type": "bool"
891
+ "internalType": "address",
892
+ "name": "account",
893
+ "type": "address"
618
894
  }
619
895
  ],
620
- "name": "setAdmin",
896
+ "name": "revokeRole",
621
897
  "outputs": [],
622
898
  "stateMutability": "nonpayable",
623
899
  "type": "function"
@@ -626,11 +902,11 @@
626
902
  "inputs": [
627
903
  {
628
904
  "internalType": "uint16",
629
- "name": "_defaultMultiplierBps",
905
+ "name": "_multiplierBps",
630
906
  "type": "uint16"
631
907
  }
632
908
  ],
633
- "name": "setDefaultMultiplier",
909
+ "name": "setDefaultMultiplierBps",
634
910
  "outputs": [],
635
911
  "stateMutability": "nonpayable",
636
912
  "type": "function"
@@ -644,6 +920,16 @@
644
920
  "name": "dstEid",
645
921
  "type": "uint32"
646
922
  },
923
+ {
924
+ "internalType": "string",
925
+ "name": "chainName",
926
+ "type": "string"
927
+ },
928
+ {
929
+ "internalType": "string",
930
+ "name": "peer",
931
+ "type": "string"
932
+ },
647
933
  {
648
934
  "internalType": "uint16",
649
935
  "name": "multiplierBps",
@@ -653,19 +939,9 @@
653
939
  "internalType": "uint256",
654
940
  "name": "nativeGasFee",
655
941
  "type": "uint256"
656
- },
657
- {
658
- "internalType": "string",
659
- "name": "peer",
660
- "type": "string"
661
- },
662
- {
663
- "internalType": "string",
664
- "name": "chainName",
665
- "type": "string"
666
942
  }
667
943
  ],
668
- "internalType": "struct AxelarDVNAdapter.DstConfigParam[]",
944
+ "internalType": "struct IAxelarDVNAdapter.DstConfigParam[]",
669
945
  "name": "_params",
670
946
  "type": "tuple[]"
671
947
  }
@@ -685,17 +961,43 @@
685
961
  "type": "uint32"
686
962
  },
687
963
  {
688
- "internalType": "uint16",
689
- "name": "multiplierBps",
690
- "type": "uint16"
964
+ "internalType": "uint256",
965
+ "name": "nativeGasFee",
966
+ "type": "uint256"
691
967
  }
692
968
  ],
693
- "internalType": "struct DVNAdapterBase.DstMultiplierParam[]",
969
+ "internalType": "struct IAxelarDVNAdapter.NativeGasFeeParam[]",
694
970
  "name": "_params",
695
971
  "type": "tuple[]"
696
972
  }
697
973
  ],
698
- "name": "setDstMultiplier",
974
+ "name": "setNativeGasFee",
975
+ "outputs": [],
976
+ "stateMutability": "nonpayable",
977
+ "type": "function"
978
+ },
979
+ {
980
+ "inputs": [
981
+ {
982
+ "internalType": "bool",
983
+ "name": "_paused",
984
+ "type": "bool"
985
+ }
986
+ ],
987
+ "name": "setPaused",
988
+ "outputs": [],
989
+ "stateMutability": "nonpayable",
990
+ "type": "function"
991
+ },
992
+ {
993
+ "inputs": [
994
+ {
995
+ "internalType": "address",
996
+ "name": "_priceFeed",
997
+ "type": "address"
998
+ }
999
+ ],
1000
+ "name": "setPriceFeed",
699
1001
  "outputs": [],
700
1002
  "stateMutability": "nonpayable",
701
1003
  "type": "function"
@@ -704,23 +1006,28 @@
704
1006
  "inputs": [
705
1007
  {
706
1008
  "components": [
1009
+ {
1010
+ "internalType": "address",
1011
+ "name": "sendLib",
1012
+ "type": "address"
1013
+ },
707
1014
  {
708
1015
  "internalType": "uint32",
709
1016
  "name": "dstEid",
710
1017
  "type": "uint32"
711
1018
  },
712
1019
  {
713
- "internalType": "uint256",
714
- "name": "nativeGasFee",
715
- "type": "uint256"
1020
+ "internalType": "bytes32",
1021
+ "name": "receiveLib",
1022
+ "type": "bytes32"
716
1023
  }
717
1024
  ],
718
- "internalType": "struct AxelarDVNAdapter.DstFeeParam[]",
1025
+ "internalType": "struct ReceiveLibParam[]",
719
1026
  "name": "_params",
720
1027
  "type": "tuple[]"
721
1028
  }
722
1029
  ],
723
- "name": "setDstNativeGasFee",
1030
+ "name": "setReceiveLibs",
724
1031
  "outputs": [],
725
1032
  "stateMutability": "nonpayable",
726
1033
  "type": "function"
@@ -728,12 +1035,17 @@
728
1035
  {
729
1036
  "inputs": [
730
1037
  {
731
- "internalType": "address",
732
- "name": "_feeLib",
733
- "type": "address"
1038
+ "internalType": "uint32",
1039
+ "name": "_eid",
1040
+ "type": "uint32"
1041
+ },
1042
+ {
1043
+ "internalType": "uint8[]",
1044
+ "name": "_optionTypes",
1045
+ "type": "uint8[]"
734
1046
  }
735
1047
  ],
736
- "name": "setFeeLib",
1048
+ "name": "setSupportedOptionTypes",
737
1049
  "outputs": [],
738
1050
  "stateMutability": "nonpayable",
739
1051
  "type": "function"
@@ -742,17 +1054,41 @@
742
1054
  "inputs": [
743
1055
  {
744
1056
  "internalType": "address",
745
- "name": "newOwner",
1057
+ "name": "_workerFeeLib",
746
1058
  "type": "address"
747
1059
  }
748
1060
  ],
749
- "name": "transferOwnership",
1061
+ "name": "setWorkerFeeLib",
750
1062
  "outputs": [],
751
1063
  "stateMutability": "nonpayable",
752
1064
  "type": "function"
753
1065
  },
754
1066
  {
755
1067
  "inputs": [
1068
+ {
1069
+ "internalType": "bytes4",
1070
+ "name": "interfaceId",
1071
+ "type": "bytes4"
1072
+ }
1073
+ ],
1074
+ "name": "supportsInterface",
1075
+ "outputs": [
1076
+ {
1077
+ "internalType": "bool",
1078
+ "name": "",
1079
+ "type": "bool"
1080
+ }
1081
+ ],
1082
+ "stateMutability": "view",
1083
+ "type": "function"
1084
+ },
1085
+ {
1086
+ "inputs": [
1087
+ {
1088
+ "internalType": "address",
1089
+ "name": "_lib",
1090
+ "type": "address"
1091
+ },
756
1092
  {
757
1093
  "internalType": "address",
758
1094
  "name": "_to",
@@ -769,6 +1105,19 @@
769
1105
  "stateMutability": "nonpayable",
770
1106
  "type": "function"
771
1107
  },
1108
+ {
1109
+ "inputs": [
1110
+ {
1111
+ "internalType": "address",
1112
+ "name": "_sendLib",
1113
+ "type": "address"
1114
+ }
1115
+ ],
1116
+ "name": "withdrawToFeeLib",
1117
+ "outputs": [],
1118
+ "stateMutability": "nonpayable",
1119
+ "type": "function"
1120
+ },
772
1121
  {
773
1122
  "inputs": [
774
1123
  {
@@ -792,13 +1141,26 @@
792
1141
  "stateMutability": "nonpayable",
793
1142
  "type": "function"
794
1143
  },
1144
+ {
1145
+ "inputs": [],
1146
+ "name": "workerFeeLib",
1147
+ "outputs": [
1148
+ {
1149
+ "internalType": "address",
1150
+ "name": "",
1151
+ "type": "address"
1152
+ }
1153
+ ],
1154
+ "stateMutability": "view",
1155
+ "type": "function"
1156
+ },
795
1157
  {
796
1158
  "stateMutability": "payable",
797
1159
  "type": "receive"
798
1160
  }
799
1161
  ],
800
- "bytecode": "0x6101006040526001805461ffff60a01b191661027160a41b1790553480156200002757600080fd5b506040516200381f3803806200381f8339810160408190526200004a9162000352565b848484846001600160a01b038116620000765760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03166080526200008d33620002cf565b6000806000856001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620000d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f7919062000484565b9250925092506000806000876001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000167919062000484565b925092509250826001600160401b0316866001600160401b03161415806200019557508160ff168560ff1614155b80620001a757508060ff168460ff1614155b15620001c65760405163714f551360e01b815260040160405180910390fd5b6001600160a01b03808a1660a052881660c05260005b8751811015620002ac576001600260008a8481518110620002015762000201620004db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110620002555762000255620004db565b60200260200101516001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e960016040516200029b911515815260200190565b60405180910390a2600101620001dc565b5050506001600160a01b0390971660e05250620004f19950505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200033757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200036b57600080fd5b62000376866200031f565b94506020620003878188016200031f565b60408801519095506001600160401b0380821115620003a557600080fd5b818901915089601f830112620003ba57600080fd5b815181811115620003cf57620003cf6200033c565b8060051b604051601f19603f83011681018181108582111715620003f757620003f76200033c565b60405291825284820192508381018501918c8311156200041657600080fd5b938501935b828510156200043f576200042f856200031f565b845293850193928501926200041b565b80985050505050505062000456606087016200031f565b915062000466608087016200031f565b90509295509295909350565b805160ff811681146200033757600080fd5b6000806000606084860312156200049a57600080fd5b83516001600160401b0381168114620004b257600080fd5b9250620004c26020850162000472565b9150620004d26040850162000472565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516132c36200055c600039600081816103f3015261125c01526000818161052b0152611d610152600081816104ca0152818161101301526119d901526000818161021901528181610a7101528181610d65015261130701526132c36000f3fe60806040526004361061018e5760003560e01c80636a22d8cc116100d6578063a0706d901161007f578063ed94602411610059578063ed9460241461054d578063f2fde38b1461056d578063fd9be5221461058d57600080fd5b8063a0706d90146104b8578063bb37d00c146104ec578063bd3ed5ff1461051957600080fd5b80638da5cb5b116100b05780638da5cb5b1461044a57806395d376d7146104755780639e9449651461048857600080fd5b80636a22d8cc146103e1578063715018a61461041557806381d981af1461042a57600080fd5b806320ac2ece11610138578063429b62e511610112578063429b62e51461036157806349160658146103a15780634b0bddd2146103c157600080fd5b806320ac2ece146102c05780632eb17a9a146102e057806330bb3aac1461033357600080fd5b806311ab10991161016957806311ab1099146102605780631a058efe146102805780631a98b2e0146102a057600080fd5b8062bf2e801461019a57806301e33667146101e5578063116191b61461020757600080fd5b3661019557005b600080fd5b3480156101a657600080fd5b506001546101cd9074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156101f157600080fd5b5061020561020036600461241f565b6105ad565b005b34801561021357600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dc565b34801561026c57600080fd5b5061020561027b3660046124a7565b610659565b34801561028c57600080fd5b5061020561029b3660046124e9565b61073f565b3480156102ac57600080fd5b506102056102bb3660046125a0565b610a1a565b3480156102cc57600080fd5b506102056102db36600461267a565b610b3c565b3480156102ec57600080fd5b5061031e6102fb3660046126cb565b805160208183018101805160048252928201919093012091525463ffffffff1681565b60405163ffffffff90911681526020016101dc565b34801561033f57600080fd5b5061035361034e3660046127ae565b610bf4565b6040519081526020016101dc565b34801561036d57600080fd5b5061039161037c36600461267a565b60026020526000908152604090205460ff1681565b60405190151581526020016101dc565b3480156103ad57600080fd5b506102056103bc366004612830565b610d0e565b3480156103cd57600080fd5b506102056103dc3660046128e2565b610e35565b3480156103ed57600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042157600080fd5b50610205610ec8565b34801561043657600080fd5b506102056104453660046124a7565b610edc565b34801561045657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661023b565b610353610483366004612919565b610ff9565b34801561049457600080fd5b506104a86104a336600461298a565b6114b0565b6040516101dc9493929190612a13565b3480156104c457600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f857600080fd5b5060015461023b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052557600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055957600080fd5b50610205610568366004612a5a565b6115ee565b34801561057957600080fd5b5061020561058836600461267a565b6116b8565b34801561059957600080fd5b506102056105a8366004612a75565b611774565b3360009081526002602052604090205460ff166105f6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106018383836117cb565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252602082018490528416917f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620910160405180910390a2505050565b3360009081526002602052604090205460ff166106a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561070157368383838181106106c0576106c0612a9f565b60400291909101915050602081018035906003906000906106e1908561298a565b63ffffffff168152602081019190915260400160002055506001016106a5565b507fb57a660331a8e55de5763e1af768e8d5a46feeabc201394c94ac4cde36319f1a8282604051610733929190612ace565b60405180910390a15050565b3360009081526002602052604090205460ff16610788576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109e857368383838181106107a6576107a6612a9f565b90506020028101906107b89190612b22565b90506004600360006107cd602085018561298a565b63ffffffff1663ffffffff1681526020019081526020016000206003016040516107f79190612bb3565b9081526040516020918190038201902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556108399082018261298a565b60046108486080840184612c47565b604051610856929190612cac565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9590951694909417909355608083018152830180358352818301916108b791908501612a5a565b61ffff1681526020016108cd6060840184612c47565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016109146080840184612c47565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452506003925061095c9050602085018561298a565b63ffffffff168152602080820192909252604090810160002083518155918301516001830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905582015160028201906109c39082612d04565b50606082015160038201906109d89082612d04565b50506001909201915061078b9050565b507f950ccced17e999da9a8f2583cd16235977dbb7ee83fd38b2967cb8585fa6d1928282604051610733929190612ecb565b60008585604051610a2c929190612cac565b6040519081900381207f1876eed9000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631876eed990610ab6908e908e908e908e908e9089908d908d908d90600401612fe7565b6020604051808303816000875af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190613046565b610b2f576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b3360009081526002602052604090205460ff16610b85576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f47f3fc2afa14fc8d55a57ed53e2a26b8e63d5f95adb4869b2da2bffdd38c63d290600090a250565b63ffffffff85166000908152600360205260409020805460015490919073ffffffffffffffffffffffffffffffffffffffff1615610d045760018054908201546040517f212cf54f00000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015273ffffffffffffffffffffffffffffffffffffffff888116602483015261ffff7401000000000000000000000000000000000000000085048116604484015290921660648201526084810185905291169063212cf54f9060a401602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190613063565b91505b5095945050505050565b60008282604051610d20929190612cac565b6040519081900381207f5f6970c3000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635f6970c390610da4908b908b908b908b908b90899060040161307c565b6020604051808303816000875af1158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190613046565b610e1d576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e2b878787878787611800565b5050505050505050565b610e3d611853565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e991015b60405180910390a25050565b610ed0611853565b610eda60006118d4565b565b3360009081526002602052604090205460ff16610f25576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610fc75736838383818110610f4357610f43612a9f565b9050604002019050806020016020810190610f5e9190612a5a565b60036000610f6f602085018561298a565b63ffffffff1681526020810191909152604001600020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff9390931692909217909155919091019050610f28565b507f69abe4111cf43d39e68d4c540ca52a855f900939e08d7f27a07a068ea5c0605582826040516107339291906130bd565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461106a576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060038161107c602088018861298a565b63ffffffff1663ffffffff16815260200190815260200160002090508060000154915060008160030180546110b090612b60565b80601f01602080910402602001604051908101604052809291908181526020018280546110dc90612b60565b80156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b50505050509050600082600201805461114190612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461116d90612b60565b80156111ba5780601f1061118f576101008083540402835291602001916111ba565b820191906000526020600020905b81548152906001019060200180831161119d57829003601f168201915b5050505050905060006112148880602001906111d69190612c47565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408a0135611949565b905061121f85611976565b6040517f0c93e3bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c93e3bb90879061129b903090889088908890849060040161310f565b6000604051808303818588803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50506040517f1c92115f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169350631c92115f9250611343915086908690869060040161317b565b600060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505060015473ffffffffffffffffffffffffffffffffffffffff161591506114a590505760015473ffffffffffffffffffffffffffffffffffffffff1663212cf54f6113c060208b018b61298a565b6113d060a08c0160808d0161267a565b600180549089015460405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263ffffffff909416600485015273ffffffffffffffffffffffffffffffffffffffff909216602484015274010000000000000000000000000000000000000000900461ffff90811660448401521660648201526084810188905260a401602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190613063565b94505b505050509392505050565b600360205260009081526040902080546001820154600283018054929361ffff909216926114dd90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461150990612b60565b80156115565780601f1061152b57610100808354040283529160200191611556565b820191906000526020600020905b81548152906001019060200180831161153957829003601f168201915b50505050509080600301805461156b90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461159790612b60565b80156115e45780601f106115b9576101008083540402835291602001916115e4565b820191906000526020600020905b8154815290600101906020018083116115c757829003601f168201915b5050505050905084565b3360009081526002602052604090205460ff16611637576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527f5cd03093b446ef387fae919d09687fb7200930dc43240f391a08f7f3a8243e619060200160405180910390a150565b6116c0611853565b73ffffffffffffffffffffffffffffffffffffffff8116611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611771816118d4565b50565b3360009081526002602052604090205460ff166117bd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c7828261198d565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166117f5576117f08282611a7d565b505050565b6117f0838383611b83565b61180c86868686611bf1565b61184b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d1392505050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161175f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060828260405160200161195e9291906131be565b60405160208183030381529060405290505b92915050565b47818110156117c7576117c73061198d838561320f565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063fd9be52290604401600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f78473f3f373f7673597f4f0fa5873cb4d375fea6d4339ad6b56dbd411513cb3f82604051610ebc91815260200190565b73ffffffffffffffffffffffffffffffffffffffff8216611aca576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611b24576040519150601f19603f3d011682016040523d82523d6000602084013e611b29565b606091505b50509050806117f0576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905260440161175f565b73ffffffffffffffffffffffffffffffffffffffff8216611bd0576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117f073ffffffffffffffffffffffffffffffffffffffff84168383611dd9565b600060048585604051611c05929190612cac565b90815260408051602092819003830190205463ffffffff1660008181526003909352908220600201805491935090611c3c90612b60565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6890612b60565b8015611cb55780601f10611c8a57610100808354040283529160200191611cb5565b820191906000526020600020905b815481529060010190602001808311611c9857829003601f168201915b5050505050905080805190602001208484604051611cd4929190612cac565b60405180910390201461184b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611d1f83611e66565b6040517f0223536e000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630223536e90611da2908590859067ffffffffffffffff90600401613222565b600060405180830381600087803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526117f0908490611ede565b60606000611e7660206051613255565b835114611eaf576040517ffbdf795400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ebd84826051611fed565b9250611eca605182613255565b9050611ed68482612167565b915050915091565b6000611f40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121e79092919063ffffffff16565b9050805160001480611f61575080806020019051810190611f619190613046565b6117f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161175f565b606081611ffb81601f613255565b1015612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161175f565b61206d8284613255565b845110156120d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161175f565b6060821580156120f6576040519150600082526020820160405261215e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561212f578051835260209283019201612117565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000612174826020613255565b835110156121de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e64730000000000000000000000604482015260640161175f565b50016020015190565b60606121f684846000856121fe565b949350505050565b606082471015612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161175f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122b99190613268565b60006040518083038185875af1925050503d80600081146122f6576040519150601f19603f3d011682016040523d82523d6000602084013e6122fb565b606091505b509150915061230c87838387612317565b979650505050505050565b606083156123ad5782516000036123a65773ffffffffffffffffffffffffffffffffffffffff85163b6123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161175f565b50816121f6565b6121f683838151156123c25781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f919061327a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241a57600080fd5b919050565b60008060006060848603121561243457600080fd5b61243d846123f6565b925061244b602085016123f6565b9150604084013590509250925092565b60008083601f84011261246d57600080fd5b50813567ffffffffffffffff81111561248557600080fd5b6020830191508360208260061b85010111156124a057600080fd5b9250929050565b600080602083850312156124ba57600080fd5b823567ffffffffffffffff8111156124d157600080fd5b6124dd8582860161245b565b90969095509350505050565b600080602083850312156124fc57600080fd5b823567ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81358181111561253757600080fd5b8660208260051b850101111561254c57600080fd5b60209290920196919550909350505050565b60008083601f84011261257057600080fd5b50813567ffffffffffffffff81111561258857600080fd5b6020830191508360208285010111156124a057600080fd5b60008060008060008060008060008060c08b8d0312156125bf57600080fd5b8a35995060208b013567ffffffffffffffff808211156125de57600080fd5b6125ea8e838f0161255e565b909b50995060408d013591508082111561260357600080fd5b61260f8e838f0161255e565b909950975060608d013591508082111561262857600080fd5b6126348e838f0161255e565b909750955060808d013591508082111561264d57600080fd5b5061265a8d828e0161255e565b9150809450508092505060a08b013590509295989b9194979a5092959850565b60006020828403121561268c57600080fd5b612695826123f6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156126dd57600080fd5b813567ffffffffffffffff808211156126f557600080fd5b818401915084601f83011261270957600080fd5b81358181111561271b5761271b61269c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156127615761276161269c565b8160405282815287602084870101111561277a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b803563ffffffff8116811461241a57600080fd5b6000806000806000608086880312156127c657600080fd5b6127cf8661279a565b9450602086013567ffffffffffffffff80821682146127ed57600080fd5b8195506127fc604089016123f6565b9450606088013591508082111561281257600080fd5b5061281f8882890161255e565b969995985093965092949392505050565b60008060008060008060006080888a03121561284b57600080fd5b87359650602088013567ffffffffffffffff8082111561286a57600080fd5b6128768b838c0161255e565b909850965060408a013591508082111561288f57600080fd5b61289b8b838c0161255e565b909650945060608a01359150808211156128b457600080fd5b506128c18a828b0161255e565b989b979a50959850939692959293505050565b801515811461177157600080fd5b600080604083850312156128f557600080fd5b6128fe836123f6565b9150602083013561290e816128d4565b809150509250929050565b60008060006040848603121561292e57600080fd5b833567ffffffffffffffff8082111561294657600080fd5b9085019060a0828803121561295a57600080fd5b9093506020850135908082111561297057600080fd5b5061297d8682870161255e565b9497909650939450505050565b60006020828403121561299c57600080fd5b6126958261279a565b60005b838110156129c05781810151838201526020016129a8565b50506000910152565b600081518084526129e18160208601602086016129a5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815261ffff84166020820152608060408201526000612a3660808301856129c9565b8281036060840152610d0181856129c9565b803561ffff8116811461241a57600080fd5b600060208284031215612a6c57600080fd5b61269582612a48565b60008060408385031215612a8857600080fd5b612a91836123f6565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b87811015612b155763ffffffff612afa8361279a565b16835281850135858401529183019190830190600101612ae4565b5090979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612b5657600080fd5b9190910192915050565b600181811c90821680612b7457607f821691505b602082108103612bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000808354612bc181612b60565b60018281168015612bd95760018114612c0c57612c3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612c3b565b8760005260208060002060005b85811015612c325781548a820152908401908201612c19565b50505082870194505b50929695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c7c57600080fd5b83018035915067ffffffffffffffff821115612c9757600080fd5b6020019150368190038213156124a057600080fd5b8183823760009101908152919050565b601f8211156117f0576000816000526020600020601f850160051c81016020861015612ce55750805b601f850160051c820191505b8181101561184b57828155600101612cf1565b815167ffffffffffffffff811115612d1e57612d1e61269c565b612d3281612d2c8454612b60565b84612cbc565b602080601f831160018114612d855760008415612d4f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561184b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612dd257888601518255948401946001909101908401612db3565b5085821015612e0e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e5357600080fd5b830160208101925035905067ffffffffffffffff811115612e7357600080fd5b8036038213156124a057600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528181018390526000906040808401600586901b850182018785805b89811015612fd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618c3603018112612f4b578283fd5b8b0160a063ffffffff612f5d8361279a565b16865261ffff612f6e8a8401612a48565b168987015287820135888701526060612f8981840184612e1e565b83838a0152612f9b848a018284612e82565b93505050506080612fae81840184612e1e565b935087830382890152612fc2838583612e82565b988b019897505050938801935050600101612eeb565b50919998505050505050505050565b89815260c06020820152600061300160c083018a8c612e82565b828103604084015261301481898b612e82565b9050866060840152828103608084015261302f818688612e82565b9150508260a08301529a9950505050505050505050565b60006020828403121561305857600080fd5b8151612695816128d4565b60006020828403121561307557600080fd5b5051919050565b868152608060208201526000613096608083018789612e82565b82810360408401526130a9818688612e82565b915050826060830152979650505050505050565b6020808252818101839052600090604080840186845b87811015612b155763ffffffff6130e98361279a565b16835261ffff6130fa868401612a48565b168386015291830191908301906001016130d3565b600073ffffffffffffffffffffffffffffffffffffffff808816835260a0602084015261313f60a08401886129c9565b838103604085015261315181886129c9565b9050838103606085015261316581876129c9565b9250508084166080840152509695505050505050565b60608152600061318e60608301866129c9565b82810360208401526131a081866129c9565b905082810360408401526131b481856129c9565b9695505050505050565b600083516131d08184602088016129a5565b9190910191825250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611970576119706131e0565b60608152600061323560608301866129c9565b905083602083015267ffffffffffffffff83166040830152949350505050565b80820180821115611970576119706131e0565b60008251612b568184602087016129a5565b60208152600061269560208301846129c956fea264697066735822122058099989dca2cb9abc7c52a52b7074c961d41a2e023e65b86964dc8c8a97083e64736f6c63430008160033",
801
- "deployedBytecode": "0x60806040526004361061018e5760003560e01c80636a22d8cc116100d6578063a0706d901161007f578063ed94602411610059578063ed9460241461054d578063f2fde38b1461056d578063fd9be5221461058d57600080fd5b8063a0706d90146104b8578063bb37d00c146104ec578063bd3ed5ff1461051957600080fd5b80638da5cb5b116100b05780638da5cb5b1461044a57806395d376d7146104755780639e9449651461048857600080fd5b80636a22d8cc146103e1578063715018a61461041557806381d981af1461042a57600080fd5b806320ac2ece11610138578063429b62e511610112578063429b62e51461036157806349160658146103a15780634b0bddd2146103c157600080fd5b806320ac2ece146102c05780632eb17a9a146102e057806330bb3aac1461033357600080fd5b806311ab10991161016957806311ab1099146102605780631a058efe146102805780631a98b2e0146102a057600080fd5b8062bf2e801461019a57806301e33667146101e5578063116191b61461020757600080fd5b3661019557005b600080fd5b3480156101a657600080fd5b506001546101cd9074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156101f157600080fd5b5061020561020036600461241f565b6105ad565b005b34801561021357600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dc565b34801561026c57600080fd5b5061020561027b3660046124a7565b610659565b34801561028c57600080fd5b5061020561029b3660046124e9565b61073f565b3480156102ac57600080fd5b506102056102bb3660046125a0565b610a1a565b3480156102cc57600080fd5b506102056102db36600461267a565b610b3c565b3480156102ec57600080fd5b5061031e6102fb3660046126cb565b805160208183018101805160048252928201919093012091525463ffffffff1681565b60405163ffffffff90911681526020016101dc565b34801561033f57600080fd5b5061035361034e3660046127ae565b610bf4565b6040519081526020016101dc565b34801561036d57600080fd5b5061039161037c36600461267a565b60026020526000908152604090205460ff1681565b60405190151581526020016101dc565b3480156103ad57600080fd5b506102056103bc366004612830565b610d0e565b3480156103cd57600080fd5b506102056103dc3660046128e2565b610e35565b3480156103ed57600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042157600080fd5b50610205610ec8565b34801561043657600080fd5b506102056104453660046124a7565b610edc565b34801561045657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661023b565b610353610483366004612919565b610ff9565b34801561049457600080fd5b506104a86104a336600461298a565b6114b0565b6040516101dc9493929190612a13565b3480156104c457600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f857600080fd5b5060015461023b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052557600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055957600080fd5b50610205610568366004612a5a565b6115ee565b34801561057957600080fd5b5061020561058836600461267a565b6116b8565b34801561059957600080fd5b506102056105a8366004612a75565b611774565b3360009081526002602052604090205460ff166105f6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106018383836117cb565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252602082018490528416917f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620910160405180910390a2505050565b3360009081526002602052604090205460ff166106a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561070157368383838181106106c0576106c0612a9f565b60400291909101915050602081018035906003906000906106e1908561298a565b63ffffffff168152602081019190915260400160002055506001016106a5565b507fb57a660331a8e55de5763e1af768e8d5a46feeabc201394c94ac4cde36319f1a8282604051610733929190612ace565b60405180910390a15050565b3360009081526002602052604090205460ff16610788576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109e857368383838181106107a6576107a6612a9f565b90506020028101906107b89190612b22565b90506004600360006107cd602085018561298a565b63ffffffff1663ffffffff1681526020019081526020016000206003016040516107f79190612bb3565b9081526040516020918190038201902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556108399082018261298a565b60046108486080840184612c47565b604051610856929190612cac565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9590951694909417909355608083018152830180358352818301916108b791908501612a5a565b61ffff1681526020016108cd6060840184612c47565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016109146080840184612c47565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452506003925061095c9050602085018561298a565b63ffffffff168152602080820192909252604090810160002083518155918301516001830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905582015160028201906109c39082612d04565b50606082015160038201906109d89082612d04565b50506001909201915061078b9050565b507f950ccced17e999da9a8f2583cd16235977dbb7ee83fd38b2967cb8585fa6d1928282604051610733929190612ecb565b60008585604051610a2c929190612cac565b6040519081900381207f1876eed9000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631876eed990610ab6908e908e908e908e908e9089908d908d908d90600401612fe7565b6020604051808303816000875af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190613046565b610b2f576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b3360009081526002602052604090205460ff16610b85576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f47f3fc2afa14fc8d55a57ed53e2a26b8e63d5f95adb4869b2da2bffdd38c63d290600090a250565b63ffffffff85166000908152600360205260409020805460015490919073ffffffffffffffffffffffffffffffffffffffff1615610d045760018054908201546040517f212cf54f00000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015273ffffffffffffffffffffffffffffffffffffffff888116602483015261ffff7401000000000000000000000000000000000000000085048116604484015290921660648201526084810185905291169063212cf54f9060a401602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190613063565b91505b5095945050505050565b60008282604051610d20929190612cac565b6040519081900381207f5f6970c3000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635f6970c390610da4908b908b908b908b908b90899060040161307c565b6020604051808303816000875af1158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190613046565b610e1d576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e2b878787878787611800565b5050505050505050565b610e3d611853565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e991015b60405180910390a25050565b610ed0611853565b610eda60006118d4565b565b3360009081526002602052604090205460ff16610f25576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610fc75736838383818110610f4357610f43612a9f565b9050604002019050806020016020810190610f5e9190612a5a565b60036000610f6f602085018561298a565b63ffffffff1681526020810191909152604001600020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff9390931692909217909155919091019050610f28565b507f69abe4111cf43d39e68d4c540ca52a855f900939e08d7f27a07a068ea5c0605582826040516107339291906130bd565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461106a576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060038161107c602088018861298a565b63ffffffff1663ffffffff16815260200190815260200160002090508060000154915060008160030180546110b090612b60565b80601f01602080910402602001604051908101604052809291908181526020018280546110dc90612b60565b80156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b50505050509050600082600201805461114190612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461116d90612b60565b80156111ba5780601f1061118f576101008083540402835291602001916111ba565b820191906000526020600020905b81548152906001019060200180831161119d57829003601f168201915b5050505050905060006112148880602001906111d69190612c47565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408a0135611949565b905061121f85611976565b6040517f0c93e3bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c93e3bb90879061129b903090889088908890849060040161310f565b6000604051808303818588803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50506040517f1c92115f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169350631c92115f9250611343915086908690869060040161317b565b600060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505060015473ffffffffffffffffffffffffffffffffffffffff161591506114a590505760015473ffffffffffffffffffffffffffffffffffffffff1663212cf54f6113c060208b018b61298a565b6113d060a08c0160808d0161267a565b600180549089015460405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263ffffffff909416600485015273ffffffffffffffffffffffffffffffffffffffff909216602484015274010000000000000000000000000000000000000000900461ffff90811660448401521660648201526084810188905260a401602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190613063565b94505b505050509392505050565b600360205260009081526040902080546001820154600283018054929361ffff909216926114dd90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461150990612b60565b80156115565780601f1061152b57610100808354040283529160200191611556565b820191906000526020600020905b81548152906001019060200180831161153957829003601f168201915b50505050509080600301805461156b90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461159790612b60565b80156115e45780601f106115b9576101008083540402835291602001916115e4565b820191906000526020600020905b8154815290600101906020018083116115c757829003601f168201915b5050505050905084565b3360009081526002602052604090205460ff16611637576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527f5cd03093b446ef387fae919d09687fb7200930dc43240f391a08f7f3a8243e619060200160405180910390a150565b6116c0611853565b73ffffffffffffffffffffffffffffffffffffffff8116611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611771816118d4565b50565b3360009081526002602052604090205460ff166117bd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c7828261198d565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166117f5576117f08282611a7d565b505050565b6117f0838383611b83565b61180c86868686611bf1565b61184b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d1392505050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161175f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060828260405160200161195e9291906131be565b60405160208183030381529060405290505b92915050565b47818110156117c7576117c73061198d838561320f565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063fd9be52290604401600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f78473f3f373f7673597f4f0fa5873cb4d375fea6d4339ad6b56dbd411513cb3f82604051610ebc91815260200190565b73ffffffffffffffffffffffffffffffffffffffff8216611aca576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611b24576040519150601f19603f3d011682016040523d82523d6000602084013e611b29565b606091505b50509050806117f0576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905260440161175f565b73ffffffffffffffffffffffffffffffffffffffff8216611bd0576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117f073ffffffffffffffffffffffffffffffffffffffff84168383611dd9565b600060048585604051611c05929190612cac565b90815260408051602092819003830190205463ffffffff1660008181526003909352908220600201805491935090611c3c90612b60565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6890612b60565b8015611cb55780601f10611c8a57610100808354040283529160200191611cb5565b820191906000526020600020905b815481529060010190602001808311611c9857829003601f168201915b5050505050905080805190602001208484604051611cd4929190612cac565b60405180910390201461184b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611d1f83611e66565b6040517f0223536e000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630223536e90611da2908590859067ffffffffffffffff90600401613222565b600060405180830381600087803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526117f0908490611ede565b60606000611e7660206051613255565b835114611eaf576040517ffbdf795400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ebd84826051611fed565b9250611eca605182613255565b9050611ed68482612167565b915050915091565b6000611f40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121e79092919063ffffffff16565b9050805160001480611f61575080806020019051810190611f619190613046565b6117f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161175f565b606081611ffb81601f613255565b1015612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161175f565b61206d8284613255565b845110156120d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161175f565b6060821580156120f6576040519150600082526020820160405261215e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561212f578051835260209283019201612117565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000612174826020613255565b835110156121de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e64730000000000000000000000604482015260640161175f565b50016020015190565b60606121f684846000856121fe565b949350505050565b606082471015612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161175f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122b99190613268565b60006040518083038185875af1925050503d80600081146122f6576040519150601f19603f3d011682016040523d82523d6000602084013e6122fb565b606091505b509150915061230c87838387612317565b979650505050505050565b606083156123ad5782516000036123a65773ffffffffffffffffffffffffffffffffffffffff85163b6123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161175f565b50816121f6565b6121f683838151156123c25781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f919061327a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241a57600080fd5b919050565b60008060006060848603121561243457600080fd5b61243d846123f6565b925061244b602085016123f6565b9150604084013590509250925092565b60008083601f84011261246d57600080fd5b50813567ffffffffffffffff81111561248557600080fd5b6020830191508360208260061b85010111156124a057600080fd5b9250929050565b600080602083850312156124ba57600080fd5b823567ffffffffffffffff8111156124d157600080fd5b6124dd8582860161245b565b90969095509350505050565b600080602083850312156124fc57600080fd5b823567ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81358181111561253757600080fd5b8660208260051b850101111561254c57600080fd5b60209290920196919550909350505050565b60008083601f84011261257057600080fd5b50813567ffffffffffffffff81111561258857600080fd5b6020830191508360208285010111156124a057600080fd5b60008060008060008060008060008060c08b8d0312156125bf57600080fd5b8a35995060208b013567ffffffffffffffff808211156125de57600080fd5b6125ea8e838f0161255e565b909b50995060408d013591508082111561260357600080fd5b61260f8e838f0161255e565b909950975060608d013591508082111561262857600080fd5b6126348e838f0161255e565b909750955060808d013591508082111561264d57600080fd5b5061265a8d828e0161255e565b9150809450508092505060a08b013590509295989b9194979a5092959850565b60006020828403121561268c57600080fd5b612695826123f6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156126dd57600080fd5b813567ffffffffffffffff808211156126f557600080fd5b818401915084601f83011261270957600080fd5b81358181111561271b5761271b61269c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156127615761276161269c565b8160405282815287602084870101111561277a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b803563ffffffff8116811461241a57600080fd5b6000806000806000608086880312156127c657600080fd5b6127cf8661279a565b9450602086013567ffffffffffffffff80821682146127ed57600080fd5b8195506127fc604089016123f6565b9450606088013591508082111561281257600080fd5b5061281f8882890161255e565b969995985093965092949392505050565b60008060008060008060006080888a03121561284b57600080fd5b87359650602088013567ffffffffffffffff8082111561286a57600080fd5b6128768b838c0161255e565b909850965060408a013591508082111561288f57600080fd5b61289b8b838c0161255e565b909650945060608a01359150808211156128b457600080fd5b506128c18a828b0161255e565b989b979a50959850939692959293505050565b801515811461177157600080fd5b600080604083850312156128f557600080fd5b6128fe836123f6565b9150602083013561290e816128d4565b809150509250929050565b60008060006040848603121561292e57600080fd5b833567ffffffffffffffff8082111561294657600080fd5b9085019060a0828803121561295a57600080fd5b9093506020850135908082111561297057600080fd5b5061297d8682870161255e565b9497909650939450505050565b60006020828403121561299c57600080fd5b6126958261279a565b60005b838110156129c05781810151838201526020016129a8565b50506000910152565b600081518084526129e18160208601602086016129a5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815261ffff84166020820152608060408201526000612a3660808301856129c9565b8281036060840152610d0181856129c9565b803561ffff8116811461241a57600080fd5b600060208284031215612a6c57600080fd5b61269582612a48565b60008060408385031215612a8857600080fd5b612a91836123f6565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b87811015612b155763ffffffff612afa8361279a565b16835281850135858401529183019190830190600101612ae4565b5090979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612b5657600080fd5b9190910192915050565b600181811c90821680612b7457607f821691505b602082108103612bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000808354612bc181612b60565b60018281168015612bd95760018114612c0c57612c3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612c3b565b8760005260208060002060005b85811015612c325781548a820152908401908201612c19565b50505082870194505b50929695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c7c57600080fd5b83018035915067ffffffffffffffff821115612c9757600080fd5b6020019150368190038213156124a057600080fd5b8183823760009101908152919050565b601f8211156117f0576000816000526020600020601f850160051c81016020861015612ce55750805b601f850160051c820191505b8181101561184b57828155600101612cf1565b815167ffffffffffffffff811115612d1e57612d1e61269c565b612d3281612d2c8454612b60565b84612cbc565b602080601f831160018114612d855760008415612d4f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561184b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612dd257888601518255948401946001909101908401612db3565b5085821015612e0e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e5357600080fd5b830160208101925035905067ffffffffffffffff811115612e7357600080fd5b8036038213156124a057600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528181018390526000906040808401600586901b850182018785805b89811015612fd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618c3603018112612f4b578283fd5b8b0160a063ffffffff612f5d8361279a565b16865261ffff612f6e8a8401612a48565b168987015287820135888701526060612f8981840184612e1e565b83838a0152612f9b848a018284612e82565b93505050506080612fae81840184612e1e565b935087830382890152612fc2838583612e82565b988b019897505050938801935050600101612eeb565b50919998505050505050505050565b89815260c06020820152600061300160c083018a8c612e82565b828103604084015261301481898b612e82565b9050866060840152828103608084015261302f818688612e82565b9150508260a08301529a9950505050505050505050565b60006020828403121561305857600080fd5b8151612695816128d4565b60006020828403121561307557600080fd5b5051919050565b868152608060208201526000613096608083018789612e82565b82810360408401526130a9818688612e82565b915050826060830152979650505050505050565b6020808252818101839052600090604080840186845b87811015612b155763ffffffff6130e98361279a565b16835261ffff6130fa868401612a48565b168386015291830191908301906001016130d3565b600073ffffffffffffffffffffffffffffffffffffffff808816835260a0602084015261313f60a08401886129c9565b838103604085015261315181886129c9565b9050838103606085015261316581876129c9565b9250508084166080840152509695505050505050565b60608152600061318e60608301866129c9565b82810360208401526131a081866129c9565b905082810360408401526131b481856129c9565b9695505050505050565b600083516131d08184602088016129a5565b9190910191825250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611970576119706131e0565b60608152600061323560608301866129c9565b905083602083015267ffffffffffffffff83166040830152949350505050565b80820180821115611970576119706131e0565b60008251612b568184602087016129a5565b60208152600061269560208301846129c956fea264697066735822122058099989dca2cb9abc7c52a52b7074c961d41a2e023e65b86964dc8c8a97083e64736f6c63430008160033",
1162
+ "bytecode": "0x60a06040523480156200001157600080fd5b506040516200492838038062004928833981016040819052620000349162000334565b803383612ee0600060405190808252806020026020018201604052801562000066578160200160208202803683370190505b506001805460ff61ffff60e81b011916600160e81b61ffff851602179055600280546001600160a01b031916905560008285856001600160a01b03821615620000b657620000b6600083620001b3565b60005b85518110156200011a57620001117f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000fd57620000fd6200041a565b6020026020010151620001b360201b60201c565b600101620000b9565b5060005b81518110156200016b57620001627fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000fd57620000fd6200041a565b6001016200011e565b5050506001600160a01b03871695506200019e9450505050505760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0316608052506200046d9050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156200020457506000828152602081815260408083206001600160a01b038516845290915290205460ff16155b156200025157600180546015906200022c90600160a81b90046001600160401b031662000430565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b6200025d828262000261565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200025d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002bd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200032f57600080fd5b919050565b600080604083850312156200034857600080fd5b82516001600160401b03808211156200036057600080fd5b818501915085601f8301126200037557600080fd5b81516020828211156200038c576200038c62000301565b8160051b604051601f19603f83011681018181108682111715620003b457620003b462000301565b604052928352818301935084810182019289841115620003d357600080fd5b948201945b83861015620003fc57620003ec8662000317565b85529482019493820193620003d8565b96506200040d905087820162000317565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038281166002600160401b031981016200046357634e487b7160e01b600052601160045260246000fd5b6001019392505050565b60805161448a6200049e6000396000818161030501528181610b9c01528181610f980152611667015261448a6000f3fe6080604052600436106102015760003560e01c80634cfa6d2c1161011d5780639e944965116100b0578063c416aa511161007f578063cd88b90311610064578063cd88b903146106dc578063d2ae2104146106fc578063d547741f1461074f57600080fd5b8063c416aa511461068a578063c7b2370b146106bc57600080fd5b80639e94496514610605578063a217fddf14610635578063af896a3b1461064a578063c358de0a1461066a57600080fd5b8063741bef1a116100ec578063741bef1a14610547578063790a72141461057457806391d14854146105a157806395d376d7146105f257600080fd5b80634cfa6d2c146104b757806351b6a0fd146104ef5780635c975abb1461050f578063724e78da1461052757600080fd5b80631a98b2e0116101955780632f2ff15d116101645780632f2ff15d1461043757806330bb3aac1461045757806336568abe14610477578063491606581461049757600080fd5b80631a98b2e01461038c578063248a9ca3146103ac57806326e67a37146103ea5780632de113761461041757600080fd5b80631095b6d7116101d15780631095b6d7146102d3578063116191b6146102f3578063127124171461034c57806316c38b3c1461036c57600080fd5b8062bf2e801461020d57806301e336671461026157806301ffc9a71461028357806302d6e8b0146102b357600080fd5b3661020857005b600080fd5b34801561021957600080fd5b50600154610249907d010000000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561026d57600080fd5b5061028161027c366004612f5b565b61076f565b005b34801561028f57600080fd5b506102a361029e366004612f97565b6107aa565b6040519015158152602001610258565b3480156102bf57600080fd5b506102816102ce366004612fd9565b610843565b3480156102df57600080fd5b506102816102ee366004612f5b565b61090e565b3480156102ff57600080fd5b506103277f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610258565b34801561035857600080fd5b5061028161036736600461304e565b610a9d565b34801561037857600080fd5b50610281610387366004613077565b610b20565b34801561039857600080fd5b506102816103a73660046130dd565b610b45565b3480156103b857600080fd5b506103dc6103c73660046131b7565b60009081526020819052604090206001015490565b604051908152602001610258565b3480156103f657600080fd5b5061040a6104053660046131e4565b610c67565b60405161025891906131ff565b34801561042357600080fd5b506102a361043236600461304e565b610cee565b34801561044357600080fd5b50610281610452366004613246565b610dd3565b34801561046357600080fd5b506103dc61047236600461328a565b610dfd565b34801561048357600080fd5b50610281610492366004613246565b610f0f565b3480156104a357600080fd5b506102816104b2366004613300565b610f41565b3480156104c357600080fd5b506103dc6104d23660046133a4565b600460209081526000928352604080842090915290825290205481565b3480156104fb57600080fd5b5061028161050a3660046133ce565b611068565b34801561051b57600080fd5b5060015460ff166102a3565b34801561053357600080fd5b5061028161054236600461304e565b611152565b34801561055357600080fd5b506002546103279073ffffffffffffffffffffffffffffffffffffffff1681565b34801561058057600080fd5b5061059461058f366004613460565b6111f7565b604051610258919061359d565b3480156105ad57600080fd5b506102a36105bc366004613246565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6103dc6106003660046135b0565b61129c565b34801561061157600080fd5b506106256106203660046131e4565b6116dc565b6040516102589493929190613621565b34801561064157600080fd5b506103dc600081565b34801561065657600080fd5b506102816106653660046136a3565b611819565b34801561067657600080fd5b506102816106853660046136f7565b611a99565b34801561069657600080fd5b5060015461032790610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c857600080fd5b506102816106d736600461304e565b611b47565b3480156106e857600080fd5b506102816106f7366004613712565b611beb565b34801561070857600080fd5b50600154610736907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610258565b34801561075b57600080fd5b5061028161076a366004613246565b611c3c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561079981611c61565b6107a4848484611c6b565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061083d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561086d81611c61565b60005b828110156108cf573684848381811061088b5761088b613758565b60400291909101915050602081018035906006906000906108ac90856131e4565b63ffffffff16815260208101919091526040016000206003015550600101610870565b507fd6dac4a884ac5f80781f154f28ed88464b2097f6b866143bb77e46736572136a8383604051610901929190613787565b60405180910390a1505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561093881611c61565b73ffffffffffffffffffffffffffffffffffffffff841660009081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff166109b6576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610a2657600080fd5b505af1158015610a3a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b600154610100900473ffffffffffffffffffffffffffffffffffffffff163314610af3576040517f611136c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1d8160018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9b565b50565b6000610b2b81611c61565b8115610b3d57610b39611e12565b5050565b610b39611e91565b60008585604051610b579291906137db565b6040519081900381207f1876eed9000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631876eed990610be1908e908e908e908e908e9089908d908d908d90600401613834565b6020604051808303816000875af1158015610c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c249190613893565b610c5a576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b63ffffffff8116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610ce257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610cb35790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f93c430521711328044ae92d0f1f1286cf040bc4a382f1642bd89984e86630553602052604081205460ff1615610d4357506000919050565b6001547501000000000000000000000000000000000000000000900467ffffffffffffffff161580610db9575073ffffffffffffffffffffffffffffffffffffffff821660009081527f4ac82e3087b7dedf7f532cbc6915c722df8c1e31f1388c318a617b52760eaf8b602052604090205460ff165b15610dc657506001919050565b506000919050565b919050565b600082815260208190526040902060010154610dee81611c61565b610df88383611ef3565b505050565b6040805160808101825263ffffffff871680825267ffffffffffffffff871660208084019190915273ffffffffffffffffffffffffffffffffffffffff8088168486015260015461ffff7d01000000000000000000000000000000000000000000000000000000000082041660608601526000938452600690925284832094517ff0b81bb40000000000000000000000000000000000000000000000000000000081529294610100909204169163f0b81bb491610ec3918591908990899060040161399e565b602060405180830381865afa158015610ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f049190613a6e565b979650505050505050565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008282604051610f539291906137db565b6040519081900381207f5f6970c3000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635f6970c390610fd7908b908b908b908b908b908990600401613a87565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a9190613893565b611050576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61105e878787878787611fb9565b5050505050505050565b600061107381611c61565b60005b82811015611120573684848381811061109157611091613758565b606002919091019150506040810135600460006110b1602085018561304e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083602001602081019061110091906131e4565b63ffffffff16815260208101919091526040016000205550600101611076565b507f360a0efdea8fcc9a11ee20a2099e314ddcf49a941d66790cd4e5adea30faa0748383604051610901929190613ac8565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561117c81611c61565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b80516020818301810180516005825292820191909301209152805461121b906138b0565b80601f0160208091040260200160405190810160405280929190818152602001828054611247906138b0565b80156112945780601f1061126957610100808354040283529160200191611294565b820191906000526020600020905b81548152906001019060200180831161127757829003601f168201915b505050505081565b60006112ae60a085016080860161304e565b6112b781610cee565b6112ed576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113053361130060208901896131e4565b61203e565b60408051608081019091529091506000908061132460208a018a6131e4565b63ffffffff16815260200161133f60808a0160608b01613b36565b67ffffffffffffffff16815260200161135e60a08a0160808b0161304e565b73ffffffffffffffffffffffffffffffffffffffff1681526001547d010000000000000000000000000000000000000000000000000000000000900461ffff1660209182015290915060009060069082906113bb908b018b6131e4565b63ffffffff1663ffffffff1681526020019081526020016000206040518060800160405290816000820180546113f0906138b0565b80601f016020809104026020016040519081016040528092919081815260200182805461141c906138b0565b80156114695780601f1061143e57610100808354040283529160200191611469565b820191906000526020600020905b81548152906001019060200180831161144c57829003601f168201915b50505050508152602001600182018054611482906138b0565b80601f01602080910402602001604051908101604052809291908181526020018280546114ae906138b0565b80156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b5050509183525050600282015461ffff16602080830191909152600390920154604090910152909150600090611577908590611539908c018c613b51565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408c01356120d5565b6001546040517fd135ca93000000000000000000000000000000000000000000000000000000008152919250610100900473ffffffffffffffffffffffffffffffffffffffff169063d135ca93906115dd908690869086908e908e903390600401613bb6565b6020604051808303816000875af11580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613a6e565b825160208401516040517f1c92115f00000000000000000000000000000000000000000000000000000000815292985073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692631c92115f9261169e9290918690600401613cc9565b600060405180830381600087803b1580156116b857600080fd5b505af11580156116cc573d6000803e3d6000fd5b5050505050505050509392505050565b6006602052600090815260409020805481906116f7906138b0565b80601f0160208091040260200160405190810160405280929190818152602001828054611723906138b0565b80156117705780601f1061174557610100808354040283529160200191611770565b820191906000526020600020905b81548152906001019060200180831161175357829003601f168201915b505050505090806001018054611785906138b0565b80601f01602080910402602001604051908101604052809291908181526020018280546117b1906138b0565b80156117fe5780601f106117d3576101008083540402835291602001916117fe565b820191906000526020600020905b8154815290600101906020018083116117e157829003601f168201915b505050506002830154600390930154919261ffff1691905084565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561184381611c61565b60005b82811015611a67573684848381811061186157611861613758565b90506020028101906118739190613d0c565b905060056006600061188860208501856131e4565b63ffffffff1663ffffffff1681526020019081526020016000206000016040516118b29190613d4a565b908152602001604051809103902060006118cc9190612e3f565b6118d96040820182613b51565b60056118e86020850185613b51565b6040516118f69291906137db565b90815260200160405180910390209182611911929190613e26565b5060408051608081019091528061192b6020840184613b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016119726040840184613b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016119bc60808401606085016136f7565b61ffff16815260808301356020918201526006906000906119df908501856131e4565b63ffffffff168152602081019190915260400160002081518190611a039082613f40565b5060208201516001820190611a189082613f40565b5060408201516002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905560609091015160039091015550600101611846565b507f53ede267f8a00cf87be90c85641900454b96a922b10a82a0d5f5b4d93b16b38a83836040516109019291906140be565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611ac381611c61565b600180547fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d906020016111eb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611b7181611c61565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e0906020016111eb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611c1581611c61565b63ffffffff84166000908152600360205260409020611c35908484612e79565b5050505050565b600082815260208190526040902060010154611c5781611c61565b610df883836120ea565b610b1d81336121af565b73ffffffffffffffffffffffffffffffffffffffff8316611c9057610df88282612267565b610df883838361236d565b6040517ffaaebd2100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff84169063faaebd2190602401602060405180830381865afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190613a6e565b90508015610df8576040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063fd9be52290604401600060405180830381600087803b158015611da457600080fd5b505af1158015611db8573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8088168252861660208201529081018490527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb92506060019050610901565b611e1a6123db565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611e9961244a565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611e67565b505050505050505050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015611f50575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15611faf5760018054601590611f88907501000000000000000000000000000000000000000000900467ffffffffffffffff16614205565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610b3982826124b6565b61202c86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506125a692505050565b612036828261269c565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff851684529091529020548061083d576040517ff25127e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015263ffffffff831660248201526044015b60405180910390fd5b60606120e2848484612724565b949350505050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612146575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b156121a5576001805460159061217e907501000000000000000000000000000000000000000000900467ffffffffffffffff1661422c565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610b398282612753565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b39576121ed8161280a565b6121f8836020612829565b60405160200161220992919061426e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526120cc9160040161359d565b73ffffffffffffffffffffffffffffffffffffffff82166122b4576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461230e576040519150601f19603f3d011682016040523d82523d6000602084013e612313565b606091505b5050905080610df8576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016120cc565b73ffffffffffffffffffffffffffffffffffffffff82166123ba576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df873ffffffffffffffffffffffffffffffffffffffff84168383612a73565b60015460ff1615612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016120cc565b565b60015460ff16612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016120cc565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b395760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556125483390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006005836040516125b891906142ef565b908152602001604051809103902080546125d1906138b0565b80601f01602080910402602001604051908101604052809291908181526020018280546125fd906138b0565b801561264a5780601f1061261f5761010080835404028352916020019161264a565b820191906000526020600020905b81548152906001019060200180831161262d57829003601f168201915b505050505090508080519060200120828051906020012014610df85782826040517f5cc0c62a0000000000000000000000000000000000000000000000000000000081526004016120cc929190614301565b60008060006126ab8585612b00565b9250925092508273ffffffffffffffffffffffffffffffffffffffff16630223536e838367ffffffffffffffff6040518463ffffffff1660e01b81526004016126f69392919061432f565b600060405180830381600087803b15801561271057600080fd5b505af1158015611ee8573d6000803e3d6000fd5b606083828460405160200161273b93929190614362565b60405160208183030381529060405290509392505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610b395760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606061083d73ffffffffffffffffffffffffffffffffffffffff831660145b6060600061283883600261438f565b6128439060026143a6565b67ffffffffffffffff81111561285b5761285b613431565b6040519080825280601f01601f191660200182016040528015612885576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106128bc576128bc613758565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061291f5761291f613758565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061295b84600261438f565b6129669060016143a6565b90505b6001811115612a03577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106129a7576129a7613758565b1a60f81b8282815181106129bd576129bd613758565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936129fc816143b9565b9050612969565b508315612a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016120cc565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610df8908490612bcf565b6000606081612b11605160406143a6565b8414612b49576040517ff1d10e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b66612b5a6020600087896143ee565b612b6391614418565b90565b9250612b766040602086886143ee565b612b7f91614418565b9050612b8e84604081886143ee565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509598929750929550909350505050565b6000612c31826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612cde9092919063ffffffff16565b9050805160001480612c52575080806020019051810190612c529190613893565b610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016120cc565b60606120e28484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051612d1291906142ef565b60006040518083038185875af1925050503d8060008114612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b5091509150610f048783838760608315612df6578251600003612def5773ffffffffffffffffffffffffffffffffffffffff85163b612def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016120cc565b50816120e2565b6120e28383815115612e0b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc919061359d565b508054612e4b906138b0565b6000825580601f10612e5b575050565b601f016020900490600052602060002090810190610b1d9190612f22565b82805482825590600052602060002090601f01602090048101928215612f125791602002820160005b83821115612ee357833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302612ea2565b8015612f105782816101000a81549060ff0219169055600101602081600001049283019260010302612ee3565b505b50612f1e929150612f22565b5090565b5b80821115612f1e5760008155600101612f23565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dce57600080fd5b600080600060608486031215612f7057600080fd5b612f7984612f37565b9250612f8760208501612f37565b9150604084013590509250925092565b600060208284031215612fa957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612a6c57600080fd5b60008060208385031215612fec57600080fd5b823567ffffffffffffffff8082111561300457600080fd5b818501915085601f83011261301857600080fd5b81358181111561302757600080fd5b8660208260061b850101111561303c57600080fd5b60209290920196919550909350505050565b60006020828403121561306057600080fd5b612a6c82612f37565b8015158114610b1d57600080fd5b60006020828403121561308957600080fd5b8135612a6c81613069565b60008083601f8401126130a657600080fd5b50813567ffffffffffffffff8111156130be57600080fd5b6020830191508360208285010111156130d657600080fd5b9250929050565b60008060008060008060008060008060c08b8d0312156130fc57600080fd5b8a35995060208b013567ffffffffffffffff8082111561311b57600080fd5b6131278e838f01613094565b909b50995060408d013591508082111561314057600080fd5b61314c8e838f01613094565b909950975060608d013591508082111561316557600080fd5b6131718e838f01613094565b909750955060808d013591508082111561318a57600080fd5b506131978d828e01613094565b9150809450508092505060a08b013590509295989b9194979a5092959850565b6000602082840312156131c957600080fd5b5035919050565b803563ffffffff81168114610dce57600080fd5b6000602082840312156131f657600080fd5b612a6c826131d0565b6020808252825182820181905260009190848201906040850190845b8181101561323a57835160ff168352928401929184019160010161321b565b50909695505050505050565b6000806040838503121561325957600080fd5b8235915061326960208401612f37565b90509250929050565b803567ffffffffffffffff81168114610dce57600080fd5b6000806000806000608086880312156132a257600080fd5b6132ab866131d0565b94506132b960208701613272565b93506132c760408701612f37565b9250606086013567ffffffffffffffff8111156132e357600080fd5b6132ef88828901613094565b969995985093965092949392505050565b60008060008060008060006080888a03121561331b57600080fd5b87359650602088013567ffffffffffffffff8082111561333a57600080fd5b6133468b838c01613094565b909850965060408a013591508082111561335f57600080fd5b61336b8b838c01613094565b909650945060608a013591508082111561338457600080fd5b506133918a828b01613094565b989b979a50959850939692959293505050565b600080604083850312156133b757600080fd5b6133c083612f37565b9150613269602084016131d0565b600080602083850312156133e157600080fd5b823567ffffffffffffffff808211156133f957600080fd5b818501915085601f83011261340d57600080fd5b81358181111561341c57600080fd5b86602060608302850101111561303c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561347257600080fd5b813567ffffffffffffffff8082111561348a57600080fd5b818401915084601f83011261349e57600080fd5b8135818111156134b0576134b0613431565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156134f6576134f6613431565b8160405282815287602084870101111561350f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b8381101561354a578181015183820152602001613532565b50506000910152565b6000815180845261356b81602086016020860161352f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612a6c6020830184613553565b6000806000604084860312156135c557600080fd5b833567ffffffffffffffff808211156135dd57600080fd5b9085019060a082880312156135f157600080fd5b9093506020850135908082111561360757600080fd5b5061361486828701613094565b9497909650939450505050565b6080815260006136346080830187613553565b82810360208401526136468187613553565b61ffff95909516604084015250506060015292915050565b60008083601f84011261367057600080fd5b50813567ffffffffffffffff81111561368857600080fd5b6020830191508360208260051b85010111156130d657600080fd5b600080602083850312156136b657600080fd5b823567ffffffffffffffff8111156136cd57600080fd5b6136d98582860161365e565b90969095509350505050565b803561ffff81168114610dce57600080fd5b60006020828403121561370957600080fd5b612a6c826136e5565b60008060006040848603121561372757600080fd5b613730846131d0565b9250602084013567ffffffffffffffff81111561374c57600080fd5b6136148682870161365e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b878110156137ce5763ffffffff6137b3836131d0565b1683528185013585840152918301919083019060010161379d565b5090979650505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b89815260c06020820152600061384e60c083018a8c6137eb565b828103604084015261386181898b6137eb565b9050866060840152828103608084015261387c8186886137eb565b9150508260a08301529a9950505050505050505050565b6000602082840312156138a557600080fd5b8151612a6c81613069565b600181811c908216806138c457607f821691505b6020821081036138fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008154613910816138b0565b80855260206001838116801561392d576001811461396557613993565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550613993565b866000528260002060005b8581101561398b5781548a8201860152908301908401613970565b890184019650505b505050505092915050565b845163ffffffff16815260208086015167ffffffffffffffff169082015260408086015173ffffffffffffffffffffffffffffffffffffffff169082015260608086015161ffff169082015260c06080820152608060c08201526000613a08610140830186613903565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408382030160e0840152613a3f8160018801613903565b905061ffff600287015416610100840152600386015461012084015282810360a0840152610f048185876137eb565b600060208284031215613a8057600080fd5b5051919050565b868152608060208201526000613aa16080830187896137eb565b8281036040840152613ab48186886137eb565b915050826060830152979650505050505050565b6020808252818101839052600090604080840186845b878110156137ce5773ffffffffffffffffffffffffffffffffffffffff613b0483612f37565b16835263ffffffff613b178684016131d0565b1683860152818401358484015260609283019290910190600101613ade565b600060208284031215613b4857600080fd5b612a6c82613272565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b8657600080fd5b83018035915067ffffffffffffffff821115613ba157600080fd5b6020019150368190038213156130d657600080fd5b865163ffffffff16815260208088015167ffffffffffffffff169082015260408088015173ffffffffffffffffffffffffffffffffffffffff169082015260608088015161ffff169082015260006101008060808401528751608082850152613c23610180850182613553565b91505060208801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084830301610120850152613c608282613553565b91505061ffff604089015116610140840152606088015161016084015282810360a0840152613c8f8188613553565b905082810360c0840152613ca48186886137eb565b915050610f0460e083018473ffffffffffffffffffffffffffffffffffffffff169052565b606081526000613cdc6060830186613553565b8281036020840152613cee8186613553565b90508281036040840152613d028185613553565b9695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112613d4057600080fd5b9190910192915050565b6000808354613d58816138b0565b60018281168015613d705760018114613da357613dd2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450613dd2565b8760005260208060002060005b85811015613dc95781548a820152908401908201613db0565b50505082870194505b50929695505050505050565b601f821115610df8576000816000526020600020601f850160051c81016020861015613e075750805b601f850160051c820191505b8181101561203657828155600101613e13565b67ffffffffffffffff831115613e3e57613e3e613431565b613e5283613e4c83546138b0565b83613dde565b6000601f841160018114613ea45760008515613e6e5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611c35565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613ef35786850135825560209485019460019092019101613ed3565b5086821015613f2e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b815167ffffffffffffffff811115613f5a57613f5a613431565b613f6e81613f6884546138b0565b84613dde565b602080601f831160018114613fc15760008415613f8b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612036565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561400e57888601518255948401946001909101908401613fef565b508582101561404a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261408f57600080fd5b830160208101925035905067ffffffffffffffff8111156140af57600080fd5b8036038213156130d657600080fd5b60208082528181018390526000906040808401600586901b850182018785805b898110156141c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618c360301811261413e578283fd5b8b0160a063ffffffff614150836131d0565b16865261415f8983018361405a565b828b89015261417183890182846137eb565b925050506141818883018361405a565b8783038a8901526141938382846137eb565b92505050606061ffff6141a78285016136e5565b1690870152608091820135919095015293860193918601916001016140de565b50919998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614222576142226141d6565b6001019392505050565b600067ffffffffffffffff821680614246576142466141d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516142a681601785016020880161352f565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516142e381602884016020880161352f565b01602801949350505050565b60008251613d4081846020870161352f565b6040815260006143146040830185613553565b82810360208401526143268185613553565b95945050505050565b6060815260006143426060830186613553565b905083602083015267ffffffffffffffff83166040830152949350505050565b8381528260208201526000825161438081604085016020870161352f565b91909101604001949350505050565b808202811582820484141761083d5761083d6141d6565b8082018082111561083d5761083d6141d6565b6000816143c8576143c86141d6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600080858511156143fe57600080fd5b8386111561440b57600080fd5b5050820193919092039150565b8035602083101561083d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b169291505056fea264697066735822122049601e7575d86903bb731f91d4cc0ef49fe5c052bc43963dbb0df586471d80a464736f6c63430008160033",
1163
+ "deployedBytecode": "0x6080604052600436106102015760003560e01c80634cfa6d2c1161011d5780639e944965116100b0578063c416aa511161007f578063cd88b90311610064578063cd88b903146106dc578063d2ae2104146106fc578063d547741f1461074f57600080fd5b8063c416aa511461068a578063c7b2370b146106bc57600080fd5b80639e94496514610605578063a217fddf14610635578063af896a3b1461064a578063c358de0a1461066a57600080fd5b8063741bef1a116100ec578063741bef1a14610547578063790a72141461057457806391d14854146105a157806395d376d7146105f257600080fd5b80634cfa6d2c146104b757806351b6a0fd146104ef5780635c975abb1461050f578063724e78da1461052757600080fd5b80631a98b2e0116101955780632f2ff15d116101645780632f2ff15d1461043757806330bb3aac1461045757806336568abe14610477578063491606581461049757600080fd5b80631a98b2e01461038c578063248a9ca3146103ac57806326e67a37146103ea5780632de113761461041757600080fd5b80631095b6d7116101d15780631095b6d7146102d3578063116191b6146102f3578063127124171461034c57806316c38b3c1461036c57600080fd5b8062bf2e801461020d57806301e336671461026157806301ffc9a71461028357806302d6e8b0146102b357600080fd5b3661020857005b600080fd5b34801561021957600080fd5b50600154610249907d010000000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561026d57600080fd5b5061028161027c366004612f5b565b61076f565b005b34801561028f57600080fd5b506102a361029e366004612f97565b6107aa565b6040519015158152602001610258565b3480156102bf57600080fd5b506102816102ce366004612fd9565b610843565b3480156102df57600080fd5b506102816102ee366004612f5b565b61090e565b3480156102ff57600080fd5b506103277f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610258565b34801561035857600080fd5b5061028161036736600461304e565b610a9d565b34801561037857600080fd5b50610281610387366004613077565b610b20565b34801561039857600080fd5b506102816103a73660046130dd565b610b45565b3480156103b857600080fd5b506103dc6103c73660046131b7565b60009081526020819052604090206001015490565b604051908152602001610258565b3480156103f657600080fd5b5061040a6104053660046131e4565b610c67565b60405161025891906131ff565b34801561042357600080fd5b506102a361043236600461304e565b610cee565b34801561044357600080fd5b50610281610452366004613246565b610dd3565b34801561046357600080fd5b506103dc61047236600461328a565b610dfd565b34801561048357600080fd5b50610281610492366004613246565b610f0f565b3480156104a357600080fd5b506102816104b2366004613300565b610f41565b3480156104c357600080fd5b506103dc6104d23660046133a4565b600460209081526000928352604080842090915290825290205481565b3480156104fb57600080fd5b5061028161050a3660046133ce565b611068565b34801561051b57600080fd5b5060015460ff166102a3565b34801561053357600080fd5b5061028161054236600461304e565b611152565b34801561055357600080fd5b506002546103279073ffffffffffffffffffffffffffffffffffffffff1681565b34801561058057600080fd5b5061059461058f366004613460565b6111f7565b604051610258919061359d565b3480156105ad57600080fd5b506102a36105bc366004613246565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6103dc6106003660046135b0565b61129c565b34801561061157600080fd5b506106256106203660046131e4565b6116dc565b6040516102589493929190613621565b34801561064157600080fd5b506103dc600081565b34801561065657600080fd5b506102816106653660046136a3565b611819565b34801561067657600080fd5b506102816106853660046136f7565b611a99565b34801561069657600080fd5b5060015461032790610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c857600080fd5b506102816106d736600461304e565b611b47565b3480156106e857600080fd5b506102816106f7366004613712565b611beb565b34801561070857600080fd5b50600154610736907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610258565b34801561075b57600080fd5b5061028161076a366004613246565b611c3c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561079981611c61565b6107a4848484611c6b565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061083d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561086d81611c61565b60005b828110156108cf573684848381811061088b5761088b613758565b60400291909101915050602081018035906006906000906108ac90856131e4565b63ffffffff16815260208101919091526040016000206003015550600101610870565b507fd6dac4a884ac5f80781f154f28ed88464b2097f6b866143bb77e46736572136a8383604051610901929190613787565b60405180910390a1505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561093881611c61565b73ffffffffffffffffffffffffffffffffffffffff841660009081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff166109b6576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610a2657600080fd5b505af1158015610a3a573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b600154610100900473ffffffffffffffffffffffffffffffffffffffff163314610af3576040517f611136c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1d8160018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c9b565b50565b6000610b2b81611c61565b8115610b3d57610b39611e12565b5050565b610b39611e91565b60008585604051610b579291906137db565b6040519081900381207f1876eed9000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631876eed990610be1908e908e908e908e908e9089908d908d908d90600401613834565b6020604051808303816000875af1158015610c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c249190613893565b610c5a576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b63ffffffff8116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610ce257602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610cb35790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f93c430521711328044ae92d0f1f1286cf040bc4a382f1642bd89984e86630553602052604081205460ff1615610d4357506000919050565b6001547501000000000000000000000000000000000000000000900467ffffffffffffffff161580610db9575073ffffffffffffffffffffffffffffffffffffffff821660009081527f4ac82e3087b7dedf7f532cbc6915c722df8c1e31f1388c318a617b52760eaf8b602052604090205460ff165b15610dc657506001919050565b506000919050565b919050565b600082815260208190526040902060010154610dee81611c61565b610df88383611ef3565b505050565b6040805160808101825263ffffffff871680825267ffffffffffffffff871660208084019190915273ffffffffffffffffffffffffffffffffffffffff8088168486015260015461ffff7d01000000000000000000000000000000000000000000000000000000000082041660608601526000938452600690925284832094517ff0b81bb40000000000000000000000000000000000000000000000000000000081529294610100909204169163f0b81bb491610ec3918591908990899060040161399e565b602060405180830381865afa158015610ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f049190613a6e565b979650505050505050565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008282604051610f539291906137db565b6040519081900381207f5f6970c3000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635f6970c390610fd7908b908b908b908b908b908990600401613a87565b6020604051808303816000875af1158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a9190613893565b611050576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61105e878787878787611fb9565b5050505050505050565b600061107381611c61565b60005b82811015611120573684848381811061109157611091613758565b606002919091019150506040810135600460006110b1602085018561304e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083602001602081019061110091906131e4565b63ffffffff16815260208101919091526040016000205550600101611076565b507f360a0efdea8fcc9a11ee20a2099e314ddcf49a941d66790cd4e5adea30faa0748383604051610901929190613ac8565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561117c81611c61565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b80516020818301810180516005825292820191909301209152805461121b906138b0565b80601f0160208091040260200160405190810160405280929190818152602001828054611247906138b0565b80156112945780601f1061126957610100808354040283529160200191611294565b820191906000526020600020905b81548152906001019060200180831161127757829003601f168201915b505050505081565b60006112ae60a085016080860161304e565b6112b781610cee565b6112ed576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113053361130060208901896131e4565b61203e565b60408051608081019091529091506000908061132460208a018a6131e4565b63ffffffff16815260200161133f60808a0160608b01613b36565b67ffffffffffffffff16815260200161135e60a08a0160808b0161304e565b73ffffffffffffffffffffffffffffffffffffffff1681526001547d010000000000000000000000000000000000000000000000000000000000900461ffff1660209182015290915060009060069082906113bb908b018b6131e4565b63ffffffff1663ffffffff1681526020019081526020016000206040518060800160405290816000820180546113f0906138b0565b80601f016020809104026020016040519081016040528092919081815260200182805461141c906138b0565b80156114695780601f1061143e57610100808354040283529160200191611469565b820191906000526020600020905b81548152906001019060200180831161144c57829003601f168201915b50505050508152602001600182018054611482906138b0565b80601f01602080910402602001604051908101604052809291908181526020018280546114ae906138b0565b80156114fb5780601f106114d0576101008083540402835291602001916114fb565b820191906000526020600020905b8154815290600101906020018083116114de57829003601f168201915b5050509183525050600282015461ffff16602080830191909152600390920154604090910152909150600090611577908590611539908c018c613b51565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408c01356120d5565b6001546040517fd135ca93000000000000000000000000000000000000000000000000000000008152919250610100900473ffffffffffffffffffffffffffffffffffffffff169063d135ca93906115dd908690869086908e908e903390600401613bb6565b6020604051808303816000875af11580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613a6e565b825160208401516040517f1c92115f00000000000000000000000000000000000000000000000000000000815292985073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692631c92115f9261169e9290918690600401613cc9565b600060405180830381600087803b1580156116b857600080fd5b505af11580156116cc573d6000803e3d6000fd5b5050505050505050509392505050565b6006602052600090815260409020805481906116f7906138b0565b80601f0160208091040260200160405190810160405280929190818152602001828054611723906138b0565b80156117705780601f1061174557610100808354040283529160200191611770565b820191906000526020600020905b81548152906001019060200180831161175357829003601f168201915b505050505090806001018054611785906138b0565b80601f01602080910402602001604051908101604052809291908181526020018280546117b1906138b0565b80156117fe5780601f106117d3576101008083540402835291602001916117fe565b820191906000526020600020905b8154815290600101906020018083116117e157829003601f168201915b505050506002830154600390930154919261ffff1691905084565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561184381611c61565b60005b82811015611a67573684848381811061186157611861613758565b90506020028101906118739190613d0c565b905060056006600061188860208501856131e4565b63ffffffff1663ffffffff1681526020019081526020016000206000016040516118b29190613d4a565b908152602001604051809103902060006118cc9190612e3f565b6118d96040820182613b51565b60056118e86020850185613b51565b6040516118f69291906137db565b90815260200160405180910390209182611911929190613e26565b5060408051608081019091528061192b6020840184613b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016119726040840184613b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016119bc60808401606085016136f7565b61ffff16815260808301356020918201526006906000906119df908501856131e4565b63ffffffff168152602081019190915260400160002081518190611a039082613f40565b5060208201516001820190611a189082613f40565b5060408201516002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905560609091015160039091015550600101611846565b507f53ede267f8a00cf87be90c85641900454b96a922b10a82a0d5f5b4d93b16b38a83836040516109019291906140be565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611ac381611c61565b600180547fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d906020016111eb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611b7181611c61565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e0906020016111eb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611c1581611c61565b63ffffffff84166000908152600360205260409020611c35908484612e79565b5050505050565b600082815260208190526040902060010154611c5781611c61565b610df883836120ea565b610b1d81336121af565b73ffffffffffffffffffffffffffffffffffffffff8316611c9057610df88282612267565b610df883838361236d565b6040517ffaaebd2100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff84169063faaebd2190602401602060405180830381865afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190613a6e565b90508015610df8576040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063fd9be52290604401600060405180830381600087803b158015611da457600080fd5b505af1158015611db8573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8088168252861660208201529081018490527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb92506060019050610901565b611e1a6123db565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611e9961244a565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611e67565b505050505050505050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015611f50575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15611faf5760018054601590611f88907501000000000000000000000000000000000000000000900467ffffffffffffffff16614205565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610b3982826124b6565b61202c86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506125a692505050565b612036828261269c565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff851684529091529020548061083d576040517ff25127e600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015263ffffffff831660248201526044015b60405180910390fd5b60606120e2848484612724565b949350505050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612146575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b156121a5576001805460159061217e907501000000000000000000000000000000000000000000900467ffffffffffffffff1661422c565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610b398282612753565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b39576121ed8161280a565b6121f8836020612829565b60405160200161220992919061426e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526120cc9160040161359d565b73ffffffffffffffffffffffffffffffffffffffff82166122b4576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461230e576040519150601f19603f3d011682016040523d82523d6000602084013e612313565b606091505b5050905080610df8576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016120cc565b73ffffffffffffffffffffffffffffffffffffffff82166123ba576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df873ffffffffffffffffffffffffffffffffffffffff84168383612a73565b60015460ff1615612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016120cc565b565b60015460ff16612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016120cc565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610b395760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556125483390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006005836040516125b891906142ef565b908152602001604051809103902080546125d1906138b0565b80601f01602080910402602001604051908101604052809291908181526020018280546125fd906138b0565b801561264a5780601f1061261f5761010080835404028352916020019161264a565b820191906000526020600020905b81548152906001019060200180831161262d57829003601f168201915b505050505090508080519060200120828051906020012014610df85782826040517f5cc0c62a0000000000000000000000000000000000000000000000000000000081526004016120cc929190614301565b60008060006126ab8585612b00565b9250925092508273ffffffffffffffffffffffffffffffffffffffff16630223536e838367ffffffffffffffff6040518463ffffffff1660e01b81526004016126f69392919061432f565b600060405180830381600087803b15801561271057600080fd5b505af1158015611ee8573d6000803e3d6000fd5b606083828460405160200161273b93929190614362565b60405160208183030381529060405290509392505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610b395760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606061083d73ffffffffffffffffffffffffffffffffffffffff831660145b6060600061283883600261438f565b6128439060026143a6565b67ffffffffffffffff81111561285b5761285b613431565b6040519080825280601f01601f191660200182016040528015612885576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106128bc576128bc613758565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061291f5761291f613758565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061295b84600261438f565b6129669060016143a6565b90505b6001811115612a03577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106129a7576129a7613758565b1a60f81b8282815181106129bd576129bd613758565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936129fc816143b9565b9050612969565b508315612a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016120cc565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610df8908490612bcf565b6000606081612b11605160406143a6565b8414612b49576040517ff1d10e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b66612b5a6020600087896143ee565b612b6391614418565b90565b9250612b766040602086886143ee565b612b7f91614418565b9050612b8e84604081886143ee565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509598929750929550909350505050565b6000612c31826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612cde9092919063ffffffff16565b9050805160001480612c52575080806020019051810190612c529190613893565b610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016120cc565b60606120e28484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051612d1291906142ef565b60006040518083038185875af1925050503d8060008114612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b5091509150610f048783838760608315612df6578251600003612def5773ffffffffffffffffffffffffffffffffffffffff85163b612def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016120cc565b50816120e2565b6120e28383815115612e0b5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc919061359d565b508054612e4b906138b0565b6000825580601f10612e5b575050565b601f016020900490600052602060002090810190610b1d9190612f22565b82805482825590600052602060002090601f01602090048101928215612f125791602002820160005b83821115612ee357833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302612ea2565b8015612f105782816101000a81549060ff0219169055600101602081600001049283019260010302612ee3565b505b50612f1e929150612f22565b5090565b5b80821115612f1e5760008155600101612f23565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dce57600080fd5b600080600060608486031215612f7057600080fd5b612f7984612f37565b9250612f8760208501612f37565b9150604084013590509250925092565b600060208284031215612fa957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612a6c57600080fd5b60008060208385031215612fec57600080fd5b823567ffffffffffffffff8082111561300457600080fd5b818501915085601f83011261301857600080fd5b81358181111561302757600080fd5b8660208260061b850101111561303c57600080fd5b60209290920196919550909350505050565b60006020828403121561306057600080fd5b612a6c82612f37565b8015158114610b1d57600080fd5b60006020828403121561308957600080fd5b8135612a6c81613069565b60008083601f8401126130a657600080fd5b50813567ffffffffffffffff8111156130be57600080fd5b6020830191508360208285010111156130d657600080fd5b9250929050565b60008060008060008060008060008060c08b8d0312156130fc57600080fd5b8a35995060208b013567ffffffffffffffff8082111561311b57600080fd5b6131278e838f01613094565b909b50995060408d013591508082111561314057600080fd5b61314c8e838f01613094565b909950975060608d013591508082111561316557600080fd5b6131718e838f01613094565b909750955060808d013591508082111561318a57600080fd5b506131978d828e01613094565b9150809450508092505060a08b013590509295989b9194979a5092959850565b6000602082840312156131c957600080fd5b5035919050565b803563ffffffff81168114610dce57600080fd5b6000602082840312156131f657600080fd5b612a6c826131d0565b6020808252825182820181905260009190848201906040850190845b8181101561323a57835160ff168352928401929184019160010161321b565b50909695505050505050565b6000806040838503121561325957600080fd5b8235915061326960208401612f37565b90509250929050565b803567ffffffffffffffff81168114610dce57600080fd5b6000806000806000608086880312156132a257600080fd5b6132ab866131d0565b94506132b960208701613272565b93506132c760408701612f37565b9250606086013567ffffffffffffffff8111156132e357600080fd5b6132ef88828901613094565b969995985093965092949392505050565b60008060008060008060006080888a03121561331b57600080fd5b87359650602088013567ffffffffffffffff8082111561333a57600080fd5b6133468b838c01613094565b909850965060408a013591508082111561335f57600080fd5b61336b8b838c01613094565b909650945060608a013591508082111561338457600080fd5b506133918a828b01613094565b989b979a50959850939692959293505050565b600080604083850312156133b757600080fd5b6133c083612f37565b9150613269602084016131d0565b600080602083850312156133e157600080fd5b823567ffffffffffffffff808211156133f957600080fd5b818501915085601f83011261340d57600080fd5b81358181111561341c57600080fd5b86602060608302850101111561303c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561347257600080fd5b813567ffffffffffffffff8082111561348a57600080fd5b818401915084601f83011261349e57600080fd5b8135818111156134b0576134b0613431565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156134f6576134f6613431565b8160405282815287602084870101111561350f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b8381101561354a578181015183820152602001613532565b50506000910152565b6000815180845261356b81602086016020860161352f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612a6c6020830184613553565b6000806000604084860312156135c557600080fd5b833567ffffffffffffffff808211156135dd57600080fd5b9085019060a082880312156135f157600080fd5b9093506020850135908082111561360757600080fd5b5061361486828701613094565b9497909650939450505050565b6080815260006136346080830187613553565b82810360208401526136468187613553565b61ffff95909516604084015250506060015292915050565b60008083601f84011261367057600080fd5b50813567ffffffffffffffff81111561368857600080fd5b6020830191508360208260051b85010111156130d657600080fd5b600080602083850312156136b657600080fd5b823567ffffffffffffffff8111156136cd57600080fd5b6136d98582860161365e565b90969095509350505050565b803561ffff81168114610dce57600080fd5b60006020828403121561370957600080fd5b612a6c826136e5565b60008060006040848603121561372757600080fd5b613730846131d0565b9250602084013567ffffffffffffffff81111561374c57600080fd5b6136148682870161365e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b878110156137ce5763ffffffff6137b3836131d0565b1683528185013585840152918301919083019060010161379d565b5090979650505050505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b89815260c06020820152600061384e60c083018a8c6137eb565b828103604084015261386181898b6137eb565b9050866060840152828103608084015261387c8186886137eb565b9150508260a08301529a9950505050505050505050565b6000602082840312156138a557600080fd5b8151612a6c81613069565b600181811c908216806138c457607f821691505b6020821081036138fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008154613910816138b0565b80855260206001838116801561392d576001811461396557613993565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550613993565b866000528260002060005b8581101561398b5781548a8201860152908301908401613970565b890184019650505b505050505092915050565b845163ffffffff16815260208086015167ffffffffffffffff169082015260408086015173ffffffffffffffffffffffffffffffffffffffff169082015260608086015161ffff169082015260c06080820152608060c08201526000613a08610140830186613903565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408382030160e0840152613a3f8160018801613903565b905061ffff600287015416610100840152600386015461012084015282810360a0840152610f048185876137eb565b600060208284031215613a8057600080fd5b5051919050565b868152608060208201526000613aa16080830187896137eb565b8281036040840152613ab48186886137eb565b915050826060830152979650505050505050565b6020808252818101839052600090604080840186845b878110156137ce5773ffffffffffffffffffffffffffffffffffffffff613b0483612f37565b16835263ffffffff613b178684016131d0565b1683860152818401358484015260609283019290910190600101613ade565b600060208284031215613b4857600080fd5b612a6c82613272565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613b8657600080fd5b83018035915067ffffffffffffffff821115613ba157600080fd5b6020019150368190038213156130d657600080fd5b865163ffffffff16815260208088015167ffffffffffffffff169082015260408088015173ffffffffffffffffffffffffffffffffffffffff169082015260608088015161ffff169082015260006101008060808401528751608082850152613c23610180850182613553565b91505060208801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084830301610120850152613c608282613553565b91505061ffff604089015116610140840152606088015161016084015282810360a0840152613c8f8188613553565b905082810360c0840152613ca48186886137eb565b915050610f0460e083018473ffffffffffffffffffffffffffffffffffffffff169052565b606081526000613cdc6060830186613553565b8281036020840152613cee8186613553565b90508281036040840152613d028185613553565b9695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112613d4057600080fd5b9190910192915050565b6000808354613d58816138b0565b60018281168015613d705760018114613da357613dd2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450613dd2565b8760005260208060002060005b85811015613dc95781548a820152908401908201613db0565b50505082870194505b50929695505050505050565b601f821115610df8576000816000526020600020601f850160051c81016020861015613e075750805b601f850160051c820191505b8181101561203657828155600101613e13565b67ffffffffffffffff831115613e3e57613e3e613431565b613e5283613e4c83546138b0565b83613dde565b6000601f841160018114613ea45760008515613e6e5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611c35565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613ef35786850135825560209485019460019092019101613ed3565b5086821015613f2e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b815167ffffffffffffffff811115613f5a57613f5a613431565b613f6e81613f6884546138b0565b84613dde565b602080601f831160018114613fc15760008415613f8b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612036565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561400e57888601518255948401946001909101908401613fef565b508582101561404a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261408f57600080fd5b830160208101925035905067ffffffffffffffff8111156140af57600080fd5b8036038213156130d657600080fd5b60208082528181018390526000906040808401600586901b850182018785805b898110156141c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618c360301811261413e578283fd5b8b0160a063ffffffff614150836131d0565b16865261415f8983018361405a565b828b89015261417183890182846137eb565b925050506141818883018361405a565b8783038a8901526141938382846137eb565b92505050606061ffff6141a78285016136e5565b1690870152608091820135919095015293860193918601916001016140de565b50919998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614222576142226141d6565b6001019392505050565b600067ffffffffffffffff821680614246576142466141d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516142a681601785016020880161352f565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516142e381602884016020880161352f565b01602801949350505050565b60008251613d4081846020870161352f565b6040815260006143146040830185613553565b82810360208401526143268185613553565b95945050505050565b6060815260006143426060830186613553565b905083602083015267ffffffffffffffff83166040830152949350505050565b8381528260208201526000825161438081604085016020870161352f565b91909101604001949350505050565b808202811582820484141761083d5761083d6141d6565b8082018082111561083d5761083d6141d6565b6000816143c8576143c86141d6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600080858511156143fe57600080fd5b8386111561440b57600080fd5b5050820193919092039150565b8035602083101561083d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b169291505056fea264697066735822122049601e7575d86903bb731f91d4cc0ef49fe5c052bc43963dbb0df586471d80a464736f6c63430008160033",
802
1164
  "linkReferences": {},
803
1165
  "deployedLinkReferences": {}
804
1166
  }