60806040523480156200001157600080fd5b506040516200198e3803806200198e83398181016040528101906200003791906200056b565b838381600390816200004a91906200085c565b5080600490816200005c91906200085c565b5050506200007182826200007b60201b60201c565b5050505062000a46565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620000f05760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620000e7919062000954565b60405180910390fd5b62000104600083836200010860201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200015e578060026000828254620001519190620009a0565b9250508190555062000234565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620001ed578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620001e493929190620009ec565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200027f5780600260008282540392505081905550620002cc565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032b919062000a29565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003a18262000356565b810181811067ffffffffffffffff82111715620003c357620003c262000367565b5b80604052505050565b6000620003d862000338565b9050620003e6828262000396565b919050565b600067ffffffffffffffff82111562000409576200040862000367565b5b620004148262000356565b9050602081019050919050565b60005b838110156200044157808201518184015260208101905062000424565b60008484015250505050565b6000620004646200045e84620003eb565b620003cc565b90508281526020810184848401111562000483576200048262000351565b5b6200049084828562000421565b509392505050565b600082601f830112620004b057620004af6200034c565b5b8151620004c28482602086016200044d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004f882620004cb565b9050919050565b6200050a81620004eb565b81146200051657600080fd5b50565b6000815190506200052a81620004ff565b92915050565b6000819050919050565b620005458162000530565b81146200055157600080fd5b50565b60008151905062000565816200053a565b92915050565b6000806000806080858703121562000588576200058762000342565b5b600085015167ffffffffffffffff811115620005a957620005a862000347565b5b620005b78782880162000498565b945050602085015167ffffffffffffffff811115620005db57620005da62000347565b5b620005e98782880162000498565b9350506040620005fc8782880162000519565b92505060606200060f8782880162000554565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066e57607f821691505b60208210810362000684576200068362000626565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006af565b620006fa8683620006af565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200073d62000737620007318462000530565b62000712565b62000530565b9050919050565b6000819050919050565b62000759836200071c565b62000771620007688262000744565b848454620006bc565b825550505050565b600090565b6200078862000779565b620007958184846200074e565b505050565b5b81811015620007bd57620007b16000826200077e565b6001810190506200079b565b5050565b601f8211156200080c57620007d6816200068a565b620007e1846200069f565b81016020851015620007f1578190505b6200080962000800856200069f565b8301826200079a565b50505b505050565b600082821c905092915050565b6000620008316000198460080262000811565b1980831691505092915050565b60006200084c83836200081e565b9150826002028217905092915050565b62000867826200061b565b67ffffffffffffffff81111562000883576200088262000367565b5b6200088f825462000655565b6200089c828285620007c1565b600060209050601f831160018114620008d45760008415620008bf578287015190505b620008cb85826200083e565b8655506200093b565b601f198416620008e4866200068a565b60005b828110156200090e57848901518255600182019150602085019450602081019050620008e7565b868310156200092e57848901516200092a601f8916826200081e565b8355505b6001600288020188555050505b505050505050565b6200094e81620004eb565b82525050565b60006020820190506200096b600083018462000943565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009ad8262000530565b9150620009ba8362000530565b9250828201905080821115620009d557620009d462000971565b5b92915050565b620009e68162000530565b82525050565b600060608201905062000a03600083018662000943565b62000a126020830185620009db565b62000a216040830184620009db565b949350505050565b600060208201905062000a406000830184620009db565b92915050565b610f388062000a566000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461015d57806395d89b411461018d578063a0712d68146101ab578063a9059cbb146101c7578063dd62ed3e146101f75761009e565b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100f157806323b872dd1461010f578063313ce5671461013f575b600080fd5b6100ab610227565b6040516100b89190610b5f565b60405180910390f35b6100db60048036038101906100d69190610c1a565b6102b9565b6040516100e89190610c75565b60405180910390f35b6100f96102dc565b6040516101069190610c9f565b60405180910390f35b61012960048036038101906101249190610cba565b6102e6565b6040516101369190610c75565b60405180910390f35b610147610315565b6040516101549190610d29565b60405180910390f35b61017760048036038101906101729190610d44565b61031e565b6040516101849190610c9f565b60405180910390f35b610195610366565b6040516101a29190610b5f565b60405180910390f35b6101c560048036038101906101c09190610d71565b6103f8565b005b6101e160048036038101906101dc9190610c1a565b610405565b6040516101ee9190610c75565b60405180910390f35b610211600480360381019061020c9190610d9e565b610428565b60405161021e9190610c9f565b60405180910390f35b60606003805461023690610e0d565b80601f016020809104026020016040519081016040528092919081815260200182805461026290610e0d565b80156102af5780601f10610284576101008083540402835291602001916102af565b820191906000526020600020905b81548152906001019060200180831161029257829003601f168201915b5050505050905090565b6000806102c46104af565b90506102d18185856104b7565b600191505092915050565b6000600254905090565b6000806102f16104af565b90506102fe8582856104c9565b61030985858561055d565b60019150509392505050565b60006012905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461037590610e0d565b80601f01602080910402602001604051908101604052809291908181526020018280546103a190610e0d565b80156103ee5780601f106103c3576101008083540402835291602001916103ee565b820191906000526020600020905b8154815290600101906020018083116103d157829003601f168201915b5050505050905090565b6104023382610651565b50565b6000806104106104af565b905061041d81858561055d565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b6104c483838360016106d3565b505050565b60006104d58484610428565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105575781811015610547578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161053e93929190610e4d565b60405180910390fd5b610556848484840360006106d3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105cf5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105c69190610e84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106415760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106389190610e84565b60405180910390fd5b61064c8383836108aa565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106c35760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106ba9190610e84565b60405180910390fd5b6106cf600083836108aa565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107455760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161073c9190610e84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107b75760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107ae9190610e84565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156108a4578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161089b9190610c9f565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108fc5780600260008282546108f09190610ece565b925050819055506109cf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610988578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161097f93929190610e4d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a185780600260008282540392505081905550610a65565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ac29190610c9f565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b09578082015181840152602081019050610aee565b60008484015250505050565b6000601f19601f8301169050919050565b6000610b3182610acf565b610b3b8185610ada565b9350610b4b818560208601610aeb565b610b5481610b15565b840191505092915050565b60006020820190508181036000830152610b798184610b26565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bb182610b86565b9050919050565b610bc181610ba6565b8114610bcc57600080fd5b50565b600081359050610bde81610bb8565b92915050565b6000819050919050565b610bf781610be4565b8114610c0257600080fd5b50565b600081359050610c1481610bee565b92915050565b60008060408385031215610c3157610c30610b81565b5b6000610c3f85828601610bcf565b9250506020610c5085828601610c05565b9150509250929050565b60008115159050919050565b610c6f81610c5a565b82525050565b6000602082019050610c8a6000830184610c66565b92915050565b610c9981610be4565b82525050565b6000602082019050610cb46000830184610c90565b92915050565b600080600060608486031215610cd357610cd2610b81565b5b6000610ce186828701610bcf565b9350506020610cf286828701610bcf565b9250506040610d0386828701610c05565b9150509250925092565b600060ff82169050919050565b610d2381610d0d565b82525050565b6000602082019050610d3e6000830184610d1a565b92915050565b600060208284031215610d5a57610d59610b81565b5b6000610d6884828501610bcf565b91505092915050565b600060208284031215610d8757610d86610b81565b5b6000610d9584828501610c05565b91505092915050565b60008060408385031215610db557610db4610b81565b5b6000610dc385828601610bcf565b9250506020610dd485828601610bcf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e2557607f821691505b602082108103610e3857610e37610dde565b5b50919050565b610e4781610ba6565b82525050565b6000606082019050610e626000830186610e3e565b610e6f6020830185610c90565b610e7c6040830184610c90565b949350505050565b6000602082019050610e996000830184610e3e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ed982610be4565b9150610ee483610be4565b9250828201905080821115610efc57610efb610e9f565b5b9291505056fea264697066735822122064c2193301547ca982ddceff6347b63b0a38e2b426e3fa8aec42d628abeb547f64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000005452e6abbc7bcb9e0907a3f8f24434cbaf438ba4000000000000000000000000000000000000000000084595161401484a00000000000000000000000000000000000000000000000000000000000000000000066d6f636b4c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066d6f636b4c700000000000000000000000000000000000000000000000000000