0x60806040523480156200001157600080fd5b506040516200190b3803806200190b833981810160405281019062000037919062000325565b6040518060400160405280600581526020017f42726163650000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42524300000000000000000000000000000000000000000000000000000000008152506b17639f8fb1cd7f2632f400008260049081620000c19190620005d1565b508160059081620000d39190620005d1565b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012781336200013160201b60201c565b50505050620007d3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bb9062000719565b60405180910390fd5b620001d860008284620002b660201b60201c565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200022991906200076a565b92505081905550816000808282546200024391906200076a565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002aa9190620007b6565b60405180910390a35050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002ed82620002c0565b9050919050565b620002ff81620002e0565b81146200030b57600080fd5b50565b6000815190506200031f81620002f4565b92915050565b6000602082840312156200033e576200033d620002bb565b5b60006200034e848285016200030e565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003d957607f821691505b602082108103620003ef57620003ee62000391565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041a565b6200046586836200041a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b2620004ac620004a6846200047d565b62000487565b6200047d565b9050919050565b6000819050919050565b620004ce8362000491565b620004e6620004dd82620004b9565b84845462000427565b825550505050565b600090565b620004fd620004ee565b6200050a818484620004c3565b505050565b5b81811015620005325762000526600082620004f3565b60018101905062000510565b5050565b601f82111562000581576200054b81620003f5565b62000556846200040a565b8101602085101562000566578190505b6200057e62000575856200040a565b8301826200050f565b50505b505050565b600082821c905092915050565b6000620005a66000198460080262000586565b1980831691505092915050565b6000620005c1838362000593565b9150826002028217905092915050565b620005dc8262000357565b67ffffffffffffffff811115620005f857620005f762000362565b5b620006048254620003c0565b6200061182828562000536565b600060209050601f83116001811462000649576000841562000634578287015190505b620006408582620005b3565b865550620006b0565b601f1984166200065986620003f5565b60005b8281101562000683578489015182556001820191506020850194506020810190506200065c565b86831015620006a357848901516200069f601f89168262000593565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b600062000701600d83620006b8565b91506200070e82620006c9565b602082019050919050565b600060208201905081810360008301526200073481620006f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000777826200047d565b915062000784836200047d565b92508282019050808211156200079f576200079e6200073b565b5b92915050565b620007b0816200047d565b82525050565b6000602082019050620007cd6000830184620007a5565b92915050565b61112880620007e36000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a082311461014057806394bf804d1461017057806395d89b411461018c5780639dc29fac146101aa578063a9059cbb146101c6578063dd62ed3e146101e2576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100e857806323b872dd14610106578063313ce56714610122575b600080fd5b6100b6610212565b6040516100c39190610c92565b60405180910390f35b6100e660048036038101906100e19190610d4d565b6102a4565b005b6100f06102b3565b6040516100fd9190610d9c565b60405180910390f35b610120600480360381019061011b9190610db7565b6102bc565b005b61012a61057e565b6040516101379190610d9c565b60405180910390f35b61015a60048036038101906101559190610e0a565b610587565b6040516101679190610d9c565b60405180910390f35b61018a60048036038101906101859190610e37565b6105d0565b005b610194610744565b6040516101a19190610c92565b60405180910390f35b6101c460048036038101906101bf9190610d4d565b6107d6565b005b6101e060048036038101906101db9190610d4d565b6108e4565b005b6101fc60048036038101906101f79190610e77565b610a8b565b6040516102099190610d9c565b60405180910390f35b60606004805461022190610ee6565b80601f016020809104026020016040519081016040528092919081815260200182805461024d90610ee6565b801561029a5780601f1061026f5761010080835404028352916020019161029a565b820191906000526020600020905b81548152906001019060200180831161027d57829003601f168201915b5050505050905090565b6102af338383610b12565b5050565b60008054905090565b8281806102c883610587565b1015610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030090610f63565b60405180910390fd5b610314858585610bfd565b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ca90610fcf565b60405180910390fd5b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461045f919061101e565b9250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104b5919061101e565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461050b9190611052565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161056f9190610d9c565b60405180910390a35050505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610660576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610657906110d2565b60405180910390fd5b61066c60008284610bfd565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106bb9190611052565b92505081905550816000808282546106d39190611052565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107389190610d9c565b60405180910390a35050565b60606005805461075390610ee6565b80601f016020809104026020016040519081016040528092919081815260200182805461077f90610ee6565b80156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d906110d2565b60405180910390fd5b61087282600083610bfd565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108c1919061101e565b92505081905550806000808282546108d9919061101e565b925050819055505050565b3381806108f083610587565b1015610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890610f63565b60405180910390fd5b61093c338585610bfd565b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461098b919061101e565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109dd9190611052565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a7d9190610d9c565b60405180910390a350505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610bf09190610d9c565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c3c578082015181840152602081019050610c21565b60008484015250505050565b6000601f19601f8301169050919050565b6000610c6482610c02565b610c6e8185610c0d565b9350610c7e818560208601610c1e565b610c8781610c48565b840191505092915050565b60006020820190508181036000830152610cac8184610c59565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ce482610cb9565b9050919050565b610cf481610cd9565b8114610cff57600080fd5b50565b600081359050610d1181610ceb565b92915050565b6000819050919050565b610d2a81610d17565b8114610d3557600080fd5b50565b600081359050610d4781610d21565b92915050565b60008060408385031215610d6457610d63610cb4565b5b6000610d7285828601610d02565b9250506020610d8385828601610d38565b9150509250929050565b610d9681610d17565b82525050565b6000602082019050610db16000830184610d8d565b92915050565b600080600060608486031215610dd057610dcf610cb4565b5b6000610dde86828701610d02565b9350506020610def86828701610d02565b9250506040610e0086828701610d38565b9150509250925092565b600060208284031215610e2057610e1f610cb4565b5b6000610e2e84828501610d02565b91505092915050565b60008060408385031215610e4e57610e4d610cb4565b5b6000610e5c85828601610d38565b9250506020610e6d85828601610d02565b9150509250929050565b60008060408385031215610e8e57610e8d610cb4565b5b6000610e9c85828601610d02565b9250506020610ead85828601610d02565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610efe57607f821691505b602082108103610f1157610f10610eb7565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b6000610f4d601283610c0d565b9150610f5882610f17565b602082019050919050565b60006020820190508181036000830152610f7c81610f40565b9050919050565b7f636865636b20616c6c6f77616e63652100000000000000000000000000000000600082015250565b6000610fb9601083610c0d565b9150610fc482610f83565b602082019050919050565b60006020820190508181036000830152610fe881610fac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061102982610d17565b915061103483610d17565b925082820390508181111561104c5761104b610fef565b5b92915050565b600061105d82610d17565b915061106883610d17565b92508282019050808211156110805761107f610fef565b5b92915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b60006110bc600d83610c0d565b91506110c782611086565b602082019050919050565b600060208201905081810360008301526110eb816110af565b905091905056fea2646970667358221220da0757e507ae157b476ce79e7a2b93a18b6990056e7ef1151fd1c475b0c1341564736f6c6343000812003300000000000000000000000067337f47b69ba99e328a79e645adf9b79d60a7b6