60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4245424500000000000000000000000000000000000000000000000000000000815250600090805190602001906200005f929190620001ad565b506040518060400160405280600481526020017f424542450000000000000000000000000000000000000000000000000000000081525060019080519060200190620000ad929190620001ad565b506012600260006101000a81548160ff021916908360ff160217905550600260009054906101000a900460ff1660ff16600a620000eb9190620002b8565b6509184e72a000620000fe9190620003f5565b60038190555073c6082521bc568c1a5e3cb7474452671a7764d5e2600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600581905550600354600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000501565b828054620001bb9062000460565b90600052602060002090601f016020900481019282620001df57600085556200022b565b82601f10620001fa57805160ff19168380011785556200022b565b828001600101855582156200022b579182015b828111156200022a5782518255916020019190600101906200020d565b5b5090506200023a91906200023e565b5090565b5b80821115620002595760008160009055506001016200023f565b5090565b6000808291508390505b6001851115620002af5780860481111562000287576200028662000496565b5b6001851615620002975780820291505b8081029050620002a785620004f4565b945062000267565b94509492505050565b6000620002c58262000456565b9150620002d28362000456565b9250620003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000309565b905092915050565b6000826200031b5760019050620003ee565b816200032b5760009050620003ee565b81600181146200034457600281146200034f5762000385565b6001915050620003ee565b60ff84111562000364576200036362000496565b5b8360020a9150848211156200037e576200037d62000496565b5b50620003ee565b5060208310610133831016604e8410600b8410161715620003bf5782820a905083811115620003b957620003b862000496565b5b620003ee565b620003ce84848460016200025d565b92509050818404811115620003e857620003e762000496565b5b81810290505b9392505050565b6000620004028262000456565b91506200040f8362000456565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200044b576200044a62000496565b5b828202905092915050565b6000819050919050565b600060028204905060018216806200047957607f821691505b6020821081141562000490576200048f620004c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b61134980620005116000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a0823114610168578063771a3a1d1461019857806395d89b41146101b6578063a9059cbb146101d4578063b7bda68f14610204578063dd62ed3e14610222576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610252565b6040516100c39190610fa4565b60405180910390f35b6100e660048036038101906100e19190610dfd565b6102e0565b6040516100f39190610f89565b60405180910390f35b6101046103d2565b6040516101119190611026565b60405180910390f35b610134600480360381019061012f9190610dae565b6103d8565b6040516101419190610f89565b60405180910390f35b6101526108d8565b60405161015f9190611041565b60405180910390f35b610182600480360381019061017d9190610d49565b6108eb565b60405161018f9190611026565b60405180910390f35b6101a0610903565b6040516101ad9190611026565b60405180910390f35b6101be610909565b6040516101cb9190610fa4565b60405180910390f35b6101ee60048036038101906101e99190610dfd565b610997565b6040516101fb9190610f89565b60405180910390f35b61020c610cd4565b6040516102199190610f6e565b60405180910390f35b61023c60048036038101906102379190610d72565b610cfa565b6040516102499190611026565b60405180910390f35b6000805461025f90611215565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90611215565b80156102d85780601f106102ad576101008083540402835291602001916102d8565b820191906000526020600020905b8154815290600101906020018083116102bb57829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103c09190611026565b60405180910390a36001905092915050565b60035481565b6000806064600554846103eb91906110ff565b6103f591906110ce565b9050600081846104059190611159565b9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046e90610fe6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156104e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104de90610fe6565b60405180910390fd5b83600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056090611006565b60405180910390fd5b83600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061f90610fc6565b60405180910390fd5b83600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106779190611159565b925050819055508160066000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106ef9190611078565b9250508190555080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107459190611078565b9250508190555083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107d89190611159565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161083c9190611026565b60405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108c39190611026565b60405180910390a36001925050509392505050565b600260009054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60055481565b6001805461091690611215565b80601f016020809104026020016040519081016040528092919081815260200182805461094290611215565b801561098f5780601f106109645761010080835404028352916020019161098f565b820191906000526020600020905b81548152906001019060200180831161097257829003601f168201915b505050505081565b6000806064600554846109aa91906110ff565b6109b491906110ce565b9050600081846109c49190611159565b9050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90610fe6565b60405180910390fd5b83600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90611006565b60405180910390fd5b83600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b079190611159565b925050819055508160066000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b7f9190611078565b9250508190555080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bd59190611078565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c399190611026565b60405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc09190611026565b60405180910390a360019250505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b600081359050610d2e816112e5565b92915050565b600081359050610d43816112fc565b92915050565b600060208284031215610d5b57600080fd5b6000610d6984828501610d1f565b91505092915050565b60008060408385031215610d8557600080fd5b6000610d9385828601610d1f565b9250506020610da485828601610d1f565b9150509250929050565b600080600060608486031215610dc357600080fd5b6000610dd186828701610d1f565b9350506020610de286828701610d1f565b9250506040610df386828701610d34565b9150509250925092565b60008060408385031215610e1057600080fd5b6000610e1e85828601610d1f565b9250506020610e2f85828601610d34565b9150509250929050565b610e428161118d565b82525050565b610e518161119f565b82525050565b6000610e628261105c565b610e6c8185611067565b9350610e7c8185602086016111e2565b610e85816112d4565b840191505092915050565b6000610e9d601283611067565b91507f416c6c6f77616e636520657863656564656400000000000000000000000000006000830152602082019050919050565b6000610edd600f83611067565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b6000610f1d601483611067565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b610f59816111cb565b82525050565b610f68816111d5565b82525050565b6000602082019050610f836000830184610e39565b92915050565b6000602082019050610f9e6000830184610e48565b92915050565b60006020820190508181036000830152610fbe8184610e57565b905092915050565b60006020820190508181036000830152610fdf81610e90565b9050919050565b60006020820190508181036000830152610fff81610ed0565b9050919050565b6000602082019050818103600083015261101f81610f10565b9050919050565b600060208201905061103b6000830184610f50565b92915050565b60006020820190506110566000830184610f5f565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611083826111cb565b915061108e836111cb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156110c3576110c2611247565b5b828201905092915050565b60006110d9826111cb565b91506110e4836111cb565b9250826110f4576110f3611276565b5b828204905092915050565b600061110a826111cb565b9150611115836111cb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561114e5761114d611247565b5b828202905092915050565b6000611164826111cb565b915061116f836111cb565b92508282101561118257611181611247565b5b828203905092915050565b6000611198826111ab565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156112005780820151818401526020810190506111e5565b8381111561120f576000848401525b50505050565b6000600282049050600182168061122d57607f821691505b60208210811415611241576112406112a5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6112ee8161118d565b81146112f957600080fd5b50565b611305816111cb565b811461131057600080fd5b5056fea264697066735822122065ddd8a45f5630cf934b727981d0a852190cb574e0e87bf46ddbba3f5944fe5364736f6c63430008000033