0x6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb14610225578063d0e30db014610245578063dd62ed3e1461024d57600080fd5b806340c10f19146101c357806370a08231146101e357806395d89b411461021057600080fd5b806323b872dd116100a557806323b872dd146101575780632e1a7d4d14610177578063313ce5671461019757600080fd5b806306fdde03146100df578063095ea7b31461010a57806318160ddd1461013a57600080fd5b366100da576100d8610285565b005b600080fd5b3480156100eb57600080fd5b506100f46102bc565b60405161010191906106fc565b60405180910390f35b34801561011657600080fd5b5061012a610125366004610791565b61034a565b6040519015158152602001610101565b34801561014657600080fd5b50475b604051908152602001610101565b34801561016357600080fd5b5061012a6101723660046107bb565b6103c4565b34801561018357600080fd5b506100d86101923660046107f7565b6105db565b3480156101a357600080fd5b506002546101b19060ff1681565b60405160ff9091168152602001610101565b3480156101cf57600080fd5b506100d86101de366004610791565b610613565b3480156101ef57600080fd5b506101496101fe366004610810565b60036020526000908152604090205481565b34801561021c57600080fd5b506100f46106db565b34801561023157600080fd5b5061012a610240366004610791565b6106e8565b6100d8610285565b34801561025957600080fd5b5061014961026836600461082b565b600460209081526000928352604080842090915290825290205481565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c99061085e565b80601f01602080910402602001604051908101604052809291908181526020018280546102f59061085e565b80156103425780601f1061031757610100808354040283529160200191610342565b820191906000526020600020905b81548152906001019060200180831161032557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103b29086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156103f657600080fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061046c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156104f45773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156104ae57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152812080548492906104ee9084906108e0565b90915550505b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812080548492906105299084906108e0565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105639084906108f3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105c991815260200190565b60405180910390a35060019392505050565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600254610100900473ffffffffffffffffffffffffffffffffffffffff16331461069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c792061646d696e2063616e206d696e7400000000000000000000000000604482015260640160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906106d29084906108f3565b90915550505050565b600180546102c99061085e565b60006106f53384846103c4565b9392505050565b600060208083528351808285015260005b818110156107295785810183015185820160400152820161070d565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461078c57600080fd5b919050565b600080604083850312156107a457600080fd5b6107ad83610768565b946020939093013593505050565b6000806000606084860312156107d057600080fd5b6107d984610768565b92506107e760208501610768565b9150604084013590509250925092565b60006020828403121561080957600080fd5b5035919050565b60006020828403121561082257600080fd5b6106f582610768565b6000806040838503121561083e57600080fd5b61084783610768565b915061085560208401610768565b90509250929050565b600181811c9082168061087257607f821691505b6020821081036108ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156103be576103be6108b1565b808201808211156103be576103be6108b156fea2646970667358221220acce885f49a8cf904bd77b9ea90a2514c7bded9675dea400a20f92529e0e8b9964736f6c63430008110033