60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801561004357600080fd5b506080516141d361006d600039600081816113e70152818161143c015261160701526141d36000f3fe6080604052600436106101345760003560e01c8063862440e2116100ab578063ad3cb1cc1161006f578063ad3cb1cc14610412578063bf7e214f1461043d578063e8a3d48514610468578063e985e9c514610493578063f242432a146104d0578063f399e22e146104f957610134565b8063862440e2146103435780638a9e82051461036c5780638fb3603714610395578063938e3d7b146103c0578063a22cb465146103e957610134565b80634f1ef286116100fd5780634f1ef286146102565780635023cb191461027257806352d1902d1461029d57806355f804b3146102c85780637269eb44146102f15780637a9e5e4b1461031a57610134565b8062fdd58e1461013957806301ffc9a7146101765780630e89341c146101b35780632eb2c2d6146101f05780634e1273f414610219575b600080fd5b34801561014557600080fd5b50610160600480360381019061015b9190612aa4565b610522565b60405161016d9190612af3565b60405180910390f35b34801561018257600080fd5b5061019d60048036038101906101989190612b66565b61058b565b6040516101aa9190612bae565b60405180910390f35b3480156101bf57600080fd5b506101da60048036038101906101d59190612bc9565b61066d565b6040516101e79190612c86565b60405180910390f35b3480156101fc57600080fd5b5061021760048036038101906102129190612ea5565b610763565b005b34801561022557600080fd5b50610240600480360381019061023b9190613037565b61080b565b60405161024d919061316d565b60405180910390f35b610270600480360381019061026b919061318f565b610914565b005b34801561027e57600080fd5b50610287610933565b604051610294919061320a565b60405180910390f35b3480156102a957600080fd5b506102b261094d565b6040516102bf919061323e565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea91906132fa565b610980565b005b3480156102fd57600080fd5b506103186004803603810190610313919061336f565b6109a4565b005b34801561032657600080fd5b50610341600480360381019061033c919061339c565b6109e0565b005b34801561034f57600080fd5b5061036a600480360381019061036591906133c9565b610acc565b005b34801561037857600080fd5b50610393600480360381019061038e9190613480565b610af2565b005b3480156103a157600080fd5b506103aa610c87565b6040516103b79190613503565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e291906132fa565b610cc3565b005b3480156103f557600080fd5b50610410600480360381019061040b919061354a565b610d1a565b005b34801561041e57600080fd5b50610427610d30565b6040516104349190612c86565b60405180910390f35b34801561044957600080fd5b50610452610d69565b60405161045f9190613599565b60405180910390f35b34801561047457600080fd5b5061047d610da1565b60405161048a9190612c86565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b591906135b4565b610e33565b6040516104c79190612bae565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f291906135f4565b610ed5565b005b34801561050557600080fd5b50610520600480360381019061051b919061368b565b610f7d565b005b60008061052d611160565b905080600001600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061065657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610666575061066582611188565b5b9050919050565b606060006106796111f2565b90506000816001016000858152602001908152602001600020805461069d90613716565b80601f01602080910402602001604051908101604052809291908181526020018280546106c990613716565b80156107165780601f106106eb57610100808354040283529160200191610716565b820191906000526020600020905b8154815290600101906020018083116106f957829003601f168201915b5050505050905060008151116107345761072f8461121a565b61075a565b816000018160405160200161074a92919061381b565b6040516020818303038152906040525b92505050919050565b600061076d6112bd565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156107b257506107b08682610e33565b155b156107f65780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016107ed92919061383f565b60405180910390fd5b61080386868686866112c5565b505050505050565b6060815183511461085757815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161084e929190613868565b60405180910390fd5b6000835167ffffffffffffffff81111561087457610873612cad565b5b6040519080825280602002602001820160405280156108a25781602001602082028036833780820191505090505b50905060005b8451811015610909576108df6108c782876113bd90919063ffffffff16565b6108da83876113d190919063ffffffff16565b610522565b8282815181106108f2576108f1613891565b5b6020026020010181815250508060010190506108a8565b508091505092915050565b61091c6113e5565b610925826114cb565b61092f82826114e6565b5050565b6000600260009054906101000a900463ffffffff16905090565b6000610957611605565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b61099861098b6112bd565b61099361168c565b611699565b6109a1816117ec565b50565b6109bc6109af6112bd565b6109b761168c565b611699565b80600260006101000a81548163ffffffff021916908363ffffffff16021790555050565b60006109ea6112bd565b90506109f4610d69565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a6357806040517f068ca9d8000000000000000000000000000000000000000000000000000000008152600401610a5a9190613599565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff163b03610abf57816040517fc2f31e5e000000000000000000000000000000000000000000000000000000008152600401610ab69190613599565b60405180910390fd5b610ac88261180e565b5050565b610ae4610ad76112bd565b610adf61168c565b611699565b610aee8282611898565b5050565b610b0a610afd6112bd565b610b0561168c565b611699565b600260009054906101000a900463ffffffff1663ffffffff16838390501115610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061390c565b60405180910390fd5b6001600082815260200190815260200160002060009054906101000a900460ff1615610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613978565b60405180910390fd5b600180600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b83839050811015610c8057610c7385858584818110610c1957610c18613891565b5b9050602002810190610c2b91906139a7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061190c565b8080600101915050610bf7565b5050505050565b600080610c92611953565b90508060000160149054906101000a900460ff16610cb457600060e01b610cbd565b638fb3603760e01b5b91505090565b610cdb610cce6112bd565b610cd661168c565b611699565b8060039081610cea9190613ba1565b507fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad96260405160405180910390a150565b610d2c610d256112bd565b838361197b565b5050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b600080610d74611953565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b606060038054610db090613716565b80601f0160208091040260200160405190810160405280929190818152602001828054610ddc90613716565b8015610e295780601f10610dfe57610100808354040283529160200191610e29565b820191906000526020600020905b815481529060010190602001808311610e0c57829003601f168201915b5050505050905090565b600080610e3e611160565b90508060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b6000610edf6112bd565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610f245750610f228682610e33565b155b15610f685780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610f5f92919061383f565b60405180910390fd5b610f758686868686611afa565b505050505050565b6000610f87611c05565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610fd55750825b9050600060018367ffffffffffffffff1614801561100a575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611018575080155b1561104f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561109f5760018560000160086101000a81548160ff0219169083151502179055505b6110b760405180602001604052806000815250611c2d565b6110c087611c41565b6103e86000819055506064600260006101000a81548163ffffffff021916908363ffffffff16021790555085600390816110fa9190613ba1565b5083156111575760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161114e9190613cc2565b60405180910390a15b50505050505050565b60007f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60007f89fc852226e759c7c636cf34d732f0198fc56a54876b2374a52beb7b0c558600905090565b60606000611226611160565b905080600201805461123790613716565b80601f016020809104026020016040519081016040528092919081815260200182805461126390613716565b80156112b05780601f10611285576101008083540402835291602001916112b0565b820191906000526020600020905b81548152906001019060200180831161129357829003601f168201915b5050505050915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113375760006040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161132e9190613599565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036113a95760006040517f01a835140000000000000000000000000000000000000000000000000000000081526004016113a09190613599565b60405180910390fd5b6113b68585858585611c55565b5050505050565b600060208202602084010151905092915050565b600060208202602084010151905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061149257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611479611d07565b73ffffffffffffffffffffffffffffffffffffffff1614155b156114c9576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6114e36114d66112bd565b6114de61168c565b611699565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561154e57506040513d601f19601f8201168201806040525081019061154b9190613d09565b60015b61158f57816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016115869190613599565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146115f657806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016115ed919061323e565b60405180910390fd5b6116008383611d5e565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461168a576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b3660008036915091509091565b60006116a3611953565b90506000806116d96116b3610d69565b873088886000906004926116c993929190613d40565b906116d49190613d86565b611dd1565b91509150816117e45760008163ffffffff1611156117a65760018360000160146101000a81548160ff021916908315150217905550611716610d69565b73ffffffffffffffffffffffffffffffffffffffff166394c7d7ee8787876040518463ffffffff1660e01b815260040161175293929190613e23565b600060405180830381600087803b15801561176c57600080fd5b505af1158015611780573d6000803e3d6000fd5b5050505060008360000160146101000a81548160ff0219169083151502179055506117e3565b856040517f068ca9d80000000000000000000000000000000000000000000000000000000081526004016117da9190613599565b60405180910390fd5b5b505050505050565b60006117f66111f2565b9050818160000190816118099190613ba1565b505050565b6000611818611953565b9050818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad8260405161188c9190613599565b60405180910390a15050565b60006118a26111f2565b90508181600101600085815260200190815260200160002090816118c69190613ba1565b50827f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b6118f28561066d565b6040516118ff9190612c86565b60405180910390a2505050565b61192a82600054600160405180602001604052806000815250611ef7565b61193660005482611898565b60016000808282546119489190613e84565b925050819055505050565b60007ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00905090565b6000611985611160565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119f95760006040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016119f09190613599565b60405180910390fd5b818160010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051611aec9190612bae565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b6c5760006040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611b639190613599565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611bde5760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611bd59190613599565b60405180910390fd5b600080611beb8585611f90565b91509150611bfc8787848487611c55565b50505050505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611c35611fc0565b611c3e81612000565b50565b611c49611fc0565b611c5281612014565b50565b611c6185858585612028565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d00576000611c9f6112bd565b90506001845103611cef576000611cc06000866113d190919063ffffffff16565b90506000611cd86000866113d190919063ffffffff16565b9050611ce88389898585896123e6565b5050611cfe565b611cfd81878787878761259a565b5b505b5050505050565b6000611d357f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61274e565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d6782612758565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a2600081511115611dc457611dbe8282612825565b50611dcd565b611dcc6128a9565b5b5050565b6000806000808773ffffffffffffffffffffffffffffffffffffffff16878787604051602401611e0393929190613eb8565b60405160208183030381529060405263b700961360e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611e559190613f36565b600060405180830381855afa9150503d8060008114611e90576040519150601f19603f3d011682016040523d82523d6000602084013e611e95565b606091505b50915091508115611eec576040815110611eca5780806020019051810190611ebd9190613f77565b8094508195505050611eeb565b6020815110611eea5780806020019051810190611ee79190613fb7565b93505b5b5b505094509492505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f695760006040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611f609190613599565b60405180910390fd5b600080611f768585611f90565b91509150611f88600087848487611c55565b505050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b611fc86128e6565b611ffe576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612008611fc0565b61201181612906565b50565b61201c611fc0565b6120258161180e565b50565b6000612032611160565b9050815183511461207e57825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401612075929190613868565b60405180910390fd5b60006120886112bd565b905060005b84518110156122a05760006120ab82876113d190919063ffffffff16565b905060006120c283876113d190919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146121f557600085600001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561219a57898183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016121919493929190613fe4565b60405180910390fd5b81810386600001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612293578085600001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228b9190613e84565b925050819055505b505080600101905061208d565b50600184510361235f5760006122c06000866113d190919063ffffffff16565b905060006122d86000866113d190919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612350929190613868565b60405180910390a450506123de565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516123d5929190614029565b60405180910390a45b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115612592578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612447959493929190614099565b6020604051808303816000875af192505050801561248357506040513d601f19601f820116820180604052508101906124809190614108565b60015b612507573d80600081146124b3576040519150601f19603f3d011682016040523d82523d6000602084013e6124b8565b606091505b5060008151036124ff57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124f69190613599565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461259057846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016125879190613599565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115612746578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016125fb959493929190614135565b6020604051808303816000875af192505050801561263757506040513d601f19601f820116820180604052508101906126349190614108565b60015b6126bb573d8060008114612667576040519150601f19603f3d011682016040523d82523d6000602084013e61266c565b606091505b5060008151036126b357846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016126aa9190613599565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461274457846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161273b9190613599565b60405180910390fd5b505b505050505050565b6000819050919050565b60008173ffffffffffffffffffffffffffffffffffffffff163b036127b457806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016127ab9190613599565b60405180910390fd5b806127e17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61274e565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161284f9190613f36565b600060405180830381855af49150503d806000811461288a576040519150601f19603f3d011682016040523d82523d6000602084013e61288f565b606091505b509150915061289f858383612928565b9250505092915050565b60003411156128e4576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006128f0611c05565b60000160089054906101000a900460ff16905090565b6000612910611160565b9050818160020190816129239190613ba1565b505050565b60608261293d57612938826129b7565b6129af565b60008251148015612965575060008473ffffffffffffffffffffffffffffffffffffffff163b145b156129a757836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161299e9190613599565b60405180910390fd5b8190506129b0565b5b9392505050565b6000815111156129ca5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a3b82612a10565b9050919050565b612a4b81612a30565b8114612a5657600080fd5b50565b600081359050612a6881612a42565b92915050565b6000819050919050565b612a8181612a6e565b8114612a8c57600080fd5b50565b600081359050612a9e81612a78565b92915050565b60008060408385031215612abb57612aba612a06565b5b6000612ac985828601612a59565b9250506020612ada85828601612a8f565b9150509250929050565b612aed81612a6e565b82525050565b6000602082019050612b086000830184612ae4565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612b4381612b0e565b8114612b4e57600080fd5b50565b600081359050612b6081612b3a565b92915050565b600060208284031215612b7c57612b7b612a06565b5b6000612b8a84828501612b51565b91505092915050565b60008115159050919050565b612ba881612b93565b82525050565b6000602082019050612bc36000830184612b9f565b92915050565b600060208284031215612bdf57612bde612a06565b5b6000612bed84828501612a8f565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c30578082015181840152602081019050612c15565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c5882612bf6565b612c628185612c01565b9350612c72818560208601612c12565b612c7b81612c3c565b840191505092915050565b60006020820190508181036000830152612ca08184612c4d565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ce582612c3c565b810181811067ffffffffffffffff82111715612d0457612d03612cad565b5b80604052505050565b6000612d176129fc565b9050612d238282612cdc565b919050565b600067ffffffffffffffff821115612d4357612d42612cad565b5b602082029050602081019050919050565b600080fd5b6000612d6c612d6784612d28565b612d0d565b90508083825260208201905060208402830185811115612d8f57612d8e612d54565b5b835b81811015612db85780612da48882612a8f565b845260208401935050602081019050612d91565b5050509392505050565b600082601f830112612dd757612dd6612ca8565b5b8135612de7848260208601612d59565b91505092915050565b600080fd5b600067ffffffffffffffff821115612e1057612e0f612cad565b5b612e1982612c3c565b9050602081019050919050565b82818337600083830152505050565b6000612e48612e4384612df5565b612d0d565b905082815260208101848484011115612e6457612e63612df0565b5b612e6f848285612e26565b509392505050565b600082601f830112612e8c57612e8b612ca8565b5b8135612e9c848260208601612e35565b91505092915050565b600080600080600060a08688031215612ec157612ec0612a06565b5b6000612ecf88828901612a59565b9550506020612ee088828901612a59565b945050604086013567ffffffffffffffff811115612f0157612f00612a0b565b5b612f0d88828901612dc2565b935050606086013567ffffffffffffffff811115612f2e57612f2d612a0b565b5b612f3a88828901612dc2565b925050608086013567ffffffffffffffff811115612f5b57612f5a612a0b565b5b612f6788828901612e77565b9150509295509295909350565b600067ffffffffffffffff821115612f8f57612f8e612cad565b5b602082029050602081019050919050565b6000612fb3612fae84612f74565b612d0d565b90508083825260208201905060208402830185811115612fd657612fd5612d54565b5b835b81811015612fff5780612feb8882612a59565b845260208401935050602081019050612fd8565b5050509392505050565b600082601f83011261301e5761301d612ca8565b5b813561302e848260208601612fa0565b91505092915050565b6000806040838503121561304e5761304d612a06565b5b600083013567ffffffffffffffff81111561306c5761306b612a0b565b5b61307885828601613009565b925050602083013567ffffffffffffffff81111561309957613098612a0b565b5b6130a585828601612dc2565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130e481612a6e565b82525050565b60006130f683836130db565b60208301905092915050565b6000602082019050919050565b600061311a826130af565b61312481856130ba565b935061312f836130cb565b8060005b8381101561316057815161314788826130ea565b975061315283613102565b925050600181019050613133565b5085935050505092915050565b60006020820190508181036000830152613187818461310f565b905092915050565b600080604083850312156131a6576131a5612a06565b5b60006131b485828601612a59565b925050602083013567ffffffffffffffff8111156131d5576131d4612a0b565b5b6131e185828601612e77565b9150509250929050565b600063ffffffff82169050919050565b613204816131eb565b82525050565b600060208201905061321f60008301846131fb565b92915050565b6000819050919050565b61323881613225565b82525050565b6000602082019050613253600083018461322f565b92915050565b600067ffffffffffffffff82111561327457613273612cad565b5b61327d82612c3c565b9050602081019050919050565b600061329d61329884613259565b612d0d565b9050828152602081018484840111156132b9576132b8612df0565b5b6132c4848285612e26565b509392505050565b600082601f8301126132e1576132e0612ca8565b5b81356132f184826020860161328a565b91505092915050565b6000602082840312156133105761330f612a06565b5b600082013567ffffffffffffffff81111561332e5761332d612a0b565b5b61333a848285016132cc565b91505092915050565b61334c816131eb565b811461335757600080fd5b50565b60008135905061336981613343565b92915050565b60006020828403121561338557613384612a06565b5b60006133938482850161335a565b91505092915050565b6000602082840312156133b2576133b1612a06565b5b60006133c084828501612a59565b91505092915050565b600080604083850312156133e0576133df612a06565b5b60006133ee85828601612a8f565b925050602083013567ffffffffffffffff81111561340f5761340e612a0b565b5b61341b858286016132cc565b9150509250929050565b600080fd5b60008083601f8401126134405761343f612ca8565b5b8235905067ffffffffffffffff81111561345d5761345c613425565b5b60208301915083602082028301111561347957613478612d54565b5b9250929050565b6000806000806060858703121561349a57613499612a06565b5b60006134a887828801612a59565b945050602085013567ffffffffffffffff8111156134c9576134c8612a0b565b5b6134d58782880161342a565b935093505060406134e887828801612a8f565b91505092959194509250565b6134fd81612b0e565b82525050565b600060208201905061351860008301846134f4565b92915050565b61352781612b93565b811461353257600080fd5b50565b6000813590506135448161351e565b92915050565b6000806040838503121561356157613560612a06565b5b600061356f85828601612a59565b925050602061358085828601613535565b9150509250929050565b61359381612a30565b82525050565b60006020820190506135ae600083018461358a565b92915050565b600080604083850312156135cb576135ca612a06565b5b60006135d985828601612a59565b92505060206135ea85828601612a59565b9150509250929050565b600080600080600060a086880312156136105761360f612a06565b5b600061361e88828901612a59565b955050602061362f88828901612a59565b945050604061364088828901612a8f565b935050606061365188828901612a8f565b925050608086013567ffffffffffffffff81111561367257613671612a0b565b5b61367e88828901612e77565b9150509295509295909350565b600080604083850312156136a2576136a1612a06565b5b60006136b085828601612a59565b925050602083013567ffffffffffffffff8111156136d1576136d0612a0b565b5b6136dd858286016132cc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061372e57607f821691505b602082108103613741576137406136e7565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461377481613716565b61377e8186613747565b9450600182166000811461379957600181146137ae576137e1565b60ff19831686528115158202860193506137e1565b6137b785613752565b60005b838110156137d9578154818901526001820191506020810190506137ba565b838801955050505b50505092915050565b60006137f582612bf6565b6137ff8185613747565b935061380f818560208601612c12565b80840191505092915050565b60006138278285613767565b915061383382846137ea565b91508190509392505050565b6000604082019050613854600083018561358a565b613861602083018461358a565b9392505050565b600060408201905061387d6000830185612ae4565b61388a6020830184612ae4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f426174636820697320746f6f206c617267650000000000000000000000000000600082015250565b60006138f6601283612c01565b9150613901826138c0565b602082019050919050565b60006020820190508181036000830152613925816138e9565b9050919050565b7f4e6f6e636520616c726561647920757365640000000000000000000000000000600082015250565b6000613962601283612c01565b915061396d8261392c565b602082019050919050565b6000602082019050818103600083015261399181613955565b9050919050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126139c4576139c3613998565b5b80840192508235915067ffffffffffffffff8211156139e6576139e561399d565b5b602083019250600182023603831315613a0257613a016139a2565b5b509250929050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613a1a565b613a618683613a1a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613a9e613a99613a9484612a6e565b613a79565b612a6e565b9050919050565b6000819050919050565b613ab883613a83565b613acc613ac482613aa5565b848454613a27565b825550505050565b600090565b613ae1613ad4565b613aec818484613aaf565b505050565b5b81811015613b1057613b05600082613ad9565b600181019050613af2565b5050565b601f821115613b5557613b2681613752565b613b2f84613a0a565b81016020851015613b3e578190505b613b52613b4a85613a0a565b830182613af1565b50505b505050565b600082821c905092915050565b6000613b7860001984600802613b5a565b1980831691505092915050565b6000613b918383613b67565b9150826002028217905092915050565b613baa82612bf6565b67ffffffffffffffff811115613bc357613bc2612cad565b5b613bcd8254613716565b613bd8828285613b14565b600060209050601f831160018114613c0b5760008415613bf9578287015190505b613c038582613b85565b865550613c6b565b601f198416613c1986613752565b60005b82811015613c4157848901518255600182019150602085019450602081019050613c1c565b86831015613c5e5784890151613c5a601f891682613b67565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000613cac613ca7613ca284613c73565b613a79565b613c7d565b9050919050565b613cbc81613c91565b82525050565b6000602082019050613cd76000830184613cb3565b92915050565b613ce681613225565b8114613cf157600080fd5b50565b600081519050613d0381613cdd565b92915050565b600060208284031215613d1f57613d1e612a06565b5b6000613d2d84828501613cf4565b91505092915050565b600080fd5b600080fd5b60008085851115613d5457613d53613d36565b5b83861115613d6557613d64613d3b565b5b6001850283019150848603905094509492505050565b600082905092915050565b6000613d928383613d7b565b82613d9d8135612b0e565b92506004821015613ddd57613dd87fffffffff0000000000000000000000000000000000000000000000000000000083600403600802613a1a565b831692505b505092915050565b600082825260208201905092915050565b6000613e028385613de5565b9350613e0f838584612e26565b613e1883612c3c565b840190509392505050565b6000604082019050613e38600083018661358a565b8181036020830152613e4b818486613df6565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e8f82612a6e565b9150613e9a83612a6e565b9250828201905080821115613eb257613eb1613e55565b5b92915050565b6000606082019050613ecd600083018661358a565b613eda602083018561358a565b613ee760408301846134f4565b949350505050565b600081519050919050565b600081905092915050565b6000613f1082613eef565b613f1a8185613efa565b9350613f2a818560208601612c12565b80840191505092915050565b6000613f428284613f05565b915081905092915050565b600081519050613f5c8161351e565b92915050565b600081519050613f7181613343565b92915050565b60008060408385031215613f8e57613f8d612a06565b5b6000613f9c85828601613f4d565b9250506020613fad85828601613f62565b9150509250929050565b600060208284031215613fcd57613fcc612a06565b5b6000613fdb84828501613f4d565b91505092915050565b6000608082019050613ff9600083018761358a565b6140066020830186612ae4565b6140136040830185612ae4565b6140206060830184612ae4565b95945050505050565b60006040820190508181036000830152614043818561310f565b90508181036020830152614057818461310f565b90509392505050565b600061406b82613eef565b6140758185613de5565b9350614085818560208601612c12565b61408e81612c3c565b840191505092915050565b600060a0820190506140ae600083018861358a565b6140bb602083018761358a565b6140c86040830186612ae4565b6140d56060830185612ae4565b81810360808301526140e78184614060565b90509695505050505050565b60008151905061410281612b3a565b92915050565b60006020828403121561411e5761411d612a06565b5b600061412c848285016140f3565b91505092915050565b600060a08201905061414a600083018861358a565b614157602083018761358a565b8181036040830152614169818661310f565b9050818103606083015261417d818561310f565b905081810360808301526141918184614060565b9050969550505050505056fea2646970667358221220965c32c5a89024e848319125d5fde5e58b59e0e0c63e0b4e7e3bf4c1356edb5a64736f6c63430008180033