60806040523480156200001157600080fd5b50600062000024620001dc60201b60201c565b905062000036620001dc60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008060146101000a81548160ff0219169083151502179055506040518060400160405280600981526020017f43686f636f436f696e0000000000000000000000000000000000000000000000815250600490805190602001906200013892919062000381565b506040518060400160405280600581526020017f43484f434f000000000000000000000000000000000000000000000000000000815250600590805190602001906200018692919062000381565b50620001d66200019b620001e460201b60201c565b620001ab6200020d60201b60201c565b600a620001b99190620005cb565b63b2d05e00620001ca91906200061c565b6200021660201b60201c565b620007f0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028090620006de565b60405180910390fd5b6200029d600083836200037c60201b60201c565b8060036000828254620002b1919062000700565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000309919062000700565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037091906200076e565b60405180910390a35050565b505050565b8280546200038f90620007ba565b90600052602060002090601f016020900481019282620003b35760008555620003ff565b82601f10620003ce57805160ff1916838001178555620003ff565b82800160010185558215620003ff579182015b82811115620003fe578251825591602001919060010190620003e1565b5b5090506200040e919062000412565b5090565b5b808211156200042d57600081600090555060010162000413565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004bf5780860481111562000497576200049662000431565b5b6001851615620004a75780820291505b8081029050620004b78562000460565b945062000477565b94509492505050565b600082620004da5760019050620005ad565b81620004ea5760009050620005ad565b81600181146200050357600281146200050e5762000544565b6001915050620005ad565b60ff84111562000523576200052262000431565b5b8360020a9150848211156200053d576200053c62000431565b5b50620005ad565b5060208310610133831016604e8410600b84101617156200057e5782820a90508381111562000578576200057762000431565b5b620005ad565b6200058d84848460016200046d565b92509050818404811115620005a757620005a662000431565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005d882620005b4565b9150620005e583620005be565b9250620006147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004c8565b905092915050565b60006200062982620005b4565b91506200063683620005b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000672576200067162000431565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006c6601f836200067d565b9150620006d3826200068e565b602082019050919050565b60006020820190508181036000830152620006f981620006b7565b9050919050565b60006200070d82620005b4565b91506200071a83620005b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000752576200075162000431565b5b828201905092915050565b6200076881620005b4565b82525050565b60006020820190506200078560008301846200075d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007d357607f821691505b60208210811415620007ea57620007e96200078b565b5b50919050565b61227f80620008006000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a0712d6811610071578063a0712d68146102d4578063a457c2d7146102f0578063a9059cbb14610320578063dd62ed3e14610350578063f2fde38b1461038057610121565b806370a0823114610254578063715018a6146102845780638456cb591461028e5780638da5cb5b1461029857806395d89b41146102b657610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e05780633f4ba83a1461021057806342966c681461021a5780635c975abb1461023657610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e61039c565b60405161013b9190611722565b60405180910390f35b61015e600480360381019061015991906117dd565b61042e565b60405161016b9190611838565b60405180910390f35b61017c61044c565b6040516101899190611862565b60405180910390f35b6101ac60048036038101906101a7919061187d565b610456565b6040516101b99190611838565b60405180910390f35b6101ca610557565b6040516101d791906118ec565b60405180910390f35b6101fa60048036038101906101f591906117dd565b610560565b6040516102079190611838565b60405180910390f35b61021861060c565b005b610234600480360381019061022f9190611907565b610692565b005b61023e61071b565b60405161024b9190611838565b60405180910390f35b61026e60048036038101906102699190611934565b610731565b60405161027b9190611862565b60405180910390f35b61028c61077a565b005b6102966108b4565b005b6102a061093a565b6040516102ad9190611970565b60405180910390f35b6102be610963565b6040516102cb9190611722565b60405180910390f35b6102ee60048036038101906102e99190611907565b6109f5565b005b61030a600480360381019061030591906117dd565b610a7e565b6040516103179190611838565b60405180910390f35b61033a600480360381019061033591906117dd565b610b72565b6040516103479190611838565b60405180910390f35b61036a6004803603810190610365919061198b565b610b90565b6040516103779190611862565b60405180910390f35b61039a60048036038101906103959190611934565b610c17565b005b6060600480546103ab906119fa565b80601f01602080910402602001604051908101604052809291908181526020018280546103d7906119fa565b80156104245780601f106103f957610100808354040283529160200191610424565b820191906000526020600020905b81548152906001019060200180831161040757829003601f168201915b5050505050905090565b600061044261043b610dc0565b8484610dc8565b6001905092915050565b6000600354905090565b6000610463848484610f93565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104ae610dc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052590611a9e565b60405180910390fd5b61054b8561053a610dc0565b85846105469190611aed565b610dc8565b60019150509392505050565b60006012905090565b600061060261056d610dc0565b84846002600061057b610dc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105fd9190611b21565b610dc8565b6001905092915050565b610614610dc0565b73ffffffffffffffffffffffffffffffffffffffff1661063261093a565b73ffffffffffffffffffffffffffffffffffffffff1614610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067f90611bc3565b60405180910390fd5b610690611215565b565b61069a610dc0565b73ffffffffffffffffffffffffffffffffffffffff166106b861093a565b73ffffffffffffffffffffffffffffffffffffffff161461070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070590611bc3565b60405180910390fd5b61071833826112b6565b50565b60008060149054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610782610dc0565b73ffffffffffffffffffffffffffffffffffffffff166107a061093a565b73ffffffffffffffffffffffffffffffffffffffff16146107f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ed90611bc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108bc610dc0565b73ffffffffffffffffffffffffffffffffffffffff166108da61093a565b73ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790611bc3565b60405180910390fd5b61093861148c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610972906119fa565b80601f016020809104026020016040519081016040528092919081815260200182805461099e906119fa565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b5050505050905090565b6109fd610dc0565b73ffffffffffffffffffffffffffffffffffffffff16610a1b61093a565b73ffffffffffffffffffffffffffffffffffffffff1614610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6890611bc3565b60405180910390fd5b610a7b338261152f565b50565b60008060026000610a8d610dc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190611c55565b60405180910390fd5b610b67610b55610dc0565b858584610b629190611aed565b610dc8565b600191505092915050565b6000610b86610b7f610dc0565b8484610f93565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c1f610dc0565b73ffffffffffffffffffffffffffffffffffffffff16610c3d61093a565b73ffffffffffffffffffffffffffffffffffffffff1614610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90611bc3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90611ce7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90611d79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90611e0b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f869190611862565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa90611e9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a90611f2f565b60405180910390fd5b61107e838383611684565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90611fc1565b60405180910390fd5b81816111119190611aed565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111a39190611b21565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112079190611862565b60405180910390a350505050565b61121d61071b565b61125c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112539061202d565b60405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61129f610dc0565b6040516112ac9190611970565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d906120bf565b60405180910390fd5b61133282600083611684565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612151565b60405180910390fd5b81816113c59190611aed565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816003600082825461141a9190611aed565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161147f9190611862565b60405180910390a3505050565b61149461071b565b156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb906121bd565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611518610dc0565b6040516115259190611970565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690612229565b60405180910390fd5b6115ab60008383611684565b80600360008282546115bd9190611b21565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116139190611b21565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116789190611862565b60405180910390a35050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116c35780820151818401526020810190506116a8565b838111156116d2576000848401525b50505050565b6000601f19601f8301169050919050565b60006116f482611689565b6116fe8185611694565b935061170e8185602086016116a5565b611717816116d8565b840191505092915050565b6000602082019050818103600083015261173c81846116e9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061177482611749565b9050919050565b61178481611769565b811461178f57600080fd5b50565b6000813590506117a18161177b565b92915050565b6000819050919050565b6117ba816117a7565b81146117c557600080fd5b50565b6000813590506117d7816117b1565b92915050565b600080604083850312156117f4576117f3611744565b5b600061180285828601611792565b9250506020611813858286016117c8565b9150509250929050565b60008115159050919050565b6118328161181d565b82525050565b600060208201905061184d6000830184611829565b92915050565b61185c816117a7565b82525050565b60006020820190506118776000830184611853565b92915050565b60008060006060848603121561189657611895611744565b5b60006118a486828701611792565b93505060206118b586828701611792565b92505060406118c6868287016117c8565b9150509250925092565b600060ff82169050919050565b6118e6816118d0565b82525050565b600060208201905061190160008301846118dd565b92915050565b60006020828403121561191d5761191c611744565b5b600061192b848285016117c8565b91505092915050565b60006020828403121561194a57611949611744565b5b600061195884828501611792565b91505092915050565b61196a81611769565b82525050565b60006020820190506119856000830184611961565b92915050565b600080604083850312156119a2576119a1611744565b5b60006119b085828601611792565b92505060206119c185828601611792565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a1257607f821691505b60208210811415611a2657611a256119cb565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611a88602883611694565b9150611a9382611a2c565b604082019050919050565b60006020820190508181036000830152611ab781611a7b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611af8826117a7565b9150611b03836117a7565b925082821015611b1657611b15611abe565b5b828203905092915050565b6000611b2c826117a7565b9150611b37836117a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611b6c57611b6b611abe565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611bad602083611694565b9150611bb882611b77565b602082019050919050565b60006020820190508181036000830152611bdc81611ba0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c3f602583611694565b9150611c4a82611be3565b604082019050919050565b60006020820190508181036000830152611c6e81611c32565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cd1602683611694565b9150611cdc82611c75565b604082019050919050565b60006020820190508181036000830152611d0081611cc4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d63602483611694565b9150611d6e82611d07565b604082019050919050565b60006020820190508181036000830152611d9281611d56565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611df5602283611694565b9150611e0082611d99565b604082019050919050565b60006020820190508181036000830152611e2481611de8565b9050919050565b7f455243323032303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b6000611e87602783611694565b9150611e9282611e2b565b604082019050919050565b60006020820190508181036000830152611eb681611e7a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f19602383611694565b9150611f2482611ebd565b604082019050919050565b60006020820190508181036000830152611f4881611f0c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611fab602683611694565b9150611fb682611f4f565b604082019050919050565b60006020820190508181036000830152611fda81611f9e565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612017601483611694565b915061202282611fe1565b602082019050919050565b600060208201905081810360008301526120468161200a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120a9602183611694565b91506120b48261204d565b604082019050919050565b600060208201905081810360008301526120d88161209c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061213b602283611694565b9150612146826120df565b604082019050919050565b6000602082019050818103600083015261216a8161212e565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006121a7601083611694565b91506121b282612171565b602082019050919050565b600060208201905081810360008301526121d68161219a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612213601f83611694565b915061221e826121dd565b602082019050919050565b6000602082019050818103600083015261224281612206565b905091905056fea26469706673582212204b5c5f8e6b770b21d662c6e1d96484eb14b24964a9b6b95644292eb5f8b3a70f64736f6c634300080a0033