0x60806040523480156200001157600080fd5b5060405162001bde38038062001bde8339818101604052810190620000379190620004ba565b808281600390805190602001906200005192919062000232565b5080600490805190602001906200006a92919062000232565b505050620000a93362000082620000b260201b60201c565b600a620000909190620006e4565b856200009d919062000735565b620000bb60201b60201c565b50505062000908565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200012d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012490620007f7565b60405180910390fd5b62000141600083836200022860201b60201c565b806002600082825462000155919062000819565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000208919062000887565b60405180910390a362000224600083836200022d60201b60201c565b5050565b505050565b505050565b8280546200024090620008d3565b90600052602060002090601f016020900481019282620002645760008555620002b0565b82601f106200027f57805160ff1916838001178555620002b0565b82800160010185558215620002b0579182015b82811115620002af57825182559160200191906001019062000292565b5b509050620002bf9190620002c3565b5090565b5b80821115620002de576000816000905550600101620002c4565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200030b81620002f6565b81146200031757600080fd5b50565b6000815190506200032b8162000300565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000386826200033b565b810181811067ffffffffffffffff82111715620003a857620003a76200034c565b5b80604052505050565b6000620003bd620002e2565b9050620003cb82826200037b565b919050565b600067ffffffffffffffff821115620003ee57620003ed6200034c565b5b620003f9826200033b565b9050602081019050919050565b60005b838110156200042657808201518184015260208101905062000409565b8381111562000436576000848401525b50505050565b6000620004536200044d84620003d0565b620003b1565b90508281526020810184848401111562000472576200047162000336565b5b6200047f84828562000406565b509392505050565b600082601f8301126200049f576200049e62000331565b5b8151620004b18482602086016200043c565b91505092915050565b600080600060608486031215620004d657620004d5620002ec565b5b6000620004e6868287016200031a565b935050602084015167ffffffffffffffff8111156200050a5762000509620002f1565b5b620005188682870162000487565b925050604084015167ffffffffffffffff8111156200053c576200053b620002f1565b5b6200054a8682870162000487565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005e257808604811115620005ba57620005b962000554565b5b6001851615620005ca5780820291505b8081029050620005da8562000583565b94506200059a565b94509492505050565b600082620005fd5760019050620006d0565b816200060d5760009050620006d0565b8160018114620006265760028114620006315762000667565b6001915050620006d0565b60ff84111562000646576200064562000554565b5b8360020a91508482111562000660576200065f62000554565b5b50620006d0565b5060208310610133831016604e8410600b8410161715620006a15782820a9050838111156200069b576200069a62000554565b5b620006d0565b620006b0848484600162000590565b92509050818404811115620006ca57620006c962000554565b5b81810290505b9392505050565b600060ff82169050919050565b6000620006f182620002f6565b9150620006fe83620006d7565b92506200072d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005eb565b905092915050565b60006200074282620002f6565b91506200074f83620002f6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200078b576200078a62000554565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007df601f8362000796565b9150620007ec82620007a7565b602082019050919050565b600060208201905081810360008301526200081281620007d0565b9050919050565b60006200082682620002f6565b91506200083383620002f6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200086b576200086a62000554565b5b828201905092915050565b6200088181620002f6565b82525050565b60006020820190506200089e600083018462000876565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008ec57607f821691505b602082108103620009025762000901620008a4565b5b50919050565b6112c680620009186000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146101a357806395d89b41146101d3578063a457c2d7146101f1578063a9059cbb14610221578063dd62ed3e14610251578063f262775814610281576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce567146101555780633950935114610173575b600080fd5b6100c161029f565b6040516100ce9190610b81565b60405180910390f35b6100f160048036038101906100ec9190610c3c565b610331565b6040516100fe9190610c97565b60405180910390f35b61010f610354565b60405161011c9190610cc1565b60405180910390f35b61013f600480360381019061013a9190610cdc565b61035e565b60405161014c9190610c97565b60405180910390f35b61015d61038d565b60405161016a9190610d4b565b60405180910390f35b61018d60048036038101906101889190610c3c565b610396565b60405161019a9190610c97565b60405180910390f35b6101bd60048036038101906101b89190610d66565b6103cd565b6040516101ca9190610cc1565b60405180910390f35b6101db610415565b6040516101e89190610b81565b60405180910390f35b61020b60048036038101906102069190610c3c565b6104a7565b6040516102189190610c97565b60405180910390f35b61023b60048036038101906102369190610c3c565b61051e565b6040516102489190610c97565b60405180910390f35b61026b60048036038101906102669190610d93565b610541565b6040516102789190610cc1565b60405180910390f35b6102896105c8565b6040516102969190610b81565b60405180910390f35b6060600380546102ae90610e02565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610e02565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c61060b565b9050610349818585610613565b600191505092915050565b6000600254905090565b60008061036961060b565b90506103768582856107dc565b610381858585610868565b60019150509392505050565b60006012905090565b6000806103a161060b565b90506103c28185856103b38589610541565b6103bd9190610e62565b610613565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461042490610e02565b80601f016020809104026020016040519081016040528092919081815260200182805461045090610e02565b801561049d5780601f106104725761010080835404028352916020019161049d565b820191906000526020600020905b81548152906001019060200180831161048057829003601f168201915b5050505050905090565b6000806104b261060b565b905060006104c08286610541565b905083811015610505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fc90610f2a565b60405180910390fd5b6105128286868403610613565b60019250505092915050565b60008061052961060b565b9050610536818585610868565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b606060006040518060400160405280600481526020017f343638340000000000000000000000000000000000000000000000000000000081525090508091505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067990610fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e89061104e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107cf9190610cc1565b60405180910390a3505050565b60006107e88484610541565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108625781811015610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b906110ba565b60405180910390fd5b6108618484848403610613565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce9061114c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d906111de565b60405180910390fd5b610951838383610ade565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90611270565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ac59190610cc1565b60405180910390a3610ad8848484610ae3565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b22578082015181840152602081019050610b07565b83811115610b31576000848401525b50505050565b6000601f19601f8301169050919050565b6000610b5382610ae8565b610b5d8185610af3565b9350610b6d818560208601610b04565b610b7681610b37565b840191505092915050565b60006020820190508181036000830152610b9b8184610b48565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bd382610ba8565b9050919050565b610be381610bc8565b8114610bee57600080fd5b50565b600081359050610c0081610bda565b92915050565b6000819050919050565b610c1981610c06565b8114610c2457600080fd5b50565b600081359050610c3681610c10565b92915050565b60008060408385031215610c5357610c52610ba3565b5b6000610c6185828601610bf1565b9250506020610c7285828601610c27565b9150509250929050565b60008115159050919050565b610c9181610c7c565b82525050565b6000602082019050610cac6000830184610c88565b92915050565b610cbb81610c06565b82525050565b6000602082019050610cd66000830184610cb2565b92915050565b600080600060608486031215610cf557610cf4610ba3565b5b6000610d0386828701610bf1565b9350506020610d1486828701610bf1565b9250506040610d2586828701610c27565b9150509250925092565b600060ff82169050919050565b610d4581610d2f565b82525050565b6000602082019050610d606000830184610d3c565b92915050565b600060208284031215610d7c57610d7b610ba3565b5b6000610d8a84828501610bf1565b91505092915050565b60008060408385031215610daa57610da9610ba3565b5b6000610db885828601610bf1565b9250506020610dc985828601610bf1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e1a57607f821691505b602082108103610e2d57610e2c610dd3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e6d82610c06565b9150610e7883610c06565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ead57610eac610e33565b5b828201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610f14602583610af3565b9150610f1f82610eb8565b604082019050919050565b60006020820190508181036000830152610f4381610f07565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610fa6602483610af3565b9150610fb182610f4a565b604082019050919050565b60006020820190508181036000830152610fd581610f99565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611038602283610af3565b915061104382610fdc565b604082019050919050565b600060208201905081810360008301526110678161102b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006110a4601d83610af3565b91506110af8261106e565b602082019050919050565b600060208201905081810360008301526110d381611097565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611136602583610af3565b9150611141826110da565b604082019050919050565b6000602082019050818103600083015261116581611129565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006111c8602383610af3565b91506111d38261116c565b604082019050919050565b600060208201905081810360008301526111f7816111bb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061125a602683610af3565b9150611265826111fe565b604082019050919050565b600060208201905081810360008301526112898161124d565b905091905056fea264697066735822122089cb74106c0ff1f366805b1d847ae5ed2ed6d4c9c29643285874f8be519c946664736f6c634300080e00330000000000000000000000000000000000000000000000000000000004568d9a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004454e70640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066c59574c5a720000000000000000000000000000000000000000000000000000