@layerzerolabs/protocol-v2-oapp-evm-contracts 1.2.96 → 1.2.98

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/README.md +1 -1
  2. package/artifacts/contracts/oapp/OApp.sol/OApp.json +383 -0
  3. package/artifacts/contracts/oapp/OAppCore.sol/OAppCore.json +200 -0
  4. package/artifacts/contracts/oapp/OAppRead.sol/OAppRead.json +401 -0
  5. package/artifacts/contracts/oapp/OAppReceiver.sol/OAppReceiver.json +367 -0
  6. package/artifacts/contracts/oapp/OAppSender.sol/OAppSender.json +216 -0
  7. package/artifacts/contracts/oapp/examples/CmdCodecV1Mock.sol/CmdCodecV1Mock.json +278 -0
  8. package/artifacts/contracts/oapp/examples/LzReadCounter.sol/LzReadCounter.json +843 -0
  9. package/artifacts/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +925 -0
  10. package/artifacts/contracts/oapp/examples/OmniCounterAbstract.sol/MsgCodec.json +10 -0
  11. package/artifacts/contracts/oapp/examples/OmniCounterAbstract.sol/OmniCounterAbstract.json +909 -0
  12. package/artifacts/contracts/oapp/examples/OmniCounterAlt.sol/OmniCounterAlt.json +948 -0
  13. package/artifacts/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +368 -0
  14. package/artifacts/contracts/oapp/interfaces/IOAppComposer.sol/IOAppComposer.json +44 -0
  15. package/artifacts/contracts/oapp/interfaces/IOAppComputer.sol/IOAppComputer.json +59 -0
  16. package/artifacts/contracts/oapp/interfaces/IOAppComputerMap.sol/IOAppComputerMap.json +35 -0
  17. package/artifacts/contracts/oapp/interfaces/IOAppComputerReduce.sol/IOAppComputerReduce.json +35 -0
  18. package/artifacts/contracts/oapp/interfaces/IOAppCore.sol/IOAppCore.json +148 -0
  19. package/artifacts/contracts/oapp/interfaces/IOAppMsgInspector.sol/IOAppMsgInspector.json +51 -0
  20. package/artifacts/contracts/oapp/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +111 -0
  21. package/artifacts/contracts/oapp/interfaces/IOAppReceiver.sol/IOAppReceiver.json +167 -0
  22. package/artifacts/contracts/oapp/libs/OAppOptionsType3.sol/OAppOptionsType3.json +187 -0
  23. package/artifacts/contracts/oapp/libs/OptionsBuilder.sol/OptionsBuilder.json +38 -0
  24. package/artifacts/contracts/oapp/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +21 -0
  25. package/artifacts/contracts/oapp/utils/RateLimiter.sol/RateLimiter.json +104 -0
  26. package/artifacts/contracts/oft/OFT.sol/OFT.json +1514 -0
  27. package/artifacts/contracts/oft/OFTAdapter.sol/OFTAdapter.json +1244 -0
  28. package/artifacts/contracts/oft/OFTCore.sol/OFTCore.json +1244 -0
  29. package/artifacts/contracts/oft/interfaces/IOFT.sol/IOFT.json +456 -0
  30. package/artifacts/contracts/oft/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  31. package/artifacts/contracts/oft/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  32. package/artifacts/contracts/precrime/OAppPreCrimeSimulator.sol/OAppPreCrimeSimulator.json +277 -0
  33. package/artifacts/contracts/precrime/PreCrime.sol/PreCrime.json +352 -0
  34. package/artifacts/contracts/precrime/extensions/PreCrimeE1.sol/PreCrimeE1.json +352 -0
  35. package/artifacts/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json +175 -0
  36. package/artifacts/contracts/precrime/interfaces/IPreCrime.sol/IPreCrime.json +188 -0
  37. package/artifacts/contracts/precrime/libs/Packet.sol/PacketDecoder.json +10 -0
  38. package/artifacts-tron/contracts/oapp/OApp.sol/OApp.json +383 -0
  39. package/artifacts-tron/contracts/oapp/OAppCore.sol/OAppCore.json +200 -0
  40. package/artifacts-tron/contracts/oapp/OAppRead.sol/OAppRead.json +401 -0
  41. package/artifacts-tron/contracts/oapp/OAppReceiver.sol/OAppReceiver.json +367 -0
  42. package/artifacts-tron/contracts/oapp/OAppSender.sol/OAppSender.json +216 -0
  43. package/artifacts-tron/contracts/oapp/examples/CmdCodecV1Mock.sol/CmdCodecV1Mock.json +278 -0
  44. package/artifacts-tron/contracts/oapp/examples/LzReadCounter.sol/LzReadCounter.json +843 -0
  45. package/artifacts-tron/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +925 -0
  46. package/artifacts-tron/contracts/oapp/examples/OmniCounterAbstract.sol/MsgCodec.json +10 -0
  47. package/artifacts-tron/contracts/oapp/examples/OmniCounterAbstract.sol/OmniCounterAbstract.json +909 -0
  48. package/artifacts-tron/contracts/oapp/examples/OmniCounterAlt.sol/OmniCounterAlt.json +948 -0
  49. package/artifacts-tron/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +368 -0
  50. package/artifacts-tron/contracts/oapp/interfaces/IOAppComposer.sol/IOAppComposer.json +44 -0
  51. package/artifacts-tron/contracts/oapp/interfaces/IOAppComputer.sol/IOAppComputer.json +59 -0
  52. package/artifacts-tron/contracts/oapp/interfaces/IOAppComputerMap.sol/IOAppComputerMap.json +35 -0
  53. package/artifacts-tron/contracts/oapp/interfaces/IOAppComputerReduce.sol/IOAppComputerReduce.json +35 -0
  54. package/artifacts-tron/contracts/oapp/interfaces/IOAppCore.sol/IOAppCore.json +148 -0
  55. package/artifacts-tron/contracts/oapp/interfaces/IOAppMsgInspector.sol/IOAppMsgInspector.json +51 -0
  56. package/artifacts-tron/contracts/oapp/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +111 -0
  57. package/artifacts-tron/contracts/oapp/interfaces/IOAppReceiver.sol/IOAppReceiver.json +167 -0
  58. package/artifacts-tron/contracts/oapp/libs/OAppOptionsType3.sol/OAppOptionsType3.json +187 -0
  59. package/artifacts-tron/contracts/oapp/libs/OptionsBuilder.sol/OptionsBuilder.json +38 -0
  60. package/artifacts-tron/contracts/oapp/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +21 -0
  61. package/artifacts-tron/contracts/oapp/utils/RateLimiter.sol/RateLimiter.json +104 -0
  62. package/artifacts-tron/contracts/oft/OFT.sol/OFT.json +1514 -0
  63. package/artifacts-tron/contracts/oft/OFTAdapter.sol/OFTAdapter.json +1244 -0
  64. package/artifacts-tron/contracts/oft/OFTCore.sol/OFTCore.json +1244 -0
  65. package/artifacts-tron/contracts/oft/interfaces/IOFT.sol/IOFT.json +456 -0
  66. package/artifacts-tron/contracts/oft/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  67. package/artifacts-tron/contracts/oft/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  68. package/artifacts-tron/contracts/precrime/OAppPreCrimeSimulator.sol/OAppPreCrimeSimulator.json +277 -0
  69. package/artifacts-tron/contracts/precrime/PreCrime.sol/PreCrime.json +352 -0
  70. package/artifacts-tron/contracts/precrime/extensions/PreCrimeE1.sol/PreCrimeE1.json +352 -0
  71. package/artifacts-tron/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json +175 -0
  72. package/artifacts-tron/contracts/precrime/interfaces/IPreCrime.sol/IPreCrime.json +188 -0
  73. package/artifacts-tron/contracts/precrime/libs/Packet.sol/PacketDecoder.json +10 -0
  74. package/artifacts-zk/contracts/oapp/OApp.sol/OApp.json +384 -0
  75. package/artifacts-zk/contracts/oapp/OAppCore.sol/OAppCore.json +201 -0
  76. package/artifacts-zk/contracts/oapp/OAppRead.sol/OAppRead.json +402 -0
  77. package/artifacts-zk/contracts/oapp/OAppReceiver.sol/OAppReceiver.json +368 -0
  78. package/artifacts-zk/contracts/oapp/OAppSender.sol/OAppSender.json +217 -0
  79. package/artifacts-zk/contracts/oapp/examples/CmdCodecV1Mock.sol/CmdCodecV1Mock.json +279 -0
  80. package/artifacts-zk/contracts/oapp/examples/LzReadCounter.sol/LzReadCounter.json +844 -0
  81. package/artifacts-zk/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +926 -0
  82. package/artifacts-zk/contracts/oapp/examples/OmniCounterAbstract.sol/MsgCodec.json +11 -0
  83. package/artifacts-zk/contracts/oapp/examples/OmniCounterAbstract.sol/OmniCounterAbstract.json +910 -0
  84. package/artifacts-zk/contracts/oapp/examples/OmniCounterAlt.sol/OmniCounterAlt.json +949 -0
  85. package/artifacts-zk/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +369 -0
  86. package/artifacts-zk/contracts/oapp/interfaces/IOAppComposer.sol/IOAppComposer.json +45 -0
  87. package/artifacts-zk/contracts/oapp/interfaces/IOAppComputer.sol/IOAppComputer.json +60 -0
  88. package/artifacts-zk/contracts/oapp/interfaces/IOAppComputerMap.sol/IOAppComputerMap.json +36 -0
  89. package/artifacts-zk/contracts/oapp/interfaces/IOAppComputerReduce.sol/IOAppComputerReduce.json +36 -0
  90. package/artifacts-zk/contracts/oapp/interfaces/IOAppCore.sol/IOAppCore.json +149 -0
  91. package/artifacts-zk/contracts/oapp/interfaces/IOAppMsgInspector.sol/IOAppMsgInspector.json +52 -0
  92. package/artifacts-zk/contracts/oapp/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +112 -0
  93. package/artifacts-zk/contracts/oapp/interfaces/IOAppReceiver.sol/IOAppReceiver.json +168 -0
  94. package/artifacts-zk/contracts/oapp/libs/OAppOptionsType3.sol/OAppOptionsType3.json +188 -0
  95. package/artifacts-zk/contracts/oapp/libs/OptionsBuilder.sol/OptionsBuilder.json +39 -0
  96. package/artifacts-zk/contracts/oapp/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +22 -0
  97. package/artifacts-zk/contracts/oapp/utils/RateLimiter.sol/RateLimiter.json +105 -0
  98. package/artifacts-zk/contracts/oft/OFT.sol/OFT.json +1515 -0
  99. package/artifacts-zk/contracts/oft/OFTAdapter.sol/OFTAdapter.json +1245 -0
  100. package/artifacts-zk/contracts/oft/OFTCore.sol/OFTCore.json +1245 -0
  101. package/artifacts-zk/contracts/oft/interfaces/IOFT.sol/IOFT.json +457 -0
  102. package/artifacts-zk/contracts/oft/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +11 -0
  103. package/artifacts-zk/contracts/oft/libs/OFTMsgCodec.sol/OFTMsgCodec.json +11 -0
  104. package/artifacts-zk/contracts/precrime/OAppPreCrimeSimulator.sol/OAppPreCrimeSimulator.json +278 -0
  105. package/artifacts-zk/contracts/precrime/PreCrime.sol/PreCrime.json +353 -0
  106. package/artifacts-zk/contracts/precrime/extensions/PreCrimeE1.sol/PreCrimeE1.json +353 -0
  107. package/artifacts-zk/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json +176 -0
  108. package/artifacts-zk/contracts/precrime/interfaces/IPreCrime.sol/IPreCrime.json +189 -0
  109. package/artifacts-zk/contracts/precrime/libs/Packet.sol/PacketDecoder.json +11 -0
  110. package/package.json +7 -7
