@keep-network/tbtc-v2 1.3.0-dev.5 → 1.3.0-dev.7

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 (111) hide show
  1. package/artifacts/BLS.json +1 -1
  2. package/artifacts/Bank.json +3 -3
  3. package/artifacts/BeaconAuthorization.json +1 -1
  4. package/artifacts/BeaconDkg.json +6 -6
  5. package/artifacts/BeaconDkgValidator.json +8 -8
  6. package/artifacts/BeaconInactivity.json +8 -8
  7. package/artifacts/BeaconSortitionPool.json +3 -3
  8. package/artifacts/Bridge.json +5 -5
  9. package/artifacts/BridgeGovernance.json +2 -2
  10. package/artifacts/BridgeGovernanceParameters.json +2 -2
  11. package/artifacts/Deposit.json +2 -2
  12. package/artifacts/DepositSweep.json +2 -2
  13. package/artifacts/DonationVault.json +3 -3
  14. package/artifacts/EcdsaDkgValidator.json +6 -6
  15. package/artifacts/EcdsaInactivity.json +8 -8
  16. package/artifacts/EcdsaSortitionPool.json +4 -4
  17. package/artifacts/Fraud.json +2 -2
  18. package/artifacts/KeepRegistry.json +1 -1
  19. package/artifacts/KeepStake.json +2 -2
  20. package/artifacts/KeepToken.json +2 -2
  21. package/artifacts/KeepTokenStaking.json +1 -1
  22. package/artifacts/LightRelay.json +18 -18
  23. package/artifacts/LightRelayMaintainerProxy.json +8 -8
  24. package/artifacts/MaintainerProxy.json +19 -19
  25. package/artifacts/MovingFunds.json +2 -2
  26. package/artifacts/NuCypherStakingEscrow.json +1 -1
  27. package/artifacts/NuCypherToken.json +2 -2
  28. package/artifacts/RandomBeacon.json +109 -109
  29. package/artifacts/RandomBeaconChaosnet.json +4 -4
  30. package/artifacts/RandomBeaconGovernance.json +59 -59
  31. package/artifacts/Redemption.json +2 -2
  32. package/artifacts/ReimbursementPool.json +13 -13
  33. package/artifacts/T.json +2 -2
  34. package/artifacts/TBTC.json +3 -3
  35. package/artifacts/TBTCToken.json +3 -3
  36. package/artifacts/TBTCVault.json +23 -23
  37. package/artifacts/TokenStaking.json +1 -1
  38. package/artifacts/TokenholderGovernor.json +9 -9
  39. package/artifacts/TokenholderTimelock.json +8 -8
  40. package/artifacts/VendingMachine.json +3 -3
  41. package/artifacts/VendingMachineKeep.json +1 -1
  42. package/artifacts/VendingMachineNuCypher.json +1 -1
  43. package/artifacts/VendingMachineV2.json +3 -3
  44. package/artifacts/VendingMachineV3.json +3 -3
  45. package/artifacts/WalletCoordinator.json +154 -143
  46. package/artifacts/WalletRegistry.json +5 -5
  47. package/artifacts/WalletRegistryGovernance.json +50 -50
  48. package/artifacts/Wallets.json +2 -2
  49. package/artifacts/solcInputs/{08bd3c90d7f376263925b4f52b0adff9.json → 113b54a69049e9a4de4a520973971e13.json} +1 -1
  50. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  51. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  52. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  53. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  54. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  55. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  56. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  57. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  58. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  59. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  60. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  61. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  62. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  63. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  64. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  65. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  66. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  67. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  68. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  69. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.dbg.json +1 -1
  70. package/build/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +143 -132
  71. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  72. package/build/contracts/l2/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  73. package/build/contracts/l2/L2WormholeGateway.sol/IWormholeTokenBridge.dbg.json +1 -1
  74. package/build/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  75. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  76. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  77. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  78. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  79. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  80. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  81. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  82. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  83. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  84. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  85. package/contracts/bridge/WalletCoordinator.sol +136 -134
  86. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +22 -22
  87. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +6 -6
  88. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +6 -6
  89. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +6 -6
  90. package/export/artifacts/contracts/bridge/WalletCoordinator.sol/WalletCoordinator.json +8745 -8247
  91. package/export/artifacts/contracts/l2/L2TBTC.sol/L2TBTC.json +40 -40
  92. package/export/artifacts/contracts/l2/L2WormholeGateway.sol/L2WormholeGateway.json +47 -47
  93. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +88 -88
  94. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +57 -57
  95. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +31 -31
  96. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +2 -2
  97. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +58 -58
  98. package/export/artifacts/contracts/test/GoerliLightRelay.sol/GoerliLightRelay.json +57 -57
  99. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +2 -2
  100. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +59 -59
  101. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  102. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +14 -14
  103. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +6 -6
  104. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +8 -8
  105. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +2 -2
  106. package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +37 -37
  107. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2 -2
  108. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +11 -11
  109. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +135 -135
  110. package/export/typechain/factories/WalletCoordinator__factory.js +137 -126
  111. package/package.json +3 -3
@@ -7,44 +7,55 @@
7
7
  "anonymous": false,
8
8
  "inputs": [
9
9
  {
10
- "indexed": false,
11
- "internalType": "uint32",
12
- "name": "depositMinAge",
13
- "type": "uint32"
10
+ "indexed": true,
11
+ "internalType": "address",
12
+ "name": "coordinator",
13
+ "type": "address"
14
14
  }
15
15
  ],
16
- "name": "DepositMinAgeUpdated",
16
+ "name": "CoordinatorAdded",
17
17
  "type": "event"
18
18
  },
19
19
  {
20
20
  "anonymous": false,
21
21
  "inputs": [
22
22
  {
23
- "indexed": false,
24
- "internalType": "uint32",
25
- "name": "depositRefundSafetyMargin",
26
- "type": "uint32"
23
+ "indexed": true,
24
+ "internalType": "address",
25
+ "name": "coordinator",
26
+ "type": "address"
27
27
  }
28
28
  ],
29
- "name": "DepositRefundSafetyMarginUpdated",
29
+ "name": "CoordinatorRemoved",
30
30
  "type": "event"
31
31
  },
32
32
  {
33
33
  "anonymous": false,
34
34
  "inputs": [
35
+ {
36
+ "indexed": false,
37
+ "internalType": "uint32",
38
+ "name": "depositSweepProposalValidity",
39
+ "type": "uint32"
40
+ },
41
+ {
42
+ "indexed": false,
43
+ "internalType": "uint32",
44
+ "name": "depositMinAge",
45
+ "type": "uint32"
46
+ },
47
+ {
48
+ "indexed": false,
49
+ "internalType": "uint32",
50
+ "name": "depositRefundSafetyMargin",
51
+ "type": "uint32"
52
+ },
35
53
  {
36
54
  "indexed": false,
37
55
  "internalType": "uint16",
38
56
  "name": "depositSweepMaxSize",
39
57
  "type": "uint16"
40
- }
41
- ],
42
- "name": "DepositSweepMaxSizeUpdated",
43
- "type": "event"
44
- },
45
- {
46
- "anonymous": false,
47
- "inputs": [
58
+ },
48
59
  {
49
60
  "indexed": false,
50
61
  "internalType": "uint32",
@@ -52,7 +63,7 @@
52
63
  "type": "uint32"
53
64
  }
54
65
  ],
55
- "name": "DepositSweepProposalSubmissionGasOffsetUpdated",
66
+ "name": "DepositSweepProposalParametersUpdated",
56
67
  "type": "event"
57
68
  },
58
69
  {
@@ -96,7 +107,7 @@
96
107
  {
97
108
  "indexed": true,
98
109
  "internalType": "address",
99
- "name": "proposalSubmitter",
110
+ "name": "coordinator",
100
111
  "type": "address"
101
112
  }
102
113
  ],
@@ -109,11 +120,17 @@
109
120
  {
110
121
  "indexed": false,
111
122
  "internalType": "uint32",
112
- "name": "depositSweepProposalValidity",
123
+ "name": "heartbeatRequestValidity",
124
+ "type": "uint32"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "uint32",
129
+ "name": "heartbeatRequestGasOffset",
113
130
  "type": "uint32"
114
131
  }
115
132
  ],
116
- "name": "DepositSweepProposalValidityUpdated",
133
+ "name": "HeartbeatRequestParametersUpdated",
117
134
  "type": "event"
118
135
  },
119
136
  {
@@ -121,31 +138,31 @@
121
138
  "inputs": [
122
139
  {
123
140
  "indexed": false,
124
- "internalType": "uint8",
125
- "name": "version",
126
- "type": "uint8"
141
+ "internalType": "bytes20",
142
+ "name": "walletPubKeyHash",
143
+ "type": "bytes20"
144
+ },
145
+ {
146
+ "indexed": false,
147
+ "internalType": "bytes",
148
+ "name": "message",
149
+ "type": "bytes"
127
150
  }
128
151
  ],
129
- "name": "Initialized",
152
+ "name": "HeartbeatRequestSubmitted",
130
153
  "type": "event"
131
154
  },
132
155
  {
133
156
  "anonymous": false,
134
157
  "inputs": [
135
158
  {
136
- "indexed": true,
137
- "internalType": "address",
138
- "name": "previousOwner",
139
- "type": "address"
140
- },
141
- {
142
- "indexed": true,
143
- "internalType": "address",
144
- "name": "newOwner",
145
- "type": "address"
159
+ "indexed": false,
160
+ "internalType": "uint8",
161
+ "name": "version",
162
+ "type": "uint8"
146
163
  }
147
164
  ],
148
- "name": "OwnershipTransferred",
165
+ "name": "Initialized",
149
166
  "type": "event"
150
167
  },
151
168
  {
@@ -154,24 +171,17 @@
154
171
  {
155
172
  "indexed": true,
156
173
  "internalType": "address",
157
- "name": "proposalSubmitter",
174
+ "name": "previousOwner",
158
175
  "type": "address"
159
- }
160
- ],
161
- "name": "ProposalSubmitterAdded",
162
- "type": "event"
163
- },
164
- {
165
- "anonymous": false,
166
- "inputs": [
176
+ },
167
177
  {
168
178
  "indexed": true,
169
179
  "internalType": "address",
170
- "name": "proposalSubmitter",
180
+ "name": "newOwner",
171
181
  "type": "address"
172
182
  }
173
183
  ],
174
- "name": "ProposalSubmitterRemoved",
184
+ "name": "OwnershipTransferred",
175
185
  "type": "event"
176
186
  },
177
187
  {
@@ -204,11 +214,11 @@
204
214
  "inputs": [
205
215
  {
206
216
  "internalType": "address",
207
- "name": "proposalSubmitter",
217
+ "name": "coordinator",
208
218
  "type": "address"
209
219
  }
210
220
  ],
211
- "name": "addProposalSubmitter",
221
+ "name": "addCoordinator",
212
222
  "outputs": [],
213
223
  "stateMutability": "nonpayable",
214
224
  "type": "function"
@@ -291,6 +301,32 @@
291
301
  "stateMutability": "view",
292
302
  "type": "function"
293
303
  },
