@ensuro/core 2.0.0-beta10 → 2.0.0-beta11

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 (49) hide show
  1. package/README.md +13 -0
  2. package/build/contracts/AccessManager.sol/AccessManager.json +7 -2
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +21 -2
  4. package/build/contracts/EToken.sol/EToken.json +21 -2
  5. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +21 -2
  6. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +19 -0
  7. package/build/contracts/Policy.sol/Policy.json +2 -2
  8. package/build/contracts/PolicyPool.sol/PolicyPool.json +2 -2
  9. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +19 -0
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +21 -2
  11. package/build/contracts/Reserve.sol/Reserve.json +19 -0
  12. package/build/contracts/RiskModule.sol/RiskModule.json +19 -0
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +21 -2
  14. package/build/contracts/TimeScaled.sol/TimeScaled.json +2 -2
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +21 -2
  16. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +2 -2
  17. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +19 -0
  18. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +19 -0
  19. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +2 -2
  20. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +2 -2
  21. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +180 -0
  22. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +2 -2
  23. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +21 -2
  24. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +2 -2
  25. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +2 -2
  26. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +21 -2
  27. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +2 -2
  28. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +2 -2
  29. package/contracts/AccessManager.sol +30 -1
  30. package/contracts/ERC4626AssetManager.sol +3 -0
  31. package/contracts/EToken.sol +89 -19
  32. package/contracts/LPManualWhitelist.sol +18 -2
  33. package/contracts/LiquidityThresholdAssetManager.sol +17 -2
  34. package/contracts/Policy.sol +4 -2
  35. package/contracts/PolicyPool.sol +58 -11
  36. package/contracts/PolicyPoolComponent.sol +25 -3
  37. package/contracts/PremiumsAccount.sol +55 -23
  38. package/contracts/Reserve.sol +19 -3
  39. package/contracts/RiskModule.sol +37 -13
  40. package/contracts/SignedQuoteRiskModule.sol +7 -0
  41. package/contracts/TrustfulRiskModule.sol +7 -0
  42. package/contracts/interfaces/IAssetManager.sol +8 -3
  43. package/contracts/interfaces/IPolicyPool.sol +1 -1
  44. package/contracts/interfaces/IPolicyPoolComponent.sol +2 -1
  45. package/contracts/mocks/InterfaceIdCalculator.sol +32 -0
  46. package/contracts/mocks/PolicyPoolComponentMock.sol +10 -0
  47. package/js/deploy.js +704 -0
  48. package/js/test-utils.js +139 -37
  49. package/package.json +1 -1
@@ -380,6 +380,25 @@
380
380
  "stateMutability": "view",
381
381
  "type": "function"
382
382
  },
383
+ {
384
+ "inputs": [
385
+ {
386
+ "internalType": "bytes4",
387
+ "name": "interfaceId",
388
+ "type": "bytes4"
389
+ }
390
+ ],
391
+ "name": "supportsInterface",
392
+ "outputs": [
393
+ {
394
+ "internalType": "bool",
395
+ "name": "",
396
+ "type": "bool"
397
+ }
398
+ ],
399
+ "stateMutability": "view",
400
+ "type": "function"
401
+ },
383
402
  {
384
403
  "inputs": [],
385
404
  "name": "unpause",
@@ -437,8 +456,8 @@
437
456
  "type": "function"
438
457
  }
439
458
  ],
440
- "bytecode": "0x60c06040523060805234801561001457600080fd5b506040516118ed3803806118ed83398101604081905261003391610044565b6001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161180e6100df600039600081816102340152818161054f015281816108b0015281816109da01528181610b4101528181610bf80152610cf601526000818161041b0152818161046401528181610661015281816106a10152610730015261180e6000f3fe6080604052600436106101145760003560e01c80635b494dd5116100a05780638456cb59116100645780638456cb591461035f578063aad4148c14610374578063b9a45aac146103a8578063e5a6b10f146103c8578063f67b2bad146103dd57600080fd5b80635b494dd5146102945780635c975abb146102c85780635fcdca37146102e05780637ed5acfa1461031d5780638129fc1c1461034a57600080fd5b8063468a8c9f116100e7578063468a8c9f146101b55780634a47a3e0146101f15780634d15eb03146102255780634f1ef2861461026c57806352d1902d1461027f57600080fd5b806324ea54f4146101195780633659cfe61461014e57806337ee20dd146101705780633f4ba83a146101a0575b600080fd5b34801561012557600080fd5b5061013b6000805160206117b983398151915281565b6040519081526020015b60405180910390f35b34801561015a57600080fd5b5061016e6101693660046113d0565b610411565b005b34801561017c57600080fd5b5061019061018b3660046113ed565b6104f9565b6040519015158152602001610145565b3480156101ac57600080fd5b5061016e61051d565b3480156101c157600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff16602083015201610145565b3480156101fd57600080fd5b5061013b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561023157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610145565b61016e61027a366004611444565b610657565b34801561028b57600080fd5b5061013b610723565b3480156102a057600080fd5b5061013b7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102d457600080fd5b5060975460ff16610190565b3480156102ec57600080fd5b506101906102fb366004611508565b506001600160a01b0316600090815260ca602052604090205460ff1692915050565b34801561032957600080fd5b506103346201518081565b60405164ffffffffff9091168152602001610145565b34801561035657600080fd5b5061016e6107d6565b34801561036b57600080fd5b5061016e61089f565b34801561038057600080fd5b5061013b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b3480156103b457600080fd5b5061016e6103c3366004611559565b6109b7565b3480156103d457600080fd5b50610254610b3d565b3480156103e957600080fd5b5061013b7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104625760405162461bcd60e51b815260040161045990611597565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104ab600080516020611772833981519152546001600160a01b031690565b6001600160a01b0316146104d15760405162461bcd60e51b8152600401610459906115e3565b6104da81610bc6565b604080516000808252602082019092526104f691839190610dea565b50565b6001600160a01b038216600090815260ca602052604090205460ff165b9392505050565b6000805160206117b98339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf919061162f565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561063357600080fd5b505afa158015610647573d6000803e3d6000fd5b50505050610653610f55565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361069f5760405162461bcd60e51b815260040161045990611597565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106e8600080516020611772833981519152546001600160a01b031690565b6001600160a01b03161461070e5760405162461bcd60e51b8152600401610459906115e3565b61071782610bc6565b61065382826001610dea565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107c35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610459565b5060008051602061177283398151915290565b600054610100900460ff16158080156107f65750600054600160ff909116105b806108105750303b158015610810575060005460ff166001145b61082c5760405162461bcd60e51b81526004016104599061164c565b6000805460ff19166001179055801561084f576000805461ff0019166101001790555b610857610fa7565b80156104f6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206117b98339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610930919061162f565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b15801561099757600080fd5b505afa1580156109ab573d6000803e3d6000fd5b505050506104f6611030565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5a919061162f565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506001600160a01b038316600081815260ca6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a1505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc1919061162f565b905090565b6000805160206117b98339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c78919061162f565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610cdc57600080fd5b505afa158015610cf0573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d80919061162f565b6001600160a01b031614610de55760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b6064820152608401610459565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e1d57610de58361106d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e77575060408051601f3d908101601f19168201909252610e749181019061169a565b60015b610eda5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610459565b6000805160206117728339815191528114610f495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610459565b50610de5838383611109565b610f5d611134565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff1615808015610fc75750600054600160ff909116105b80610fe15750303b158015610fe1575060005460ff166001145b610ffd5760405162461bcd60e51b81526004016104599061164c565b6000805460ff191660011790558015611020576000805461ff0019166101001790555b61102861117f565b6108576111a6565b6110386111d5565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f8a3390565b6001600160a01b0381163b6110da5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610459565b60008051602061177283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6111128361121b565b60008251118061111f5750805b15610de55761112e838361125b565b50505050565b60975460ff1661117d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610459565b565b600054610100900460ff1661117d5760405162461bcd60e51b8152600401610459906116b3565b600054610100900460ff166111cd5760405162461bcd60e51b8152600401610459906116b3565b61117d61134f565b60975460ff161561117d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610459565b6112248161106d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6112c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610459565b600080846001600160a01b0316846040516112de9190611722565b600060405180830381855af49150503d8060008114611319576040519150601f19603f3d011682016040523d82523d6000602084013e61131e565b606091505b5091509150611346828260405180606001604052806027815260200161179260279139611382565b95945050505050565b600054610100900460ff166113765760405162461bcd60e51b8152600401610459906116b3565b6097805460ff19169055565b60608315611391575081610516565b8251156113a15782518084602001fd5b8160405162461bcd60e51b8152600401610459919061173e565b6001600160a01b03811681146104f657600080fd5b6000602082840312156113e257600080fd5b8135610516816113bb565b60008060006060848603121561140257600080fd5b833561140d816113bb565b9250602084013561141d816113bb565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561145757600080fd5b8235611462816113bb565b9150602083013567ffffffffffffffff8082111561147f57600080fd5b818501915085601f83011261149357600080fd5b8135818111156114a5576114a561142e565b604051601f8201601f19908116603f011681019083821181831017156114cd576114cd61142e565b816040528281528860208487010111156114e657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000806080858703121561151e57600080fd5b8435611529816113bb565b93506020850135611539816113bb565b92506040850135611549816113bb565b9396929550929360600135925050565b6000806040838503121561156c57600080fd5b8235611577816113bb565b91506020830135801515811461158c57600080fd5b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561164157600080fd5b8151610516816113bb565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156116ac57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611719578181015183820152602001611701565b50506000910152565b600082516117348184602087016116fe565b9190910192915050565b602081526000825180602084015261175d8160408501602087016116fe565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212206c8e6d04062c80ea3821068402e8d9938113d9275197f270b05d7d1b1b50441b64736f6c63430008100033",
441
- "deployedBytecode": "0x6080604052600436106101145760003560e01c80635b494dd5116100a05780638456cb59116100645780638456cb591461035f578063aad4148c14610374578063b9a45aac146103a8578063e5a6b10f146103c8578063f67b2bad146103dd57600080fd5b80635b494dd5146102945780635c975abb146102c85780635fcdca37146102e05780637ed5acfa1461031d5780638129fc1c1461034a57600080fd5b8063468a8c9f116100e7578063468a8c9f146101b55780634a47a3e0146101f15780634d15eb03146102255780634f1ef2861461026c57806352d1902d1461027f57600080fd5b806324ea54f4146101195780633659cfe61461014e57806337ee20dd146101705780633f4ba83a146101a0575b600080fd5b34801561012557600080fd5b5061013b6000805160206117b983398151915281565b6040519081526020015b60405180910390f35b34801561015a57600080fd5b5061016e6101693660046113d0565b610411565b005b34801561017c57600080fd5b5061019061018b3660046113ed565b6104f9565b6040519015158152602001610145565b3480156101ac57600080fd5b5061016e61051d565b3480156101c157600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff16602083015201610145565b3480156101fd57600080fd5b5061013b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561023157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610145565b61016e61027a366004611444565b610657565b34801561028b57600080fd5b5061013b610723565b3480156102a057600080fd5b5061013b7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102d457600080fd5b5060975460ff16610190565b3480156102ec57600080fd5b506101906102fb366004611508565b506001600160a01b0316600090815260ca602052604090205460ff1692915050565b34801561032957600080fd5b506103346201518081565b60405164ffffffffff9091168152602001610145565b34801561035657600080fd5b5061016e6107d6565b34801561036b57600080fd5b5061016e61089f565b34801561038057600080fd5b5061013b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b3480156103b457600080fd5b5061016e6103c3366004611559565b6109b7565b3480156103d457600080fd5b50610254610b3d565b3480156103e957600080fd5b5061013b7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104625760405162461bcd60e51b815260040161045990611597565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104ab600080516020611772833981519152546001600160a01b031690565b6001600160a01b0316146104d15760405162461bcd60e51b8152600401610459906115e3565b6104da81610bc6565b604080516000808252602082019092526104f691839190610dea565b50565b6001600160a01b038216600090815260ca602052604090205460ff165b9392505050565b6000805160206117b98339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf919061162f565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561063357600080fd5b505afa158015610647573d6000803e3d6000fd5b50505050610653610f55565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361069f5760405162461bcd60e51b815260040161045990611597565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106e8600080516020611772833981519152546001600160a01b031690565b6001600160a01b03161461070e5760405162461bcd60e51b8152600401610459906115e3565b61071782610bc6565b61065382826001610dea565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107c35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610459565b5060008051602061177283398151915290565b600054610100900460ff16158080156107f65750600054600160ff909116105b806108105750303b158015610810575060005460ff166001145b61082c5760405162461bcd60e51b81526004016104599061164c565b6000805460ff19166001179055801561084f576000805461ff0019166101001790555b610857610fa7565b80156104f6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206117b98339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610930919061162f565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b15801561099757600080fd5b505afa1580156109ab573d6000803e3d6000fd5b505050506104f6611030565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5a919061162f565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610ac157600080fd5b505afa158015610ad5573d6000803e3d6000fd5b505050506001600160a01b038316600081815260ca6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a1505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc1919061162f565b905090565b6000805160206117b98339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c78919061162f565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610cdc57600080fd5b505afa158015610cf0573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d80919061162f565b6001600160a01b031614610de55760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b6064820152608401610459565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e1d57610de58361106d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e77575060408051601f3d908101601f19168201909252610e749181019061169a565b60015b610eda5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610459565b6000805160206117728339815191528114610f495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610459565b50610de5838383611109565b610f5d611134565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff1615808015610fc75750600054600160ff909116105b80610fe15750303b158015610fe1575060005460ff166001145b610ffd5760405162461bcd60e51b81526004016104599061164c565b6000805460ff191660011790558015611020576000805461ff0019166101001790555b61102861117f565b6108576111a6565b6110386111d5565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f8a3390565b6001600160a01b0381163b6110da5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610459565b60008051602061177283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6111128361121b565b60008251118061111f5750805b15610de55761112e838361125b565b50505050565b60975460ff1661117d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610459565b565b600054610100900460ff1661117d5760405162461bcd60e51b8152600401610459906116b3565b600054610100900460ff166111cd5760405162461bcd60e51b8152600401610459906116b3565b61117d61134f565b60975460ff161561117d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610459565b6112248161106d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6112c35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610459565b600080846001600160a01b0316846040516112de9190611722565b600060405180830381855af49150503d8060008114611319576040519150601f19603f3d011682016040523d82523d6000602084013e61131e565b606091505b5091509150611346828260405180606001604052806027815260200161179260279139611382565b95945050505050565b600054610100900460ff166113765760405162461bcd60e51b8152600401610459906116b3565b6097805460ff19169055565b60608315611391575081610516565b8251156113a15782518084602001fd5b8160405162461bcd60e51b8152600401610459919061173e565b6001600160a01b03811681146104f657600080fd5b6000602082840312156113e257600080fd5b8135610516816113bb565b60008060006060848603121561140257600080fd5b833561140d816113bb565b9250602084013561141d816113bb565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561145757600080fd5b8235611462816113bb565b9150602083013567ffffffffffffffff8082111561147f57600080fd5b818501915085601f83011261149357600080fd5b8135818111156114a5576114a561142e565b604051601f8201601f19908116603f011681019083821181831017156114cd576114cd61142e565b816040528281528860208487010111156114e657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000806080858703121561151e57600080fd5b8435611529816113bb565b93506020850135611539816113bb565b92506040850135611549816113bb565b9396929550929360600135925050565b6000806040838503121561156c57600080fd5b8235611577816113bb565b91506020830135801515811461158c57600080fd5b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561164157600080fd5b8151610516816113bb565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156116ac57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611719578181015183820152602001611701565b50506000910152565b600082516117348184602087016116fe565b9190910192915050565b602081526000825180602084015261175d8160408501602087016116fe565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212206c8e6d04062c80ea3821068402e8d9938113d9275197f270b05d7d1b1b50441b64736f6c63430008100033",
459
+ "bytecode": "0x60c0604052306080523480156200001557600080fd5b5060405162001ac438038062001ac4833981016040819052620000389162000197565b806001600160a01b038116620000bb5760405162461bcd60e51b815260206004820152603660248201527f506f6c696379506f6f6c436f6d706f6e656e743a20706f6c696379506f6f6c2060448201527f63616e6e6f74206265207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b620000c5620000d8565b6001600160a01b031660a05250620001c9565b600054610100900460ff1615620001425760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000b2565b60005460ff908116101562000195576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001aa57600080fd5b81516001600160a01b0381168114620001c257600080fd5b9392505050565b60805160a05161188f620002356000396000818161025f015281816105a60152818161094e01528181610a7801528181610c0701528181610cf40152610df2015260008181610472015281816104bb015281816106b8015281816106f80152610787015261188f6000f3fe60806040526004361061011f5760003560e01c80635b494dd5116100a05780638456cb59116100645780638456cb591461038a578063aad4148c1461039f578063b9a45aac146103d3578063e5a6b10f146103f3578063f67b2bad1461040857600080fd5b80635b494dd5146102bf5780635c975abb146102f35780635fcdca371461030b5780637ed5acfa146103485780638129fc1c1461037557600080fd5b8063468a8c9f116100e7578063468a8c9f146101e05780634a47a3e01461021c5780634d15eb03146102505780634f1ef2861461029757806352d1902d146102aa57600080fd5b806301ffc9a71461012457806324ea54f4146101595780633659cfe61461018957806337ee20dd146101ab5780633f4ba83a146101cb575b600080fd5b34801561013057600080fd5b5061014461013f366004611460565b61043c565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b5061017b60008051602061183a83398151915281565b604051908152602001610150565b34801561019557600080fd5b506101a96101a436600461149f565b610468565b005b3480156101b757600080fd5b506101446101c63660046114bc565b610550565b3480156101d757600080fd5b506101a9610574565b3480156101ec57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff16602083015201610150565b34801561022857600080fd5b5061017b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561025c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610150565b6101a96102a5366004611513565b6106ae565b3480156102b657600080fd5b5061017b61077a565b3480156102cb57600080fd5b5061017b7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102ff57600080fd5b5060975460ff16610144565b34801561031757600080fd5b506101446103263660046115d7565b506001600160a01b0316600090815260fb602052604090205460ff1692915050565b34801561035457600080fd5b5061035f6201518081565b60405164ffffffffff9091168152602001610150565b34801561038157600080fd5b506101a961082d565b34801561039657600080fd5b506101a961093d565b3480156103ab57600080fd5b5061017b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b3480156103df57600080fd5b506101a96103ee366004611628565b610a55565b3480156103ff57600080fd5b5061027f610c03565b34801561041457600080fd5b5061017b7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b600061044782610c8c565b8061046257506001600160e01b03198216633411f57560e11b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104b95760405162461bcd60e51b81526004016104b090611666565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105026000805160206117f3833981519152546001600160a01b031690565b6001600160a01b0316146105285760405162461bcd60e51b81526004016104b0906116b2565b61053181610cc2565b6040805160008082526020820190925261054d91839190610ee1565b50565b6001600160a01b038216600090815260fb602052604090205460ff165b9392505050565b60008051602061183a8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062691906116fe565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506106aa61104c565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106f65760405162461bcd60e51b81526004016104b090611666565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661073f6000805160206117f3833981519152546001600160a01b031690565b6001600160a01b0316146107655760405162461bcd60e51b81526004016104b0906116b2565b61076e82610cc2565b6106aa82826001610ee1565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461081a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104b0565b506000805160206117f383398151915290565b600054610100900460ff161580801561084d5750600054600160ff909116105b806108675750303b158015610867575060005460ff166001145b6108ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b0565b6000805460ff1916600117905580156108ed576000805461ff0019166101001790555b6108f561109e565b801561054d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008051602061183a8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906116fe565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b158015610a3557600080fd5b505afa158015610a49573d6000803e3d6000fd5b5050505061054d6110d7565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af891906116fe565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610b5f57600080fd5b505afa158015610b73573d6000803e3d6000fd5b5050506001600160a01b038416600090815260fb602052604090205460ff161515831515149050610bfe576001600160a01b038316600081815260fb6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8791906116fe565b905090565b60006001600160e01b031982166301ffc9a760e01b148061046257506001600160e01b03198216634d15eb0360e01b1492915050565b60008051602061183a8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906116fe565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610dd857600080fd5b505afa158015610dec573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c91906116fe565b6001600160a01b031614610bfe5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b60648201526084016104b0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f1457610bfe83611114565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f6e575060408051601f3d908101601f19168201909252610f6b9181019061171b565b60015b610fd15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104b0565b6000805160206117f383398151915281146110405760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104b0565b50610bfe8383836111b0565b6110546111db565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff166110c55760405162461bcd60e51b81526004016104b090611734565b6110cd611224565b6110d561124b565b565b6110df61127a565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110813390565b6001600160a01b0381163b6111815760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104b0565b6000805160206117f383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6111b9836112c0565b6000825111806111c65750805b15610bfe576111d58383611300565b50505050565b60975460ff166110d55760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104b0565b600054610100900460ff166110d55760405162461bcd60e51b81526004016104b090611734565b600054610100900460ff166112725760405162461bcd60e51b81526004016104b090611734565b6110d56113f4565b60975460ff16156110d55760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104b0565b6112c981611114565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6113685760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104b0565b600080846001600160a01b03168460405161138391906117a3565b600060405180830381855af49150503d80600081146113be576040519150601f19603f3d011682016040523d82523d6000602084013e6113c3565b606091505b50915091506113eb828260405180606001604052806027815260200161181360279139611427565b95945050505050565b600054610100900460ff1661141b5760405162461bcd60e51b81526004016104b090611734565b6097805460ff19169055565b6060831561143657508161056d565b8251156114465782518084602001fd5b8160405162461bcd60e51b81526004016104b091906117bf565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461056d57600080fd5b6001600160a01b038116811461054d57600080fd5b6000602082840312156114b157600080fd5b813561056d8161148a565b6000806000606084860312156114d157600080fd5b83356114dc8161148a565b925060208401356114ec8161148a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561152657600080fd5b82356115318161148a565b9150602083013567ffffffffffffffff8082111561154e57600080fd5b818501915085601f83011261156257600080fd5b813581811115611574576115746114fd565b604051601f8201601f19908116603f0116810190838211818310171561159c5761159c6114fd565b816040528281528860208487010111156115b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080608085870312156115ed57600080fd5b84356115f88161148a565b935060208501356116088161148a565b925060408501356116188161148a565b9396929550929360600135925050565b6000806040838503121561163b57600080fd5b82356116468161148a565b91506020830135801515811461165b57600080fd5b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561171057600080fd5b815161056d8161148a565b60006020828403121561172d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561179a578181015183820152602001611782565b50506000910152565b600082516117b581846020870161177f565b9190910192915050565b60208152600082518060208401526117de81604085016020870161177f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220dcffde3f8fc342dfa84f6a10821fcd150240d742787fcb47c9c3d6471ae5ae2564736f6c63430008100033",
460
+ "deployedBytecode": "0x60806040526004361061011f5760003560e01c80635b494dd5116100a05780638456cb59116100645780638456cb591461038a578063aad4148c1461039f578063b9a45aac146103d3578063e5a6b10f146103f3578063f67b2bad1461040857600080fd5b80635b494dd5146102bf5780635c975abb146102f35780635fcdca371461030b5780637ed5acfa146103485780638129fc1c1461037557600080fd5b8063468a8c9f116100e7578063468a8c9f146101e05780634a47a3e01461021c5780634d15eb03146102505780634f1ef2861461029757806352d1902d146102aa57600080fd5b806301ffc9a71461012457806324ea54f4146101595780633659cfe61461018957806337ee20dd146101ab5780633f4ba83a146101cb575b600080fd5b34801561013057600080fd5b5061014461013f366004611460565b61043c565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b5061017b60008051602061183a83398151915281565b604051908152602001610150565b34801561019557600080fd5b506101a96101a436600461149f565b610468565b005b3480156101b757600080fd5b506101446101c63660046114bc565b610550565b3480156101d757600080fd5b506101a9610574565b3480156101ec57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff16602083015201610150565b34801561022857600080fd5b5061017b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561025c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610150565b6101a96102a5366004611513565b6106ae565b3480156102b657600080fd5b5061017b61077a565b3480156102cb57600080fd5b5061017b7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102ff57600080fd5b5060975460ff16610144565b34801561031757600080fd5b506101446103263660046115d7565b506001600160a01b0316600090815260fb602052604090205460ff1692915050565b34801561035457600080fd5b5061035f6201518081565b60405164ffffffffff9091168152602001610150565b34801561038157600080fd5b506101a961082d565b34801561039657600080fd5b506101a961093d565b3480156103ab57600080fd5b5061017b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b3480156103df57600080fd5b506101a96103ee366004611628565b610a55565b3480156103ff57600080fd5b5061027f610c03565b34801561041457600080fd5b5061017b7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b600061044782610c8c565b8061046257506001600160e01b03198216633411f57560e11b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104b95760405162461bcd60e51b81526004016104b090611666565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105026000805160206117f3833981519152546001600160a01b031690565b6001600160a01b0316146105285760405162461bcd60e51b81526004016104b0906116b2565b61053181610cc2565b6040805160008082526020820190925261054d91839190610ee1565b50565b6001600160a01b038216600090815260fb602052604090205460ff165b9392505050565b60008051602061183a8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062691906116fe565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506106aa61104c565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106f65760405162461bcd60e51b81526004016104b090611666565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661073f6000805160206117f3833981519152546001600160a01b031690565b6001600160a01b0316146107655760405162461bcd60e51b81526004016104b0906116b2565b61076e82610cc2565b6106aa82826001610ee1565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461081a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104b0565b506000805160206117f383398151915290565b600054610100900460ff161580801561084d5750600054600160ff909116105b806108675750303b158015610867575060005460ff166001145b6108ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b0565b6000805460ff1916600117905580156108ed576000805461ff0019166101001790555b6108f561109e565b801561054d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60008051602061183a8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906116fe565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b158015610a3557600080fd5b505afa158015610a49573d6000803e3d6000fd5b5050505061054d6110d7565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af891906116fe565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610b5f57600080fd5b505afa158015610b73573d6000803e3d6000fd5b5050506001600160a01b038416600090815260fb602052604090205460ff161515831515149050610bfe576001600160a01b038316600081815260fb6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8791906116fe565b905090565b60006001600160e01b031982166301ffc9a760e01b148061046257506001600160e01b03198216634d15eb0360e01b1492915050565b60008051602061183a8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906116fe565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610dd857600080fd5b505afa158015610dec573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c91906116fe565b6001600160a01b031614610bfe5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b60648201526084016104b0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f1457610bfe83611114565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f6e575060408051601f3d908101601f19168201909252610f6b9181019061171b565b60015b610fd15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104b0565b6000805160206117f383398151915281146110405760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104b0565b50610bfe8383836111b0565b6110546111db565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff166110c55760405162461bcd60e51b81526004016104b090611734565b6110cd611224565b6110d561124b565b565b6110df61127a565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110813390565b6001600160a01b0381163b6111815760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104b0565b6000805160206117f383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6111b9836112c0565b6000825111806111c65750805b15610bfe576111d58383611300565b50505050565b60975460ff166110d55760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104b0565b600054610100900460ff166110d55760405162461bcd60e51b81526004016104b090611734565b600054610100900460ff166112725760405162461bcd60e51b81526004016104b090611734565b6110d56113f4565b60975460ff16156110d55760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104b0565b6112c981611114565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6113685760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104b0565b600080846001600160a01b03168460405161138391906117a3565b600060405180830381855af49150503d80600081146113be576040519150601f19603f3d011682016040523d82523d6000602084013e6113c3565b606091505b50915091506113eb828260405180606001604052806027815260200161181360279139611427565b95945050505050565b600054610100900460ff1661141b5760405162461bcd60e51b81526004016104b090611734565b6097805460ff19169055565b6060831561143657508161056d565b8251156114465782518084602001fd5b8160405162461bcd60e51b81526004016104b091906117bf565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461056d57600080fd5b6001600160a01b038116811461054d57600080fd5b6000602082840312156114b157600080fd5b813561056d8161148a565b6000806000606084860312156114d157600080fd5b83356114dc8161148a565b925060208401356114ec8161148a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561152657600080fd5b82356115318161148a565b9150602083013567ffffffffffffffff8082111561154e57600080fd5b818501915085601f83011261156257600080fd5b813581811115611574576115746114fd565b604051601f8201601f19908116603f0116810190838211818310171561159c5761159c6114fd565b816040528281528860208487010111156115b557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080608085870312156115ed57600080fd5b84356115f88161148a565b935060208501356116088161148a565b925060408501356116188161148a565b9396929550929360600135925050565b6000806040838503121561163b57600080fd5b82356116468161148a565b91506020830135801515811461165b57600080fd5b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561171057600080fd5b815161056d8161148a565b60006020828403121561172d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561179a578181015183820152602001611782565b50506000910152565b600082516117b581846020870161177f565b9190910192915050565b60208152600082518060208401526117de81604085016020870161177f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220dcffde3f8fc342dfa84f6a10821fcd150240d742787fcb47c9c3d6471ae5ae2564736f6c63430008100033",
442
461
  "linkReferences": {},
