0x608060405234801561001057600080fd5b50611065806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636e054dd01461003b578063d4fac45d146100b9575b600080fd5b6100b76004803603608081101561005157600080fd5b81359160208101359181019060608101604082013564010000000081111561007857600080fd5b82018360208201111561008a57600080fd5b803590602001918460208302840111640100000000831117156100ac57600080fd5b9193509150356100f9565b005b6100e7600480360360408110156100cf57600080fd5b506001600160a01b0381358116916020013516610388565b60408051918252519081900360200190f35b63ffffffff198116600061010c8261044b565b9050808061013d5761011f8488186104db565b61012b57505050610381565b63ffffffff8416909117600160ff1b17905b600080600061014a611010565b6001600160a01b038c1681526000600f87165b801561036657600f81141561017157610353565b600d81106103535760408301516001600160a01b03166102135773818e6fecd516ecc3849daf6845e3ec868087b7556001600160a01b0316634f61ff8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101d857600080fd5b505afa1580156101ec573d6000803e3d6000fd5b505050506040513d602081101561020257600080fd5b50516001600160a01b031660408401525b60208301516001600160a01b03166102bc578251604080516303795fb160e11b81526001600160a01b0390921660048301525173c0a47dfe034b400b47bdad5fecda2621de6c4d95916306f2bf62916024808301926020929190829003018186803b15801561028157600080fd5b505afa158015610295573d6000803e3d6000fd5b505050506040513d60208110156102ab57600080fd5b50516001600160a01b031660208401525b6002810660020395508b8b838181106102d157fe5b90506020020135945060006102f58460000151856040015186602001518a8a610576565b905082600101600c02610100038f901c9450858111156103345761032384600001518560200151898961081f565b61032f60ff8616610d27565b610351565b600f6004840281901b999099179861035190600887901c16610d27565b505b506001016004810287901c600f1661015d565b868814610377576103778989610db2565b5050505050505050505b5050505050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156103c057506001600160a01b03811631610445565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d602081101561044057600080fd5b505190505b92915050565b6000732d8e7bdcbe0311e27628a9daa6359ded42fe11aa6001600160a01b031663c5436601836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156104a757600080fd5b505af11580156104bb573d6000803e3d6000fd5b505050506040513d60208110156104d157600080fd5b505190505b919050565b60006001600160a01b0382166b0fffffffffffffffffffffff60a084901c1660fc84901c600181141561051e57506001600160a01b0390911631141590506104d6565b8061052f57600193505050506104d6565b600281141561054d57506001600160a01b03909116311090506104d6565b600381141561056b57506001600160a01b03909116311190506104d6565b506000949350505050565b60008060008060018614156106cd5760408051630611aecb60e11b815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60048201526001600160a01b038b8116602483015260448201889052600160648301528251908b1692630c235d969260848082019391829003018186803b1580156105f257600080fd5b505afa158015610606573d6000803e3d6000fd5b505050506040513d604081101561061c57600080fd5b5060200151925061064373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8a8786610e20565b9150816106565760009350505050610816565b866001600160a01b03166395b68fe7836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561069a57600080fd5b505afa1580156106ae573d6000803e3d6000fd5b505050506040513d60208110156106c457600080fd5b50519050610811565b866001600160a01b031663cd7724c3866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561071157600080fd5b505afa158015610725573d6000803e3d6000fd5b505050506040513d602081101561073b57600080fd5b50519150816107505760009350505050610816565b60408051630611aecb60e11b81526001600160a01b038b8116600483015273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee602483015260448201859052600160648301528251908b1692630c235d969260848082019391829003018186803b1580156107bd57600080fd5b505afa1580156107d1573d6000803e3d6000fd5b505050506040513d60408110156107e757600080fd5b5060200151925061080e8973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8486610e20565b90505b925050505b95945050505050565b600060606001841415610a5f5773818e6fecd516ecc3849daf6845e3ec868087b7556001600160a01b03166329589f618473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868a306b204fce5e3e25026110000000600073b3e20b057cbf2c0d9d099bac6772af0c948c6ade8a6040518a63ffffffff1660e01b815260040180896001600160a01b03166001600160a01b03168152602001888152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561094b578181015183820152602001610933565b50505050905090810190601f1680156109785780820380516001836020036101000a031916815260200191505b5099505050505050505050506020604051808303818588803b15801561099d57600080fd5b505af11580156109b1573d6000803e3d6000fd5b50505050506040513d60208110156109c857600080fd5b505191506109d7868684610e49565b604080516395e3c50b60e01b8152600481018490526001602482015242604482015290516001600160a01b038716916395e3c50b9160648083019260209291908290030181600087803b158015610a2d57600080fd5b505af1158015610a41573d6000803e3d6000fd5b505050506040513d6020811015610a5757600080fd5b50610d1f9050565b846001600160a01b031663f39b5b9b846001426040518463ffffffff1660e01b815260040180838152602001828152602001925050506020604051808303818588803b158015610aae57600080fd5b505af1158015610ac2573d6000803e3d6000fd5b50505050506040513d6020811015610ad957600080fd5b5051604080516370a0823160e01b815230600482015290519193506000916001600160a01b038916916370a08231916024808301926020929190829003018186803b158015610b2757600080fd5b505afa158015610b3b573d6000803e3d6000fd5b505050506040513d6020811015610b5157600080fd5b5051905082811015610b61578092505b610b808773818e6fecd516ecc3849daf6845e3ec868087b75585610e49565b73818e6fecd516ecc3849daf6845e3ec868087b7556001600160a01b03166329589f61888573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee306b204fce5e3e25026110000000600073b3e20b057cbf2c0d9d099bac6772af0c948c6ade8a6040518963ffffffff1660e01b815260040180896001600160a01b03166001600160a01b03168152602001888152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c9e578181015183820152602001610c86565b50505050905090810190601f168015610ccb5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b158015610cf157600080fd5b505af1158015610d05573d6000803e3d6000fd5b505050506040513d6020811015610d1b57600080fd5b5050505b505050505050565b8015610daf576eb3f879cb30fe243b4dfee438691c046001600160a01b031663d8ccd0f3826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d8257600080fd5b505af1158015610d96573d6000803e3d6000fd5b505050506040513d6020811015610dac57600080fd5b50505b50565b604080516310efae0960e21b815260048101849052602481018390529051732d8e7bdcbe0311e27628a9daa6359ded42fe11aa916343beb82491604480830192600092919082900301818387803b158015610e0c57600080fd5b505af1158015610d1f573d6000803e3d6000fd5b6000610e3e83610e2f87610ec6565b610e3887610ec6565b85610f81565b90505b949350505050565b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b50505050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610ef5575060126104d6565b6001600160a01b0382166000908152602081905260409020548061044557826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4c57600080fd5b505afa158015610f60573d6000803e3d6000fd5b505050506040513d6020811015610f7657600080fd5b505191506104d69050565b60006b204fce5e3e25026110000000851115610f9c57600080fd5b69d3c21bcecceda1000000821115610fb357600080fd5b838310610fe65760128484031115610fca57600080fd5b670de0b6b3a7640000858302858503600a0a025b049050610e41565b60128385031115610ff657600080fd5b828403600a0a670de0b6b3a76400000282860281610fde57fe5b60408051606081018252600080825260208201819052918101919091529056fea265627a7a72315820bdafb5019b671b7d920c0786ff091731d3fbceb8ffe0bd0421c67b733e6960eb64736f6c634300050f0032