0x60806040526004361061024a5760003560e01c8063804974ea11610139578063aafd847a116100b6578063e7841ec01161007a578063e7841ec0146108b2578063e98030c7146108dd578063f2fde38b14610906578063fbcbc0f11461092f578063fcbe5f5a14610973578063ffb2c479146109b157610259565b8063aafd847a146107cf578063cac8d5381461080c578063d202146314610835578063dd62ed3e1461085e578063e0fb0f351461089b57610259565b8063941f915a116100fd578063941f915a146106bc57806395d89b41146106ed578063a457c2d714610718578063a8b9d24014610755578063a9059cbb1461079257610259565b8063804974ea146105c357806385a6b3ae14610600578063897742821461062b5780638da5cb5b1461065457806391b89fba1461067f57610259565b806331e79db0116101c75780636a4740021161018b5780636a474002146105165780636f2789ec1461052d57806370a082311461055857806370ae68f014610595578063715018a6146105ac57610259565b806331e79db014610433578063395093511461045c5780633974d3b1146104995780634b1727ff146104c25780635342251a146104eb57610259565b8063226cfa3d1161020e578063226cfa3d1461032657806323b872dd1461036357806327ce0147146103a05780633009a609146103dd578063313ce5671461040857610259565b806303c833021461025e57806306fdde0314610268578063095ea7b31461029357806309bbedde146102d057806318160ddd146102fb57610259565b36610259576102576109f0565b005b600080fd5b6102666109f0565b005b34801561027457600080fd5b5061027d610c26565b60405161028a91906138e6565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906139b0565b610cb8565b6040516102c79190613a0b565b60405180910390f35b3480156102dc57600080fd5b506102e5610cd6565b6040516102f29190613a35565b60405180910390f35b34801561030757600080fd5b50610310610d6e565b60405161031d9190613a35565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613a50565b610d78565b60405161035a9190613a35565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613a7d565b610d90565b6040516103979190613a0b565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613a50565b610ddd565b6040516103d49190613a35565b60405180910390f35b3480156103e957600080fd5b506103f2610e80565b6040516103ff9190613a35565b60405180910390f35b34801561041457600080fd5b5061041d610e86565b60405161042a9190613aec565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613a50565b610e9d565b005b34801561046857600080fd5b50610483600480360381019061047e91906139b0565b611010565b6040516104909190613a0b565b60405180910390f35b3480156104a557600080fd5b506104c060048036038101906104bb9190613a50565b6110c3565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190613c4f565b611412565b005b3480156104f757600080fd5b50610500611459565b60405161050d9190613cf7565b60405180910390f35b34801561052257600080fd5b5061052b61147f565b005b34801561053957600080fd5b5061054261148b565b60405161054f9190613a35565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190613a50565b611491565b60405161058c9190613a35565b60405180910390f35b3480156105a157600080fd5b506105aa6114da565b005b3480156105b857600080fd5b506105c16116ba565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613a50565b61180d565b6040516105f79190613a35565b60405180910390f35b34801561060c57600080fd5b50610615611856565b6040516106229190613a35565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613d7c565b61185c565b005b34801561066057600080fd5b50610669611900565b6040516106769190613dcb565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190613a50565b611929565b6040516106b39190613a35565b60405180910390f35b3480156106c857600080fd5b506106d161193b565b6040516106e49796959493929190613de6565b60405180910390f35b3480156106f957600080fd5b5061070261196b565b60405161070f91906138e6565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906139b0565b6119fd565b60405161074c9190613a0b565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190613a50565b611aca565b6040516107899190613a35565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b491906139b0565b611b2d565b6040516107c69190613a0b565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190613a50565b611b79565b6040516108039190613a35565b60405180910390f35b34801561081857600080fd5b50610833600480360381019061082e9190613a50565b611bc2565b005b34801561084157600080fd5b5061085c60048036038101906108579190613e55565b611c9b565b005b34801561086a57600080fd5b5061088560048036038101906108809190613e82565b611ed2565b6040516108929190613a35565b60405180910390f35b3480156108a757600080fd5b506108b0611f59565b005b3480156108be57600080fd5b506108c7612044565b6040516108d49190613a35565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff9190613e55565b61204e565b005b34801561091257600080fd5b5061092d60048036038101906109289190613a50565b6121b5565b005b34801561093b57600080fd5b5061095660048036038101906109519190613a50565b612376565b60405161096a989796959493929190613edb565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190613e55565b612684565b6040516109a8929190613f59565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d39190613e55565b612900565b6040516109e793929190613f89565b60405180910390f35b60006109fa610d6e565b11610a0457600080fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a619190613dcb565b602060405180830381865afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190613fd5565b9050610aad34611c9b565b6000610b5d82601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b0e9190613dcb565b602060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4f9190613fd5565b612bfb90919063ffffffff16565b90506000811115610c2257610bb2610b73610d6e565b610b9770010000000000000000000000000000000084612c4590919063ffffffff16565b610ba19190614060565b600154612cbf90919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d7845411651182604051610bfe9190613a35565b60405180910390a2610c1b81600b54612cbf90919063ffffffff16565b600b819055505b5050565b606060088054610c35906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c61906140c0565b8015610cae5780601f10610c8357610100808354040283529160200191610cae565b820191906000526020600020905b815481529060010190602001808311610c9157829003601f168201915b5050505050905090565b6000610ccc610cc5612d1d565b8484612d25565b6001905092915050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190613fd5565b905090565b6000600754905090565b600f6020528060005260406000206000915090505481565b600080610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990614163565b60405180910390fd5b600190509392505050565b6000700100000000000000000000000000000000610e6f610e6a600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5c610e57610e4688611491565b600154612c4590919063ffffffff16565b612eee565b612f0b90919063ffffffff16565b612f56565b610e799190614060565b9050919050565b600e5481565b6000600a60009054906101000a900460ff16905090565b610ea5612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f29906141cf565b60405180910390fd5b610f3d816000612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e826040518263ffffffff1660e01b8152600401610f989190613dcb565b600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2560405160405180910390a250565b60006110b961101d612d1d565b846110b4856006600061102e612d1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cbf90919063ffffffff16565b612d25565b6001905092915050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345487d0836040518263ffffffff1660e01b81526004016111209190613dcb565b602060405180830381865afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190613fd5565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e832273836040518263ffffffff1660e01b81526004016111be9190613dcb565b602060405180830381865afa1580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff9190614204565b61135757600061120e82612684565b50905060008111156112b8576112248382612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82884836040518363ffffffff1660e01b8152600401611281929190614231565b600060405180830381600087803b15801561129b57600080fd5b505af11580156112af573d6000803e3d6000fd5b50505050611351565b6112c3836000612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e846040518263ffffffff1660e01b815260040161131e9190613dcb565b600060405180830381600087803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b505050505b50611402565b600061136283611491565b111561140157611373826000612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016113ce9190613dcb565b600060405180830381600087803b1580156113e857600080fd5b505af11580156113fc573d6000803e3d6000fd5b505050505b5b61140d826001612fda565b505050565b60005b8151811015611455576114418282815181106114345761143361425a565b5b60200260200101516110c3565b60018161144e9190614289565b9050611415565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61148833613137565b50565b60105481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114e2612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906141cf565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115cc9190613dcb565b602060405180830381865afa1580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160d9190613fd5565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611655611900565b836040518363ffffffff1660e01b8152600401611673929190614231565b6020604051808303816000875af1158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b69190614204565b5050565b6116c2612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611746906141cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b611864612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906141cf565b60405180910390fd5b6118fb8282612fda565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061193482611aca565b9050919050565b60138060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60606009805461197a906140c0565b80601f01602080910402602001604051908101604052809291908181526020018280546119a6906140c0565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b5050505050905090565b6000611ac0611a0a612d1d565b84611abb85604051806060016040528060258152602001614b256025913960066000611a34612d1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b612d25565b6001905092915050565b6000611b26600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1884610ddd565b612bfb90919063ffffffff16565b9050919050565b600080611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690614163565b60405180910390fd5b6001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bca612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e906141cf565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600267ffffffffffffffff811115611cb857611cb7613b0c565b5b604051908082528060200260200182016040528015611ce65781602001602082028036833780820191505090505b509050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a91906142d2565b81600081518110611d8e57611d8d61425a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611dff57611dfe61425a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401611e9c94939291906143f8565b6000604051808303818588803b158015611eb557600080fd5b505af1158015611ec9573d6000803e3d6000fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f61612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe5906141cf565b60405180910390fd5b6000479050611ffb611900565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612040573d6000803e3d6000fd5b5050565b6000600e54905090565b612056612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da906141cf565b60405180910390fd5b610e1081101580156120f85750620151808111155b612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e906144b6565b60405180910390fd5b601054810361217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290614548565b60405180910390fd5b601054817f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f60405160405180910390a38060108190555050565b6121bd612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461224a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612241906141cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b0906145da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080889750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663564c8d11896040518263ffffffff1660e01b81526004016123e09190613dcb565b602060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190614626565b96507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9550600087126125d657600e548711156124745761246d600e548861334a90919063ffffffff16565b95506125d5565b6000600e54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250a9190613fd5565b116125165760006125bc565b6125bb600e54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ad9190613fd5565b612bfb90919063ffffffff16565b5b90506125d18189612f0b90919063ffffffff16565b9650505b5b6125df88611aca565b94506125ea88610ddd565b9350600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506000831161263d576000612653565b61265260105484612cbf90919063ffffffff16565b5b9150428211612663576000612677565b6126764283612bfb90919063ffffffff16565b5b9050919395975091939597565b600060606000806040518060400160405280600c81526020017f4e6f7420456c696769626c650000000000000000000000000000000000000000815250905060136006015485106127135767016345785d8a000091506040518060400160405280600881526020017f3130204b6172617400000000000000000000000000000000000000000000000081525090505b6013600501548510612763576703782dace9d9000091506040518060400160405280600881526020017f3132204b6172617400000000000000000000000000000000000000000000000081525090505b60136004015485106127b3576706f05b59d3b2000091506040518060400160405280600881526020017f3134204b6172617400000000000000000000000000000000000000000000000081525090505b601360030154851061280357670de0b6b3a764000091506040518060400160405280600881526020017f3138204b6172617400000000000000000000000000000000000000000000000081525090505b601360020154851061285357671bc16d674ec8000091506040518060400160405280600881526020017f3230204b6172617400000000000000000000000000000000000000000000000081525090505b60136001015485106128a357673782dace9d90000091506040518060400160405280600881526020017f3232204b6172617400000000000000000000000000000000000000000000000081525090505b60136000015485106128f357676f05b59d3b20000091506040518060400160405280600981526020017f5075726520476f6c64000000000000000000000000000000000000000000000081525090505b8181935093505050915091565b600080600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129979190613fd5565b9050600081036129b357600080600e5493509350935050612bf4565b6000600e5490506000805a90506000805b89841080156129d257508582105b15612bdb5784806129e290614653565b955050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a769190613fd5565b8510612a8157600094505b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac876040518263ffffffff1660e01b8152600401612ade9190613a35565b602060405180830381865afa158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f91906142d2565b9050612b69600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613395565b15612b8e57612b79816001612fda565b15612b8d578180612b8990614653565b9250505b5b8280612b9990614653565b93505060005a905080851115612bd157612bce612bbf8287612bfb90919063ffffffff16565b87612cbf90919063ffffffff16565b95505b80945050506129c4565b84600e819055508181600e549850985098505050505050505b9193909250565b6000612c3d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132e6565b905092915050565b6000808303612c575760009050612cb9565b60008284612c65919061469b565b9050828482612c749190614060565b14612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab9061474f565b60405180910390fd5b809150505b92915050565b6000808284612cce9190614289565b905083811015612d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0a906147bb565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8b9061484d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfa906148df565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ee19190613a35565b60405180910390a3505050565b6000808290506000811215612f0257600080fd5b80915050919050565b6000808284612f1a91906148ff565b905060008312158015612f2d5750838112155b80612f435750600083128015612f4257508381125b5b612f4c57600080fd5b8091505092915050565b600080821215612f6557600080fd5b819050919050565b6000612f7883611491565b905080821115612fa9576000612f978284612bfb90919063ffffffff16565b9050612fa384826133c8565b50612fd5565b80821015612fd4576000612fc68383612bfb90919063ffffffff16565b9050612fd28482613602565b505b5b505050565b600080612fe684613137565b9050600081111561312b576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506130488183612cbf90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508315158573ffffffffffffffffffffffffffffffffffffffff167fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092846040516131189190613a35565b60405180910390a3600192505050613131565b60009150505b92915050565b60008061314383611aca565b905060008111156132db576131a081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cbf90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d826040516132299190613a35565b60405180910390a2601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161328e929190614964565b6020604051808303816000875af11580156132ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d19190614204565b50809150506132e1565b60009150505b919050565b600083831115829061332e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332591906138e6565b60405180910390fd5b506000838561333d919061498d565b9050809150509392505050565b600080828461335991906149c1565b90506000831215801561336c5750838113155b80613382575060008312801561338157508381135b5b61338b57600080fd5b8091505092915050565b6000428211156133a857600090506133c3565b6010546133be8342612bfb90919063ffffffff16565b101590505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342e90614a50565b60405180910390fd5b61344c81600754612cbf90919063ffffffff16565b6007819055506134a481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cbf90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135459190613a35565b60405180910390a36135bb61356d61356883600154612c4590919063ffffffff16565b612eee565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366890614ae2565b60405180910390fd5b6136dd81604051806060016040528060228152602001614b0360229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373581600754612bfb90919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137999190613a35565b60405180910390a361380f6137c16137bc83600154612c4590919063ffffffff16565b612eee565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0b90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613890578082015181840152602081019050613875565b60008484015250505050565b6000601f19601f8301169050919050565b60006138b882613856565b6138c28185613861565b93506138d2818560208601613872565b6138db8161389c565b840191505092915050565b6000602082019050818103600083015261390081846138ad565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139478261391c565b9050919050565b6139578161393c565b811461396257600080fd5b50565b6000813590506139748161394e565b92915050565b6000819050919050565b61398d8161397a565b811461399857600080fd5b50565b6000813590506139aa81613984565b92915050565b600080604083850312156139c7576139c6613912565b5b60006139d585828601613965565b92505060206139e68582860161399b565b9150509250929050565b60008115159050919050565b613a05816139f0565b82525050565b6000602082019050613a2060008301846139fc565b92915050565b613a2f8161397a565b82525050565b6000602082019050613a4a6000830184613a26565b92915050565b600060208284031215613a6657613a65613912565b5b6000613a7484828501613965565b91505092915050565b600080600060608486031215613a9657613a95613912565b5b6000613aa486828701613965565b9350506020613ab586828701613965565b9250506040613ac68682870161399b565b9150509250925092565b600060ff82169050919050565b613ae681613ad0565b82525050565b6000602082019050613b016000830184613add565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b448261389c565b810181811067ffffffffffffffff82111715613b6357613b62613b0c565b5b80604052505050565b6000613b76613908565b9050613b828282613b3b565b919050565b600067ffffffffffffffff821115613ba257613ba1613b0c565b5b602082029050602081019050919050565b600080fd5b6000613bcb613bc684613b87565b613b6c565b90508083825260208201905060208402830185811115613bee57613bed613bb3565b5b835b81811015613c175780613c038882613965565b845260208401935050602081019050613bf0565b5050509392505050565b600082601f830112613c3657613c35613b07565b5b8135613c46848260208601613bb8565b91505092915050565b600060208284031215613c6557613c64613912565b5b600082013567ffffffffffffffff811115613c8357613c82613917565b5b613c8f84828501613c21565b91505092915050565b6000819050919050565b6000613cbd613cb8613cb38461391c565b613c98565b61391c565b9050919050565b6000613ccf82613ca2565b9050919050565b6000613ce182613cc4565b9050919050565b613cf181613cd6565b82525050565b6000602082019050613d0c6000830184613ce8565b92915050565b6000613d1d8261391c565b9050919050565b613d2d81613d12565b8114613d3857600080fd5b50565b600081359050613d4a81613d24565b92915050565b613d59816139f0565b8114613d6457600080fd5b50565b600081359050613d7681613d50565b92915050565b60008060408385031215613d9357613d92613912565b5b6000613da185828601613d3b565b9250506020613db285828601613d67565b9150509250929050565b613dc58161393c565b82525050565b6000602082019050613de06000830184613dbc565b92915050565b600060e082019050613dfb600083018a613a26565b613e086020830189613a26565b613e156040830188613a26565b613e226060830187613a26565b613e2f6080830186613a26565b613e3c60a0830185613a26565b613e4960c0830184613a26565b98975050505050505050565b600060208284031215613e6b57613e6a613912565b5b6000613e798482850161399b565b91505092915050565b60008060408385031215613e9957613e98613912565b5b6000613ea785828601613965565b9250506020613eb885828601613965565b9150509250929050565b6000819050919050565b613ed581613ec2565b82525050565b600061010082019050613ef1600083018b613dbc565b613efe602083018a613ecc565b613f0b6040830189613ecc565b613f186060830188613a26565b613f256080830187613a26565b613f3260a0830186613a26565b613f3f60c0830185613a26565b613f4c60e0830184613a26565b9998505050505050505050565b6000604082019050613f6e6000830185613a26565b8181036020830152613f8081846138ad565b90509392505050565b6000606082019050613f9e6000830186613a26565b613fab6020830185613a26565b613fb86040830184613a26565b949350505050565b600081519050613fcf81613984565b92915050565b600060208284031215613feb57613fea613912565b5b6000613ff984828501613fc0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061406b8261397a565b91506140768361397a565b92508261408657614085614002565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140d857607f821691505b6020821081036140eb576140ea614091565b5b50919050565b7f4e6f207472616e736665727320616c6c6f77656420696e206469766964656e6460008201527f20747261636b6572000000000000000000000000000000000000000000000000602082015250565b600061414d602883613861565b9150614158826140f1565b604082019050919050565b6000602082019050818103600083015261417c81614140565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141b9602083613861565b91506141c482614183565b602082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b6000815190506141fe81613d50565b92915050565b60006020828403121561421a57614219613912565b5b6000614228848285016141ef565b91505092915050565b60006040820190506142466000830185613dbc565b6142536020830184613a26565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006142948261397a565b915061429f8361397a565b92508282019050808211156142b7576142b6614031565b5b92915050565b6000815190506142cc8161394e565b92915050565b6000602082840312156142e8576142e7613912565b5b60006142f6848285016142bd565b91505092915050565b6000819050919050565b600061432461431f61431a846142ff565b613c98565b61397a565b9050919050565b61433481614309565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61436f8161393c565b82525050565b60006143818383614366565b60208301905092915050565b6000602082019050919050565b60006143a58261433a565b6143af8185614345565b93506143ba83614356565b8060005b838110156143eb5781516143d28882614375565b97506143dd8361438d565b9250506001810190506143be565b5085935050505092915050565b600060808201905061440d600083018761432b565b818103602083015261441f818661439a565b905061442e6040830185613dbc565b61443b6060830184613a26565b95945050505050565b7f436c61696d57616974206d757374206265207570646174656420746f2062657460008201527f7765656e203120616e6420323420686f75727300000000000000000000000000602082015250565b60006144a0603383613861565b91506144ab82614444565b604082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f43616e6e6f742075706461746520636c61696d5761697420746f2073616d652060008201527f76616c7565000000000000000000000000000000000000000000000000000000602082015250565b6000614532602583613861565b915061453d826144d6565b604082019050919050565b6000602082019050818103600083015261456181614525565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145c4602683613861565b91506145cf82614568565b604082019050919050565b600060208201905081810360008301526145f3816145b7565b9050919050565b61460381613ec2565b811461460e57600080fd5b50565b600081519050614620816145fa565b92915050565b60006020828403121561463c5761463b613912565b5b600061464a84828501614611565b91505092915050565b600061465e8261397a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146905761468f614031565b5b600182019050919050565b60006146a68261397a565b91506146b18361397a565b92508282026146bf8161397a565b915082820484148315176146d6576146d5614031565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614739602183613861565b9150614744826146dd565b604082019050919050565b600060208201905081810360008301526147688161472c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147a5601b83613861565b91506147b08261476f565b602082019050919050565b600060208201905081810360008301526147d481614798565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614837602483613861565b9150614842826147db565b604082019050919050565b600060208201905081810360008301526148668161482a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006148c9602283613861565b91506148d48261486d565b604082019050919050565b600060208201905081810360008301526148f8816148bc565b9050919050565b600061490a82613ec2565b915061491583613ec2565b92508282019050828112156000831216838212600084121516171561493d5761493c614031565b5b92915050565b600061494e82613cc4565b9050919050565b61495e81614943565b82525050565b60006040820190506149796000830185614955565b6149866020830184613a26565b9392505050565b60006149988261397a565b91506149a38361397a565b92508282039050818111156149bb576149ba614031565b5b92915050565b60006149cc82613ec2565b91506149d783613ec2565b92508282039050818112600084121682821360008512151617156149fe576149fd614031565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614a3a601f83613861565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614acc602183613861565b9150614ad782614a70565b604082019050919050565b60006020820190508181036000830152614afb81614abf565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d41fbb9894d4ca2b9130666416221aa27b202e1bacfc1aa40f4e5540aa3cba3e64736f6c63430008130033
0x60806040526040518060400160405280600f81526020017f506178476f6c6420545241434b45520000000000000000000000000000000000815250600890816200004a9190620005d4565b506040518060400160405280600881526020017f506178476f6c645400000000000000000000000000000000000000000000000081525060099081620000919190620005d4565b506009600a60006101000a81548160ff021916908360ff160217905550604051620000bc906200034c565b604051809103906000f080158015620000d9573d6000803e3d6000fd5b50600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e10601055737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507345804880de22913dafe09f4980848ece6ecbaf78601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001d757600080fd5b506000620001ea6200034460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060e00160405280676f05b59d3b2000008152602001673782dace9d9000008152602001671bc16d674ec800008152602001670de0b6b3a764000081526020016706f05b59d3b2000081526020016703782dace9d90000815260200167016345785d8a00008152506013600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060155905050620006bb565b600033905090565b610b08806200524a83390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003dc57607f821691505b602082108103620003f257620003f162000394565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200045c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041d565b6200046886836200041d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b5620004af620004a98462000480565b6200048a565b62000480565b9050919050565b6000819050919050565b620004d18362000494565b620004e9620004e082620004bc565b8484546200042a565b825550505050565b600090565b62000500620004f1565b6200050d818484620004c6565b505050565b5b81811015620005355762000529600082620004f6565b60018101905062000513565b5050565b601f82111562000584576200054e81620003f8565b62000559846200040d565b8101602085101562000569578190505b6200058162000578856200040d565b83018262000512565b50505b505050565b600082821c905092915050565b6000620005a96000198460080262000589565b1980831691505092915050565b6000620005c4838362000596565b9150826002028217905092915050565b620005df826200035a565b67ffffffffffffffff811115620005fb57620005fa62000365565b5b620006078254620003c3565b6200061482828562000539565b600060209050601f8311600181146200064c576000841562000637578287015190505b620006438582620005b6565b865550620006b3565b601f1984166200065c86620003f8565b60005b8281101562000686578489015182556001820191506020850194506020810190506200065f565b86831015620006a65784890151620006a2601f89168262000596565b8355505b6001600288020188555050505b505050505050565b614b7f80620006cb6000396000f3fe60806040526004361061024a5760003560e01c8063804974ea11610139578063aafd847a116100b6578063e7841ec01161007a578063e7841ec0146108b2578063e98030c7146108dd578063f2fde38b14610906578063fbcbc0f11461092f578063fcbe5f5a14610973578063ffb2c479146109b157610259565b8063aafd847a146107cf578063cac8d5381461080c578063d202146314610835578063dd62ed3e1461085e578063e0fb0f351461089b57610259565b8063941f915a116100fd578063941f915a146106bc57806395d89b41146106ed578063a457c2d714610718578063a8b9d24014610755578063a9059cbb1461079257610259565b8063804974ea146105c357806385a6b3ae14610600578063897742821461062b5780638da5cb5b1461065457806391b89fba1461067f57610259565b806331e79db0116101c75780636a4740021161018b5780636a474002146105165780636f2789ec1461052d57806370a082311461055857806370ae68f014610595578063715018a6146105ac57610259565b806331e79db014610433578063395093511461045c5780633974d3b1146104995780634b1727ff146104c25780635342251a146104eb57610259565b8063226cfa3d1161020e578063226cfa3d1461032657806323b872dd1461036357806327ce0147146103a05780633009a609146103dd578063313ce5671461040857610259565b806303c833021461025e57806306fdde0314610268578063095ea7b31461029357806309bbedde146102d057806318160ddd146102fb57610259565b36610259576102576109f0565b005b600080fd5b6102666109f0565b005b34801561027457600080fd5b5061027d610c26565b60405161028a91906138e6565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906139b0565b610cb8565b6040516102c79190613a0b565b60405180910390f35b3480156102dc57600080fd5b506102e5610cd6565b6040516102f29190613a35565b60405180910390f35b34801561030757600080fd5b50610310610d6e565b60405161031d9190613a35565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613a50565b610d78565b60405161035a9190613a35565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190613a7d565b610d90565b6040516103979190613a0b565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c29190613a50565b610ddd565b6040516103d49190613a35565b60405180910390f35b3480156103e957600080fd5b506103f2610e80565b6040516103ff9190613a35565b60405180910390f35b34801561041457600080fd5b5061041d610e86565b60405161042a9190613aec565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190613a50565b610e9d565b005b34801561046857600080fd5b50610483600480360381019061047e91906139b0565b611010565b6040516104909190613a0b565b60405180910390f35b3480156104a557600080fd5b506104c060048036038101906104bb9190613a50565b6110c3565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190613c4f565b611412565b005b3480156104f757600080fd5b50610500611459565b60405161050d9190613cf7565b60405180910390f35b34801561052257600080fd5b5061052b61147f565b005b34801561053957600080fd5b5061054261148b565b60405161054f9190613a35565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a9190613a50565b611491565b60405161058c9190613a35565b60405180910390f35b3480156105a157600080fd5b506105aa6114da565b005b3480156105b857600080fd5b506105c16116ba565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613a50565b61180d565b6040516105f79190613a35565b60405180910390f35b34801561060c57600080fd5b50610615611856565b6040516106229190613a35565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613d7c565b61185c565b005b34801561066057600080fd5b50610669611900565b6040516106769190613dcb565b60405180910390f35b34801561068b57600080fd5b506106a660048036038101906106a19190613a50565b611929565b6040516106b39190613a35565b60405180910390f35b3480156106c857600080fd5b506106d161193b565b6040516106e49796959493929190613de6565b60405180910390f35b3480156106f957600080fd5b5061070261196b565b60405161070f91906138e6565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906139b0565b6119fd565b60405161074c9190613a0b565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190613a50565b611aca565b6040516107899190613a35565b60405180910390f35b34801561079e57600080fd5b506107b960048036038101906107b491906139b0565b611b2d565b6040516107c69190613a0b565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190613a50565b611b79565b6040516108039190613a35565b60405180910390f35b34801561081857600080fd5b50610833600480360381019061082e9190613a50565b611bc2565b005b34801561084157600080fd5b5061085c60048036038101906108579190613e55565b611c9b565b005b34801561086a57600080fd5b5061088560048036038101906108809190613e82565b611ed2565b6040516108929190613a35565b60405180910390f35b3480156108a757600080fd5b506108b0611f59565b005b3480156108be57600080fd5b506108c7612044565b6040516108d49190613a35565b60405180910390f35b3480156108e957600080fd5b5061090460048036038101906108ff9190613e55565b61204e565b005b34801561091257600080fd5b5061092d60048036038101906109289190613a50565b6121b5565b005b34801561093b57600080fd5b5061095660048036038101906109519190613a50565b612376565b60405161096a989796959493929190613edb565b60405180910390f35b34801561097f57600080fd5b5061099a60048036038101906109959190613e55565b612684565b6040516109a8929190613f59565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d39190613e55565b612900565b6040516109e793929190613f89565b60405180910390f35b60006109fa610d6e565b11610a0457600080fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a619190613dcb565b602060405180830381865afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190613fd5565b9050610aad34611c9b565b6000610b5d82601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b0e9190613dcb565b602060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4f9190613fd5565b612bfb90919063ffffffff16565b90506000811115610c2257610bb2610b73610d6e565b610b9770010000000000000000000000000000000084612c4590919063ffffffff16565b610ba19190614060565b600154612cbf90919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d7845411651182604051610bfe9190613a35565b60405180910390a2610c1b81600b54612cbf90919063ffffffff16565b600b819055505b5050565b606060088054610c35906140c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c61906140c0565b8015610cae5780601f10610c8357610100808354040283529160200191610cae565b820191906000526020600020905b815481529060010190602001808311610c9157829003601f168201915b5050505050905090565b6000610ccc610cc5612d1d565b8484612d25565b6001905092915050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190613fd5565b905090565b6000600754905090565b600f6020528060005260406000206000915090505481565b600080610dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc990614163565b60405180910390fd5b600190509392505050565b6000700100000000000000000000000000000000610e6f610e6a600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5c610e57610e4688611491565b600154612c4590919063ffffffff16565b612eee565b612f0b90919063ffffffff16565b612f56565b610e799190614060565b9050919050565b600e5481565b6000600a60009054906101000a900460ff16905090565b610ea5612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f29906141cf565b60405180910390fd5b610f3d816000612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e826040518263ffffffff1660e01b8152600401610f989190613dcb565b600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2560405160405180910390a250565b60006110b961101d612d1d565b846110b4856006600061102e612d1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cbf90919063ffffffff16565b612d25565b6001905092915050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345487d0836040518263ffffffff1660e01b81526004016111209190613dcb565b602060405180830381865afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190613fd5565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e832273836040518263ffffffff1660e01b81526004016111be9190613dcb565b602060405180830381865afa1580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff9190614204565b61135757600061120e82612684565b50905060008111156112b8576112248382612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82884836040518363ffffffff1660e01b8152600401611281929190614231565b600060405180830381600087803b15801561129b57600080fd5b505af11580156112af573d6000803e3d6000fd5b50505050611351565b6112c3836000612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e846040518263ffffffff1660e01b815260040161131e9190613dcb565b600060405180830381600087803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b505050505b50611402565b600061136283611491565b111561140157611373826000612f6d565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016113ce9190613dcb565b600060405180830381600087803b1580156113e857600080fd5b505af11580156113fc573d6000803e3d6000fd5b505050505b5b61140d826001612fda565b505050565b60005b8151811015611455576114418282815181106114345761143361425a565b5b60200260200101516110c3565b60018161144e9190614289565b9050611415565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61148833613137565b50565b60105481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114e2612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611566906141cf565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115cc9190613dcb565b602060405180830381865afa1580156115e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160d9190613fd5565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611655611900565b836040518363ffffffff1660e01b8152600401611673929190614231565b6020604051808303816000875af1158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b69190614204565b5050565b6116c2612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611746906141cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b611864612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906141cf565b60405180910390fd5b6118fb8282612fda565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061193482611aca565b9050919050565b60138060000154908060010154908060020154908060030154908060040154908060050154908060060154905087565b60606009805461197a906140c0565b80601f01602080910402602001604051908101604052809291908181526020018280546119a6906140c0565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b5050505050905090565b6000611ac0611a0a612d1d565b84611abb85604051806060016040528060258152602001614b256025913960066000611a34612d1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b612d25565b6001905092915050565b6000611b26600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b1884610ddd565b612bfb90919063ffffffff16565b9050919050565b600080611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690614163565b60405180910390fd5b6001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611bca612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e906141cf565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600267ffffffffffffffff811115611cb857611cb7613b0c565b5b604051908082528060200260200182016040528015611ce65781602001602082028036833780820191505090505b509050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a91906142d2565b81600081518110611d8e57611d8d61425a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611dff57611dfe61425a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401611e9c94939291906143f8565b6000604051808303818588803b158015611eb557600080fd5b505af1158015611ec9573d6000803e3d6000fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f61612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe5906141cf565b60405180910390fd5b6000479050611ffb611900565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612040573d6000803e3d6000fd5b5050565b6000600e54905090565b612056612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da906141cf565b60405180910390fd5b610e1081101580156120f85750620151808111155b612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e906144b6565b60405180910390fd5b601054810361217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290614548565b60405180910390fd5b601054817f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f60405160405180910390a38060108190555050565b6121bd612d1d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461224a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612241906141cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b0906145da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080889750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663564c8d11896040518263ffffffff1660e01b81526004016123e09190613dcb565b602060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190614626565b96507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9550600087126125d657600e548711156124745761246d600e548861334a90919063ffffffff16565b95506125d5565b6000600e54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250a9190613fd5565b116125165760006125bc565b6125bb600e54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ad9190613fd5565b612bfb90919063ffffffff16565b5b90506125d18189612f0b90919063ffffffff16565b9650505b5b6125df88611aca565b94506125ea88610ddd565b9350600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506000831161263d576000612653565b61265260105484612cbf90919063ffffffff16565b5b9150428211612663576000612677565b6126764283612bfb90919063ffffffff16565b5b9050919395975091939597565b600060606000806040518060400160405280600c81526020017f4e6f7420456c696769626c650000000000000000000000000000000000000000815250905060136006015485106127135767016345785d8a000091506040518060400160405280600881526020017f3130204b6172617400000000000000000000000000000000000000000000000081525090505b6013600501548510612763576703782dace9d9000091506040518060400160405280600881526020017f3132204b6172617400000000000000000000000000000000000000000000000081525090505b60136004015485106127b3576706f05b59d3b2000091506040518060400160405280600881526020017f3134204b6172617400000000000000000000000000000000000000000000000081525090505b601360030154851061280357670de0b6b3a764000091506040518060400160405280600881526020017f3138204b6172617400000000000000000000000000000000000000000000000081525090505b601360020154851061285357671bc16d674ec8000091506040518060400160405280600881526020017f3230204b6172617400000000000000000000000000000000000000000000000081525090505b60136001015485106128a357673782dace9d90000091506040518060400160405280600881526020017f3232204b6172617400000000000000000000000000000000000000000000000081525090505b60136000015485106128f357676f05b59d3b20000091506040518060400160405280600981526020017f5075726520476f6c64000000000000000000000000000000000000000000000081525090505b8181935093505050915091565b600080600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129979190613fd5565b9050600081036129b357600080600e5493509350935050612bf4565b6000600e5490506000805a90506000805b89841080156129d257508582105b15612bdb5784806129e290614653565b955050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a769190613fd5565b8510612a8157600094505b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac876040518263ffffffff1660e01b8152600401612ade9190613a35565b602060405180830381865afa158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f91906142d2565b9050612b69600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613395565b15612b8e57612b79816001612fda565b15612b8d578180612b8990614653565b9250505b5b8280612b9990614653565b93505060005a905080851115612bd157612bce612bbf8287612bfb90919063ffffffff16565b87612cbf90919063ffffffff16565b95505b80945050506129c4565b84600e819055508181600e549850985098505050505050505b9193909250565b6000612c3d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132e6565b905092915050565b6000808303612c575760009050612cb9565b60008284612c65919061469b565b9050828482612c749190614060565b14612cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cab9061474f565b60405180910390fd5b809150505b92915050565b6000808284612cce9190614289565b905083811015612d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0a906147bb565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8b9061484d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfa906148df565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ee19190613a35565b60405180910390a3505050565b6000808290506000811215612f0257600080fd5b80915050919050565b6000808284612f1a91906148ff565b905060008312158015612f2d5750838112155b80612f435750600083128015612f4257508381125b5b612f4c57600080fd5b8091505092915050565b600080821215612f6557600080fd5b819050919050565b6000612f7883611491565b905080821115612fa9576000612f978284612bfb90919063ffffffff16565b9050612fa384826133c8565b50612fd5565b80821015612fd4576000612fc68383612bfb90919063ffffffff16565b9050612fd28482613602565b505b5b505050565b600080612fe684613137565b9050600081111561312b576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506130488183612cbf90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508315158573ffffffffffffffffffffffffffffffffffffffff167fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092846040516131189190613a35565b60405180910390a3600192505050613131565b60009150505b92915050565b60008061314383611aca565b905060008111156132db576131a081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cbf90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d826040516132299190613a35565b60405180910390a2601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161328e929190614964565b6020604051808303816000875af11580156132ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d19190614204565b50809150506132e1565b60009150505b919050565b600083831115829061332e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332591906138e6565b60405180910390fd5b506000838561333d919061498d565b9050809150509392505050565b600080828461335991906149c1565b90506000831215801561336c5750838113155b80613382575060008312801561338157508381135b5b61338b57600080fd5b8091505092915050565b6000428211156133a857600090506133c3565b6010546133be8342612bfb90919063ffffffff16565b101590505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342e90614a50565b60405180910390fd5b61344c81600754612cbf90919063ffffffff16565b6007819055506134a481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cbf90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135459190613a35565b60405180910390a36135bb61356d61356883600154612c4590919063ffffffff16565b612eee565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366890614ae2565b60405180910390fd5b6136dd81604051806060016040528060228152602001614b0360229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e69092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061373581600754612bfb90919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137999190613a35565b60405180910390a361380f6137c16137bc83600154612c4590919063ffffffff16565b612eee565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0b90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613890578082015181840152602081019050613875565b60008484015250505050565b6000601f19601f8301169050919050565b60006138b882613856565b6138c28185613861565b93506138d2818560208601613872565b6138db8161389c565b840191505092915050565b6000602082019050818103600083015261390081846138ad565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139478261391c565b9050919050565b6139578161393c565b811461396257600080fd5b50565b6000813590506139748161394e565b92915050565b6000819050919050565b61398d8161397a565b811461399857600080fd5b50565b6000813590506139aa81613984565b92915050565b600080604083850312156139c7576139c6613912565b5b60006139d585828601613965565b92505060206139e68582860161399b565b9150509250929050565b60008115159050919050565b613a05816139f0565b82525050565b6000602082019050613a2060008301846139fc565b92915050565b613a2f8161397a565b82525050565b6000602082019050613a4a6000830184613a26565b92915050565b600060208284031215613a6657613a65613912565b5b6000613a7484828501613965565b91505092915050565b600080600060608486031215613a9657613a95613912565b5b6000613aa486828701613965565b9350506020613ab586828701613965565b9250506040613ac68682870161399b565b9150509250925092565b600060ff82169050919050565b613ae681613ad0565b82525050565b6000602082019050613b016000830184613add565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b448261389c565b810181811067ffffffffffffffff82111715613b6357613b62613b0c565b5b80604052505050565b6000613b76613908565b9050613b828282613b3b565b919050565b600067ffffffffffffffff821115613ba257613ba1613b0c565b5b602082029050602081019050919050565b600080fd5b6000613bcb613bc684613b87565b613b6c565b90508083825260208201905060208402830185811115613bee57613bed613bb3565b5b835b81811015613c175780613c038882613965565b845260208401935050602081019050613bf0565b5050509392505050565b600082601f830112613c3657613c35613b07565b5b8135613c46848260208601613bb8565b91505092915050565b600060208284031215613c6557613c64613912565b5b600082013567ffffffffffffffff811115613c8357613c82613917565b5b613c8f84828501613c21565b91505092915050565b6000819050919050565b6000613cbd613cb8613cb38461391c565b613c98565b61391c565b9050919050565b6000613ccf82613ca2565b9050919050565b6000613ce182613cc4565b9050919050565b613cf181613cd6565b82525050565b6000602082019050613d0c6000830184613ce8565b92915050565b6000613d1d8261391c565b9050919050565b613d2d81613d12565b8114613d3857600080fd5b50565b600081359050613d4a81613d24565b92915050565b613d59816139f0565b8114613d6457600080fd5b50565b600081359050613d7681613d50565b92915050565b60008060408385031215613d9357613d92613912565b5b6000613da185828601613d3b565b9250506020613db285828601613d67565b9150509250929050565b613dc58161393c565b82525050565b6000602082019050613de06000830184613dbc565b92915050565b600060e082019050613dfb600083018a613a26565b613e086020830189613a26565b613e156040830188613a26565b613e226060830187613a26565b613e2f6080830186613a26565b613e3c60a0830185613a26565b613e4960c0830184613a26565b98975050505050505050565b600060208284031215613e6b57613e6a613912565b5b6000613e798482850161399b565b91505092915050565b60008060408385031215613e9957613e98613912565b5b6000613ea785828601613965565b9250506020613eb885828601613965565b9150509250929050565b6000819050919050565b613ed581613ec2565b82525050565b600061010082019050613ef1600083018b613dbc565b613efe602083018a613ecc565b613f0b6040830189613ecc565b613f186060830188613a26565b613f256080830187613a26565b613f3260a0830186613a26565b613f3f60c0830185613a26565b613f4c60e0830184613a26565b9998505050505050505050565b6000604082019050613f6e6000830185613a26565b8181036020830152613f8081846138ad565b90509392505050565b6000606082019050613f9e6000830186613a26565b613fab6020830185613a26565b613fb86040830184613a26565b949350505050565b600081519050613fcf81613984565b92915050565b600060208284031215613feb57613fea613912565b5b6000613ff984828501613fc0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061406b8261397a565b91506140768361397a565b92508261408657614085614002565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140d857607f821691505b6020821081036140eb576140ea614091565b5b50919050565b7f4e6f207472616e736665727320616c6c6f77656420696e206469766964656e6460008201527f20747261636b6572000000000000000000000000000000000000000000000000602082015250565b600061414d602883613861565b9150614158826140f1565b604082019050919050565b6000602082019050818103600083015261417c81614140565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141b9602083613861565b91506141c482614183565b602082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b6000815190506141fe81613d50565b92915050565b60006020828403121561421a57614219613912565b5b6000614228848285016141ef565b91505092915050565b60006040820190506142466000830185613dbc565b6142536020830184613a26565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006142948261397a565b915061429f8361397a565b92508282019050808211156142b7576142b6614031565b5b92915050565b6000815190506142cc8161394e565b92915050565b6000602082840312156142e8576142e7613912565b5b60006142f6848285016142bd565b91505092915050565b6000819050919050565b600061432461431f61431a846142ff565b613c98565b61397a565b9050919050565b61433481614309565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61436f8161393c565b82525050565b60006143818383614366565b60208301905092915050565b6000602082019050919050565b60006143a58261433a565b6143af8185614345565b93506143ba83614356565b8060005b838110156143eb5781516143d28882614375565b97506143dd8361438d565b9250506001810190506143be565b5085935050505092915050565b600060808201905061440d600083018761432b565b818103602083015261441f818661439a565b905061442e6040830185613dbc565b61443b6060830184613a26565b95945050505050565b7f436c61696d57616974206d757374206265207570646174656420746f2062657460008201527f7765656e203120616e6420323420686f75727300000000000000000000000000602082015250565b60006144a0603383613861565b91506144ab82614444565b604082019050919050565b600060208201905081810360008301526144cf81614493565b9050919050565b7f43616e6e6f742075706461746520636c61696d5761697420746f2073616d652060008201527f76616c7565000000000000000000000000000000000000000000000000000000602082015250565b6000614532602583613861565b915061453d826144d6565b604082019050919050565b6000602082019050818103600083015261456181614525565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145c4602683613861565b91506145cf82614568565b604082019050919050565b600060208201905081810360008301526145f3816145b7565b9050919050565b61460381613ec2565b811461460e57600080fd5b50565b600081519050614620816145fa565b92915050565b60006020828403121561463c5761463b613912565b5b600061464a84828501614611565b91505092915050565b600061465e8261397a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146905761468f614031565b5b600182019050919050565b60006146a68261397a565b91506146b18361397a565b92508282026146bf8161397a565b915082820484148315176146d6576146d5614031565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614739602183613861565b9150614744826146dd565b604082019050919050565b600060208201905081810360008301526147688161472c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006147a5601b83613861565b91506147b08261476f565b602082019050919050565b600060208201905081810360008301526147d481614798565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614837602483613861565b9150614842826147db565b604082019050919050565b600060208201905081810360008301526148668161482a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006148c9602283613861565b91506148d48261486d565b604082019050919050565b600060208201905081810360008301526148f8816148bc565b9050919050565b600061490a82613ec2565b915061491583613ec2565b92508282019050828112156000831216838212600084121516171561493d5761493c614031565b5b92915050565b600061494e82613cc4565b9050919050565b61495e81614943565b82525050565b60006040820190506149796000830185614955565b6149866020830184613a26565b9392505050565b60006149988261397a565b91506149a38361397a565b92508282039050818111156149bb576149ba614031565b5b92915050565b60006149cc82613ec2565b91506149d783613ec2565b92508282039050818112600084121682821360008512151617156149fe576149fd614031565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614a3a601f83613861565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614acc602183613861565b9150614ad782614a70565b604082019050919050565b60006020820190508181036000830152614afb81614abf565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d41fbb9894d4ca2b9130666416221aa27b202e1bacfc1aa40f4e5540aa3cba3e64736f6c63430008130033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220f6e9d89eab67759c7f39bb792460c7e183bf328b6de8c893761ece99f8c06c8064736f6c63430008130033