60806040526040518060400160405280600b81526020017f4f4e4947495249204b554e000000000000000000000000000000000000000000815250600890816200004a919062000e0e565b506040518060400160405280600781526020017f4f4e4947495249000000000000000000000000000000000000000000000000008152506009908162000091919062000e0e565b503480156200009f57600080fd5b5060405162003c1738038062003c178339818101604052810190620000c5919062000f90565b3360088054620000d59062000bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054620001039062000bfd565b8015620001545780601f10620001285761010080835404028352916020019162000154565b820191906000526020600020905b8154815290600101906020018083116200013657829003601f168201915b505050505060098054620001689062000bfd565b80601f0160208091040260200160405190810160405280929190818152602001828054620001969062000bfd565b8015620001e75780601f10620001bb57610100808354040283529160200191620001e7565b820191906000526020600020905b815481529060010190602001808311620001c957829003601f168201915b505050505033848360039081620001ff919062000e0e565b50826004908162000211919062000e0e565b5081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200030d5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000304919062000fe8565b60405180910390fd5b6200031e816200039160201b60201c565b506200033133836200045760201b60201c565b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620011f5565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620004c3919062000fe8565b60405180910390fd5b620004e060008383620004e460201b60201c565b5050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000550576200054a8383836200074960201b60201c565b62000744565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620005f55750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b62000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062001066565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620006ad57620006a68484846200074960201b60201c565b5062000744565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200072f57620007168484846200074960201b60201c565b62000728600162000b4560201b60201c565b5062000744565b620007428484846200074960201b60201c565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200079f578060026000828254620007929190620010b7565b9250508190555062000875565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156200082e578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620008259392919062001103565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c057806002600082825403925050819055506200090d565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009f257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009e4919062001140565b60405180910390a362000b40565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ad7578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac9919062001140565b60405180910390a362000b3f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b36919062001140565b60405180910390a35b5b505050565b60003a90508181111562000b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b8790620011d3565b60405180910390fd5b5050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1657607f821691505b60208210810362000c2c5762000c2b62000bce565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c57565b62000ca2868362000c57565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cef62000ce962000ce38462000cba565b62000cc4565b62000cba565b9050919050565b6000819050919050565b62000d0b8362000cce565b62000d2362000d1a8262000cf6565b84845462000c64565b825550505050565b600090565b62000d3a62000d2b565b62000d4781848462000d00565b505050565b5b8181101562000d6f5762000d6360008262000d30565b60018101905062000d4d565b5050565b601f82111562000dbe5762000d888162000c32565b62000d938462000c47565b8101602085101562000da3578190505b62000dbb62000db28562000c47565b83018262000d4c565b50505b505050565b600082821c905092915050565b600062000de36000198460080262000dc3565b1980831691505092915050565b600062000dfe838362000dd0565b9150826002028217905092915050565b62000e198262000b94565b67ffffffffffffffff81111562000e355762000e3462000b9f565b5b62000e41825462000bfd565b62000e4e82828562000d73565b600060209050601f83116001811462000e86576000841562000e71578287015190505b62000e7d858262000df0565b86555062000eed565b601f19841662000e968662000c32565b60005b8281101562000ec05784890151825560018201915060208501945060208101905062000e99565b8683101562000ee0578489015162000edc601f89168262000dd0565b8355505b6001600288020188555050505b505050505050565b600080fd5b62000f058162000cba565b811462000f1157600080fd5b50565b60008151905062000f258162000efa565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f588262000f2b565b9050919050565b62000f6a8162000f4b565b811462000f7657600080fd5b50565b60008151905062000f8a8162000f5f565b92915050565b6000806040838503121562000faa5762000fa962000ef5565b5b600062000fba8582860162000f14565b925050602062000fcd8582860162000f79565b9150509250929050565b62000fe28162000f4b565b82525050565b600060208201905062000fff600083018462000fd7565b92915050565b600082825260208201905092915050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b60006200104e601f8362001005565b91506200105b8262001016565b602082019050919050565b6000602082019050818103600083015262001081816200103f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010c48262000cba565b9150620010d18362000cba565b9250828201905080821115620010ec57620010eb62001088565b5b92915050565b620010fd8162000cba565b82525050565b60006060820190506200111a600083018662000fd7565b620011296020830185620010f2565b620011386040830184620010f2565b949350505050565b6000602082019050620011576000830184620010f2565b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b6000620011bb60278362001005565b9150620011c8826200115d565b604082019050919050565b60006020820190508181036000830152620011ee81620011ac565b9050919050565b612a1280620012056000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80636c02a931116101305780639f5fa028116100b8578063cc2b78581161007c578063cc2b785814610621578063dd62ed3e1461063f578063e086e5ec1461066f578063efc21e3f14610679578063f2fde38b1461069757610232565b80639f5fa0281461057b578063a9059cbb14610599578063aac03939146105c9578063b839a80e146105e7578063cc1776d31461060357610232565b80637b61c320116100ff5780637b61c320146104fb5780638ba4cc3c146105195780638da5cb5b1461053557806395d89b41146105535780639e78fb4f1461057157610232565b80636c02a9311461048757806370a08231146104a5578063715018a6146104d557806379c65068146104df57610232565b80631e7be210116101be5780634022b75e116101825780634022b75e146103f55780634f7041a514610411578063564b81ef1461042f578063593ed58c1461044d578063622565891461047d57610232565b80631e7be2101461033b57806323b872dd1461036b5780632711b8a51461039b578063313ce567146103b95780633de4b85c146103d757610232565b8063109daa9911610205578063109daa99146102bd57806311894780146102c75780631641f1ba146102e557806318160ddd146103015780631a6952301461031f57610232565b8063068acf6c1461023757806306fdde031461025357806307980cb914610271578063095ea7b31461028d575b600080fd5b610251600480360381019061024c91906120d2565b6106b3565b005b61025b6107bc565b604051610268919061218f565b60405180910390f35b61028b600480360381019061028691906120d2565b61084e565b005b6102a760048036038101906102a291906121e7565b61089a565b6040516102b49190612242565b60405180910390f35b6102c56108bd565b005b6102cf610903565b6040516102dc919061226c565b60405180910390f35b6102ff60048036038101906102fa9190612287565b61090a565b005b61030961094c565b604051610316919061226c565b60405180910390f35b610339600480360381019061033491906120d2565b610956565b005b610355600480360381019061035091906120d2565b6109b9565b6040516103629190612242565b60405180910390f35b610385600480360381019061038091906122b4565b6109d9565b6040516103929190612242565b60405180910390f35b6103a3610a08565b6040516103b0919061226c565b60405180910390f35b6103c1610a11565b6040516103ce9190612323565b60405180910390f35b6103df610a1a565b6040516103ec919061226c565b60405180910390f35b61040f600480360381019061040a9190612549565b610a20565b005b610419610ae6565b604051610426919061226c565b60405180910390f35b610437610aec565b604051610444919061226c565b60405180910390f35b61046760048036038101906104629190612287565b610af9565b60405161047491906125e3565b60405180910390f35b610485610b2c565b005b61048f610b72565b60405161049c919061218f565b60405180910390f35b6104bf60048036038101906104ba91906120d2565b610c00565b6040516104cc919061226c565b60405180910390f35b6104dd610c48565b005b6104f960048036038101906104f491906121e7565b610cb4565b005b610503610d2a565b604051610510919061218f565b60405180910390f35b610533600480360381019061052e91906121e7565b610db8565b005b61053d610e2e565b60405161054a91906125e3565b60405180910390f35b61055b610e58565b604051610568919061218f565b60405180910390f35b610579610eea565b005b610583611128565b604051610590919061226c565b60405180910390f35b6105b360048036038101906105ae91906121e7565b61112d565b6040516105c09190612242565b60405180910390f35b6105d1611150565b6040516105de91906125e3565b60405180910390f35b61060160048036038101906105fc9190612287565b611176565b005b61060b6111b8565b604051610618919061226c565b60405180910390f35b6106296111be565b604051610636919061226c565b60405180910390f35b610659600480360381019061065491906125fe565b6111c4565b604051610666919061226c565b60405180910390f35b61067761124b565b005b61068161129c565b60405161068e919061226c565b60405180910390f35b6106b160048036038101906106ac91906120d2565b6112a2565b005b6106bb611328565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f691906125e3565b602060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190612653565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610774929190612680565b6020604051808303816000875af1158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b791906126d5565b505050565b6060600380546107cb90612731565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790612731565b80156108445780601f1061081957610100808354040283529160200191610844565b820191906000526020600020905b81548152906001019060200180831161082757829003601f168201915b5050505050905090565b610856611328565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806108a56113af565b90506108b28185856113b7565b600191505092915050565b6108c5611328565b6000600d819055506000600c819055507f80de050b85d3a75cad8a3df5e178576f5df5879cad768c7b5600fa00770f2c7c60405160405180910390a1565b62013e3181565b610912611328565b7fd3b613dda5c9cdfd44a8f58e5198dec35a31f7f9d39dec2fd6b532e47989c7b981604051610941919061226c565b60405180910390a150565b6000600254905090565b61095e611328565b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000806109e46113af565b90506109f18582856113c9565b6109fc85858561145d565b60019150509392505050565b60006001905090565b60006012905090565b61a86a81565b610a28611328565b60005b8251811015610ae057828181518110610a4757610a46612762565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610ab057610aaf612762565b5b6020026020010151604051610ac5919061226c565b60405180910390a38080610ad8906127c0565b915050610a2b565b50505050565b600d5481565b6000804690508091505090565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b34611328565b6000600d819055506000600c819055507f2d53e1bd10978dd02f36cd1d3680151195d9f7358e0c867bc753abecafb55e4360405160405180910390a1565b60088054610b7f90612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90612731565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b505050505081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c50611328565b600073ffffffffffffffffffffffffffffffffffffffff16610c70610e2e565b73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b610cbc611328565b610cce610cc7610e2e565b838361145d565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60098054610d3790612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6390612731565b8015610db05780601f10610d8557610100808354040283529160200191610db0565b820191906000526020600020905b815481529060010190602001808311610d9357829003601f168201915b505050505081565b610dc0611328565b610dd2610dcb610e2e565b838361145d565b6001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e6790612731565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9390612731565b8015610ee05780601f10610eb557610100808354040283529160200191610ee0565b820191906000526020600020905b815481529060010190602001808311610ec357829003601f168201915b5050505050905090565b610ef2611328565b610efa611551565b6000610f04610aec565b9050600080600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061a86a8303610fbe578073ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb7919061281d565b9150611030565b8073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d919061281d565b91505b60008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a1919061281d565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b81526004016110de92919061284a565b6020604051808303816000875af11580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611121919061281d565b5050505050565b600181565b6000806111386113af565b905061114581858561145d565b600191505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61117e611328565b7f0d61b965947cabd8d137e76c38fd92e63d79b181830e0918b69794938355febd816040516111ad919061226c565b60405180910390a150565b600c5481565b61a4b181565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611253611328565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611299573d6000803e3d6000fd5b50565b61210581565b6112aa611328565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131c5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161131391906125e3565b60405180910390fd5b6113258161175b565b50565b6113306113af565b73ffffffffffffffffffffffffffffffffffffffff1661134e610e2e565b73ffffffffffffffffffffffffffffffffffffffff16146113ad576113716113af565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113a491906125e3565b60405180910390fd5b565b600033905090565b6113c48383836001611821565b505050565b60006113d584846111c4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114575781811015611447578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161143e93929190612873565b60405180910390fd5b61145684848484036000611821565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114cf5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114c691906125e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115415760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161153891906125e3565b60405180910390fd5b61154c8383836119f8565b505050565b73f164fc0ec4e93095b804a4795bbe1e041497b92a600e60006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e6000612105815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507360ae616a2155ee3d9a68541ba4544862310933d4600e600061a86a815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398994a9a7a2570367554589189dc9772241650f6600e600062013e31815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734752ba5dbc23f44d87826276bf6fd6b1c372ad24600e600061a4b1815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118935760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161188a91906125e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119055760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016118fc91906125e3565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156119f2578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516119e9919061226c565b60405180910390a35b50505050565b600b60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a5a57611a55838383611c2b565b611c26565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906128f6565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ba957611ba3848484611c2b565b50611c26565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1957611c09848484611c2b565b611c136001612014565b50611c26565b611c24848484611c2b565b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7d578060026000828254611c719190612916565b92505081905550611d50565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d09578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611d0093929190612873565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d995780600260008282540392505081905550611de6565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ec757600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eba919061226c565b60405180910390a361200f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa8578173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f9b919061226c565b60405180910390a361200e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612005919061226c565b60405180910390a35b5b505050565b60003a90508181111561205c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612053906129bc565b60405180910390fd5b5050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061209f82612074565b9050919050565b6120af81612094565b81146120ba57600080fd5b50565b6000813590506120cc816120a6565b92915050565b6000602082840312156120e8576120e761206a565b5b60006120f6848285016120bd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213957808201518184015260208101905061211e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612161826120ff565b61216b818561210a565b935061217b81856020860161211b565b61218481612145565b840191505092915050565b600060208201905081810360008301526121a98184612156565b905092915050565b6000819050919050565b6121c4816121b1565b81146121cf57600080fd5b50565b6000813590506121e1816121bb565b92915050565b600080604083850312156121fe576121fd61206a565b5b600061220c858286016120bd565b925050602061221d858286016121d2565b9150509250929050565b60008115159050919050565b61223c81612227565b82525050565b60006020820190506122576000830184612233565b92915050565b612266816121b1565b82525050565b6000602082019050612281600083018461225d565b92915050565b60006020828403121561229d5761229c61206a565b5b60006122ab848285016121d2565b91505092915050565b6000806000606084860312156122cd576122cc61206a565b5b60006122db868287016120bd565b93505060206122ec868287016120bd565b92505060406122fd868287016121d2565b9150509250925092565b600060ff82169050919050565b61231d81612307565b82525050565b60006020820190506123386000830184612314565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61237b82612145565b810181811067ffffffffffffffff8211171561239a57612399612343565b5b80604052505050565b60006123ad612060565b90506123b98282612372565b919050565b600067ffffffffffffffff8211156123d9576123d8612343565b5b602082029050602081019050919050565b600080fd5b60006124026123fd846123be565b6123a3565b90508083825260208201905060208402830185811115612425576124246123ea565b5b835b8181101561244e578061243a88826120bd565b845260208401935050602081019050612427565b5050509392505050565b600082601f83011261246d5761246c61233e565b5b813561247d8482602086016123ef565b91505092915050565b600067ffffffffffffffff8211156124a1576124a0612343565b5b602082029050602081019050919050565b60006124c56124c084612486565b6123a3565b905080838252602082019050602084028301858111156124e8576124e76123ea565b5b835b8181101561251157806124fd88826121d2565b8452602084019350506020810190506124ea565b5050509392505050565b600082601f8301126125305761252f61233e565b5b81356125408482602086016124b2565b91505092915050565b6000806000606084860312156125625761256161206a565b5b6000612570868287016120bd565b935050602084013567ffffffffffffffff8111156125915761259061206f565b5b61259d86828701612458565b925050604084013567ffffffffffffffff8111156125be576125bd61206f565b5b6125ca8682870161251b565b9150509250925092565b6125dd81612094565b82525050565b60006020820190506125f860008301846125d4565b92915050565b600080604083850312156126155761261461206a565b5b6000612623858286016120bd565b9250506020612634858286016120bd565b9150509250929050565b60008151905061264d816121bb565b92915050565b6000602082840312156126695761266861206a565b5b60006126778482850161263e565b91505092915050565b600060408201905061269560008301856125d4565b6126a2602083018461225d565b9392505050565b6126b281612227565b81146126bd57600080fd5b50565b6000815190506126cf816126a9565b92915050565b6000602082840312156126eb576126ea61206a565b5b60006126f9848285016126c0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061274957607f821691505b60208210810361275c5761275b612702565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127cb826121b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127fd576127fc612791565b5b600182019050919050565b600081519050612817816120a6565b92915050565b6000602082840312156128335761283261206a565b5b600061284184828501612808565b91505092915050565b600060408201905061285f60008301856125d4565b61286c60208301846125d4565b9392505050565b600060608201905061288860008301866125d4565b612895602083018561225d565b6128a2604083018461225d565b949350505050565b7f4e65656420746f20686f6c6420666f72206b656570206c697175696469747900600082015250565b60006128e0601f8361210a565b91506128eb826128aa565b602082019050919050565b6000602082019050818103600083015261290f816128d3565b9050919050565b6000612921826121b1565b915061292c836121b1565b925082820190508082111561294457612943612791565b5b92915050565b7f4e65656420746f206f7074696d697a6520676173207072696365207768656e2060008201527f73656e6420747800000000000000000000000000000000000000000000000000602082015250565b60006129a660278361210a565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b905091905056fea26469706673582212206030328f14cdbdebf99d3b7ca258cabdf0394db4e705d561e493713b35350a7f64736f6c634300081300330000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000009c57b75362b07ffd52179d64a5ee8918741990c7