60806040523480156200001157600080fd5b506040516200123038038062001230833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610f3880620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636a6278421161008c578063a457c2d711610066578063a457c2d7146101bf578063a9059cbb146101d2578063dd62ed3e146101e5578063f46eccc41461022b57600080fd5b80636a6278421461016c57806370a082311461018157806395d89b41146101b757600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61024e565b6040516100f99190610ba3565b60405180910390f35b610115610110366004610c38565b6102e0565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610c62565b6102fa565b604051601281526020016100f9565b610115610167366004610c38565b610317565b61017f61017a366004610c9e565b610363565b005b61012961018f366004610c9e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100ec61040f565b6101156101cd366004610c38565b61041e565b6101156101e0366004610c38565b6104ff565b6101296101f3366004610cb9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b610115610239366004610c9e565b60056020526000908152604090205460ff1681565b60606003805461025d90610cec565b80601f016020809104026020016040519081016040528092919081815260200182805461028990610cec565b80156102d65780601f106102ab576101008083540402835291602001916102d6565b820191906000526020600020905b8154815290600101906020018083116102b957829003601f168201915b5050505050905090565b6000336102ee81858561051a565b60019150505b92915050565b60006103046106cd565b61030f848484610743565b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102ee908290869061035e908790610d6e565b61051a565b3360009081526005602052604090205460ff16156103ad576040517f71dda21300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561040c816103f1601290565b6103fc90600a610ea1565b610407906032610eb0565b61075c565b50565b60606004805461025d90610cec565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104f4828686840361051a565b506001949350505050565b60006105096106cd565b610513838361084f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff83166105bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104de565b73ffffffffffffffffffffffffffffffffffffffff821661065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104de565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6106d8600243610ec7565b600003610741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4661696c6564000000000000000000000000000000000000000000000000000060448201526064016104de565b565b60003361075185828561085d565b6104f4858585610934565b73ffffffffffffffffffffffffffffffffffffffff82166107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104de565b80600260008282546107eb9190610d6e565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000336102ee818585610934565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461092e5781811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104de565b61092e848484840361051a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104de565b73ffffffffffffffffffffffffffffffffffffffff8216610a7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104de565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104de565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361092e565b600060208083528351808285015260005b81811015610bd057858101830151858201604001528201610bb4565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c3357600080fd5b919050565b60008060408385031215610c4b57600080fd5b610c5483610c0f565b946020939093013593505050565b600080600060608486031215610c7757600080fd5b610c8084610c0f565b9250610c8e60208501610c0f565b9150604084013590509250925092565b600060208284031215610cb057600080fd5b61051382610c0f565b60008060408385031215610ccc57600080fd5b610cd583610c0f565b9150610ce360208401610c0f565b90509250929050565b600181811c90821680610d0057607f821691505b602082108103610d39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f4576102f4610d3f565b600181815b80851115610dda57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610dc057610dc0610d3f565b80851615610dcd57918102915b93841c9390800290610d86565b509250929050565b600082610df1575060016102f4565b81610dfe575060006102f4565b8160018114610e145760028114610e1e57610e3a565b60019150506102f4565b60ff841115610e2f57610e2f610d3f565b50506001821b6102f4565b5060208310610133831016604e8410600b8410161715610e5d575081810a6102f4565b610e678383610d81565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e9957610e99610d3f565b029392505050565b600061051360ff841683610de2565b80820281158282048414176102f4576102f4610d3f565b600082610efd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50069056fea264697066735822122032993af0b1fe4da69e66f7ad4ef00cd6b12ee05bcac733e0f48c22de1280ca1064736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a42756c6c20546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424c4c0000000000000000000000000000000000000000000000000000000000