443
462
  "deployedLinkReferences": {}
444
463
  }
@@ -194,6 +194,25 @@
194
194
  "outputs": [],
195
195
  "stateMutability": "nonpayable",
196
196
  "type": "function"
197
+ },
198
+ {
199
+ "inputs": [
200
+ {
201
+ "internalType": "bytes4",
202
+ "name": "interfaceId",
203
+ "type": "bytes4"
204
+ }
205
+ ],
206
+ "name": "supportsInterface",
207
+ "outputs": [
208
+ {
209
+ "internalType": "bool",
210
+ "name": "",
211
+ "type": "bool"
212
+ }
213
+ ],
214
+ "stateMutability": "view",
215
+ "type": "function"
197
216
  }
198
217
  ],
199
218
  "bytecode": "0x",
@@ -3,8 +3,8 @@
3
3
  "contractName": "Policy",
4
4
  "sourceName": "contracts/Policy.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ac95ce865d8992395acd7e6827488065228300d73d20b317db88cc630642668964736f6c63430008100033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ac95ce865d8992395acd7e6827488065228300d73d20b317db88cc630642668964736f6c63430008100033",
6
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c296a2d70e6708f6d99cf56cdaf4cad198bfd6e91a110e9709dec45102a019564736f6c63430008100033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c296a2d70e6708f6d99cf56cdaf4cad198bfd6e91a110e9709dec45102a019564736f6c63430008100033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -1292,8 +1292,8 @@
1292
1292
  "type": "function"
1293
1293
  }
1294
1294
  ],
