60806040523480156200001157600080fd5b5060405162001b4a38038062001b4a83398181016040528101906200003791906200023b565b818181600390816200004a91906200050b565b5080600490816200005c91906200050b565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620005f2565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200011182620000c6565b810181811067ffffffffffffffff82111715620001335762000132620000d7565b5b80604052505050565b600062000148620000a8565b905062000156828262000106565b919050565b600067ffffffffffffffff821115620001795762000178620000d7565b5b6200018482620000c6565b9050602081019050919050565b60005b83811015620001b157808201518184015260208101905062000194565b60008484015250505050565b6000620001d4620001ce846200015b565b6200013c565b905082815260208101848484011115620001f357620001f2620000c1565b5b6200020084828562000191565b509392505050565b600082601f83011262000220576200021f620000bc565b5b815162000232848260208601620001bd565b91505092915050565b60008060408385031215620002555762000254620000b2565b5b600083015167ffffffffffffffff811115620002765762000275620000b7565b5b620002848582860162000208565b925050602083015167ffffffffffffffff811115620002a857620002a7620000b7565b5b620002b68582860162000208565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200031357607f821691505b602082108103620003295762000328620002cb565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000354565b6200039f868362000354565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003ec620003e6620003e084620003b7565b620003c1565b620003b7565b9050919050565b6000819050919050565b6200040883620003cb565b620004206200041782620003f3565b84845462000361565b825550505050565b600090565b6200043762000428565b62000444818484620003fd565b505050565b5b818110156200046c57620004606000826200042d565b6001810190506200044a565b5050565b601f821115620004bb5762000485816200032f565b620004908462000344565b81016020851015620004a0578190505b620004b8620004af8562000344565b83018262000449565b50505b505050565b600082821c905092915050565b6000620004e060001984600802620004c0565b1980831691505092915050565b6000620004fb8383620004cd565b9150826002028217905092915050565b6200051682620002c0565b67ffffffffffffffff811115620005325762000531620000d7565b5b6200053e8254620002fa565b6200054b82828562000470565b600060209050601f8311600181146200058357600084156200056e578287015190505b6200057a8582620004ed565b865550620005ea565b601f19841662000593866200032f565b60005b82811015620005bd5784890151825560018201915060208501945060208101905062000596565b86831015620005dd5784890151620005d9601f891682620004cd565b8355505b6001600288020188555050505b505050505050565b61154880620006026000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f19146101a357806370a08231146101bf57806395d89b41146101ef578063a457c2d71461020d578063a9059cbb1461023d578063dd62ed3e1461026d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029d565b6040516100ce9190610d27565b60405180910390f35b6100f160048036038101906100ec9190610de2565b61032f565b6040516100fe9190610e3d565b60405180910390f35b61010f610352565b60405161011c9190610e67565b60405180910390f35b61013f600480360381019061013a9190610e82565b61035c565b60405161014c9190610e3d565b60405180910390f35b61015d61038b565b60405161016a9190610ef1565b60405180910390f35b61018d60048036038101906101889190610de2565b610394565b60405161019a9190610e3d565b60405180910390f35b6101bd60048036038101906101b89190610de2565b6103cb565b005b6101d960048036038101906101d49190610f0c565b610469565b6040516101e69190610e67565b60405180910390f35b6101f76104b1565b6040516102049190610d27565b60405180910390f35b61022760048036038101906102229190610de2565b610543565b6040516102349190610e3d565b60405180910390f35b61025760048036038101906102529190610de2565b6105ba565b6040516102649190610e3d565b60405180910390f35b61028760048036038101906102829190610f39565b6105dd565b6040516102949190610e67565b60405180910390f35b6060600380546102ac90610fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890610fa8565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b60008061033a610664565b905061034781858561066c565b600191505092915050565b6000600254905090565b600080610367610664565b9050610374858285610835565b61037f8585856108c1565b60019150509392505050565b60006012905090565b60008061039f610664565b90506103c08185856103b185896105dd565b6103bb9190611008565b61066c565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461045b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610452906110ae565b60405180910390fd5b6104658282610b37565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546104c090610fa8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90610fa8565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050905090565b60008061054e610664565b9050600061055c82866105dd565b9050838110156105a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059890611140565b60405180910390fd5b6105ae828686840361066c565b60019250505092915050565b6000806105c5610664565b90506105d28185856108c1565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d2906111d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361074a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074190611264565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108289190610e67565b60405180910390a3505050565b600061084184846105dd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108bb57818110156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a4906112d0565b60405180910390fd5b6108ba848484840361066c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790611362565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610996906113f4565b60405180910390fd5b6109aa838383610c8d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790611486565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b1e9190610e67565b60405180910390a3610b31848484610c92565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906114f2565b60405180910390fd5b610bb260008383610c8d565b8060026000828254610bc49190611008565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c759190610e67565b60405180910390a3610c8960008383610c92565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cd1578082015181840152602081019050610cb6565b60008484015250505050565b6000601f19601f8301169050919050565b6000610cf982610c97565b610d038185610ca2565b9350610d13818560208601610cb3565b610d1c81610cdd565b840191505092915050565b60006020820190508181036000830152610d418184610cee565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7982610d4e565b9050919050565b610d8981610d6e565b8114610d9457600080fd5b50565b600081359050610da681610d80565b92915050565b6000819050919050565b610dbf81610dac565b8114610dca57600080fd5b50565b600081359050610ddc81610db6565b92915050565b60008060408385031215610df957610df8610d49565b5b6000610e0785828601610d97565b9250506020610e1885828601610dcd565b9150509250929050565b60008115159050919050565b610e3781610e22565b82525050565b6000602082019050610e526000830184610e2e565b92915050565b610e6181610dac565b82525050565b6000602082019050610e7c6000830184610e58565b92915050565b600080600060608486031215610e9b57610e9a610d49565b5b6000610ea986828701610d97565b9350506020610eba86828701610d97565b9250506040610ecb86828701610dcd565b9150509250925092565b600060ff82169050919050565b610eeb81610ed5565b82525050565b6000602082019050610f066000830184610ee2565b92915050565b600060208284031215610f2257610f21610d49565b5b6000610f3084828501610d97565b91505092915050565b60008060408385031215610f5057610f4f610d49565b5b6000610f5e85828601610d97565b9250506020610f6f85828601610d97565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610fc057607f821691505b602082108103610fd357610fd2610f79565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061101382610dac565b915061101e83610dac565b925082820190508082111561103657611035610fd9565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000611098602183610ca2565b91506110a38261103c565b604082019050919050565b600060208201905081810360008301526110c78161108b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061112a602583610ca2565b9150611135826110ce565b604082019050919050565b600060208201905081810360008301526111598161111d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006111bc602483610ca2565b91506111c782611160565b604082019050919050565b600060208201905081810360008301526111eb816111af565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061124e602283610ca2565b9150611259826111f2565b604082019050919050565b6000602082019050818103600083015261127d81611241565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006112ba601d83610ca2565b91506112c582611284565b602082019050919050565b600060208201905081810360008301526112e9816112ad565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061134c602583610ca2565b9150611357826112f0565b604082019050919050565b6000602082019050818103600083015261137b8161133f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006113de602383610ca2565b91506113e982611382565b604082019050919050565b6000602082019050818103600083015261140d816113d1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611470602683610ca2565b915061147b82611414565b604082019050919050565b6000602082019050818103600083015261149f81611463565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006114dc601f83610ca2565b91506114e7826114a6565b602082019050919050565b6000602082019050818103600083015261150b816114cf565b905091905056fea264697066735822122046bed52d2aa20d73f2c08a46e19a1bbd5e725d1606eb1478db9fa1f7e7acdab064736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000354524e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000354524e0000000000000000000000000000000000000000000000000000000000