60806040523480156200001157600080fd5b506200001d33620000d7565b33600090815260066020908152604091829020805460ff1916600117905581518083019092526004808352630a88e9eb60e31b929091019182526200006391816200020f565b50604080518082019091526004808252630a88e9eb60e31b602090920191825262000091916005916200020f565b50620000a042611c20620002d0565b600955620000d1730b16ea55024a8d84aad5f822def39f44ae5841ea6df684df56c3e01bc6c7320000000062000127565b62000345565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060036000828254620001969190620002b5565b90915550506001600160a01b03821660009081526001602052604081208054839290620001c5908490620002b5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200021d90620002f2565b90600052602060002090601f0160209004810192826200024157600085556200028c565b82601f106200025c57805160ff19168380011785556200028c565b828001600101855582156200028c579182015b828111156200028c5782518255916020019190600101906200026f565b506200029a9291506200029e565b5090565b5b808211156200029a57600081556001016200029f565b60008219821115620002cb57620002cb6200032f565b500190565b6000816000190483118215151615620002ed57620002ed6200032f565b500290565b600181811c908216806200030757607f821691505b602082108114156200032957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61175d80620003556000396000f3fe6080604052600436106101735760003560e01c806389112f2f116100c8578063bdae378f11610084578063dd62ed3e11610061578063dd62ed3e14610480578063ed0f826a146104c6578063f1c8bcad146104e6578063f2fde38b1461050657005b8063bdae378f1461041a578063c111db601461043a578063ccb6f8461461046a57005b806389112f2f1461034d5780638da5cb5b1461036d5780638e9c66cb1461039557806395d89b41146103c5578063a457c2d7146103da578063a9059cbb146103fa57005b8063313ce5671161012f5780635a4462151161010c5780635a446215146102c257806368d21889146102e257806370a0823114610302578063715018a61461033857005b8063313ce567146102665780633950935114610282578063558a7297146102a257005b806306fdde031461017c578063095ea7b3146101a757806313e7c9d8146101d757806318160ddd1461020757806323b872dd14610226578063299816a51461024657005b3661017a57005b005b34801561018857600080fd5b50610191610526565b60405161019e91906115da565b60405180910390f35b3480156101b357600080fd5b506101c76101c2366004611438565b6105b8565b604051901515815260200161019e565b3480156101e357600080fd5b506101c76101f2366004611363565b60066020526000908152604090205460ff1681565b34801561021357600080fd5b506003545b60405190815260200161019e565b34801561023257600080fd5b506101c76102413660046113f7565b6105ce565b34801561025257600080fd5b5061017a6102613660046115a6565b61067f565b34801561027257600080fd5b506040516012815260200161019e565b34801561028e57600080fd5b506101c761029d366004611438565b61068c565b3480156102ae57600080fd5b5061017a6102bd36600461140b565b6106c8565b3480156102ce57600080fd5b5061017a6102dd366004611545565b6106fb565b3480156102ee57600080fd5b5061017a6102fd366004611463565b61072f565b34801561030e57600080fd5b5061021861031d366004611363565b6001600160a01b031660009081526001602052604090205490565b34801561034457600080fd5b5061017a6107ac565b34801561035957600080fd5b5061017a610368366004611463565b6107c0565b34801561037957600080fd5b506000546040516001600160a01b03909116815260200161019e565b3480156103a157600080fd5b506101c76103b0366004611363565b60076020526000908152604090205460ff1681565b3480156103d157600080fd5b5061019161083d565b3480156103e657600080fd5b506101c76103f5366004611438565b61084c565b34801561040657600080fd5b506101c7610415366004611438565b6108e5565b34801561042657600080fd5b5061017a61043536600461140b565b6108f2565b34801561044657600080fd5b506101c7610455366004611363565b60086020526000908152604090205460ff1681565b34801561047657600080fd5b5061021860095481565b34801561048c57600080fd5b5061021861049b36600461137f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156104d257600080fd5b5061017a6104e13660046113b7565b610925565b3480156104f257600080fd5b5061017a61050136600461140b565b610a54565b34801561051257600080fd5b5061017a610521366004611363565b610a87565b60606004805461053590611682565b80601f016020809104026020016040519081016040528092919081815260200182805461056190611682565b80156105ae5780601f10610583576101008083540402835291602001916105ae565b820191906000526020600020905b81548152906001019060200180831161059157829003601f168201915b5050505050905090565b60006105c5338484610b00565b50600192915050565b60006105db848484610c24565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156106655760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106728533858403610b00565b60019150505b9392505050565b610687610d27565b600955565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105c59185906106c390869061163e565b610b00565b6106d0610d27565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b610703610d27565b815161071690600490602085019061124f565b50805161072a90600590602084019061124f565b505050565b610737610d27565b60005b825181101561072a57816008600085848151811061076857634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107a4816116bd565b91505061073a565b6107b4610d27565b6107be6000610d81565b565b6107c8610d27565b60005b825181101561072a5781600760008584815181106107f957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610835816116bd565b9150506107cb565b60606005805461053590611682565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156108ce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161065c565b6108db3385858403610b00565b5060019392505050565b60006105c5338484610c24565b6108fa610d27565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360009081526006602052604090205460ff166109905760405162461bcd60e51b8152602060048201526024808201527f4f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260448201526330ba37b960e11b606482015260840161065c565b6001600160a01b038316610a40576000826001600160a01b03166159d883604051600060405180830381858888f193505050503d80600081146109ef576040519150601f19603f3d011682016040523d82523d6000602084013e6109f4565b606091505b5050905080610a3a5760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd9995c9155120819985a5b195960721b604482015260640161065c565b50505050565b61072a6001600160a01b0384168383610dd1565b610a5c610d27565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b610a8f610d27565b6001600160a01b038116610af45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b610afd81610d81565b50565b6001600160a01b038316610b625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161065c565b6001600160a01b038216610bc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161065c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600954421015610ca6576001600160a01b03831660009081526008602052604090205460ff1680610c6d57506001600160a01b03821660009081526008602052604090205460ff165b610ca65760405162461bcd60e51b815260206004820152600a6024820152691b99595d08199b1a5cdd60b21b604482015260640161065c565b6001600160a01b03831660009081526007602052604090205460ff16158015610ce857506001600160a01b03821660009081526007602052604090205460ff16155b610d1c5760405162461bcd60e51b8152602060048201526005602482015264189b1a5cdd60da1b604482015260640161065c565b61072a838383610e23565b6000546001600160a01b031633146107be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261072a908490610ffc565b80610e2d57505050565b6001600160a01b038316610e915760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161065c565b6001600160a01b038216610ef35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161065c565b6001600160a01b03831660009081526001602052604090205481811015610f6b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161065c565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610fa290849061163e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fee91815260200190565b60405180910390a350505050565b6000611051826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110ce9092919063ffffffff16565b80519091501561072a578080602001905181019061106f9190611529565b61072a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161065c565b60606110dd84846000856110e5565b949350505050565b6060824710156111465760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161065c565b6001600160a01b0385163b61119d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065c565b600080866001600160a01b031685876040516111b991906115be565b60006040518083038185875af1925050503d80600081146111f6576040519150601f19603f3d011682016040523d82523d6000602084013e6111fb565b606091505b509150915061120b828286611216565b979650505050505050565b60608315611225575081610678565b8251156112355782518084602001fd5b8160405162461bcd60e51b815260040161065c91906115da565b82805461125b90611682565b90600052602060002090601f01602090048101928261127d57600085556112c3565b82601f1061129657805160ff19168380011785556112c3565b828001600101855582156112c3579182015b828111156112c35782518255916020019190600101906112a8565b506112cf9291506112d3565b5090565b5b808211156112cf57600081556001016112d4565b80356112f381611719565b919050565b600082601f830112611308578081fd5b813567ffffffffffffffff811115611322576113226116ee565b611335601f8201601f191660200161160d565b818152846020838601011115611349578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215611374578081fd5b813561067881611704565b60008060408385031215611391578081fd5b823561139c81611704565b915060208301356113ac81611704565b809150509250929050565b6000806000606084860312156113cb578081fd5b83356113d681611704565b925060208401356113e681611704565b929592945050506040919091013590565b6000806000606084860312156113cb578283fd5b6000806040838503121561141d578182fd5b823561142881611704565b915060208301356113ac81611719565b6000806040838503121561144a578182fd5b823561145581611704565b946020939093013593505050565b60008060408385031215611475578182fd5b823567ffffffffffffffff8082111561148c578384fd5b818501915085601f83011261149f578384fd5b81356020828211156114b3576114b36116ee565b8160051b92506114c481840161160d565b8281528181019085830185870184018b10156114de578889fd5b8896505b8487101561150c57803595506114f786611704565b858352600196909601959183019183016114e2565b50965061151c90508782016112e8565b9450505050509250929050565b60006020828403121561153a578081fd5b815161067881611719565b60008060408385031215611557578182fd5b823567ffffffffffffffff8082111561156e578384fd5b61157a868387016112f8565b9350602085013591508082111561158f578283fd5b5061159c858286016112f8565b9150509250929050565b6000602082840312156115b7578081fd5b5035919050565b600082516115d0818460208701611656565b9190910192915050565b60208152600082518060208401526115f9816040850160208701611656565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611636576116366116ee565b604052919050565b60008219821115611651576116516116d8565b500190565b60005b83811015611671578181015183820152602001611659565b83811115610a3a5750506000910152565b600181811c9082168061169657607f821691505b602082108114156116b757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116d1576116d16116d8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610afd57600080fd5b8015158114610afd57600080fdfea26469706673582212204aacb306f84deadfbd149d6c805be470412648c655647407df27b5b63308221264736f6c63430008040033