1295
- "bytecode": "0x60e0604052306080523480156200001557600080fd5b506040516200516038038062005160833981016040819052620000389162000069565b6001600160a01b0391821660a0521660c052620000a8565b6001600160a01b03811681146200006657600080fd5b50565b600080604083850312156200007d57600080fd5b82516200008a8162000050565b60208401519092506200009d8162000050565b809150509250929050565b60805160a05160c051614ffc62000164600039600081816106d501528181610d05015281816116b501528181611760015281816118090152818161184801526119790152600081816105c801528181610be401528181610f5d01528181611083015281816111520152818161122101528181611a8e01528181611eb201528181612540015281816126d40152612d6f015260008181610ae701528181610b2701528181610dc001528181610e000152610e8f0152614ffc6000f3fe6080604052600436106102305760003560e01c80636352211e1161012e57806395d89b41116100ab578063e985e9c51161006f578063e985e9c5146106f9578063f0f4426014610719578063f3fef3a314610739578063f67b2bad14610759578063ffa600e31461077b57600080fd5b806395d89b4114610651578063a22cb46514610666578063b88d4fde14610686578063c87b56dd146106a6578063e5a6b10f146106c657600080fd5b806370a08231116100f257806370a082311461059957806371907f17146105b95780637a702b3c146105ec57806382afd23b1461060c5780638456cb591461063c57600080fd5b80636352211e146104f95780636769a76f146105195780636af6f1ef146105395780636b8734e7146105595780636f86c8971461057957600080fd5b80633f4ba83a116101bc57806352d1902d1161018057806352d1902d146104595780635b494dd51461046e5780635c975abb146104a25780635fcbf445146104ba57806361d027b3146104da57600080fd5b80633f4ba83a146103bd57806342842e0e146103d257806347e7ef24146103f25780634a47a3e0146104125780634f1ef2861461044657600080fd5b8063095ea7b311610203578063095ea7b3146102e657806323b872dd1461030657806324ea54f41461032657806333d6157a146103565780633659cfe61461039d57600080fd5b806301ffc9a71461023557806306fdde031461026a578063077f224a1461028c578063081812fc146102ae575b600080fd5b34801561024157600080fd5b5061025561025036600461431b565b61079b565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f6107ed565b6040516102619190614388565b34801561029857600080fd5b506102ac6102a736600461447d565b61087f565b005b3480156102ba57600080fd5b506102ce6102c93660046144f5565b610970565b6040516001600160a01b039091168152602001610261565b3480156102f257600080fd5b506102ac61030136600461450e565b610997565b34801561031257600080fd5b506102ac61032136600461453a565b610aac565b34801561033257600080fd5b50610348600080516020614fa783398151915281565b604051908152602001610261565b34801561036257600080fd5b5061039061037136600461457b565b6001600160a01b0316600090815261012e602052604090205460ff1690565b60405161026191906145cc565b3480156103a957600080fd5b506102ac6103b836600461457b565b610add565b3480156103c957600080fd5b506102ac610bbc565b3480156103de57600080fd5b506102ac6103ed36600461453a565b610c7d565b3480156103fe57600080fd5b506102ac61040d36600461450e565b610c98565b34801561041e57600080fd5b506103487fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102ac6104543660046145df565b610db6565b34801561046557600080fd5b50610348610e82565b34801561047a57600080fd5b506103487f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104ae57600080fd5b5060335460ff16610255565b3480156104c657600080fd5b506102ac6104d536600461463c565b610f35565b3480156104e657600080fd5b5061012d546001600160a01b03166102ce565b34801561050557600080fd5b506102ce6105143660046144f5565b6113ae565b34801561052557600080fd5b50610348610534366004614761565b61140e565b34801561054557600080fd5b506102ac6105543660046147ea565b6119f1565b34801561056557600080fd5b506102ac61057436600461463c565b611a75565b34801561058557600080fd5b506102ac61059436600461457b565b611e99565b3480156105a557600080fd5b506103486105b436600461457b565b61247f565b3480156105c557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b3480156105f857600080fd5b506102ac610607366004614807565b612505565b34801561061857600080fd5b506102556106273660046144f5565b600090815261012f6020526040902054151590565b34801561064857600080fd5b506102ac612527565b34801561065d57600080fd5b5061027f6125cc565b34801561067257600080fd5b506102ac610681366004614842565b6125db565b34801561069257600080fd5b506102ac6106a1366004614870565b6125e6565b3480156106b257600080fd5b5061027f6106c13660046144f5565b612618565b3480156106d257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b34801561070557600080fd5b506102556107143660046148dc565b61268c565b34801561072557600080fd5b506102ac61073436600461457b565b6126bb565b34801561074557600080fd5b5061034861075436600461450e565b6127b2565b34801561076557600080fd5b50610348600080516020614f6083398151915281565b34801561078757600080fd5b506102ac61079636600461490a565b6128db565b60006001600160e01b031982166380ac58cd60e01b14806107cc57506001600160e01b03198216635b5e139f60e01b145b806107e757506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060fb80546107fc90614939565b80601f016020809104026020016040519081016040528092919081815260200182805461082890614939565b80156108755780601f1061084a57610100808354040283529160200191610875565b820191906000526020600020905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b600054610100900460ff161580801561089f5750600054600160ff909116105b806108b95750303b1580156108b9575060005460ff166001145b6108de5760405162461bcd60e51b81526004016108d59061496d565b60405180910390fd5b6000805460ff191660011790558015610901576000805461ff0019166101001790555b61090961290e565b6109138484612937565b61091b612968565b61092482612997565b801561096a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061097b82612a75565b50600090815260ff60205260409020546001600160a01b031690565b60006109a2826113ae565b9050806001600160a01b0316836001600160a01b031603610a0f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108d5565b336001600160a01b0382161480610a2b5750610a2b813361268c565b610a9d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108d5565b610aa78383612ad4565b505050565b610ab63382612b42565b610ad25760405162461bcd60e51b81526004016108d5906149bb565b610aa7838383612ba0565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b255760405162461bcd60e51b81526004016108d590614a09565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b6e600080516020614f40833981519152546001600160a01b031690565b6001600160a01b031614610b945760405162461bcd60e51b81526004016108d590614a55565b610b9d81612d47565b60408051600080825260208201909252610bb991839190612e01565b50565b600080516020614fa7833981519152600080516020614f608339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610c5957600080fd5b505afa158015610c6d573d6000803e3d6000fd5b50505050610c79612f6c565b5050565b610aa7838383604051806020016040528060008152506125e6565b610ca0612fbe565b6001610cab83613004565b6003811115610cbc57610cbc614598565b14610d005760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b60448201526064016108d5565b610d357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338484613091565b6001600160a01b0382166347e7ef24336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa79190614aa1565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610dfe5760405162461bcd60e51b81526004016108d590614a09565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e47600080516020614f40833981519152546001600160a01b031690565b6001600160a01b031614610e6d5760405162461bcd60e51b81526004016108d590614a55565b610e7682612d47565b610c7982826001612e01565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f225760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108d5565b50600080516020614f4083398151915290565b600080516020614fa7833981519152600080516020614f608339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610fd257600080fd5b505afa158015610fe6573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff16600381111561101a5761101a614598565b0361105d5760405162461bcd60e51b815260206004820152601360248201527210dbdb5c1bdb995b9d081b9bdd08199bdd5b99606a1b60448201526064016108d5565b600184600381111561107157611071614598565b14801561112657506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020614f60833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190614aba565b806111f55750600384600381111561114057611140614598565b1480156111f557506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020614fa7833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f59190614aba565b806112c45750600284600381111561120f5761120f614598565b1480156112c457506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020614f60833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190614aba565b6113365760405162461bcd60e51b815260206004820152603e60248201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960448201527f204c4556454c312063616e2061637469766174652f646570726563617465000060648201526084016108d5565b80548490829060ff1916600183600381111561135457611354614598565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161139f91610100900460ff16908890614ad7565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806107e75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108d5565b6000611418612fbe565b6101608501516001600160a01b03811633146114825760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b60648201526084016108d5565b600161148d826130eb565b600381111561149e5761149e614598565b146114f55760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016108d5565b6115206bffffffffffffffffffffffff84166bffffffffffffffffffffffff19606084901b16614b13565b865261152b8661316e565b61012f600088600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab9190614b26565b905060016115b88261319e565b60038111156115c9576115c9614598565b146116265760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f7420666f756e64206f72206e6f746044820152662061637469766560c81b60648201526084016108d5565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611652908a90600401614bfb565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050506116a28588600001516040518060200160405280600081525061322c565b60c08701516116df906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613091565b610140870151156117885761178886826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117509190614b26565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613091565b610120870151156118315761183186826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190614b26565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613091565b61012d5460e0880151611876916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613091565b60008761010001511180156118fe5750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190614b26565b6001600160a01b0316866001600160a01b031614155b156119a1576119a186836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119699190614b26565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613091565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516119da9190614bfb565b60405180910390a25050845190505b949350505050565b6119f9612fbe565b42611a0c6101c083016101a08401614c0a565b64ffffffffff161115611a5a5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b60448201526064016108d5565b610bb9611a6c36839003830183614c25565b6000600161325f565b600080516020614f608339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611afa57600080fd5b505afa158015611b0e573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff166003811115611b4257611b42614598565b14611b8f5760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e7420616c726561647920696e2074686520706f6f6c00000060448201526064016108d5565b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfb9190614b26565b6001600160a01b031614611c5b5760405162461bcd60e51b815260206004820152602160248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320706f6f6044820152601b60fa1b60648201526084016108d5565b8054600160ff198216811783558491839161ffff1990911617610100836003811115611c8957611c89614598565b02179055506003836003811115611ca257611ca2614598565b03611e4f5760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d109190614b26565b90506001600160a01b03811615611d7d576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b158015611d6457600080fd5b505af1158015611d78573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf9190614b26565b90506001600160a01b03811615611e4c576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b158015611e3357600080fd5b505af1158015611e47573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef846001604051611e8b929190614ad7565b60405180910390a250505050565b600080516020614f608339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff166003811115611f6757611f67614598565b14611fb45760405162461bcd60e51b815260206004820152601860248201527f436f6d706f6e656e74206e6f742064657072656361746564000000000000000060448201526064016108d5565b60018154610100900460ff166003811115611fd157611fd1614598565b0361209957826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190614aa1565b156120945760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b60648201526084016108d5565b61240b565b60028154610100900460ff1660038111156120b6576120b6614598565b0361217d57826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614aa1565b156120945760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016108d5565b60038154610100900460ff16600381111561219a5761219a614598565b0361240b576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122069190614aa1565b156122685760405162461bcd60e51b815260206004820152602c60248201527f43616e27742072656d6f76652061205072656d69756d734163636f756e74207760448201526b697468207072656d69756d7360a01b60648201526084016108d5565b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cc9190614b26565b90506001600160a01b03811615612339576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b15801561232057600080fd5b505af1158015612334573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b9190614b26565b90506001600160a01b03811615612408576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b1580156123ef57600080fd5b505af1158015612403573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161245291610100900460ff1690600090614ad7565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b0382166124e95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108d5565b506001600160a01b0316600090815260fe602052604090205490565b61250d612fbe565b610c7961251f36849003840184614c25565b82600061325f565b600080516020614fa78339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156125ac57600080fd5b505afa1580156125c0573d6000803e3d6000fd5b50505050610bb9613716565b606060fc80546107fc90614939565b610c79338383613753565b6125f03383612b42565b61260c5760405162461bcd60e51b81526004016108d5906149bb565b61096a84848484613822565b606061262382612a75565b600061263a60408051602081019091526000815290565b9050600081511161265a5760405180602001604052806000815250612685565b8061266484613855565b604051602001612675929190614c42565b6040516020818303038152906040525b9392505050565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b600080516020614f608339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561274057600080fd5b505afa158015612754573d6000803e3d6000fd5b505061012d80546001600160a01b0386166001600160a01b03199091168117909155604051908152600192507fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f915060200160405180910390a25050565b60006127bc612fbe565b60006127c784613004565b905060018160038111156127dd576127dd614598565b14806127fa575060028160038111156127f8576127f8614598565b145b6128585760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b60648201526084016108d5565b60003360405163f3fef3a360e01b81526001600160a01b038083166004830152602482018790529192509086169063f3fef3a3906044016020604051808303816000875af11580156128ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d29190614aa1565b95945050505050565b6128e3612fbe565b610c796128f536849003840184614c25565b82612901576000612907565b83602001355b600061325f565b600054610100900460ff166129355760405162461bcd60e51b81526004016108d590614c71565b565b600054610100900460ff1661295e5760405162461bcd60e51b81526004016108d590614c71565b610c798282613956565b600054610100900460ff1661298f5760405162461bcd60e51b81526004016108d590614c71565b612935613996565b600054610100900460ff16158080156129b75750600054600160ff909116105b806129d15750303b1580156129d1575060005460ff166001145b6129ed5760405162461bcd60e51b81526004016108d59061496d565b6000805460ff191660011790558015612a10576000805461ff0019166101001790555b61012d80546001600160a01b0319166001600160a01b0384161790558015610c79576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600081815260fd60205260409020546001600160a01b0316610bb95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108d5565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612b09826113ae565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612b4e836113ae565b9050806001600160a01b0316846001600160a01b03161480612b755750612b75818561268c565b806119e95750836001600160a01b0316612b8e84610970565b6001600160a01b031614949350505050565b826001600160a01b0316612bb3826113ae565b6001600160a01b031614612c175760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108d5565b6001600160a01b038216612c795760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108d5565b612c848383836139c9565b612c8f600082612ad4565b6001600160a01b038316600090815260fe60205260408120805460019290612cb8908490614cbc565b90915550506001600160a01b038216600090815260fe60205260408120805460019290612ce6908490614b13565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020614fa7833981519152600080516020614f608339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015612de457600080fd5b505afa158015612df8573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612e3457610aa7836139d1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612e8e575060408051601f3d908101601f19168201909252612e8b91810190614aa1565b60015b612ef15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108d5565b600080516020614f408339815191528114612f605760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108d5565b50610aa7838383613a6d565b612f74613a92565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff16156129355760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108d5565b6001600160a01b038116600090815261012e6020526040812060018154610100900460ff16600381111561303a5761303a614598565b146130875760405162461bcd60e51b815260206004820152601a60248201527f436f6d706f6e656e74206973206e6f7420616e2065546f6b656e00000000000060448201526064016108d5565b5460ff1692915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261096a908590613adb565b6001600160a01b038116600090815261012e6020526040812060028154610100900460ff16600381111561312157613121614598565b146130875760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e74206973206e6f742061205269736b4d6f64756c6500000060448201526064016108d5565b6000816040516020016131819190614bfb565b604051602081830303815290604052805190602001209050919050565b6001600160a01b038116600090815261012e6020526040812060038154610100900460ff1660038111156131d4576131d4614598565b146130875760405162461bcd60e51b815260206004820152602260248201527f436f6d706f6e656e74206973206e6f742061205072656d69756d734163636f756044820152611b9d60f21b60648201526084016108d5565b6132368383613bad565b6132436000848484613cfb565b610aa75760405162461bcd60e51b81526004016108d590614ccf565b61326883613df9565b610160830151818061328257506001600160a01b03811633145b6132ce5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c696369657360448201526064016108d5565b8215806132e6575042846101a0015164ffffffffff16115b6133325760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c696379000000000000000060448201526064016108d5565b600061333d826130eb565b9050600181600381111561335357613353614598565b14806133705750600281600381111561336e5761336e614598565b145b6133e25760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016108d5565b846020015184111561342f5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b60448201526064016108d5565b600080851190506000836001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190614b26565b90506134a58161319e565b925060018360038111156134bb576134bb614598565b14806134d8575060028360038111156134d6576134d6614598565b145b6135565760405162461bcd60e51b815260206004820152604360248201527f5072656d69756d734163636f756e74206d75737420626520616374697665206f60448201527f72206465707265636174656420746f2070726f63657373207265736f6c7574696064820152626f6e7360e81b608482015260a4016108d5565b81156135d657600061356b88600001516113ae565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee79061359e9084908c908c90600401614d21565b600060405180830381600087803b1580156135b857600080fd5b505af11580156135cc573d6000803e3d6000fd5b5050505050613635565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613602908a90600401614bfb565b600060405180830381600087803b15801561361c57600080fd5b505af1158015613630573d6000803e3d6000fd5b505050505b6020870151604051636a448ef160e01b815260048101919091526001600160a01b03851690636a448ef190602401600060405180830381600087803b15801561367d57600080fd5b505af1158015613691573d6000803e3d6000fd5b5050505086600001518761016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e886040516136da91815260200190565b60405180910390a38651600090815261012f6020526040812055851561370b5786516137069087613e60565b612df8565b8651612df890613fba565b61371e612fbe565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612fa13390565b816001600160a01b0316836001600160a01b0316036137b45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108d5565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61382d848484612ba0565b61383984848484613cfb565b61096a5760405162461bcd60e51b81526004016108d590614ccf565b60608160000361387c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156138a6578061389081614d4e565b915061389f9050600a83614d7d565b9150613880565b60008167ffffffffffffffff8111156138c1576138c161439b565b6040519080825280601f01601f1916602001820160405280156138eb576020820181803683370190505b5090505b84156119e957613900600183614cbc565b915061390d600a86614d91565b613918906030614b13565b60f81b81838151811061392d5761392d614da5565b60200101906001600160f81b031916908160001a90535061394f600a86614d7d565b94506138ef565b600054610100900460ff1661397d5760405162461bcd60e51b81526004016108d590614c71565b60fb6139898382614e09565b5060fc610aa78282614e09565b600054610100900460ff166139bd5760405162461bcd60e51b81526004016108d590614c71565b6033805460ff19169055565b610aa7612fbe565b6001600160a01b0381163b613a3e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108d5565b600080516020614f4083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613a7683614061565b600082511180613a835750805b15610aa75761096a83836140a1565b60335460ff166129355760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108d5565b6000613b30826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661418c9092919063ffffffff16565b805190915015610aa75780806020019051810190613b4e9190614aba565b610aa75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108d5565b6001600160a01b038216613c035760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108d5565b600081815260fd60205260409020546001600160a01b031615613c685760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108d5565b613c74600083836139c9565b6001600160a01b038216600090815260fe60205260408120805460019290613c9d908490614b13565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15613df157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613d3f903390899088908890600401614ec9565b6020604051808303816000875af1925050508015613d7a575060408051601f3d908101601f19168201909252613d7791810190614f06565b60015b613dd7573d808015613da8576040519150601f19603f3d011682016040523d82523d6000602084013e613dad565b606091505b508051600003613dcf5760405162461bcd60e51b81526004016108d590614ccf565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506119e9565b5060016119e9565b805115801590613e2157508051600090815261012f6020526040902054613e1f8261316e565b145b610bb95760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016108d5565b6000613e6b836113ae565b90506001600160a01b0381163b613e8157505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606481018590526084016020604051808303816000875af1925050508015613f07575060408051601f3d908101601f19168201909252613f0491810190614f06565b60015b613f4a573d808015613f35576040519150601f19603f3d011682016040523d82523d6000602084013e613f3a565b606091505b508051600003613dcf5750505050565b6001600160e01b03198116636b140e9f60e11b1461096a5760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b60648201526084016108d5565b6000613fc5826113ae565b90506001600160a01b0381163b613fda575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1925050508015614059575060408051601f3d908101601f1916820190925261405691810190614f06565b60015b610aa7575050565b61406a816139d1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6141095760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108d5565b600080846001600160a01b0316846040516141249190614f23565b600060405180830381855af49150503d806000811461415f576040519150601f19603f3d011682016040523d82523d6000602084013e614164565b606091505b50915091506128d28282604051806060016040528060278152602001614f806027913961419b565b60606119e984846000856141d4565b606083156141aa575081612685565b8251156141ba5782518084602001fd5b8160405162461bcd60e51b81526004016108d59190614388565b6060824710156142355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108d5565b6001600160a01b0385163b61428c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108d5565b600080866001600160a01b031685876040516142a89190614f23565b60006040518083038185875af1925050503d80600081146142e5576040519150601f19603f3d011682016040523d82523d6000602084013e6142ea565b606091505b50915091506142fa82828661419b565b979650505050505050565b6001600160e01b031981168114610bb957600080fd5b60006020828403121561432d57600080fd5b813561268581614305565b60005b8381101561435357818101518382015260200161433b565b50506000910152565b60008151808452614374816020860160208601614338565b601f01601f19169290920160200192915050565b602081526000612685602083018461435c565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff811182821017156143d5576143d561439b565b60405290565b600082601f8301126143ec57600080fd5b813567ffffffffffffffff808211156144075761440761439b565b604051601f8301601f19908116603f0116810190828211818310171561442f5761442f61439b565b8160405283815286602085880101111561444857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610bb957600080fd5b60008060006060848603121561449257600080fd5b833567ffffffffffffffff808211156144aa57600080fd5b6144b6878388016143db565b945060208601359150808211156144cc57600080fd5b506144d9868287016143db565b92505060408401356144ea81614468565b809150509250925092565b60006020828403121561450757600080fd5b5035919050565b6000806040838503121561452157600080fd5b823561452c81614468565b946020939093013593505050565b60008060006060848603121561454f57600080fd5b833561455a81614468565b9250602084013561456a81614468565b929592945050506040919091013590565b60006020828403121561458d57600080fd5b813561268581614468565b634e487b7160e01b600052602160045260246000fd5b60048110610bb957634e487b7160e01b600052602160045260246000fd5b602081016145d9836145ae565b91905290565b600080604083850312156145f257600080fd5b82356145fd81614468565b9150602083013567ffffffffffffffff81111561461957600080fd5b614625858286016143db565b9150509250929050565b60048110610bb957600080fd5b6000806040838503121561464f57600080fd5b823561465a81614468565b9150602083013561466a8161462f565b809150509250929050565b803561468081614468565b919050565b803564ffffffffff8116811461468057600080fd5b60006101c082840312156146ad57600080fd5b6146b56143b1565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160614733818401614675565b90820152610180614745838201614685565b908201526101a0614757838201614685565b9082015292915050565b600080600080610220858703121561477857600080fd5b614782868661469a565b93506101c085013561479381614468565b92506101e08501356147a481614468565b91506102008501356bffffffffffffffffffffffff811681146147c657600080fd5b939692955090935050565b60006101c082840312156147e457600080fd5b50919050565b60006101c082840312156147fd57600080fd5b61268583836147d1565b6000806101e0838503121561481b57600080fd5b61482584846147d1565b946101c0939093013593505050565b8015158114610bb957600080fd5b6000806040838503121561485557600080fd5b823561486081614468565b9150602083013561466a81614834565b6000806000806080858703121561488657600080fd5b843561489181614468565b935060208501356148a181614468565b925060408501359150606085013567ffffffffffffffff8111156148c457600080fd5b6148d0878288016143db565b91505092959194509250565b600080604083850312156148ef57600080fd5b82356148fa81614468565b9150602083013561466a81614468565b6000806101e0838503121561491e57600080fd5b61492884846147d1565b91506101c083013561466a81614834565b600181811c9082168061494d57607f821691505b6020821081036147e457634e487b7160e01b600052602260045260246000fd5b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215614ab357600080fd5b5051919050565b600060208284031215614acc57600080fd5b815161268581614834565b60408101614ae4846145ae565b838252614af0836145ae565b8260208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107e7576107e7614afd565b600060208284031215614b3857600080fd5b815161268581614468565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080820151818401525061012080820151818401525061014080820151818401525061016080820151614bcc828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff81168483015261096a565b6101c081016107e78284614b43565b600060208284031215614c1c57600080fd5b61268582614685565b60006101c08284031215614c3857600080fd5b612685838361469a565b60008351614c54818460208801614338565b835190830190614c68818360208801614338565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b818103818111156107e7576107e7614afd565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03841681526102008101614d3f6020830185614b43565b826101e0830152949350505050565b600060018201614d6057614d60614afd565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614d8c57614d8c614d67565b500490565b600082614da057614da0614d67565b500690565b634e487b7160e01b600052603260045260246000fd5b601f821115610aa757600081815260208120601f850160051c81016020861015614de25750805b601f850160051c820191505b81811015614e0157828155600101614dee565b505050505050565b815167ffffffffffffffff811115614e2357614e2361439b565b614e3781614e318454614939565b84614dbb565b602080601f831160018114614e6c5760008415614e545750858301515b600019600386901b1c1916600185901b178555614e01565b600085815260208120601f198616915b82811015614e9b57888601518255948401946001909101908401614e7c565b5085821015614eb95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614efc9083018461435c565b9695505050505050565b600060208284031215614f1857600080fd5b815161268581614305565b60008251614f35818460208701614338565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212201e3a01964b43e0c765f3a1ca835c522b291b2fc8ae4bd887ba9c05aa9490273764736f6c63430008100033",
1296
- "deployedBytecode": "0x6080604052600436106102305760003560e01c80636352211e1161012e57806395d89b41116100ab578063e985e9c51161006f578063e985e9c5146106f9578063f0f4426014610719578063f3fef3a314610739578063f67b2bad14610759578063ffa600e31461077b57600080fd5b806395d89b4114610651578063a22cb46514610666578063b88d4fde14610686578063c87b56dd146106a6578063e5a6b10f146106c657600080fd5b806370a08231116100f257806370a082311461059957806371907f17146105b95780637a702b3c146105ec57806382afd23b1461060c5780638456cb591461063c57600080fd5b80636352211e146104f95780636769a76f146105195780636af6f1ef146105395780636b8734e7146105595780636f86c8971461057957600080fd5b80633f4ba83a116101bc57806352d1902d1161018057806352d1902d146104595780635b494dd51461046e5780635c975abb146104a25780635fcbf445146104ba57806361d027b3146104da57600080fd5b80633f4ba83a146103bd57806342842e0e146103d257806347e7ef24146103f25780634a47a3e0146104125780634f1ef2861461044657600080fd5b8063095ea7b311610203578063095ea7b3146102e657806323b872dd1461030657806324ea54f41461032657806333d6157a146103565780633659cfe61461039d57600080fd5b806301ffc9a71461023557806306fdde031461026a578063077f224a1461028c578063081812fc146102ae575b600080fd5b34801561024157600080fd5b5061025561025036600461431b565b61079b565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f6107ed565b6040516102619190614388565b34801561029857600080fd5b506102ac6102a736600461447d565b61087f565b005b3480156102ba57600080fd5b506102ce6102c93660046144f5565b610970565b6040516001600160a01b039091168152602001610261565b3480156102f257600080fd5b506102ac61030136600461450e565b610997565b34801561031257600080fd5b506102ac61032136600461453a565b610aac565b34801561033257600080fd5b50610348600080516020614fa783398151915281565b604051908152602001610261565b34801561036257600080fd5b5061039061037136600461457b565b6001600160a01b0316600090815261012e602052604090205460ff1690565b60405161026191906145cc565b3480156103a957600080fd5b506102ac6103b836600461457b565b610add565b3480156103c957600080fd5b506102ac610bbc565b3480156103de57600080fd5b506102ac6103ed36600461453a565b610c7d565b3480156103fe57600080fd5b506102ac61040d36600461450e565b610c98565b34801561041e57600080fd5b506103487fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102ac6104543660046145df565b610db6565b34801561046557600080fd5b50610348610e82565b34801561047a57600080fd5b506103487f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104ae57600080fd5b5060335460ff16610255565b3480156104c657600080fd5b506102ac6104d536600461463c565b610f35565b3480156104e657600080fd5b5061012d546001600160a01b03166102ce565b34801561050557600080fd5b506102ce6105143660046144f5565b6113ae565b34801561052557600080fd5b50610348610534366004614761565b61140e565b34801561054557600080fd5b506102ac6105543660046147ea565b6119f1565b34801561056557600080fd5b506102ac61057436600461463c565b611a75565b34801561058557600080fd5b506102ac61059436600461457b565b611e99565b3480156105a557600080fd5b506103486105b436600461457b565b61247f565b3480156105c557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b3480156105f857600080fd5b506102ac610607366004614807565b612505565b34801561061857600080fd5b506102556106273660046144f5565b600090815261012f6020526040902054151590565b34801561064857600080fd5b506102ac612527565b34801561065d57600080fd5b5061027f6125cc565b34801561067257600080fd5b506102ac610681366004614842565b6125db565b34801561069257600080fd5b506102ac6106a1366004614870565b6125e6565b3480156106b257600080fd5b5061027f6106c13660046144f5565b612618565b3480156106d257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b34801561070557600080fd5b506102556107143660046148dc565b61268c565b34801561072557600080fd5b506102ac61073436600461457b565b6126bb565b34801561074557600080fd5b5061034861075436600461450e565b6127b2565b34801561076557600080fd5b50610348600080516020614f6083398151915281565b34801561078757600080fd5b506102ac61079636600461490a565b6128db565b60006001600160e01b031982166380ac58cd60e01b14806107cc57506001600160e01b03198216635b5e139f60e01b145b806107e757506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060fb80546107fc90614939565b80601f016020809104026020016040519081016040528092919081815260200182805461082890614939565b80156108755780601f1061084a57610100808354040283529160200191610875565b820191906000526020600020905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b600054610100900460ff161580801561089f5750600054600160ff909116105b806108b95750303b1580156108b9575060005460ff166001145b6108de5760405162461bcd60e51b81526004016108d59061496d565b60405180910390fd5b6000805460ff191660011790558015610901576000805461ff0019166101001790555b61090961290e565b6109138484612937565b61091b612968565b61092482612997565b801561096a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b600061097b82612a75565b50600090815260ff60205260409020546001600160a01b031690565b60006109a2826113ae565b9050806001600160a01b0316836001600160a01b031603610a0f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108d5565b336001600160a01b0382161480610a2b5750610a2b813361268c565b610a9d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108d5565b610aa78383612ad4565b505050565b610ab63382612b42565b610ad25760405162461bcd60e51b81526004016108d5906149bb565b610aa7838383612ba0565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b255760405162461bcd60e51b81526004016108d590614a09565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b6e600080516020614f40833981519152546001600160a01b031690565b6001600160a01b031614610b945760405162461bcd60e51b81526004016108d590614a55565b610b9d81612d47565b60408051600080825260208201909252610bb991839190612e01565b50565b600080516020614fa7833981519152600080516020614f608339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610c5957600080fd5b505afa158015610c6d573d6000803e3d6000fd5b50505050610c79612f6c565b5050565b610aa7838383604051806020016040528060008152506125e6565b610ca0612fbe565b6001610cab83613004565b6003811115610cbc57610cbc614598565b14610d005760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b60448201526064016108d5565b610d357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338484613091565b6001600160a01b0382166347e7ef24336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa79190614aa1565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610dfe5760405162461bcd60e51b81526004016108d590614a09565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e47600080516020614f40833981519152546001600160a01b031690565b6001600160a01b031614610e6d5760405162461bcd60e51b81526004016108d590614a55565b610e7682612d47565b610c7982826001612e01565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f225760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108d5565b50600080516020614f4083398151915290565b600080516020614fa7833981519152600080516020614f608339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610fd257600080fd5b505afa158015610fe6573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff16600381111561101a5761101a614598565b0361105d5760405162461bcd60e51b815260206004820152601360248201527210dbdb5c1bdb995b9d081b9bdd08199bdd5b99606a1b60448201526064016108d5565b600184600381111561107157611071614598565b14801561112657506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020614f60833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190614aba565b806111f55750600384600381111561114057611140614598565b1480156111f557506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020614fa7833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f59190614aba565b806112c45750600284600381111561120f5761120f614598565b1480156112c457506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d14854600080516020614f60833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190614aba565b6113365760405162461bcd60e51b815260206004820152603e60248201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960448201527f204c4556454c312063616e2061637469766174652f646570726563617465000060648201526084016108d5565b80548490829060ff1916600183600381111561135457611354614598565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161139f91610100900460ff16908890614ad7565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806107e75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108d5565b6000611418612fbe565b6101608501516001600160a01b03811633146114825760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b60648201526084016108d5565b600161148d826130eb565b600381111561149e5761149e614598565b146114f55760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016108d5565b6115206bffffffffffffffffffffffff84166bffffffffffffffffffffffff19606084901b16614b13565b865261152b8661316e565b61012f600088600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab9190614b26565b905060016115b88261319e565b60038111156115c9576115c9614598565b146116265760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f7420666f756e64206f72206e6f746044820152662061637469766560c81b60648201526084016108d5565b60405163e3638ea360e01b81526001600160a01b0382169063e3638ea390611652908a90600401614bfb565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050506116a28588600001516040518060200160405280600081525061322c565b60c08701516116df906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169088908490613091565b610140870151156117885761178886826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117509190614b26565b6101408a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613091565b610120870151156118315761183186826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190614b26565b6101208a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613091565b61012d5460e0880151611876916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a929190911690613091565b60008761010001511180156118fe5750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190614b26565b6001600160a01b0316866001600160a01b031614155b156119a1576119a186836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119699190614b26565b6101008a01516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190613091565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b886040516119da9190614bfb565b60405180910390a25050845190505b949350505050565b6119f9612fbe565b42611a0c6101c083016101a08401614c0a565b64ffffffffff161115611a5a5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b60448201526064016108d5565b610bb9611a6c36839003830183614c25565b6000600161325f565b600080516020614f608339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611afa57600080fd5b505afa158015611b0e573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff166003811115611b4257611b42614598565b14611b8f5760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e7420616c726561647920696e2074686520706f6f6c00000060448201526064016108d5565b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfb9190614b26565b6001600160a01b031614611c5b5760405162461bcd60e51b815260206004820152602160248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320706f6f6044820152601b60fa1b60648201526084016108d5565b8054600160ff198216811783558491839161ffff1990911617610100836003811115611c8957611c89614598565b02179055506003836003811115611ca257611ca2614598565b03611e4f5760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d109190614b26565b90506001600160a01b03811615611d7d576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b158015611d6457600080fd5b505af1158015611d78573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf9190614b26565b90506001600160a01b03811615611e4c576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b158015611e3357600080fd5b505af1158015611e47573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef846001604051611e8b929190614ad7565b60405180910390a250505050565b600080516020614f608339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611f1e57600080fd5b505afa158015611f32573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff166003811115611f6757611f67614598565b14611fb45760405162461bcd60e51b815260206004820152601860248201527f436f6d706f6e656e74206e6f742064657072656361746564000000000000000060448201526064016108d5565b60018154610100900460ff166003811115611fd157611fd1614598565b0361209957826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190614aa1565b156120945760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b60648201526084016108d5565b61240b565b60028154610100900460ff1660038111156120b6576120b6614598565b0361217d57826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190614aa1565b156120945760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016108d5565b60038154610100900460ff16600381111561219a5761219a614598565b0361240b576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122069190614aa1565b156122685760405162461bcd60e51b815260206004820152602c60248201527f43616e27742072656d6f76652061205072656d69756d734163636f756e74207760448201526b697468207072656d69756d7360a01b60648201526084016108d5565b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cc9190614b26565b90506001600160a01b03811615612339576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b15801561232057600080fd5b505af1158015612334573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b9190614b26565b90506001600160a01b03811615612408576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b1580156123ef57600080fd5b505af1158015612403573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161245291610100900460ff1690600090614ad7565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b0382166124e95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108d5565b506001600160a01b0316600090815260fe602052604090205490565b61250d612fbe565b610c7961251f36849003840184614c25565b82600061325f565b600080516020614fa78339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156125ac57600080fd5b505afa1580156125c0573d6000803e3d6000fd5b50505050610bb9613716565b606060fc80546107fc90614939565b610c79338383613753565b6125f03383612b42565b61260c5760405162461bcd60e51b81526004016108d5906149bb565b61096a84848484613822565b606061262382612a75565b600061263a60408051602081019091526000815290565b9050600081511161265a5760405180602001604052806000815250612685565b8061266484613855565b604051602001612675929190614c42565b6040516020818303038152906040525b9392505050565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b600080516020614f608339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561274057600080fd5b505afa158015612754573d6000803e3d6000fd5b505061012d80546001600160a01b0386166001600160a01b03199091168117909155604051908152600192507fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f915060200160405180910390a25050565b60006127bc612fbe565b60006127c784613004565b905060018160038111156127dd576127dd614598565b14806127fa575060028160038111156127f8576127f8614598565b145b6128585760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b60648201526084016108d5565b60003360405163f3fef3a360e01b81526001600160a01b038083166004830152602482018790529192509086169063f3fef3a3906044016020604051808303816000875af11580156128ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d29190614aa1565b95945050505050565b6128e3612fbe565b610c796128f536849003840184614c25565b82612901576000612907565b83602001355b600061325f565b600054610100900460ff166129355760405162461bcd60e51b81526004016108d590614c71565b565b600054610100900460ff1661295e5760405162461bcd60e51b81526004016108d590614c71565b610c798282613956565b600054610100900460ff1661298f5760405162461bcd60e51b81526004016108d590614c71565b612935613996565b600054610100900460ff16158080156129b75750600054600160ff909116105b806129d15750303b1580156129d1575060005460ff166001145b6129ed5760405162461bcd60e51b81526004016108d59061496d565b6000805460ff191660011790558015612a10576000805461ff0019166101001790555b61012d80546001600160a01b0319166001600160a01b0384161790558015610c79576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600081815260fd60205260409020546001600160a01b0316610bb95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108d5565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612b09826113ae565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612b4e836113ae565b9050806001600160a01b0316846001600160a01b03161480612b755750612b75818561268c565b806119e95750836001600160a01b0316612b8e84610970565b6001600160a01b031614949350505050565b826001600160a01b0316612bb3826113ae565b6001600160a01b031614612c175760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108d5565b6001600160a01b038216612c795760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108d5565b612c848383836139c9565b612c8f600082612ad4565b6001600160a01b038316600090815260fe60205260408120805460019290612cb8908490614cbc565b90915550506001600160a01b038216600090815260fe60205260408120805460019290612ce6908490614b13565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080516020614fa7833981519152600080516020614f608339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015612de457600080fd5b505afa158015612df8573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612e3457610aa7836139d1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612e8e575060408051601f3d908101601f19168201909252612e8b91810190614aa1565b60015b612ef15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108d5565b600080516020614f408339815191528114612f605760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108d5565b50610aa7838383613a6d565b612f74613a92565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff16156129355760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108d5565b6001600160a01b038116600090815261012e6020526040812060018154610100900460ff16600381111561303a5761303a614598565b146130875760405162461bcd60e51b815260206004820152601a60248201527f436f6d706f6e656e74206973206e6f7420616e2065546f6b656e00000000000060448201526064016108d5565b5460ff1692915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261096a908590613adb565b6001600160a01b038116600090815261012e6020526040812060028154610100900460ff16600381111561312157613121614598565b146130875760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e74206973206e6f742061205269736b4d6f64756c6500000060448201526064016108d5565b6000816040516020016131819190614bfb565b604051602081830303815290604052805190602001209050919050565b6001600160a01b038116600090815261012e6020526040812060038154610100900460ff1660038111156131d4576131d4614598565b146130875760405162461bcd60e51b815260206004820152602260248201527f436f6d706f6e656e74206973206e6f742061205072656d69756d734163636f756044820152611b9d60f21b60648201526084016108d5565b6132368383613bad565b6132436000848484613cfb565b610aa75760405162461bcd60e51b81526004016108d590614ccf565b61326883613df9565b610160830151818061328257506001600160a01b03811633145b6132ce5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c696369657360448201526064016108d5565b8215806132e6575042846101a0015164ffffffffff16115b6133325760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c696379000000000000000060448201526064016108d5565b600061333d826130eb565b9050600181600381111561335357613353614598565b14806133705750600281600381111561336e5761336e614598565b145b6133e25760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016108d5565b846020015184111561342f5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b60448201526064016108d5565b600080851190506000836001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190614b26565b90506134a58161319e565b925060018360038111156134bb576134bb614598565b14806134d8575060028360038111156134d6576134d6614598565b145b6135565760405162461bcd60e51b815260206004820152604360248201527f5072656d69756d734163636f756e74206d75737420626520616374697665206f60448201527f72206465707265636174656420746f2070726f63657373207265736f6c7574696064820152626f6e7360e81b608482015260a4016108d5565b81156135d657600061356b88600001516113ae565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee79061359e9084908c908c90600401614d21565b600060405180830381600087803b1580156135b857600080fd5b505af11580156135cc573d6000803e3d6000fd5b5050505050613635565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d90613602908a90600401614bfb565b600060405180830381600087803b15801561361c57600080fd5b505af1158015613630573d6000803e3d6000fd5b505050505b6020870151604051636a448ef160e01b815260048101919091526001600160a01b03851690636a448ef190602401600060405180830381600087803b15801561367d57600080fd5b505af1158015613691573d6000803e3d6000fd5b5050505086600001518761016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e886040516136da91815260200190565b60405180910390a38651600090815261012f6020526040812055851561370b5786516137069087613e60565b612df8565b8651612df890613fba565b61371e612fbe565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612fa13390565b816001600160a01b0316836001600160a01b0316036137b45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108d5565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61382d848484612ba0565b61383984848484613cfb565b61096a5760405162461bcd60e51b81526004016108d590614ccf565b60608160000361387c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156138a6578061389081614d4e565b915061389f9050600a83614d7d565b9150613880565b60008167ffffffffffffffff8111156138c1576138c161439b565b6040519080825280601f01601f1916602001820160405280156138eb576020820181803683370190505b5090505b84156119e957613900600183614cbc565b915061390d600a86614d91565b613918906030614b13565b60f81b81838151811061392d5761392d614da5565b60200101906001600160f81b031916908160001a90535061394f600a86614d7d565b94506138ef565b600054610100900460ff1661397d5760405162461bcd60e51b81526004016108d590614c71565b60fb6139898382614e09565b5060fc610aa78282614e09565b600054610100900460ff166139bd5760405162461bcd60e51b81526004016108d590614c71565b6033805460ff19169055565b610aa7612fbe565b6001600160a01b0381163b613a3e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108d5565b600080516020614f4083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613a7683614061565b600082511180613a835750805b15610aa75761096a83836140a1565b60335460ff166129355760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108d5565b6000613b30826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661418c9092919063ffffffff16565b805190915015610aa75780806020019051810190613b4e9190614aba565b610aa75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108d5565b6001600160a01b038216613c035760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108d5565b600081815260fd60205260409020546001600160a01b031615613c685760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108d5565b613c74600083836139c9565b6001600160a01b038216600090815260fe60205260408120805460019290613c9d908490614b13565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15613df157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613d3f903390899088908890600401614ec9565b6020604051808303816000875af1925050508015613d7a575060408051601f3d908101601f19168201909252613d7791810190614f06565b60015b613dd7573d808015613da8576040519150601f19603f3d011682016040523d82523d6000602084013e613dad565b606091505b508051600003613dcf5760405162461bcd60e51b81526004016108d590614ccf565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506119e9565b5060016119e9565b805115801590613e2157508051600090815261012f6020526040902054613e1f8261316e565b145b610bb95760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016108d5565b6000613e6b836113ae565b90506001600160a01b0381163b613e8157505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606481018590526084016020604051808303816000875af1925050508015613f07575060408051601f3d908101601f19168201909252613f0491810190614f06565b60015b613f4a573d808015613f35576040519150601f19603f3d011682016040523d82523d6000602084013e613f3a565b606091505b508051600003613dcf5750505050565b6001600160e01b03198116636b140e9f60e11b1461096a5760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b60648201526084016108d5565b6000613fc5826113ae565b90506001600160a01b0381163b613fda575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1925050508015614059575060408051601f3d908101601f1916820190925261405691810190614f06565b60015b610aa7575050565b61406a816139d1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6141095760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108d5565b600080846001600160a01b0316846040516141249190614f23565b600060405180830381855af49150503d806000811461415f576040519150601f19603f3d011682016040523d82523d6000602084013e614164565b606091505b50915091506128d28282604051806060016040528060278152602001614f806027913961419b565b60606119e984846000856141d4565b606083156141aa575081612685565b8251156141ba5782518084602001fd5b8160405162461bcd60e51b81526004016108d59190614388565b6060824710156142355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108d5565b6001600160a01b0385163b61428c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108d5565b600080866001600160a01b031685876040516142a89190614f23565b60006040518083038185875af1925050503d80600081146142e5576040519150601f19603f3d011682016040523d82523d6000602084013e6142ea565b606091505b50915091506142fa82828661419b565b979650505050505050565b6001600160e01b031981168114610bb957600080fd5b60006020828403121561432d57600080fd5b813561268581614305565b60005b8381101561435357818101518382015260200161433b565b50506000910152565b60008151808452614374816020860160208601614338565b601f01601f19169290920160200192915050565b602081526000612685602083018461435c565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff811182821017156143d5576143d561439b565b60405290565b600082601f8301126143ec57600080fd5b813567ffffffffffffffff808211156144075761440761439b565b604051601f8301601f19908116603f0116810190828211818310171561442f5761442f61439b565b8160405283815286602085880101111561444857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610bb957600080fd5b60008060006060848603121561449257600080fd5b833567ffffffffffffffff808211156144aa57600080fd5b6144b6878388016143db565b945060208601359150808211156144cc57600080fd5b506144d9868287016143db565b92505060408401356144ea81614468565b809150509250925092565b60006020828403121561450757600080fd5b5035919050565b6000806040838503121561452157600080fd5b823561452c81614468565b946020939093013593505050565b60008060006060848603121561454f57600080fd5b833561455a81614468565b9250602084013561456a81614468565b929592945050506040919091013590565b60006020828403121561458d57600080fd5b813561268581614468565b634e487b7160e01b600052602160045260246000fd5b60048110610bb957634e487b7160e01b600052602160045260246000fd5b602081016145d9836145ae565b91905290565b600080604083850312156145f257600080fd5b82356145fd81614468565b9150602083013567ffffffffffffffff81111561461957600080fd5b614625858286016143db565b9150509250929050565b60048110610bb957600080fd5b6000806040838503121561464f57600080fd5b823561465a81614468565b9150602083013561466a8161462f565b809150509250929050565b803561468081614468565b919050565b803564ffffffffff8116811461468057600080fd5b60006101c082840312156146ad57600080fd5b6146b56143b1565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160614733818401614675565b90820152610180614745838201614685565b908201526101a0614757838201614685565b9082015292915050565b600080600080610220858703121561477857600080fd5b614782868661469a565b93506101c085013561479381614468565b92506101e08501356147a481614468565b91506102008501356bffffffffffffffffffffffff811681146147c657600080fd5b939692955090935050565b60006101c082840312156147e457600080fd5b50919050565b60006101c082840312156147fd57600080fd5b61268583836147d1565b6000806101e0838503121561481b57600080fd5b61482584846147d1565b946101c0939093013593505050565b8015158114610bb957600080fd5b6000806040838503121561485557600080fd5b823561486081614468565b9150602083013561466a81614834565b6000806000806080858703121561488657600080fd5b843561489181614468565b935060208501356148a181614468565b925060408501359150606085013567ffffffffffffffff8111156148c457600080fd5b6148d0878288016143db565b91505092959194509250565b600080604083850312156148ef57600080fd5b82356148fa81614468565b9150602083013561466a81614468565b6000806101e0838503121561491e57600080fd5b61492884846147d1565b91506101c083013561466a81614834565b600181811c9082168061494d57607f821691505b6020821081036147e457634e487b7160e01b600052602260045260246000fd5b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215614ab357600080fd5b5051919050565b600060208284031215614acc57600080fd5b815161268581614834565b60408101614ae4846145ae565b838252614af0836145ae565b8260208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107e7576107e7614afd565b600060208284031215614b3857600080fd5b815161268581614468565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080820151818401525061012080820151818401525061014080820151818401525061016080820151614bcc828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff81168483015261096a565b6101c081016107e78284614b43565b600060208284031215614c1c57600080fd5b61268582614685565b60006101c08284031215614c3857600080fd5b612685838361469a565b60008351614c54818460208801614338565b835190830190614c68818360208801614338565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b818103818111156107e7576107e7614afd565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03841681526102008101614d3f6020830185614b43565b826101e0830152949350505050565b600060018201614d6057614d60614afd565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082614d8c57614d8c614d67565b500490565b600082614da057614da0614d67565b500690565b634e487b7160e01b600052603260045260246000fd5b601f821115610aa757600081815260208120601f850160051c81016020861015614de25750805b601f850160051c820191505b81811015614e0157828155600101614dee565b505050505050565b815167ffffffffffffffff811115614e2357614e2361439b565b614e3781614e318454614939565b84614dbb565b602080601f831160018114614e6c5760008415614e545750858301515b600019600386901b1c1916600185901b178555614e01565b600085815260208120601f198616915b82811015614e9b57888601518255948401946001909101908401614e7c565b5085821015614eb95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614efc9083018461435c565b9695505050505050565b600060208284031215614f1857600080fd5b815161268581614305565b60008251614f35818460208701614338565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212201e3a01964b43e0c765f3a1ca835c522b291b2fc8ae4bd887ba9c05aa9490273764736f6c63430008100033",
1295
+ "bytecode": "0x60e0604052306080523480156200001557600080fd5b50604051620057663803806200576683398101604081905262000038916200020c565b6001600160a01b038216620000a65760405162461bcd60e51b815260206004820152602960248201527f506f6c696379506f6f6c3a206163636573732063616e6e6f74206265207a65726044820152686f206164647265737360b81b60648201526084015b60405180910390fd5b6001600160a01b038116620001125760405162461bcd60e51b815260206004820152602b60248201527f506f6c696379506f6f6c3a2063757272656e63792063616e6e6f74206265207a60448201526a65726f206164647265737360a81b60648201526084016200009d565b6200011c62000134565b6001600160a01b0391821660a0521660c0526200024b565b600054610100900460ff16156200019e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016200009d565b60005460ff9081161015620001f1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200020957600080fd5b50565b600080604083850312156200022057600080fd5b82516200022d81620001f3565b60208401519092506200024081620001f3565b809150509250929050565b60805160a05160c05161545162000315600039600081816106d501528181610dec01528181610e6001528181610ec1015281816118d70152818161198201528181611a2b01528181611a6a0152611b9b0152600081816105c801528181610cae0152818161114e01528181611274015281816113430152818161141201528181611cce015281816122ea0152818161297801528181612b0c01526130f8015260008181610bb101528181610bf101528181610fb101528181610ff1015261108001526154516000f3fe6080604052600436106102305760003560e01c80636352211e1161012e57806395d89b41116100ab578063e985e9c51161006f578063e985e9c5146106f9578063f0f4426014610719578063f3fef3a314610739578063f67b2bad14610759578063ffa600e31461077b57600080fd5b806395d89b4114610651578063a22cb46514610666578063b88d4fde14610686578063c87b56dd146106a6578063e5a6b10f146106c657600080fd5b806370a08231116100f257806370a082311461059957806371907f17146105b95780637a702b3c146105ec57806382afd23b1461060c5780638456cb591461063c57600080fd5b80636352211e146104f95780636769a76f146105195780636af6f1ef146105395780636b8734e7146105595780636f86c8971461057957600080fd5b80633f4ba83a116101bc57806352d1902d1161018057806352d1902d146104595780635b494dd51461046e5780635c975abb146104a25780635fcbf445146104ba57806361d027b3146104da57600080fd5b80633f4ba83a146103bd57806342842e0e146103d257806347e7ef24146103f25780634a47a3e0146104125780634f1ef2861461044657600080fd5b8063095ea7b311610203578063095ea7b3146102e657806323b872dd1461030657806324ea54f41461032657806333d6157a146103565780633659cfe61461039d57600080fd5b806301ffc9a71461023557806306fdde031461026a578063077f224a1461028c578063081812fc146102ae575b600080fd5b34801561024157600080fd5b506102556102503660046147c3565b61079b565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f6107c7565b6040516102619190614830565b34801561029857600080fd5b506102ac6102a7366004614925565b610859565b005b3480156102ba57600080fd5b506102ce6102c936600461499d565b610a3a565b6040516001600160a01b039091168152602001610261565b3480156102f257600080fd5b506102ac6103013660046149b6565b610a61565b34801561031257600080fd5b506102ac6103213660046149e2565b610b76565b34801561033257600080fd5b506103486000805160206153fc83398151915281565b604051908152602001610261565b34801561036257600080fd5b50610390610371366004614a23565b6001600160a01b0316600090815261012e602052604090205460ff1690565b6040516102619190614a74565b3480156103a957600080fd5b506102ac6103b8366004614a23565b610ba7565b3480156103c957600080fd5b506102ac610c86565b3480156103de57600080fd5b506102ac6103ed3660046149e2565b610d47565b3480156103fe57600080fd5b506102ac61040d3660046149b6565b610d62565b34801561041e57600080fd5b506103487fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102ac610454366004614a87565b610fa7565b34801561046557600080fd5b50610348611073565b34801561047a57600080fd5b506103487f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104ae57600080fd5b5060335460ff16610255565b3480156104c657600080fd5b506102ac6104d5366004614ae4565b611126565b3480156104e657600080fd5b5061012d546001600160a01b03166102ce565b34801561050557600080fd5b506102ce61051436600461499d565b61159f565b34801561052557600080fd5b50610348610534366004614c04565b6115ff565b34801561054557600080fd5b506102ac610554366004614c8d565b611c31565b34801561056557600080fd5b506102ac610574366004614ae4565b611cb5565b34801561058557600080fd5b506102ac610594366004614a23565b6122d1565b3480156105a557600080fd5b506103486105b4366004614a23565b6128b7565b3480156105c557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b3480156105f857600080fd5b506102ac610607366004614caa565b61293d565b34801561061857600080fd5b5061025561062736600461499d565b600090815261012f6020526040902054151590565b34801561064857600080fd5b506102ac61295f565b34801561065d57600080fd5b5061027f612a04565b34801561067257600080fd5b506102ac610681366004614ce5565b612a13565b34801561069257600080fd5b506102ac6106a1366004614d13565b612a1e565b3480156106b257600080fd5b5061027f6106c136600461499d565b612a50565b3480156106d257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b34801561070557600080fd5b50610255610714366004614d7f565b612ac4565b34801561072557600080fd5b506102ac610734366004614a23565b612af3565b34801561074557600080fd5b506103486107543660046149b6565b612b99565b34801561076557600080fd5b506103486000805160206153b583398151915281565b34801561078757600080fd5b506102ac610796366004614dad565b612cc2565b60006107a682612cf5565b806107c157506001600160e01b031982166309632b4960e31b145b92915050565b606060fb80546107d690614ddc565b80601f016020809104026020016040519081016040528092919081815260200182805461080290614ddc565b801561084f5780601f106108245761010080835404028352916020019161084f565b820191906000526020600020905b81548152906001019060200180831161083257829003601f168201915b5050505050905090565b600054610100900460ff16158080156108795750600054600160ff909116105b806108935750303b158015610893575060005460ff166001145b6108fb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561091e576000805461ff0019166101001790555b600084511161096f5760405162461bcd60e51b815260206004820181905260248201527f506f6c696379506f6f6c3a206e616d652063616e6e6f7420626520656d70747960448201526064016108f2565b60008351116109cb5760405162461bcd60e51b815260206004820152602260248201527f506f6c696379506f6f6c3a2073796d626f6c2063616e6e6f7420626520656d70604482015261747960f01b60648201526084016108f2565b6109d3612d45565b6109dd8484612d6e565b6109e5612d9f565b6109ee82612dce565b8015610a34576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610a4582612dfe565b50600090815260ff60205260409020546001600160a01b031690565b6000610a6c8261159f565b9050806001600160a01b0316836001600160a01b031603610ad95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108f2565b336001600160a01b0382161480610af55750610af58133612ac4565b610b675760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108f2565b610b718383612e5d565b505050565b610b803382612ecb565b610b9c5760405162461bcd60e51b81526004016108f290614e10565b610b71838383612f29565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bef5760405162461bcd60e51b81526004016108f290614e5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c38600080516020615395833981519152546001600160a01b031690565b6001600160a01b031614610c5e5760405162461bcd60e51b81526004016108f290614eaa565b610c67816130d0565b60408051600080825260208201909252610c839183919061318a565b50565b6000805160206153fc8339815191526000805160206153b58339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b50505050610d436132f5565b5050565b610b7183838360405180602001604052806000815250612a1e565b610d6a613347565b6001610d758361338d565b6003811115610d8657610d86614a40565b14610dca5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b60448201526064016108f2565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e599190614ef6565b9050610e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633858561341a565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2e9190614ef6565b610f389190614f25565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a349190614ef6565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610fef5760405162461bcd60e51b81526004016108f290614e5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611038600080516020615395833981519152546001600160a01b031690565b6001600160a01b03161461105e5760405162461bcd60e51b81526004016108f290614eaa565b611067826130d0565b610d438282600161318a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111135760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f2565b5060008051602061539583398151915290565b6000805160206153fc8339815191526000805160206153b58339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff16600381111561120b5761120b614a40565b0361124e5760405162461bcd60e51b815260206004820152601360248201527210dbdb5c1bdb995b9d081b9bdd08199bdd5b99606a1b60448201526064016108f2565b600184600381111561126257611262614a40565b14801561131757506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206153b5833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190614f38565b806113e65750600384600381111561133157611331614a40565b1480156113e657506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206153fc833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190614f38565b806114b55750600284600381111561140057611400614a40565b1480156114b557506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206153b5833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b59190614f38565b6115275760405162461bcd60e51b815260206004820152603e60248201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960448201527f204c4556454c312063616e2061637469766174652f646570726563617465000060648201526084016108f2565b80548490829060ff1916600183600381111561154557611545614a40565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161159091610100900460ff16908890614f55565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806107c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108f2565b6000611609613347565b6101608501516001600160a01b03811633146116735760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b60648201526084016108f2565b600161167e82613474565b600381111561168f5761168f614a40565b146116e65760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016108f2565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174a9190614f7b565b90506001611757826134f7565b600381111561176857611768614a40565b146117c55760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f7420666f756e64206f72206e6f746044820152662061637469766560c81b60648201526084016108f2565b6117f06bffffffffffffffffffffffff85166bffffffffffffffffffffffff19606085901b16614f98565b808852600090815261012f6020526040902054156118485760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b60448201526064016108f2565b61185187613585565b8751600090815261012f602052604090819020919091555163e3638ea360e01b81526001600160a01b0382169063e3638ea390611892908a90600401615063565b600060405180830381600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b50505060c088015161190191506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908890849061341a565b610140870151156119aa576119aa86826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119729190614f7b565b6101408a01516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692919061341a565b61012087015115611a5357611a5386826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190614f7b565b6101208a01516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692919061341a565b61012d5460e0880151611a98916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a92919091169061341a565b6000876101000151118015611b205750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0a9190614f7b565b6001600160a01b0316866001600160a01b031614155b15611bc357611bc386836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b9190614f7b565b6101008a01516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692919061341a565b611be185886000015160405180602001604052806000815250613604565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b88604051611c1a9190615063565b60405180910390a25050845190505b949350505050565b611c39613347565b42611c4c6101c083016101a08401615072565b64ffffffffff161115611c9a5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b60448201526064016108f2565b610c83611cac3683900383018361508d565b60006001613637565b6000805160206153b58339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611d3a57600080fd5b505afa158015611d4e573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff166003811115611d8257611d82614a40565b14611dcf5760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e7420616c726561647920696e2074686520706f6f6c00000060448201526064016108f2565b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3b9190614f7b565b6001600160a01b031614611e9b5760405162461bcd60e51b815260206004820152602160248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320706f6f6044820152601b60fa1b60648201526084016108f2565b6001836003811115611eaf57611eaf614a40565b148015611f2557506040516301ffc9a760e01b8152629d19af60e21b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015611f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f259190614f38565b80611fb657506003836003811115611f3f57611f3f614a40565b148015611fb657506040516301ffc9a760e01b8152632dd9c4bb60e21b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190614f38565b8061204757506002836003811115611fd057611fd0614a40565b14801561204757506040516301ffc9a760e01b815263da40804f60e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015612023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120479190614f38565b6120935760405162461bcd60e51b815260206004820152601e60248201527f506f6c696379506f6f6c3a204e6f7420746865207269676874206b696e64000060448201526064016108f2565b8054600160ff198216811783558491839161ffff19909116176101008360038111156120c1576120c1614a40565b021790555060038360038111156120da576120da614a40565b036122875760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190614f7b565b90506001600160a01b038116156121b5576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b15801561219c57600080fd5b505af11580156121b0573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122179190614f7b565b90506001600160a01b03811615612284576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b15801561226b57600080fd5b505af115801561227f573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef8460016040516122c3929190614f55565b60405180910390a250505050565b6000805160206153b58339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561235657600080fd5b505afa15801561236a573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff16600381111561239f5761239f614a40565b146123ec5760405162461bcd60e51b815260206004820152601860248201527f436f6d706f6e656e74206e6f742064657072656361746564000000000000000060448201526064016108f2565b60018154610100900460ff16600381111561240957612409614a40565b036124d157826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561244c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124709190614ef6565b156124cc5760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b60648201526084016108f2565b612843565b60028154610100900460ff1660038111156124ee576124ee614a40565b036125b557826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125559190614ef6565b156124cc5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016108f2565b60038154610100900460ff1660038111156125d2576125d2614a40565b03612843576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190614ef6565b156126a05760405162461bcd60e51b815260206004820152602c60248201527f43616e27742072656d6f76652061205072656d69756d734163636f756e74207760448201526b697468207072656d69756d7360a01b60648201526084016108f2565b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127049190614f7b565b90506001600160a01b03811615612771576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b15801561275857600080fd5b505af115801561276c573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d39190614f7b565b90506001600160a01b03811615612840576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b15801561282757600080fd5b505af115801561283b573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161288a91610100900460ff1690600090614f55565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b0382166129215760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108f2565b506001600160a01b0316600090815260fe602052604090205490565b612945613347565b610d436129573684900384018461508d565b826000613637565b6000805160206153fc8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156129e457600080fd5b505afa1580156129f8573d6000803e3d6000fd5b50505050610c83613aee565b606060fc80546107d690614ddc565b610d43338383613b2b565b612a283383612ecb565b612a445760405162461bcd60e51b81526004016108f290614e10565b610a3484848484613bfa565b6060612a5b82612dfe565b6000612a7260408051602081019091526000815290565b90506000815111612a925760405180602001604052806000815250612abd565b80612a9c84613c2d565b604051602001612aad9291906150aa565b6040516020818303038152906040525b9392505050565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b6000805160206153b58339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612b7857600080fd5b505afa158015612b8c573d6000803e3d6000fd5b50505050610d4382613d2e565b6000612ba3613347565b6000612bae8461338d565b90506001816003811115612bc457612bc4614a40565b1480612be157506002816003811115612bdf57612bdf614a40565b145b612c3f5760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b60648201526084016108f2565b60003360405163f3fef3a360e01b81526001600160a01b038083166004830152602482018790529192509086169063f3fef3a3906044016020604051808303816000875af1158015612c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb99190614ef6565b95945050505050565b612cca613347565b610d43612cdc3684900384018461508d565b82612ce8576000612cee565b83602001355b6000613637565b60006001600160e01b031982166380ac58cd60e01b1480612d2657506001600160e01b03198216635b5e139f60e01b145b806107c157506301ffc9a760e01b6001600160e01b03198316146107c1565b600054610100900460ff16612d6c5760405162461bcd60e51b81526004016108f2906150d9565b565b600054610100900460ff16612d955760405162461bcd60e51b81526004016108f2906150d9565b610d438282613dfe565b600054610100900460ff16612dc65760405162461bcd60e51b81526004016108f2906150d9565b612d6c613e3e565b600054610100900460ff16612df55760405162461bcd60e51b81526004016108f2906150d9565b610c8381613d2e565b600081815260fd60205260409020546001600160a01b0316610c835760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108f2565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612e928261159f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612ed78361159f565b9050806001600160a01b0316846001600160a01b03161480612efe5750612efe8185612ac4565b80611c295750836001600160a01b0316612f1784610a3a565b6001600160a01b031614949350505050565b826001600160a01b0316612f3c8261159f565b6001600160a01b031614612fa05760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108f2565b6001600160a01b0382166130025760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108f2565b61300d838383613e71565b613018600082612e5d565b6001600160a01b038316600090815260fe60205260408120805460019290613041908490614f25565b90915550506001600160a01b038216600090815260fe6020526040812080546001929061306f908490614f98565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805160206153fc8339815191526000805160206153b58339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561316d57600080fd5b505afa158015613181573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156131bd57610b7183613e79565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613217575060408051601f3d908101601f1916820190925261321491810190614ef6565b60015b61327a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f2565b60008051602061539583398151915281146132e95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f2565b50610b71838383613f15565b6132fd613f3a565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff1615612d6c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108f2565b6001600160a01b038116600090815261012e6020526040812060018154610100900460ff1660038111156133c3576133c3614a40565b146134105760405162461bcd60e51b815260206004820152601a60248201527f436f6d706f6e656e74206973206e6f7420616e2065546f6b656e00000000000060448201526064016108f2565b5460ff1692915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a34908590613f83565b6001600160a01b038116600090815261012e6020526040812060028154610100900460ff1660038111156134aa576134aa614a40565b146134105760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e74206973206e6f742061205269736b4d6f64756c6500000060448201526064016108f2565b6001600160a01b038116600090815261012e6020526040812060038154610100900460ff16600381111561352d5761352d614a40565b146134105760405162461bcd60e51b815260206004820152602260248201527f436f6d706f6e656e74206973206e6f742061205072656d69756d734163636f756044820152611b9d60f21b60648201526084016108f2565b6000816040516020016135989190615063565b60408051601f1981840301815291905280516020909101209050806135ff5760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f742062652030000000000000000060448201526064016108f2565b919050565b61360e8383614055565b61361b60008484846141a3565b610b715760405162461bcd60e51b81526004016108f290615124565b613640836142a1565b610160830151818061365a57506001600160a01b03811633145b6136a65760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c696369657360448201526064016108f2565b8215806136be575042846101a0015164ffffffffff16115b61370a5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c696379000000000000000060448201526064016108f2565b600061371582613474565b9050600181600381111561372b5761372b614a40565b14806137485750600281600381111561374657613746614a40565b145b6137ba5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016108f2565b84602001518411156138075760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b60448201526064016108f2565b600080851190506000836001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561384e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138729190614f7b565b905061387d816134f7565b9250600183600381111561389357613893614a40565b14806138b0575060028360038111156138ae576138ae614a40565b145b61392e5760405162461bcd60e51b815260206004820152604360248201527f5072656d69756d734163636f756e74206d75737420626520616374697665206f60448201527f72206465707265636174656420746f2070726f63657373207265736f6c7574696064820152626f6e7360e81b608482015260a4016108f2565b8651600090815261012f602052604081205581156139c0576000613955886000015161159f565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee7906139889084908c908c90600401615176565b600060405180830381600087803b1580156139a257600080fd5b505af11580156139b6573d6000803e3d6000fd5b5050505050613a1f565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d906139ec908a90600401615063565b600060405180830381600087803b158015613a0657600080fd5b505af1158015613a1a573d6000803e3d6000fd5b505050505b6020870151604051636a448ef160e01b815260048101919091526001600160a01b03851690636a448ef190602401600060405180830381600087803b158015613a6757600080fd5b505af1158015613a7b573d6000803e3d6000fd5b5050505086600001518761016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e88604051613ac491815260200190565b60405180910390a38515613ae3578651613ade9087614308565b613181565b865161318190614462565b613af6613347565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861332a3390565b816001600160a01b0316836001600160a01b031603613b8c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108f2565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613c05848484612f29565b613c11848484846141a3565b610a345760405162461bcd60e51b81526004016108f290615124565b606081600003613c545750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613c7e5780613c68816151a3565b9150613c779050600a836151d2565b9150613c58565b60008167ffffffffffffffff811115613c9957613c99614843565b6040519080825280601f01601f191660200182016040528015613cc3576020820181803683370190505b5090505b8415611c2957613cd8600183614f25565b9150613ce5600a866151e6565b613cf0906030614f98565b60f81b818381518110613d0557613d056151fa565b60200101906001600160f81b031916908160001a905350613d27600a866151d2565b9450613cc7565b6001600160a01b038116613d9c5760405162461bcd60e51b815260206004820152602f60248201527f506f6c696379506f6f6c3a2074726561737572792063616e6e6f74206265207460448201526e6865207a65726f206164647265737360881b60648201526084016108f2565b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b600054610100900460ff16613e255760405162461bcd60e51b81526004016108f2906150d9565b60fb613e31838261525e565b5060fc610b71828261525e565b600054610100900460ff16613e655760405162461bcd60e51b81526004016108f2906150d9565b6033805460ff19169055565b610b71613347565b6001600160a01b0381163b613ee65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f2565b60008051602061539583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f1e83614509565b600082511180613f2b5750805b15610b7157610a348383614549565b60335460ff16612d6c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108f2565b6000613fd8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146349092919063ffffffff16565b805190915015610b715780806020019051810190613ff69190614f38565b610b715760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108f2565b6001600160a01b0382166140ab5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108f2565b600081815260fd60205260409020546001600160a01b0316156141105760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108f2565b61411c60008383613e71565b6001600160a01b038216600090815260fe60205260408120805460019290614145908490614f98565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561429957604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906141e790339089908890889060040161531e565b6020604051808303816000875af1925050508015614222575060408051601f3d908101601f1916820190925261421f9181019061535b565b60015b61427f573d808015614250576040519150601f19603f3d011682016040523d82523d6000602084013e614255565b606091505b5080516000036142775760405162461bcd60e51b81526004016108f290615124565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c29565b506001611c29565b8051158015906142c957508051600090815261012f60205260409020546142c782613585565b145b610c835760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016108f2565b60006143138361159f565b90506001600160a01b0381163b61432957505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606481018590526084016020604051808303816000875af19250505080156143af575060408051601f3d908101601f191682019092526143ac9181019061535b565b60015b6143f2573d8080156143dd576040519150601f19603f3d011682016040523d82523d6000602084013e6143e2565b606091505b5080516000036142775750505050565b6001600160e01b03198116636b140e9f60e11b14610a345760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b60648201526084016108f2565b600061446d8261159f565b90506001600160a01b0381163b614482575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1925050508015614501575060408051601f3d908101601f191682019092526144fe9181019061535b565b60015b610b71575050565b61451281613e79565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6145b15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f2565b600080846001600160a01b0316846040516145cc9190615378565b600060405180830381855af49150503d8060008114614607576040519150601f19603f3d011682016040523d82523d6000602084013e61460c565b606091505b5091509150612cb982826040518060600160405280602781526020016153d560279139614643565b6060611c29848460008561467c565b60608315614652575081612abd565b8251156146625782518084602001fd5b8160405162461bcd60e51b81526004016108f29190614830565b6060824710156146dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108f2565b6001600160a01b0385163b6147345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108f2565b600080866001600160a01b031685876040516147509190615378565b60006040518083038185875af1925050503d806000811461478d576040519150601f19603f3d011682016040523d82523d6000602084013e614792565b606091505b50915091506147a2828286614643565b979650505050505050565b6001600160e01b031981168114610c8357600080fd5b6000602082840312156147d557600080fd5b8135612abd816147ad565b60005b838110156147fb5781810151838201526020016147e3565b50506000910152565b6000815180845261481c8160208601602086016147e0565b601f01601f19169290920160200192915050565b602081526000612abd6020830184614804565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff8111828210171561487d5761487d614843565b60405290565b600082601f83011261489457600080fd5b813567ffffffffffffffff808211156148af576148af614843565b604051601f8301601f19908116603f011681019082821181831017156148d7576148d7614843565b816040528381528660208588010111156148f057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610c8357600080fd5b60008060006060848603121561493a57600080fd5b833567ffffffffffffffff8082111561495257600080fd5b61495e87838801614883565b9450602086013591508082111561497457600080fd5b5061498186828701614883565b925050604084013561499281614910565b809150509250925092565b6000602082840312156149af57600080fd5b5035919050565b600080604083850312156149c957600080fd5b82356149d481614910565b946020939093013593505050565b6000806000606084860312156149f757600080fd5b8335614a0281614910565b92506020840135614a1281614910565b929592945050506040919091013590565b600060208284031215614a3557600080fd5b8135612abd81614910565b634e487b7160e01b600052602160045260246000fd5b60048110610c8357634e487b7160e01b600052602160045260246000fd5b60208101614a8183614a56565b91905290565b60008060408385031215614a9a57600080fd5b8235614aa581614910565b9150602083013567ffffffffffffffff811115614ac157600080fd5b614acd85828601614883565b9150509250929050565b60048110610c8357600080fd5b60008060408385031215614af757600080fd5b8235614b0281614910565b91506020830135614b1281614ad7565b809150509250929050565b80356135ff81614910565b803564ffffffffff811681146135ff57600080fd5b60006101c08284031215614b5057600080fd5b614b58614859565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160614bd6818401614b1d565b90820152610180614be8838201614b28565b908201526101a0614bfa838201614b28565b9082015292915050565b6000806000806102208587031215614c1b57600080fd5b614c258686614b3d565b93506101c0850135614c3681614910565b92506101e0850135614c4781614910565b91506102008501356bffffffffffffffffffffffff81168114614c6957600080fd5b939692955090935050565b60006101c08284031215614c8757600080fd5b50919050565b60006101c08284031215614ca057600080fd5b612abd8383614c74565b6000806101e08385031215614cbe57600080fd5b614cc88484614c74565b946101c0939093013593505050565b8015158114610c8357600080fd5b60008060408385031215614cf857600080fd5b8235614d0381614910565b91506020830135614b1281614cd7565b60008060008060808587031215614d2957600080fd5b8435614d3481614910565b93506020850135614d4481614910565b925060408501359150606085013567ffffffffffffffff811115614d6757600080fd5b614d7387828801614883565b91505092959194509250565b60008060408385031215614d9257600080fd5b8235614d9d81614910565b91506020830135614b1281614910565b6000806101e08385031215614dc157600080fd5b614dcb8484614c74565b91506101c0830135614b1281614cd7565b600181811c90821680614df057607f821691505b602082108103614c8757634e487b7160e01b600052602260045260246000fd5b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215614f0857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107c1576107c1614f0f565b600060208284031215614f4a57600080fd5b8151612abd81614cd7565b60408101614f6284614a56565b838252614f6e83614a56565b8260208301529392505050565b600060208284031215614f8d57600080fd5b8151612abd81614910565b808201808211156107c1576107c1614f0f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080820151818401525061012080820151818401525061014080820151818401525061016080820151615034828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610a34565b6101c081016107c18284614fab565b60006020828403121561508457600080fd5b612abd82614b28565b60006101c082840312156150a057600080fd5b612abd8383614b3d565b600083516150bc8184602088016147e0565b8351908301906150d08183602088016147e0565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038416815261020081016151946020830185614fab565b826101e0830152949350505050565b6000600182016151b5576151b5614f0f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826151e1576151e16151bc565b500490565b6000826151f5576151f56151bc565b500690565b634e487b7160e01b600052603260045260246000fd5b601f821115610b7157600081815260208120601f850160051c810160208610156152375750805b601f850160051c820191505b8181101561525657828155600101615243565b505050505050565b815167ffffffffffffffff81111561527857615278614843565b61528c816152868454614ddc565b84615210565b602080601f8311600181146152c157600084156152a95750858301515b600019600386901b1c1916600185901b178555615256565b600085815260208120601f198616915b828110156152f0578886015182559484019460019091019084016152d1565b508582101561530e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061535190830184614804565b9695505050505050565b60006020828403121561536d57600080fd5b8151612abd816147ad565b6000825161538a8184602087016147e0565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122007e34147edcf7d7051654a836256e5ace2e47fe73d3e10a006e4d131ef425bf664736f6c63430008100033",
1296
+ "deployedBytecode": "0x6080604052600436106102305760003560e01c80636352211e1161012e57806395d89b41116100ab578063e985e9c51161006f578063e985e9c5146106f9578063f0f4426014610719578063f3fef3a314610739578063f67b2bad14610759578063ffa600e31461077b57600080fd5b806395d89b4114610651578063a22cb46514610666578063b88d4fde14610686578063c87b56dd146106a6578063e5a6b10f146106c657600080fd5b806370a08231116100f257806370a082311461059957806371907f17146105b95780637a702b3c146105ec57806382afd23b1461060c5780638456cb591461063c57600080fd5b80636352211e146104f95780636769a76f146105195780636af6f1ef146105395780636b8734e7146105595780636f86c8971461057957600080fd5b80633f4ba83a116101bc57806352d1902d1161018057806352d1902d146104595780635b494dd51461046e5780635c975abb146104a25780635fcbf445146104ba57806361d027b3146104da57600080fd5b80633f4ba83a146103bd57806342842e0e146103d257806347e7ef24146103f25780634a47a3e0146104125780634f1ef2861461044657600080fd5b8063095ea7b311610203578063095ea7b3146102e657806323b872dd1461030657806324ea54f41461032657806333d6157a146103565780633659cfe61461039d57600080fd5b806301ffc9a71461023557806306fdde031461026a578063077f224a1461028c578063081812fc146102ae575b600080fd5b34801561024157600080fd5b506102556102503660046147c3565b61079b565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061027f6107c7565b6040516102619190614830565b34801561029857600080fd5b506102ac6102a7366004614925565b610859565b005b3480156102ba57600080fd5b506102ce6102c936600461499d565b610a3a565b6040516001600160a01b039091168152602001610261565b3480156102f257600080fd5b506102ac6103013660046149b6565b610a61565b34801561031257600080fd5b506102ac6103213660046149e2565b610b76565b34801561033257600080fd5b506103486000805160206153fc83398151915281565b604051908152602001610261565b34801561036257600080fd5b50610390610371366004614a23565b6001600160a01b0316600090815261012e602052604090205460ff1690565b6040516102619190614a74565b3480156103a957600080fd5b506102ac6103b8366004614a23565b610ba7565b3480156103c957600080fd5b506102ac610c86565b3480156103de57600080fd5b506102ac6103ed3660046149e2565b610d47565b3480156103fe57600080fd5b506102ac61040d3660046149b6565b610d62565b34801561041e57600080fd5b506103487fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6102ac610454366004614a87565b610fa7565b34801561046557600080fd5b50610348611073565b34801561047a57600080fd5b506103487f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104ae57600080fd5b5060335460ff16610255565b3480156104c657600080fd5b506102ac6104d5366004614ae4565b611126565b3480156104e657600080fd5b5061012d546001600160a01b03166102ce565b34801561050557600080fd5b506102ce61051436600461499d565b61159f565b34801561052557600080fd5b50610348610534366004614c04565b6115ff565b34801561054557600080fd5b506102ac610554366004614c8d565b611c31565b34801561056557600080fd5b506102ac610574366004614ae4565b611cb5565b34801561058557600080fd5b506102ac610594366004614a23565b6122d1565b3480156105a557600080fd5b506103486105b4366004614a23565b6128b7565b3480156105c557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b3480156105f857600080fd5b506102ac610607366004614caa565b61293d565b34801561061857600080fd5b5061025561062736600461499d565b600090815261012f6020526040902054151590565b34801561064857600080fd5b506102ac61295f565b34801561065d57600080fd5b5061027f612a04565b34801561067257600080fd5b506102ac610681366004614ce5565b612a13565b34801561069257600080fd5b506102ac6106a1366004614d13565b612a1e565b3480156106b257600080fd5b5061027f6106c136600461499d565b612a50565b3480156106d257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ce565b34801561070557600080fd5b50610255610714366004614d7f565b612ac4565b34801561072557600080fd5b506102ac610734366004614a23565b612af3565b34801561074557600080fd5b506103486107543660046149b6565b612b99565b34801561076557600080fd5b506103486000805160206153b583398151915281565b34801561078757600080fd5b506102ac610796366004614dad565b612cc2565b60006107a682612cf5565b806107c157506001600160e01b031982166309632b4960e31b145b92915050565b606060fb80546107d690614ddc565b80601f016020809104026020016040519081016040528092919081815260200182805461080290614ddc565b801561084f5780601f106108245761010080835404028352916020019161084f565b820191906000526020600020905b81548152906001019060200180831161083257829003601f168201915b5050505050905090565b600054610100900460ff16158080156108795750600054600160ff909116105b806108935750303b158015610893575060005460ff166001145b6108fb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561091e576000805461ff0019166101001790555b600084511161096f5760405162461bcd60e51b815260206004820181905260248201527f506f6c696379506f6f6c3a206e616d652063616e6e6f7420626520656d70747960448201526064016108f2565b60008351116109cb5760405162461bcd60e51b815260206004820152602260248201527f506f6c696379506f6f6c3a2073796d626f6c2063616e6e6f7420626520656d70604482015261747960f01b60648201526084016108f2565b6109d3612d45565b6109dd8484612d6e565b6109e5612d9f565b6109ee82612dce565b8015610a34576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610a4582612dfe565b50600090815260ff60205260409020546001600160a01b031690565b6000610a6c8261159f565b9050806001600160a01b0316836001600160a01b031603610ad95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108f2565b336001600160a01b0382161480610af55750610af58133612ac4565b610b675760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108f2565b610b718383612e5d565b505050565b610b803382612ecb565b610b9c5760405162461bcd60e51b81526004016108f290614e10565b610b71838383612f29565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bef5760405162461bcd60e51b81526004016108f290614e5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c38600080516020615395833981519152546001600160a01b031690565b6001600160a01b031614610c5e5760405162461bcd60e51b81526004016108f290614eaa565b610c67816130d0565b60408051600080825260208201909252610c839183919061318a565b50565b6000805160206153fc8339815191526000805160206153b58339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b50505050610d436132f5565b5050565b610b7183838360405180602001604052806000815250612a1e565b610d6a613347565b6001610d758361338d565b6003811115610d8657610d86614a40565b14610dca5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b60448201526064016108f2565b6040516370a0823160e01b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e599190614ef6565b9050610e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633858561341a565b6001600160a01b0383166347e7ef24336040516370a0823160e01b81526001600160a01b03878116600483015285917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2e9190614ef6565b610f389190614f25565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a349190614ef6565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610fef5760405162461bcd60e51b81526004016108f290614e5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611038600080516020615395833981519152546001600160a01b031690565b6001600160a01b03161461105e5760405162461bcd60e51b81526004016108f290614eaa565b611067826130d0565b610d438282600161318a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111135760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f2565b5060008051602061539583398151915290565b6000805160206153fc8339815191526000805160206153b58339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b1580156111c357600080fd5b505afa1580156111d7573d6000803e3d6000fd5b5050506001600160a01b038516600090815261012e602052604081209150815460ff16600381111561120b5761120b614a40565b0361124e5760405162461bcd60e51b815260206004820152601360248201527210dbdb5c1bdb995b9d081b9bdd08199bdd5b99606a1b60448201526064016108f2565b600184600381111561126257611262614a40565b14801561131757506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206153b5833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190614f38565b806113e65750600384600381111561133157611331614a40565b1480156113e657506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206153fc833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190614f38565b806114b55750600284600381111561140057611400614a40565b1480156114b557506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166391d148546000805160206153b5833981519152336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b59190614f38565b6115275760405162461bcd60e51b815260206004820152603e60248201527f4f6e6c7920475541524449414e2063616e2073757370656e64202f204f6e6c7960448201527f204c4556454c312063616e2061637469766174652f646570726563617465000060648201526084016108f2565b80548490829060ff1916600183600381111561154557611545614a40565b021790555080546040516001600160a01b038716917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161159091610100900460ff16908890614f55565b60405180910390a25050505050565b600081815260fd60205260408120546001600160a01b0316806107c15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108f2565b6000611609613347565b6101608501516001600160a01b03811633146116735760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b60648201526084016108f2565b600161167e82613474565b600381111561168f5761168f614a40565b146116e65760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016108f2565b6000816001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174a9190614f7b565b90506001611757826134f7565b600381111561176857611768614a40565b146117c55760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f7420666f756e64206f72206e6f746044820152662061637469766560c81b60648201526084016108f2565b6117f06bffffffffffffffffffffffff85166bffffffffffffffffffffffff19606085901b16614f98565b808852600090815261012f6020526040902054156118485760405162461bcd60e51b8152602060048201526015602482015274506f6c69637920616c72656164792065786973747360581b60448201526064016108f2565b61185187613585565b8751600090815261012f602052604090819020919091555163e3638ea360e01b81526001600160a01b0382169063e3638ea390611892908a90600401615063565b600060405180830381600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b50505060c088015161190191506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908890849061341a565b610140870151156119aa576119aa86826001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561194e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119729190614f7b565b6101408a01516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692919061341a565b61012087015115611a5357611a5386826001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190614f7b565b6101208a01516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692919061341a565b61012d5460e0880151611a98916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116928a92919091169061341a565b6000876101000151118015611b205750816001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0a9190614f7b565b6001600160a01b0316866001600160a01b031614155b15611bc357611bc386836001600160a01b031663521eb2736040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b9190614f7b565b6101008a01516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692919061341a565b611be185886000015160405180602001604052806000815250613604565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b88604051611c1a9190615063565b60405180910390a25050845190505b949350505050565b611c39613347565b42611c4c6101c083016101a08401615072565b64ffffffffff161115611c9a5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b60448201526064016108f2565b610c83611cac3683900383018361508d565b60006001613637565b6000805160206153b58339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015611d3a57600080fd5b505afa158015611d4e573d6000803e3d6000fd5b5050506001600160a01b038416600090815261012e602052604081209150815460ff166003811115611d8257611d82614a40565b14611dcf5760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e7420616c726561647920696e2074686520706f6f6c00000060448201526064016108f2565b306001600160a01b0316846001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3b9190614f7b565b6001600160a01b031614611e9b5760405162461bcd60e51b815260206004820152602160248201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320706f6f6044820152601b60fa1b60648201526084016108f2565b6001836003811115611eaf57611eaf614a40565b148015611f2557506040516301ffc9a760e01b8152629d19af60e21b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015611f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f259190614f38565b80611fb657506003836003811115611f3f57611f3f614a40565b148015611fb657506040516301ffc9a760e01b8152632dd9c4bb60e21b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190614f38565b8061204757506002836003811115611fd057611fd0614a40565b14801561204757506040516301ffc9a760e01b815263da40804f60e01b60048201526001600160a01b038516906301ffc9a790602401602060405180830381865afa158015612023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120479190614f38565b6120935760405162461bcd60e51b815260206004820152601e60248201527f506f6c696379506f6f6c3a204e6f7420746865207269676874206b696e64000060448201526064016108f2565b8054600160ff198216811783558491839161ffff19909116176101008360038111156120c1576120c1614a40565b021790555060038360038111156120da576120da614a40565b036122875760008490506000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190614f7b565b90506001600160a01b038116156121b5576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b15801561219c57600080fd5b505af11580156121b0573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122179190614f7b565b90506001600160a01b03811615612284576040516338ea38a760e21b81526001600160a01b03838116600483015282169063e3a8e29c90602401600060405180830381600087803b15801561226b57600080fd5b505af115801561227f573d6000803e3d6000fd5b505050505b50505b836001600160a01b03167ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef8460016040516122c3929190614f55565b60405180910390a250505050565b6000805160206153b58339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b15801561235657600080fd5b505afa15801561236a573d6000803e3d6000fd5b505050506001600160a01b038216600090815261012e602052604090206002815460ff16600381111561239f5761239f614a40565b146123ec5760405162461bcd60e51b815260206004820152601860248201527f436f6d706f6e656e74206e6f742064657072656361746564000000000000000060448201526064016108f2565b60018154610100900460ff16600381111561240957612409614a40565b036124d157826001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561244c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124709190614ef6565b156124cc5760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b60648201526084016108f2565b612843565b60028154610100900460ff1660038111156124ee576124ee614a40565b036125b557826001600160a01b0316637ff8bf256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125559190614ef6565b156124cc5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016108f2565b60038154610100900460ff1660038111156125d2576125d2614a40565b03612843576000839050806001600160a01b03166326ccbd226040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190614ef6565b156126a05760405162461bcd60e51b815260206004820152602c60248201527f43616e27742072656d6f76652061205072656d69756d734163636f756e74207760448201526b697468207072656d69756d7360a01b60648201526084016108f2565b6000816001600160a01b031663536ebbfc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127049190614f7b565b90506001600160a01b03811615612771576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b15801561275857600080fd5b505af115801561276c573d6000803e3d6000fd5b505050505b816001600160a01b0316637b83037b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d39190614f7b565b90506001600160a01b03811615612840576040516376c7fc5560e01b81526001600160a01b0383811660048301528216906376c7fc5590602401600060405180830381600087803b15801561282757600080fd5b505af115801561283b573d6000803e3d6000fd5b505050505b50505b80546040516001600160a01b038516917ffe4c6998a06520b63340a48710b374432cb395da90e4e5360e1ec7aeefebecef9161288a91610100900460ff1690600090614f55565b60405180910390a250506001600160a01b0316600090815261012e60205260409020805461ffff19169055565b60006001600160a01b0382166129215760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108f2565b506001600160a01b0316600090815260fe602052604090205490565b612945613347565b610d436129573684900384018461508d565b826000613637565b6000805160206153fc8339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156129e457600080fd5b505afa1580156129f8573d6000803e3d6000fd5b50505050610c83613aee565b606060fc80546107d690614ddc565b610d43338383613b2b565b612a283383612ecb565b612a445760405162461bcd60e51b81526004016108f290614e10565b610a3484848484613bfa565b6060612a5b82612dfe565b6000612a7260408051602081019091526000815290565b90506000815111612a925760405180602001604052806000815250612abd565b80612a9c84613c2d565b604051602001612aad9291906150aa565b6040516020818303038152906040525b9392505050565b6001600160a01b0391821660009081526101006020908152604080832093909416825291909152205460ff1690565b6000805160206153b58339815191526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166312d9a6ad82336040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b158015612b7857600080fd5b505afa158015612b8c573d6000803e3d6000fd5b50505050610d4382613d2e565b6000612ba3613347565b6000612bae8461338d565b90506001816003811115612bc457612bc4614a40565b1480612be157506002816003811115612bdf57612bdf614a40565b145b612c3f5760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b60648201526084016108f2565b60003360405163f3fef3a360e01b81526001600160a01b038083166004830152602482018790529192509086169063f3fef3a3906044016020604051808303816000875af1158015612c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb99190614ef6565b95945050505050565b612cca613347565b610d43612cdc3684900384018461508d565b82612ce8576000612cee565b83602001355b6000613637565b60006001600160e01b031982166380ac58cd60e01b1480612d2657506001600160e01b03198216635b5e139f60e01b145b806107c157506301ffc9a760e01b6001600160e01b03198316146107c1565b600054610100900460ff16612d6c5760405162461bcd60e51b81526004016108f2906150d9565b565b600054610100900460ff16612d955760405162461bcd60e51b81526004016108f2906150d9565b610d438282613dfe565b600054610100900460ff16612dc65760405162461bcd60e51b81526004016108f2906150d9565b612d6c613e3e565b600054610100900460ff16612df55760405162461bcd60e51b81526004016108f2906150d9565b610c8381613d2e565b600081815260fd60205260409020546001600160a01b0316610c835760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108f2565b600081815260ff6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612e928261159f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612ed78361159f565b9050806001600160a01b0316846001600160a01b03161480612efe5750612efe8185612ac4565b80611c295750836001600160a01b0316612f1784610a3a565b6001600160a01b031614949350505050565b826001600160a01b0316612f3c8261159f565b6001600160a01b031614612fa05760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016108f2565b6001600160a01b0382166130025760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108f2565b61300d838383613e71565b613018600082612e5d565b6001600160a01b038316600090815260fe60205260408120805460019290613041908490614f25565b90915550506001600160a01b038216600090815260fe6020526040812080546001929061306f908490614f98565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805160206153fc8339815191526000805160206153b58339815191526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c5b8f5cf8383336040516001600160e01b031960e086901b168152600481019390935260248301919091526001600160a01b0316604482015260640160006040518083038186803b15801561316d57600080fd5b505afa158015613181573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156131bd57610b7183613e79565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613217575060408051601f3d908101601f1916820190925261321491810190614ef6565b60015b61327a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f2565b60008051602061539583398151915281146132e95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f2565b50610b71838383613f15565b6132fd613f3a565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff1615612d6c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108f2565b6001600160a01b038116600090815261012e6020526040812060018154610100900460ff1660038111156133c3576133c3614a40565b146134105760405162461bcd60e51b815260206004820152601a60248201527f436f6d706f6e656e74206973206e6f7420616e2065546f6b656e00000000000060448201526064016108f2565b5460ff1692915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a34908590613f83565b6001600160a01b038116600090815261012e6020526040812060028154610100900460ff1660038111156134aa576134aa614a40565b146134105760405162461bcd60e51b815260206004820152601d60248201527f436f6d706f6e656e74206973206e6f742061205269736b4d6f64756c6500000060448201526064016108f2565b6001600160a01b038116600090815261012e6020526040812060038154610100900460ff16600381111561352d5761352d614a40565b146134105760405162461bcd60e51b815260206004820152602260248201527f436f6d706f6e656e74206973206e6f742061205072656d69756d734163636f756044820152611b9d60f21b60648201526084016108f2565b6000816040516020016135989190615063565b60408051601f1981840301815291905280516020909101209050806135ff5760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f742062652030000000000000000060448201526064016108f2565b919050565b61360e8383614055565b61361b60008484846141a3565b610b715760405162461bcd60e51b81526004016108f290615124565b613640836142a1565b610160830151818061365a57506001600160a01b03811633145b6136a65760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c696369657360448201526064016108f2565b8215806136be575042846101a0015164ffffffffff16115b61370a5760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c696379000000000000000060448201526064016108f2565b600061371582613474565b9050600181600381111561372b5761372b614a40565b14806137485750600281600381111561374657613746614a40565b145b6137ba5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016108f2565b84602001518411156138075760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b60448201526064016108f2565b600080851190506000836001600160a01b03166373a952e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561384e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138729190614f7b565b905061387d816134f7565b9250600183600381111561389357613893614a40565b14806138b0575060028360038111156138ae576138ae614a40565b145b61392e5760405162461bcd60e51b815260206004820152604360248201527f5072656d69756d734163636f756e74206d75737420626520616374697665206f60448201527f72206465707265636174656420746f2070726f63657373207265736f6c7574696064820152626f6e7360e81b608482015260a4016108f2565b8651600090815261012f602052604081205581156139c0576000613955886000015161159f565b604051639d8c5ee760e01b81529091506001600160a01b03831690639d8c5ee7906139889084908c908c90600401615176565b600060405180830381600087803b1580156139a257600080fd5b505af11580156139b6573d6000803e3d6000fd5b5050505050613a1f565b60405163c7a9c70d60e01b81526001600160a01b0382169063c7a9c70d906139ec908a90600401615063565b600060405180830381600087803b158015613a0657600080fd5b505af1158015613a1a573d6000803e3d6000fd5b505050505b6020870151604051636a448ef160e01b815260048101919091526001600160a01b03851690636a448ef190602401600060405180830381600087803b158015613a6757600080fd5b505af1158015613a7b573d6000803e3d6000fd5b5050505086600001518761016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e88604051613ac491815260200190565b60405180910390a38515613ae3578651613ade9087614308565b613181565b865161318190614462565b613af6613347565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861332a3390565b816001600160a01b0316836001600160a01b031603613b8c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108f2565b6001600160a01b0383811660008181526101006020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b613c05848484612f29565b613c11848484846141a3565b610a345760405162461bcd60e51b81526004016108f290615124565b606081600003613c545750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613c7e5780613c68816151a3565b9150613c779050600a836151d2565b9150613c58565b60008167ffffffffffffffff811115613c9957613c99614843565b6040519080825280601f01601f191660200182016040528015613cc3576020820181803683370190505b5090505b8415611c2957613cd8600183614f25565b9150613ce5600a866151e6565b613cf0906030614f98565b60f81b818381518110613d0557613d056151fa565b60200101906001600160f81b031916908160001a905350613d27600a866151d2565b9450613cc7565b6001600160a01b038116613d9c5760405162461bcd60e51b815260206004820152602f60248201527f506f6c696379506f6f6c3a2074726561737572792063616e6e6f74206265207460448201526e6865207a65726f206164647265737360881b60648201526084016108f2565b61012d80546001600160a01b0319166001600160a01b038316179055600161012d546040516001600160a01b0390911681527fb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f9060200160405180910390a250565b600054610100900460ff16613e255760405162461bcd60e51b81526004016108f2906150d9565b60fb613e31838261525e565b5060fc610b71828261525e565b600054610100900460ff16613e655760405162461bcd60e51b81526004016108f2906150d9565b6033805460ff19169055565b610b71613347565b6001600160a01b0381163b613ee65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f2565b60008051602061539583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f1e83614509565b600082511180613f2b5750805b15610b7157610a348383614549565b60335460ff16612d6c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108f2565b6000613fd8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146349092919063ffffffff16565b805190915015610b715780806020019051810190613ff69190614f38565b610b715760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108f2565b6001600160a01b0382166140ab5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108f2565b600081815260fd60205260409020546001600160a01b0316156141105760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108f2565b61411c60008383613e71565b6001600160a01b038216600090815260fe60205260408120805460019290614145908490614f98565b9091555050600081815260fd602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561429957604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906141e790339089908890889060040161531e565b6020604051808303816000875af1925050508015614222575060408051601f3d908101601f1916820190925261421f9181019061535b565b60015b61427f573d808015614250576040519150601f19603f3d011682016040523d82523d6000602084013e614255565b606091505b5080516000036142775760405162461bcd60e51b81526004016108f290615124565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c29565b506001611c29565b8051158015906142c957508051600090815261012f60205260409020546142c782613585565b145b610c835760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016108f2565b60006143138361159f565b90506001600160a01b0381163b61432957505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606481018590526084016020604051808303816000875af19250505080156143af575060408051601f3d908101601f191682019092526143ac9181019061535b565b60015b6143f2573d8080156143dd576040519150601f19603f3d011682016040523d82523d6000602084013e6143e2565b606091505b5080516000036142775750505050565b6001600160e01b03198116636b140e9f60e11b14610a345760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b60648201526084016108f2565b600061446d8261159f565b90506001600160a01b0381163b614482575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018590526064016020604051808303816000875af1925050508015614501575060408051601f3d908101601f191682019092526144fe9181019061535b565b60015b610b71575050565b61451281613e79565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6145b15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108f2565b600080846001600160a01b0316846040516145cc9190615378565b600060405180830381855af49150503d8060008114614607576040519150601f19603f3d011682016040523d82523d6000602084013e61460c565b606091505b5091509150612cb982826040518060600160405280602781526020016153d560279139614643565b6060611c29848460008561467c565b60608315614652575081612abd565b8251156146625782518084602001fd5b8160405162461bcd60e51b81526004016108f29190614830565b6060824710156146dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108f2565b6001600160a01b0385163b6147345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108f2565b600080866001600160a01b031685876040516147509190615378565b60006040518083038185875af1925050503d806000811461478d576040519150601f19603f3d011682016040523d82523d6000602084013e614792565b606091505b50915091506147a2828286614643565b979650505050505050565b6001600160e01b031981168114610c8357600080fd5b6000602082840312156147d557600080fd5b8135612abd816147ad565b60005b838110156147fb5781810151838201526020016147e3565b50506000910152565b6000815180845261481c8160208601602086016147e0565b601f01601f19169290920160200192915050565b602081526000612abd6020830184614804565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff8111828210171561487d5761487d614843565b60405290565b600082601f83011261489457600080fd5b813567ffffffffffffffff808211156148af576148af614843565b604051601f8301601f19908116603f011681019082821181831017156148d7576148d7614843565b816040528381528660208588010111156148f057600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610c8357600080fd5b60008060006060848603121561493a57600080fd5b833567ffffffffffffffff8082111561495257600080fd5b61495e87838801614883565b9450602086013591508082111561497457600080fd5b5061498186828701614883565b925050604084013561499281614910565b809150509250925092565b6000602082840312156149af57600080fd5b5035919050565b600080604083850312156149c957600080fd5b82356149d481614910565b946020939093013593505050565b6000806000606084860312156149f757600080fd5b8335614a0281614910565b92506020840135614a1281614910565b929592945050506040919091013590565b600060208284031215614a3557600080fd5b8135612abd81614910565b634e487b7160e01b600052602160045260246000fd5b60048110610c8357634e487b7160e01b600052602160045260246000fd5b60208101614a8183614a56565b91905290565b60008060408385031215614a9a57600080fd5b8235614aa581614910565b9150602083013567ffffffffffffffff811115614ac157600080fd5b614acd85828601614883565b9150509250929050565b60048110610c8357600080fd5b60008060408385031215614af757600080fd5b8235614b0281614910565b91506020830135614b1281614ad7565b809150509250929050565b80356135ff81614910565b803564ffffffffff811681146135ff57600080fd5b60006101c08284031215614b5057600080fd5b614b58614859565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160614bd6818401614b1d565b90820152610180614be8838201614b28565b908201526101a0614bfa838201614b28565b9082015292915050565b6000806000806102208587031215614c1b57600080fd5b614c258686614b3d565b93506101c0850135614c3681614910565b92506101e0850135614c4781614910565b91506102008501356bffffffffffffffffffffffff81168114614c6957600080fd5b939692955090935050565b60006101c08284031215614c8757600080fd5b50919050565b60006101c08284031215614ca057600080fd5b612abd8383614c74565b6000806101e08385031215614cbe57600080fd5b614cc88484614c74565b946101c0939093013593505050565b8015158114610c8357600080fd5b60008060408385031215614cf857600080fd5b8235614d0381614910565b91506020830135614b1281614cd7565b60008060008060808587031215614d2957600080fd5b8435614d3481614910565b93506020850135614d4481614910565b925060408501359150606085013567ffffffffffffffff811115614d6757600080fd5b614d7387828801614883565b91505092959194509250565b60008060408385031215614d9257600080fd5b8235614d9d81614910565b91506020830135614b1281614910565b6000806101e08385031215614dc157600080fd5b614dcb8484614c74565b91506101c0830135614b1281614cd7565b600181811c90821680614df057607f821691505b602082108103614c8757634e487b7160e01b600052602260045260246000fd5b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215614f0857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156107c1576107c1614f0f565b600060208284031215614f4a57600080fd5b8151612abd81614cd7565b60408101614f6284614a56565b838252614f6e83614a56565b8260208301529392505050565b600060208284031215614f8d57600080fd5b8151612abd81614910565b808201808211156107c1576107c1614f0f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080820151818401525061012080820151818401525061014080820151818401525061016080820151615034828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff811684830152610a34565b6101c081016107c18284614fab565b60006020828403121561508457600080fd5b612abd82614b28565b60006101c082840312156150a057600080fd5b612abd8383614b3d565b600083516150bc8184602088016147e0565b8351908301906150d08183602088016147e0565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038416815261020081016151946020830185614fab565b826101e0830152949350505050565b6000600182016151b5576151b5614f0f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826151e1576151e16151bc565b500490565b6000826151f5576151f56151bc565b500690565b634e487b7160e01b600052603260045260246000fd5b601f821115610b7157600081815260208120601f850160051c810160208610156152375750805b601f850160051c820191505b8181101561525657828155600101615243565b505050505050565b815167ffffffffffffffff81111561527857615278614843565b61528c816152868454614ddc565b84615210565b602080601f8311600181146152c157600084156152a95750858301515b600019600386901b1c1916600185901b178555615256565b600085815260208120601f198616915b828110156152f0578886015182559484019460019091019084016152d1565b508582101561530e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061535190830184614804565b9695505050505050565b60006020828403121561536d57600080fd5b8151612abd816147ad565b6000825161538a8184602087016147e0565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122007e34147edcf7d7051654a836256e5ace2e47fe73d3e10a006e4d131ef425bf664736f6c63430008100033",
1297
1297
  "linkReferences": {},
1298
1298
  "deployedLinkReferences": {}
1299
1299
  }