0x608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806377d6110e1161008a578063933757c411610064578063933757c414610210578063f21f537d14610240578063f2fde38b1461025e578063fc0c546a1461027a576100e8565b806377d6110e146101a65780637ecebe00146101c25780638da5cb5b146101f2576100e8565b80633fd8b02f116100c65780633fd8b02f146101445780636b0509b114610162578063715018a614610180578063779972da1461018a576100e8565b806320606b70146100ec5780632e1a7d4d1461010a5780633644e51514610126575b5f80fd5b6100f4610298565b6040516101019190610acf565b60405180910390f35b610124600480360381019061011f9190610b1f565b6102bc565b005b61012e6103b5565b60405161013b9190610acf565b60405180910390f35b61014c6103bb565b6040516101599190610b59565b60405180910390f35b61016a6103c1565b6040516101779190610acf565b60405180910390f35b6101886103e9565b005b6101a4600480360381019061019f9190610b1f565b6103fc565b005b6101c060048036038101906101bb9190610c2c565b610466565b005b6101dc60048036038101906101d79190610ca3565b6107d5565b6040516101e99190610b59565b60405180910390f35b6101fa6107ea565b6040516102079190610cdd565b60405180910390f35b61022a60048036038101906102259190610cf6565b610811565b6040516102379190610acf565b60405180910390f35b6102486108b9565b6040516102559190610b59565b60405180910390f35b61027860048036038101906102739190610ca3565b6108bf565b005b610282610943565b60405161028f9190610da1565b60405180910390f35b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6102c4610968565b426002546003546102d59190610de7565b11610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90610e74565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610371929190610e92565b6020604051808303815f875af115801561038d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b19190610eee565b5050565b60015481565b60025481565b6040516020016103d090610f93565b6040516020818303038152906040528051906020012081565b6103f1610968565b6103fa5f6109ef565b565b610404610968565b426002546003546104159190610de7565b11610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c90610e74565b60405180910390fd5b806002819055504260038190555050565b8360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c19190610cdd565b602060405180830381865afa1580156104dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105009190610fbb565b1015610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611030565b60405180910390fd5b5f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61058e868884610811565b9050600160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105dd9190610de7565b925050819055505f6001828787876040515f8152602001604052604051610607949392919061105d565b6020604051602081039080840390855afa158015610627573d5f803e3d5ffd5b50505060206040510351905061063b6107ea565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f906110ea565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896040518363ffffffff1660e01b8152600401610704929190610e92565b6020604051808303815f875af1158015610720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107449190610eee565b508773ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683896040516107c39190610b59565b60405180910390a35050505050505050565b6005602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015460405160200161082490610f93565b6040516020818303038152906040528051906020012060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858786604051602001610873959493929190611108565b6040516020818303038152906040528051906020012060405160200161089a9291906111c3565b6040516020818303038152906040528051906020012090509392505050565b60035481565b6108c7610968565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610937575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161092e9190610cdd565b60405180910390fd5b610940816109ef565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610970610ab0565b73ffffffffffffffffffffffffffffffffffffffff1661098e6107ea565b73ffffffffffffffffffffffffffffffffffffffff16146109ed576109b1610ab0565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016109e49190610cdd565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b610ac981610ab7565b82525050565b5f602082019050610ae25f830184610ac0565b92915050565b5f80fd5b5f819050919050565b610afe81610aec565b8114610b08575f80fd5b50565b5f81359050610b1981610af5565b92915050565b5f60208284031215610b3457610b33610ae8565b5b5f610b4184828501610b0b565b91505092915050565b610b5381610aec565b82525050565b5f602082019050610b6c5f830184610b4a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b9b82610b72565b9050919050565b610bab81610b91565b8114610bb5575f80fd5b50565b5f81359050610bc681610ba2565b92915050565b5f60ff82169050919050565b610be181610bcc565b8114610beb575f80fd5b50565b5f81359050610bfc81610bd8565b92915050565b610c0b81610ab7565b8114610c15575f80fd5b50565b5f81359050610c2681610c02565b92915050565b5f805f805f60a08688031215610c4557610c44610ae8565b5b5f610c5288828901610bb8565b9550506020610c6388828901610b0b565b9450506040610c7488828901610bee565b9350506060610c8588828901610c18565b9250506080610c9688828901610c18565b9150509295509295909350565b5f60208284031215610cb857610cb7610ae8565b5b5f610cc584828501610bb8565b91505092915050565b610cd781610b91565b82525050565b5f602082019050610cf05f830184610cce565b92915050565b5f805f60608486031215610d0d57610d0c610ae8565b5b5f610d1a86828701610b0b565b9350506020610d2b86828701610bb8565b9250506040610d3c86828701610b0b565b9150509250925092565b5f819050919050565b5f610d69610d64610d5f84610b72565b610d46565b610b72565b9050919050565b5f610d7a82610d4f565b9050919050565b5f610d8b82610d70565b9050919050565b610d9b81610d81565b82525050565b5f602082019050610db45f830184610d92565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610df182610aec565b9150610dfc83610aec565b9250828201905080821115610e1457610e13610dba565b5b92915050565b5f82825260208201905092915050565b7f4c6f636b656400000000000000000000000000000000000000000000000000005f82015250565b5f610e5e600683610e1a565b9150610e6982610e2a565b602082019050919050565b5f6020820190508181035f830152610e8b81610e52565b9050919050565b5f604082019050610ea55f830185610cce565b610eb26020830184610b4a565b9392505050565b5f8115159050919050565b610ecd81610eb9565b8114610ed7575f80fd5b50565b5f81519050610ee881610ec4565b92915050565b5f60208284031215610f0357610f02610ae8565b5b5f610f1084828501610eda565b91505092915050565b5f81905092915050565b7f436c61696d286164647265737320746f6b656e2c6164647265737320746f2c755f8201527f696e7432353620616d6f756e742c75696e74323536206e6f6e63652900000000602082015250565b5f610f7d603c83610f19565b9150610f8882610f23565b603c82019050919050565b5f610f9d82610f71565b9150819050919050565b5f81519050610fb581610af5565b92915050565b5f60208284031215610fd057610fcf610ae8565b5b5f610fdd84828501610fa7565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61101a601483610e1a565b915061102582610fe6565b602082019050919050565b5f6020820190508181035f8301526110478161100e565b9050919050565b61105781610bcc565b82525050565b5f6080820190506110705f830187610ac0565b61107d602083018661104e565b61108a6040830185610ac0565b6110976060830184610ac0565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6110d4601183610e1a565b91506110df826110a0565b602082019050919050565b5f6020820190508181035f830152611101816110c8565b9050919050565b5f60a08201905061111b5f830188610ac0565b6111286020830187610cce565b6111356040830186610cce565b6111426060830185610b4a565b61114f6080830184610b4a565b9695505050505050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61118d600283610f19565b915061119882611159565b600282019050919050565b5f819050919050565b6111bd6111b882610ab7565b6111a3565b82525050565b5f6111cd82611181565b91506111d982856111ac565b6020820191506111e982846111ac565b602082019150819050939250505056fea2646970667358221220255fdc79086a39f4d8a5aca5e801a2a441245b744338e3df57fc2dcfedfcf77564736f6c63430008180033
0x60806040526202a30060025534801562000017575f80fd5b50604051620016173803806200161783398181016040528101906200003d9190620002ef565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b1575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a8919062000330565b60405180910390fd5b620000c281620001c960201b60201c565b508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f469050426003819055507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fc12ea2afe09a0dd3232f845a5913b7661ec60e91425606242653706339fcd5536040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001620001a59594939291906200037f565b604051602081830303815290604052805190602001206001819055505050620003da565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002b9826200028e565b9050919050565b620002cb81620002ad565b8114620002d6575f80fd5b50565b5f81519050620002e981620002c0565b92915050565b5f602082840312156200030757620003066200028a565b5b5f6200031684828501620002d9565b91505092915050565b6200032a81620002ad565b82525050565b5f602082019050620003455f8301846200031f565b92915050565b5f819050919050565b6200035f816200034b565b82525050565b5f819050919050565b620003798162000365565b82525050565b5f60a082019050620003945f83018862000354565b620003a3602083018762000354565b620003b2604083018662000354565b620003c160608301856200036e565b620003d060808301846200031f565b9695505050505050565b61122f80620003e85f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806377d6110e1161008a578063933757c411610064578063933757c414610210578063f21f537d14610240578063f2fde38b1461025e578063fc0c546a1461027a576100e8565b806377d6110e146101a65780637ecebe00146101c25780638da5cb5b146101f2576100e8565b80633fd8b02f116100c65780633fd8b02f146101445780636b0509b114610162578063715018a614610180578063779972da1461018a576100e8565b806320606b70146100ec5780632e1a7d4d1461010a5780633644e51514610126575b5f80fd5b6100f4610298565b6040516101019190610acf565b60405180910390f35b610124600480360381019061011f9190610b1f565b6102bc565b005b61012e6103b5565b60405161013b9190610acf565b60405180910390f35b61014c6103bb565b6040516101599190610b59565b60405180910390f35b61016a6103c1565b6040516101779190610acf565b60405180910390f35b6101886103e9565b005b6101a4600480360381019061019f9190610b1f565b6103fc565b005b6101c060048036038101906101bb9190610c2c565b610466565b005b6101dc60048036038101906101d79190610ca3565b6107d5565b6040516101e99190610b59565b60405180910390f35b6101fa6107ea565b6040516102079190610cdd565b60405180910390f35b61022a60048036038101906102259190610cf6565b610811565b6040516102379190610acf565b60405180910390f35b6102486108b9565b6040516102559190610b59565b60405180910390f35b61027860048036038101906102739190610ca3565b6108bf565b005b610282610943565b60405161028f9190610da1565b60405180910390f35b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6102c4610968565b426002546003546102d59190610de7565b11610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90610e74565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610371929190610e92565b6020604051808303815f875af115801561038d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b19190610eee565b5050565b60015481565b60025481565b6040516020016103d090610f93565b6040516020818303038152906040528051906020012081565b6103f1610968565b6103fa5f6109ef565b565b610404610968565b426002546003546104159190610de7565b11610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c90610e74565b60405180910390fd5b806002819055504260038190555050565b8360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c19190610cdd565b602060405180830381865afa1580156104dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105009190610fbb565b1015610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611030565b60405180910390fd5b5f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61058e868884610811565b9050600160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105dd9190610de7565b925050819055505f6001828787876040515f8152602001604052604051610607949392919061105d565b6020604051602081039080840390855afa158015610627573d5f803e3d5ffd5b50505060206040510351905061063b6107ea565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f906110ea565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896040518363ffffffff1660e01b8152600401610704929190610e92565b6020604051808303815f875af1158015610720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107449190610eee565b508773ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683896040516107c39190610b59565b60405180910390a35050505050505050565b6005602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015460405160200161082490610f93565b6040516020818303038152906040528051906020012060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858786604051602001610873959493929190611108565b6040516020818303038152906040528051906020012060405160200161089a9291906111c3565b6040516020818303038152906040528051906020012090509392505050565b60035481565b6108c7610968565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610937575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161092e9190610cdd565b60405180910390fd5b610940816109ef565b50565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610970610ab0565b73ffffffffffffffffffffffffffffffffffffffff1661098e6107ea565b73ffffffffffffffffffffffffffffffffffffffff16146109ed576109b1610ab0565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016109e49190610cdd565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b610ac981610ab7565b82525050565b5f602082019050610ae25f830184610ac0565b92915050565b5f80fd5b5f819050919050565b610afe81610aec565b8114610b08575f80fd5b50565b5f81359050610b1981610af5565b92915050565b5f60208284031215610b3457610b33610ae8565b5b5f610b4184828501610b0b565b91505092915050565b610b5381610aec565b82525050565b5f602082019050610b6c5f830184610b4a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b9b82610b72565b9050919050565b610bab81610b91565b8114610bb5575f80fd5b50565b5f81359050610bc681610ba2565b92915050565b5f60ff82169050919050565b610be181610bcc565b8114610beb575f80fd5b50565b5f81359050610bfc81610bd8565b92915050565b610c0b81610ab7565b8114610c15575f80fd5b50565b5f81359050610c2681610c02565b92915050565b5f805f805f60a08688031215610c4557610c44610ae8565b5b5f610c5288828901610bb8565b9550506020610c6388828901610b0b565b9450506040610c7488828901610bee565b9350506060610c8588828901610c18565b9250506080610c9688828901610c18565b9150509295509295909350565b5f60208284031215610cb857610cb7610ae8565b5b5f610cc584828501610bb8565b91505092915050565b610cd781610b91565b82525050565b5f602082019050610cf05f830184610cce565b92915050565b5f805f60608486031215610d0d57610d0c610ae8565b5b5f610d1a86828701610b0b565b9350506020610d2b86828701610bb8565b9250506040610d3c86828701610b0b565b9150509250925092565b5f819050919050565b5f610d69610d64610d5f84610b72565b610d46565b610b72565b9050919050565b5f610d7a82610d4f565b9050919050565b5f610d8b82610d70565b9050919050565b610d9b81610d81565b82525050565b5f602082019050610db45f830184610d92565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610df182610aec565b9150610dfc83610aec565b9250828201905080821115610e1457610e13610dba565b5b92915050565b5f82825260208201905092915050565b7f4c6f636b656400000000000000000000000000000000000000000000000000005f82015250565b5f610e5e600683610e1a565b9150610e6982610e2a565b602082019050919050565b5f6020820190508181035f830152610e8b81610e52565b9050919050565b5f604082019050610ea55f830185610cce565b610eb26020830184610b4a565b9392505050565b5f8115159050919050565b610ecd81610eb9565b8114610ed7575f80fd5b50565b5f81519050610ee881610ec4565b92915050565b5f60208284031215610f0357610f02610ae8565b5b5f610f1084828501610eda565b91505092915050565b5f81905092915050565b7f436c61696d286164647265737320746f6b656e2c6164647265737320746f2c755f8201527f696e7432353620616d6f756e742c75696e74323536206e6f6e63652900000000602082015250565b5f610f7d603c83610f19565b9150610f8882610f23565b603c82019050919050565b5f610f9d82610f71565b9150819050919050565b5f81519050610fb581610af5565b92915050565b5f60208284031215610fd057610fcf610ae8565b5b5f610fdd84828501610fa7565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61101a601483610e1a565b915061102582610fe6565b602082019050919050565b5f6020820190508181035f8301526110478161100e565b9050919050565b61105781610bcc565b82525050565b5f6080820190506110705f830187610ac0565b61107d602083018661104e565b61108a6040830185610ac0565b6110976060830184610ac0565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6110d4601183610e1a565b91506110df826110a0565b602082019050919050565b5f6020820190508181035f830152611101816110c8565b9050919050565b5f60a08201905061111b5f830188610ac0565b6111286020830187610cce565b6111356040830186610cce565b6111426060830185610b4a565b61114f6080830184610b4a565b9695505050505050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61118d600283610f19565b915061119882611159565b600282019050919050565b5f819050919050565b6111bd6111b882610ab7565b6111a3565b82525050565b5f6111cd82611181565b91506111d982856111ac565b6020820191506111e982846111ac565b602082019150819050939250505056fea2646970667358221220255fdc79086a39f4d8a5aca5e801a2a441245b744338e3df57fc2dcfedfcf77564736f6c63430008180033000000000000000000000000c01b1979e2244dc94e67891df0af4f7885e57fd4