304
+ {
305
+ "inputs": [],
306
+ "name": "heartbeatRequestGasOffset",
307
+ "outputs": [
308
+ {
309
+ "internalType": "uint32",
310
+ "name": "",
311
+ "type": "uint32"
312
+ }
313
+ ],
314
+ "stateMutability": "view",
315
+ "type": "function"
316
+ },
317
+ {
318
+ "inputs": [],
319
+ "name": "heartbeatRequestValidity",
320
+ "outputs": [
321
+ {
322
+ "internalType": "uint32",
323
+ "name": "",
324
+ "type": "uint32"
325
+ }
326
+ ],
327
+ "stateMutability": "view",
328
+ "type": "function"
329
+ },
294
330
  {
295
331
  "inputs": [
296
332
  {
@@ -312,7 +348,7 @@
312
348
  "type": "address"
313
349
  }
314
350
  ],
315
- "name": "isProposalSubmitter",
351
+ "name": "isCoordinator",
316
352
  "outputs": [
317
353
  {
318
354
  "internalType": "bool",
@@ -353,11 +389,11 @@
353
389
  "inputs": [
354
390
  {
355
391
  "internalType": "address",
356
- "name": "proposalSubmitter",
392
+ "name": "coordinator",
357
393
  "type": "address"
358
394
  }
359
395
  ],
360
- "name": "removeProposalSubmitter",
396
+ "name": "removeCoordinator",
361
397
  "outputs": [],
362
398
  "stateMutability": "nonpayable",
363
399
  "type": "function"
@@ -369,6 +405,42 @@
369
405
  "stateMutability": "nonpayable",
370
406
  "type": "function"
371
407
  },
408
+ {
409
+ "inputs": [
410
+ {
411
+ "internalType": "bytes20",
412
+ "name": "walletPubKeyHash",
413
+ "type": "bytes20"
414
+ },
415
+ {
416
+ "internalType": "bytes",
417
+ "name": "message",
418
+ "type": "bytes"
419
+ }
420
+ ],
421
+ "name": "requestHeartbeat",
422
+ "outputs": [],
423
+ "stateMutability": "nonpayable",
424
+ "type": "function"
425
+ },
426
+ {
427
+ "inputs": [
428
+ {
429
+ "internalType": "bytes20",
430
+ "name": "walletPubKeyHash",
431
+ "type": "bytes20"
432
+ },
433
+ {
434
+ "internalType": "bytes",
435
+ "name": "message",
436
+ "type": "bytes"
437
+ }
438
+ ],
439
+ "name": "requestHeartbeatWithReimbursement",
440
+ "outputs": [],
441
+ "stateMutability": "nonpayable",
442
+ "type": "function"
443
+ },
372
444
  {
373
445
  "inputs": [
374
446
  {
@@ -404,23 +476,6 @@
404
476
  "internalType": "struct WalletCoordinator.DepositSweepProposal",
405
477
  "name": "proposal",
406
478
  "type": "tuple"
407
- },
408
- {
409
- "components": [
410
- {
411
- "internalType": "uint32[]",
412
- "name": "walletMembersIDs",
413
- "type": "uint32[]"
414
- },
415
- {
416
- "internalType": "uint256",
417
- "name": "walletMemberIndex",
418
- "type": "uint256"
419
- }
420
- ],
421
- "internalType": "struct WalletCoordinator.WalletMemberContext",
422
- "name": "walletMemberContext",
423
- "type": "tuple"
424
479
  }
425
480
  ],
426
481
  "name": "submitDepositSweepProposal",
@@ -463,23 +518,6 @@
463
518
  "internalType": "struct WalletCoordinator.DepositSweepProposal",
464
519
  "name": "proposal",
465
520
  "type": "tuple"
466
- },
467
- {
468
- "components": [
469
- {
470
- "internalType": "uint32[]",
471
- "name": "walletMembersIDs",
472
- "type": "uint32[]"
473
- },
474
- {
475
- "internalType": "uint256",
476
- "name": "walletMemberIndex",
477
- "type": "uint256"
478
- }
479
- ],
480
- "internalType": "struct WalletCoordinator.WalletMemberContext",
481
- "name": "walletMemberContext",
482
- "type": "tuple"
483
521
  }
484
522
  ],
485
523
  "name": "submitDepositSweepProposalWithReimbursement",
@@ -515,52 +553,33 @@
515
553
  },
516
554
  {
517
555
  "inputs": [
556
+ {
557
+ "internalType": "uint32",
558
+ "name": "_depositSweepProposalValidity",
559
+ "type": "uint32"
560
+ },
518
561
  {
519
562
  "internalType": "uint32",
520
563
  "name": "_depositMinAge",
521
564
  "type": "uint32"
522
- }
523
- ],
524
- "name": "updateDepositMinAge",
525
- "outputs": [],
526
- "stateMutability": "nonpayable",
527
- "type": "function"
528
- },
529
- {
530
- "inputs": [
565
+ },
531
566
  {
532
567
  "internalType": "uint32",
533
568
  "name": "_depositRefundSafetyMargin",
534
569
  "type": "uint32"
535
- }
536
- ],
537
- "name": "updateDepositRefundSafetyMargin",
538
- "outputs": [],
539
- "stateMutability": "nonpayable",
540
- "type": "function"
541
- },
542
- {
543
- "inputs": [
570
+ },
544
571
  {
545
572
  "internalType": "uint16",
546
573
  "name": "_depositSweepMaxSize",
547
574
  "type": "uint16"
548
- }
549
- ],
550
- "name": "updateDepositSweepMaxSize",
551
- "outputs": [],
552
- "stateMutability": "nonpayable",
553
- "type": "function"
554
- },
555
- {
556
- "inputs": [
575
+ },
557
576
  {
558
577
  "internalType": "uint32",
559
578
  "name": "_depositSweepProposalSubmissionGasOffset",
560
579
  "type": "uint32"
561
580
  }
562
581
  ],
563
- "name": "updateDepositSweepProposalSubmissionGasOffset",
582
+ "name": "updateDepositSweepProposalParameters",
564
583
  "outputs": [],
565
584
  "stateMutability": "nonpayable",
566
585
  "type": "function"
@@ -569,11 +588,16 @@
569
588
  "inputs": [
570
589
  {
571
590
  "internalType": "uint32",
572
- "name": "_depositSweepProposalValidity",
591
+ "name": "_heartbeatRequestValidity",
592
+ "type": "uint32"
593
+ },
594
+ {
595
+ "internalType": "uint32",
596
+ "name": "_heartbeatRequestGasOffset",
573
597
  "type": "uint32"
574
598
  }
575
599
  ],
576
- "name": "updateDepositSweepProposalValidity",
600
+ "name": "updateHeartbeatRequestParameters",
577
601
  "outputs": [],
578
602
  "stateMutability": "nonpayable",
579
603
  "type": "function"
@@ -716,23 +740,10 @@
716
740
  ],
717
741
  "stateMutability": "view",
718
742
  "type": "function"
719
- },
720
- {
721
- "inputs": [],
722
- "name": "walletRegistry",
723
- "outputs": [
724
- {
725
- "internalType": "contract IWalletRegistry",
726
- "name": "",
727
- "type": "address"
728
- }
729
- ],
730
- "stateMutability": "view",
731
- "type": "function"
732
743
  }
733
744
  ],