@@ -0,0 +1,948 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "OmniCounterAlt",
4
+ "sourceName": "contracts/oapp/examples/OmniCounterAlt.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_endpoint",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_delegate",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "InvalidDelegate",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "InvalidEndpointCall",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [
34
+ {
35
+ "internalType": "uint16",
36
+ "name": "optionType",
37
+ "type": "uint16"
38
+ }
39
+ ],
40
+ "name": "InvalidOptionType",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "LzTokenUnavailable",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [
50
+ {
51
+ "internalType": "uint32",
52
+ "name": "eid",
53
+ "type": "uint32"
54
+ }
55
+ ],
56
+ "name": "NoPeer",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [
61
+ {
62
+ "internalType": "uint256",
63
+ "name": "msgValue",
64
+ "type": "uint256"
65
+ }
66
+ ],
67
+ "name": "NotEnoughNative",
68
+ "type": "error"
69
+ },
70
+ {
71
+ "inputs": [],
72
+ "name": "OmniCounterAlt_NotAnAltEndpoint",
73
+ "type": "error"
74
+ },
75
+ {
76
+ "inputs": [],
77
+ "name": "OmniCounterAlt_OnlyAltToken",
78
+ "type": "error"
79
+ },
80
+ {
81
+ "inputs": [
82
+ {
83
+ "internalType": "address",
84
+ "name": "addr",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "OnlyEndpoint",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [
93
+ {
94
+ "internalType": "uint32",
95
+ "name": "eid",
96
+ "type": "uint32"
97
+ },
98
+ {
99
+ "internalType": "bytes32",
100
+ "name": "sender",
101
+ "type": "bytes32"
102
+ }
103
+ ],
104
+ "name": "OnlyPeer",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [],
109
+ "name": "OnlySelf",
110
+ "type": "error"
111
+ },
112
+ {
113
+ "inputs": [
114
+ {
115
+ "internalType": "bytes",
116
+ "name": "result",
117
+ "type": "bytes"
118
+ }
119
+ ],
120
+ "name": "SimulationResult",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "anonymous": false,
125
+ "inputs": [
126
+ {
127
+ "indexed": true,
128
+ "internalType": "address",
129
+ "name": "previousOwner",
130
+ "type": "address"
131
+ },
132
+ {
133
+ "indexed": true,
134
+ "internalType": "address",
135
+ "name": "newOwner",
136
+ "type": "address"
137
+ }
138
+ ],
139
+ "name": "OwnershipTransferred",
140
+ "type": "event"
141
+ },
142
+ {
143
+ "anonymous": false,
144
+ "inputs": [
145
+ {
146
+ "indexed": false,
147
+ "internalType": "uint32",
148
+ "name": "eid",
149
+ "type": "uint32"
150
+ },
151
+ {
152
+ "indexed": false,
153
+ "internalType": "bytes32",
154
+ "name": "peer",
155
+ "type": "bytes32"
156
+ }
157
+ ],
158
+ "name": "PeerSet",
159
+ "type": "event"
160
+ },
161
+ {
162
+ "anonymous": false,
163
+ "inputs": [
164
+ {
165
+ "indexed": false,
166
+ "internalType": "address",
167
+ "name": "preCrimeAddress",
168
+ "type": "address"
169
+ }
170
+ ],
171
+ "name": "PreCrimeSet",
172
+ "type": "event"
173
+ },
174
+ {
175
+ "stateMutability": "payable",
176
+ "type": "fallback"
177
+ },
178
+ {
179
+ "inputs": [],
180
+ "name": "admin",
181
+ "outputs": [
182
+ {
183
+ "internalType": "address",
184
+ "name": "",
185
+ "type": "address"
186
+ }
187
+ ],
188
+ "stateMutability": "view",
189
+ "type": "function"
190
+ },
191
+ {
192
+ "inputs": [
193
+ {
194
+ "components": [
195
+ {
196
+ "internalType": "uint32",
197
+ "name": "srcEid",
198
+ "type": "uint32"
199
+ },
200
+ {
201
+ "internalType": "bytes32",
202
+ "name": "sender",
203
+ "type": "bytes32"
204
+ },
205
+ {
206
+ "internalType": "uint64",
207
+ "name": "nonce",
208
+ "type": "uint64"
209
+ }
210
+ ],
211
+ "internalType": "struct Origin",
212
+ "name": "origin",
213
+ "type": "tuple"
214
+ }
215
+ ],
216
+ "name": "allowInitializePath",
217
+ "outputs": [
218
+ {
219
+ "internalType": "bool",
220
+ "name": "",
221
+ "type": "bool"
222
+ }
223
+ ],
224
+ "stateMutability": "view",
225
+ "type": "function"
226
+ },
227
+ {
228
+ "inputs": [
229
+ {
230
+ "internalType": "uint32[]",
231
+ "name": "_eids",
232
+ "type": "uint32[]"
233
+ },
234
+ {
235
+ "internalType": "uint8[]",
236
+ "name": "_types",
237
+ "type": "uint8[]"
238
+ },
239
+ {
240
+ "internalType": "bytes[]",
241
+ "name": "_options",
242
+ "type": "bytes[]"
243
+ }
244
+ ],
245
+ "name": "batchIncrement",
246
+ "outputs": [],
247
+ "stateMutability": "payable",
248
+ "type": "function"
249
+ },
250
+ {
251
+ "inputs": [
252
+ {
253
+ "internalType": "uint32",
254
+ "name": "_eid",
255
+ "type": "uint32"
256
+ },
257
+ {
258
+ "internalType": "uint8",
259
+ "name": "_type",
260
+ "type": "uint8"
261
+ },
262
+ {
263
+ "internalType": "bytes",
264
+ "name": "_options",
265
+ "type": "bytes"
266
+ }
267
+ ],
268
+ "name": "brokenIncrement",
269
+ "outputs": [],
270
+ "stateMutability": "payable",
271
+ "type": "function"
272
+ },
273
+ {
274
+ "inputs": [],
275
+ "name": "composedCount",
276
+ "outputs": [
277
+ {
278
+ "internalType": "uint256",
279
+ "name": "",
280
+ "type": "uint256"
281
+ }
282
+ ],
283
+ "stateMutability": "view",
284
+ "type": "function"
285
+ },
286
+ {
287
+ "inputs": [],
288
+ "name": "count",
289
+ "outputs": [
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "",
293
+ "type": "uint256"
294
+ }
295
+ ],
296
+ "stateMutability": "view",
297
+ "type": "function"
298
+ },
299
+ {
300
+ "inputs": [],
301
+ "name": "eid",
302
+ "outputs": [
303
+ {
304
+ "internalType": "uint32",
305
+ "name": "",
306
+ "type": "uint32"
307
+ }
308
+ ],
309
+ "stateMutability": "view",
310
+ "type": "function"
311
+ },
312
+ {
313
+ "inputs": [],
314
+ "name": "endpoint",
315
+ "outputs": [
316
+ {
317
+ "internalType": "contract ILayerZeroEndpointV2",
318
+ "name": "",
319
+ "type": "address"
320
+ }
321
+ ],
322
+ "stateMutability": "view",
323
+ "type": "function"
324
+ },
325
+ {
326
+ "inputs": [],
327
+ "name": "feeToken",
328
+ "outputs": [
329
+ {
330
+ "internalType": "address",
331
+ "name": "",
332
+ "type": "address"
333
+ }
334
+ ],
335
+ "stateMutability": "view",
336
+ "type": "function"
337
+ },
338
+ {
339
+ "inputs": [
340
+ {
341
+ "internalType": "uint32",
342
+ "name": "srcEid",
343
+ "type": "uint32"
344
+ }
345
+ ],
346
+ "name": "inboundCount",
347
+ "outputs": [
348
+ {
349
+ "internalType": "uint256",
350
+ "name": "count",
351
+ "type": "uint256"
352
+ }
353
+ ],
354
+ "stateMutability": "view",
355
+ "type": "function"
356
+ },
357
+ {
358
+ "inputs": [
359
+ {
360
+ "internalType": "uint32",
361
+ "name": "_eid",
362
+ "type": "uint32"
363
+ },
364
+ {
365
+ "internalType": "uint8",
366
+ "name": "_type",
367
+ "type": "uint8"
368
+ },
369
+ {
370
+ "internalType": "bytes",
371
+ "name": "_options",
372
+ "type": "bytes"
373
+ }
374
+ ],
375
+ "name": "increment",
376
+ "outputs": [],
377
+ "stateMutability": "payable",
378
+ "type": "function"
379
+ },
380
+ {
381
+ "inputs": [
382
+ {
383
+ "components": [
384
+ {
385
+ "internalType": "uint32",
386
+ "name": "srcEid",
387
+ "type": "uint32"
388
+ },
389
+ {
390
+ "internalType": "bytes32",
391
+ "name": "sender",
392
+ "type": "bytes32"
393
+ },
394
+ {
395
+ "internalType": "uint64",
396
+ "name": "nonce",
397
+ "type": "uint64"
398
+ }
399
+ ],
400
+ "internalType": "struct Origin",
401
+ "name": "",
402
+ "type": "tuple"
403
+ },
404
+ {
405
+ "internalType": "bytes",
406
+ "name": "",
407
+ "type": "bytes"
408
+ },
409
+ {
410
+ "internalType": "address",
411
+ "name": "_sender",
412
+ "type": "address"
413
+ }
414
+ ],
415
+ "name": "isComposeMsgSender",
416
+ "outputs": [
417
+ {
418
+ "internalType": "bool",
419
+ "name": "",
420
+ "type": "bool"
421
+ }
422
+ ],
423
+ "stateMutability": "view",
424
+ "type": "function"
425
+ },
426
+ {
427
+ "inputs": [
428
+ {
429
+ "internalType": "uint32",
430
+ "name": "_eid",
431
+ "type": "uint32"
432
+ },
433
+ {
434
+ "internalType": "bytes32",
435
+ "name": "_peer",
436
+ "type": "bytes32"
437
+ }
438
+ ],
439
+ "name": "isPeer",
440
+ "outputs": [
441
+ {
442
+ "internalType": "bool",
443
+ "name": "",
444
+ "type": "bool"
445
+ }
446
+ ],
447
+ "stateMutability": "view",
448
+ "type": "function"
449
+ },
450
+ {
451
+ "inputs": [
452
+ {
453
+ "internalType": "address",
454
+ "name": "_oApp",
455
+ "type": "address"
456
+ },
457
+ {
458
+ "internalType": "bytes32",
459
+ "name": "",
460
+ "type": "bytes32"
461
+ },
462
+ {
463
+ "internalType": "bytes",
464
+ "name": "_message",
465
+ "type": "bytes"
466
+ },
467
+ {
468
+ "internalType": "address",
469
+ "name": "",
470
+ "type": "address"
471
+ },
472
+ {
473
+ "internalType": "bytes",
474
+ "name": "",
475
+ "type": "bytes"
476
+ }
477
+ ],
478
+ "name": "lzCompose",
479
+ "outputs": [],
480
+ "stateMutability": "payable",
481
+ "type": "function"
482
+ },
483
+ {
484
+ "inputs": [
485
+ {
486
+ "components": [
487
+ {
488
+ "internalType": "uint32",
489
+ "name": "srcEid",
490
+ "type": "uint32"
491
+ },
492
+ {
493
+ "internalType": "bytes32",
494
+ "name": "sender",
495
+ "type": "bytes32"
496
+ },
497
+ {
498
+ "internalType": "uint64",
499
+ "name": "nonce",
500
+ "type": "uint64"
501
+ }
502
+ ],
503
+ "internalType": "struct Origin",
504
+ "name": "_origin",
505
+ "type": "tuple"
506
+ },
507
+ {
508
+ "internalType": "bytes32",
509
+ "name": "_guid",
510
+ "type": "bytes32"
511
+ },
512
+ {
513
+ "internalType": "bytes",
514
+ "name": "_message",
515
+ "type": "bytes"
516
+ },
517
+ {
518
+ "internalType": "address",
519
+ "name": "_executor",
520
+ "type": "address"
521
+ },
522
+ {
523
+ "internalType": "bytes",
524
+ "name": "_extraData",
525
+ "type": "bytes"
526
+ }
527
+ ],
528
+ "name": "lzReceive",
529
+ "outputs": [],
530
+ "stateMutability": "payable",
531
+ "type": "function"
532
+ },
533
+ {
534
+ "inputs": [
535
+ {
536
+ "components": [
537
+ {
538
+ "components": [
539
+ {
540
+ "internalType": "uint32",
541
+ "name": "srcEid",
542
+ "type": "uint32"
543
+ },
544
+ {
545
+ "internalType": "bytes32",
546
+ "name": "sender",
547
+ "type": "bytes32"
548
+ },
549
+ {
550
+ "internalType": "uint64",
551
+ "name": "nonce",
552
+ "type": "uint64"
553
+ }
554
+ ],
555
+ "internalType": "struct Origin",
556
+ "name": "origin",
557
+ "type": "tuple"
558
+ },
559
+ {
560
+ "internalType": "uint32",
561
+ "name": "dstEid",
562
+ "type": "uint32"
563
+ },
564
+ {
565
+ "internalType": "address",
566
+ "name": "receiver",
567
+ "type": "address"
568
+ },
569
+ {
570
+ "internalType": "bytes32",
571
+ "name": "guid",
572
+ "type": "bytes32"
573
+ },
574
+ {
575
+ "internalType": "uint256",
576
+ "name": "value",
577
+ "type": "uint256"
578
+ },
579
+ {
580
+ "internalType": "address",
581
+ "name": "executor",
582
+ "type": "address"
583
+ },
584
+ {
585
+ "internalType": "bytes",
586
+ "name": "message",
587
+ "type": "bytes"
588
+ },
589
+ {
590
+ "internalType": "bytes",
591
+ "name": "extraData",
592
+ "type": "bytes"
593
+ }
594
+ ],
595
+ "internalType": "struct InboundPacket[]",
596
+ "name": "_packets",
597
+ "type": "tuple[]"
598
+ }
599
+ ],
600
+ "name": "lzReceiveAndRevert",
601
+ "outputs": [],
602
+ "stateMutability": "payable",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [
607
+ {
608
+ "components": [
609
+ {
610
+ "internalType": "uint32",
611
+ "name": "srcEid",
612
+ "type": "uint32"
613
+ },
614
+ {
615
+ "internalType": "bytes32",
616
+ "name": "sender",
617
+ "type": "bytes32"
618
+ },
619
+ {
620
+ "internalType": "uint64",
621
+ "name": "nonce",
622
+ "type": "uint64"
623
+ }
624
+ ],
625
+ "internalType": "struct Origin",
626
+ "name": "_origin",
627
+ "type": "tuple"
628
+ },
629
+ {
630
+ "internalType": "bytes32",
631
+ "name": "_guid",
632
+ "type": "bytes32"
633
+ },
634
+ {
635
+ "internalType": "bytes",
636
+ "name": "_message",
637
+ "type": "bytes"
638
+ },
639
+ {
640
+ "internalType": "address",
641
+ "name": "_executor",
642
+ "type": "address"
643
+ },
644
+ {
645
+ "internalType": "bytes",
646
+ "name": "_extraData",
647
+ "type": "bytes"
648
+ }
649
+ ],
650
+ "name": "lzReceiveSimulate",
651
+ "outputs": [],
652
+ "stateMutability": "payable",
653
+ "type": "function"
654
+ },
655
+ {
656
+ "inputs": [
657
+ {
658
+ "internalType": "uint32",
659
+ "name": "_srcEid",
660
+ "type": "uint32"
661
+ },
662
+ {
663
+ "internalType": "bytes32",
664
+ "name": "_sender",
665
+ "type": "bytes32"
666
+ }
667
+ ],
668
+ "name": "nextNonce",
669
+ "outputs": [
670
+ {
671
+ "internalType": "uint64",
672
+ "name": "",
673
+ "type": "uint64"
674
+ }
675
+ ],
676
+ "stateMutability": "view",
677
+ "type": "function"
678
+ },
679
+ {
680
+ "inputs": [],
681
+ "name": "oApp",
682
+ "outputs": [
683
+ {
684
+ "internalType": "address",
685
+ "name": "",
686
+ "type": "address"
687
+ }
688
+ ],
689
+ "stateMutability": "view",
690
+ "type": "function"
691
+ },
692
+ {
693
+ "inputs": [],
694
+ "name": "oAppVersion",
695
+ "outputs": [
696
+ {
697
+ "internalType": "uint64",
698
+ "name": "senderVersion",
699
+ "type": "uint64"
700
+ },
701
+ {
702
+ "internalType": "uint64",
703
+ "name": "receiverVersion",
704
+ "type": "uint64"
705
+ }
706
+ ],
707
+ "stateMutability": "pure",
708
+ "type": "function"
709
+ },
710
+ {
711
+ "inputs": [
712
+ {
713
+ "internalType": "uint32",
714
+ "name": "dstEid",
715
+ "type": "uint32"
716
+ }
717
+ ],
718
+ "name": "outboundCount",
719
+ "outputs": [
720
+ {
721
+ "internalType": "uint256",
722
+ "name": "count",
723
+ "type": "uint256"
724
+ }
725
+ ],
726
+ "stateMutability": "view",
727
+ "type": "function"
728
+ },
729
+ {
730
+ "inputs": [],
731
+ "name": "owner",
732
+ "outputs": [
733
+ {
734
+ "internalType": "address",
735
+ "name": "",
736
+ "type": "address"
737
+ }
738
+ ],
739
+ "stateMutability": "view",
740
+ "type": "function"
741
+ },
742
+ {
743
+ "inputs": [
744
+ {
745
+ "internalType": "uint32",
746
+ "name": "eid",
747
+ "type": "uint32"
748
+ }
749
+ ],
750
+ "name": "peers",
751
+ "outputs": [
752
+ {
753
+ "internalType": "bytes32",
754
+ "name": "peer",
755
+ "type": "bytes32"
756
+ }
757
+ ],
758
+ "stateMutability": "view",
759
+ "type": "function"
760
+ },
761
+ {
762
+ "inputs": [],
763
+ "name": "preCrime",
764
+ "outputs": [
765
+ {
766
+ "internalType": "address",
767
+ "name": "",
768
+ "type": "address"
769
+ }
770
+ ],
771
+ "stateMutability": "view",
772
+ "type": "function"
773
+ },
774
+ {
775
+ "inputs": [
776
+ {
777
+ "internalType": "uint32",
778
+ "name": "_eid",
779
+ "type": "uint32"
780
+ },
781
+ {
782
+ "internalType": "uint8",
783
+ "name": "_type",
784
+ "type": "uint8"
785
+ },
786
+ {
787
+ "internalType": "bytes",
788
+ "name": "_options",
789
+ "type": "bytes"
790
+ }
791
+ ],
792
+ "name": "quote",
793
+ "outputs": [
794
+ {
795
+ "internalType": "uint256",
796
+ "name": "nativeFee",
797
+ "type": "uint256"
798
+ },
799
+ {
800
+ "internalType": "uint256",
801
+ "name": "lzTokenFee",
802
+ "type": "uint256"
803
+ }
804
+ ],
805
+ "stateMutability": "view",
806
+ "type": "function"
807
+ },
808
+ {
809
+ "inputs": [],
810
+ "name": "renounceOwnership",
811
+ "outputs": [],
812
+ "stateMutability": "nonpayable",
813
+ "type": "function"
814
+ },
815
+ {
816
+ "inputs": [
817
+ {
818
+ "internalType": "address",
819
+ "name": "_admin",
820
+ "type": "address"
821
+ }
822
+ ],
823
+ "name": "setAdmin",
824
+ "outputs": [],
825
+ "stateMutability": "nonpayable",
826
+ "type": "function"
827
+ },
828
+ {
829
+ "inputs": [
830
+ {
831
+ "internalType": "address",
832
+ "name": "_delegate",
833
+ "type": "address"
834
+ }
835
+ ],
836
+ "name": "setDelegate",
837
+ "outputs": [],
838
+ "stateMutability": "nonpayable",
839
+ "type": "function"
840
+ },
841
+ {
842
+ "inputs": [
843
+ {
844
+ "internalType": "bool",
845
+ "name": "_orderedNonce",
846
+ "type": "bool"
847
+ }
848
+ ],
849
+ "name": "setOrderedNonce",
850
+ "outputs": [],
851
+ "stateMutability": "nonpayable",
852
+ "type": "function"
853
+ },
854
+ {
855
+ "inputs": [
856
+ {
857
+ "internalType": "uint32",
858
+ "name": "_eid",
859
+ "type": "uint32"
860
+ },
861
+ {
862
+ "internalType": "bytes32",
863
+ "name": "_peer",
864
+ "type": "bytes32"
865
+ }
866
+ ],
867
+ "name": "setPeer",
868
+ "outputs": [],
869
+ "stateMutability": "nonpayable",
870
+ "type": "function"
871
+ },
872
+ {
873
+ "inputs": [
874
+ {
875
+ "internalType": "address",
876
+ "name": "_preCrime",
877
+ "type": "address"
878
+ }
879
+ ],
880
+ "name": "setPreCrime",
881
+ "outputs": [],
882
+ "stateMutability": "nonpayable",
883
+ "type": "function"
884
+ },
885
+ {
886
+ "inputs": [
887
+ {
888
+ "internalType": "uint32",
889
+ "name": "_srcEid",
890
+ "type": "uint32"
891
+ },
892
+ {
893
+ "internalType": "bytes32",
894
+ "name": "_sender",
895
+ "type": "bytes32"
896
+ },
897
+ {
898
+ "internalType": "uint64",
899
+ "name": "_nonce",
900
+ "type": "uint64"
901
+ }
902
+ ],
903
+ "name": "skipInboundNonce",
904
+ "outputs": [],
905
+ "stateMutability": "nonpayable",
906
+ "type": "function"
907
+ },
908
+ {
909
+ "inputs": [
910
+ {
911
+ "internalType": "address",
912
+ "name": "newOwner",
913
+ "type": "address"
914
+ }
915
+ ],
916
+ "name": "transferOwnership",
917
+ "outputs": [],
918
+ "stateMutability": "nonpayable",
919
+ "type": "function"
920
+ },
921
+ {
922
+ "inputs": [
923
+ {
924
+ "internalType": "address payable",
925
+ "name": "_to",
926
+ "type": "address"
927
+ },
928
+ {
929
+ "internalType": "uint256",
930
+ "name": "_amount",
931
+ "type": "uint256"
932
+ }
933
+ ],
934
+ "name": "withdraw",
935
+ "outputs": [],
936
+ "stateMutability": "nonpayable",
937
+ "type": "function"
938
+ },
939
+ {
940
+ "stateMutability": "payable",
941
+ "type": "receive"
942
+ }
943
+ ],
944
+ "bytecode": "0x60c06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b5060405162003cf138038062003cf18339810160408190526200005091620002a7565b81818181818162000061336200022d565b6001600160a01b0380831660805281166200008f57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000d757600080fd5b505af1158015620000ec573d6000803e3d6000fd5b5050600580546001600160a01b0319163317905550506040805163416ecebf60e01b815290516001600160a01b038816955063416ecebf9450600480830194506020935090918290030181865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001729190620002df565b600560146101000a81548163ffffffff021916908363ffffffff1602179055505050816001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f991906200030e565b6001600160a01b031660a0819052620002255760405163ccbcb5cd60e01b815260040160405180910390fd5b50506200032c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516000906001600160a81b03811681146200029857600080fd5b6001600160a01b031692915050565b60008060408385031215620002bb57600080fd5b620002c6836200027d565b9150620002d6602084016200027d565b90509250929050565b600060208284031215620002f257600080fd5b815163ffffffff811681146200030757600080fd5b9392505050565b6000602082840312156200032157600080fd5b62000307826200027d565b60805160a051613936620003bb600039600081816105d5015281816118ed015281816124b6015261251c01526000818161054001528181610a1301528181610e8b0152818161132e0152818161146501528181611b2001528181611e5501528181611f6001528181612476015281816124d80152818161253f01528181612570015261266901526139366000f3fe60806040526004361061021d5760003560e01c80637d25a05e1161011d578063ca5eb5e1116100b0578063d42438851161007f578063f3fef3a311610064578063f3fef3a314610956578063f851a44014610990578063ff7bd03d146109d757610254565b8063d4243885146108e2578063f2fde38b1461091c57610254565b8063ca5eb5e114610833578063d045a0dc1461086d578063d0a1026014610880578063d22446ce1461089357610254565b8063b7abbb5d116100ec578063b7abbb5d146107b3578063bb0b6a53146107c6578063bd815db01461080d578063c95c55be1461082057610254565b80637d25a05e1461069a57806382413eac146106ed5780638da5cb5b14610727578063b731ea0a1461076c57610254565b806356a47289116101b0578063622f17f61161017f578063704b6c0211610164578063704b6c02146105f75780637112f86f14610631578063715018a61461066b57610254565b8063622f17f614610562578063647846a5146105a957610254565b806356a47289146104495780635a0dfe4d146104905780635b849af6146104da5780635e280f111461051457610254565b80633400288b116101ec5780633400288b1461034a578063416ecebf1461038457806352ae2879146103e8578063542e7b561461043657610254565b806306661abd1461028657806313137d65146102c957806317442b70146102de578063257f4e051461031a57610254565b36610254576040517f9d6cd06800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9d6cd06800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561029257600080fd5b50d3801561029f57600080fd5b50d280156102ac57600080fd5b506102b660035481565b6040519081526020015b60405180910390f35b6102dc6102d7366004612c4b565b610a11565b005b3480156102ea57600080fd5b50d380156102f757600080fd5b50d2801561030457600080fd5b50604080516001815260026020820152016102c0565b34801561032657600080fd5b50d3801561033357600080fd5b50d2801561034057600080fd5b506102b660045481565b34801561035657600080fd5b50d3801561036357600080fd5b50d2801561037057600080fd5b506102dc61037f366004612d1b565b610b10565b34801561039057600080fd5b50d3801561039d57600080fd5b50d280156103aa57600080fd5b506005546103d39074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016102c0565b3480156103f457600080fd5b50d3801561040157600080fd5b50d2801561040e57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102c0565b6102dc610444366004612d8a565b610b26565b34801561045557600080fd5b50d3801561046257600080fd5b50d2801561046f57600080fd5b506102b661047e366004612e24565b60086020526000908152604090205481565b34801561049c57600080fd5b50d380156104a957600080fd5b50d280156104b657600080fd5b506104ca6104c5366004612d1b565b610d12565b60405190151581526020016102c0565b3480156104e657600080fd5b50d380156104f357600080fd5b50d2801561050057600080fd5b506102dc61050f366004612e4d565b610d31565b34801561052057600080fd5b50d3801561052d57600080fd5b50d2801561053a57600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b34801561056e57600080fd5b50d3801561057b57600080fd5b50d2801561058857600080fd5b506102b6610597366004612e24565b60096020526000908152604090205481565b3480156105b557600080fd5b50d380156105c257600080fd5b50d280156105cf57600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b34801561060357600080fd5b50d3801561061057600080fd5b50d2801561061d57600080fd5b506102dc61062c366004612e6a565b610d6a565b34801561063d57600080fd5b50d3801561064a57600080fd5b50d2801561065757600080fd5b506102dc610666366004612eba565b610e32565b34801561067757600080fd5b50d3801561068457600080fd5b50d2801561069157600080fd5b506102dc610f6c565b3480156106a657600080fd5b50d380156106b357600080fd5b50d280156106c057600080fd5b506106d46106cf366004612d1b565b610f80565b60405167ffffffffffffffff90911681526020016102c0565b3480156106f957600080fd5b50d3801561070657600080fd5b50d2801561071357600080fd5b506104ca610722366004612efa565b610fd3565b34801561073357600080fd5b50d3801561074057600080fd5b50d2801561074d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610411565b34801561077857600080fd5b50d3801561078557600080fd5b50d2801561079257600080fd5b506002546104119073ffffffffffffffffffffffffffffffffffffffff1681565b6102dc6107c1366004612f8a565b610ff5565b3480156107d257600080fd5b50d380156107df57600080fd5b50d280156107ec57600080fd5b506102b66107fb366004612e24565b60016020526000908152604090205481565b6102dc61081b366004612feb565b611078565b6102dc61082e366004612f8a565b611239565b34801561083f57600080fd5b50d3801561084c57600080fd5b50d2801561085957600080fd5b506102dc610868366004612e6a565b6112e1565b6102dc61087b366004612c4b565b611386565b6102dc61088e36600461302d565b6113ce565b34801561089f57600080fd5b50d380156108ac57600080fd5b50d280156108b957600080fd5b506108cd6108c8366004612f8a565b6116a3565b604080519283526020830191909152016102c0565b3480156108ee57600080fd5b50d380156108fb57600080fd5b50d2801561090857600080fd5b506102dc610917366004612e6a565b61171a565b34801561092857600080fd5b50d3801561093557600080fd5b50d2801561094257600080fd5b506102dc610951366004612e6a565b61179b565b34801561096257600080fd5b50d3801561096f57600080fd5b50d2801561097c57600080fd5b506102dc61098b3660046130d7565b611852565b34801561099c57600080fd5b50d380156109a957600080fd5b50d280156109b657600080fd5b506005546104119073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109e357600080fd5b50d380156109f057600080fd5b50d280156109fd57600080fd5b506104ca610a0c366004613119565b611914565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610a87576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610aa190610a9c908a612e24565b61194a565b14610af857610ab36020880188612e24565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610a7e565b610b078787878787878761199f565b50505050505050565b610b18611cf0565b610b228282611d71565b5050565b8481148015610b3457508483145b610b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d61746368000000006044820152606401610a7e565b60005b85811015610b07576000878783818110610bb957610bb9613135565b9050602002016020810190610bce9190612e24565b90506000610c22878785818110610be757610be7613135565b9050602002016020810190610bfc9190613164565b60055474010000000000000000000000000000000000000000900463ffffffff16611dc6565b90506000610c898383888888818110610c3d57610c3d613135565b9050602002810190610c4f919061317f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e3f915050565b9050610cf28383888888818110610ca257610ca2613135565b9050602002810190610cb4919061317f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250339150611f2d9050565b50610cfc83612045565b5050508080610d0a90613213565b915050610b9d565b63ffffffff821660009081526001602052604090205481145b92915050565b610d39611cf0565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610a7e565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e3a611cf0565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b505060075460ff16159150610f6790505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610f3f8361324b565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610f74611cf0565b610f7e600061206e565b565b60075460009060ff1615610fcb5763ffffffff83166000908152600660209081526040808320858452909152902054610fc49067ffffffffffffffff166001613272565b9050610d2b565b506000610d2b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b6110688461101585600560149054906101000a900463ffffffff16611dc6565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051808201909152348152602081019190915292503391506120e39050565b5061107284612045565b50505050565b60005b81811015611174573683838381811061109657611096613135565b90506020028101906110a8919061329a565b90506110c46110ba6020830183612e24565b6020830135610d12565b6110ce5750611162565b3063d045a0dc60c08301358360a08101356110ed61010083018361317f565b6110fe610100890160e08a01612e6a565b61110c6101208a018a61317f565b6040518963ffffffff1660e01b815260040161112e9796959493929190613321565b6000604051808303818588803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b5050505050505b8061116c81613213565b91505061107b565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112069190810190613408565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401610a7e9190613512565b60055473ffffffffffffffffffffffffffffffffffffffff1633146112ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610a7e565b6112da8461101585600560149054906101000a900463ffffffff16611dc6565b5050505050565b6112e9611cf0565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561137257600080fd5b505af11580156112da573d6000803e3d6000fd5b3330146113bf576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0787878787878787610af8565b73ffffffffffffffffffffffffffffffffffffffff8716301461144d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f4170700000000000000000000000000000000000000000000000000000006044820152606401610a7e565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e7400000000000000000000000000000000000000000000006044820152606401610a7e565b60006114f8868661210f565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff821601611542576001600460008282546115379190613525565b909155506116999050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8216016116375760016004600082825461157f9190613525565b90915550600090506115918787612131565b905061159c81612045565b60006115ef62030d4060006115e8604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190612154565b905061162f826116126001600560149054906101000a900463ffffffff16611dc6565b8360405180604001604052803481526020016000815250306120e3565b505050611699565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d65737361676520747970650000000000000000000000006044820152606401610a7e565b5050505050505050565b6000806000611704876116c888600560149054906101000a900463ffffffff16611dc6565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e3f915050565b8051602090910151909890975095505050505050565b611722611cf0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6117a3611cf0565b73ffffffffffffffffffffffffffffffffffffffff8116611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a7e565b61184f8161206e565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1633146118d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610a7e565b610b2273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683836121d5565b600060208201803590600190839061192c9086612e24565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610d2b576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610a7e565b6119c96119af6020890189612e24565b60208901356119c460608b0160408c01613538565b6122a9565b60006119d5868661210f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821601611aa35760038054906000611a1183613213565b9190505550611a2086866123df565b341015611a89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c7565006044820152606401610a7e565b611a9e611a9960208a018a612e24565b6123fe565b611699565b60ff811660021480611ab8575060ff81166004145b15611b955760038054906000611acd83613213565b90915550611ae39050611a9960208a018a612e24565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611b5e9030908b906000908c908c90600401613555565b600060405180830381600087803b158015611b7857600080fd5b505af1158015611b8c573d6000803e3d6000fd5b50505050611699565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff8216016116375760038054906000611bcf83613213565b90915550611be59050611a9960208a018a612e24565b611bfa611bf560208a018a612e24565b612045565b6000611c4662030d40600a6115e8604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9050611ce9611c5860208b018b612e24565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611612565b5050611699565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7e565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611eaf8961194a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611ee4929190613595565b6040805180830381865afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613688565b95945050505050565b611f35612b7f565b6000611f44846000015161241f565b602085015190915015611f5e57611f5e846020015161256c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611fbb8c61194a565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ff7929190613595565b60806040518083038185885af1158015612015573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203a91906136a4565b979650505050505050565b63ffffffff8116600090815260096020526040812080549161206683613213565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6120eb612b7f565b60006121008787876000886020015111611e3f565b905061203a8787878487611f2d565b600061211e600182848661370c565b61212791613736565b60f81c9392505050565b600061214160056001848661370c565b61214a9161377e565b60e01c9392505050565b606083600361216482600061268e565b61ffff16146121b15761217881600061268e565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610a7e565b60006121bd858561270e565b90506121cb866001836127ae565b9695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610f679084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612819565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615612369576122ed816001613272565b67ffffffffffffffff168267ffffffffffffffff1614612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e6365000000000000000000000000006044820152606401610a7e565b8067ffffffffffffffff168267ffffffffffffffff1611156110725763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b60006123ee826005818661370c565b6123f7916137c4565b9392505050565b63ffffffff8116600090815260086020526040812080549161206683613213565b60003415612459576040517f9d6cd06800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156125645773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303612502576124fd73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846121d5565b612564565b61256473ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016337f000000000000000000000000000000000000000000000000000000000000000085612928565b506000919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fd9190613800565b905073ffffffffffffffffffffffffffffffffffffffff811661264c576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2273ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085612928565b600061269b826002613525565b83511015612705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610a7e565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561277757604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b166030820152016040516020818303038152906040526123f7565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611e28565b60608360036127be82600061268e565b61ffff16146127d25761217881600061268e565b8460016127df8551612986565b6127ea90600161381d565b8686604051602001612800959493929190613838565b6040516020818303038152906040529150509392505050565b600061287b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a1e9092919063ffffffff16565b905080516000148061289c57508080602001905181019061289c91906138d1565b610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a7e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110729085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612227565b600061ffff821115612a1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610a7e565b5090565b6060610fed8484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a5291906138ee565b60006040518083038185875af1925050503d8060008114612a8f576040519150601f19603f3d011682016040523d82523d6000602084013e612a94565b606091505b509150915061203a8783838760608315612b36578251600003612b2f5773ffffffffffffffffffffffffffffffffffffffff85163b612b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a7e565b5081610fed565b610fed8383815115612b4b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e9190613512565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612bc2604051806040016040528060008152602001600081525090565b905290565b600060608284031215612bd957600080fd5b50919050565b60008083601f840112612bf157600080fd5b50813567ffffffffffffffff811115612c0957600080fd5b602083019150836020828501011115612c2157600080fd5b9250929050565b74ffffffffffffffffffffffffffffffffffffffffff8116811461184f57600080fd5b600080600080600080600060e0888a031215612c6657600080fd5b612c708989612bc7565b965060608801359550608088013567ffffffffffffffff80821115612c9457600080fd5b612ca08b838c01612bdf565b909750955060a08a01359150612cb582612c28565b73ffffffffffffffffffffffffffffffffffffffff8216945060c08a0135915080821115612ce257600080fd5b50612cef8a828b01612bdf565b989b979a50959850939692959293505050565b803563ffffffff81168114612d1657600080fd5b919050565b60008060408385031215612d2e57600080fd5b612d3783612d02565b946020939093013593505050565b60008083601f840112612d5757600080fd5b50813567ffffffffffffffff811115612d6f57600080fd5b6020830191508360208260051b8501011115612c2157600080fd5b60008060008060008060608789031215612da357600080fd5b863567ffffffffffffffff80821115612dbb57600080fd5b612dc78a838b01612d45565b90985096506020890135915080821115612de057600080fd5b612dec8a838b01612d45565b90965094506040890135915080821115612e0557600080fd5b50612e1289828a01612d45565b979a9699509497509295939492505050565b600060208284031215612e3657600080fd5b6123f782612d02565b801515811461184f57600080fd5b600060208284031215612e5f57600080fd5b81356123f781612e3f565b600060208284031215612e7c57600080fd5b8135612e8781612c28565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b67ffffffffffffffff8116811461184f57600080fd5b600080600060608486031215612ecf57600080fd5b612ed884612d02565b9250602084013591506040840135612eef81612ea4565b809150509250925092565b60008060008060a08587031215612f1057600080fd5b612f1a8686612bc7565b9350606085013567ffffffffffffffff811115612f3657600080fd5b612f4287828801612bdf565b9094509250506080850135612f5681612c28565b73ffffffffffffffffffffffffffffffffffffffff811691505092959194509250565b803560ff81168114612d1657600080fd5b60008060008060608587031215612fa057600080fd5b612fa985612d02565b9350612fb760208601612f79565b9250604085013567ffffffffffffffff811115612fd357600080fd5b612fdf87828801612bdf565b95989497509550505050565b60008060208385031215612ffe57600080fd5b823567ffffffffffffffff81111561301557600080fd5b61302185828601612d45565b90969095509350505050565b600080600080600080600060a0888a03121561304857600080fd5b873561305381612c28565b73ffffffffffffffffffffffffffffffffffffffff90811697506020890135965060408901359067ffffffffffffffff8083111561309057600080fd5b61309c8c848d01612bdf565b909850965060608b013592506130b183612c28565b918116945060808a013591808311156130c957600080fd5b5050612cef8a828b01612bdf565b600080604083850312156130ea57600080fd5b82356130f581612c28565b73ffffffffffffffffffffffffffffffffffffffff16946020939093013593505050565b60006060828403121561312b57600080fd5b6123f78383612bc7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561317657600080fd5b6123f782612f79565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131b457600080fd5b83018035915067ffffffffffffffff8211156131cf57600080fd5b602001915036819003821315612c2157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613244576132446131e4565b5060010190565b600067ffffffffffffffff808316818103613268576132686131e4565b6001019392505050565b67ffffffffffffffff818116838216019080821115613293576132936131e4565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126132ce57600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff61332f89612d02565b168152602088013560208201526000604089013561334c81612ea4565b67ffffffffffffffff811660408401525087606083015260e0608083015261337860e0830187896132d8565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c08401526133a78185876132d8565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156133ff5781810151838201526020016133e7565b50506000910152565b60006020828403121561341a57600080fd5b815167ffffffffffffffff8082111561343257600080fd5b818401915084601f83011261344657600080fd5b815181811115613458576134586133b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561349e5761349e6133b5565b816040528281528760208487010111156134b757600080fd5b61203a8360208301602088016133e4565b600081518084526134e08160208601602086016133e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123f760208301846134c8565b80820180821115610d2b57610d2b6131e4565b60006020828403121561354a57600080fd5b81356123f781612ea4565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff8416604082015260806060820152600061203a6080830184866132d8565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526135cb60e08401826134c8565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a085015261360682826134c8565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561364b57600080fd5b6040516040810181811067ffffffffffffffff8211171561366e5761366e6133b5565b604052825181526020928301519281019290925250919050565b60006040828403121561369a57600080fd5b6123f78383613639565b6000608082840312156136b657600080fd5b6040516060810181811067ffffffffffffffff821117156136d9576136d96133b5565b6040528251815260208301516136ee81612ea4565b60208201526137008460408501613639565b60408201529392505050565b6000808585111561371c57600080fd5b8386111561372957600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156137765780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156137765760049490940360031b84901b1690921692915050565b80356020831015610d2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561381257600080fd5b8151612e8781612c28565b61ffff818116838216019080821115613293576132936131e4565b6000865161384a818460208b016133e4565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b1660038301525083516138c28160048401602088016133e4565b01600401979650505050505050565b6000602082840312156138e357600080fd5b81516123f781612e3f565b600082516132ce8184602087016133e456fea26474726f6e582212206bff1f4b627fab24fb37794358756e3f4f7c49a1d651683c376119e6fc80a43764736f6c63430008140033",
945
+ "deployedBytecode": "0x60806040526004361061021d5760003560e01c80637d25a05e1161011d578063ca5eb5e1116100b0578063d42438851161007f578063f3fef3a311610064578063f3fef3a314610956578063f851a44014610990578063ff7bd03d146109d757610254565b8063d4243885146108e2578063f2fde38b1461091c57610254565b8063ca5eb5e114610833578063d045a0dc1461086d578063d0a1026014610880578063d22446ce1461089357610254565b8063b7abbb5d116100ec578063b7abbb5d146107b3578063bb0b6a53146107c6578063bd815db01461080d578063c95c55be1461082057610254565b80637d25a05e1461069a57806382413eac146106ed5780638da5cb5b14610727578063b731ea0a1461076c57610254565b806356a47289116101b0578063622f17f61161017f578063704b6c0211610164578063704b6c02146105f75780637112f86f14610631578063715018a61461066b57610254565b8063622f17f614610562578063647846a5146105a957610254565b806356a47289146104495780635a0dfe4d146104905780635b849af6146104da5780635e280f111461051457610254565b80633400288b116101ec5780633400288b1461034a578063416ecebf1461038457806352ae2879146103e8578063542e7b561461043657610254565b806306661abd1461028657806313137d65146102c957806317442b70146102de578063257f4e051461031a57610254565b36610254576040517f9d6cd06800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9d6cd06800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561029257600080fd5b50d3801561029f57600080fd5b50d280156102ac57600080fd5b506102b660035481565b6040519081526020015b60405180910390f35b6102dc6102d7366004612c4b565b610a11565b005b3480156102ea57600080fd5b50d380156102f757600080fd5b50d2801561030457600080fd5b50604080516001815260026020820152016102c0565b34801561032657600080fd5b50d3801561033357600080fd5b50d2801561034057600080fd5b506102b660045481565b34801561035657600080fd5b50d3801561036357600080fd5b50d2801561037057600080fd5b506102dc61037f366004612d1b565b610b10565b34801561039057600080fd5b50d3801561039d57600080fd5b50d280156103aa57600080fd5b506005546103d39074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016102c0565b3480156103f457600080fd5b50d3801561040157600080fd5b50d2801561040e57600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102c0565b6102dc610444366004612d8a565b610b26565b34801561045557600080fd5b50d3801561046257600080fd5b50d2801561046f57600080fd5b506102b661047e366004612e24565b60086020526000908152604090205481565b34801561049c57600080fd5b50d380156104a957600080fd5b50d280156104b657600080fd5b506104ca6104c5366004612d1b565b610d12565b60405190151581526020016102c0565b3480156104e657600080fd5b50d380156104f357600080fd5b50d2801561050057600080fd5b506102dc61050f366004612e4d565b610d31565b34801561052057600080fd5b50d3801561052d57600080fd5b50d2801561053a57600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b34801561056e57600080fd5b50d3801561057b57600080fd5b50d2801561058857600080fd5b506102b6610597366004612e24565b60096020526000908152604090205481565b3480156105b557600080fd5b50d380156105c257600080fd5b50d280156105cf57600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b34801561060357600080fd5b50d3801561061057600080fd5b50d2801561061d57600080fd5b506102dc61062c366004612e6a565b610d6a565b34801561063d57600080fd5b50d3801561064a57600080fd5b50d2801561065757600080fd5b506102dc610666366004612eba565b610e32565b34801561067757600080fd5b50d3801561068457600080fd5b50d2801561069157600080fd5b506102dc610f6c565b3480156106a657600080fd5b50d380156106b357600080fd5b50d280156106c057600080fd5b506106d46106cf366004612d1b565b610f80565b60405167ffffffffffffffff90911681526020016102c0565b3480156106f957600080fd5b50d3801561070657600080fd5b50d2801561071357600080fd5b506104ca610722366004612efa565b610fd3565b34801561073357600080fd5b50d3801561074057600080fd5b50d2801561074d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610411565b34801561077857600080fd5b50d3801561078557600080fd5b50d2801561079257600080fd5b506002546104119073ffffffffffffffffffffffffffffffffffffffff1681565b6102dc6107c1366004612f8a565b610ff5565b3480156107d257600080fd5b50d380156107df57600080fd5b50d280156107ec57600080fd5b506102b66107fb366004612e24565b60016020526000908152604090205481565b6102dc61081b366004612feb565b611078565b6102dc61082e366004612f8a565b611239565b34801561083f57600080fd5b50d3801561084c57600080fd5b50d2801561085957600080fd5b506102dc610868366004612e6a565b6112e1565b6102dc61087b366004612c4b565b611386565b6102dc61088e36600461302d565b6113ce565b34801561089f57600080fd5b50d380156108ac57600080fd5b50d280156108b957600080fd5b506108cd6108c8366004612f8a565b6116a3565b604080519283526020830191909152016102c0565b3480156108ee57600080fd5b50d380156108fb57600080fd5b50d2801561090857600080fd5b506102dc610917366004612e6a565b61171a565b34801561092857600080fd5b50d3801561093557600080fd5b50d2801561094257600080fd5b506102dc610951366004612e6a565b61179b565b34801561096257600080fd5b50d3801561096f57600080fd5b50d2801561097c57600080fd5b506102dc61098b3660046130d7565b611852565b34801561099c57600080fd5b50d380156109a957600080fd5b50d280156109b657600080fd5b506005546104119073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109e357600080fd5b50d380156109f057600080fd5b50d280156109fd57600080fd5b506104ca610a0c366004613119565b611914565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610a87576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610aa190610a9c908a612e24565b61194a565b14610af857610ab36020880188612e24565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610a7e565b610b078787878787878761199f565b50505050505050565b610b18611cf0565b610b228282611d71565b5050565b8481148015610b3457508483145b610b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d61746368000000006044820152606401610a7e565b60005b85811015610b07576000878783818110610bb957610bb9613135565b9050602002016020810190610bce9190612e24565b90506000610c22878785818110610be757610be7613135565b9050602002016020810190610bfc9190613164565b60055474010000000000000000000000000000000000000000900463ffffffff16611dc6565b90506000610c898383888888818110610c3d57610c3d613135565b9050602002810190610c4f919061317f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e3f915050565b9050610cf28383888888818110610ca257610ca2613135565b9050602002810190610cb4919061317f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250339150611f2d9050565b50610cfc83612045565b5050508080610d0a90613213565b915050610b9d565b63ffffffff821660009081526001602052604090205481145b92915050565b610d39611cf0565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610a7e565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e3a611cf0565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b505060075460ff16159150610f6790505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610f3f8361324b565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610f74611cf0565b610f7e600061206e565b565b60075460009060ff1615610fcb5763ffffffff83166000908152600660209081526040808320858452909152902054610fc49067ffffffffffffffff166001613272565b9050610d2b565b506000610d2b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b6110688461101585600560149054906101000a900463ffffffff16611dc6565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051808201909152348152602081019190915292503391506120e39050565b5061107284612045565b50505050565b60005b81811015611174573683838381811061109657611096613135565b90506020028101906110a8919061329a565b90506110c46110ba6020830183612e24565b6020830135610d12565b6110ce5750611162565b3063d045a0dc60c08301358360a08101356110ed61010083018361317f565b6110fe610100890160e08a01612e6a565b61110c6101208a018a61317f565b6040518963ffffffff1660e01b815260040161112e9796959493929190613321565b6000604051808303818588803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b5050505050505b8061116c81613213565b91505061107b565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112069190810190613408565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401610a7e9190613512565b60055473ffffffffffffffffffffffffffffffffffffffff1633146112ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610a7e565b6112da8461101585600560149054906101000a900463ffffffff16611dc6565b5050505050565b6112e9611cf0565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561137257600080fd5b505af11580156112da573d6000803e3d6000fd5b3330146113bf576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0787878787878787610af8565b73ffffffffffffffffffffffffffffffffffffffff8716301461144d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f4170700000000000000000000000000000000000000000000000000000006044820152606401610a7e565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e7400000000000000000000000000000000000000000000006044820152606401610a7e565b60006114f8868661210f565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff821601611542576001600460008282546115379190613525565b909155506116999050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8216016116375760016004600082825461157f9190613525565b90915550600090506115918787612131565b905061159c81612045565b60006115ef62030d4060006115e8604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190612154565b905061162f826116126001600560149054906101000a900463ffffffff16611dc6565b8360405180604001604052803481526020016000815250306120e3565b505050611699565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d65737361676520747970650000000000000000000000006044820152606401610a7e565b5050505050505050565b6000806000611704876116c888600560149054906101000a900463ffffffff16611dc6565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e3f915050565b8051602090910151909890975095505050505050565b611722611cf0565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6117a3611cf0565b73ffffffffffffffffffffffffffffffffffffffff8116611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a7e565b61184f8161206e565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1633146118d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e000000000000000000000000000000000000000000006044820152606401610a7e565b610b2273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001683836121d5565b600060208201803590600190839061192c9086612e24565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610d2b576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610a7e565b6119c96119af6020890189612e24565b60208901356119c460608b0160408c01613538565b6122a9565b60006119d5868661210f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff821601611aa35760038054906000611a1183613213565b9190505550611a2086866123df565b341015611a89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c7565006044820152606401610a7e565b611a9e611a9960208a018a612e24565b6123fe565b611699565b60ff811660021480611ab8575060ff81166004145b15611b955760038054906000611acd83613213565b90915550611ae39050611a9960208a018a612e24565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290611b5e9030908b906000908c908c90600401613555565b600060405180830381600087803b158015611b7857600080fd5b505af1158015611b8c573d6000803e3d6000fd5b50505050611699565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff8216016116375760038054906000611bcf83613213565b90915550611be59050611a9960208a018a612e24565b611bfa611bf560208a018a612e24565b612045565b6000611c4662030d40600a6115e8604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9050611ce9611c5860208b018b612e24565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611612565b5050611699565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7e565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611eaf8961194a565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611ee4929190613595565b6040805180830381865afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613688565b95945050505050565b611f35612b7f565b6000611f44846000015161241f565b602085015190915015611f5e57611f5e846020015161256c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611fbb8c61194a565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ff7929190613595565b60806040518083038185885af1158015612015573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203a91906136a4565b979650505050505050565b63ffffffff8116600090815260096020526040812080549161206683613213565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6120eb612b7f565b60006121008787876000886020015111611e3f565b905061203a8787878487611f2d565b600061211e600182848661370c565b61212791613736565b60f81c9392505050565b600061214160056001848661370c565b61214a9161377e565b60e01c9392505050565b606083600361216482600061268e565b61ffff16146121b15761217881600061268e565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610a7e565b60006121bd858561270e565b90506121cb866001836127ae565b9695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610f679084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612819565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615612369576122ed816001613272565b67ffffffffffffffff168267ffffffffffffffff1614612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e6365000000000000000000000000006044820152606401610a7e565b8067ffffffffffffffff168267ffffffffffffffff1611156110725763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b60006123ee826005818661370c565b6123f7916137c4565b9392505050565b63ffffffff8116600090815260086020526040812080549161206683613213565b60003415612459576040517f9d6cd06800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156125645773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303612502576124fd73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846121d5565b612564565b61256473ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016337f000000000000000000000000000000000000000000000000000000000000000085612928565b506000919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fd9190613800565b905073ffffffffffffffffffffffffffffffffffffffff811661264c576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2273ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085612928565b600061269b826002613525565b83511015612705576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610a7e565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561277757604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b166030820152016040516020818303038152906040526123f7565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611e28565b60608360036127be82600061268e565b61ffff16146127d25761217881600061268e565b8460016127df8551612986565b6127ea90600161381d565b8686604051602001612800959493929190613838565b6040516020818303038152906040529150509392505050565b600061287b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a1e9092919063ffffffff16565b905080516000148061289c57508080602001905181019061289c91906138d1565b610f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a7e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110729085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612227565b600061ffff821115612a1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610a7e565b5090565b6060610fed8484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a5291906138ee565b60006040518083038185875af1925050503d8060008114612a8f576040519150601f19603f3d011682016040523d82523d6000602084013e612a94565b606091505b509150915061203a8783838760608315612b36578251600003612b2f5773ffffffffffffffffffffffffffffffffffffffff85163b612b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a7e565b5081610fed565b610fed8383815115612b4b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e9190613512565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612bc2604051806040016040528060008152602001600081525090565b905290565b600060608284031215612bd957600080fd5b50919050565b60008083601f840112612bf157600080fd5b50813567ffffffffffffffff811115612c0957600080fd5b602083019150836020828501011115612c2157600080fd5b9250929050565b74ffffffffffffffffffffffffffffffffffffffffff8116811461184f57600080fd5b600080600080600080600060e0888a031215612c6657600080fd5b612c708989612bc7565b965060608801359550608088013567ffffffffffffffff80821115612c9457600080fd5b612ca08b838c01612bdf565b909750955060a08a01359150612cb582612c28565b73ffffffffffffffffffffffffffffffffffffffff8216945060c08a0135915080821115612ce257600080fd5b50612cef8a828b01612bdf565b989b979a50959850939692959293505050565b803563ffffffff81168114612d1657600080fd5b919050565b60008060408385031215612d2e57600080fd5b612d3783612d02565b946020939093013593505050565b60008083601f840112612d5757600080fd5b50813567ffffffffffffffff811115612d6f57600080fd5b6020830191508360208260051b8501011115612c2157600080fd5b60008060008060008060608789031215612da357600080fd5b863567ffffffffffffffff80821115612dbb57600080fd5b612dc78a838b01612d45565b90985096506020890135915080821115612de057600080fd5b612dec8a838b01612d45565b90965094506040890135915080821115612e0557600080fd5b50612e1289828a01612d45565b979a9699509497509295939492505050565b600060208284031215612e3657600080fd5b6123f782612d02565b801515811461184f57600080fd5b600060208284031215612e5f57600080fd5b81356123f781612e3f565b600060208284031215612e7c57600080fd5b8135612e8781612c28565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b67ffffffffffffffff8116811461184f57600080fd5b600080600060608486031215612ecf57600080fd5b612ed884612d02565b9250602084013591506040840135612eef81612ea4565b809150509250925092565b60008060008060a08587031215612f1057600080fd5b612f1a8686612bc7565b9350606085013567ffffffffffffffff811115612f3657600080fd5b612f4287828801612bdf565b9094509250506080850135612f5681612c28565b73ffffffffffffffffffffffffffffffffffffffff811691505092959194509250565b803560ff81168114612d1657600080fd5b60008060008060608587031215612fa057600080fd5b612fa985612d02565b9350612fb760208601612f79565b9250604085013567ffffffffffffffff811115612fd357600080fd5b612fdf87828801612bdf565b95989497509550505050565b60008060208385031215612ffe57600080fd5b823567ffffffffffffffff81111561301557600080fd5b61302185828601612d45565b90969095509350505050565b600080600080600080600060a0888a03121561304857600080fd5b873561305381612c28565b73ffffffffffffffffffffffffffffffffffffffff90811697506020890135965060408901359067ffffffffffffffff8083111561309057600080fd5b61309c8c848d01612bdf565b909850965060608b013592506130b183612c28565b918116945060808a013591808311156130c957600080fd5b5050612cef8a828b01612bdf565b600080604083850312156130ea57600080fd5b82356130f581612c28565b73ffffffffffffffffffffffffffffffffffffffff16946020939093013593505050565b60006060828403121561312b57600080fd5b6123f78383612bc7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561317657600080fd5b6123f782612f79565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131b457600080fd5b83018035915067ffffffffffffffff8211156131cf57600080fd5b602001915036819003821315612c2157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613244576132446131e4565b5060010190565b600067ffffffffffffffff808316818103613268576132686131e4565b6001019392505050565b67ffffffffffffffff818116838216019080821115613293576132936131e4565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126132ce57600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff61332f89612d02565b168152602088013560208201526000604089013561334c81612ea4565b67ffffffffffffffff811660408401525087606083015260e0608083015261337860e0830187896132d8565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c08401526133a78185876132d8565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156133ff5781810151838201526020016133e7565b50506000910152565b60006020828403121561341a57600080fd5b815167ffffffffffffffff8082111561343257600080fd5b818401915084601f83011261344657600080fd5b815181811115613458576134586133b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561349e5761349e6133b5565b816040528281528760208487010111156134b757600080fd5b61203a8360208301602088016133e4565b600081518084526134e08160208601602086016133e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123f760208301846134c8565b80820180821115610d2b57610d2b6131e4565b60006020828403121561354a57600080fd5b81356123f781612ea4565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff8416604082015260806060820152600061203a6080830184866132d8565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526135cb60e08401826134c8565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a085015261360682826134c8565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561364b57600080fd5b6040516040810181811067ffffffffffffffff8211171561366e5761366e6133b5565b604052825181526020928301519281019290925250919050565b60006040828403121561369a57600080fd5b6123f78383613639565b6000608082840312156136b657600080fd5b6040516060810181811067ffffffffffffffff821117156136d9576136d96133b5565b6040528251815260208301516136ee81612ea4565b60208201526137008460408501613639565b60408201529392505050565b6000808585111561371c57600080fd5b8386111561372957600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156137765780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156137765760049490940360031b84901b1690921692915050565b80356020831015610d2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561381257600080fd5b8151612e8781612c28565b61ffff818116838216019080821115613293576132936131e4565b6000865161384a818460208b016133e4565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b1660038301525083516138c28160048401602088016133e4565b01600401979650505050505050565b6000602082840312156138e357600080fd5b81516123f781612e3f565b600082516132ce8184602087016133e456fea26474726f6e582212206bff1f4b627fab24fb37794358756e3f4f7c49a1d651683c376119e6fc80a43764736f6c63430008140033",
946
+ "linkReferences": {},
947
+ "deployedLinkReferences": {}
948
+ }