60806040523480156200001157600080fd5b50604051620018a8380380620018a8833981810160405281019062000037919062000321565b6040518060400160405280600981526020017f52656c6963436f696e00000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f52454c49430000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb9291906200025a565b508060049080519060200190620000d49291906200025a565b505050620000e93382620000f060201b60201c565b5062000513565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015a9062000385565b60405180910390fd5b62000177600083836200025560201b60201c565b80600260008282546200018b9190620003d5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001e29190620003d5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002499190620003a7565b60405180910390a35050565b505050565b82805462000268906200043c565b90600052602060002090601f0160209004810192826200028c5760008555620002d8565b82601f10620002a757805160ff1916838001178555620002d8565b82800160010185558215620002d8579182015b82811115620002d7578251825591602001919060010190620002ba565b5b509050620002e79190620002eb565b5090565b5b8082111562000306576000816000905550600101620002ec565b5090565b6000815190506200031b81620004f9565b92915050565b6000602082840312156200033457600080fd5b600062000344848285016200030a565b91505092915050565b60006200035c601f83620003c4565b91506200036982620004d0565b602082019050919050565b6200037f8162000432565b82525050565b60006020820190508181036000830152620003a0816200034d565b9050919050565b6000602082019050620003be600083018462000374565b92915050565b600082825260208201905092915050565b6000620003e28262000432565b9150620003ef8362000432565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000427576200042662000472565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200045557607f821691505b602082108114156200046c576200046b620004a1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620005048162000432565b81146200051057600080fd5b50565b61138580620005236000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610e25565b60405180910390f35b6100e660048036038101906100e19190610c73565b610308565b6040516100f39190610e0a565b60405180910390f35b610104610326565b6040516101119190610f27565b60405180910390f35b610134600480360381019061012f9190610c24565b610330565b6040516101419190610e0a565b60405180910390f35b610152610428565b60405161015f9190610f42565b60405180910390f35b610182600480360381019061017d9190610c73565b610431565b60405161018f9190610e0a565b60405180910390f35b6101b260048036038101906101ad9190610bbf565b6104dd565b6040516101bf9190610f27565b60405180910390f35b6101d0610525565b6040516101dd9190610e25565b60405180910390f35b61020060048036038101906101fb9190610c73565b6105b7565b60405161020d9190610e0a565b60405180910390f35b610230600480360381019061022b9190610c73565b6106a2565b60405161023d9190610e0a565b60405180910390f35b610260600480360381019061025b9190610be8565b6106c0565b60405161026d9190610f27565b60405180910390f35b60606003805461028590611057565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611057565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610747565b848461074f565b6001905092915050565b6000600254905090565b600061033d84848461091a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90610ea7565b60405180910390fd5b61041c85610414610747565b85840361074f565b60019150509392505050565b60006012905090565b60006104d361043e610747565b84846001600061044c610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104ce9190610f79565b61074f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053490611057565b80601f016020809104026020016040519081016040528092919081815260200182805461056090611057565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b600080600160006105c6610747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90610f07565b60405180910390fd5b61069761068e610747565b8585840361074f565b600191505092915050565b60006106b66106af610747565b848461091a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b690610ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690610e67565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161090d9190610f27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190610ec7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190610e47565b60405180910390fd5b610a05838383610b90565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290610e87565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b1e9190610f79565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b829190610f27565b60405180910390a350505050565b505050565b600081359050610ba481611321565b92915050565b600081359050610bb981611338565b92915050565b600060208284031215610bd157600080fd5b6000610bdf84828501610b95565b91505092915050565b60008060408385031215610bfb57600080fd5b6000610c0985828601610b95565b9250506020610c1a85828601610b95565b9150509250929050565b600080600060608486031215610c3957600080fd5b6000610c4786828701610b95565b9350506020610c5886828701610b95565b9250506040610c6986828701610baa565b9150509250925092565b60008060408385031215610c8657600080fd5b6000610c9485828601610b95565b9250506020610ca585828601610baa565b9150509250929050565b610cb881610fe1565b82525050565b6000610cc982610f5d565b610cd38185610f68565b9350610ce3818560208601611024565b610cec816110e7565b840191505092915050565b6000610d04602383610f68565b9150610d0f826110f8565b604082019050919050565b6000610d27602283610f68565b9150610d3282611147565b604082019050919050565b6000610d4a602683610f68565b9150610d5582611196565b604082019050919050565b6000610d6d602883610f68565b9150610d78826111e5565b604082019050919050565b6000610d90602583610f68565b9150610d9b82611234565b604082019050919050565b6000610db3602483610f68565b9150610dbe82611283565b604082019050919050565b6000610dd6602583610f68565b9150610de1826112d2565b604082019050919050565b610df58161100d565b82525050565b610e0481611017565b82525050565b6000602082019050610e1f6000830184610caf565b92915050565b60006020820190508181036000830152610e3f8184610cbe565b905092915050565b60006020820190508181036000830152610e6081610cf7565b9050919050565b60006020820190508181036000830152610e8081610d1a565b9050919050565b60006020820190508181036000830152610ea081610d3d565b9050919050565b60006020820190508181036000830152610ec081610d60565b9050919050565b60006020820190508181036000830152610ee081610d83565b9050919050565b60006020820190508181036000830152610f0081610da6565b9050919050565b60006020820190508181036000830152610f2081610dc9565b9050919050565b6000602082019050610f3c6000830184610dec565b92915050565b6000602082019050610f576000830184610dfb565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610f848261100d565b9150610f8f8361100d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fc457610fc3611089565b5b828201905092915050565b6000610fda82610fed565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611042578082015181840152602081019050611027565b83811115611051576000848401525b50505050565b6000600282049050600182168061106f57607f821691505b60208210811415611083576110826110b8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61132a81610fcf565b811461133557600080fd5b50565b6113418161100d565b811461134c57600080fd5b5056fea264697066735822122040fc337d514444c6a7559b7afbb5d096f069df697baa365fdc9ac1789caa9fdb64736f6c6343000801003300000000000000000000000000000000000000000000152d02c7e14af6800000