734
- "bytecode": "0x608060405234801561001057600080fd5b50613377806100206000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80638e323a99116100ee578063bc20a08011610097578063c4d66de811610071578063c4d66de8146103df578063e78cea92146103f2578063f2fde38b14610405578063f74b37bd1461041857600080fd5b8063bc20a080146103a2578063c09975cd146103b9578063c1790d77146103cc57600080fd5b8063ab7aa6ad116100c8578063ab7aa6ad1461035b578063acaac7051461036e578063b82bc3991461038f57600080fd5b80638e323a99146103225780639039bc1c146103355780639f41e13b1461034857600080fd5b806331d8c6221161015b578063715018a611610135578063715018a6146102cf5780637698fa97146102d75780637b35b4e6146102ea5780638da5cb5b146102fd57600080fd5b806331d8c622146102925780633a4159c8146102a95780636ff913c3146102bc57600080fd5b8063213f7df71161018c578063213f7df71461020b57806323a1c3071461023e5780632c259d2b1461025157600080fd5b806308553292146101b35780630dc1b8df146101e35780631c6710dd146101f8575b600080fd5b609b546101c99062010000900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6101f66101f1366004612608565b61042f565b005b6101f661020636600461263d565b6104aa565b61022e6102193660046126bd565b60976020526000908152604090205460ff1681565b60405190151581526020016101da565b6101f661024c366004612608565b6107e6565b61028461025f3660046126fc565b60986020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040516101da92919061272d565b609a546101c990600160e01b900463ffffffff1681565b6101f66102b73660046126bd565b61085a565b6101f66102ca366004612608565b610939565b6101f66109a9565b61022e6102e5366004612765565b6109bd565b6101f66102f83660046126bd565b611082565b6033546001600160a01b03165b6040516001600160a01b0390911681526020016101da565b6101f66103303660046126bd565b611156565b6101f66103433660046126fc565b611239565b6101f66103563660046127ff565b6112fb565b609a5461030a906001600160a01b031681565b609b5461037c9061ffff1681565b60405161ffff90911681526020016101da565b6101f661039d366004612608565b611347565b609a546101c990600160c01b900463ffffffff1681565b60655461030a906001600160a01b031681565b6101f66103da36600461263d565b6113a1565b6101f66103ed3660046126bd565b611445565b60995461030a906001600160a01b031681565b6101f66104133660046126bd565b6116c7565b609a546101c990600160a01b900463ffffffff1681565b610437611757565b609a80547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b63ffffffff8416908102919091179091556040519081527feda69d960fc800ae7f67255cd8b42b338c24e1a655053127fff8bf88a2480d3f906020015b60405180910390a150565b6104b760208301836126fc565b33600090815260976020526040812054839160ff90911690816105f5576099546040517fe65e19d50000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff19861660048201526000916001600160a01b03169063e65e19d59060240161012060405180830381865afa158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a91906128db565b51609a549091506001600160a01b031663df07ce598261058a878061297e565b3389602001356040518663ffffffff1660e01b81526004016105b09594939291906129c8565b602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190612a31565b9150505b81806105fe5750805b6106755760405162461bcd60e51b815260206004820152603a60248201527f43616c6c6572206973206e65697468657220612070726f706f73616c2073756260448201527f6d6974746572206e6f7220612077616c6c6574206d656d62657200000000000060648201526084015b60405180910390fd5b61068260208701876126fc565b6bffffffffffffffffffffffff19811660009081526098602052604090205463ffffffff1642116106f55760405162461bcd60e51b815260206004820152600d60248201527f57616c6c6574206c6f636b656400000000000000000000000000000000000000604482015260640161066c565b60408051808201909152609a54819061071b90600160a01b900463ffffffff1642612a69565b63ffffffff168152602001600190526098600061073b60208b018b6126fc565b6bffffffffffffffffffffffff191681526020808201929092526040016000208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff19161764010000000083600481111561079c5761079c612717565b0217905550506040513391507fe17b4ed4828b9f018ca549cfd5f662e5551408093b1db16d94b9cd242e6df171906107d5908a90612a8d565b60405180910390a250505050505050565b6107ee611757565b609a80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff8416908102919091179091556040519081527f085a81d11ac3cf6033d185eccdfc414b8a20da29a555406c068a0a1fdac8afea9060200161049f565b610862611757565b6001600160a01b03811660009081526097602052604090205460ff166108f05760405162461bcd60e51b815260206004820152602860248201527f546869732061646472657373206973206e6f7420612070726f706f73616c207360448201527f75626d6974746572000000000000000000000000000000000000000000000000606482015260840161066c565b6001600160a01b038116600081815260976020526040808220805460ff19169055517f4017c4f3f844d24f56ade93af205a7ed01bf7f858b90f4b62206be460af2d2269190a250565b610941611757565b609a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b63ffffffff8416908102919091179091556040519081527fcb0c11e4086618176ceab0afd46b7fa25688cf2a6566ed4845f1fb530571faee9060200161049f565b6109b1611757565b6109bb60006117b1565b565b600060016099546001600160a01b031663e65e19d56109df60208801886126fc565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906128db565b60e001516005811115610a6357610a63612717565b14610ab05760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c6976652073746174650000000000604482015260640161066c565b6000610abf6020860186612b5e565b905011610b0e5760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a650000000000000000604482015260640161066c565b609b5461ffff16610b226020860186612b5e565b90501115610b725760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a65000000000000604482015260640161066c565b81610b806020860186612b5e565b905014610bf55760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e672065787472612064617461000000000000000000000000000000000000606482015260840161066c565b610c116040850135610c0a6020870187612b5e565b9050611810565b6000805b610c226020870187612b5e565b9050811015611074576000610c3a6020880188612b5e565b83818110610c4a57610c4a612ba8565b905060400201803603810190610c609190612bbe565b90506000868684818110610c7657610c76612ba8565b9050602002810190610c889190612c14565b610c9190612d02565b60995483516020808601516040519495506000946001600160a01b039094169363b02c43d093610cda939092910191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f1901815290829052805160209091012060e083901b6001600160e01b0319168252600482015260240160c060405180830381865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190612e04565b9050806040015163ffffffff16600003610da95760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c6564000000000000000000000000604482015260640161066c565b609a546040820151610dc891600160c01b900463ffffffff1690612a69565b63ffffffff164211610e1c5760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f7420616368696576656420796574604482015260640161066c565b60a081015163ffffffff1615610e745760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c72656164792073776570740000000000000000000000604482015260640161066c565b610e83838260000151846119bb565b608082015160009060d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c17609a54909150610ecb90600160e01b900463ffffffff1682612eab565b63ffffffff164210610f455760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f742070726573657276656400000000000000000000000000000000000000606482015260840161066c565b610f5260208b018b6126fc565b6bffffffffffffffffffffffff191683604001516bffffffffffffffffffffffff191614610fe85760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c65740000000000000000000000000000000000000000000000000000606482015260840161066c565b84600003610ff857816060015195505b856001600160a01b031682606001516001600160a01b03161461105d5760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c7400604482015260640161066c565b50505050808061106c90612ec8565b915050610c15565b5060019150505b9392505050565b336110956033546001600160a01b031690565b6001600160a01b0316146110eb5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161066c565b6040516001600160a01b03821681527f0e2d2343d31b085b7c4e56d1c8a6ec79f7ab07460386f1c9a1756239fe2533ac9060200160405180910390a16065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61115e611757565b6001600160a01b03811660009081526097602052604090205460ff16156111ed5760405162461bcd60e51b815260206004820152602c60248201527f54686973206164647265737320697320616c726561647920612070726f706f7360448201527f616c207375626d69747465720000000000000000000000000000000000000000606482015260840161066c565b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe7005265f76a2d6482aaa3a0e969edd45868e3210ff126216a0425f83af1ef209190a250565b611241611757565b60408051808201909152600080825260208201526bffffffffffffffffffffffff19821660009081526098602090815260409091208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff1916176401000000008360048111156112b7576112b7612717565b0217905550506040516bffffffffffffffffffffffff19831691507f5ea2f0397ee52fe8e2e6460e92b334c996f3580dc76c022d41b290cb985f41e690600090a250565b611303611757565b609b805461ffff191661ffff83169081179091556040519081527fcc7b63f885d59808f386320218caf8e6bdaa095b61927dea4e59f9cf6954beab9060200161049f565b61134f611757565b609b805465ffffffff000019166201000063ffffffff8416908102919091179091556040519081527fafb79fa073ff248ba2f1cd9798891f4ee776a03c9f860eccdebcb1837305a1979060200161049f565b60005a90506113b083836104aa565b606554609b546001600160a01b0390911690637ad226dc9062010000900463ffffffff165a6113df9085612ee1565b6113e99190612ef4565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b15801561142857600080fd5b505af115801561143c573d6000803e3d6000fd5b50505050505050565b600054610100900460ff16158080156114655750600054600160ff909116105b8061147f5750303b15801561147f575060005460ff166001145b6114f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161066c565b6000805460ff191660011790558015611514576000805461ff0019166101001790555b61151c611c19565b6099805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fa9de2f3a000000000000000000000000000000000000000000000000000000008152905163a9de2f3a916004808201926080929091908290030181865afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190612f07565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055609a80549290911677ffffffffffffffffffffffffffffffffffffffffffffffff199092169190911775384000000000000000000000000000000000000000001777ffffffffffffffffffffffffffffffffffffffffffffffff167e01518000001c200000000000000000000000000000000000000000000000001790555050609b805465ffffffffffff19166361a8000517905580156116c3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6116cf611757565b6001600160a01b03811661174b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161066c565b611754816117b1565b50565b6033546001600160a01b031633146109bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066c565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600082116118865760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f742060448201527f6265207a65726f00000000000000000000000000000000000000000000000000606482015260840161066c565b60006118928284612f7c565b90506000826118a18386612ee1565b6118ab9190612f90565b90506000609960009054906101000a90046001600160a01b03166001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190612fa4565b5092505067ffffffffffffffff821690506119418484612ef4565b11156119b45760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f2060448201527f6869676800000000000000000000000000000000000000000000000000000000606482015260840161066c565b5050505050565b8051805160208083015160408085015160609095015190516000956119fd956119e99590949391920161301f565b604051602081830303815290604052611c8c565b84519091508114611a765760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d617463680000000000000000000000000000000000000000000000606482015260840161066c565b6000838360200151846040015185606001518660800151604051602001611aa1959493929190613055565b60405160208183030381529060405290506000611ad9866020015163ffffffff16856000015160400151611cb390919063ffffffff16565b90506000611ae682611e97565b905080516014148015611b285750611afd83611eb1565b6bffffffffffffffffffffffff1916611b17826000611ed8565b6bffffffffffffffffffffffff1916145b15611b365750505050505050565b80516020148015611b9d5750600283604051611b5291906132ea565b602060405180830381855afa158015611b6f573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611b9291906132f6565b611b9b82611ee7565b145b15611bab5750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d617463680000000000000000000000000000000000606482015260840161066c565b600054610100900460ff16611c845760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161066c565b6109bb611f02565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611cc185611f76565b909250905060018201611d3c5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015260840161066c565b808410611d8b5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e000000000000000000000000000000604482015260640161066c565b600080611d99846001612ef4565b905060005b86811015611e2157611db08883611f8d565b92506000198303611e035760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161066c565b611e0d8383612ef4565b915080611e1981612ec8565b915050611d9e565b50611e2c8782611f8d565b91506000198203611e7f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161066c565b611e8a878284611ffa565b9450505050505b92915050565b6060611e91826008808551611eac9190612ee1565b6120c7565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600061107b8383016020015190565b60008151600003611efa57506000919050565b506020015190565b600054610100900460ff16611f6d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161066c565b6109bb336117b1565b600080611f848360006123cc565b91509150915091565b6000611f9a826009612ef4565b83511015611fab5750600019611e91565b600080611fc285611fbd866008612ef4565b6123cc565b909250905060018201611fdb5760001992505050611e91565b80611fe7836009612ef4565b611ff19190612ef4565b95945050505050565b606081600003612019575060408051602081019091526000815261107b565b60006120258385612ef4565b90508381118015612037575080855110155b6120835760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e647300000000000000000000000000604482015260640161066c565b604051915082604083010160405282825283850182038460208701018481015b808210156120bc578151838301526020820191506120a3565b505050509392505050565b606060008484815181106120dd576120dd612ba8565b016020015160f81c9050826120f382600161330f565b60ff161461211157505060408051602081019091526000815261107b565b8461211d856001612ef4565b8151811061212d5761212d612ba8565b016020015160f81c6000036121ec5760028160ff16101561215e57505060408051602081019091526000815261107b565b60008561216c866002612ef4565b8151811061217c5761217c612ba8565b016020015160f81c9050612191600283613328565b60ff16811415806121af5750806020141580156121af575080601414155b156121cd57604051806020016040528060008152509250505061107b565b6121e36121db866003612ef4565b879083611ffa565b9250505061107b565b60006121f88686611ed8565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a900000000000000000000000000000000000000000000000000000000000361230c578561224f866003612ef4565b8151811061225f5761225f612ba8565b60209101015160f81c60141415806122d7575061229260026122818688612ef4565b61228b9190612ee1565b8790611ed8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b156122f557604051806020016040528060008152509250505061107b565b6121e3612303866004612ef4565b87906014611ffa565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a9140000000000000000000000000000000000000000000000000000000000036123b3578560016123628688612ef4565b61236c9190612ee1565b8151811061237c5761237c612ba8565b60209101015160f81c6087146123a557604051806020016040528060008152509250505061107b565b6121e3612303866003612ef4565b5050506040805160208101909152600081529392505050565b60008060006123db8585612570565b90508060ff166000036124105760008585815181106123fc576123fc612ba8565b016020015190935060f81c91506125699050565b8361241c82600161330f565b60ff166124299190612ef4565b855110156124405760001960009250925050612569565b60008160ff166002036124845761247961246561245e876001612ef4565b8890611ed8565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061255f565b8160ff166004036124d3576124c66124a061245e876001612ef4565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061255f565b8160ff1660080361255f576125526124ef61245e876001612ef4565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600082828151811061258457612584612ba8565b016020015160f81c60ff0361259b57506008611e91565b8282815181106125ad576125ad612ba8565b016020015160f81c60fe036125c457506004611e91565b8282815181106125d6576125d6612ba8565b016020015160f81c60fd036125ed57506002611e91565b50600092915050565b63ffffffff8116811461175457600080fd5b60006020828403121561261a57600080fd5b813561107b816125f6565b60006060828403121561263757600080fd5b50919050565b6000806040838503121561265057600080fd5b823567ffffffffffffffff8082111561266857600080fd5b61267486838701612625565b9350602085013591508082111561268a57600080fd5b5083016040818603121561269d57600080fd5b809150509250929050565b6001600160a01b038116811461175457600080fd5b6000602082840312156126cf57600080fd5b813561107b816126a8565b80356bffffffffffffffffffffffff19811681146126f757600080fd5b919050565b60006020828403121561270e57600080fd5b61107b826126da565b634e487b7160e01b600052602160045260246000fd5b63ffffffff83168152604081016005831061275857634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b60008060006040848603121561277a57600080fd5b833567ffffffffffffffff8082111561279257600080fd5b61279e87838801612625565b945060208601359150808211156127b457600080fd5b818601915086601f8301126127c857600080fd5b8135818111156127d757600080fd5b8760208260051b85010111156127ec57600080fd5b6020830194508093505050509250925092565b60006020828403121561281157600080fd5b813561ffff8116811461107b57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff8111828210171561285d5761285d612823565b60405290565b60405160a0810167ffffffffffffffff8111828210171561285d5761285d612823565b6040516080810167ffffffffffffffff8111828210171561285d5761285d612823565b805167ffffffffffffffff811681146126f757600080fd5b80516126f7816125f6565b8051600681106126f757600080fd5b600061012082840312156128ee57600080fd5b6128f6612839565b8251815260208301516020820152612910604084016128a9565b6040820152612921606084016128c1565b6060820152612932608084016128c1565b608082015261294360a084016128c1565b60a082015261295460c084016128c1565b60c082015261296560e084016128cc565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b6020019150600581901b360382131561256957600080fd5b85815260806020808301829052908201859052600090869060a08401835b88811015612a115783356129f9816125f6565b63ffffffff16825292820192908201906001016129e6565b506001600160a01b03969096166040850152505050606001529392505050565b600060208284031215612a4357600080fd5b8151801515811461107b57600080fd5b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115612a8657612a86612a53565b5092915050565b60006020808352608083016bffffffffffffffffffffffff19612aaf866126da565b168285015281850135601e19863603018112612aca57600080fd5b8501828101903567ffffffffffffffff811115612ae657600080fd5b8060061b3603821315612af857600080fd5b60406060818801528382855260a088019050839450600093505b82841015612b47578435815285850135612b2b816125f6565b63ffffffff168187015293810193600193909301928101612b12565b970135606096909601959095525093949350505050565b6000808335601e19843603018112612b7557600080fd5b83018035915067ffffffffffffffff821115612b9057600080fd5b6020019150600681901b360382131561256957600080fd5b634e487b7160e01b600052603260045260246000fd5b600060408284031215612bd057600080fd5b6040516040810181811067ffffffffffffffff82111715612bf357612bf3612823565b604052823581526020830135612c08816125f6565b60208201529392505050565b60008235609e19833603018112612c2a57600080fd5b9190910192915050565b80356001600160e01b0319811681146126f757600080fd5b600082601f830112612c5d57600080fd5b813567ffffffffffffffff80821115612c7857612c78612823565b604051601f8301601f19908116603f01168101908282118183101715612ca057612ca0612823565b81604052838152866020858801011115612cb957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff19811681146126f757600080fd5b600060a08236031215612d1457600080fd5b612d1c612863565b823567ffffffffffffffff80821115612d3457600080fd5b818501915060808236031215612d4957600080fd5b612d51612886565b612d5a83612c34565b8152602083013582811115612d6e57600080fd5b612d7a36828601612c4c565b602083015250604083013582811115612d9257600080fd5b612d9e36828601612c4c565b604083015250612db060608401612c34565b6060820152835250612dc6905060208401612cd9565b6020820152612dd7604084016126da565b6040820152612de8606084016126da565b6060820152612df960808401612c34565b608082015292915050565b600060c08284031215612e1657600080fd5b60405160c0810181811067ffffffffffffffff82111715612e3957612e39612823565b6040528251612e47816126a8565b8152612e55602084016128a9565b60208201526040830151612e68816125f6565b60408201526060830151612e7b816126a8565b6060820152612e8c608084016128a9565b608082015260a0830151612e9f816125f6565b60a08201529392505050565b63ffffffff828116828216039080821115612a8657612a86612a53565b600060018201612eda57612eda612a53565b5060010190565b81810381811115611e9157611e91612a53565b80820180821115611e9157611e91612a53565b60008060008060808587031215612f1d57600080fd5b8451612f28816126a8565b6020860151909450612f39816126a8565b6040860151909350612f4a816126a8565b6060860151909250612f5b816126a8565b939692955090935050565b634e487b7160e01b600052601260045260246000fd5b600082612f8b57612f8b612f66565b500690565b600082612f9f57612f9f612f66565b500490565b60008060008060808587031215612fba57600080fd5b612fc3856128a9565b9350612fd1602086016128a9565b9250612fdf604086016128a9565b91506060850151612f5b816125f6565b6000815160005b818110156130105760208185018101518683015201612ff6565b50600093019283525090919050565b60006001600160e01b0319808716835261304561303f6004850188612fef565b86612fef565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f820152600061313f613132613109602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526132036131326131096130e06131da601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506132de6132b5600683016131b1565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b600061107b8284612fef565b60006020828403121561330857600080fd5b5051919050565b60ff8181168382160190811115611e9157611e91612a53565b60ff8281168282160390811115611e9157611e91612a5356fea2646970667358221220bea7bb91e30d70d3f7a19761bcb9f4e17546b0a7ee72da097287dc7281c4bd3164736f6c63430008110033",
735
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80638e323a99116100ee578063bc20a08011610097578063c4d66de811610071578063c4d66de8146103df578063e78cea92146103f2578063f2fde38b14610405578063f74b37bd1461041857600080fd5b8063bc20a080146103a2578063c09975cd146103b9578063c1790d77146103cc57600080fd5b8063ab7aa6ad116100c8578063ab7aa6ad1461035b578063acaac7051461036e578063b82bc3991461038f57600080fd5b80638e323a99146103225780639039bc1c146103355780639f41e13b1461034857600080fd5b806331d8c6221161015b578063715018a611610135578063715018a6146102cf5780637698fa97146102d75780637b35b4e6146102ea5780638da5cb5b146102fd57600080fd5b806331d8c622146102925780633a4159c8146102a95780636ff913c3146102bc57600080fd5b8063213f7df71161018c578063213f7df71461020b57806323a1c3071461023e5780632c259d2b1461025157600080fd5b806308553292146101b35780630dc1b8df146101e35780631c6710dd146101f8575b600080fd5b609b546101c99062010000900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6101f66101f1366004612608565b61042f565b005b6101f661020636600461263d565b6104aa565b61022e6102193660046126bd565b60976020526000908152604090205460ff1681565b60405190151581526020016101da565b6101f661024c366004612608565b6107e6565b61028461025f3660046126fc565b60986020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040516101da92919061272d565b609a546101c990600160e01b900463ffffffff1681565b6101f66102b73660046126bd565b61085a565b6101f66102ca366004612608565b610939565b6101f66109a9565b61022e6102e5366004612765565b6109bd565b6101f66102f83660046126bd565b611082565b6033546001600160a01b03165b6040516001600160a01b0390911681526020016101da565b6101f66103303660046126bd565b611156565b6101f66103433660046126fc565b611239565b6101f66103563660046127ff565b6112fb565b609a5461030a906001600160a01b031681565b609b5461037c9061ffff1681565b60405161ffff90911681526020016101da565b6101f661039d366004612608565b611347565b609a546101c990600160c01b900463ffffffff1681565b60655461030a906001600160a01b031681565b6101f66103da36600461263d565b6113a1565b6101f66103ed3660046126bd565b611445565b60995461030a906001600160a01b031681565b6101f66104133660046126bd565b6116c7565b609a546101c990600160a01b900463ffffffff1681565b610437611757565b609a80547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b63ffffffff8416908102919091179091556040519081527feda69d960fc800ae7f67255cd8b42b338c24e1a655053127fff8bf88a2480d3f906020015b60405180910390a150565b6104b760208301836126fc565b33600090815260976020526040812054839160ff90911690816105f5576099546040517fe65e19d50000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff19861660048201526000916001600160a01b03169063e65e19d59060240161012060405180830381865afa158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a91906128db565b51609a549091506001600160a01b031663df07ce598261058a878061297e565b3389602001356040518663ffffffff1660e01b81526004016105b09594939291906129c8565b602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190612a31565b9150505b81806105fe5750805b6106755760405162461bcd60e51b815260206004820152603a60248201527f43616c6c6572206973206e65697468657220612070726f706f73616c2073756260448201527f6d6974746572206e6f7220612077616c6c6574206d656d62657200000000000060648201526084015b60405180910390fd5b61068260208701876126fc565b6bffffffffffffffffffffffff19811660009081526098602052604090205463ffffffff1642116106f55760405162461bcd60e51b815260206004820152600d60248201527f57616c6c6574206c6f636b656400000000000000000000000000000000000000604482015260640161066c565b60408051808201909152609a54819061071b90600160a01b900463ffffffff1642612a69565b63ffffffff168152602001600190526098600061073b60208b018b6126fc565b6bffffffffffffffffffffffff191681526020808201929092526040016000208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff19161764010000000083600481111561079c5761079c612717565b0217905550506040513391507fe17b4ed4828b9f018ca549cfd5f662e5551408093b1db16d94b9cd242e6df171906107d5908a90612a8d565b60405180910390a250505050505050565b6107ee611757565b609a80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff8416908102919091179091556040519081527f085a81d11ac3cf6033d185eccdfc414b8a20da29a555406c068a0a1fdac8afea9060200161049f565b610862611757565b6001600160a01b03811660009081526097602052604090205460ff166108f05760405162461bcd60e51b815260206004820152602860248201527f546869732061646472657373206973206e6f7420612070726f706f73616c207360448201527f75626d6974746572000000000000000000000000000000000000000000000000606482015260840161066c565b6001600160a01b038116600081815260976020526040808220805460ff19169055517f4017c4f3f844d24f56ade93af205a7ed01bf7f858b90f4b62206be460af2d2269190a250565b610941611757565b609a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b63ffffffff8416908102919091179091556040519081527fcb0c11e4086618176ceab0afd46b7fa25688cf2a6566ed4845f1fb530571faee9060200161049f565b6109b1611757565b6109bb60006117b1565b565b600060016099546001600160a01b031663e65e19d56109df60208801886126fc565b6040516001600160e01b031960e084901b1681526bffffffffffffffffffffffff19909116600482015260240161012060405180830381865afa158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906128db565b60e001516005811115610a6357610a63612717565b14610ab05760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c6976652073746174650000000000604482015260640161066c565b6000610abf6020860186612b5e565b905011610b0e5760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a650000000000000000604482015260640161066c565b609b5461ffff16610b226020860186612b5e565b90501115610b725760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a65000000000000604482015260640161066c565b81610b806020860186612b5e565b905014610bf55760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e672065787472612064617461000000000000000000000000000000000000606482015260840161066c565b610c116040850135610c0a6020870187612b5e565b9050611810565b6000805b610c226020870187612b5e565b9050811015611074576000610c3a6020880188612b5e565b83818110610c4a57610c4a612ba8565b905060400201803603810190610c609190612bbe565b90506000868684818110610c7657610c76612ba8565b9050602002810190610c889190612c14565b610c9190612d02565b60995483516020808601516040519495506000946001600160a01b039094169363b02c43d093610cda939092910191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f1901815290829052805160209091012060e083901b6001600160e01b0319168252600482015260240160c060405180830381865afa158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190612e04565b9050806040015163ffffffff16600003610da95760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c6564000000000000000000000000604482015260640161066c565b609a546040820151610dc891600160c01b900463ffffffff1690612a69565b63ffffffff164211610e1c5760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f7420616368696576656420796574604482015260640161066c565b60a081015163ffffffff1615610e745760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c72656164792073776570740000000000000000000000604482015260640161066c565b610e83838260000151846119bb565b608082015160009060d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c17609a54909150610ecb90600160e01b900463ffffffff1682612eab565b63ffffffff164210610f455760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f742070726573657276656400000000000000000000000000000000000000606482015260840161066c565b610f5260208b018b6126fc565b6bffffffffffffffffffffffff191683604001516bffffffffffffffffffffffff191614610fe85760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c65740000000000000000000000000000000000000000000000000000606482015260840161066c565b84600003610ff857816060015195505b856001600160a01b031682606001516001600160a01b03161461105d5760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c7400604482015260640161066c565b50505050808061106c90612ec8565b915050610c15565b5060019150505b9392505050565b336110956033546001600160a01b031690565b6001600160a01b0316146110eb5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161066c565b6040516001600160a01b03821681527f0e2d2343d31b085b7c4e56d1c8a6ec79f7ab07460386f1c9a1756239fe2533ac9060200160405180910390a16065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61115e611757565b6001600160a01b03811660009081526097602052604090205460ff16156111ed5760405162461bcd60e51b815260206004820152602c60248201527f54686973206164647265737320697320616c726561647920612070726f706f7360448201527f616c207375626d69747465720000000000000000000000000000000000000000606482015260840161066c565b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517fe7005265f76a2d6482aaa3a0e969edd45868e3210ff126216a0425f83af1ef209190a250565b611241611757565b60408051808201909152600080825260208201526bffffffffffffffffffffffff19821660009081526098602090815260409091208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff1916176401000000008360048111156112b7576112b7612717565b0217905550506040516bffffffffffffffffffffffff19831691507f5ea2f0397ee52fe8e2e6460e92b334c996f3580dc76c022d41b290cb985f41e690600090a250565b611303611757565b609b805461ffff191661ffff83169081179091556040519081527fcc7b63f885d59808f386320218caf8e6bdaa095b61927dea4e59f9cf6954beab9060200161049f565b61134f611757565b609b805465ffffffff000019166201000063ffffffff8416908102919091179091556040519081527fafb79fa073ff248ba2f1cd9798891f4ee776a03c9f860eccdebcb1837305a1979060200161049f565b60005a90506113b083836104aa565b606554609b546001600160a01b0390911690637ad226dc9062010000900463ffffffff165a6113df9085612ee1565b6113e99190612ef4565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b15801561142857600080fd5b505af115801561143c573d6000803e3d6000fd5b50505050505050565b600054610100900460ff16158080156114655750600054600160ff909116105b8061147f5750303b15801561147f575060005460ff166001145b6114f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161066c565b6000805460ff191660011790558015611514576000805461ff0019166101001790555b61151c611c19565b6099805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fa9de2f3a000000000000000000000000000000000000000000000000000000008152905163a9de2f3a916004808201926080929091908290030181865afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190612f07565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055609a80549290911677ffffffffffffffffffffffffffffffffffffffffffffffff199092169190911775384000000000000000000000000000000000000000001777ffffffffffffffffffffffffffffffffffffffffffffffff167e01518000001c200000000000000000000000000000000000000000000000001790555050609b805465ffffffffffff19166361a8000517905580156116c3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6116cf611757565b6001600160a01b03811661174b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161066c565b611754816117b1565b50565b6033546001600160a01b031633146109bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066c565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600082116118865760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f742060448201527f6265207a65726f00000000000000000000000000000000000000000000000000606482015260840161066c565b60006118928284612f7c565b90506000826118a18386612ee1565b6118ab9190612f90565b90506000609960009054906101000a90046001600160a01b03166001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190612fa4565b5092505067ffffffffffffffff821690506119418484612ef4565b11156119b45760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f2060448201527f6869676800000000000000000000000000000000000000000000000000000000606482015260840161066c565b5050505050565b8051805160208083015160408085015160609095015190516000956119fd956119e99590949391920161301f565b604051602081830303815290604052611c8c565b84519091508114611a765760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d617463680000000000000000000000000000000000000000000000606482015260840161066c565b6000838360200151846040015185606001518660800151604051602001611aa1959493929190613055565b60405160208183030381529060405290506000611ad9866020015163ffffffff16856000015160400151611cb390919063ffffffff16565b90506000611ae682611e97565b905080516014148015611b285750611afd83611eb1565b6bffffffffffffffffffffffff1916611b17826000611ed8565b6bffffffffffffffffffffffff1916145b15611b365750505050505050565b80516020148015611b9d5750600283604051611b5291906132ea565b602060405180830381855afa158015611b6f573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611b9291906132f6565b611b9b82611ee7565b145b15611bab5750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d617463680000000000000000000000000000000000606482015260840161066c565b600054610100900460ff16611c845760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161066c565b6109bb611f02565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611cc185611f76565b909250905060018201611d3c5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015260840161066c565b808410611d8b5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e000000000000000000000000000000604482015260640161066c565b600080611d99846001612ef4565b905060005b86811015611e2157611db08883611f8d565b92506000198303611e035760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161066c565b611e0d8383612ef4565b915080611e1981612ec8565b915050611d9e565b50611e2c8782611f8d565b91506000198203611e7f5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161066c565b611e8a878284611ffa565b9450505050505b92915050565b6060611e91826008808551611eac9190612ee1565b6120c7565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b600061107b8383016020015190565b60008151600003611efa57506000919050565b506020015190565b600054610100900460ff16611f6d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161066c565b6109bb336117b1565b600080611f848360006123cc565b91509150915091565b6000611f9a826009612ef4565b83511015611fab5750600019611e91565b600080611fc285611fbd866008612ef4565b6123cc565b909250905060018201611fdb5760001992505050611e91565b80611fe7836009612ef4565b611ff19190612ef4565b95945050505050565b606081600003612019575060408051602081019091526000815261107b565b60006120258385612ef4565b90508381118015612037575080855110155b6120835760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e647300000000000000000000000000604482015260640161066c565b604051915082604083010160405282825283850182038460208701018481015b808210156120bc578151838301526020820191506120a3565b505050509392505050565b606060008484815181106120dd576120dd612ba8565b016020015160f81c9050826120f382600161330f565b60ff161461211157505060408051602081019091526000815261107b565b8461211d856001612ef4565b8151811061212d5761212d612ba8565b016020015160f81c6000036121ec5760028160ff16101561215e57505060408051602081019091526000815261107b565b60008561216c866002612ef4565b8151811061217c5761217c612ba8565b016020015160f81c9050612191600283613328565b60ff16811415806121af5750806020141580156121af575080601414155b156121cd57604051806020016040528060008152509250505061107b565b6121e36121db866003612ef4565b879083611ffa565b9250505061107b565b60006121f88686611ed8565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a900000000000000000000000000000000000000000000000000000000000361230c578561224f866003612ef4565b8151811061225f5761225f612ba8565b60209101015160f81c60141415806122d7575061229260026122818688612ef4565b61228b9190612ee1565b8790611ed8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b156122f557604051806020016040528060008152509250505061107b565b6121e3612303866004612ef4565b87906014611ffa565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a9140000000000000000000000000000000000000000000000000000000000036123b3578560016123628688612ef4565b61236c9190612ee1565b8151811061237c5761237c612ba8565b60209101015160f81c6087146123a557604051806020016040528060008152509250505061107b565b6121e3612303866003612ef4565b5050506040805160208101909152600081529392505050565b60008060006123db8585612570565b90508060ff166000036124105760008585815181106123fc576123fc612ba8565b016020015190935060f81c91506125699050565b8361241c82600161330f565b60ff166124299190612ef4565b855110156124405760001960009250925050612569565b60008160ff166002036124845761247961246561245e876001612ef4565b8890611ed8565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061255f565b8160ff166004036124d3576124c66124a061245e876001612ef4565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061255f565b8160ff1660080361255f576125526124ef61245e876001612ef4565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600082828151811061258457612584612ba8565b016020015160f81c60ff0361259b57506008611e91565b8282815181106125ad576125ad612ba8565b016020015160f81c60fe036125c457506004611e91565b8282815181106125d6576125d6612ba8565b016020015160f81c60fd036125ed57506002611e91565b50600092915050565b63ffffffff8116811461175457600080fd5b60006020828403121561261a57600080fd5b813561107b816125f6565b60006060828403121561263757600080fd5b50919050565b6000806040838503121561265057600080fd5b823567ffffffffffffffff8082111561266857600080fd5b61267486838701612625565b9350602085013591508082111561268a57600080fd5b5083016040818603121561269d57600080fd5b809150509250929050565b6001600160a01b038116811461175457600080fd5b6000602082840312156126cf57600080fd5b813561107b816126a8565b80356bffffffffffffffffffffffff19811681146126f757600080fd5b919050565b60006020828403121561270e57600080fd5b61107b826126da565b634e487b7160e01b600052602160045260246000fd5b63ffffffff83168152604081016005831061275857634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b60008060006040848603121561277a57600080fd5b833567ffffffffffffffff8082111561279257600080fd5b61279e87838801612625565b945060208601359150808211156127b457600080fd5b818601915086601f8301126127c857600080fd5b8135818111156127d757600080fd5b8760208260051b85010111156127ec57600080fd5b6020830194508093505050509250925092565b60006020828403121561281157600080fd5b813561ffff8116811461107b57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff8111828210171561285d5761285d612823565b60405290565b60405160a0810167ffffffffffffffff8111828210171561285d5761285d612823565b6040516080810167ffffffffffffffff8111828210171561285d5761285d612823565b805167ffffffffffffffff811681146126f757600080fd5b80516126f7816125f6565b8051600681106126f757600080fd5b600061012082840312156128ee57600080fd5b6128f6612839565b8251815260208301516020820152612910604084016128a9565b6040820152612921606084016128c1565b6060820152612932608084016128c1565b608082015261294360a084016128c1565b60a082015261295460c084016128c1565b60c082015261296560e084016128cc565b60e0820152610100928301519281019290925250919050565b6000808335601e1984360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b6020019150600581901b360382131561256957600080fd5b85815260806020808301829052908201859052600090869060a08401835b88811015612a115783356129f9816125f6565b63ffffffff16825292820192908201906001016129e6565b506001600160a01b03969096166040850152505050606001529392505050565b600060208284031215612a4357600080fd5b8151801515811461107b57600080fd5b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115612a8657612a86612a53565b5092915050565b60006020808352608083016bffffffffffffffffffffffff19612aaf866126da565b168285015281850135601e19863603018112612aca57600080fd5b8501828101903567ffffffffffffffff811115612ae657600080fd5b8060061b3603821315612af857600080fd5b60406060818801528382855260a088019050839450600093505b82841015612b47578435815285850135612b2b816125f6565b63ffffffff168187015293810193600193909301928101612b12565b970135606096909601959095525093949350505050565b6000808335601e19843603018112612b7557600080fd5b83018035915067ffffffffffffffff821115612b9057600080fd5b6020019150600681901b360382131561256957600080fd5b634e487b7160e01b600052603260045260246000fd5b600060408284031215612bd057600080fd5b6040516040810181811067ffffffffffffffff82111715612bf357612bf3612823565b604052823581526020830135612c08816125f6565b60208201529392505050565b60008235609e19833603018112612c2a57600080fd5b9190910192915050565b80356001600160e01b0319811681146126f757600080fd5b600082601f830112612c5d57600080fd5b813567ffffffffffffffff80821115612c7857612c78612823565b604051601f8301601f19908116603f01168101908282118183101715612ca057612ca0612823565b81604052838152866020858801011115612cb957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff19811681146126f757600080fd5b600060a08236031215612d1457600080fd5b612d1c612863565b823567ffffffffffffffff80821115612d3457600080fd5b818501915060808236031215612d4957600080fd5b612d51612886565b612d5a83612c34565b8152602083013582811115612d6e57600080fd5b612d7a36828601612c4c565b602083015250604083013582811115612d9257600080fd5b612d9e36828601612c4c565b604083015250612db060608401612c34565b6060820152835250612dc6905060208401612cd9565b6020820152612dd7604084016126da565b6040820152612de8606084016126da565b6060820152612df960808401612c34565b608082015292915050565b600060c08284031215612e1657600080fd5b60405160c0810181811067ffffffffffffffff82111715612e3957612e39612823565b6040528251612e47816126a8565b8152612e55602084016128a9565b60208201526040830151612e68816125f6565b60408201526060830151612e7b816126a8565b6060820152612e8c608084016128a9565b608082015260a0830151612e9f816125f6565b60a08201529392505050565b63ffffffff828116828216039080821115612a8657612a86612a53565b600060018201612eda57612eda612a53565b5060010190565b81810381811115611e9157611e91612a53565b80820180821115611e9157611e91612a53565b60008060008060808587031215612f1d57600080fd5b8451612f28816126a8565b6020860151909450612f39816126a8565b6040860151909350612f4a816126a8565b6060860151909250612f5b816126a8565b939692955090935050565b634e487b7160e01b600052601260045260246000fd5b600082612f8b57612f8b612f66565b500690565b600082612f9f57612f9f612f66565b500490565b60008060008060808587031215612fba57600080fd5b612fc3856128a9565b9350612fd1602086016128a9565b9250612fdf604086016128a9565b91506060850151612f5b816125f6565b6000815160005b818110156130105760208185018101518683015201612ff6565b50600093019283525090919050565b60006001600160e01b0319808716835261304561303f6004850188612fef565b86612fef565b9316835250506004019392505050565b600560fa1b8152606086901b6bffffffffffffffffffffffff19166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f820152600061313f613132613109602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6bffffffffffffffffffffffff19861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526132036131326131096130e06131da601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6bffffffffffffffffffffffff19861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506132de6132b5600683016131b1565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b600061107b8284612fef565b60006020828403121561330857600080fd5b5051919050565b60ff8181168382160190811115611e9157611e91612a53565b60ff8281168282160390811115611e9157611e91612a5356fea2646970667358221220bea7bb91e30d70d3f7a19761bcb9f4e17546b0a7ee72da097287dc7281c4bd3164736f6c63430008110033",
745
+ "bytecode": "0x608060405234801561001057600080fd5b50613492806100206000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80638cb5a0c0116100ee578063bc20a08011610097578063e78cea9211610071578063e78cea92146103f5578063f2fde38b14610408578063f74b37bd1461041b578063fbd6d77e1461043257600080fd5b8063bc20a080146103bf578063c09975cd146103cf578063c4d66de8146103e257600080fd5b8063a34fff59116100c8578063a34fff5914610358578063acaac7051461036f578063aec320991461039c57600080fd5b80638cb5a0c01461030d5780638da5cb5b146103205780639039bc1c1461034557600080fd5b80636ed6405f1161015b5780637698fa97116101355780637698fa97146102ad5780637b35b4e6146102d05780637fbf9b39146102e357806385a0924c146102fa57600080fd5b80636ed6405f1461027f578063715018a614610292578063742b386b1461029a57600080fd5b806334173c2d1161018c57806334173c2d146102445780635486032e146102595780636348c4391461026c57600080fd5b806308553292146101b35780632c259d2b146101eb57806331d8c6221461022c575b600080fd5b609a546101d1906a0100000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b61021e6101f9366004612720565b60986020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040516101e2929190612751565b609a546101d190640100000000900463ffffffff1681565b610257610252366004612789565b610445565b005b61025761026736600461281e565b6104ec565b61025761027a366004612789565b6105f2565b61025761028d3660046128ae565b6107e7565b610257610891565b6102576102a83660046128ae565b6108a5565b6102c06102bb3660046128eb565b610a56565b60405190151581526020016101e2565b6102576102de366004612987565b61111c565b6099546101d190600160a01b900463ffffffff1681565b6102576103083660046129a4565b6111f0565b61025761031b366004612987565b6112a2565b6033546001600160a01b03165b6040516001600160a01b0390911681526020016101e2565b610257610353366004612720565b611381565b6099546101d190600160c01b900463ffffffff1681565b609a546103899068010000000000000000900461ffff1681565b60405161ffff90911681526020016101e2565b6102c06103aa366004612987565b60976020526000908152604090205460ff1681565b609a546101d19063ffffffff1681565b60655461032d906001600160a01b031681565b6102576103f0366004612987565b611439565b60995461032d906001600160a01b031681565b610257610416366004612987565b611673565b6099546101d190600160e01b900463ffffffff1681565b610257610440366004612987565b611703565b60005a90506104558484846105f2565b6065546099546001600160a01b0390911690637ad226dc90600160c01b900463ffffffff165a61048590856129f3565b61048f9190612a06565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156104ce57600080fd5b505af11580156104e2573d6000803e3d6000fd5b5050505050505050565b6104f46117e6565b609980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b63ffffffff88811691820292909217909255609a805487831667ffffffffffffffff199091168117640100000000888516908102919091176dffffffffffff000000000000000019166801000000000000000061ffff89169081026dffffffff000000000000000000001916919091176a01000000000000000000009588169586021790935560408051958652602086019290925290840152606083015260808201527fc36fe6b9d74f864b5e345edc3435eb451a80669ec78c8357cc15e3a1d3897a739060a00160405180910390a15050505050565b3360009081526097602052604090205460ff166106565760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f74206120636f6f7264696e61746f72000000000060448201526064015b60405180910390fd5b6001600160601b03198316600090815260986020526040902054839063ffffffff1642116106b65760405162461bcd60e51b815260206004820152600d60248201526c15d85b1b195d081b1bd8dad959609a1b604482015260640161064d565b6106c08383611840565b61070c5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d657373616765000000604482015260640161064d565b60408051808201909152609954819061073290600160a01b900463ffffffff1642612a19565b63ffffffff168152602001600190526001600160601b0319851660009081526098602090815260409091208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff19161764010000000083600581111561079e5761079e61273b565b02179055509050507f4dd09cf8f23ce69b68c7dc12fe74c2172499ca3168ea632bd03e5b62838d61308484846040516107d993929190612a3d565b60405180910390a150505050565b60005a90506107f5826108a5565b606554609a546001600160a01b0390911690637ad226dc906a0100000000000000000000900463ffffffff165a61082c90856129f3565b6108369190612a06565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050505050565b6108996117e6565b6108a360006118ca565b565b3360009081526097602052604090205460ff166109045760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f74206120636f6f7264696e61746f720000000000604482015260640161064d565b6109116020820182612720565b6001600160601b0319811660009081526098602052604090205463ffffffff16421161096f5760405162461bcd60e51b815260206004820152600d60248201526c15d85b1b195d081b1bd8dad959609a1b604482015260640161064d565b60408051808201909152609954819061099590600160e01b900463ffffffff1642612a19565b63ffffffff16815260200160029052609860006109b56020860186612720565b6001600160601b03191681526020808201929092526040016000208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff191617640100000000836005811115610a1157610a1161273b565b0217905550506040513391507fe17b4ed4828b9f018ca549cfd5f662e5551408093b1db16d94b9cd242e6df17190610a4a908590612a82565b60405180910390a25050565b600060016099546001600160a01b031663e65e19d5610a786020880188612720565b6040516001600160e01b031960e084901b1681526001600160601b0319909116600482015260240161012060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612c0b565b60e001516005811115610af757610af761273b565b14610b445760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c6976652073746174650000000000604482015260640161064d565b6000610b536020860186612cae565b905011610ba25760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a650000000000000000604482015260640161064d565b609a5468010000000000000000900461ffff16610bc26020860186612cae565b90501115610c125760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a65000000000000604482015260640161064d565b81610c206020860186612cae565b905014610c955760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e672065787472612064617461000000000000000000000000000000000000606482015260840161064d565b610cb16040850135610caa6020870187612cae565b9050611929565b6000805b610cc26020870187612cae565b905081101561110e576000610cda6020880188612cae565b83818110610cea57610cea612cf8565b905060400201803603810190610d009190612d0e565b90506000868684818110610d1657610d16612cf8565b9050602002810190610d289190612d64565b610d3190612e52565b60995483516020808601516040519495506000946001600160a01b039094169363b02c43d093610d7a939092910191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f1901815290829052805160209091012060e083901b6001600160e01b0319168252600482015260240160c060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190612f54565b9050806040015163ffffffff16600003610e495760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c6564000000000000000000000000604482015260640161064d565b609a546040820151610e619163ffffffff1690612a19565b63ffffffff164211610eb55760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f7420616368696576656420796574604482015260640161064d565b60a081015163ffffffff1615610f0d5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c72656164792073776570740000000000000000000000604482015260640161064d565b610f1c83826000015184611ad4565b608082015160009060d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c17609a54909150610f6590640100000000900463ffffffff1682612ffb565b63ffffffff164210610fdf5760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f742070726573657276656400000000000000000000000000000000000000606482015260840161064d565b610fec60208b018b612720565b6bffffffffffffffffffffffff191683604001516bffffffffffffffffffffffff1916146110825760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c65740000000000000000000000000000000000000000000000000000606482015260840161064d565b8460000361109257816060015195505b856001600160a01b031682606001516001600160a01b0316146110f75760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c7400604482015260640161064d565b50505050808061110690613018565b915050610cb5565b5060019150505b9392505050565b3361112f6033546001600160a01b031690565b6001600160a01b0316146111855760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161064d565b6040516001600160a01b03821681527f0e2d2343d31b085b7c4e56d1c8a6ec79f7ab07460386f1c9a1756239fe2533ac9060200160405180910390a16065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6111f86117e6565b609980547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff8581169182027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1692909217600160c01b928516928302179092556040805192835260208301919091527fe67c0a182190bf283264290d7208533d5936483c98baee174eeac036b081360a91015b60405180910390a15050565b6112aa6117e6565b6001600160a01b03811660009081526097602052604090205460ff166113385760405162461bcd60e51b815260206004820152602160248201527f546869732061646472657373206973206e6f74206120636f6f7264696e61746f60448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161064d565b6001600160a01b038116600081815260976020526040808220805460ff19169055517fcf15831020102bbbe0547b0c3460aa49715f2646e0911760d2b069e0fb2f62a19190a250565b6113896117e6565b60408051808201909152600080825260208201526001600160601b0319821660009081526098602090815260409091208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff1916176401000000008360058111156113fa576113fa61273b565b0217905550506040516001600160601b0319831691507f5ea2f0397ee52fe8e2e6460e92b334c996f3580dc76c022d41b290cb985f41e690600090a250565b600054610100900460ff16158080156114595750600054600160ff909116105b806114735750303b158015611473575060005460ff166001145b6114e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161064d565b6000805460ff191660011790558015611508576000805461ff0019166101001790555b611510611d28565b6099805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fa9de2f3a000000000000000000000000000000000000000000000000000000008152905163a9de2f3a916004808201926080929091908290030181865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b39190613031565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055609980549091167d38400000138800000e1000000000000000000000000000000000000000001790555050609a80546dffffffffffffffffffffffffffff19166b138800050001518000001c2017905550801561166f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611296565b5050565b61167b6117e6565b6001600160a01b0381166116f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161064d565b611700816118ca565b50565b61170b6117e6565b6001600160a01b03811660009081526097602052604090205460ff161561179a5760405162461bcd60e51b815260206004820152602560248201527f54686973206164647265737320697320616c7265616479206120636f6f72646960448201527f6e61746f72000000000000000000000000000000000000000000000000000000606482015260840161064d565b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517f56e6c5206d2baab7a01569b19d84b5963ca9f96e10f55076b5e5987fbf780cf59190a250565b6033546001600160a01b031633146108a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064d565b600060108214611852575060006118c4565b611896600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611d9b9050565b77ffffffffffffffffffffffffffffffffffffffffffffffff19908116146118c0575060006118c4565b5060015b92915050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000821161199f5760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f742060448201527f6265207a65726f00000000000000000000000000000000000000000000000000606482015260840161064d565b60006119ab82846130a6565b90506000826119ba83866129f3565b6119c491906130ba565b90506000609960009054906101000a90046001600160a01b03166001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f91906130ce565b5092505067ffffffffffffffff82169050611a5a8484612a06565b1115611acd5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f2060448201527f6869676800000000000000000000000000000000000000000000000000000000606482015260840161064d565b5050505050565b805180516020808301516040808501516060909501519051600095611b1695611b0295909493919201613149565b604051602081830303815290604052611daa565b84519091508114611b8f5760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d617463680000000000000000000000000000000000000000000000606482015260840161064d565b6000838360200151846040015185606001518660800151604051602001611bba95949392919061317f565b60405160208183030381529060405290506000611bf2866020015163ffffffff16856000015160400151611dd190919063ffffffff16565b90506000611bff82611fb3565b905080516014148015611c375750611c1683611fcd565b6001600160601b031916611c2b826000611d9b565b6001600160601b031916145b15611c455750505050505050565b80516020148015611cac5750600283604051611c619190613405565b602060405180830381855afa158015611c7e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611ca19190613411565b611caa82611ff4565b145b15611cba5750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d617463680000000000000000000000000000000000606482015260840161064d565b600054610100900460ff16611d935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161064d565b6108a361200f565b60006111158383016020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611ddf85612083565b909250905060018201611e5a5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015260840161064d565b808410611ea95760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e000000000000000000000000000000604482015260640161064d565b600080611eb7846001612a06565b905060005b86811015611f3f57611ece888361209a565b92506000198303611f215760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161064d565b611f2b8383612a06565b915080611f3781613018565b915050611ebc565b50611f4a878261209a565b91506000198203611f9d5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161064d565b611fa8878284612107565b979650505050505050565b60606118c4826008808551611fc891906129f3565b6121d4565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000815160000361200757506000919050565b506020015190565b600054610100900460ff1661207a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161064d565b6108a3336118ca565b6000806120918360006124d9565b91509150915091565b60006120a7826009612a06565b835110156120b857506000196118c4565b6000806120cf856120ca866008612a06565b6124d9565b9092509050600182016120e857600019925050506118c4565b806120f4836009612a06565b6120fe9190612a06565b95945050505050565b6060816000036121265750604080516020810190915260008152611115565b60006121328385612a06565b90508381118015612144575080855110155b6121905760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e647300000000000000000000000000604482015260640161064d565b604051915082604083010160405282825283850182038460208701018481015b808210156121c9578151838301526020820191506121b0565b505050509392505050565b606060008484815181106121ea576121ea612cf8565b016020015160f81c90508261220082600161342a565b60ff161461221e575050604080516020810190915260008152611115565b8461222a856001612a06565b8151811061223a5761223a612cf8565b016020015160f81c6000036122f95760028160ff16101561226b575050604080516020810190915260008152611115565b600085612279866002612a06565b8151811061228957612289612cf8565b016020015160f81c905061229e600283613443565b60ff16811415806122bc5750806020141580156122bc575080601414155b156122da576040518060200160405280600081525092505050611115565b6122f06122e8866003612a06565b879083612107565b92505050611115565b60006123058686611d9b565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a9000000000000000000000000000000000000000000000000000000000003612419578561235c866003612a06565b8151811061236c5761236c612cf8565b60209101015160f81c60141415806123e4575061239f600261238e8688612a06565b61239891906129f3565b8790611d9b565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15612402576040518060200160405280600081525092505050611115565b6122f0612410866004612a06565b87906014612107565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a9140000000000000000000000000000000000000000000000000000000000036124c05785600161246f8688612a06565b61247991906129f3565b8151811061248957612489612cf8565b60209101015160f81c6087146124b2576040518060200160405280600081525092505050611115565b6122f0612410866003612a06565b5050506040805160208101909152600081529392505050565b60008060006124e8858561267d565b90508060ff1660000361251d57600085858151811061250957612509612cf8565b016020015190935060f81c91506126769050565b8361252982600161342a565b60ff166125369190612a06565b8551101561254d5760001960009250925050612676565b60008160ff166002036125915761258661257261256b876001612a06565b8890611d9b565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061266c565b8160ff166004036125e0576125d36125ad61256b876001612a06565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061266c565b8160ff1660080361266c5761265f6125fc61256b876001612a06565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600082828151811061269157612691612cf8565b016020015160f81c60ff036126a8575060086118c4565b8282815181106126ba576126ba612cf8565b016020015160f81c60fe036126d1575060046118c4565b8282815181106126e3576126e3612cf8565b016020015160f81c60fd036126fa575060026118c4565b50600092915050565b80356001600160601b03198116811461271b57600080fd5b919050565b60006020828403121561273257600080fd5b61111582612703565b634e487b7160e01b600052602160045260246000fd5b63ffffffff83168152604081016006831061277c57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b60008060006040848603121561279e57600080fd5b6127a784612703565b9250602084013567ffffffffffffffff808211156127c457600080fd5b818601915086601f8301126127d857600080fd5b8135818111156127e757600080fd5b8760208285010111156127f957600080fd5b6020830194508093505050509250925092565b63ffffffff8116811461170057600080fd5b600080600080600060a0868803121561283657600080fd5b85356128418161280c565b945060208601356128518161280c565b935060408601356128618161280c565b9250606086013561ffff8116811461287857600080fd5b915060808601356128888161280c565b809150509295509295909350565b6000606082840312156128a857600080fd5b50919050565b6000602082840312156128c057600080fd5b813567ffffffffffffffff8111156128d757600080fd5b6128e384828501612896565b949350505050565b60008060006040848603121561290057600080fd5b833567ffffffffffffffff8082111561291857600080fd5b61292487838801612896565b9450602086013591508082111561293a57600080fd5b818601915086601f83011261294e57600080fd5b81358181111561295d57600080fd5b8760208260051b85010111156127f957600080fd5b6001600160a01b038116811461170057600080fd5b60006020828403121561299957600080fd5b813561111581612972565b600080604083850312156129b757600080fd5b82356129c28161280c565b915060208301356129d28161280c565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156118c4576118c46129dd565b808201808211156118c4576118c46129dd565b63ffffffff818116838216019080821115612a3657612a366129dd565b5092915050565b6bffffffffffffffffffffffff198416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020808352608083016bffffffffffffffffffffffff19612aa486612703565b168285015281850135601e19863603018112612abf57600080fd5b8501828101903567ffffffffffffffff811115612adb57600080fd5b8060061b3603821315612aed57600080fd5b60406060818801528382855260a088019050839450600093505b82841015612b3c578435815285850135612b208161280c565b63ffffffff168187015293810193600193909301928101612b07565b970135606096909601959095525093949350505050565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715612b8d57612b8d612b53565b60405290565b60405160a0810167ffffffffffffffff81118282101715612b8d57612b8d612b53565b6040516080810167ffffffffffffffff81118282101715612b8d57612b8d612b53565b805167ffffffffffffffff8116811461271b57600080fd5b805161271b8161280c565b80516006811061271b57600080fd5b60006101208284031215612c1e57600080fd5b612c26612b69565b8251815260208301516020820152612c4060408401612bd9565b6040820152612c5160608401612bf1565b6060820152612c6260808401612bf1565b6080820152612c7360a08401612bf1565b60a0820152612c8460c08401612bf1565b60c0820152612c9560e08401612bfc565b60e0820152610100928301519281019290925250919050565b6000808335601e19843603018112612cc557600080fd5b83018035915067ffffffffffffffff821115612ce057600080fd5b6020019150600681901b360382131561267657600080fd5b634e487b7160e01b600052603260045260246000fd5b600060408284031215612d2057600080fd5b6040516040810181811067ffffffffffffffff82111715612d4357612d43612b53565b604052823581526020830135612d588161280c565b60208201529392505050565b60008235609e19833603018112612d7a57600080fd5b9190910192915050565b80356001600160e01b03198116811461271b57600080fd5b600082601f830112612dad57600080fd5b813567ffffffffffffffff80821115612dc857612dc8612b53565b604051601f8301601f19908116603f01168101908282118183101715612df057612df0612b53565b81604052838152866020858801011115612e0957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff198116811461271b57600080fd5b600060a08236031215612e6457600080fd5b612e6c612b93565b823567ffffffffffffffff80821115612e8457600080fd5b818501915060808236031215612e9957600080fd5b612ea1612bb6565b612eaa83612d84565b8152602083013582811115612ebe57600080fd5b612eca36828601612d9c565b602083015250604083013582811115612ee257600080fd5b612eee36828601612d9c565b604083015250612f0060608401612d84565b6060820152835250612f16905060208401612e29565b6020820152612f2760408401612703565b6040820152612f3860608401612703565b6060820152612f4960808401612d84565b608082015292915050565b600060c08284031215612f6657600080fd5b60405160c0810181811067ffffffffffffffff82111715612f8957612f89612b53565b6040528251612f9781612972565b8152612fa560208401612bd9565b60208201526040830151612fb88161280c565b60408201526060830151612fcb81612972565b6060820152612fdc60808401612bd9565b608082015260a0830151612fef8161280c565b60a08201529392505050565b63ffffffff828116828216039080821115612a3657612a366129dd565b60006001820161302a5761302a6129dd565b5060010190565b6000806000806080858703121561304757600080fd5b845161305281612972565b602086015190945061306381612972565b604086015190935061307481612972565b606086015190925061308581612972565b939692955090935050565b634e487b7160e01b600052601260045260246000fd5b6000826130b5576130b5613090565b500690565b6000826130c9576130c9613090565b500490565b600080600080608085870312156130e457600080fd5b6130ed85612bd9565b93506130fb60208601612bd9565b925061310960408601612bd9565b915060608501516130858161280c565b6000815160005b8181101561313a5760208185018101518683015201613120565b50600093019283525090919050565b60006001600160e01b0319808716835261316f6131696004850188613119565b86613119565b9316835250506004019392505050565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f820152600061326461325761322e602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f6300000000000000000000000000000000000000000000000000000000000000601582015261332361325761322e6132056132fa601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506133f96133d0600683016132d1565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b60006111158284613119565b60006020828403121561342357600080fd5b5051919050565b60ff81811683821601908111156118c4576118c46129dd565b60ff82811682821603908111156118c4576118c46129dd56fea2646970667358221220659449f16d53950f95a598d9ccaa3572bc18accf13f32261b7414b30c8e2c80164736f6c63430008110033",
746
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80638cb5a0c0116100ee578063bc20a08011610097578063e78cea9211610071578063e78cea92146103f5578063f2fde38b14610408578063f74b37bd1461041b578063fbd6d77e1461043257600080fd5b8063bc20a080146103bf578063c09975cd146103cf578063c4d66de8146103e257600080fd5b8063a34fff59116100c8578063a34fff5914610358578063acaac7051461036f578063aec320991461039c57600080fd5b80638cb5a0c01461030d5780638da5cb5b146103205780639039bc1c1461034557600080fd5b80636ed6405f1161015b5780637698fa97116101355780637698fa97146102ad5780637b35b4e6146102d05780637fbf9b39146102e357806385a0924c146102fa57600080fd5b80636ed6405f1461027f578063715018a614610292578063742b386b1461029a57600080fd5b806334173c2d1161018c57806334173c2d146102445780635486032e146102595780636348c4391461026c57600080fd5b806308553292146101b35780632c259d2b146101eb57806331d8c6221461022c575b600080fd5b609a546101d1906a0100000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b61021e6101f9366004612720565b60986020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040516101e2929190612751565b609a546101d190640100000000900463ffffffff1681565b610257610252366004612789565b610445565b005b61025761026736600461281e565b6104ec565b61025761027a366004612789565b6105f2565b61025761028d3660046128ae565b6107e7565b610257610891565b6102576102a83660046128ae565b6108a5565b6102c06102bb3660046128eb565b610a56565b60405190151581526020016101e2565b6102576102de366004612987565b61111c565b6099546101d190600160a01b900463ffffffff1681565b6102576103083660046129a4565b6111f0565b61025761031b366004612987565b6112a2565b6033546001600160a01b03165b6040516001600160a01b0390911681526020016101e2565b610257610353366004612720565b611381565b6099546101d190600160c01b900463ffffffff1681565b609a546103899068010000000000000000900461ffff1681565b60405161ffff90911681526020016101e2565b6102c06103aa366004612987565b60976020526000908152604090205460ff1681565b609a546101d19063ffffffff1681565b60655461032d906001600160a01b031681565b6102576103f0366004612987565b611439565b60995461032d906001600160a01b031681565b610257610416366004612987565b611673565b6099546101d190600160e01b900463ffffffff1681565b610257610440366004612987565b611703565b60005a90506104558484846105f2565b6065546099546001600160a01b0390911690637ad226dc90600160c01b900463ffffffff165a61048590856129f3565b61048f9190612a06565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156104ce57600080fd5b505af11580156104e2573d6000803e3d6000fd5b5050505050505050565b6104f46117e6565b609980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b63ffffffff88811691820292909217909255609a805487831667ffffffffffffffff199091168117640100000000888516908102919091176dffffffffffff000000000000000019166801000000000000000061ffff89169081026dffffffff000000000000000000001916919091176a01000000000000000000009588169586021790935560408051958652602086019290925290840152606083015260808201527fc36fe6b9d74f864b5e345edc3435eb451a80669ec78c8357cc15e3a1d3897a739060a00160405180910390a15050505050565b3360009081526097602052604090205460ff166106565760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f74206120636f6f7264696e61746f72000000000060448201526064015b60405180910390fd5b6001600160601b03198316600090815260986020526040902054839063ffffffff1642116106b65760405162461bcd60e51b815260206004820152600d60248201526c15d85b1b195d081b1bd8dad959609a1b604482015260640161064d565b6106c08383611840565b61070c5760405162461bcd60e51b815260206004820152601d60248201527f4e6f7420612076616c696420686561727462656174206d657373616765000000604482015260640161064d565b60408051808201909152609954819061073290600160a01b900463ffffffff1642612a19565b63ffffffff168152602001600190526001600160601b0319851660009081526098602090815260409091208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff19161764010000000083600581111561079e5761079e61273b565b02179055509050507f4dd09cf8f23ce69b68c7dc12fe74c2172499ca3168ea632bd03e5b62838d61308484846040516107d993929190612a3d565b60405180910390a150505050565b60005a90506107f5826108a5565b606554609a546001600160a01b0390911690637ad226dc906a0100000000000000000000900463ffffffff165a61082c90856129f3565b6108369190612a06565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050505050565b6108996117e6565b6108a360006118ca565b565b3360009081526097602052604090205460ff166109045760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f74206120636f6f7264696e61746f720000000000604482015260640161064d565b6109116020820182612720565b6001600160601b0319811660009081526098602052604090205463ffffffff16421161096f5760405162461bcd60e51b815260206004820152600d60248201526c15d85b1b195d081b1bd8dad959609a1b604482015260640161064d565b60408051808201909152609954819061099590600160e01b900463ffffffff1642612a19565b63ffffffff16815260200160029052609860006109b56020860186612720565b6001600160601b03191681526020808201929092526040016000208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff191617640100000000836005811115610a1157610a1161273b565b0217905550506040513391507fe17b4ed4828b9f018ca549cfd5f662e5551408093b1db16d94b9cd242e6df17190610a4a908590612a82565b60405180910390a25050565b600060016099546001600160a01b031663e65e19d5610a786020880188612720565b6040516001600160e01b031960e084901b1681526001600160601b0319909116600482015260240161012060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612c0b565b60e001516005811115610af757610af761273b565b14610b445760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c6976652073746174650000000000604482015260640161064d565b6000610b536020860186612cae565b905011610ba25760405162461bcd60e51b815260206004820152601860248201527f53776565702062656c6f7720746865206d696e2073697a650000000000000000604482015260640161064d565b609a5468010000000000000000900461ffff16610bc26020860186612cae565b90501115610c125760405162461bcd60e51b815260206004820152601a60248201527f5377656570206578636565647320746865206d61782073697a65000000000000604482015260640161064d565b81610c206020860186612cae565b905014610c955760405162461bcd60e51b815260206004820152602e60248201527f45616368206465706f736974206b6579206d7573742068617665206d6174636860448201527f696e672065787472612064617461000000000000000000000000000000000000606482015260840161064d565b610cb16040850135610caa6020870187612cae565b9050611929565b6000805b610cc26020870187612cae565b905081101561110e576000610cda6020880188612cae565b83818110610cea57610cea612cf8565b905060400201803603810190610d009190612d0e565b90506000868684818110610d1657610d16612cf8565b9050602002810190610d289190612d64565b610d3190612e52565b60995483516020808601516040519495506000946001600160a01b039094169363b02c43d093610d7a939092910191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f1901815290829052805160209091012060e083901b6001600160e01b0319168252600482015260240160c060405180830381865afa158015610dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ded9190612f54565b9050806040015163ffffffff16600003610e495760405162461bcd60e51b815260206004820152601460248201527f4465706f736974206e6f742072657665616c6564000000000000000000000000604482015260640161064d565b609a546040820151610e619163ffffffff1690612a19565b63ffffffff164211610eb55760405162461bcd60e51b815260206004820181905260248201527f4465706f736974206d696e20616765206e6f7420616368696576656420796574604482015260640161064d565b60a081015163ffffffff1615610f0d5760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c72656164792073776570740000000000000000000000604482015260640161064d565b610f1c83826000015184611ad4565b608082015160009060d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c17609a54909150610f6590640100000000900463ffffffff1682612ffb565b63ffffffff164210610fdf5760405162461bcd60e51b815260206004820152602d60248201527f4465706f73697420726566756e6420736166657479206d617267696e2069732060448201527f6e6f742070726573657276656400000000000000000000000000000000000000606482015260840161064d565b610fec60208b018b612720565b6bffffffffffffffffffffffff191683604001516bffffffffffffffffffffffff1916146110825760405162461bcd60e51b815260206004820152602660248201527f4465706f73697420636f6e74726f6c6c656420627920646966666572656e742060448201527f77616c6c65740000000000000000000000000000000000000000000000000000606482015260840161064d565b8460000361109257816060015195505b856001600160a01b031682606001516001600160a01b0316146110f75760405162461bcd60e51b815260206004820152601f60248201527f4465706f736974207461726765747320646966666572656e74207661756c7400604482015260640161064d565b50505050808061110690613018565b915050610cb5565b5060019150505b9392505050565b3361112f6033546001600160a01b031690565b6001600160a01b0316146111855760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161064d565b6040516001600160a01b03821681527f0e2d2343d31b085b7c4e56d1c8a6ec79f7ab07460386f1c9a1756239fe2533ac9060200160405180910390a16065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6111f86117e6565b609980547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff8581169182027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1692909217600160c01b928516928302179092556040805192835260208301919091527fe67c0a182190bf283264290d7208533d5936483c98baee174eeac036b081360a91015b60405180910390a15050565b6112aa6117e6565b6001600160a01b03811660009081526097602052604090205460ff166113385760405162461bcd60e51b815260206004820152602160248201527f546869732061646472657373206973206e6f74206120636f6f7264696e61746f60448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161064d565b6001600160a01b038116600081815260976020526040808220805460ff19169055517fcf15831020102bbbe0547b0c3460aa49715f2646e0911760d2b069e0fb2f62a19190a250565b6113896117e6565b60408051808201909152600080825260208201526001600160601b0319821660009081526098602090815260409091208251815463ffffffff90911663ffffffff19821681178355928401519192839164ffffffffff1916176401000000008360058111156113fa576113fa61273b565b0217905550506040516001600160601b0319831691507f5ea2f0397ee52fe8e2e6460e92b334c996f3580dc76c022d41b290cb985f41e690600090a250565b600054610100900460ff16158080156114595750600054600160ff909116105b806114735750303b158015611473575060005460ff166001145b6114e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161064d565b6000805460ff191660011790558015611508576000805461ff0019166101001790555b611510611d28565b6099805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155604080517fa9de2f3a000000000000000000000000000000000000000000000000000000008152905163a9de2f3a916004808201926080929091908290030181865afa15801561158f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b39190613031565b6065805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03928316179055609980549091167d38400000138800000e1000000000000000000000000000000000000000001790555050609a80546dffffffffffffffffffffffffffff19166b138800050001518000001c2017905550801561166f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611296565b5050565b61167b6117e6565b6001600160a01b0381166116f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161064d565b611700816118ca565b50565b61170b6117e6565b6001600160a01b03811660009081526097602052604090205460ff161561179a5760405162461bcd60e51b815260206004820152602560248201527f54686973206164647265737320697320616c7265616479206120636f6f72646960448201527f6e61746f72000000000000000000000000000000000000000000000000000000606482015260840161064d565b6001600160a01b038116600081815260976020526040808220805460ff19166001179055517f56e6c5206d2baab7a01569b19d84b5963ca9f96e10f55076b5e5987fbf780cf59190a250565b6033546001600160a01b031633146108a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064d565b600060108214611852575060006118c4565b611896600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611d9b9050565b77ffffffffffffffffffffffffffffffffffffffffffffffff19908116146118c0575060006118c4565b5060015b92915050565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000821161199f5760405162461bcd60e51b815260206004820152602760248201527f50726f706f736564207472616e73616374696f6e206665652063616e6e6f742060448201527f6265207a65726f00000000000000000000000000000000000000000000000000606482015260840161064d565b60006119ab82846130a6565b90506000826119ba83866129f3565b6119c491906130ba565b90506000609960009054906101000a90046001600160a01b03166001600160a01b031663c42b64d06040518163ffffffff1660e01b8152600401608060405180830381865afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f91906130ce565b5092505067ffffffffffffffff82169050611a5a8484612a06565b1115611acd5760405162461bcd60e51b8152602060048201526024808201527f50726f706f736564207472616e73616374696f6e2066656520697320746f6f2060448201527f6869676800000000000000000000000000000000000000000000000000000000606482015260840161064d565b5050505050565b805180516020808301516040808501516060909501519051600095611b1695611b0295909493919201613149565b604051602081830303815290604052611daa565b84519091508114611b8f5760405162461bcd60e51b815260206004820152602960248201527f457874726120696e666f2066756e64696e67207478206861736820646f65732060448201527f6e6f74206d617463680000000000000000000000000000000000000000000000606482015260840161064d565b6000838360200151846040015185606001518660800151604051602001611bba95949392919061317f565b60405160208183030381529060405290506000611bf2866020015163ffffffff16856000015160400151611dd190919063ffffffff16565b90506000611bff82611fb3565b905080516014148015611c375750611c1683611fcd565b6001600160601b031916611c2b826000611d9b565b6001600160601b031916145b15611c455750505050505050565b80516020148015611cac5750600283604051611c619190613405565b602060405180830381855afa158015611c7e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611ca19190613411565b611caa82611ff4565b145b15611cba5750505050505050565b60405162461bcd60e51b815260206004820152602f60248201527f457874726120696e666f2066756e64696e67206f75747075742073637269707460448201527f20646f6573206e6f74206d617463680000000000000000000000000000000000606482015260840161064d565b600054610100900460ff16611d935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161064d565b6108a361200f565b60006111158383016020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6060600080611ddf85612083565b909250905060018201611e5a5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015260840161064d565b808410611ea95760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e000000000000000000000000000000604482015260640161064d565b600080611eb7846001612a06565b905060005b86811015611f3f57611ece888361209a565b92506000198303611f215760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161064d565b611f2b8383612a06565b915080611f3781613018565b915050611ebc565b50611f4a878261209a565b91506000198203611f9d5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b6579000000000000604482015260640161064d565b611fa8878284612107565b979650505050505050565b60606118c4826008808551611fc891906129f3565b6121d4565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000815160000361200757506000919050565b506020015190565b600054610100900460ff1661207a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161064d565b6108a3336118ca565b6000806120918360006124d9565b91509150915091565b60006120a7826009612a06565b835110156120b857506000196118c4565b6000806120cf856120ca866008612a06565b6124d9565b9092509050600182016120e857600019925050506118c4565b806120f4836009612a06565b6120fe9190612a06565b95945050505050565b6060816000036121265750604080516020810190915260008152611115565b60006121328385612a06565b90508381118015612144575080855110155b6121905760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e647300000000000000000000000000604482015260640161064d565b604051915082604083010160405282825283850182038460208701018481015b808210156121c9578151838301526020820191506121b0565b505050509392505050565b606060008484815181106121ea576121ea612cf8565b016020015160f81c90508261220082600161342a565b60ff161461221e575050604080516020810190915260008152611115565b8461222a856001612a06565b8151811061223a5761223a612cf8565b016020015160f81c6000036122f95760028160ff16101561226b575050604080516020810190915260008152611115565b600085612279866002612a06565b8151811061228957612289612cf8565b016020015160f81c905061229e600283613443565b60ff16811415806122bc5750806020141580156122bc575080601414155b156122da576040518060200160405280600081525092505050611115565b6122f06122e8866003612a06565b879083612107565b92505050611115565b60006123058686611d9b565b90507fffffff000000000000000000000000000000000000000000000000000000000081167f1976a9000000000000000000000000000000000000000000000000000000000003612419578561235c866003612a06565b8151811061236c5761236c612cf8565b60209101015160f81c60141415806123e4575061239f600261238e8688612a06565b61239891906129f3565b8790611d9b565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15612402576040518060200160405280600081525092505050611115565b6122f0612410866004612a06565b87906014612107565b7fffffff000000000000000000000000000000000000000000000000000000000081167f17a9140000000000000000000000000000000000000000000000000000000000036124c05785600161246f8688612a06565b61247991906129f3565b8151811061248957612489612cf8565b60209101015160f81c6087146124b2576040518060200160405280600081525092505050611115565b6122f0612410866003612a06565b5050506040805160208101909152600081529392505050565b60008060006124e8858561267d565b90508060ff1660000361251d57600085858151811061250957612509612cf8565b016020015190935060f81c91506126769050565b8361252982600161342a565b60ff166125369190612a06565b8551101561254d5760001960009250925050612676565b60008160ff166002036125915761258661257261256b876001612a06565b8890611d9b565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061266c565b8160ff166004036125e0576125d36125ad61256b876001612a06565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061266c565b8160ff1660080361266c5761265f6125fc61256b876001612a06565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b67ffffffffffffffff1666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b67ffffffffffffffff1690505b60ff909116925090505b9250929050565b600082828151811061269157612691612cf8565b016020015160f81c60ff036126a8575060086118c4565b8282815181106126ba576126ba612cf8565b016020015160f81c60fe036126d1575060046118c4565b8282815181106126e3576126e3612cf8565b016020015160f81c60fd036126fa575060026118c4565b50600092915050565b80356001600160601b03198116811461271b57600080fd5b919050565b60006020828403121561273257600080fd5b61111582612703565b634e487b7160e01b600052602160045260246000fd5b63ffffffff83168152604081016006831061277c57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b60008060006040848603121561279e57600080fd5b6127a784612703565b9250602084013567ffffffffffffffff808211156127c457600080fd5b818601915086601f8301126127d857600080fd5b8135818111156127e757600080fd5b8760208285010111156127f957600080fd5b6020830194508093505050509250925092565b63ffffffff8116811461170057600080fd5b600080600080600060a0868803121561283657600080fd5b85356128418161280c565b945060208601356128518161280c565b935060408601356128618161280c565b9250606086013561ffff8116811461287857600080fd5b915060808601356128888161280c565b809150509295509295909350565b6000606082840312156128a857600080fd5b50919050565b6000602082840312156128c057600080fd5b813567ffffffffffffffff8111156128d757600080fd5b6128e384828501612896565b949350505050565b60008060006040848603121561290057600080fd5b833567ffffffffffffffff8082111561291857600080fd5b61292487838801612896565b9450602086013591508082111561293a57600080fd5b818601915086601f83011261294e57600080fd5b81358181111561295d57600080fd5b8760208260051b85010111156127f957600080fd5b6001600160a01b038116811461170057600080fd5b60006020828403121561299957600080fd5b813561111581612972565b600080604083850312156129b757600080fd5b82356129c28161280c565b915060208301356129d28161280c565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156118c4576118c46129dd565b808201808211156118c4576118c46129dd565b63ffffffff818116838216019080821115612a3657612a366129dd565b5092915050565b6bffffffffffffffffffffffff198416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020808352608083016bffffffffffffffffffffffff19612aa486612703565b168285015281850135601e19863603018112612abf57600080fd5b8501828101903567ffffffffffffffff811115612adb57600080fd5b8060061b3603821315612aed57600080fd5b60406060818801528382855260a088019050839450600093505b82841015612b3c578435815285850135612b208161280c565b63ffffffff168187015293810193600193909301928101612b07565b970135606096909601959095525093949350505050565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715612b8d57612b8d612b53565b60405290565b60405160a0810167ffffffffffffffff81118282101715612b8d57612b8d612b53565b6040516080810167ffffffffffffffff81118282101715612b8d57612b8d612b53565b805167ffffffffffffffff8116811461271b57600080fd5b805161271b8161280c565b80516006811061271b57600080fd5b60006101208284031215612c1e57600080fd5b612c26612b69565b8251815260208301516020820152612c4060408401612bd9565b6040820152612c5160608401612bf1565b6060820152612c6260808401612bf1565b6080820152612c7360a08401612bf1565b60a0820152612c8460c08401612bf1565b60c0820152612c9560e08401612bfc565b60e0820152610100928301519281019290925250919050565b6000808335601e19843603018112612cc557600080fd5b83018035915067ffffffffffffffff821115612ce057600080fd5b6020019150600681901b360382131561267657600080fd5b634e487b7160e01b600052603260045260246000fd5b600060408284031215612d2057600080fd5b6040516040810181811067ffffffffffffffff82111715612d4357612d43612b53565b604052823581526020830135612d588161280c565b60208201529392505050565b60008235609e19833603018112612d7a57600080fd5b9190910192915050565b80356001600160e01b03198116811461271b57600080fd5b600082601f830112612dad57600080fd5b813567ffffffffffffffff80821115612dc857612dc8612b53565b604051601f8301601f19908116603f01168101908282118183101715612df057612df0612b53565b81604052838152866020858801011115612e0957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803577ffffffffffffffffffffffffffffffffffffffffffffffff198116811461271b57600080fd5b600060a08236031215612e6457600080fd5b612e6c612b93565b823567ffffffffffffffff80821115612e8457600080fd5b818501915060808236031215612e9957600080fd5b612ea1612bb6565b612eaa83612d84565b8152602083013582811115612ebe57600080fd5b612eca36828601612d9c565b602083015250604083013582811115612ee257600080fd5b612eee36828601612d9c565b604083015250612f0060608401612d84565b6060820152835250612f16905060208401612e29565b6020820152612f2760408401612703565b6040820152612f3860608401612703565b6060820152612f4960808401612d84565b608082015292915050565b600060c08284031215612f6657600080fd5b60405160c0810181811067ffffffffffffffff82111715612f8957612f89612b53565b6040528251612f9781612972565b8152612fa560208401612bd9565b60208201526040830151612fb88161280c565b60408201526060830151612fcb81612972565b6060820152612fdc60808401612bd9565b608082015260a0830151612fef8161280c565b60a08201529392505050565b63ffffffff828116828216039080821115612a3657612a366129dd565b60006001820161302a5761302a6129dd565b5060010190565b6000806000806080858703121561304757600080fd5b845161305281612972565b602086015190945061306381612972565b604086015190935061307481612972565b606086015190925061308581612972565b939692955090935050565b634e487b7160e01b600052601260045260246000fd5b6000826130b5576130b5613090565b500690565b6000826130c9576130c9613090565b500490565b600080600080608085870312156130e457600080fd5b6130ed85612bd9565b93506130fb60208601612bd9565b925061310960408601612bd9565b915060608501516130858161280c565b6000815160005b8181101561313a5760208185018101518683015201613120565b50600093019283525090919050565b60006001600160e01b0319808716835261316f6131696004850188613119565b86613119565b9316835250506004019392505050565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f0800000000000000000000000000000000000000000000000000000000000000601682015277ffffffffffffffffffffffffffffffffffffffffffffffff1985166017820152607560f81b601f820152600061326461325761322e602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f6300000000000000000000000000000000000000000000000000000000000000601582015261332361325761322e6132056132fa601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506133f96133d0600683016132d1565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b60006111158284613119565b60006020828403121561342357600080fd5b5051919050565b60ff81811683821601908111156118c4576118c46129dd565b60ff82811682821603908111156118c4576118c46129dd56fea2646970667358221220659449f16d53950f95a598d9ccaa3572bc18accf13f32261b7414b30c8e2c80164736f6c63430008110033",
736
747
  "linkReferences": {},
737
748
  "deployedLinkReferences": {}
738
749
  }