0x608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb146102ad578063dac293b1146102dd578063dd62ed3e146102fb578063e14f08d51461032b578063f2fde38b1461033557610116565b806370a0823114610237578063715018a6146102675780638da5cb5b1461027157806395d89b411461028f57610116565b806318160ddd116100e957806318160ddd1461018f57806323b872dd146101ad578063313ce567146101dd5780635e5ef40a146101fb578063665a11ca1461021957610116565b8063018770201461011b57806303c7d8ee1461013757806306fdde0314610141578063095ea7b31461015f575b600080fd5b610135600480360381019061013091906110ce565b610351565b005b61013f61039d565b005b6101496103c2565b604051610156919061118b565b60405180910390f35b610179600480360381019061017491906111e3565b610454565b604051610186919061123e565b60405180910390f35b610197610477565b6040516101a49190611268565b60405180910390f35b6101c760048036038101906101c29190611283565b610481565b6040516101d4919061123e565b60405180910390f35b6101e56104b0565b6040516101f291906112f2565b60405180910390f35b6102036104b9565b604051610210919061123e565b60405180910390f35b6102216104cc565b60405161022e919061131c565b60405180910390f35b610251600480360381019061024c91906110ce565b6104f2565b60405161025e9190611268565b60405180910390f35b61026f61053a565b005b61027961054e565b604051610286919061131c565b60405180910390f35b610297610578565b6040516102a4919061118b565b60405180910390f35b6102c760048036038101906102c291906111e3565b61060a565b6040516102d4919061123e565b60405180910390f35b6102e561062d565b6040516102f29190611268565b60405180910390f35b61031560048036038101906103109190611337565b61063d565b6040516103229190611268565b60405180910390f35b6103336106c4565b005b61034f600480360381019061034a91906110ce565b6106d6565b005b61035961075c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6103a561075c565b6000600660146101000a81548160ff021916908315150217905550565b6060600380546103d1906113a6565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd906113a6565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f6107e3565b905061046c8185856107eb565b600191505092915050565b6000600254905090565b60008061048c6107e3565b90506104998582856107fd565b6104a4858585610891565b60019150509392505050565b60006012905090565b600660149054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61054261075c565b61054c6000610985565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610587906113a6565b80601f01602080910402602001604051908101604052809291908181526020018280546105b3906113a6565b80156106005780601f106105d557610100808354040283529160200191610600565b820191906000526020600020905b8154815290600101906020018083116105e357829003601f168201915b5050505050905090565b6000806106156107e3565b9050610622818585610891565b600191505092915050565b6b033b2e3c9fd0803ce800000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106cc61075c565b6106d461053a565b565b6106de61075c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107505760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610747919061131c565b60405180910390fd5b61075981610985565b50565b6107646107e3565b73ffffffffffffffffffffffffffffffffffffffff1661078261054e565b73ffffffffffffffffffffffffffffffffffffffff16146107e1576107a56107e3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107d8919061131c565b60405180910390fd5b565b600033905090565b6107f88383836001610a4b565b505050565b6000610809848461063d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088b578181101561087b578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610872939291906113d7565b60405180910390fd5b61088a84848484036000610a4b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109035760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108fa919061131c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109755760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161096c919061131c565b60405180910390fd5b610980838383610c22565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610abd5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ab4919061131c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b26919061131c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c1c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c139190611268565b60405180910390a35b50505050565b610c2d838383610e46565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d3a57610c8b61054e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610cf65750610cc761054e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c9061145a565b60405180910390fd5b610e41565b600660149054906101000a900460ff168015610d895750610d5961054e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610de35750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610e40576b033b2e3c9fd0803ce8000000610dfe836104f2565b1115610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e36906114ec565b60405180910390fd5b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e98578060026000828254610e8c919061153b565b92505081905550610f6b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f24578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610f1b939291906113d7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb45780600260008282540392505081905550611001565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105e9190611268565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061109b82611070565b9050919050565b6110ab81611090565b81146110b657600080fd5b50565b6000813590506110c8816110a2565b92915050565b6000602082840312156110e4576110e361106b565b5b60006110f2848285016110b9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561113557808201518184015260208101905061111a565b60008484015250505050565b6000601f19601f8301169050919050565b600061115d826110fb565b6111678185611106565b9350611177818560208601611117565b61118081611141565b840191505092915050565b600060208201905081810360008301526111a58184611152565b905092915050565b6000819050919050565b6111c0816111ad565b81146111cb57600080fd5b50565b6000813590506111dd816111b7565b92915050565b600080604083850312156111fa576111f961106b565b5b6000611208858286016110b9565b9250506020611219858286016111ce565b9150509250929050565b60008115159050919050565b61123881611223565b82525050565b6000602082019050611253600083018461122f565b92915050565b611262816111ad565b82525050565b600060208201905061127d6000830184611259565b92915050565b60008060006060848603121561129c5761129b61106b565b5b60006112aa868287016110b9565b93505060206112bb868287016110b9565b92505060406112cc868287016111ce565b9150509250925092565b600060ff82169050919050565b6112ec816112d6565b82525050565b600060208201905061130760008301846112e3565b92915050565b61131681611090565b82525050565b6000602082019050611331600083018461130d565b92915050565b6000806040838503121561134e5761134d61106b565b5b600061135c858286016110b9565b925050602061136d858286016110b9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113be57607f821691505b6020821081036113d1576113d0611377565b5b50919050565b60006060820190506113ec600083018661130d565b6113f96020830185611259565b6114066040830184611259565b949350505050565b7f54726164696e67206e6f74207965742073746172746564000000000000000000600082015250565b6000611444601783611106565b915061144f8261140e565b602082019050919050565b6000602082019050818103600083015261147381611437565b9050919050565b7f5472616e7366657220657863656564732074656d706f72617279206d6178696d60008201527f756d2077616c6c65742073697a65206c696d6974000000000000000000000000602082015250565b60006114d6603483611106565b91506114e18261147a565b604082019050919050565b60006020820190508181036000830152611505816114c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611546826111ad565b9150611551836111ad565b92508282019050808211156115695761156861150c565b5b9291505056fea26469706673582212202fa31ea350cff4b8207011670c87e8ed9bf83a92928a519ef9870ce7ac6b28ab64736f6c63430008140033
0x60806040526001600660146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50336040518060400160405280600981526020017f54696765726c696c7900000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f54696765726c696c7900000000000000000000000000000000000000000000008152508160039081620000ab919062000a33565b508060049081620000bd919062000a33565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001355760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200012c919062000b5f565b60405180910390fd5b62000146816200016c60201b60201c565b5062000166336c01431e0fae6d7217caa00000006200023260201b60201c565b62000d6c565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002a75760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200029e919062000b5f565b60405180910390fd5b620002bb60008383620002bf60201b60201c565b5050565b620002d28383836200051760201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620003f557620003396200074760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620003ad57506200037e6200074760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620003ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e69062000bdd565b60405180910390fd5b62000512565b600660149054906101000a900460ff1680156200044d57506200041d6200074760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015620004a85750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1562000511576b033b2e3c9fd0803ce8000000620004cc836200077160201b60201c565b111562000510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005079062000c75565b60405180910390fd5b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200056d57806002600082825462000560919062000cc6565b9250508190555062000643565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620005fc578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620005f39392919062000d12565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200068e5780600260008282540392505081905550620006db565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200073a919062000d4f565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200083b57607f821691505b602082108103620008515762000850620007f3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200087c565b620008c786836200087c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009146200090e6200090884620008df565b620008e9565b620008df565b9050919050565b6000819050919050565b6200093083620008f3565b620009486200093f826200091b565b84845462000889565b825550505050565b600090565b6200095f62000950565b6200096c81848462000925565b505050565b5b8181101562000994576200098860008262000955565b60018101905062000972565b5050565b601f821115620009e357620009ad8162000857565b620009b8846200086c565b81016020851015620009c8578190505b620009e0620009d7856200086c565b83018262000971565b50505b505050565b600082821c905092915050565b600062000a0860001984600802620009e8565b1980831691505092915050565b600062000a238383620009f5565b9150826002028217905092915050565b62000a3e82620007b9565b67ffffffffffffffff81111562000a5a5762000a59620007c4565b5b62000a66825462000822565b62000a7382828562000998565b600060209050601f83116001811462000aab576000841562000a96578287015190505b62000aa2858262000a15565b86555062000b12565b601f19841662000abb8662000857565b60005b8281101562000ae55784890151825560018201915060208501945060208101905062000abe565b8683101562000b05578489015162000b01601f891682620009f5565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b478262000b1a565b9050919050565b62000b598162000b3a565b82525050565b600060208201905062000b76600083018462000b4e565b92915050565b600082825260208201905092915050565b7f54726164696e67206e6f74207965742073746172746564000000000000000000600082015250565b600062000bc560178362000b7c565b915062000bd28262000b8d565b602082019050919050565b6000602082019050818103600083015262000bf88162000bb6565b9050919050565b7f5472616e7366657220657863656564732074656d706f72617279206d6178696d60008201527f756d2077616c6c65742073697a65206c696d6974000000000000000000000000602082015250565b600062000c5d60348362000b7c565b915062000c6a8262000bff565b604082019050919050565b6000602082019050818103600083015262000c908162000c4e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cd382620008df565b915062000ce083620008df565b925082820190508082111562000cfb5762000cfa62000c97565b5b92915050565b62000d0c81620008df565b82525050565b600060608201905062000d29600083018662000b4e565b62000d38602083018562000d01565b62000d47604083018462000d01565b949350505050565b600060208201905062000d66600083018462000d01565b92915050565b6115a58062000d7c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb146102ad578063dac293b1146102dd578063dd62ed3e146102fb578063e14f08d51461032b578063f2fde38b1461033557610116565b806370a0823114610237578063715018a6146102675780638da5cb5b1461027157806395d89b411461028f57610116565b806318160ddd116100e957806318160ddd1461018f57806323b872dd146101ad578063313ce567146101dd5780635e5ef40a146101fb578063665a11ca1461021957610116565b8063018770201461011b57806303c7d8ee1461013757806306fdde0314610141578063095ea7b31461015f575b600080fd5b610135600480360381019061013091906110ce565b610351565b005b61013f61039d565b005b6101496103c2565b604051610156919061118b565b60405180910390f35b610179600480360381019061017491906111e3565b610454565b604051610186919061123e565b60405180910390f35b610197610477565b6040516101a49190611268565b60405180910390f35b6101c760048036038101906101c29190611283565b610481565b6040516101d4919061123e565b60405180910390f35b6101e56104b0565b6040516101f291906112f2565b60405180910390f35b6102036104b9565b604051610210919061123e565b60405180910390f35b6102216104cc565b60405161022e919061131c565b60405180910390f35b610251600480360381019061024c91906110ce565b6104f2565b60405161025e9190611268565b60405180910390f35b61026f61053a565b005b61027961054e565b604051610286919061131c565b60405180910390f35b610297610578565b6040516102a4919061118b565b60405180910390f35b6102c760048036038101906102c291906111e3565b61060a565b6040516102d4919061123e565b60405180910390f35b6102e561062d565b6040516102f29190611268565b60405180910390f35b61031560048036038101906103109190611337565b61063d565b6040516103229190611268565b60405180910390f35b6103336106c4565b005b61034f600480360381019061034a91906110ce565b6106d6565b005b61035961075c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6103a561075c565b6000600660146101000a81548160ff021916908315150217905550565b6060600380546103d1906113a6565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd906113a6565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f6107e3565b905061046c8185856107eb565b600191505092915050565b6000600254905090565b60008061048c6107e3565b90506104998582856107fd565b6104a4858585610891565b60019150509392505050565b60006012905090565b600660149054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61054261075c565b61054c6000610985565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610587906113a6565b80601f01602080910402602001604051908101604052809291908181526020018280546105b3906113a6565b80156106005780601f106105d557610100808354040283529160200191610600565b820191906000526020600020905b8154815290600101906020018083116105e357829003601f168201915b5050505050905090565b6000806106156107e3565b9050610622818585610891565b600191505092915050565b6b033b2e3c9fd0803ce800000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6106cc61075c565b6106d461053a565b565b6106de61075c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107505760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610747919061131c565b60405180910390fd5b61075981610985565b50565b6107646107e3565b73ffffffffffffffffffffffffffffffffffffffff1661078261054e565b73ffffffffffffffffffffffffffffffffffffffff16146107e1576107a56107e3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107d8919061131c565b60405180910390fd5b565b600033905090565b6107f88383836001610a4b565b505050565b6000610809848461063d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461088b578181101561087b578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610872939291906113d7565b60405180910390fd5b61088a84848484036000610a4b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109035760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108fa919061131c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109755760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161096c919061131c565b60405180910390fd5b610980838383610c22565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610abd5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ab4919061131c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b2f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b26919061131c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c1c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c139190611268565b60405180910390a35b50505050565b610c2d838383610e46565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d3a57610c8b61054e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610cf65750610cc761054e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c9061145a565b60405180910390fd5b610e41565b600660149054906101000a900460ff168015610d895750610d5961054e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610de35750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15610e40576b033b2e3c9fd0803ce8000000610dfe836104f2565b1115610e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e36906114ec565b60405180910390fd5b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e98578060026000828254610e8c919061153b565b92505081905550610f6b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f24578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610f1b939291906113d7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb45780600260008282540392505081905550611001565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161105e9190611268565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061109b82611070565b9050919050565b6110ab81611090565b81146110b657600080fd5b50565b6000813590506110c8816110a2565b92915050565b6000602082840312156110e4576110e361106b565b5b60006110f2848285016110b9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561113557808201518184015260208101905061111a565b60008484015250505050565b6000601f19601f8301169050919050565b600061115d826110fb565b6111678185611106565b9350611177818560208601611117565b61118081611141565b840191505092915050565b600060208201905081810360008301526111a58184611152565b905092915050565b6000819050919050565b6111c0816111ad565b81146111cb57600080fd5b50565b6000813590506111dd816111b7565b92915050565b600080604083850312156111fa576111f961106b565b5b6000611208858286016110b9565b9250506020611219858286016111ce565b9150509250929050565b60008115159050919050565b61123881611223565b82525050565b6000602082019050611253600083018461122f565b92915050565b611262816111ad565b82525050565b600060208201905061127d6000830184611259565b92915050565b60008060006060848603121561129c5761129b61106b565b5b60006112aa868287016110b9565b93505060206112bb868287016110b9565b92505060406112cc868287016111ce565b9150509250925092565b600060ff82169050919050565b6112ec816112d6565b82525050565b600060208201905061130760008301846112e3565b92915050565b61131681611090565b82525050565b6000602082019050611331600083018461130d565b92915050565b6000806040838503121561134e5761134d61106b565b5b600061135c858286016110b9565b925050602061136d858286016110b9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113be57607f821691505b6020821081036113d1576113d0611377565b5b50919050565b60006060820190506113ec600083018661130d565b6113f96020830185611259565b6114066040830184611259565b949350505050565b7f54726164696e67206e6f74207965742073746172746564000000000000000000600082015250565b6000611444601783611106565b915061144f8261140e565b602082019050919050565b6000602082019050818103600083015261147381611437565b9050919050565b7f5472616e7366657220657863656564732074656d706f72617279206d6178696d60008201527f756d2077616c6c65742073697a65206c696d6974000000000000000000000000602082015250565b60006114d6603483611106565b91506114e18261147a565b604082019050919050565b60006020820190508181036000830152611505816114c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611546826111ad565b9150611551836111ad565b92508282019050808211156115695761156861150c565b5b9291505056fea26469706673582212202fa31ea350cff4b8207011670c87e8ed9bf83a92928a519ef9870ce7ac6b28ab64736f6c63430008140033