60806040523480156200001157600080fd5b506040516200235338038062002353833981810160405281019062000037919062000576565b8282816003908051906020019062000051929190620002ee565b5080600490805190602001906200006a929190620002ee565b5050506200008d62000081620000a860201b60201c565b620000b060201b60201c565b6200009f33826200017660201b60201c565b505050620007b2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001e09062000671565b60405180910390fd5b620001fd60008383620002e460201b60201c565b8060026000828254620002119190620006c2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002c4919062000730565b60405180910390a3620002e060008383620002e960201b60201c565b5050565b505050565b505050565b828054620002fc906200077c565b90600052602060002090601f0160209004810192826200032057600085556200036c565b82601f106200033b57805160ff19168380011785556200036c565b828001600101855582156200036c579182015b828111156200036b5782518255916020019190600101906200034e565b5b5090506200037b91906200037f565b5090565b5b808211156200039a57600081600090555060010162000380565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200040782620003bc565b810181811067ffffffffffffffff82111715620004295762000428620003cd565b5b80604052505050565b60006200043e6200039e565b90506200044c8282620003fc565b919050565b600067ffffffffffffffff8211156200046f576200046e620003cd565b5b6200047a82620003bc565b9050602081019050919050565b60005b83811015620004a75780820151818401526020810190506200048a565b83811115620004b7576000848401525b50505050565b6000620004d4620004ce8462000451565b62000432565b905082815260208101848484011115620004f357620004f2620003b7565b5b6200050084828562000487565b509392505050565b600082601f83011262000520576200051f620003b2565b5b815162000532848260208601620004bd565b91505092915050565b6000819050919050565b62000550816200053b565b81146200055c57600080fd5b50565b600081519050620005708162000545565b92915050565b600080600060608486031215620005925762000591620003a8565b5b600084015167ffffffffffffffff811115620005b357620005b2620003ad565b5b620005c18682870162000508565b935050602084015167ffffffffffffffff811115620005e557620005e4620003ad565b5b620005f38682870162000508565b925050604062000606868287016200055f565b9150509250925092565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000659601f8362000610565b9150620006668262000621565b602082019050919050565b600060208201905081810360008301526200068c816200064a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006cf826200053b565b9150620006dc836200053b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000714576200071362000693565b5b828201905092915050565b6200072a816200053b565b82525050565b60006020820190506200074760008301846200071f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200079557607f821691505b60208210811415620007ac57620007ab6200074d565b5b50919050565b611b9180620007c26000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806362a73800146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f9190610f0e565b60405180910390f35b610132600480360381019061012d9190610fd8565b6103b4565b60405161013f9190611033565b60405180910390f35b6101506103d7565b60405161015d919061105d565b60405180910390f35b610180600480360381019061017b9190611078565b6103e1565b60405161018d9190611033565b60405180910390f35b61019e610410565b6040516101ab91906110e7565b60405180910390f35b6101ce60048036038101906101c99190610fd8565b610419565b6040516101db9190611033565b60405180910390f35b6101fe60048036038101906101f9919061124a565b610450565b005b61021a600480360381019061021591906112a6565b610593565b604051610227919061105d565b60405180910390f35b6102386105db565b005b6102426105ef565b60405161024f91906112e2565b60405180910390f35b610260610619565b60405161026d9190610f0e565b60405180910390f35b610290600480360381019061028b9190610fd8565b6106ab565b60405161029d9190611033565b60405180910390f35b6102c060048036038101906102bb9190610fd8565b610722565b6040516102cd9190611033565b60405180910390f35b6102f060048036038101906102eb91906112fd565b610745565b6040516102fd919061105d565b60405180910390f35b610320600480360381019061031b91906112a6565b6107cc565b005b6060600380546103319061136c565b80601f016020809104026020016040519081016040528092919081815260200182805461035d9061136c565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b6000806103bf610850565b90506103cc818585610858565b600191505092915050565b6000600254905090565b6000806103ec610850565b90506103f9858285610a23565b610404858585610aaf565b60019150509392505050565b60006012905090565b600080610424610850565b90506104458185856104368589610745565b61044091906113cd565b610858565b600191505092915050565b610458610d27565b6000811161049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049290611495565b60405180910390fd5b60008251116104df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d690611527565b60405180910390fd5b60008251826104ee9190611547565b9050806105016104fc6105ef565b610593565b1015610542576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610539906115ed565b60405180910390fd5b60005b835181101561058d5761057a6105596105ef565b85838151811061056c5761056b61160d565b5b602002602001015185610aaf565b80806105859061163c565b915050610545565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e3610d27565b6105ed6000610da5565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106289061136c565b80601f01602080910402602001604051908101604052809291908181526020018280546106549061136c565b80156106a15780601f10610676576101008083540402835291602001916106a1565b820191906000526020600020905b81548152906001019060200180831161068457829003601f168201915b5050505050905090565b6000806106b6610850565b905060006106c48286610745565b905083811015610709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610700906116f7565b60405180910390fd5b6107168286868403610858565b60019250505092915050565b60008061072d610850565b905061073a818585610aaf565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107d4610d27565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90611789565b60405180910390fd5b61084d81610da5565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf9061181b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f906118ad565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a16919061105d565b60405180910390a3505050565b6000610a2f8484610745565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aa95781811015610a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9290611919565b60405180910390fd5b610aa88484848403610858565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b16906119ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690611a3d565b60405180910390fd5b610b9a838383610e6b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611acf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d0e919061105d565b60405180910390a3610d21848484610e70565b50505050565b610d2f610850565b73ffffffffffffffffffffffffffffffffffffffff16610d4d6105ef565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90611b3b565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610eaf578082015181840152602081019050610e94565b83811115610ebe576000848401525b50505050565b6000601f19601f8301169050919050565b6000610ee082610e75565b610eea8185610e80565b9350610efa818560208601610e91565b610f0381610ec4565b840191505092915050565b60006020820190508181036000830152610f288184610ed5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f6f82610f44565b9050919050565b610f7f81610f64565b8114610f8a57600080fd5b50565b600081359050610f9c81610f76565b92915050565b6000819050919050565b610fb581610fa2565b8114610fc057600080fd5b50565b600081359050610fd281610fac565b92915050565b60008060408385031215610fef57610fee610f3a565b5b6000610ffd85828601610f8d565b925050602061100e85828601610fc3565b9150509250929050565b60008115159050919050565b61102d81611018565b82525050565b60006020820190506110486000830184611024565b92915050565b61105781610fa2565b82525050565b6000602082019050611072600083018461104e565b92915050565b60008060006060848603121561109157611090610f3a565b5b600061109f86828701610f8d565b93505060206110b086828701610f8d565b92505060406110c186828701610fc3565b9150509250925092565b600060ff82169050919050565b6110e1816110cb565b82525050565b60006020820190506110fc60008301846110d8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61113f82610ec4565b810181811067ffffffffffffffff8211171561115e5761115d611107565b5b80604052505050565b6000611171610f30565b905061117d8282611136565b919050565b600067ffffffffffffffff82111561119d5761119c611107565b5b602082029050602081019050919050565b600080fd5b60006111c66111c184611182565b611167565b905080838252602082019050602084028301858111156111e9576111e86111ae565b5b835b8181101561121257806111fe8882610f8d565b8452602084019350506020810190506111eb565b5050509392505050565b600082601f83011261123157611230611102565b5b81356112418482602086016111b3565b91505092915050565b6000806040838503121561126157611260610f3a565b5b600083013567ffffffffffffffff81111561127f5761127e610f3f565b5b61128b8582860161121c565b925050602061129c85828601610fc3565b9150509250929050565b6000602082840312156112bc576112bb610f3a565b5b60006112ca84828501610f8d565b91505092915050565b6112dc81610f64565b82525050565b60006020820190506112f760008301846112d3565b92915050565b6000806040838503121561131457611313610f3a565b5b600061132285828601610f8d565b925050602061133385828601610f8d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061138457607f821691505b602082108114156113985761139761133d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113d882610fa2565b91506113e383610fa2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114185761141761139e565b5b828201905092915050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b600061147f602283610e80565b915061148a82611423565b604082019050919050565b600060208201905081810360008301526114ae81611472565b9050919050565b7f4174206c65617374206f6e6520726563697069656e742061646472657373206960008201527f7320726571756972656400000000000000000000000000000000000000000000602082015250565b6000611511602a83610e80565b915061151c826114b5565b604082019050919050565b6000602082019050818103600083015261154081611504565b9050919050565b600061155282610fa2565b915061155d83610fa2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115965761159561139e565b5b828202905092915050565b7f496e73756666696369656e742062616c616e636520666f722061697264726f70600082015250565b60006115d7602083610e80565b91506115e2826115a1565b602082019050919050565b60006020820190508181036000830152611606816115ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061164782610fa2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561167a5761167961139e565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006116e1602583610e80565b91506116ec82611685565b604082019050919050565b60006020820190508181036000830152611710816116d4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611773602683610e80565b915061177e82611717565b604082019050919050565b600060208201905081810360008301526117a281611766565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611805602483610e80565b9150611810826117a9565b604082019050919050565b60006020820190508181036000830152611834816117f8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611897602283610e80565b91506118a28261183b565b604082019050919050565b600060208201905081810360008301526118c68161188a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611903601d83610e80565b915061190e826118cd565b602082019050919050565b60006020820190508181036000830152611932816118f6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611995602583610e80565b91506119a082611939565b604082019050919050565b600060208201905081810360008301526119c481611988565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a27602383610e80565b9150611a32826119cb565b604082019050919050565b60006020820190508181036000830152611a5681611a1a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611ab9602683610e80565b9150611ac482611a5d565b604082019050919050565b60006020820190508181036000830152611ae881611aac565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611b25602083610e80565b9150611b3082611aef565b602082019050919050565b60006020820190508181036000830152611b5481611b18565b905091905056fea26469706673582212202fd1de979bfaec1c3c2cf9cac1471d48c3389e41b7d123c6e043608dfb67063d64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000069d17119dc5a800000000000000000000000000000000000000000000000000000000000000000004505050500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045050505000000000000000000000000000000000000000000000000000000000