@ensuro/core 1.2.7 → 2.0.0-beta1

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 (92) hide show
  1. package/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +122 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +101 -323
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +15 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +13 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +15 -202
  12. package/build/contracts/RiskModule.sol/RiskModule.json +83 -310
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +131 -333
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -269
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +8 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +29 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -742
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -591
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1055
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -189
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -73,6 +73,19 @@
73
73
  "name": "GovernanceAction",
74
74
  "type": "event"
75
75
  },
76
+ {
77
+ "anonymous": false,
78
+ "inputs": [
79
+ {
80
+ "indexed": false,
81
+ "internalType": "uint8",
82
+ "name": "version",
83
+ "type": "uint8"
84
+ }
85
+ ],
86
+ "name": "Initialized",
87
+ "type": "event"
88
+ },
76
89
  {
77
90
  "anonymous": false,
78
91
  "inputs": [
@@ -54,6 +54,19 @@
54
54
  "name": "ComponentChanged",
55
55
  "type": "event"
56
56
  },
57
+ {
58
+ "anonymous": false,
59
+ "inputs": [
60
+ {
61
+ "indexed": false,
62
+ "internalType": "uint8",
63
+ "name": "version",
64
+ "type": "uint8"
65
+ }
66
+ ],
67
+ "name": "Initialized",
68
+ "type": "event"
69
+ },
57
70
  {
58
71
  "anonymous": false,
59
72
  "inputs": [
@@ -252,19 +265,6 @@
252
265
  "stateMutability": "nonpayable",
253
266
  "type": "function"
254
267
  },
255
- {
256
- "inputs": [],
257
- "name": "assetManager",
258
- "outputs": [
259
- {
260
- "internalType": "contract IAssetManager",
261
- "name": "",
262
- "type": "address"
263
- }
264
- ],
265
- "stateMutability": "view",
266
- "type": "function"
267
- },
268
268
  {
269
269
  "inputs": [
270
270
  {
@@ -309,6 +309,29 @@
309
309
  "stateMutability": "view",
310
310
  "type": "function"
311
311
  },
312
+ {
313
+ "inputs": [
314
+ {
315
+ "internalType": "address",
316
+ "name": "component",
317
+ "type": "address"
318
+ },
319
+ {
320
+ "internalType": "bytes32",
321
+ "name": "role",
322
+ "type": "bytes32"
323
+ },
324
+ {
325
+ "internalType": "address",
326
+ "name": "account",
327
+ "type": "address"
328
+ }
329
+ ],
330
+ "name": "checkComponentRole",
331
+ "outputs": [],
332
+ "stateMutability": "view",
333
+ "type": "function"
334
+ },
312
335
  {
313
336
  "inputs": [
314
337
  {
@@ -358,16 +381,27 @@
358
381
  "type": "function"
359
382
  },
360
383
  {
361
- "inputs": [],
362
- "name": "exchange",
384
+ "inputs": [
385
+ {
386
+ "internalType": "address",
387
+ "name": "component",
388
+ "type": "address"
389
+ },
390
+ {
391
+ "internalType": "bytes32",
392
+ "name": "role",
393
+ "type": "bytes32"
394
+ }
395
+ ],
396
+ "name": "getComponentRole",
363
397
  "outputs": [
364
398
  {
365
- "internalType": "contract IExchange",
399
+ "internalType": "bytes32",
366
400
  "name": "",
367
- "type": "address"
401
+ "type": "bytes32"
368
402
  }
369
403
  ],
370
- "stateMutability": "view",
404
+ "stateMutability": "pure",
371
405
  "type": "function"
372
406
  },
373
407
  {
@@ -389,6 +423,29 @@
389
423
  "stateMutability": "view",
390
424
  "type": "function"
391
425
  },
426
+ {
427
+ "inputs": [
428
+ {
429
+ "internalType": "address",
430
+ "name": "component",
431
+ "type": "address"
432
+ },
433
+ {
434
+ "internalType": "bytes32",
435
+ "name": "role",
436
+ "type": "bytes32"
437
+ },
438
+ {
439
+ "internalType": "address",
440
+ "name": "account",
441
+ "type": "address"
442
+ }
443
+ ],
444
+ "name": "grantComponentRole",
445
+ "outputs": [],
446
+ "stateMutability": "nonpayable",
447
+ "type": "function"
448
+ },
392
449
  {
393
450
  "inputs": [
394
451
  {
@@ -449,19 +506,6 @@
449
506
  "stateMutability": "nonpayable",
450
507
  "type": "function"
451
508
  },
452
- {
453
- "inputs": [],
454
- "name": "insolvencyHook",
455
- "outputs": [
456
- {
457
- "internalType": "contract IInsolvencyHook",
458
- "name": "",
459
- "type": "address"
460
- }
461
- ],
462
- "stateMutability": "view",
463
- "type": "function"
464
- },
465
509
  {
466
510
  "inputs": [],
467
511
  "name": "lpWhitelist",
@@ -550,45 +594,6 @@
550
594
  "stateMutability": "nonpayable",
551
595
  "type": "function"
552
596
  },
553
- {
554
- "inputs": [
555
- {
556
- "internalType": "contract IAssetManager",
557
- "name": "assetManager_",
558
- "type": "address"
559
- }
560
- ],
561
- "name": "setAssetManager",
562
- "outputs": [],
563
- "stateMutability": "nonpayable",
564
- "type": "function"
565
- },
566
- {
567
- "inputs": [
568
- {
569
- "internalType": "contract IExchange",
570
- "name": "exchange_",
571
- "type": "address"
572
- }
573
- ],
574
- "name": "setExchange",
575
- "outputs": [],
576
- "stateMutability": "nonpayable",
577
- "type": "function"
578
- },
579
- {
580
- "inputs": [
581
- {
582
- "internalType": "contract IInsolvencyHook",
583
- "name": "insolvencyHook_",
584
- "type": "address"
585
- }
586
- ],
587
- "name": "setInsolvencyHook",
588
- "outputs": [],
589
- "stateMutability": "nonpayable",
590
- "type": "function"
591
- },
592
597
  {
593
598
  "inputs": [
594
599
  {
@@ -679,8 +684,8 @@
679
684
  "type": "function"
680
685
  }
681
686
  ],
682
- "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c6129c9610052600039600081816108ca0152818161090a01528181610ce201528181610d220152610db101526129c96000f3fe6080604052600436106102045760003560e01c806361d027b311610118578063a217fddf116100a0578063d2f7265a1161006f578063d2f7265a146105ed578063d547741f1461060c578063f0f442601461062c578063f67b2bad1461064c578063f7d72a251461066e57600080fd5b8063a217fddf14610578578063bbfb8bae1461058d578063c5b8f5cf146105ad578063ccdcd9cf146105cd57600080fd5b80638def80e3116100e75780638def80e3146104ea5780639042cf681461050557806391d148541461052557806394217ad114610545578063948cb7191461056357600080fd5b806361d027b31461046e57806363b12da81461048c57806367b1f5df146104aa578063878ccf78146104ca57600080fd5b80633659cfe61161019b5780634a47a3e01161016a5780634a47a3e0146103d25780634d15eb03146103f45780634f1ef2861461041257806352d1902d146104255780635b494dd51461043a57600080fd5b80633659cfe614610352578063398ae8e6146103725780634306023714610392578063485cc955146103b257600080fd5b806324ea54f4116101d757806324ea54f4146102d05780632c08296b146102f25780632f2ff15d1461031257806336568abe1461033257600080fd5b806301ffc9a71461020957806312d9a6ad1461023e5780631455cd2814610260578063248a9ca314610292575b600080fd5b34801561021557600080fd5b50610229610224366004612496565b61068e565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025e61025936600461242d565b6106c5565b005b34801561026c57600080fd5b5060fd546001600160a01b03165b6040516001600160a01b039091168152602001610235565b34801561029e57600080fd5b506102c26102ad3660046123fb565b60009081526065602052604090206001015490565b604051908152602001610235565b3480156102dc57600080fd5b506102c260008051602061297483398151915281565b3480156102fe57600080fd5b5061025e61030d36600461231a565b6106d3565b34801561031e57600080fd5b5061025e61032d36600461242d565b61081a565b34801561033e57600080fd5b5061025e61034d36600461242d565b610845565b34801561035e57600080fd5b5061025e61036d36600461231a565b6108bf565b34801561037e57600080fd5b5061025e61038d36600461231a565b61099f565b34801561039e57600080fd5b5061025e6103ad36600461231a565b610ad4565b3480156103be57600080fd5b5061025e6103cd3660046124dd565b610c4a565b3480156103de57600080fd5b506102c260008051602061295483398151915281565b34801561040057600080fd5b5060fe546001600160a01b031661027a565b61025e610420366004612337565b610cd7565b34801561043157600080fd5b506102c2610da4565b34801561044657600080fd5b506102c27f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561047a57600080fd5b5060fb546001600160a01b031661027a565b34801561049857600080fd5b5060ff546001600160a01b031661027a565b3480156104b657600080fd5b5061025e6104c536600461231a565b610e57565b3480156104d657600080fd5b5061025e6104e536600461231a565b610f8e565b3480156104f657600080fd5b506102c266b1a2bc2ec5000081565b34801561051157600080fd5b5061025e61052036600461231a565b61104e565b34801561053157600080fd5b5061022961054036600461242d565b6113cf565b34801561055157600080fd5b5060fc546001600160a01b031661027a565b34801561056f57600080fd5b5061025e6113fa565b34801561058457600080fd5b506102c2600081565b34801561059957600080fd5b5061025e6105a836600461231a565b61147c565b3480156105b957600080fd5b5061025e6105c836600461245d565b611504565b3480156105d957600080fd5b5061025e6105e836600461231a565b61151c565b3480156105f957600080fd5b50610100546001600160a01b031661027a565b34801561061857600080fd5b5061025e61062736600461242d565b6116c8565b34801561063857600080fd5b5061025e61064736600461231a565b6116ee565b34801561065857600080fd5b506102c260008051602061290d83398151915281565b34801561067a57600080fd5b5061025e61068936600461250b565b61174f565b60006001600160e01b03198216637965db0b60e01b14806106bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6106cf8282611a4c565b5050565b60008051602061297483398151915260008051602061290d8339815191526106fb82336113cf565b610709576107098133611a4c565b6001600160a01b03831615806107a4575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561076157600080fd5b505afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079991906124c0565b6001600160a01b0316145b6107c95760405162461bcd60e51b81526004016107c090612629565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b038516179055600360fd546040516001600160a01b0390911681526000805160206128cd833981519152906020015b60405180910390a2505050565b6000828152606560205260409020600101546108368133611a4c565b6108408383611ab0565b505050565b6001600160a01b03811633146108b55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107c0565b6106cf8282611b36565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109085760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109516000805160206128ed833981519152546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b81526004016107c090612712565b61098081611b9d565b6040805160008082526020820190925261099c91839190611bd3565b50565b60008051602061297483398151915260008051602061290d8339815191526109c782336113cf565b6109d5576109d58133611a4c565b6001600160a01b0383161580610a70575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610a2d57600080fd5b505afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906124c0565b6001600160a01b0316145b610a8c5760405162461bcd60e51b81526004016107c090612629565b60ff80546001600160a01b0319166001600160a01b038516179055600460ff546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b60008051602061290d833981519152610aed8133611a4c565b6001600160a01b0382161580610b88575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610b4557600080fd5b505afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906124c0565b6001600160a01b0316145b610ba45760405162461bcd60e51b81526004016107c090612629565b60fe54604051634306023760e01b81526001600160a01b03848116600483015290911690634306023790602401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505060fc80546001600160a01b0319166001600160a01b038616908117909155604051908152600292506000805160206128cd83398151915291506020015b60405180910390a25050565b600054610100900460ff16610c655760005460ff1615610c69565b303b155b610c855760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015610ca7576000805461ffff19166101011790555b610caf611d4d565b610cb7611d4d565b610cc18383611dba565b8015610840576000805461ff0019169055505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d205760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d696000805160206128ed833981519152546001600160a01b031690565b6001600160a01b031614610d8f5760405162461bcd60e51b81526004016107c090612712565b610d9882611b9d565b6106cf82826001611bd3565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e445760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c0565b506000805160206128ed83398151915290565b60008051602061297483398151915260008051602061290d833981519152610e7f82336113cf565b610e8d57610e8d8133611a4c565b6001600160a01b0383161580610f28575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d91906124c0565b6001600160a01b0316145b610f445760405162461bcd60e51b81526004016107c090612629565b61010080546001600160a01b0319166001600160a01b038516179055601b610100546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b6001600160a01b0381166000908152610101602052604090205460ff166001816003811115610fbf57610fbf612875565b1480610fdc57506002816003811115610fda57610fda612875565b145b6106cf5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016107c0565b60008051602061290d83398151915260008051602061295483398151915261107682336113cf565b611084576110848133611a4c565b6001600160a01b0383166000908152610101602052604081205460ff1660038111156110b2576110b2612875565b146110ff5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c0060448201526064016107c0565b6001600160a01b0383166111555760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f000000000000000060448201526064016107c0565b60fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d491906124c0565b6001600160a01b0316146112355760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b60648201526084016107c0565b61124d60008051602061290d833981519152336113cf565b8061135d57506112d566b1a2bc2ec50000846001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190612414565b90611e68565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561132357600080fd5b505afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190612414565b115b6113795760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b0383166000818152610101602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b29161080d916125ce565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fe546001600160a01b0316158061141c575060fe546001600160a01b031633145b6114685760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e65637465640000000060448201526064016107c0565b60fe80546001600160a01b03191633179055565b6001600160a01b0381166000908152610101602052604090205460ff1660018160038111156114ad576114ad612875565b146106cf5760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016107c0565b61150e83826113cf565b610840576108408282611a4c565b6000805160206129548339815191526115358133611a4c565b6001600160a01b0382166000908152610101602052604081205460ff16600381111561156357611563612875565b14156115a95760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b816001600160a01b031663ca996de36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e257600080fd5b505afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190612414565b1561167a5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016107c0565b6001600160a01b03821660008181526101016020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610c3e916125ce565b6000828152606560205260409020600101546116e48133611a4c565b6108408383611b36565b60008051602061290d8339815191526117078133611a4c565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b0390911681526000805160206128cd83398151915290602001610c3e565b60008051602061297483398151915260008051602061290d83398151915260008051602061295483398151915261178683336113cf565b15801561179a575061179882336113cf565b155b156117a9576117a98133611a4c565b6001600160a01b0385166000908152610101602052604081205460ff1660038111156117d7576117d7612875565b141561181d5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b600384600381111561183157611831612875565b1415806118515750611851600080516020612974833981519152336113cf565b6118a75760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b60648201526084016107c0565b60018460038111156118bb576118bb612875565b1415806118db57506118db60008051602061290d833981519152336113cf565b806119ad575061192566b1a2bc2ec50000866001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197357600080fd5b505afa158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190612414565b115b6119c95760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b038516600090815261010160205260409020805485919060ff191660018360038111156119ff576119ff612875565b0217905550846001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b285604051611a3d91906125ce565b60405180910390a25050505050565b611a5682826113cf565b6106cf57611a6e816001600160a01b03166014611f40565b611a79836020611f40565b604051602001611a8a929190612559565b60408051601f198184030181529082905262461bcd60e51b82526107c0916004016125f6565b611aba82826113cf565b6106cf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611af23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611b4082826113cf565b156106cf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061297483398151915260008051602061290d833981519152611bc582336113cf565b610840576108408133611a4c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0657610840836120dc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3f57600080fd5b505afa925050508015611c6f575060408051601f3d908101601f19168201909252611c6c91810190612414565b60015b611cd25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c0565b6000805160206128ed8339815191528114611d415760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c0565b50610840838383612178565b600054610100900460ff16611db85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107c0565b565b600054610100900460ff16611dd55760005460ff1615611dd9565b303b155b611df55760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015611e17576000805461ffff19166101011790555b611e226000336121a3565b60fe80546001600160a01b038086166001600160a01b03199283161790925560fb8054928516929091169190911790558015610840576000805461ff0019169055505050565b6000821580611e75575081155b15611e82575060006106bf565b81611e966002670de0b6b3a76400006127c4565b611ea290600019612805565b611eac91906127c4565b831115611f075760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c0565b670de0b6b3a7640000611f1b6002826127c4565b611f2584866127e6565b611f2f91906127ac565b611f3991906127c4565b9392505050565b60606000611f4f8360026127e6565b611f5a9060026127ac565b67ffffffffffffffff811115611f7257611f726128a1565b6040519080825280601f01601f191660200182016040528015611f9c576020820181803683370190505b509050600360fc1b81600081518110611fb757611fb761288b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611fe657611fe661288b565b60200101906001600160f81b031916908160001a905350600061200a8460026127e6565b6120159060016127ac565b90505b600181111561208d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106120495761204961288b565b1a60f81b82828151811061205f5761205f61288b565b60200101906001600160f81b031916908160001a90535060049490941c9361208681612848565b9050612018565b508315611f395760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107c0565b6001600160a01b0381163b6121495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c0565b6000805160206128ed83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612181836121ad565b60008251118061218e5750805b156108405761219d83836121ed565b50505050565b6106cf8282611ab0565b6121b6816120dc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6122555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107c0565b600080846001600160a01b031684604051612270919061253d565b600060405180830381855af49150503d80600081146122ab576040519150601f19603f3d011682016040523d82523d6000602084013e6122b0565b606091505b50915091506122d8828260405180606001604052806027815260200161292d602791396122e1565b95945050505050565b606083156122f0575081611f39565b8251156123005782518084602001fd5b8160405162461bcd60e51b81526004016107c091906125f6565b60006020828403121561232c57600080fd5b8135611f39816128b7565b6000806040838503121561234a57600080fd5b8235612355816128b7565b9150602083013567ffffffffffffffff8082111561237257600080fd5b818501915085601f83011261238657600080fd5b813581811115612398576123986128a1565b604051601f8201601f19908116603f011681019083821181831017156123c0576123c06128a1565b816040528281528860208487010111156123d957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561240d57600080fd5b5035919050565b60006020828403121561242657600080fd5b5051919050565b6000806040838503121561244057600080fd5b823591506020830135612452816128b7565b809150509250929050565b60008060006060848603121561247257600080fd5b8335925060208401359150604084013561248b816128b7565b809150509250925092565b6000602082840312156124a857600080fd5b81356001600160e01b031981168114611f3957600080fd5b6000602082840312156124d257600080fd5b8151611f39816128b7565b600080604083850312156124f057600080fd5b82356124fb816128b7565b91506020830135612452816128b7565b6000806040838503121561251e57600080fd5b8235612529816128b7565b915060208301356004811061245257600080fd5b6000825161254f81846020870161281c565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161259181601785016020880161281c565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516125c281602884016020880161281c565b01602801949350505050565b60208101600483106125f057634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261261581604085016020870161281c565b601f01601f19169190910160400192915050565b60208082526027908201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6040820152661a58de541bdbdb60ca1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526036908201527f5269736b4d6f64756c6520534352204c696d6974206578636565647320746865604082015275103634b6b4ba103337b9102622ab22a619103ab9b2b960511b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156127bf576127bf61285f565b500190565b6000826127e157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128005761280061285f565b500290565b6000828210156128175761281761285f565b500390565b60005b8381101561283757818101518382015260200161281f565b8381111561219d5750506000910152565b6000816128575761285761285f565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461099c57600080fdfeb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212203917dceb8281c04477ed78a4c203c9bbc1d146c6c0653d9693d02c84eeb103d064736f6c63430008060033",
683
- "deployedBytecode": "0x6080604052600436106102045760003560e01c806361d027b311610118578063a217fddf116100a0578063d2f7265a1161006f578063d2f7265a146105ed578063d547741f1461060c578063f0f442601461062c578063f67b2bad1461064c578063f7d72a251461066e57600080fd5b8063a217fddf14610578578063bbfb8bae1461058d578063c5b8f5cf146105ad578063ccdcd9cf146105cd57600080fd5b80638def80e3116100e75780638def80e3146104ea5780639042cf681461050557806391d148541461052557806394217ad114610545578063948cb7191461056357600080fd5b806361d027b31461046e57806363b12da81461048c57806367b1f5df146104aa578063878ccf78146104ca57600080fd5b80633659cfe61161019b5780634a47a3e01161016a5780634a47a3e0146103d25780634d15eb03146103f45780634f1ef2861461041257806352d1902d146104255780635b494dd51461043a57600080fd5b80633659cfe614610352578063398ae8e6146103725780634306023714610392578063485cc955146103b257600080fd5b806324ea54f4116101d757806324ea54f4146102d05780632c08296b146102f25780632f2ff15d1461031257806336568abe1461033257600080fd5b806301ffc9a71461020957806312d9a6ad1461023e5780631455cd2814610260578063248a9ca314610292575b600080fd5b34801561021557600080fd5b50610229610224366004612496565b61068e565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025e61025936600461242d565b6106c5565b005b34801561026c57600080fd5b5060fd546001600160a01b03165b6040516001600160a01b039091168152602001610235565b34801561029e57600080fd5b506102c26102ad3660046123fb565b60009081526065602052604090206001015490565b604051908152602001610235565b3480156102dc57600080fd5b506102c260008051602061297483398151915281565b3480156102fe57600080fd5b5061025e61030d36600461231a565b6106d3565b34801561031e57600080fd5b5061025e61032d36600461242d565b61081a565b34801561033e57600080fd5b5061025e61034d36600461242d565b610845565b34801561035e57600080fd5b5061025e61036d36600461231a565b6108bf565b34801561037e57600080fd5b5061025e61038d36600461231a565b61099f565b34801561039e57600080fd5b5061025e6103ad36600461231a565b610ad4565b3480156103be57600080fd5b5061025e6103cd3660046124dd565b610c4a565b3480156103de57600080fd5b506102c260008051602061295483398151915281565b34801561040057600080fd5b5060fe546001600160a01b031661027a565b61025e610420366004612337565b610cd7565b34801561043157600080fd5b506102c2610da4565b34801561044657600080fd5b506102c27f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561047a57600080fd5b5060fb546001600160a01b031661027a565b34801561049857600080fd5b5060ff546001600160a01b031661027a565b3480156104b657600080fd5b5061025e6104c536600461231a565b610e57565b3480156104d657600080fd5b5061025e6104e536600461231a565b610f8e565b3480156104f657600080fd5b506102c266b1a2bc2ec5000081565b34801561051157600080fd5b5061025e61052036600461231a565b61104e565b34801561053157600080fd5b5061022961054036600461242d565b6113cf565b34801561055157600080fd5b5060fc546001600160a01b031661027a565b34801561056f57600080fd5b5061025e6113fa565b34801561058457600080fd5b506102c2600081565b34801561059957600080fd5b5061025e6105a836600461231a565b61147c565b3480156105b957600080fd5b5061025e6105c836600461245d565b611504565b3480156105d957600080fd5b5061025e6105e836600461231a565b61151c565b3480156105f957600080fd5b50610100546001600160a01b031661027a565b34801561061857600080fd5b5061025e61062736600461242d565b6116c8565b34801561063857600080fd5b5061025e61064736600461231a565b6116ee565b34801561065857600080fd5b506102c260008051602061290d83398151915281565b34801561067a57600080fd5b5061025e61068936600461250b565b61174f565b60006001600160e01b03198216637965db0b60e01b14806106bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6106cf8282611a4c565b5050565b60008051602061297483398151915260008051602061290d8339815191526106fb82336113cf565b610709576107098133611a4c565b6001600160a01b03831615806107a4575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561076157600080fd5b505afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079991906124c0565b6001600160a01b0316145b6107c95760405162461bcd60e51b81526004016107c090612629565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b038516179055600360fd546040516001600160a01b0390911681526000805160206128cd833981519152906020015b60405180910390a2505050565b6000828152606560205260409020600101546108368133611a4c565b6108408383611ab0565b505050565b6001600160a01b03811633146108b55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107c0565b6106cf8282611b36565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109085760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109516000805160206128ed833981519152546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b81526004016107c090612712565b61098081611b9d565b6040805160008082526020820190925261099c91839190611bd3565b50565b60008051602061297483398151915260008051602061290d8339815191526109c782336113cf565b6109d5576109d58133611a4c565b6001600160a01b0383161580610a70575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610a2d57600080fd5b505afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906124c0565b6001600160a01b0316145b610a8c5760405162461bcd60e51b81526004016107c090612629565b60ff80546001600160a01b0319166001600160a01b038516179055600460ff546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b60008051602061290d833981519152610aed8133611a4c565b6001600160a01b0382161580610b88575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610b4557600080fd5b505afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906124c0565b6001600160a01b0316145b610ba45760405162461bcd60e51b81526004016107c090612629565b60fe54604051634306023760e01b81526001600160a01b03848116600483015290911690634306023790602401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505060fc80546001600160a01b0319166001600160a01b038616908117909155604051908152600292506000805160206128cd83398151915291506020015b60405180910390a25050565b600054610100900460ff16610c655760005460ff1615610c69565b303b155b610c855760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015610ca7576000805461ffff19166101011790555b610caf611d4d565b610cb7611d4d565b610cc18383611dba565b8015610840576000805461ff0019169055505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d205760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d696000805160206128ed833981519152546001600160a01b031690565b6001600160a01b031614610d8f5760405162461bcd60e51b81526004016107c090612712565b610d9882611b9d565b6106cf82826001611bd3565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e445760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c0565b506000805160206128ed83398151915290565b60008051602061297483398151915260008051602061290d833981519152610e7f82336113cf565b610e8d57610e8d8133611a4c565b6001600160a01b0383161580610f28575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d91906124c0565b6001600160a01b0316145b610f445760405162461bcd60e51b81526004016107c090612629565b61010080546001600160a01b0319166001600160a01b038516179055601b610100546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b6001600160a01b0381166000908152610101602052604090205460ff166001816003811115610fbf57610fbf612875565b1480610fdc57506002816003811115610fda57610fda612875565b145b6106cf5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016107c0565b60008051602061290d83398151915260008051602061295483398151915261107682336113cf565b611084576110848133611a4c565b6001600160a01b0383166000908152610101602052604081205460ff1660038111156110b2576110b2612875565b146110ff5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c0060448201526064016107c0565b6001600160a01b0383166111555760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f000000000000000060448201526064016107c0565b60fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d491906124c0565b6001600160a01b0316146112355760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b60648201526084016107c0565b61124d60008051602061290d833981519152336113cf565b8061135d57506112d566b1a2bc2ec50000846001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190612414565b90611e68565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561132357600080fd5b505afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190612414565b115b6113795760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b0383166000818152610101602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b29161080d916125ce565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fe546001600160a01b0316158061141c575060fe546001600160a01b031633145b6114685760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e65637465640000000060448201526064016107c0565b60fe80546001600160a01b03191633179055565b6001600160a01b0381166000908152610101602052604090205460ff1660018160038111156114ad576114ad612875565b146106cf5760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016107c0565b61150e83826113cf565b610840576108408282611a4c565b6000805160206129548339815191526115358133611a4c565b6001600160a01b0382166000908152610101602052604081205460ff16600381111561156357611563612875565b14156115a95760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b816001600160a01b031663ca996de36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e257600080fd5b505afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190612414565b1561167a5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016107c0565b6001600160a01b03821660008181526101016020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610c3e916125ce565b6000828152606560205260409020600101546116e48133611a4c565b6108408383611b36565b60008051602061290d8339815191526117078133611a4c565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b0390911681526000805160206128cd83398151915290602001610c3e565b60008051602061297483398151915260008051602061290d83398151915260008051602061295483398151915261178683336113cf565b15801561179a575061179882336113cf565b155b156117a9576117a98133611a4c565b6001600160a01b0385166000908152610101602052604081205460ff1660038111156117d7576117d7612875565b141561181d5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b600384600381111561183157611831612875565b1415806118515750611851600080516020612974833981519152336113cf565b6118a75760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b60648201526084016107c0565b60018460038111156118bb576118bb612875565b1415806118db57506118db60008051602061290d833981519152336113cf565b806119ad575061192566b1a2bc2ec50000866001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197357600080fd5b505afa158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190612414565b115b6119c95760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b038516600090815261010160205260409020805485919060ff191660018360038111156119ff576119ff612875565b0217905550846001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b285604051611a3d91906125ce565b60405180910390a25050505050565b611a5682826113cf565b6106cf57611a6e816001600160a01b03166014611f40565b611a79836020611f40565b604051602001611a8a929190612559565b60408051601f198184030181529082905262461bcd60e51b82526107c0916004016125f6565b611aba82826113cf565b6106cf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611af23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611b4082826113cf565b156106cf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061297483398151915260008051602061290d833981519152611bc582336113cf565b610840576108408133611a4c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0657610840836120dc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3f57600080fd5b505afa925050508015611c6f575060408051601f3d908101601f19168201909252611c6c91810190612414565b60015b611cd25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c0565b6000805160206128ed8339815191528114611d415760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c0565b50610840838383612178565b600054610100900460ff16611db85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107c0565b565b600054610100900460ff16611dd55760005460ff1615611dd9565b303b155b611df55760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015611e17576000805461ffff19166101011790555b611e226000336121a3565b60fe80546001600160a01b038086166001600160a01b03199283161790925560fb8054928516929091169190911790558015610840576000805461ff0019169055505050565b6000821580611e75575081155b15611e82575060006106bf565b81611e966002670de0b6b3a76400006127c4565b611ea290600019612805565b611eac91906127c4565b831115611f075760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c0565b670de0b6b3a7640000611f1b6002826127c4565b611f2584866127e6565b611f2f91906127ac565b611f3991906127c4565b9392505050565b60606000611f4f8360026127e6565b611f5a9060026127ac565b67ffffffffffffffff811115611f7257611f726128a1565b6040519080825280601f01601f191660200182016040528015611f9c576020820181803683370190505b509050600360fc1b81600081518110611fb757611fb761288b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611fe657611fe661288b565b60200101906001600160f81b031916908160001a905350600061200a8460026127e6565b6120159060016127ac565b90505b600181111561208d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106120495761204961288b565b1a60f81b82828151811061205f5761205f61288b565b60200101906001600160f81b031916908160001a90535060049490941c9361208681612848565b9050612018565b508315611f395760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107c0565b6001600160a01b0381163b6121495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c0565b6000805160206128ed83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612181836121ad565b60008251118061218e5750805b156108405761219d83836121ed565b50505050565b6106cf8282611ab0565b6121b6816120dc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6122555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107c0565b600080846001600160a01b031684604051612270919061253d565b600060405180830381855af49150503d80600081146122ab576040519150601f19603f3d011682016040523d82523d6000602084013e6122b0565b606091505b50915091506122d8828260405180606001604052806027815260200161292d602791396122e1565b95945050505050565b606083156122f0575081611f39565b8251156123005782518084602001fd5b8160405162461bcd60e51b81526004016107c091906125f6565b60006020828403121561232c57600080fd5b8135611f39816128b7565b6000806040838503121561234a57600080fd5b8235612355816128b7565b9150602083013567ffffffffffffffff8082111561237257600080fd5b818501915085601f83011261238657600080fd5b813581811115612398576123986128a1565b604051601f8201601f19908116603f011681019083821181831017156123c0576123c06128a1565b816040528281528860208487010111156123d957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561240d57600080fd5b5035919050565b60006020828403121561242657600080fd5b5051919050565b6000806040838503121561244057600080fd5b823591506020830135612452816128b7565b809150509250929050565b60008060006060848603121561247257600080fd5b8335925060208401359150604084013561248b816128b7565b809150509250925092565b6000602082840312156124a857600080fd5b81356001600160e01b031981168114611f3957600080fd5b6000602082840312156124d257600080fd5b8151611f39816128b7565b600080604083850312156124f057600080fd5b82356124fb816128b7565b91506020830135612452816128b7565b6000806040838503121561251e57600080fd5b8235612529816128b7565b915060208301356004811061245257600080fd5b6000825161254f81846020870161281c565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161259181601785016020880161281c565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516125c281602884016020880161281c565b01602801949350505050565b60208101600483106125f057634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261261581604085016020870161281c565b601f01601f19169190910160400192915050565b60208082526027908201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6040820152661a58de541bdbdb60ca1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526036908201527f5269736b4d6f64756c6520534352204c696d6974206578636565647320746865604082015275103634b6b4ba103337b9102622ab22a619103ab9b2b960511b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156127bf576127bf61285f565b500190565b6000826127e157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128005761280061285f565b500290565b6000828210156128175761281761285f565b500390565b60005b8381101561283757818101518382015260200161281f565b8381111561219d5750506000910152565b6000816128575761285761285f565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461099c57600080fdfeb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212203917dceb8281c04477ed78a4c203c9bbc1d146c6c0653d9693d02c84eeb103d064736f6c63430008060033",
687
+ "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c61232d6100526000396000818161072c0152818161076c01528181610a7901528181610ab90152610b48015261232d6000f3fe6080604052600436106101e35760003560e01c806363b12da811610102578063bbfb8bae11610095578063f0f4426011610064578063f0f44260146105b1578063f67b2bad146105d1578063f6a421fc146105f3578063f7d72a251461061357600080fd5b8063bbfb8bae14610531578063c5b8f5cf14610551578063ccdcd9cf14610571578063d547741f1461059157600080fd5b806391d14854116100d157806391d14854146104c7578063948cb719146104e75780639fc09402146104fc578063a217fddf1461051c57600080fd5b806363b12da81461044e578063878ccf781461046c5780638def80e31461048c5780639042cf68146104a757600080fd5b8063398ae8e61161017a5780634f1ef286116101495780634f1ef286146103d457806352d1902d146103e75780635b494dd5146103fc57806361d027b31461043057600080fd5b8063398ae8e61461032e578063485cc9551461034e5780634a47a3e01461036e5780634d15eb03146103a257600080fd5b80632f2ff15d116101b65780632f2ff15d1461029f57806336568abe146102bf5780633659cfe6146102df578063374c96c8146102ff57600080fd5b806301ffc9a7146101e857806312d9a6ad1461021d578063248a9ca31461023f57806324ea54f41461027d575b600080fd5b3480156101f457600080fd5b50610208610203366004611f10565b610633565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004611eb2565b61066a565b005b34801561024b57600080fd5b5061026f61025a366004611e80565b60009081526065602052604090206001015490565b604051908152602001610214565b34801561028957600080fd5b5061026f6000805160206122d883398151915281565b3480156102ab57600080fd5b5061023d6102ba366004611eb2565b610678565b3480156102cb57600080fd5b5061023d6102da366004611eb2565b6106a2565b3480156102eb57600080fd5b5061023d6102fa366004611d31565b610721565b34801561030b57600080fd5b5061026f61031a366004611d4e565b60609190911b6001600160601b0319161890565b34801561033a57600080fd5b5061023d610349366004611d31565b610801565b34801561035a57600080fd5b5061023d610369366004611f57565b610990565b34801561037a57600080fd5b5061026f7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156103ae57600080fd5b5060fc546001600160a01b03165b6040516001600160a01b039091168152602001610214565b61023d6103e2366004611dbc565b610a6e565b3480156103f357600080fd5b5061026f610b3b565b34801561040857600080fd5b5061026f7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561043c57600080fd5b5060fb546001600160a01b03166103bc565b34801561045a57600080fd5b5060fd546001600160a01b03166103bc565b34801561047857600080fd5b5061023d610487366004611d31565b610bee565b34801561049857600080fd5b5061026f66b1a2bc2ec5000081565b3480156104b357600080fd5b5061023d6104c2366004611d31565b610cad565b3480156104d357600080fd5b506102086104e2366004611eb2565b610ed6565b3480156104f357600080fd5b5061023d610f01565b34801561050857600080fd5b5061023d610517366004611d7a565b610f83565b34801561052857600080fd5b5061026f600081565b34801561053d57600080fd5b5061023d61054c366004611d31565b610f9d565b34801561055d57600080fd5b5061023d61056c366004611ee2565b611024565b34801561057d57600080fd5b5061023d61058c366004611d31565b61103c565b34801561059d57600080fd5b5061023d6105ac366004611eb2565b6111f7565b3480156105bd57600080fd5b5061023d6105cc366004611d31565b61121c565b3480156105dd57600080fd5b5061026f60008051602061229183398151915281565b3480156105ff57600080fd5b5061023d61060e366004611d7a565b61128e565b34801561061f57600080fd5b5061023d61062e366004611f85565b6112d0565b60006001600160e01b03198216637965db0b60e01b148061066457506301ffc9a760e01b6001600160e01b03198316145b92915050565b61067482826114e8565b5050565b6000828152606560205260409020600101546106938161154c565b61069d8383611556565b505050565b6001600160a01b03811633146107175760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61067482826115dc565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561076a5760405162461bcd60e51b815260040161070e906120a3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107b3600080516020612271833981519152546001600160a01b031690565b6001600160a01b0316146107d95760405162461bcd60e51b815260040161070e906120ef565b6107e281611643565b604080516000808252602082019092526107fe91839190611679565b50565b6000805160206122d88339815191526000805160206122918339815191526108298233610ed6565b6108375761083781336114e8565b6001600160a01b03831615806108d2575060fc5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190611f3a565b6001600160a01b0316145b61092e5760405162461bcd60e51b815260206004820152602760248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6044820152661a58de541bdbdb60ca1b606482015260840161070e565b60fd80546001600160a01b0319166001600160a01b038516179055600460fd546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a2505050565b600054610100900460ff16158080156109b05750600054600160ff909116105b806109ca5750303b1580156109ca575060005460ff166001145b6109e65760405162461bcd60e51b815260040161070e9061213b565b6000805460ff191660011790558015610a09576000805461ff0019166101001790555b610a116117f3565b610a196117f3565b610a238383611860565b801561069d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ab75760405162461bcd60e51b815260040161070e906120a3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b00600080516020612271833981519152546001600160a01b031690565b6001600160a01b031614610b265760405162461bcd60e51b815260040161070e906120ef565b610b2f82611643565b61067482826001611679565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bdb5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161070e565b5060008051602061227183398151915290565b6001600160a01b038116600090815260fe602052604090205460ff166001816003811115610c1e57610c1e612219565b1480610c3b57506002816003811115610c3957610c39612219565b145b6106745760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e73000000000000606482015260840161070e565b600080516020612291833981519152610cc58161154c565b6001600160a01b038216600090815260fe602052604081205460ff166003811115610cf257610cf2612219565b14610d3f5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c00604482015260640161070e565b6001600160a01b038216610d955760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f0000000000000000604482015260640161070e565b60fc5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610ddc57600080fd5b505afa158015610df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e149190611f3a565b6001600160a01b031614610e755760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b606482015260840161070e565b6001600160a01b038216600081815260fe602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610eca91612048565b60405180910390a25050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fc546001600160a01b03161580610f23575060fc546001600160a01b031633145b610f6f5760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e656374656400000000604482015260640161070e565b60fc80546001600160a01b03191633179055565b61069d6001600160601b0319606085901b168318826114e8565b6001600160a01b038116600090815260fe602052604090205460ff166001816003811115610fcd57610fcd612219565b146106745760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b606482015260840161070e565b61102e8382610ed6565b61069d5761069d82826114e8565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06110668161154c565b6001600160a01b038216600090815260fe602052604081205460ff16600381111561109357611093612219565b14156110d95760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161070e565b816001600160a01b0316637ff8bf256040518163ffffffff1660e01b815260040160206040518083038186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114a9190611e99565b156111aa5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b606482015260840161070e565b6001600160a01b038216600081815260fe6020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610eca91612048565b6000828152606560205260409020600101546112128161154c565b61069d83836115dc565b6000805160206122918339815191526112348161154c565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f90602001610eca565b6112a76001600160601b0319606085901b16831861025a565b6112b08161154c565b6112ca6001600160601b0319606086901b16841883611556565b50505050565b6000805160206122d88339815191526000805160206122918339815191526112f88233610ed6565b6113065761130681336114e8565b6001600160a01b038416600090815260fe602052604081205460ff16600381111561133357611333612219565b14156113795760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161070e565b600383600381111561138d5761138d612219565b1415806113ad57506113ad6000805160206122d883398151915233610ed6565b6114035760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b606482015260840161070e565b61141b60008051602061229183398151915233610ed6565b6114675760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c4556454c312063616e206163746976617465206d6f64756c6573604482015260640161070e565b6001600160a01b038416600090815260fe60205260409020805484919060ff1916600183600381111561149c5761149c612219565b0217905550836001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2846040516114da9190612048565b60405180910390a250505050565b6114f28282610ed6565b6106745761150a816001600160a01b03166014611956565b611515836020611956565b604051602001611526929190611fd3565b60408051601f198184030181529082905262461bcd60e51b825261070e91600401612070565b6107fe81336114e8565b6115608282610ed6565b6106745760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115983390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115e68282610ed6565b156106745760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206122d883398151915260008051602061229183398151915261166b8233610ed6565b61069d5761069d81336114e8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116ac5761069d83611af9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e557600080fd5b505afa925050508015611715575060408051601f3d908101601f1916820190925261171291810190611e99565b60015b6117785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161070e565b60008051602061227183398151915281146117e75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161070e565b5061069d838383611b95565b600054610100900460ff1661185e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161070e565b565b600054610100900460ff16158080156118805750600054600160ff909116105b8061189a5750303b15801561189a575060005460ff166001145b6118b65760405162461bcd60e51b815260040161070e9061213b565b6000805460ff1916600117905580156118d9576000805461ff0019166101001790555b6118e4600033611bba565b60fc80546001600160a01b038086166001600160a01b03199283161790925560fb805492851692909116919091179055801561069d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610a61565b606060006119658360026121a1565b611970906002612189565b67ffffffffffffffff81111561198857611988612245565b6040519080825280601f01601f1916602001820160405280156119b2576020820181803683370190505b509050600360fc1b816000815181106119cd576119cd61222f565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119fc576119fc61222f565b60200101906001600160f81b031916908160001a9053506000611a208460026121a1565b611a2b906001612189565b90505b6001811115611aa3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a5f57611a5f61222f565b1a60f81b828281518110611a7557611a7561222f565b60200101906001600160f81b031916908160001a90535060049490941c93611a9c816121ec565b9050611a2e565b508315611af25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161070e565b9392505050565b6001600160a01b0381163b611b665760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161070e565b60008051602061227183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b9e83611bc4565b600082511180611bab5750805b1561069d576112ca8383611c04565b6106748282611556565b611bcd81611af9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611c6c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161070e565b600080846001600160a01b031684604051611c879190611fb7565b600060405180830381855af49150503d8060008114611cc2576040519150601f19603f3d011682016040523d82523d6000602084013e611cc7565b606091505b5091509150611cef82826040518060600160405280602781526020016122b160279139611cf8565b95945050505050565b60608315611d07575081611af2565b825115611d175782518084602001fd5b8160405162461bcd60e51b815260040161070e9190612070565b600060208284031215611d4357600080fd5b8135611af28161225b565b60008060408385031215611d6157600080fd5b8235611d6c8161225b565b946020939093013593505050565b600080600060608486031215611d8f57600080fd5b8335611d9a8161225b565b9250602084013591506040840135611db18161225b565b809150509250925092565b60008060408385031215611dcf57600080fd5b8235611dda8161225b565b9150602083013567ffffffffffffffff80821115611df757600080fd5b818501915085601f830112611e0b57600080fd5b813581811115611e1d57611e1d612245565b604051601f8201601f19908116603f01168101908382118183101715611e4557611e45612245565b81604052828152886020848701011115611e5e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215611e9257600080fd5b5035919050565b600060208284031215611eab57600080fd5b5051919050565b60008060408385031215611ec557600080fd5b823591506020830135611ed78161225b565b809150509250929050565b600080600060608486031215611ef757600080fd5b83359250602084013591506040840135611db18161225b565b600060208284031215611f2257600080fd5b81356001600160e01b031981168114611af257600080fd5b600060208284031215611f4c57600080fd5b8151611af28161225b565b60008060408385031215611f6a57600080fd5b8235611f758161225b565b91506020830135611ed78161225b565b60008060408385031215611f9857600080fd5b8235611fa38161225b565b9150602083013560048110611ed757600080fd5b60008251611fc98184602087016121c0565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161200b8160178501602088016121c0565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161203c8160288401602088016121c0565b01602801949350505050565b602081016004831061206a57634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261208f8160408501602087016121c0565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000821982111561219c5761219c612203565b500190565b60008160001904831182151516156121bb576121bb612203565b500290565b60005b838110156121db5781810151838201526020016121c3565b838111156112ca5750506000910152565b6000816121fb576121fb612203565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146107fe57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220681094b2293a261a721b9aac20afb0a4ca8611eed4314f5de2f631b2b657915064736f6c63430008060033",
688
+ "deployedBytecode": "0x6080604052600436106101e35760003560e01c806363b12da811610102578063bbfb8bae11610095578063f0f4426011610064578063f0f44260146105b1578063f67b2bad146105d1578063f6a421fc146105f3578063f7d72a251461061357600080fd5b8063bbfb8bae14610531578063c5b8f5cf14610551578063ccdcd9cf14610571578063d547741f1461059157600080fd5b806391d14854116100d157806391d14854146104c7578063948cb719146104e75780639fc09402146104fc578063a217fddf1461051c57600080fd5b806363b12da81461044e578063878ccf781461046c5780638def80e31461048c5780639042cf68146104a757600080fd5b8063398ae8e61161017a5780634f1ef286116101495780634f1ef286146103d457806352d1902d146103e75780635b494dd5146103fc57806361d027b31461043057600080fd5b8063398ae8e61461032e578063485cc9551461034e5780634a47a3e01461036e5780634d15eb03146103a257600080fd5b80632f2ff15d116101b65780632f2ff15d1461029f57806336568abe146102bf5780633659cfe6146102df578063374c96c8146102ff57600080fd5b806301ffc9a7146101e857806312d9a6ad1461021d578063248a9ca31461023f57806324ea54f41461027d575b600080fd5b3480156101f457600080fd5b50610208610203366004611f10565b610633565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004611eb2565b61066a565b005b34801561024b57600080fd5b5061026f61025a366004611e80565b60009081526065602052604090206001015490565b604051908152602001610214565b34801561028957600080fd5b5061026f6000805160206122d883398151915281565b3480156102ab57600080fd5b5061023d6102ba366004611eb2565b610678565b3480156102cb57600080fd5b5061023d6102da366004611eb2565b6106a2565b3480156102eb57600080fd5b5061023d6102fa366004611d31565b610721565b34801561030b57600080fd5b5061026f61031a366004611d4e565b60609190911b6001600160601b0319161890565b34801561033a57600080fd5b5061023d610349366004611d31565b610801565b34801561035a57600080fd5b5061023d610369366004611f57565b610990565b34801561037a57600080fd5b5061026f7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156103ae57600080fd5b5060fc546001600160a01b03165b6040516001600160a01b039091168152602001610214565b61023d6103e2366004611dbc565b610a6e565b3480156103f357600080fd5b5061026f610b3b565b34801561040857600080fd5b5061026f7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561043c57600080fd5b5060fb546001600160a01b03166103bc565b34801561045a57600080fd5b5060fd546001600160a01b03166103bc565b34801561047857600080fd5b5061023d610487366004611d31565b610bee565b34801561049857600080fd5b5061026f66b1a2bc2ec5000081565b3480156104b357600080fd5b5061023d6104c2366004611d31565b610cad565b3480156104d357600080fd5b506102086104e2366004611eb2565b610ed6565b3480156104f357600080fd5b5061023d610f01565b34801561050857600080fd5b5061023d610517366004611d7a565b610f83565b34801561052857600080fd5b5061026f600081565b34801561053d57600080fd5b5061023d61054c366004611d31565b610f9d565b34801561055d57600080fd5b5061023d61056c366004611ee2565b611024565b34801561057d57600080fd5b5061023d61058c366004611d31565b61103c565b34801561059d57600080fd5b5061023d6105ac366004611eb2565b6111f7565b3480156105bd57600080fd5b5061023d6105cc366004611d31565b61121c565b3480156105dd57600080fd5b5061026f60008051602061229183398151915281565b3480156105ff57600080fd5b5061023d61060e366004611d7a565b61128e565b34801561061f57600080fd5b5061023d61062e366004611f85565b6112d0565b60006001600160e01b03198216637965db0b60e01b148061066457506301ffc9a760e01b6001600160e01b03198316145b92915050565b61067482826114e8565b5050565b6000828152606560205260409020600101546106938161154c565b61069d8383611556565b505050565b6001600160a01b03811633146107175760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61067482826115dc565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561076a5760405162461bcd60e51b815260040161070e906120a3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107b3600080516020612271833981519152546001600160a01b031690565b6001600160a01b0316146107d95760405162461bcd60e51b815260040161070e906120ef565b6107e281611643565b604080516000808252602082019092526107fe91839190611679565b50565b6000805160206122d88339815191526000805160206122918339815191526108298233610ed6565b6108375761083781336114e8565b6001600160a01b03831615806108d2575060fc5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190611f3a565b6001600160a01b0316145b61092e5760405162461bcd60e51b815260206004820152602760248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6044820152661a58de541bdbdb60ca1b606482015260840161070e565b60fd80546001600160a01b0319166001600160a01b038516179055600460fd546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a2505050565b600054610100900460ff16158080156109b05750600054600160ff909116105b806109ca5750303b1580156109ca575060005460ff166001145b6109e65760405162461bcd60e51b815260040161070e9061213b565b6000805460ff191660011790558015610a09576000805461ff0019166101001790555b610a116117f3565b610a196117f3565b610a238383611860565b801561069d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ab75760405162461bcd60e51b815260040161070e906120a3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b00600080516020612271833981519152546001600160a01b031690565b6001600160a01b031614610b265760405162461bcd60e51b815260040161070e906120ef565b610b2f82611643565b61067482826001611679565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bdb5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161070e565b5060008051602061227183398151915290565b6001600160a01b038116600090815260fe602052604090205460ff166001816003811115610c1e57610c1e612219565b1480610c3b57506002816003811115610c3957610c39612219565b145b6106745760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e73000000000000606482015260840161070e565b600080516020612291833981519152610cc58161154c565b6001600160a01b038216600090815260fe602052604081205460ff166003811115610cf257610cf2612219565b14610d3f5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c00604482015260640161070e565b6001600160a01b038216610d955760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f0000000000000000604482015260640161070e565b60fc5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610ddc57600080fd5b505afa158015610df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e149190611f3a565b6001600160a01b031614610e755760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b606482015260840161070e565b6001600160a01b038216600081815260fe602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610eca91612048565b60405180910390a25050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fc546001600160a01b03161580610f23575060fc546001600160a01b031633145b610f6f5760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e656374656400000000604482015260640161070e565b60fc80546001600160a01b03191633179055565b61069d6001600160601b0319606085901b168318826114e8565b6001600160a01b038116600090815260fe602052604090205460ff166001816003811115610fcd57610fcd612219565b146106745760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b606482015260840161070e565b61102e8382610ed6565b61069d5761069d82826114e8565b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06110668161154c565b6001600160a01b038216600090815260fe602052604081205460ff16600381111561109357611093612219565b14156110d95760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161070e565b816001600160a01b0316637ff8bf256040518163ffffffff1660e01b815260040160206040518083038186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114a9190611e99565b156111aa5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b606482015260840161070e565b6001600160a01b038216600081815260fe6020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610eca91612048565b6000828152606560205260409020600101546112128161154c565b61069d83836115dc565b6000805160206122918339815191526112348161154c565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f90602001610eca565b6112a76001600160601b0319606085901b16831861025a565b6112b08161154c565b6112ca6001600160601b0319606086901b16841883611556565b50505050565b6000805160206122d88339815191526000805160206122918339815191526112f88233610ed6565b6113065761130681336114e8565b6001600160a01b038416600090815260fe602052604081205460ff16600381111561133357611333612219565b14156113795760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161070e565b600383600381111561138d5761138d612219565b1415806113ad57506113ad6000805160206122d883398151915233610ed6565b6114035760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b606482015260840161070e565b61141b60008051602061229183398151915233610ed6565b6114675760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c4556454c312063616e206163746976617465206d6f64756c6573604482015260640161070e565b6001600160a01b038416600090815260fe60205260409020805484919060ff1916600183600381111561149c5761149c612219565b0217905550836001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2846040516114da9190612048565b60405180910390a250505050565b6114f28282610ed6565b6106745761150a816001600160a01b03166014611956565b611515836020611956565b604051602001611526929190611fd3565b60408051601f198184030181529082905262461bcd60e51b825261070e91600401612070565b6107fe81336114e8565b6115608282610ed6565b6106745760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115983390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115e68282610ed6565b156106745760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206122d883398151915260008051602061229183398151915261166b8233610ed6565b61069d5761069d81336114e8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116ac5761069d83611af9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e557600080fd5b505afa925050508015611715575060408051601f3d908101601f1916820190925261171291810190611e99565b60015b6117785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161070e565b60008051602061227183398151915281146117e75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161070e565b5061069d838383611b95565b600054610100900460ff1661185e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161070e565b565b600054610100900460ff16158080156118805750600054600160ff909116105b8061189a5750303b15801561189a575060005460ff166001145b6118b65760405162461bcd60e51b815260040161070e9061213b565b6000805460ff1916600117905580156118d9576000805461ff0019166101001790555b6118e4600033611bba565b60fc80546001600160a01b038086166001600160a01b03199283161790925560fb805492851692909116919091179055801561069d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610a61565b606060006119658360026121a1565b611970906002612189565b67ffffffffffffffff81111561198857611988612245565b6040519080825280601f01601f1916602001820160405280156119b2576020820181803683370190505b509050600360fc1b816000815181106119cd576119cd61222f565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119fc576119fc61222f565b60200101906001600160f81b031916908160001a9053506000611a208460026121a1565b611a2b906001612189565b90505b6001811115611aa3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a5f57611a5f61222f565b1a60f81b828281518110611a7557611a7561222f565b60200101906001600160f81b031916908160001a90535060049490941c93611a9c816121ec565b9050611a2e565b508315611af25760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161070e565b9392505050565b6001600160a01b0381163b611b665760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161070e565b60008051602061227183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b9e83611bc4565b600082511180611bab5750805b1561069d576112ca8383611c04565b6106748282611556565b611bcd81611af9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611c6c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161070e565b600080846001600160a01b031684604051611c879190611fb7565b600060405180830381855af49150503d8060008114611cc2576040519150601f19603f3d011682016040523d82523d6000602084013e611cc7565b606091505b5091509150611cef82826040518060600160405280602781526020016122b160279139611cf8565b95945050505050565b60608315611d07575081611af2565b825115611d175782518084602001fd5b8160405162461bcd60e51b815260040161070e9190612070565b600060208284031215611d4357600080fd5b8135611af28161225b565b60008060408385031215611d6157600080fd5b8235611d6c8161225b565b946020939093013593505050565b600080600060608486031215611d8f57600080fd5b8335611d9a8161225b565b9250602084013591506040840135611db18161225b565b809150509250925092565b60008060408385031215611dcf57600080fd5b8235611dda8161225b565b9150602083013567ffffffffffffffff80821115611df757600080fd5b818501915085601f830112611e0b57600080fd5b813581811115611e1d57611e1d612245565b604051601f8201601f19908116603f01168101908382118183101715611e4557611e45612245565b81604052828152886020848701011115611e5e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208284031215611e9257600080fd5b5035919050565b600060208284031215611eab57600080fd5b5051919050565b60008060408385031215611ec557600080fd5b823591506020830135611ed78161225b565b809150509250929050565b600080600060608486031215611ef757600080fd5b83359250602084013591506040840135611db18161225b565b600060208284031215611f2257600080fd5b81356001600160e01b031981168114611af257600080fd5b600060208284031215611f4c57600080fd5b8151611af28161225b565b60008060408385031215611f6a57600080fd5b8235611f758161225b565b91506020830135611ed78161225b565b60008060408385031215611f9857600080fd5b8235611fa38161225b565b9150602083013560048110611ed757600080fd5b60008251611fc98184602087016121c0565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161200b8160178501602088016121c0565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161203c8160288401602088016121c0565b01602801949350505050565b602081016004831061206a57634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261208f8160408501602087016121c0565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000821982111561219c5761219c612203565b500190565b60008160001904831182151516156121bb576121bb612203565b500290565b60005b838110156121db5781810151838201526020016121c3565b838111156112ca5750506000910152565b6000816121fb576121fb612203565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146107fe57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220681094b2293a261a721b9aac20afb0a4ca8611eed4314f5de2f631b2b657915064736f6c63430008060033",
684
689
  "linkReferences": {},
685
690
  "deployedLinkReferences": {}
686
691
  }